Home | History | Annotate | Download | only in Intersection
      1 <html>
      2 <head>
      3 <div style="height:0">
      4 
      5 <div id="cubicOp36u">
      6   SimplifyNew_Test [cubicOp36u]
      7 {{0,1}, {1,6}, {2,0}, {5,1}},
      8 {{5,1}, {0,1}},
      9 op union
     10 {{0,2}, {1,5}, {1,0}, {6,1}},
     11 {{6,1}, {0,2}},
     12 debugShowCubicIntersection no self intersect {{0,2}, {1,5}, {1,0}, {6,1}}
     13 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {1,5}, {1,0}, {6,1}} {{0,2}} wtTs[1]=0.633333333 {{2.2208888888888882,1.6298518518518521}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {0,2}} wnTs[1]=0.629851852 wnTs[2]=0
     14 debugShowCubicIntersection wtTs[0]=0.281761651 {{0,2}, {1,5}, {1,0}, {6,1}} {{0.74132978521392334,2.9436691246202122}} wtTs[1]=0.83051493 {{3.8593908381032738,0.94043932231067462}} wtTs[2]=0.830515061 {{3.8593922073023155,0.94043907360367252}} wtTs[3]=0.867315861 {{4.2597986321159249,0.88613622701319239}} wtTs[4]=0.867316009 {{4.2598003089230945,0.88613607359480184}} wnTs[0]=0.23811 {{0,1}, {1,6}, {2,0}, {5,1}} wnTs[1]=0.860977989 wnTs[2]=0.860978176 wnTs[3]=0.912837717 wnTs[4]=0.912837923
     15 debugShowCubicLineIntersection wtTs[0]=0.803214143 {{0,2}, {1,5}, {1,0}, {6,1}} {{3.5833594368204942,1}} wnTs[0]=0.283328 {{5,1}, {0,1}}
     16 debugShowCubicLineIntersection wtTs[0]=0.0764226429 {{0,1}, {1,6}, {2,0}, {5,1}} {{0.23016060940409022,1.9616398984326517}} wtTs[1]=0.691654855 {{2.7367211708698314,1.543879804855028}} wnTs[0]=0.96164 {{6,1}, {0,2}} wnTs[1]=0.543879805
     17 debugShowLineIntersection no intersect {{6,1}, {0,2}} {{5,1}, {0,1}}
     18 debugShowCubicIntersection no self intersect {{0,1}, {1,6}, {2,0}, {5,1}}
     19 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,6}, {2,0}, {5,1}} {{0,1}} wtTs[1]=0.833333333 {{3.6574074074074132,0.99999999999999789}} wtTs[2]=1 {{5,1}} wnTs[0]=1 {{5,1}, {0,1}} wnTs[1]=0.268518519 wnTs[2]=0
     20 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0 (0,2) tEnd=0.281761651 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
     21 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.281761651 (0.741329789,2.94366908) tEnd=0.633333333 other=1 otherT=0.238109917 otherIndex=2 windSum=? windValue=1 oppValue=0
     22 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.633333333 (2.22088885,1.62985182) tEnd=0.803214143 other=4 otherT=0.629851852 otherIndex=2 windSum=? windValue=1 oppValue=0
     23 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.803214143 (3.58335948,1) tEnd=0.83051493 other=2 otherT=0.283328113 otherIndex=2 windSum=? windValue=1 oppValue=0
     24 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.83051493 (3.85939074,0.940439343) tEnd=0.830515061 other=1 otherT=0.860977989 otherIndex=5 windSum=? windValue=1 oppValue=0
     25 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.830515061 (3.85939217,0.940439045) tEnd=0.867315861 other=1 otherT=0.860978176 otherIndex=6 windSum=? windValue=1 oppValue=0
     26 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.867315861 (4.25979853,0.886136234) tEnd=0.867316009 other=1 otherT=0.912837717 otherIndex=7 windSum=? windValue=1 oppValue=0
     27 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.867316009 (4.25980043,0.886136055) tEnd=1 other=1 otherT=0.912837923 otherIndex=8 windSum=? windValue=1 oppValue=0
     28 debugShowActiveSpans id=4 (6,1 0,2) t=0 (6,1) tEnd=0.543879805 other=3 otherT=1 otherIndex=8 windSum=? windValue=1 oppValue=0
     29 debugShowActiveSpans id=4 (6,1 0,2) t=0.543879805 (2.73672128,1.54387975) tEnd=0.629851852 other=1 otherT=0.691654855 otherIndex=3 windSum=? windValue=1 oppValue=0
     30 debugShowActiveSpans id=4 (6,1 0,2) t=0.629851852 (2.22088885,1.62985182) tEnd=0.961639898 other=3 otherT=0.633333333 otherIndex=2 windSum=? windValue=1 oppValue=0
     31 debugShowActiveSpans id=4 (6,1 0,2) t=0.961639898 (0.230160609,1.96163988) tEnd=1 other=1 otherT=0.0764226429 otherIndex=1 windSum=? windValue=1 oppValue=0
     32 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0 (0,1) tEnd=0.0764226429 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
     33 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.0764226429 (0.230160609,1.96163988) tEnd=0.238109917 other=4 otherT=0.961639898 otherIndex=3 windSum=? windValue=1 oppValue=0
     34 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.238109917 (0.741329789,2.94366908) tEnd=0.691654855 other=3 otherT=0.281761651 otherIndex=1 windSum=? windValue=1 oppValue=0
     35 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.691654855 (2.73672128,1.54387975) tEnd=0.833333333 other=4 otherT=0.543879805 otherIndex=1 windSum=? windValue=1 oppValue=0
     36 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.833333333 (3.65740752,1) tEnd=0.860977989 other=2 otherT=0.268518519 otherIndex=1 windSum=? windValue=1 oppValue=0
     37 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.860977989 (3.85939074,0.940439343) tEnd=0.860978176 other=3 otherT=0.83051493 otherIndex=4 windSum=? windValue=1 oppValue=0
     38 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.860978176 (3.85939217,0.940439045) tEnd=0.912837717 other=3 otherT=0.830515061 otherIndex=5 windSum=? windValue=1 oppValue=0
     39 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837717 (4.25979853,0.886136234) tEnd=0.912837923 other=3 otherT=0.867315861 otherIndex=6 windSum=? windValue=1 oppValue=0
     40 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837923 (4.25980043,0.886136055) tEnd=1 other=3 otherT=0.867316009 otherIndex=7 windSum=? windValue=1 oppValue=0
     41 debugShowActiveSpans id=2 (5,1 0,1) t=0 (5,1) tEnd=0.268518519 other=1 otherT=1 otherIndex=9 windSum=? windValue=1 oppValue=0
     42 debugShowActiveSpans id=2 (5,1 0,1) t=0.268518519 (3.65740752,1) tEnd=0.283328113 other=1 otherT=0.833333333 otherIndex=4 windSum=? windValue=1 oppValue=0
     43 debugShowActiveSpans id=2 (5,1 0,1) t=0.283328113 (3.58335948,1) tEnd=1 other=3 otherT=0.803214143 otherIndex=3 windSum=? windValue=1 oppValue=0
     44 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
     45 debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=1 tEnd=0.867316009 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
     46 debugShowSort [1] {{6,1}, {0,2}} tStart=0 tEnd=0.543879805 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
     47 findTop xyE=(6,1) xyS=(4.25980043,0.886136055)
     48 findTop dxyE=(15,3) dxyS=(11.3363714,-1.03721189) cross=-49.5672913 bumpsUp=true
     49 markWinding id=3 (0,2 1,5 1,0 6,1) t=0.867316009 [7] (4.25980043,0.886136055) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
     50 markWinding id=4 (6,1 0,2) t=0 [0] (6,1) tEnd=0.543879805 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
     51 markWinding id=3 (0,2 1,5 1,0 6,1) t=0.867316009 [7] (4.25980043,0.886136055) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
     52 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
     53 findNextOp simple
     54 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.867316009 [7] (4.25980043,0.886136055) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
     55 bridgeOp current id=3 from=(4.25980043,0.886136055) to=(6,1)
     56 path.moveTo(4.25980043,0.886136055);
     57 path.cubicTo(4.76118517,0.840262294, 5.33658028,0.867316008, 6,1);
     58 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
     59 debugShowSort [0] {{6,1}, {0,2}} tStart=0.543879805 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
     60 debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.691654855 tEnd=0.833333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
     61 debugShowSort [2] {{6,1}, {0,2}} tStart=0.543879805 tEnd=0.629851852 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
     62 debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.691654855 tEnd=0.238109917 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
     63 findNextOp firstIndex=[0] sign=1
     64 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
     65 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.691654855 [3] (2.73672128,1.54387975) tEnd=0.833333333 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
     66 findNextOp chase.append id=1
     67 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
     68 markDoneBinary id=4 (6,1 0,2) t=0.543879805 [1] (2.73672128,1.54387975) tEnd=0.629851852 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
     69 findNextOp chase.append id=4
     70 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
     71 markWinding id=1 (0,1 1,6 2,0 5,1) t=0.238109917 [2] (0.741329789,2.94366908) tEnd=0.691654855 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
     72 findNextOp chase.append id=1
     73 markDoneBinary id=4 (6,1 0,2) t=0 [0] (6,1) tEnd=0.543879805 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
     74 findNextOp from:[4] to:[1] start=3 end=2
     75 bridgeOp current id=4 from=(6,1) to=(2.73672128,1.54387975)
     76 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
     77 debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.238109917 tEnd=0.691654855 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
     78 debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.281761651 tEnd=0.633333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
     79 debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.238109917 tEnd=0.0764226429 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
     80 debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.281761651 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
     81 findNextOp firstIndex=[3] sign=-1
     82 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
     83 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.281761651 [1] (0.741329789,2.94366908) tEnd=0.633333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
     84 findNextOp chase.append id=3
     85 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
     86 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.0764226429 [1] (0.230160609,1.96163988) tEnd=0.238109917 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
     87 findNextOp chase.append id=1
     88 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
     89 markWinding id=3 (0,2 1,5 1,0 6,1) t=0 [0] (0,2) tEnd=0.281761651 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
     90 markWinding id=4 (6,1 0,2) t=0.961639898 [3] (0.230160609,1.96163988) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
     91 findNextOp chase.append id=4
     92 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.238109917 [2] (0.741329789,2.94366908) tEnd=0.691654855 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
     93 findNextOp from:[1] to:[3] start=1 end=0
     94 bridgeOp current id=1 from=(2.73672128,1.54387975) to=(0.741329789,2.94366908)
     95 path.lineTo(2.73672128,1.54387975);
     96 path.cubicTo(1.84923673,2.27202392, 1.2463032,3.29839373, 0.741329789,2.94366908);
     97 findNextOp simple
     98 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0 [0] (0,2) tEnd=0.281761651 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
     99 bridgeOp current id=3 from=(0.741329789,2.94366908) to=(0,2)
    100 path.cubicTo(0.484133661,3.05545282, 0.281761646,2.84528494, 0,2);
    101 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    102 debugShowSort [2] {{6,1}, {0,2}} tStart=0.961639898 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    103 debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.0764226429 tEnd=0.238109917 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
    104 debugShowSort [0] {{6,1}, {0,2}} tStart=0.961639898 tEnd=0.629851852 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    105 debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.0764226429 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
    106 findNextOp firstIndex=[2] sign=-1
    107 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    108 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
    109 markDoneBinary id=4 (6,1 0,2) t=0.629851852 [2] (2.22088885,1.62985182) tEnd=0.961639898 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
    110 findNextOp chase.append id=4
    111 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    112 markWinding id=1 (0,1 1,6 2,0 5,1) t=0 [0] (0,1) tEnd=0.0764226429 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    113 markWinding id=2 (5,1 0,1) t=0.283328113 [2] (3.58335948,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    114 findNextOp chase.append id=2
    115 markDoneBinary id=4 (6,1 0,2) t=0.961639898 [3] (0.230160609,1.96163988) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    116 findNextOp from:[4] to:[1] start=1 end=0
    117 bridgeOp current id=4 from=(0,2) to=(0.230160609,1.96163988)
    118 findNextOp simple
    119 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0 [0] (0,1) tEnd=0.0764226429 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    120 bridgeOp current id=1 from=(0.230160609,1.96163988) to=(0,1)
    121 path.lineTo(0.230160609,1.96163988);
    122 path.cubicTo(0.152845293,1.69998181, 0.0764226392,1.38211322, 0,1);
    123 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    124 debugShowSort [1] {{5,1}, {0,1}} tStart=0.283328113 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    125 debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.803214143 tEnd=0.633333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
    126 debugShowSort [3] {{5,1}, {0,1}} tStart=0.283328113 tEnd=0.268518519 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    127 debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.803214143 tEnd=0.83051493 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    128 findNextOp firstIndex=[1] sign=-1
    129 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
    130 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.633333333 [2] (2.22088885,1.62985182) tEnd=0.803214143 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    131 findNextOp chase.append id=3
    132 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    133 markDoneBinary id=2 (5,1 0,1) t=0.268518519 [1] (3.65740752,1) tEnd=0.283328113 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
    134 findNextOp chase.append id=2
    135 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
    136 markWinding id=3 (0,2 1,5 1,0 6,1) t=0.803214143 [3] (3.58335948,1) tEnd=0.83051493 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    137 findNextOp chase.append id=3
    138 markDoneBinary id=2 (5,1 0,1) t=0.283328113 [2] (3.58335948,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    139 findNextOp from:[2] to:[3] start=3 end=4
    140 bridgeOp current id=2 from=(0,1) to=(3.58335948,1)
    141 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    142 debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.83051493 tEnd=0.803214143 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    143 debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860977989 tEnd=0.833333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
    144 debugShowSort [2] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860977989 tEnd=0.860978176 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    145 debugShowSort [3] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.83051493 tEnd=0.830515061 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    146 findNextOp firstIndex=[0] sign=1
    147 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    148 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.833333333 [4] (3.65740752,1) tEnd=0.860977989 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    149 findNextOp chase.append id=1
    150 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    151 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.860977989 [5] (3.85939074,0.940439343) tEnd=0.860978176 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    152 findNextOp chase.append id=1
    153 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
    154 markWinding id=3 (0,2 1,5 1,0 6,1) t=0.83051493 [4] (3.85939074,0.940439343) tEnd=0.830515061 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    155 findNextOp chase.append id=3
    156 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.803214143 [3] (3.58335948,1) tEnd=0.83051493 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    157 findNextOp from:[3] to:[3] start=4 end=5
    158 bridgeOp current id=3 from=(3.58335948,1) to=(3.85939074,0.940439343)
    159 path.lineTo(3.58335948,1);
    160 path.cubicTo(3.67248249,0.97763288, 3.76445246,0.957684338, 3.85939074,0.940439343);
    161 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    162 debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.83051493 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    163 debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.860977989 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    164 debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.867315861 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    165 debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.912837717 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    166 findNextOp firstIndex=[2] sign=1
    167 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    168 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
    169 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.830515061 [5] (3.85939217,0.940439045) tEnd=0.867315861 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    170 findNextOp chase.append id=3
    171 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    172 markWinding id=1 (0,1 1,6 2,0 5,1) t=0.860978176 [6] (3.85939217,0.940439045) tEnd=0.912837717 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    173 findNextOp chase.append id=1
    174 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.83051493 [4] (3.85939074,0.940439343) tEnd=0.830515061 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    175 findNextOp from:[3] to:[1] start=6 end=7
    176 bridgeOp current id=3 from=(3.85939074,0.940439343) to=(3.85939217,0.940439045)
    177 path.cubicTo(3.85939145,0.940439224, 3.85939169,0.940439165, 3.85939217,0.940439045);
    178 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    179 debugShowSort [0] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.860978176 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    180 debugShowSort [1] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.830515061 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    181 debugShowSort [2] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.912837923 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    182 debugShowSort [3] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.867316009 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    183 findNextOp firstIndex=[0] sign=1
    184 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
    185 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    186 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.912837717 [7] (4.25979853,0.886136234) tEnd=0.912837923 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    187 findNextOp chase.append id=1
    188 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
    189 markWinding id=3 (0,2 1,5 1,0 6,1) t=0.867315861 [6] (4.25979853,0.886136234) tEnd=0.867316009 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    190 findNextOp chase.append id=3
    191 markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.860978176 [6] (3.85939217,0.940439045) tEnd=0.912837717 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    192 findNextOp from:[1] to:[3] start=6 end=7
    193 bridgeOp current id=1 from=(3.85939217,0.940439045) to=(4.25979853,0.886136234)
    194 path.cubicTo(3.98813701,0.909405351, 4.12151289,0.890467525, 4.25980043,0.886136055);
    195 path.close();
    196 debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.867315861 (4.25979853,0.886136234) tEnd=0.867316009 other=1 otherT=0.912837717 otherIndex=7 windSum=-1 windValue=1 oppValue=0
    197 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837923 (4.25980043,0.886136055) tEnd=1 other=3 otherT=0.867316009 otherIndex=7 windSum=? windValue=1 oppValue=0
    198 debugShowActiveSpans id=2 (5,1 0,1) t=0 (5,1) tEnd=0.268518519 other=1 otherT=1 otherIndex=9 windSum=? windValue=1 oppValue=0
    199 activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
    200 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    201 debugShowSort [3] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.867316009 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
    202 debugShowSort [0] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.860978176 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    203 debugShowSort [1] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.830515061 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    204 debugShowSort [2] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.912837923 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
    205 findNextOp firstIndex=[3] sign=-1
    206 activeOp op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    207 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
    208 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    209 markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.867315861 [6] (4.25979853,0.886136234) tEnd=0.867316009 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    210 findNextOp from:[3] to:[1] start=7 end=6
    211 bridgeOp current id=3 from=(4.25980043,0.886136055) to=(4.25979853,0.886136234)
    212 path.moveTo(4.25980043,0.886136055);
    213 path.cubicTo(4.25979948,0.886136115, 4.25979948,0.886136174, 4.25979853,0.886136234);
    214 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    215 debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.912837717 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    216 debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.83051493 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    217 debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.860977989 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    218 debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.867315861 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
    219 findNextOp firstIndex=[1] sign=-1
    220 activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
    221 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    222 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
    223 findNextOp from:[1] to:[3] start=5 end=4
    224 bridgeOp current id=1 from=(4.25979853,0.886136234) to=(3.85939217,0.940439045)
    225 path.cubicTo(4.12151289,0.890467525, 3.98813701,0.909405351, 3.85939217,0.940439045);
    226 debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837923 (4.25980043,0.886136055) tEnd=1 other=3 otherT=0.867316009 otherIndex=7 windSum=? windValue=1 oppValue=0
    227 debugShowActiveSpans id=2 (5,1 0,1) t=0 (5,1) tEnd=0.268518519 other=1 otherT=1 otherIndex=9 windSum=? windValue=1 oppValue=0
    228 </div>
    229 
    230 <div id="cubicOp35da">
    231 {{x = 0.44618727783085621, y = 2.2840286415243063}, {x = 0.51170845243761109, y = 2.4044088819954914}, {x = 0.57783675570457882, y = 2.4985733182515446}, {x = 0.64483584772311509, y = 2.5694222112973661}}
    232 {{x = 0.64244110111854291, y = 2.5673840215265367}, {x = 0.63479413812245555, y = 2.5620057200094775}, {x = 0.64115438240274059, y = 2.533597555954064}, {x = 0.6620248993310307, y = 2.4876932484482714}}
    233 </div>
    234 
    235 <div id="cubicOp38d">
    236   SimplifyNew_Test [cubicOp38d]
    237 {{0,1}, {0,6}, {3,2}, {4,1}},
    238 {{4,1}, {0,1}},
    239 op difference
    240 {{2,3}, {1,4}, {1,0}, {6,0}},
    241 {{6,0}, {2,3}},
    242 debugShowCubicIntersection no self intersect {{2,3}, {1,4}, {1,0}, {6,0}}
    243 debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {1,4}, {1,0}, {6,0}} {{2,3}} wtTs[1]=1 {{6,0}} wnTs[0]=1 {{6,0}, {2,3}} wnTs[1]=0
    244 debugShowCubicIntersection no intersect {{2,3}, {1,4}, {1,0}, {6,0}} {{0,1}, {0,6}, {3,2}, {4,1}}
    245 debugShowCubicLineIntersection wtTs[0]=0.666666667 {{2,3}, {1,4}, {1,0}, {6,0}} {{2.518518518518519,0.99999999999999967}} wnTs[0]=0.37037 {{4,1}, {0,1}}
    246 debugShowCubicLineIntersection no intersect {{0,1}, {0,6}, {3,2}, {4,1}} {{6,0}, {2,3}}
    247 debugShowLineIntersection no intersect {{6,0}, {2,3}} {{4,1}, {0,1}}
    248 debugShowCubicIntersection no self intersect {{0,1}, {0,6}, {3,2}, {4,1}}
    249 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {0,6}, {3,2}, {4,1}} {{0,1}} wtTs[1]=1 {{4,1}} wnTs[0]=1 {{4,1}, {0,1}} wnTs[1]=0
    250 debugShowActiveSpans id=3 (2,3 1,4 1,0 6,0) t=0 (2,3) tEnd=0.666666667 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
    251 debugShowActiveSpans id=3 (2,3 1,4 1,0 6,0) t=0.666666667 (2.51851845,1) tEnd=1 other=2 otherT=0.37037037 otherIndex=1 windSum=? windValue=1 oppValue=0
    252 debugShowActiveSpans id=4 (6,0 2,3) t=0 (6,0) tEnd=1 other=3 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
    253 debugShowActiveSpans id=1 (0,1 0,6 3,2 4,1) t=0 (0,1) tEnd=1 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
    254 debugShowActiveSpans id=2 (4,1 0,1) t=0 (4,1) tEnd=0.37037037 other=1 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
    255 debugShowActiveSpans id=2 (4,1 0,1) t=0.37037037 (2.51851845,1) tEnd=1 other=3 otherT=0.666666667 otherIndex=1 windSum=? windValue=1 oppValue=0
    256 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    257 debugShowSort [0] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    258 debugShowSort [1] {{6,0}, {2,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    259 findTop xyE=(6,0) xyS=(2.51851845,1)
    260 findTop dxyE=(15,0) dxyS=(6.33333349,-5) cross=-75 bumpsUp=false
    261 markWinding id=3 (2,3 1,4 1,0 6,0) t=0.666666667 [1] (2.51851845,1) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    262 markWinding id=4 (6,0 2,3) t=0 [0] (6,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    263 markWinding id=3 (2,3 1,4 1,0 6,0) t=0 [0] (2,3) tEnd=0.666666667 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    264 markWinding id=3 (2,3 1,4 1,0 6,0) t=0.666666667 [1] (2.51851845,1) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    265 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    266 markDoneBinary id=3 (2,3 1,4 1,0 6,0) t=0.666666667 [1] (2.51851845,1) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    267 markDoneBinary id=4 (6,0 2,3) t=0 [0] (6,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    268 markDoneBinary id=3 (2,3 1,4 1,0 6,0) t=0 [0] (2,3) tEnd=0.666666667 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    269 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    270 debugShowSort [0] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    271 debugShowSort [1] {{4,1}, {0,1}} tStart=0.37037037 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    272 debugShowSort [2] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    273 debugShowSort [3] {{4,1}, {0,1}} tStart=0.37037037 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
    274 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    275 debugShowSort [0] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    276 debugShowSort [1] {{4,1}, {0,1}} tStart=0.37037037 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    277 debugShowSort [2] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    278 debugShowSort [3] {{4,1}, {0,1}} tStart=0.37037037 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
    279 markWinding id=2 (4,1 0,1) t=0.37037037 [1] (2.51851845,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    280 markWinding id=1 (0,1 0,6 3,2 4,1) t=0 [0] (0,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    281 markWinding id=2 (4,1 0,1) t=0 [0] (4,1) tEnd=0.37037037 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    282 markWinding id=2 (4,1 0,1) t=0 [0] (4,1) tEnd=0.37037037 newWindSum=1 newOppSum=-1 oppSum=0 windSum=1 windValue=1
    283 </div>
    284 
    285 <div id="cubicOp38da">
    286   {{0,1}, {0,6}, {3,2}, {4,1}},
    287   {{2,3}, {1,4}, {1,0}, {6,0}},
    288 computed quadratics set 2
    289   {{2,3}, {1.46296296,3.41666667}, {1.48148148,2.66666667}},
    290   {{1.48148148,2.66666667}, {1.5,1.91666667}, {2.51851852,1}},
    291   {{2.51851852,1}, {3.53703704,0.0833333333}, {6,0}},
    292 computed quadratics set 1
    293   {{0,1}, {0.0311951689,3.11686153}, {0.643808143,3.37716704}},
    294   {{0.643808143,3.37716704}, {1.25642112,3.63747255}, {2.07610987,2.9396429}},
    295   {{2.07610987,2.9396429}, {2.89579862,2.24181325}, {3.54822112,1.48426931}},
    296   {{3.54822112,1.48426931}, {3.81269436,1.19058669}, {4,1}},
    297 </div>
    298 
    299 <div id="cubicOp39d">
    300   SimplifyNew_Test [cubicOp39d]
    301 {{0,1}, {2,3}, {5,1}, {4,3}},
    302 {{4,3}, {0,1}},
    303 op difference
    304 {{1,5}, {3,4}, {1,0}, {3,2}},
    305 {{3,2}, {1,5}},
    306 debugShowCubicIntersection no self intersect {{0,1}, {2,3}, {5,1}, {4,3}}
    307 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {2,3}, {5,1}, {4,3}} {{0,1}} wtTs[1]=0.285714286 {{1.8425655976676385,1.9212827988338192}} wtTs[2]=1 {{4,3}} wnTs[0]=1 {{4,3}, {0,1}} wnTs[1]=0.539358601 wnTs[2]=0
    308 debugShowCubicIntersection wtTs[0]=0.311007457 {{0,1}, {2,3}, {5,1}, {4,3}} {{2.005809685956442,1.9459962410665144}} wnTs[0]=0.589885 {{1,5}, {3,4}, {1,0}, {3,2}}
    309 debugShowCubicLineIntersection no intersect {{0,1}, {2,3}, {5,1}, {4,3}} {{3,2}, {1,5}}
    310 debugShowCubicLineIntersection wtTs[0]=0.576935809 {{1,5}, {3,4}, {1,0}, {3,2}} {{2.0036431374219883,2.0018215687109939}} wnTs[0]=0.499089 {{4,3}, {0,1}}
    311 debugShowLineIntersection wtTs[0]=0.3125 {{4,3}, {0,1}} {{2.75,2.375}} wnTs[0]=0.125 {{3,2}, {1,5}}
    312 debugShowCubicIntersection no self intersect {{1,5}, {3,4}, {1,0}, {3,2}}
    313 debugShowCubicLineIntersection wtTs[0]=0 {{1,5}, {3,4}, {1,0}, {3,2}} {{1,5}} wtTs[1]=0.285714286 {{1.9212827988338184,3.6180758017492725}} wtTs[2]=1 {{3,2}} wnTs[0]=1 {{3,2}, {1,5}} wnTs[1]=0.539358601 wnTs[2]=0
    314 debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0 (0,1) tEnd=0.285714286 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    315 debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.285714286 (1.84256566,1.92128277) tEnd=0.311007457 other=2 otherT=0.539358601 otherIndex=3 windSum=? windValue=1 oppValue=0
    316 debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.311007457 (2.00580978,1.94599628) tEnd=1 other=3 otherT=0.589885081 otherIndex=3 windSum=? windValue=1 oppValue=0
    317 debugShowActiveSpans id=2 (4,3 0,1) t=0 (4,3) tEnd=0.3125 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    318 debugShowActiveSpans id=2 (4,3 0,1) t=0.3125 (2.75,2.375) tEnd=0.499089216 other=4 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
    319 debugShowActiveSpans id=2 (4,3 0,1) t=0.499089216 (2.00364304,2.00182152) tEnd=0.539358601 other=3 otherT=0.576935809 otherIndex=2 windSum=? windValue=1 oppValue=0
    320 debugShowActiveSpans id=2 (4,3 0,1) t=0.539358601 (1.84256566,1.92128277) tEnd=1 other=1 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
    321 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0 (1,5) tEnd=0.285714286 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    322 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.285714286 (1.92128277,3.61807585) tEnd=0.576935809 other=4 otherT=0.539358601 otherIndex=2 windSum=? windValue=1 oppValue=0
    323 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.576935809 (2.00364304,2.00182152) tEnd=0.589885081 other=2 otherT=0.499089216 otherIndex=2 windSum=? windValue=1 oppValue=0
    324 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.589885081 (2.00580978,1.94599628) tEnd=1 other=1 otherT=0.311007457 otherIndex=2 windSum=? windValue=1 oppValue=0
    325 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    326 debugShowActiveSpans id=4 (3,2 1,5) t=0.125 (2.75,2.375) tEnd=0.539358601 other=2 otherT=0.3125 otherIndex=1 windSum=? windValue=1 oppValue=0
    327 debugShowActiveSpans id=4 (3,2 1,5) t=0.539358601 (1.92128277,3.61807585) tEnd=1 other=3 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
    328 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    329 debugShowSort [0] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0 tEnd=0.285714286 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    330 debugShowSort [1] {{4,3}, {0,1}} tStart=1 tEnd=0.539358601 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    331 findTop xyE=(0,1) xyS=(1.84256566,1.92128277)
    332 findTop dxyE=(6,6) dxyS=(6.48979568,1.10204077) cross=-32.3265305 bumpsUp=false
    333 markWinding id=1 (0,1 2,3 5,1 4,3) t=0 [0] (0,1) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    334 markWinding id=2 (4,3 0,1) t=0.539358601 [3] (1.84256566,1.92128277) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    335 markWinding id=1 (0,1 2,3 5,1 4,3) t=0 [0] (0,1) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    336 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    337 findNextOp simple
    338 markDoneBinary id=1 (0,1 2,3 5,1 4,3) t=0 [0] (0,1) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    339 bridgeOp current id=1 from=(1.84256566,1.92128277) to=(0,1)
    340 path.moveTo(1.84256566,1.92128277);
    341 path.cubicTo(1.22448969,1.8163265, 0.571428597,1.57142854, 0,1);
    342 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    343 debugShowSort [0] {{4,3}, {0,1}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    344 debugShowSort [1] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
    345 debugShowSort [2] {{4,3}, {0,1}} tStart=0.539358601 tEnd=0.499089216 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    346 debugShowSort [3] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0.311007457 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    347 findNextOp firstIndex=[0] sign=-1
    348 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    349 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    350 markWinding id=2 (4,3 0,1) t=0.499089216 [2] (2.00364304,2.00182152) tEnd=0.539358601 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    351 findNextOp chase.append id=2
    352 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    353 markWinding id=1 (0,1 2,3 5,1 4,3) t=0.285714286 [1] (1.84256566,1.92128277) tEnd=0.311007457 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    354 findNextOp chase.append id=1
    355 markDoneBinary id=2 (4,3 0,1) t=0.539358601 [3] (1.84256566,1.92128277) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    356 findNextOp from:[2] to:[1] start=1 end=2
    357 bridgeOp current id=2 from=(0,1) to=(1.84256566,1.92128277)
    358 path.lineTo(1.84256566,1.92128277);
    359 path.close();
    360 debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.285714286 (1.84256566,1.92128277) tEnd=0.311007457 other=2 otherT=0.539358601 otherIndex=3 windSum=-1 windValue=1 oppValue=0
    361 debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.311007457 (2.00580978,1.94599628) tEnd=1 other=3 otherT=0.589885081 otherIndex=3 windSum=? windValue=1 oppValue=0
    362 debugShowActiveSpans id=2 (4,3 0,1) t=0 (4,3) tEnd=0.3125 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    363 debugShowActiveSpans id=2 (4,3 0,1) t=0.3125 (2.75,2.375) tEnd=0.499089216 other=4 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
    364 debugShowActiveSpans id=2 (4,3 0,1) t=0.499089216 (2.00364304,2.00182152) tEnd=0.539358601 other=3 otherT=0.576935809 otherIndex=2 windSum=-1 windValue=1 oppValue=0
    365 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0 (1,5) tEnd=0.285714286 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    366 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.285714286 (1.92128277,3.61807585) tEnd=0.576935809 other=4 otherT=0.539358601 otherIndex=2 windSum=? windValue=1 oppValue=0
    367 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.576935809 (2.00364304,2.00182152) tEnd=0.589885081 other=2 otherT=0.499089216 otherIndex=2 windSum=? windValue=1 oppValue=0
    368 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.589885081 (2.00580978,1.94599628) tEnd=1 other=1 otherT=0.311007457 otherIndex=2 windSum=? windValue=1 oppValue=0
    369 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    370 debugShowActiveSpans id=4 (3,2 1,5) t=0.125 (2.75,2.375) tEnd=0.539358601 other=2 otherT=0.3125 otherIndex=1 windSum=? windValue=1 oppValue=0
    371 debugShowActiveSpans id=4 (3,2 1,5) t=0.539358601 (1.92128277,3.61807585) tEnd=1 other=3 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
    372 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    373 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    374 debugShowSort [3] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0.311007457 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
    375 debugShowSort [0] {{4,3}, {0,1}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
    376 debugShowSort [1] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
    377 debugShowSort [2] {{4,3}, {0,1}} tStart=0.539358601 tEnd=0.499089216 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    378 findNextOp firstIndex=[3] sign=-1
    379 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    380 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    381 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    382 markDoneBinary id=1 (0,1 2,3 5,1 4,3) t=0.285714286 [1] (1.84256566,1.92128277) tEnd=0.311007457 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    383 findNextOp from:[1] to:[2] start=3 end=2
    384 bridgeOp current id=1 from=(2.00580978,1.94599628) to=(1.84256566,1.92128277)
    385 path.moveTo(2.00580978,1.94599628);
    386 path.cubicTo(1.9517231,1.93876874, 1.89728141,1.93057418, 1.84256566,1.92128277);
    387 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    388 debugShowSort [1] {{4,3}, {0,1}} tStart=0.499089216 tEnd=0.539358601 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
    389 debugShowSort [2] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.576935809 tEnd=0.285714286 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
    390 debugShowSort [3] {{4,3}, {0,1}} tStart=0.499089216 tEnd=0.3125 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    391 debugShowSort [0] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.576935809 tEnd=0.589885081 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    392 findNextOp firstIndex=[1] sign=-1
    393 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
    394 markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0.285714286 [1] (1.92128277,3.61807585) tEnd=0.576935809 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    395 findNextOp chase.append id=3
    396 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    397 markDoneBinary id=2 (4,3 0,1) t=0.3125 [1] (2.75,2.375) tEnd=0.499089216 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    398 findNextOp chase.append id=2
    399 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    400 markWinding id=3 (1,5 3,4 1,0 3,2) t=0.576935809 [2] (2.00364304,2.00182152) tEnd=0.589885081 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    401 findNextOp chase.append id=3
    402 markDoneBinary id=2 (4,3 0,1) t=0.499089216 [2] (2.00364304,2.00182152) tEnd=0.539358601 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    403 findNextOp from:[2] to:[3] start=2 end=3
    404 bridgeOp current id=2 from=(1.84256566,1.92128277) to=(2.00364304,2.00182152)
    405 findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=1
    406 debugShowSort [2] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.589885081 tEnd=0.576935809 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    407 debugShowSort [3] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.311007457 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    408 debugShowSort [0] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.589885081 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    409 debugShowSort [1] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.311007457 tEnd=0.285714286 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    410 findNextOp firstIndex=[2] sign=1
    411 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    412 markDoneBinary id=1 (0,1 2,3 5,1 4,3) t=0.311007457 [2] (2.00580978,1.94599628) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    413 markDoneBinary id=2 (4,3 0,1) t=0 [0] (4,3) tEnd=0.3125 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
    414 findNextOp chase.append id=2
    415 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    416 markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0.589885081 [3] (2.00580978,1.94599628) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    417 markDoneBinary id=4 (3,2 1,5) t=0 [0] (3,2) tEnd=0.125 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    418 findNextOp chase.append id=4
    419 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    420 markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0.576935809 [2] (2.00364304,2.00182152) tEnd=0.589885081 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
    421 findNextOp from:[3] to:[1] start=2 end=1
    422 bridgeOp current id=3 from=(2.00364304,2.00182152) to=(2.00580978,1.94599628)
    423 path.lineTo(2.00364304,2.00182152);
    424 path.cubicTo(2.00425649,1.98283899, 2.0049727,1.96422386, 2.00580978,1.94599628);
    425 path.close();
    426 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    427 debugShowSort [0] {{3,2}, {1,5}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    428 debugShowSort [1] {{4,3}, {0,1}} tStart=0.3125 tEnd=0.499089216 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=1 tiny=0 opp=1
    429 debugShowSort [2] {{3,2}, {1,5}} tStart=0.125 tEnd=0.539358601 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    430 debugShowSort [3] {{4,3}, {0,1}} tStart=0.3125 tEnd=0 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=1
    431 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    432 debugShowSort [0] {{3,2}, {1,5}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    433 debugShowSort [1] {{4,3}, {0,1}} tStart=0.3125 tEnd=0.499089216 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=1 tiny=0 opp=1
    434 debugShowSort [2] {{3,2}, {1,5}} tStart=0.125 tEnd=0.539358601 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    435 debugShowSort [3] {{4,3}, {0,1}} tStart=0.3125 tEnd=0 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=1
    436 markWinding id=4 (3,2 1,5) t=0.125 [1] (2.75,2.375) tEnd=0.539358601 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    437 debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0 (1,5) tEnd=0.285714286 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    438 debugShowActiveSpans id=4 (3,2 1,5) t=0.125 (2.75,2.375) tEnd=0.539358601 other=2 otherT=0.3125 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    439 debugShowActiveSpans id=4 (3,2 1,5) t=0.539358601 (1.92128277,3.61807585) tEnd=1 other=3 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
    440 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    441 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
    442 debugShowSort [0] {{3,2}, {1,5}} tStart=0.539358601 tEnd=0.125 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    443 debugShowSort [1] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0.576935809 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    444 debugShowSort [2] {{3,2}, {1,5}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    445 debugShowSort [3] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    446 findNextOp firstIndex=[0] sign=1
    447 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    448 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    449 markWinding id=4 (3,2 1,5) t=0.539358601 [2] (1.92128277,3.61807585) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
    450 markWinding id=3 (1,5 3,4 1,0 3,2) t=0 [0] (1,5) tEnd=0.285714286 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
    451 findNextOp chase.append id=3
    452 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    453 markDoneBinary id=4 (3,2 1,5) t=0.125 [1] (2.75,2.375) tEnd=0.539358601 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    454 findNextOp from:[4] to:[3] start=1 end=0
    455 bridgeOp current id=4 from=(2.75,2.375) to=(1.92128277,3.61807585)
    456 findNextOp simple
    457 markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0 [0] (1,5) tEnd=0.285714286 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
    458 bridgeOp current id=3 from=(1.92128277,3.61807585) to=(1,5)
    459 path.moveTo(2.75,2.375);
    460 path.lineTo(1.92128277,3.61807585);
    461 path.cubicTo(1.8163265,4.18367338, 1.57142854,4.71428585, 1,5);
    462 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
    463 debugShowSort [2] {{3,2}, {1,5}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    464 debugShowSort [3] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
    465 debugShowSort [0] {{3,2}, {1,5}} tStart=0.539358601 tEnd=0.125 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    466 debugShowSort [1] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0.576935809 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    467 findNextOp firstIndex=[2] sign=-1
    468 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    469 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    470 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    471 markDoneBinary id=4 (3,2 1,5) t=0.539358601 [2] (1.92128277,3.61807585) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
    472 findNextOp from:[4] to:[3] start=1 end=2
    473 bridgeOp current id=4 from=(1,5) to=(1.92128277,3.61807585)
    474 </div>
    475 
    476 <div id="cubicOp39da">
    477 computed quadratics given
    478   {{2.512,1.571}, {2.64,1.66}, {2.8,1.8}, {3,2}},
    479   {{2.41818762,1.98497726}, {2.82699049,2.00933065}, {3.20046793,1.99420472}, {3.49861995,2.00359946}},
    480 computed quadratics set 1
    481   {{2.512,1.571}, {2.702,1.70225}, {3,2}},
    482 computed quadratics set 2
    483   {{2.41818762,1.98497726}, {2.79879886,2.00375569}, {3.125,2}},
    484   {{3.125,2}, {3.32670858,1.99910014}, {3.49861995,2.00359946}},
    485 </div>
    486 
    487 <div id="cubicOp40d">
    488   SimplifyNew_Test [cubicOp40d]
    489 {{0,1}, {1,5}, {3,2}, {4,2}},
    490 {{4,2}, {0,1}},
    491 op difference
    492 {{2,3}, {2,4}, {1,0}, {5,1}},
    493 {{5,1}, {2,3}},
    494 debugShowCubicIntersection no self intersect {{2,3}, {2,4}, {1,0}, {5,1}}
    495 debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {2,4}, {1,0}, {5,1}} {{2,3}} wtTs[1]=1 {{5,1}} wnTs[0]=1 {{5,1}, {2,3}} wnTs[1]=0
    496 debugShowCubicIntersection wtTs[0]=0 {{2,3}, {2,4}, {1,0}, {5,1}} {{2,3}} wtTs[1]=0.226611502 {{1.915764455286163,3.0259142027140675}} wnTs[0]=0.5 {{0,1}, {1,5}, {3,2}, {4,2}} wnTs[1]=0.481278074
    497 debugShowCubicLineIntersection wtTs[0]=0.601219833 {{2,3}, {2,4}, {1,0}, {5,1}} {{2.2195247359544519,1.554881183988613}} wnTs[0]=0.445119 {{4,2}, {0,1}}
    498 debugShowCubicLineIntersection wtTs[0]=0.5 {{0,1}, {1,5}, {3,2}, {4,2}} {{2.0000000000000009,2.9999999999999996}} wnTs[0]=1 {{5,1}, {2,3}}
    499 debugShowLineIntersection wtTs[0]=0.454545455 {{5,1}, {2,3}} {{3.6363636363636362,1.9090909090909089}} wnTs[0]=0.0909091 {{4,2}, {0,1}}
    500 debugShowCubicIntersection no self intersect {{0,1}, {1,5}, {3,2}, {4,2}}
    501 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,5}, {3,2}, {4,2}} {{0,1}} wtTs[1]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,1}} wnTs[1]=0
    502 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0 (2,3) tEnd=0.226611502 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    503 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.226611502 (1.91576445,3.02591419) tEnd=0.601219833 other=1 otherT=0.481278074 otherIndex=1 windSum=? windValue=1 oppValue=0
    504 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.601219833 (2.21952462,1.55488122) tEnd=1 other=2 otherT=0.445118816 otherIndex=2 windSum=? windValue=1 oppValue=0
    505 debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=0.454545455 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    506 debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=? windValue=1 oppValue=0
    507 debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
    508 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0 (0,1) tEnd=0.481278074 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    509 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.481278074 (1.91576445,3.02591419) tEnd=0.5 other=3 otherT=0.226611502 otherIndex=2 windSum=? windValue=1 oppValue=0
    510 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
    511 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
    512 debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    513 debugShowActiveSpans id=2 (4,2 0,1) t=0.0909090909 (3.63636374,1.90909088) tEnd=0.445118816 other=4 otherT=0.454545455 otherIndex=1 windSum=? windValue=1 oppValue=0
    514 debugShowActiveSpans id=2 (4,2 0,1) t=0.445118816 (2.21952462,1.55488122) tEnd=1 other=3 otherT=0.601219833 otherIndex=3 windSum=? windValue=1 oppValue=0
    515 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    516 debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=1 tEnd=0.601219833 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    517 debugShowSort [1] {{5,1}, {2,3}} tStart=0 tEnd=0.454545455 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    518 findTop xyE=(5,1) xyS=(2.21952462,1.55488122)
    519 findTop dxyE=(12,3) dxyS=(2.8990562,-4.19263649) cross=-59.0088043 bumpsUp=true
    520 markWinding id=3 (2,3 2,4 1,0 5,1) t=0.601219833 [3] (2.21952462,1.55488122) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    521 markWinding id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=0.454545455 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    522 markWinding id=3 (2,3 2,4 1,0 5,1) t=0.601219833 [3] (2.21952462,1.55488122) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    523 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    524 markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0.601219833 [3] (2.21952462,1.55488122) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    525 markDoneBinary id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=0.454545455 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    526 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    527 debugShowSort [0] {{5,1}, {2,3}} tStart=0.454545455 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    528 debugShowSort [1] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0.445118816 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    529 debugShowSort [2] {{5,1}, {2,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    530 debugShowSort [3] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
    531 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
    532 debugShowSort [0] {{5,1}, {2,3}} tStart=0.454545455 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
    533 debugShowSort [1] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0.445118816 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    534 debugShowSort [2] {{5,1}, {2,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
    535 debugShowSort [3] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
    536 markWinding id=2 (4,2 0,1) t=0.0909090909 [1] (3.63636374,1.90909088) tEnd=0.445118816 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
    537 markWinding id=4 (5,1 2,3) t=0.454545455 [1] (3.63636374,1.90909088) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    538 markWinding id=2 (4,2 0,1) t=0 [0] (4,2) tEnd=0.0909090909 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    539 markWinding id=1 (0,1 1,5 3,2 4,2) t=0.5 [2] (2,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    540 markWinding id=1 (0,1 1,5 3,2 4,2) t=0.5 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    541 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0 (2,3) tEnd=0.226611502 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    542 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.226611502 (1.91576445,3.02591419) tEnd=0.601219833 other=1 otherT=0.481278074 otherIndex=1 windSum=? windValue=1 oppValue=0
    543 debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    544 debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
    545 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0 (0,1) tEnd=0.481278074 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    546 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.481278074 (1.91576445,3.02591419) tEnd=0.5 other=3 otherT=0.226611502 otherIndex=2 windSum=? windValue=1 oppValue=0
    547 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
    548 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=1 windValue=1 oppValue=0
    549 debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
    550 debugShowActiveSpans id=2 (4,2 0,1) t=0.0909090909 (3.63636374,1.90909088) tEnd=0.445118816 other=4 otherT=0.454545455 otherIndex=1 windSum=1 windValue=1 oppValue=0
    551 debugShowActiveSpans id=2 (4,2 0,1) t=0.445118816 (2.21952462,1.55488122) tEnd=1 other=3 otherT=0.601219833 otherIndex=3 windSum=? windValue=1 oppValue=0
    552 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    553 markDoneBinary id=2 (4,2 0,1) t=0.0909090909 [1] (3.63636374,1.90909088) tEnd=0.445118816 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
    554 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    555 debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    556 debugShowSort [1] {{4,2}, {0,1}} tStart=0.445118816 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    557 debugShowSort [2] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=0.226611502 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    558 debugShowSort [3] {{4,2}, {0,1}} tStart=0.445118816 tEnd=0.0909090909 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
    559 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
    560 debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    561 debugShowSort [1] {{4,2}, {0,1}} tStart=0.445118816 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    562 debugShowSort [2] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=0.226611502 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    563 debugShowSort [3] {{4,2}, {0,1}} tStart=0.445118816 tEnd=0.0909090909 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
    564 markWinding id=2 (4,2 0,1) t=0.445118816 [2] (2.21952462,1.55488122) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    565 markWinding id=1 (0,1 1,5 3,2 4,2) t=0 [0] (0,1) tEnd=0.481278074 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    566 markWinding id=3 (2,3 2,4 1,0 5,1) t=0.226611502 [2] (1.91576445,3.02591419) tEnd=0.601219833 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    567 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0 (2,3) tEnd=0.226611502 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    568 debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.226611502 (1.91576445,3.02591419) tEnd=0.601219833 other=1 otherT=0.481278074 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    569 debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    570 debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
    571 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0 (0,1) tEnd=0.481278074 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
    572 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.481278074 (1.91576445,3.02591419) tEnd=0.5 other=3 otherT=0.226611502 otherIndex=2 windSum=? windValue=1 oppValue=0
    573 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
    574 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=1 windValue=1 oppValue=0
    575 debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
    576 debugShowActiveSpans id=2 (4,2 0,1) t=0.445118816 (2.21952462,1.55488122) tEnd=1 other=3 otherT=0.601219833 otherIndex=3 windSum=1 windValue=1 oppValue=0
    577 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    578 findNextOp simple
    579 markDoneBinary id=2 (4,2 0,1) t=0.445118816 [2] (2.21952462,1.55488122) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    580 bridgeOp current id=2 from=(2.21952462,1.55488122) to=(0,1)
    581 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
    582 debugShowSort [2] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.481278074 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
    583 debugShowSort [3] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.226611502 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
    584 debugShowSort [0] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.481278074 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    585 debugShowSort [1] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.226611502 tEnd=0.601219833 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
    586 findNextOp firstIndex=[2] sign=1
    587 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
    588 markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0 [0] (2,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    589 markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0 [1] (2,3) tEnd=0.226611502 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    590 findNextOp chase.append id=3
    591 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    592 markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0.481278074 [1] (1.91576445,3.02591419) tEnd=0.5 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
    593 findNextOp chase.append id=1
    594 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    595 markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0 [0] (0,1) tEnd=0.481278074 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    596 findNextOp from:[1] to:[3] start=2 end=3
    597 bridgeOp current id=1 from=(0,1) to=(1.91576445,3.02591419)
    598 path.moveTo(2.21952462,1.55488122);
    599 path.lineTo(0,1);
    600 path.cubicTo(0.481278062,2.92511225, 1.19418478,3.22882462, 1.91576445,3.02591419);
    601 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
    602 debugShowSort [2] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=0.226611502 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    603 debugShowSort [3] {{4,2}, {0,1}} tStart=0.445118816 tEnd=0.0909090909 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
    604 debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    605 debugShowSort [1] {{4,2}, {0,1}} tStart=0.445118816 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
    606 findNextOp firstIndex=[2] sign=1
    607 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    608 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    609 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    610 markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0.226611502 [2] (1.91576445,3.02591419) tEnd=0.601219833 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    611 findNextOp from:[3] to:[2] start=2 end=3
    612 bridgeOp current id=3 from=(1.91576445,3.02591419) to=(2.21952462,1.55488122)
    613 path.cubicTo(1.86140633,2.74398875, 1.8575213,2.07841325, 2.21952462,1.55488122);
    614 path.close();
    615 debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    616 debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
    617 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
    618 debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=1 windValue=1 oppValue=0
    619 debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
    620 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    621 findNextOp simple
    622 markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0.5 [2] (2,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    623 markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0.5 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    624 bridgeOp current id=1 from=(2,3) to=(4,2)
    625 path.moveTo(2,3);
    626 path.cubicTo(2.75,2.75, 3.5,2, 4,2);
    627 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
    628 debugShowSort [3] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
    629 debugShowSort [0] {{5,1}, {2,3}} tStart=0.454545455 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    630 debugShowSort [1] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0.445118816 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
    631 debugShowSort [2] {{5,1}, {2,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
    632 findNextOp firstIndex=[3] sign=1
    633 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
    634 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
    635 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    636 markDoneBinary id=2 (4,2 0,1) t=0 [0] (4,2) tEnd=0.0909090909 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    637 findNextOp from:[2] to:[4] start=1 end=2
    638 bridgeOp current id=2 from=(4,2) to=(3.63636374,1.90909088)
    639 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
    640 debugShowSort [1] {{5,1}, {2,3}} tStart=1 tEnd=0.454545455 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    641 debugShowSort [2] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=0.481278074 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
    642 debugShowSort [3] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0 tEnd=0.226611502 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    643 debugShowSort [0] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
    644 findNextOp firstIndex=[1] sign=1
    645 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    646 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    647 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
    648 markDoneBinary id=4 (5,1 2,3) t=0.454545455 [1] (3.63636374,1.90909088) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    649 findNextOp from:[4] to:[1] start=3 end=4
    650 bridgeOp current id=4 from=(3.63636374,1.90909088) to=(2,3)
    651 path.lineTo(3.63636374,1.90909088);
    652 path.lineTo(2,3);
    653 path.close();
    654 debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
    655 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    656 debugShowSort [0] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
    657 debugShowSort [1] {{5,1}, {2,3}} tStart=1 tEnd=0.454545455 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    658 debugShowSort [2] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=0.481278074 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
    659 debugShowSort [3] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0 tEnd=0.226611502 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
    660 </div>
    661 
    662 <div id="cubicOp41i">
    663   SimplifyNew_Test [cubicOp41i]
    664 {{0,1}, {2,6}, {4,3}, {6,4}},
    665 {{6,4}, {0,1}},
    666 op intersect
    667 {{3,4}, {4,6}, {1,0}, {6,2}},
    668 {{6,2}, {3,4}},
    669 debugShowCubicIntersection no self intersect {{0,1}, {2,6}, {4,3}, {6,4}}
    670 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {2,6}, {4,3}, {6,4}} {{0,1}} wtTs[1]=1 {{6,4}} wnTs[0]=1 {{6,4}, {0,1}} wnTs[1]=0
    671 debugShowCubicIntersection wtTs[0]=0.5 {{0,1}, {2,6}, {4,3}, {6,4}} {{2.9999999999509201,3.9999999999999996}} wtTs[1]=0.521137715 {{3.1268262924910069,3.9974325146613827}} wnTs[0]=0 {{3,4}, {4,6}, {1,0}, {6,2}} wnTs[1]=0.317571165
    672 debugShowCubicLineIntersection wtTs[0]=0.5 {{0,1}, {2,6}, {4,3}, {6,4}} {{3,4}} wnTs[0]=1 {{6,2}, {3,4}}
    673 debugShowCubicLineIntersection wtTs[0]=0.580941393 {{3,4}, {4,6}, {1,0}, {6,2}} {{3.0456725133851208,2.5228362566925604}} wnTs[0]=0.492388 {{6,4}, {0,1}}
    674 debugShowLineIntersection wtTs[0]=0.285714286 {{6,4}, {0,1}} {{4.2857142857142856,3.1428571428571428}} wnTs[0]=0.571429 {{6,2}, {3,4}}
    675 debugShowCubicIntersection no self intersect {{3,4}, {4,6}, {1,0}, {6,2}}
    676 debugShowCubicLineIntersection wtTs[0]=0 {{3,4}, {4,6}, {1,0}, {6,2}} {{3,4}} wtTs[1]=0.333333333 {{3.1111111111111116,3.9259259259259256}} wtTs[2]=1 {{6,2}} wnTs[0]=1 {{6,2}, {3,4}} wnTs[1]=0.962962963 wnTs[2]=0
    677 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0 (0,1) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    678 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.5 (3,4) tEnd=0.521137715 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    679 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.521137715 (3.12682629,3.99743247) tEnd=1 other=3 otherT=0.317571165 otherIndex=2 windSum=? windValue=1 oppValue=0
    680 debugShowActiveSpans id=2 (6,4 0,1) t=0 (6,4) tEnd=0.285714286 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    681 debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=? windValue=1 oppValue=0
    682 debugShowActiveSpans id=2 (6,4 0,1) t=0.492387914 (3.04567242,2.52283621) tEnd=1 other=3 otherT=0.580941393 otherIndex=4 windSum=? windValue=1 oppValue=0
    683 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0 (3,4) tEnd=0.317571165 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
    684 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.317571165 (3.12682629,3.99743247) tEnd=0.333333333 other=1 otherT=0.521137715 otherIndex=3 windSum=? windValue=1 oppValue=0
    685 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.333333333 (3.11111116,3.92592597) tEnd=0.580941393 other=4 otherT=0.962962963 otherIndex=2 windSum=? windValue=1 oppValue=0
    686 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=? windValue=1 oppValue=0
    687 debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
    688 debugShowActiveSpans id=4 (6,2 3,4) t=0.571428571 (4.28571415,3.14285707) tEnd=0.962962963 other=2 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
    689 debugShowActiveSpans id=4 (6,2 3,4) t=0.962962963 (3.11111116,3.92592597) tEnd=1 other=3 otherT=0.333333333 otherIndex=3 windSum=? windValue=1 oppValue=0
    690 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    691 debugShowSort [0] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    692 debugShowSort [1] {{6,4}, {0,1}} tStart=1 tEnd=0.492387914 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    693 findTop xyE=(0,1) xyS=(3,4)
    694 findTop dxyE=(6,15) dxyS=(6,9.81599801e-11) cross=-90 bumpsUp=false
    695 markWinding id=1 (0,1 2,6 4,3 6,4) t=0 [0] (0,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    696 markWinding id=2 (6,4 0,1) t=0.492387914 [2] (3.04567242,2.52283621) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    697 markWinding id=1 (0,1 2,6 4,3 6,4) t=0 [0] (0,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    698 activeOp op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
    699 markDoneBinary id=1 (0,1 2,6 4,3 6,4) t=0 [0] (0,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    700 markDoneBinary id=2 (6,4 0,1) t=0.492387914 [2] (3.04567242,2.52283621) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    701 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
    702 debugShowSort [0] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
    703 debugShowSort [1] {{6,4}, {0,1}} tStart=0.492387914 tEnd=1 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=1
    704 debugShowSort [2] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=0.333333333 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
    705 debugShowSort [3] {{6,4}, {0,1}} tStart=0.492387914 tEnd=0.285714286 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
    706 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    707 debugShowSort [1] {{6,4}, {0,1}} tStart=0.492387914 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
    708 debugShowSort [2] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=0.333333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
    709 debugShowSort [3] {{6,4}, {0,1}} tStart=0.492387914 tEnd=0.285714286 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    710 debugShowSort [0] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    711 markWinding id=3 (3,4 4,6 1,0 6,2) t=0.333333333 [3] (3.11111116,3.92592597) tEnd=0.580941393 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    712 markWinding id=2 (6,4 0,1) t=0.285714286 [1] (4.28571415,3.14285707) tEnd=0.492387914 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
    713 markWinding id=3 (3,4 4,6 1,0 6,2) t=0.580941393 [4] (3.04567242,2.52283621) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    714 markWinding id=4 (6,2 3,4) t=0 [0] (6,2) tEnd=0.571428571 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    715 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.5 (3,4) tEnd=0.521137715 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    716 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.521137715 (3.12682629,3.99743247) tEnd=1 other=3 otherT=0.317571165 otherIndex=2 windSum=? windValue=1 oppValue=0
    717 debugShowActiveSpans id=2 (6,4 0,1) t=0 (6,4) tEnd=0.285714286 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    718 debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=1 windValue=1 oppValue=0
    719 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0 (3,4) tEnd=0.317571165 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
    720 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.317571165 (3.12682629,3.99743247) tEnd=0.333333333 other=1 otherT=0.521137715 otherIndex=3 windSum=? windValue=1 oppValue=0
    721 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.333333333 (3.11111116,3.92592597) tEnd=0.580941393 other=4 otherT=0.962962963 otherIndex=2 windSum=-1 windValue=1 oppValue=0
    722 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
    723 debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
    724 debugShowActiveSpans id=4 (6,2 3,4) t=0.571428571 (4.28571415,3.14285707) tEnd=0.962962963 other=2 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
    725 debugShowActiveSpans id=4 (6,2 3,4) t=0.962962963 (3.11111116,3.92592597) tEnd=1 other=3 otherT=0.333333333 otherIndex=3 windSum=? windValue=1 oppValue=0
    726 activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    727 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
    728 debugShowSort [1] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.580941393 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
    729 debugShowSort [2] {{6,2}, {3,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    730 debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.317571165 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    731 debugShowSort [0] {{6,2}, {3,4}} tStart=0.962962963 tEnd=0.571428571 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    732 findNextOp firstIndex=[1] sign=-1
    733 activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    734 markWinding id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
    735 findNextOp chase.append id=4
    736 activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    737 markWinding id=3 (3,4 4,6 1,0 6,2) t=0.317571165 [2] (3.12682629,3.99743247) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
    738 findNextOp chase.append id=3
    739 activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    740 markWinding id=4 (6,2 3,4) t=0.571428571 [1] (4.28571415,3.14285707) tEnd=0.962962963 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    741 findNextOp chase.append id=4
    742 markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0.333333333 [3] (3.11111116,3.92592597) tEnd=0.580941393 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    743 findNextOp from:[3] to:[4] start=2 end=3
    744 bridgeOp current id=3 from=(3.04567242,2.52283621) to=(3.11111116,3.92592597)
    745 path.moveTo(3.04567242,2.52283621);
    746 path.cubicTo(2.9460392,2.99209714, 3.02857494,3.54075789, 3.11111116,3.92592597);
    747 markUnsortable id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=0 windSum=1 windValue=1
    748 markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=0 windSum=? windValue=1
    749 markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [1] (3,4) tEnd=0.5 newWindSum=0 windSum=? windValue=1
    750 markUnsortable id=3 (3,4 4,6 1,0 6,2) t=0 [1] (3,4) tEnd=0.317571165 newWindSum=0 windSum=? windValue=1
    751 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
    752 debugShowSort [0] {{6,2}, {3,4}} tStart=1 tEnd=0.962962963 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
    753 debugShowSort [1] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.521137715 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
    754 debugShowSort [2] *** UNSORTABLE *** {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 2->1 (max=2) done=1 tiny=1 opp=1
    755 debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0 tEnd=0.317571165 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    756 markDoneBinary id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
    757 path.lineTo(3,4);
    758 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.5 (3,4) tEnd=0.521137715 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    759 debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.521137715 (3.12682629,3.99743247) tEnd=1 other=3 otherT=0.317571165 otherIndex=2 windSum=? windValue=1 oppValue=0
    760 debugShowActiveSpans id=2 (6,4 0,1) t=0 (6,4) tEnd=0.285714286 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    761 debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=1 windValue=1 oppValue=0
    762 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0 (3,4) tEnd=0.317571165 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
    763 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.317571165 (3.12682629,3.99743247) tEnd=0.333333333 other=1 otherT=0.521137715 otherIndex=3 windSum=1 windValue=1 oppValue=0
    764 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
    765 debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
    766 debugShowActiveSpans id=4 (6,2 3,4) t=0.571428571 (4.28571415,3.14285707) tEnd=0.962962963 other=2 otherT=0.285714286 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    767 activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    768 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
    769 debugShowSort [0] {{6,2}, {3,4}} tStart=0.962962963 tEnd=0.571428571 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    770 debugShowSort [1] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.580941393 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    771 debugShowSort [2] {{6,2}, {3,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
    772 debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.317571165 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
    773 findNextOp firstIndex=[0] sign=1
    774 activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    775 activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    776 activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    777 markDoneBinary id=4 (6,2 3,4) t=0.571428571 [1] (4.28571415,3.14285707) tEnd=0.962962963 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    778 findNextOp from:[4] to:[3] start=3 end=2
    779 bridgeOp current id=4 from=(4.28571415,3.14285707) to=(3.11111116,3.92592597)
    780 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
    781 debugShowSort [1] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.317571165 tEnd=0.333333333 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    782 debugShowSort [2] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.521137715 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
    783 debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.317571165 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    784 debugShowSort [0] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.521137715 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
    785 findNextOp firstIndex=[1] sign=-1
    786 activeOp op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
    787 markWinding id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
    788 findNextOp chase.append id=1
    789 activeOp op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    790 markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0 [0] (3,4) tEnd=0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    791 markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0 [1] (3,4) tEnd=0.317571165 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    792 findNextOp chase.append id=3
    793 activeOp op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
    794 markDoneBinary id=1 (0,1 2,6 4,3 6,4) t=0.521137715 [3] (3.12682629,3.99743247) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    795 markDoneBinary id=2 (6,4 0,1) t=0 [0] (6,4) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    796 findNextOp chase.append id=2
    797 markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0.317571165 [2] (3.12682629,3.99743247) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
    798 findNextOp from:[3] to:[1] start=3 end=2
    799 bridgeOp current id=3 from=(3.11111116,3.92592597) to=(3.12682629,3.99743247)
    800 path.moveTo(4.28571415,3.14285707);
    801 path.lineTo(3.11111116,3.92592597);
    802 path.cubicTo(3.11636519,3.9504447, 3.12161922,3.97430134, 3.12682629,3.99743247);
    803 setSpans unsortable [2] (3,4) [3] (3.12682629,3.99743247)
    804 setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
    805 markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=0 windSum=1 windValue=1
    806 markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [1] (3,4) tEnd=0.5 newWindSum=0 windSum=? windValue=1
    807 markUnsortable id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=0 windSum=1 windValue=1
    808 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
    809 debugShowSort [0] *** UNSORTABLE *** {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.521137715 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    810 debugShowSort [1] *** UNSORTABLE *** {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=1 tiny=1 opp=0
    811 debugShowSort [2] *** UNSORTABLE *** {{6,2}, {3,4}} tStart=1 tEnd=0.962962963 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
    812 path.cubicTo(3.08455086,3.99910641, 3.04227543,4, 3,4);
    813 markDoneBinary id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
    814 debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=1 windValue=1 oppValue=0
    815 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
    816 debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
    817 activeOp op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
    818 findNextOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
    819 debugShowSort [3] {{6,4}, {0,1}} tStart=0.492387914 tEnd=0.285714286 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
    820 debugShowSort [0] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
    821 debugShowSort [1] {{6,4}, {0,1}} tStart=0.492387914 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
    822 debugShowSort [2] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=0.333333333 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
    823 findNextOp firstIndex=[3] sign=1
    824 activeOp op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    825 activeOp op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
    826 activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    827 markDoneBinary id=2 (6,4 0,1) t=0.285714286 [1] (4.28571415,3.14285707) tEnd=0.492387914 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
    828 findNextOp from:[2] to:[3] start=4 end=3
    829 bridgeOp current id=2 from=(4.28571415,3.14285707) to=(3.04567242,2.52283621)
    830 path.moveTo(4.28571415,3.14285707);
    831 path.lineTo(3.04567242,2.52283621);
    832 setSpans unsortable [1] (3,4) [2] (3.12682629,3.99743247)
    833 setSpans all tiny unsortable [1] (3,4) [0] (0,1)
    834 setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
    835 setSpans unsortable [2] (3,4) [3] (3.12682629,3.99743247)
    836 setSpans unsortable [1] (3,4) [2] (3.12682629,3.99743247)
    837 setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
    838 setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
    839 setSpans unsortable [2] (3,4) [3] (3.12682629,3.99743247)
    840 setSpans unsortable [1] (3,4) [2] (3.12682629,3.99743247)
    841 debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
    842 debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
    843 activeOp op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    844 markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0.580941393 [4] (3.04567242,2.52283621) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    845 markDoneBinary id=4 (6,2 3,4) t=0 [0] (6,2) tEnd=0.571428571 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
    846 </div>
    847 
    848 <div id="cubicOp42d">
    849   SimplifyNew_Test [cubicOp42d]
    850 {{0,1}, {1,2}, {6,5}, {5,4}},
    851 {{5,4}, {0,1}},
    852 op difference
    853 {{5,6}, {4,5}, {1,0}, {2,1}},
    854 {{2,1}, {5,6}},
    855 debugShowCubicIntersection no self intersect {{5,6}, {4,5}, {1,0}, {2,1}}
    856 debugShowCubicLineIntersection wtTs[0]=0 {{5,6}, {4,5}, {1,0}, {2,1}} {{5,6}} wtTs[1]=1 {{2,1}} wnTs[0]=1 {{2,1}, {5,6}} wnTs[1]=0
    857 debugShowCubicIntersection no intersect {{5,6}, {4,5}, {1,0}, {2,1}} {{0,1}, {1,2}, {6,5}, {5,4}}
    858 debugShowCubicLineIntersection wtTs[0]=0.520955385 {{5,6}, {4,5}, {1,0}, {2,1}} {{2.6570733652881806,2.5942440191729084}} wnTs[0]=0.468585 {{5,4}, {0,1}}
    859 debugShowCubicLineIntersection wtTs[0]=0.520955385 {{0,1}, {1,2}, {6,5}, {5,4}} {{3.4057559808270916,3.3429266347118194}} wnTs[0]=0.468585 {{2,1}, {5,6}}
    860 debugShowLineIntersection wtTs[0]=0.375 {{2,1}, {5,6}} {{3.125,2.875}} wnTs[0]=0.375 {{5,4}, {0,1}}
    861 debugShowCubicIntersection no self intersect {{0,1}, {1,2}, {6,5}, {5,4}}
    862 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,2}, {6,5}, {5,4}} {{0,1}} wtTs[1]=1 {{5,4}} wnTs[0]=1 {{5,4}, {0,1}} wnTs[1]=0
    863 debugShowActiveSpans id=3 (5,6 4,5 1,0 2,1) t=0 (5,6) tEnd=0.520955385 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    864 debugShowActiveSpans id=3 (5,6 4,5 1,0 2,1) t=0.520955385 (2.65707326,2.594244) tEnd=1 other=2 otherT=0.468585327 otherIndex=2 windSum=? windValue=1 oppValue=0
    865 debugShowActiveSpans id=4 (2,1 5,6) t=0 (2,1) tEnd=0.375 other=3 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
    866 debugShowActiveSpans id=4 (2,1 5,6) t=0.375 (3.125,2.875) tEnd=0.468585327 other=2 otherT=0.375 otherIndex=1 windSum=? windValue=1 oppValue=0
    867 debugShowActiveSpans id=4 (2,1 5,6) t=0.468585327 (3.405756,3.34292674) tEnd=1 other=1 otherT=0.520955385 otherIndex=1 windSum=? windValue=1 oppValue=0
    868 debugShowActiveSpans id=1 (0,1 1,2 6,5 5,4) t=0 (0,1) tEnd=0.520955385 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
    869 debugShowActiveSpans id=1 (0,1 1,2 6,5 5,4) t=0.520955385 (3.405756,3.34292674) tEnd=1 other=4 otherT=0.468585327 otherIndex=2 windSum=? windValue=1 oppValue=0
    870 debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.375 other=1 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
    871 debugShowActiveSpans id=2 (5,4 0,1) t=0.375 (3.125,2.875) tEnd=0.468585327 other=4 otherT=0.375 otherIndex=1 windSum=? windValue=1 oppValue=0
    872 debugShowActiveSpans id=2 (5,4 0,1) t=0.468585327 (2.65707326,2.594244) tEnd=1 other=3 otherT=0.520955385 otherIndex=1 windSum=? windValue=1 oppValue=0
    873 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    874 debugShowSort [0] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0 tEnd=0.520955385 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
    875 debugShowSort [1] {{5,4}, {0,1}} tStart=1 tEnd=0.468585327 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    876 findTop xyE=(0,1) xyS=(3.405756,3.34292674)
    877 findTop dxyE=(3,3) dxyS=(7.361094,4.36636353) cross=-8.98419189 bumpsUp=false
    878 markWinding id=1 (0,1 1,2 6,5 5,4) t=0 [0] (0,1) tEnd=0.520955385 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    879 markWinding id=2 (5,4 0,1) t=0.468585327 [2] (2.65707326,2.594244) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
    880 markWinding id=1 (0,1 1,2 6,5 5,4) t=0 [0] (0,1) tEnd=0.520955385 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    881 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
    882 findNextOp simple
    883 markDoneBinary id=1 (0,1 1,2 6,5 5,4) t=0 [0] (0,1) tEnd=0.520955385 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    884 bridgeOp current id=1 from=(3.405756,3.34292674) to=(0,1)
    885 path.moveTo(3.405756,3.34292674);
    886 path.cubicTo(2.12748885,2.58469963, 0.520955384,1.52095544, 0,1);
    887 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
    888 debugShowSort [1] {{5,4}, {0,1}} tStart=0.468585327 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
    889 debugShowSort [2] {{5,6}, {4,5}, {1,0}, {2,1}} tStart=0.520955385 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
    890 debugShowSort [3] {{5,4}, {0,1}} tStart=0.468585327 tEnd=0.375 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
    891 debugShowSort [0] {{5,6}, {4,5}, {1,0}, {2,1}} tStart=0.520955385 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
    892 findNextOp firstIndex=[1] sign=-1
    893 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    894 markWinding id=3 (5,6 4,5 1,0 2,1) t=0 [0] (5,6) tEnd=0.520955385 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    895 markWinding id=4 (2,1 5,6) t=0.468585327 [2] (3.405756,3.34292674) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
    896 findNextOp chase.append id=4
    897 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
    898 markDoneBinary id=2 (5,4 0,1) t=0.375 [1] (3.125,2.875) tEnd=0.468585327 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
    899 findNextOp chase.append id=2
    900 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
    901 markDoneBinary id=3 (5,6 4,5 1,0 2,1) t=0.520955385 [1] (2.65707326,2.594244) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    902 markDoneBinary id=4 (2,1 5,6) t=0 [0] (2,1) tEnd=0.375 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
    903 findNextOp chase.append id=4
    904 markDoneBinary id=2 (5,4 0,1) t=0.468585327 [2] (2.65707326,2.594244) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
    905 findNextOp from:[2] to:[3] start=1 end=0
    906 bridgeOp current id=2 from=(0,1) to=(2.65707326,2.594244)
    907 findNextOp simple
    908 markDoneBinary id=3 (5,6 4,5 1,0 2,1) t=0 [0] (5,6) tEnd=0.520955385 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    909 bridgeOp current id=3 from=(2.65707326,2.594244) to=(5,6)
    910 path.lineTo(2.65707326,2.594244);
    911 path.cubicTo(3.41530037,3.87251115, 4.47904444,5.47904444, 5,6);
    912 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
    913 debugShowSort [2] {{2,1}, {5,6}} tStart=0.468585327 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
    914 debugShowSort [3] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
    915 debugShowSort [0] {{2,1}, {5,6}} tStart=0.468585327 tEnd=0.375 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
    916 debugShowSort [1] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
    917 findNextOp firstIndex=[2] sign=-1
    918 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
    919 markDoneBinary id=1 (0,1 1,2 6,5 5,4) t=0.520955385 [1] (3.405756,3.34292674) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
    920 markDoneBinary id=2 (5,4 0,1) t=0 [0] (5,4) tEnd=0.375 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
    921 findNextOp chase.append id=2
    922 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
    923 markWinding id=4 (2,1 5,6) t=0.375 [1] (3.125,2.875) tEnd=0.468585327 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
    924 findNextOp chase.append id=4
    925 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
    926 markDoneBinary id=4 (2,1 5,6) t=0.468585327 [2] (3.405756,3.34292674) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
    927 findNextOp from:[4] to:[4] start=2 end=1
    928 bridgeOp current id=4 from=(5,6) to=(3.405756,3.34292674)
    929 path.lineTo(3.405756,3.34292674);
    930 path.close();
    931 debugShowActiveSpans id=4 (2,1 5,6) t=0.375 (3.125,2.875) tEnd=0.468585327 other=2 otherT=0.375 otherIndex=1 windSum=-1 windValue=1 oppValue=0
    932 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    933 findNextOp debugShowSort contourWinding=0 oppContourWinding=2 sign=1
    934 debugShowSort [0] {{2,1}, {5,6}} tStart=0.468585327 tEnd=0.375 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
    935 debugShowSort [1] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
    936 debugShowSort [2] {{2,1}, {5,6}} tStart=0.468585327 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
    937 debugShowSort [3] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=1 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
    938 findNextOp firstIndex=[0] sign=1
    939 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
    940 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
    941 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
    942 markDoneBinary id=4 (2,1 5,6) t=0.375 [1] (3.125,2.875) tEnd=0.468585327 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
    943 findNextOp from:[4] to:[4] start=2 end=3
    944 bridgeOp current id=4 from=(3.125,2.875) to=(3.405756,3.34292674)
    945 </div>
    946 
    947 <div id="cubicOp42da">
    948 computed quadratics given
    949   {{0,1}, {1,2}, {6,5}, {5,4}},
    950   {{5,6}, {4,5}, {1,0}, {2,1}},
    951 computed quadratics set 1
    952   {{0,1}, {0.4140625,1.3984375}, {1.34375,2.03125}},
    953   {{1.34375,2.03125}, {2.2734375,2.6640625}, {3.25,3.25}},
    954   {{3.25,3.25}, {4.2265625,3.8359375}, {4.78125,4.09375}},
    955   {{4.78125,4.09375}, {5.3359375,4.3515625}, {5,4}},
    956 computed quadratics set 2
    957   {{5,6}, {4.6015625,5.5859375}, {3.96875,4.65625}},
    958   {{3.96875,4.65625}, {3.3359375,3.7265625}, {2.75,2.75}},
    959   {{2.75,2.75}, {2.1640625,1.7734375}, {1.90625,1.21875}},
    960   {{1.90625,1.21875}, {1.6484375,0.6640625}, {2,1}},
    961 </div>
    962 
    963 <div id="cubicOp42db">
    964   {{1.34375,2.03125}, {2.2734375,2.6640625}, {3.25,3.25}},
    965   {{3.96875,4.65625}, {3.3359375,3.7265625}, {2.75,2.75}},
    966 </div>
    967 
    968 <div id="cubicOp43d">
    969   SimplifyNew_Test [cubicOp43d]
    970 {{0,2}, {1,2}, {4,0}, {3,1}},
    971 {{3,1}, {0,2}},
    972 op difference
    973 {{0,4}, {1,3}, {2,0}, {2,1}},
    974 {{2,1}, {0,4}},
    975 debugShowCubicIntersection no self intersect {{0,2}, {1,2}, {4,0}, {3,1}}
    976 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {1,2}, {4,0}, {3,1}} {{0,2}} wtTs[1]=0.333333333 {{1.4444444444444446,1.5185185185185186}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {0,2}} wnTs[1]=0.518518519 wnTs[2]=0
    977 debugShowCubicIntersection wtTs[0]=0.345547542 {{0,2}, {1,2}, {4,0}, {3,1}} {{1.5055045552472988,1.4898786220870244}} wnTs[0]=0.560544 {{0,4}, {1,3}, {2,0}, {2,1}}
    978 debugShowCubicLineIntersection wtTs[0]=0.395188999 {{0,2}, {1,2}, {4,0}, {3,1}} {{1.7523027701818603,1.3715458447272095}} wnTs[0]=0.123849 {{2,1}, {0,4}}
    979 debugShowCubicLineIntersection wtTs[0]=0.558102564 {{0,4}, {1,3}, {2,0}, {2,1}} {{1.5004707573680853,1.4998430808773049}} wnTs[0]=0.499843 {{3,1}, {0,2}}
    980 debugShowLineIntersection wtTs[0]=0.428571429 {{3,1}, {0,2}} {{1.7142857142857142,1.4285714285714284}} wnTs[0]=0.142857 {{2,1}, {0,4}}
    981 debugShowCubicIntersection no self intersect {{0,4}, {1,3}, {2,0}, {2,1}}
    982 debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {1,3}, {2,0}, {2,1}} {{0,4}} wtTs[1]=0.333333333 {{0.96296296296296258,2.5555555555555562}} wtTs[2]=1 {{2,1}} wnTs[0]=1 {{2,1}, {0,4}} wnTs[1]=0.518518519 wnTs[2]=0
    983 debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0 (0,2) tEnd=0.333333333 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    984 debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0.333333333 (1.44444442,1.51851857) tEnd=0.345547542 other=2 otherT=0.518518519 otherIndex=3 windSum=? windValue=1 oppValue=0
    985 debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0.345547542 (1.50550461,1.48987865) tEnd=0.395188999 other=3 otherT=0.560544414 otherIndex=3 windSum=? windValue=1 oppValue=0
    986 debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0.395188999 (1.75230277,1.37154579) tEnd=1 other=4 otherT=0.123848615 otherIndex=1 windSum=? windValue=1 oppValue=0
    987 debugShowActiveSpans id=2 (3,1 0,2) t=0 (3,1) tEnd=0.428571429 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    988 debugShowActiveSpans id=2 (3,1 0,2) t=0.428571429 (1.71428573,1.42857146) tEnd=0.499843081 other=4 otherT=0.142857143 otherIndex=2 windSum=? windValue=1 oppValue=0
    989 debugShowActiveSpans id=2 (3,1 0,2) t=0.499843081 (1.50047076,1.49984312) tEnd=0.518518519 other=3 otherT=0.558102564 otherIndex=2 windSum=? windValue=1 oppValue=0
    990 debugShowActiveSpans id=2 (3,1 0,2) t=0.518518519 (1.44444442,1.51851857) tEnd=1 other=1 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
    991 debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0 (0,4) tEnd=0.333333333 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    992 debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0.333333333 (0.962962985,2.55555558) tEnd=0.558102564 other=4 otherT=0.518518519 otherIndex=3 windSum=? windValue=1 oppValue=0
    993 debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0.558102564 (1.50047076,1.49984312) tEnd=0.560544414 other=2 otherT=0.499843081 otherIndex=2 windSum=? windValue=1 oppValue=0
    994 debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0.560544414 (1.50550461,1.48987865) tEnd=1 other=1 otherT=0.345547542 otherIndex=2 windSum=? windValue=1 oppValue=0
    995 debugShowActiveSpans id=4 (2,1 0,4) t=0 (2,1) tEnd=0.123848615 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
    996 debugShowActiveSpans id=4 (2,1 0,4) t=0.123848615 (1.75230277,1.37154579) tEnd=0.142857143 other=1 otherT=0.395188999 otherIndex=3 windSum=? windValue=1 oppValue=0
    997 debugShowActiveSpans id=4 (2,1 0,4) t=0.142857143 (1.71428573,1.42857146) tEnd=0.518518519 other=2 otherT=0.428571429 otherIndex=1 windSum=? windValue=1 oppValue=0
    998 debugShowActiveSpans id=4 (2,1 0,4) t=0.518518519 (0.962962985,2.55555558) tEnd=1 other=3 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
    999 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1000 debugShowSort [0] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=1 tEnd=0.395188999 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1001 debugShowSort [1] {{3,1}, {0,2}} tStart=0 tEnd=0.428571429 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1002 findTop xyE=(3,1) xyS=(1.75230277,1.37154579)
   1003 findTop dxyE=(-3,3) dxyS=(4.93112993,-2.39965272) cross=-7.59443188 bumpsUp=true
   1004 findTop cross bump disagree
   1005 findTop swap
   1006 markWinding id=1 (0,2 1,2 4,0 3,1) t=0.395188999 [3] (1.75230277,1.37154579) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1007 markWinding id=1 (0,2 1,2 4,0 3,1) t=0.395188999 [3] (1.75230277,1.37154579) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1008 markWinding id=2 (3,1 0,2) t=0 [0] (3,1) tEnd=0.428571429 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1009 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1010 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1011 debugShowSort [0] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.395188999 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   1012 debugShowSort [1] {{2,1}, {0,4}} tStart=0.123848615 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1013 debugShowSort [2] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.395188999 tEnd=0.345547542 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1014 debugShowSort [3] {{2,1}, {0,4}} tStart=0.123848615 tEnd=0.142857143 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1015 findNextOp firstIndex=[0] sign=-1
   1016 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1017 markWinding id=4 (2,1 0,4) t=0 [0] (2,1) tEnd=0.123848615 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1018 markWinding id=3 (0,4 1,3 2,0 2,1) t=0.560544414 [3] (1.50550461,1.48987865) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1019 findNextOp chase.append id=3
   1020 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1021 markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0.345547542 [2] (1.50550461,1.48987865) tEnd=0.395188999 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1022 findNextOp chase.append id=1
   1023 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1024 markDoneBinary id=4 (2,1 0,4) t=0.123848615 [1] (1.75230277,1.37154579) tEnd=0.142857143 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1025 findNextOp chase.append id=4
   1026 markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0.395188999 [3] (1.75230277,1.37154579) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1027 findNextOp from:[1] to:[4] start=1 end=0
   1028 bridgeOp current id=1 from=(3,1) to=(1.75230277,1.37154579)
   1029 path.moveTo(3,1);
   1030 path.cubicTo(3.60481095,0.395188987, 2.7464366,0.887767076, 1.75230277,1.37154579);
   1031 findNextOp simple
   1032 markDoneBinary id=4 (2,1 0,4) t=0 [0] (2,1) tEnd=0.123848615 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1033 bridgeOp current id=4 from=(1.75230277,1.37154579) to=(2,1)
   1034 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1035 debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.560544414 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1036 debugShowSort [2] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.345547542 tEnd=0.333333333 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   1037 debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.560544414 tEnd=0.558102564 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1038 debugShowSort [0] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.345547542 tEnd=0.395188999 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   1039 findNextOp firstIndex=[1] sign=-1
   1040 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1041 markWinding id=1 (0,2 1,2 4,0 3,1) t=0.333333333 [1] (1.44444442,1.51851857) tEnd=0.345547542 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1042 findNextOp chase.append id=1
   1043 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1044 markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0.558102564 [2] (1.50047076,1.49984312) tEnd=0.560544414 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1045 findNextOp chase.append id=3
   1046 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1047 markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0.560544414 [3] (1.50550461,1.48987865) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1048 findNextOp from:[3] to:[1] start=2 end=1
   1049 bridgeOp current id=3 from=(2,1) to=(1.50550461,1.48987865)
   1050 path.lineTo(2,1);
   1051 path.cubicTo(2,0.560544431, 1.80687881,0.893573642, 1.50550461,1.48987865);
   1052 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1053 debugShowSort [1] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.333333333 tEnd=0.345547542 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   1054 debugShowSort [2] {{3,1}, {0,2}} tStart=0.518518519 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
   1055 debugShowSort [3] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   1056 debugShowSort [0] {{3,1}, {0,2}} tStart=0.518518519 tEnd=0.499843081 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1057 findNextOp firstIndex=[1] sign=-1
   1058 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1059 markDoneBinary id=2 (3,1 0,2) t=0.518518519 [3] (1.44444442,1.51851857) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1060 markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0 [0] (0,2) tEnd=0.333333333 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1061 findNextOp chase.append id=1
   1062 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1063 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1064 markWinding id=2 (3,1 0,2) t=0.499843081 [2] (1.50047076,1.49984312) tEnd=0.518518519 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1065 findNextOp chase.append id=2
   1066 markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0.333333333 [1] (1.44444442,1.51851857) tEnd=0.345547542 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1067 findNextOp from:[1] to:[2] start=3 end=2
   1068 bridgeOp current id=1 from=(1.50550461,1.48987865) to=(1.44444442,1.51851857)
   1069 path.cubicTo(1.48515844,1.49946892, 1.46480155,1.50901854, 1.44444442,1.51851857);
   1070 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1071 debugShowSort [2] {{3,1}, {0,2}} tStart=0.499843081 tEnd=0.518518519 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   1072 debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.558102564 tEnd=0.333333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1073 debugShowSort [0] {{3,1}, {0,2}} tStart=0.499843081 tEnd=0.428571429 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1074 debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.558102564 tEnd=0.560544414 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   1075 findNextOp firstIndex=[2] sign=-1
   1076 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1077 markWinding id=3 (0,4 1,3 2,0 2,1) t=0.333333333 [1] (0.962962985,2.55555558) tEnd=0.558102564 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1078 findNextOp chase.append id=3
   1079 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1080 markDoneBinary id=2 (3,1 0,2) t=0.428571429 [1] (1.71428573,1.42857146) tEnd=0.499843081 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1081 findNextOp chase.append id=2
   1082 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1083 markDoneBinary id=2 (3,1 0,2) t=0.499843081 [2] (1.50047076,1.49984312) tEnd=0.518518519 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1084 findNextOp from:[2] to:[3] start=2 end=1
   1085 bridgeOp current id=2 from=(1.44444442,1.51851857) to=(1.50047076,1.49984312)
   1086 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1087 debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0.558102564 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1088 debugShowSort [2] {{2,1}, {0,4}} tStart=0.518518519 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   1089 debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1090 debugShowSort [0] {{2,1}, {0,4}} tStart=0.518518519 tEnd=0.142857143 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1091 findNextOp firstIndex=[1] sign=-1
   1092 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1093 markWinding id=4 (2,1 0,4) t=0.518518519 [3] (0.962962985,2.55555558) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   1094 markWinding id=3 (0,4 1,3 2,0 2,1) t=0 [0] (0,4) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   1095 findNextOp chase.append id=3
   1096 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1097 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1098 markWinding id=4 (2,1 0,4) t=0.142857143 [2] (1.71428573,1.42857146) tEnd=0.518518519 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1099 findNextOp chase.append id=4
   1100 markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0.333333333 [1] (0.962962985,2.55555558) tEnd=0.558102564 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1101 findNextOp from:[3] to:[4] start=3 end=4
   1102 bridgeOp current id=3 from=(1.50047076,1.49984312) to=(0.962962985,2.55555558)
   1103 path.lineTo(1.50047076,1.49984312);
   1104 path.cubicTo(1.3457123,1.80632472, 1.16275787,2.18094015, 0.962962985,2.55555558);
   1105 findNextOp simple
   1106 markDoneBinary id=4 (2,1 0,4) t=0.518518519 [3] (0.962962985,2.55555558) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   1107 bridgeOp current id=4 from=(0.962962985,2.55555558) to=(0,4)
   1108 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
   1109 debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   1110 debugShowSort [0] {{2,1}, {0,4}} tStart=0.518518519 tEnd=0.142857143 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1111 debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0.558102564 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1112 debugShowSort [2] {{2,1}, {0,4}} tStart=0.518518519 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   1113 findNextOp firstIndex=[3] sign=1
   1114 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1115 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1116 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1117 markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0 [0] (0,4) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   1118 findNextOp from:[3] to:[4] start=3 end=2
   1119 bridgeOp current id=3 from=(0,4) to=(0.962962985,2.55555558)
   1120 path.lineTo(0,4);
   1121 path.cubicTo(0.333333343,3.66666675, 0.666666627,3.11111116, 0.962962985,2.55555558);
   1122 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1123 debugShowSort [3] {{2,1}, {0,4}} tStart=0.142857143 tEnd=0.518518519 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1124 debugShowSort [0] {{3,1}, {0,2}} tStart=0.428571429 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
   1125 debugShowSort [1] {{2,1}, {0,4}} tStart=0.142857143 tEnd=0.123848615 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   1126 debugShowSort [2] {{3,1}, {0,2}} tStart=0.428571429 tEnd=0.499843081 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   1127 findNextOp firstIndex=[3] sign=-1
   1128 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1129 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1130 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1131 markDoneBinary id=4 (2,1 0,4) t=0.142857143 [2] (1.71428573,1.42857146) tEnd=0.518518519 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1132 findNextOp from:[4] to:[2] start=1 end=0
   1133 bridgeOp current id=4 from=(0.962962985,2.55555558) to=(1.71428573,1.42857146)
   1134 findNextOp simple
   1135 markDoneBinary id=2 (3,1 0,2) t=0 [0] (3,1) tEnd=0.428571429 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1136 bridgeOp current id=2 from=(1.71428573,1.42857146) to=(3,1)
   1137 path.lineTo(1.71428573,1.42857146);
   1138 path.lineTo(3,1);
   1139 path.close();
   1140 assemble
   1141 assemble contour    start=(3,1) end=(3,1)
   1142 </div>
   1143 
   1144 <div id="cubicOp44d">
   1145   SimplifyNew_Test [cubicOp44d]
   1146 {{0,2}, {3,6}, {4,0}, {3,2}},
   1147 {{3,2}, {0,2}},
   1148 op difference
   1149 {{0,4}, {2,3}, {2,0}, {6,3}},
   1150 {{6,3}, {0,4}},
   1151 debugShowCubicIntersection no self intersect {{0,2}, {3,6}, {4,0}, {3,2}}
   1152 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {3,6}, {4,0}, {3,2}} {{0,2}} wtTs[1]=1 {{3,2}} wnTs[0]=1 {{3,2}, {0,2}} wnTs[1]=0
   1153 debugShowCubicIntersection wtTs[0]=0.135342164 {{0,2}, {3,6}, {4,0}, {3,2}} {{1.1081744689414279,3.1192052729330815}} wtTs[1]=0.754165096 {{3.3748959118747366,1.708000079031383}} wtTs[2]=0.93333707 {{3.1733251116708114,1.7013446943452044}} wnTs[0]=0.223477 {{0,4}, {2,3}, {2,0}, {6,3}} wnTs[1]=0.708782366 wnTs[2]=0.67692927
   1154 debugShowCubicLineIntersection no intersect {{0,2}, {3,6}, {4,0}, {3,2}} {{6,3}, {0,4}}
   1155 debugShowCubicLineIntersection wtTs[0]=0.5 {{0,4}, {2,3}, {2,0}, {6,3}} {{2.25,2}} wnTs[0]=0.25 {{3,2}, {0,2}}
   1156 debugShowCubicIntersection no self intersect {{0,4}, {2,3}, {2,0}, {6,3}}
   1157 debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {2,3}, {2,0}, {6,3}} {{0,4}} wtTs[1]=1 {{6,3}} wnTs[0]=1 {{6,3}, {0,4}} wnTs[1]=0
   1158 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0 (0,2) tEnd=0.135342164 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   1159 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.135342164 (1.10817444,3.11920524) tEnd=0.754165096 other=3 otherT=0.223476766 otherIndex=1 windSum=? windValue=1 oppValue=0
   1160 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.754165096 (3.37489581,1.70800006) tEnd=0.93333707 other=3 otherT=0.708782366 otherIndex=4 windSum=? windValue=1 oppValue=0
   1161 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.93333707 (3.17332506,1.70134473) tEnd=1 other=3 otherT=0.67692927 otherIndex=3 windSum=? windValue=1 oppValue=0
   1162 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.25 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1163 debugShowActiveSpans id=2 (3,2 0,2) t=0.25 (2.25,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1164 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0 (0,4) tEnd=0.223476766 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
   1165 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.223476766 (1.10817444,3.11920524) tEnd=0.5 other=1 otherT=0.135342164 otherIndex=1 windSum=? windValue=1 oppValue=0
   1166 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.5 (2.25,2) tEnd=0.67692927 other=2 otherT=0.25 otherIndex=1 windSum=? windValue=1 oppValue=0
   1167 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.67692927 (3.17332506,1.70134473) tEnd=0.708782366 other=1 otherT=0.93333707 otherIndex=3 windSum=? windValue=1 oppValue=0
   1168 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.708782366 (3.37489581,1.70800006) tEnd=1 other=1 otherT=0.754165096 otherIndex=2 windSum=? windValue=1 oppValue=0
   1169 debugShowActiveSpans id=4 (6,3 0,4) t=0 (6,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1170 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1171 debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.708782366 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   1172 debugShowSort [1] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=0.754165096 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1173 debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1174 debugShowSort [3] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1175 findTop swap
   1176 markWinding id=3 (0,4 2,3 2,0 6,3) t=0.67692927 [3] (3.17332506,1.70134473) tEnd=0.708782366 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1177 markWinding id=3 (0,4 2,3 2,0 6,3) t=0.67692927 [3] (3.17332506,1.70134473) tEnd=0.708782366 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1178 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1179 markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.67692927 [3] (3.17332506,1.70134473) tEnd=0.708782366 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1180 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
   1181 debugShowSort [0] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.93333707 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1182 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=0.67692927 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   1183 debugShowSort [2] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.135342164 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1184 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   1185 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1186 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=0.67692927 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   1187 debugShowSort [2] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.135342164 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1188 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1189 debugShowSort [0] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.93333707 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1190 markWinding id=1 (0,2 3,6 4,0 3,2) t=0.135342164 [1] (1.10817444,3.11920524) tEnd=0.754165096 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1191 markWinding id=3 (0,4 2,3 2,0 6,3) t=0.708782366 [4] (3.37489581,1.70800006) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1192 markWinding id=4 (6,3 0,4) t=0 [0] (6,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1193 markWinding id=3 (0,4 2,3 2,0 6,3) t=0 [0] (0,4) tEnd=0.223476766 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1194 markWinding id=1 (0,2 3,6 4,0 3,2) t=0.754165096 [2] (3.37489581,1.70800006) tEnd=0.93333707 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1195 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0 (0,2) tEnd=0.135342164 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   1196 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.135342164 (1.10817444,3.11920524) tEnd=0.754165096 other=3 otherT=0.223476766 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1197 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.754165096 (3.37489581,1.70800006) tEnd=0.93333707 other=3 otherT=0.708782366 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1198 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.93333707 (3.17332506,1.70134473) tEnd=1 other=3 otherT=0.67692927 otherIndex=3 windSum=? windValue=1 oppValue=0
   1199 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.25 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1200 debugShowActiveSpans id=2 (3,2 0,2) t=0.25 (2.25,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1201 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0 (0,4) tEnd=0.223476766 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1202 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.223476766 (1.10817444,3.11920524) tEnd=0.5 other=1 otherT=0.135342164 otherIndex=1 windSum=? windValue=1 oppValue=0
   1203 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.5 (2.25,2) tEnd=0.67692927 other=2 otherT=0.25 otherIndex=1 windSum=? windValue=1 oppValue=0
   1204 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.708782366 (3.37489581,1.70800006) tEnd=1 other=1 otherT=0.754165096 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   1205 debugShowActiveSpans id=4 (6,3 0,4) t=0 (6,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   1206 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1207 markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0.135342164 [1] (1.10817444,3.11920524) tEnd=0.754165096 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   1208 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0 (0,2) tEnd=0.135342164 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   1209 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.754165096 (3.37489581,1.70800006) tEnd=0.93333707 other=3 otherT=0.708782366 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1210 debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.93333707 (3.17332506,1.70134473) tEnd=1 other=3 otherT=0.67692927 otherIndex=3 windSum=? windValue=1 oppValue=0
   1211 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.25 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1212 debugShowActiveSpans id=2 (3,2 0,2) t=0.25 (2.25,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1213 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0 (0,4) tEnd=0.223476766 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1214 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.223476766 (1.10817444,3.11920524) tEnd=0.5 other=1 otherT=0.135342164 otherIndex=1 windSum=? windValue=1 oppValue=0
   1215 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.5 (2.25,2) tEnd=0.67692927 other=2 otherT=0.25 otherIndex=1 windSum=? windValue=1 oppValue=0
   1216 debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.708782366 (3.37489581,1.70800006) tEnd=1 other=1 otherT=0.754165096 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   1217 debugShowActiveSpans id=4 (6,3 0,4) t=0 (6,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   1218 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1219 findNextOp simple
   1220 markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0 [0] (0,4) tEnd=0.223476766 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   1221 bridgeOp current id=3 from=(1.10817444,3.11920524) to=(0,4)
   1222 path.moveTo(1.10817444,3.11920524);
   1223 path.cubicTo(0.794023395,3.45316267, 0.446953505,3.77652311, 0,4);
   1224 findNextOp simple
   1225 markDoneBinary id=4 (6,3 0,4) t=0 [0] (6,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   1226 bridgeOp current id=4 from=(0,4) to=(6,3)
   1227 findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
   1228 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1229 debugShowSort [0] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.93333707 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
   1230 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=0.67692927 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   1231 debugShowSort [2] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.135342164 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   1232 findNextOp firstIndex=[3] sign=-1
   1233 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1234 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1235 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1236 markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.708782366 [4] (3.37489581,1.70800006) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   1237 findNextOp from:[3] to:[1] start=2 end=3
   1238 bridgeOp current id=3 from=(6,3) to=(3.37489581,1.70800006)
   1239 path.lineTo(6,3);
   1240 path.cubicTo(4.83512926,2.12634706, 4.00949001,1.76154041, 3.37489581,1.70800006);
   1241 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1242 debugShowSort [1] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=0.754165096 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1243 debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1244 debugShowSort [3] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1245 debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.708782366 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   1246 findNextOp firstIndex=[1] sign=1
   1247 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1248 markWinding id=3 (0,4 2,3 2,0 6,3) t=0.5 [2] (2.25,2) tEnd=0.67692927 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1249 findNextOp chase.append id=3
   1250 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1251 markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0.93333707 [3] (3.17332506,1.70134473) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1252 markDoneBinary id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0.25 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1253 findNextOp chase.append id=2
   1254 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1255 markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0.754165096 [2] (3.37489581,1.70800006) tEnd=0.93333707 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1256 findNextOp from:[1] to:[3] start=3 end=2
   1257 bridgeOp current id=1 from=(3.37489581,1.70800006) to=(3.17332506,1.70134473)
   1258 path.cubicTo(3.37191081,1.55650449, 3.30472064,1.51977468, 3.17332506,1.70134473);
   1259 findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
   1260 debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.5 tEnd=0.67692927 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1261 debugShowSort [1] {{3,2}, {0,2}} tStart=0.25 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1262 debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.5 tEnd=0.223476766 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1263 debugShowSort [3] {{3,2}, {0,2}} tStart=0.25 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   1264 findNextOp firstIndex=[0] sign=-1
   1265 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1266 markWinding id=2 (3,2 0,2) t=0.25 [1] (2.25,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1267 markWinding id=1 (0,2 3,6 4,0 3,2) t=0 [0] (0,2) tEnd=0.135342164 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1268 findNextOp chase.append id=1
   1269 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1270 markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.223476766 [1] (1.10817444,3.11920524) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1271 findNextOp chase.append id=3
   1272 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1273 markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.5 [2] (2.25,2) tEnd=0.67692927 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   1274 findNextOp from:[3] to:[2] start=1 end=2
   1275 bridgeOp current id=3 from=(3.17332506,1.70134473) to=(2.25,2)
   1276 path.cubicTo(2.81209183,1.70874941, 2.51539397,1.82307076, 2.25,2);
   1277 findNextOp simple
   1278 markDoneBinary id=2 (3,2 0,2) t=0.25 [1] (2.25,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1279 bridgeOp current id=2 from=(2.25,2) to=(0,2)
   1280 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1281 debugShowSort [1] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.135342164 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1282 debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.223476766 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   1283 debugShowSort [3] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.135342164 tEnd=0.754165096 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1284 debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.223476766 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   1285 findNextOp firstIndex=[1] sign=1
   1286 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1287 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1288 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1289 markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0 [0] (0,2) tEnd=0.135342164 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1290 findNextOp from:[1] to:[3] start=1 end=0
   1291 bridgeOp current id=1 from=(0,2) to=(1.10817444,3.11920524)
   1292 path.lineTo(0,2);
   1293 path.cubicTo(0.406026483,2.54136872, 0.775417984,2.89956236, 1.10817444,3.11920524);
   1294 path.close();
   1295 assemble
   1296 assemble contour    start=(1.10817444,3.11920524) end=(1.10817444,3.11920524)
   1297 </div>
   1298 
   1299 <div id="cubicOp45d">
   1300   SimplifyNew_Test [cubicOp45d]
   1301 {{0,2}, {2,4}, {4,0}, {3,2}},
   1302 {{3,2}, {0,2}},
   1303 op difference
   1304 {{0,4}, {2,3}, {2,0}, {4,2}},
   1305 {{4,2}, {0,4}},
   1306 debugShowCubicIntersection no self intersect {{0,4}, {2,3}, {2,0}, {4,2}}
   1307 debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {2,3}, {2,0}, {4,2}} {{0,4}} wtTs[1]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,4}} wnTs[1]=0
   1308 debugShowCubicIntersection wtTs[0]=0.341662805 {{0,4}, {2,3}, {2,0}, {4,2}} {{1.5091099386066631,2.5537951499735922}} wtTs[1]=0.856247521 {{3.2495913270767485,1.4266624658205882}} wtTs[2]=0.859816875 {{3.2657899721435943,1.4343874043112959}} wnTs[0]=0.260341 {{0,2}, {2,4}, {4,0}, {3,2}} wnTs[1]=0.768795564 wnTs[2]=0.821660252
   1309 debugShowCubicLineIntersection wtTs[0]=0.467845317 {{0,4}, {2,3}, {2,0}, {4,2}} {{1.9034029684653309,1.9999999999999998}} wnTs[0]=0.365532 {{3,2}, {0,2}}
   1310 debugShowCubicLineIntersection no intersect {{0,2}, {2,4}, {4,0}, {3,2}} {{4,2}, {0,4}}
   1311 debugShowLineIntersection no intersect {{4,2}, {0,4}} {{3,2}, {0,2}}
   1312 debugShowCubicIntersection no self intersect {{0,2}, {2,4}, {4,0}, {3,2}}
   1313 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {2,4}, {4,0}, {3,2}} {{0,2}} wtTs[1]=0.5 {{2.625,2}} wtTs[2]=1 {{3,2}} wnTs[0]=1 {{3,2}, {0,2}} wnTs[1]=0.125 wnTs[2]=0
   1314 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
   1315 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
   1316 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
   1317 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.856247521 (3.24959135,1.42666245) tEnd=0.859816875 other=1 otherT=0.768795564 otherIndex=3 windSum=? windValue=1 oppValue=0
   1318 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=? windValue=1 oppValue=0
   1319 debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1320 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1321 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=? windValue=1 oppValue=0
   1322 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.5 (2.625,2) tEnd=0.768795564 other=2 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
   1323 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=? windValue=1 oppValue=0
   1324 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.821660252 (3.26578999,1.43438745) tEnd=1 other=3 otherT=0.859816875 otherIndex=4 windSum=? windValue=1 oppValue=0
   1325 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1326 debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1327 debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
   1328 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1329 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1330 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   1331 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1332 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   1333 markWinding id=3 (0,4 2,3 2,0 4,2) t=0.856247521 [3] (3.24959135,1.42666245) tEnd=0.859816875 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1334 markWinding id=3 (0,4 2,3 2,0 4,2) t=0.856247521 [3] (3.24959135,1.42666245) tEnd=0.859816875 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1335 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1336 markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.856247521 [3] (3.24959135,1.42666245) tEnd=0.859816875 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1337 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   1338 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1339 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   1340 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1341 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   1342 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1343 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   1344 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   1345 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1346 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   1347 markWinding id=1 (0,2 2,4 4,0 3,2) t=0.821660252 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1348 markWinding id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0.125 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1349 markWinding id=3 (0,4 2,3 2,0 4,2) t=0.859816875 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1350 markWinding id=4 (4,2 0,4) t=0 [0] (4,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1351 markWinding id=3 (0,4 2,3 2,0 4,2) t=0 [0] (0,4) tEnd=0.341662805 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1352 markWinding id=1 (0,2 2,4 4,0 3,2) t=0.768795564 [3] (3.24959135,1.42666245) tEnd=0.821660252 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1353 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1354 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
   1355 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
   1356 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1357 debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   1358 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1359 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=? windValue=1 oppValue=0
   1360 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.5 (2.625,2) tEnd=0.768795564 other=2 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
   1361 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=1 windValue=1 oppValue=0
   1362 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.821660252 (3.26578999,1.43438745) tEnd=1 other=3 otherT=0.859816875 otherIndex=4 windSum=1 windValue=1 oppValue=0
   1363 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=1 windValue=1 oppValue=0
   1364 debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1365 debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
   1366 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1367 markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.821660252 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1368 markDoneBinary id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0.125 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1369 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
   1370 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.768795564 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1371 debugShowSort [1] {{3,2}, {0,2}} tStart=0.125 tEnd=0.365532344 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1372 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.260340927 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1373 debugShowSort [3] {{3,2}, {0,2}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
   1374 findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
   1375 debugShowSort [3] {{3,2}, {0,2}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   1376 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.768795564 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   1377 debugShowSort [1] {{3,2}, {0,2}} tStart=0.125 tEnd=0.365532344 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
   1378 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.260340927 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   1379 markWinding id=1 (0,2 2,4 4,0 3,2) t=0.5 [2] (2.625,2) tEnd=0.768795564 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1380 markWinding id=2 (3,2 0,2) t=0.125 [1] (2.625,2) tEnd=0.365532344 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
   1381 markWinding id=1 (0,2 2,4 4,0 3,2) t=0.260340927 [1] (1.50910997,2.5537951) tEnd=0.5 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
   1382 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1383 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
   1384 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
   1385 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1386 debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   1387 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1388 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
   1389 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.5 (2.625,2) tEnd=0.768795564 other=2 otherT=0.125 otherIndex=1 windSum=1 windValue=1 oppValue=0
   1390 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=1 windValue=1 oppValue=0
   1391 debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=2 windValue=1 oppValue=0
   1392 debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
   1393 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1394 markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.5 [2] (2.625,2) tEnd=0.768795564 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1395 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1396 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
   1397 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
   1398 debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1399 debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   1400 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1401 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
   1402 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=1 windValue=1 oppValue=0
   1403 debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=2 windValue=1 oppValue=0
   1404 debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
   1405 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   1406 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   1407 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   1408 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   1409 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   1410 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
   1411 findNextOp firstIndex=[0] sign=1
   1412 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1413 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1414 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1415 markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.768795564 [3] (3.24959135,1.42666245) tEnd=0.821660252 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1416 findNextOp from:[1] to:[3] start=4 end=5
   1417 bridgeOp current id=1 from=(3.24959135,1.42666245) to=(3.26578999,1.43438745)
   1418 path.moveTo(3.24959135,1.42666245);
   1419 path.cubicTo(3.26158428,1.4196322, 3.26713157,1.42161608, 3.26578999,1.43438745);
   1420 findNextOp simple
   1421 markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.859816875 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1422 bridgeOp current id=3 from=(3.26578999,1.43438745) to=(4,2)
   1423 path.cubicTo(3.47857022,1.53752398, 3.71963382,1.71963382, 4,2);
   1424 findNextOp simple
   1425 markDoneBinary id=4 (4,2 0,4) t=0 [0] (4,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1426 bridgeOp current id=4 from=(4,2) to=(0,4)
   1427 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
   1428 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.341662805 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1429 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.260340927 tEnd=0.5 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=0 tiny=0 opp=1
   1430 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.341662805 tEnd=0.467845317 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1431 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.260340927 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=1
   1432 findNextOp firstIndex=[3] sign=1
   1433 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1434 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1435 markWinding id=3 (0,4 2,3 2,0 4,2) t=0.341662805 [1] (1.50910997,2.5537951) tEnd=0.467845317 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
   1436 findNextOp chase.append id=3
   1437 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1438 markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0 [0] (0,2) tEnd=0.260340927 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1439 markDoneBinary id=2 (3,2 0,2) t=0.365532344 [2] (1.90340292,2) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1440 findNextOp chase.append id=2
   1441 markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0 [0] (0,4) tEnd=0.341662805 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1442 findNextOp from:[3] to:[3] start=1 end=2
   1443 bridgeOp current id=3 from=(0,4) to=(1.50910997,2.5537951)
   1444 path.lineTo(0,4);
   1445 path.cubicTo(0.683325648,3.65833712, 1.13318419,3.08320737, 1.50910997,2.5537951);
   1446 findNextOp debugShowSort contourWinding=0 oppContourWinding=2 sign=1
   1447 debugShowSort [2] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.467845317 tEnd=0.341662805 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1448 debugShowSort [3] {{3,2}, {0,2}} tStart=0.365532344 tEnd=0.125 sign=1 windValue=1 windSum=2 2->1 (max=2) done=0 tiny=0 opp=1
   1449 debugShowSort [0] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.467845317 tEnd=0.856247521 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1450 debugShowSort [1] {{3,2}, {0,2}} tStart=0.365532344 tEnd=1 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
   1451 findNextOp firstIndex=[2] sign=1
   1452 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1453 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1454 markWinding id=3 (0,4 2,3 2,0 4,2) t=0.467845317 [2] (1.90340292,2) tEnd=0.856247521 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1455 findNextOp chase.append id=3
   1456 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1457 markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.341662805 [1] (1.50910997,2.5537951) tEnd=0.467845317 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
   1458 findNextOp from:[3] to:[3] start=2 end=3
   1459 bridgeOp current id=3 from=(1.50910997,2.5537951) to=(1.90340292,2)
   1460 path.cubicTo(1.64794636,2.35827327, 1.77669871,2.16898704, 1.90340292,2);
   1461 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
   1462 debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.856247521 tEnd=0.467845317 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1463 debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.768795564 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   1464 debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.856247521 tEnd=0.859816875 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1465 debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.768795564 tEnd=0.821660252 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   1466 findNextOp firstIndex=[1] sign=1
   1467 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1468 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1469 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   1470 markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.467845317 [2] (1.90340292,2) tEnd=0.856247521 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1471 findNextOp from:[3] to:[1] start=3 end=4
   1472 bridgeOp current id=3 from=(1.90340292,2) to=(3.24959135,1.42666245)
   1473 path.cubicTo(2.29341149,1.47984147, 2.66401696,1.15201211, 3.24959135,1.42666245);
   1474 path.close();
   1475 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
   1476 debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=2 windValue=1 oppValue=0
   1477 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1478 markDoneBinary id=2 (3,2 0,2) t=0.125 [1] (2.625,2) tEnd=0.365532344 newWindSum=2 newOppSum=-1 oppSum=-1 windSum=2 windValue=1
   1479 debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
   1480 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1481 markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.260340927 [1] (1.50910997,2.5537951) tEnd=0.5 newWindSum=2 newOppSum=-1 oppSum=-1 windSum=2 windValue=1
   1482 </div>
   1483 
   1484 <div id="cubicOp46d">
   1485   SimplifyNew_Test [cubicOp46d]
   1486 {{0,2}, {3,5}, {5,0}, {4,2}},
   1487 {{4,2}, {0,2}},
   1488 op difference
   1489 {{0,5}, {2,4}, {2,0}, {5,3}},
   1490 {{5,3}, {0,5}},
   1491 debugShowCubicIntersection no self intersect {{0,2}, {3,5}, {5,0}, {4,2}}
   1492 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {3,5}, {5,0}, {4,2}} {{0,2}} wtTs[1]=0.6 {{3.887999999999999,2.0000000000000013}} wtTs[2]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,2}} wnTs[1]=0.028 wnTs[2]=0
   1493 debugShowCubicIntersection wtTs[0]=0.215060475 {{0,2}, {3,5}, {5,0}, {4,2}} {{1.7768977226209808,2.9747215410507057}} wtTs[1]=0.578517386 {{3.8153702411617676,2.0785732044555085}} wnTs[0]=0.404694 {{0,5}, {2,4}, {2,0}, {5,3}} wnTs[1]=0.846938928
   1494 debugShowCubicLineIntersection wtTs[0]=0.64696132 {{0,5}, {2,4}, {2,0}, {5,3}} {{2.7243714728959709,2}} wtTs[1]=0.819132784 {{3.6370281018311013,1.9999999999999996}} wnTs[0]=0.318907 {{4,2}, {0,2}} wnTs[1]=0.0907429745
   1495 debugShowCubicIntersection no self intersect {{0,5}, {2,4}, {2,0}, {5,3}}
   1496 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {2,4}, {2,0}, {5,3}} {{0,5}} wtTs[1]=1 {{5,3}} wnTs[0]=1 {{5,3}, {0,5}} wnTs[1]=0
   1497 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0 (0,2) tEnd=0.215060475 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1498 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.215060475 (1.77689767,2.97472143) tEnd=0.578517386 other=3 otherT=0.404693629 otherIndex=1 windSum=? windValue=1 oppValue=0
   1499 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.578517386 (3.81537032,2.07857323) tEnd=0.6 other=3 otherT=0.846938928 otherIndex=4 windSum=? windValue=1 oppValue=0
   1500 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.6 (3.88800001,2) tEnd=1 other=2 otherT=0.028 otherIndex=1 windSum=? windValue=1 oppValue=0
   1501 debugShowActiveSpans id=2 (4,2 0,2) t=0 (4,2) tEnd=0.028 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1502 debugShowActiveSpans id=2 (4,2 0,2) t=0.028 (3.88800001,2) tEnd=0.0907429745 other=1 otherT=0.6 otherIndex=3 windSum=? windValue=1 oppValue=0
   1503 debugShowActiveSpans id=2 (4,2 0,2) t=0.0907429745 (3.63702822,2) tEnd=0.318907132 other=3 otherT=0.819132784 otherIndex=3 windSum=? windValue=1 oppValue=0
   1504 debugShowActiveSpans id=2 (4,2 0,2) t=0.318907132 (2.72437143,2) tEnd=1 other=3 otherT=0.64696132 otherIndex=2 windSum=? windValue=1 oppValue=0
   1505 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0 (0,5) tEnd=0.404693629 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
   1506 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.404693629 (1.77689767,2.97472143) tEnd=0.64696132 other=1 otherT=0.215060475 otherIndex=1 windSum=? windValue=1 oppValue=0
   1507 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.64696132 (2.72437143,2) tEnd=0.819132784 other=2 otherT=0.318907132 otherIndex=3 windSum=? windValue=1 oppValue=0
   1508 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.819132784 (3.63702822,2) tEnd=0.846938928 other=2 otherT=0.0907429745 otherIndex=2 windSum=? windValue=1 oppValue=0
   1509 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.846938928 (3.81537032,2.07857323) tEnd=1 other=1 otherT=0.578517386 otherIndex=2 windSum=? windValue=1 oppValue=0
   1510 debugShowActiveSpans id=4 (5,3 0,5) t=0 (5,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1511 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1512 debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=1 tEnd=0.6 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1513 debugShowSort [1] {{4,2}, {0,2}} tStart=0 tEnd=0.028 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1514 findTop swap
   1515 markWinding id=1 (0,2 3,5 5,0 4,2) t=0.6 [3] (3.88800001,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1516 markWinding id=1 (0,2 3,5 5,0 4,2) t=0.6 [3] (3.88800001,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1517 markWinding id=2 (4,2 0,2) t=0 [0] (4,2) tEnd=0.028 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1518 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1519 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1520 debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.6 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   1521 debugShowSort [1] {{4,2}, {0,2}} tStart=0.028 tEnd=0.0907429745 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
   1522 debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.6 tEnd=0.578517386 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   1523 debugShowSort [3] {{4,2}, {0,2}} tStart=0.028 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   1524 findNextOp firstIndex=[0] sign=-1
   1525 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1526 markDoneBinary id=2 (4,2 0,2) t=0.028 [1] (3.88800001,2) tEnd=0.0907429745 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1527 findNextOp chase.append id=2
   1528 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1529 markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0.578517386 [2] (3.81537032,2.07857323) tEnd=0.6 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1530 findNextOp chase.append id=1
   1531 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1532 markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0.6 [3] (3.88800001,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1533 findNextOp from:[1] to:[2] start=1 end=0
   1534 bridgeOp current id=1 from=(4,2) to=(3.88800001,2)
   1535 path.moveTo(4,2);
   1536 path.cubicTo(4.4000001,1.20000005, 4.32000017,1.51999998, 3.88800001,2);
   1537 findNextOp simple
   1538 markDoneBinary id=2 (4,2 0,2) t=0 [0] (4,2) tEnd=0.028 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1539 bridgeOp current id=2 from=(3.88800001,2) to=(4,2)
   1540 path.lineTo(4,2);
   1541 path.close();
   1542 findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=-1
   1543 debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.6 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=0
   1544 debugShowSort [1] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=0.819132784 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1545 debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.215060475 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   1546 debugShowSort [3] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1547 findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=-1
   1548 debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.6 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=0
   1549 debugShowSort [1] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=0.819132784 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1550 debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.215060475 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   1551 debugShowSort [3] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1552 markWinding id=3 (0,5 2,4 2,0 5,3) t=0.819132784 [3] (3.63702822,2) tEnd=0.846938928 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
   1553 markWinding id=1 (0,2 3,5 5,0 4,2) t=0.215060475 [1] (1.77689767,2.97472143) tEnd=0.578517386 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
   1554 markWinding id=3 (0,5 2,4 2,0 5,3) t=0.846938928 [4] (3.81537032,2.07857323) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1555 markWinding id=4 (5,3 0,5) t=0 [0] (5,3) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1556 markWinding id=3 (0,5 2,4 2,0 5,3) t=0 [0] (0,5) tEnd=0.404693629 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1557 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0 (0,2) tEnd=0.215060475 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1558 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.215060475 (1.77689767,2.97472143) tEnd=0.578517386 other=3 otherT=0.404693629 otherIndex=1 windSum=2 windValue=1 oppValue=0
   1559 debugShowActiveSpans id=2 (4,2 0,2) t=0.0907429745 (3.63702822,2) tEnd=0.318907132 other=3 otherT=0.819132784 otherIndex=3 windSum=? windValue=1 oppValue=0
   1560 debugShowActiveSpans id=2 (4,2 0,2) t=0.318907132 (2.72437143,2) tEnd=1 other=3 otherT=0.64696132 otherIndex=2 windSum=? windValue=1 oppValue=0
   1561 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0 (0,5) tEnd=0.404693629 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1562 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.404693629 (1.77689767,2.97472143) tEnd=0.64696132 other=1 otherT=0.215060475 otherIndex=1 windSum=? windValue=1 oppValue=0
   1563 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.64696132 (2.72437143,2) tEnd=0.819132784 other=2 otherT=0.318907132 otherIndex=3 windSum=? windValue=1 oppValue=0
   1564 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.819132784 (3.63702822,2) tEnd=0.846938928 other=2 otherT=0.0907429745 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   1565 debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.846938928 (3.81537032,2.07857323) tEnd=1 other=1 otherT=0.578517386 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   1566 debugShowActiveSpans id=4 (5,3 0,5) t=0 (5,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   1567 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1568 findNextOp debugShowSort contourWinding=-1 oppContourWinding=2 sign=-1
   1569 debugShowSort [2] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.819132784 tEnd=0.846938928 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1570 debugShowSort [3] {{4,2}, {0,2}} tStart=0.0907429745 tEnd=0.028 sign=1 windValue=1 windSum=2 2->1 (max=2) done=1 tiny=0 opp=1
   1571 debugShowSort [0] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.819132784 tEnd=0.64696132 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1572 debugShowSort [1] {{4,2}, {0,2}} tStart=0.0907429745 tEnd=0.318907132 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
   1573 findNextOp firstIndex=[2] sign=-1
   1574 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1575 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1576 markWinding id=3 (0,5 2,4 2,0 5,3) t=0.64696132 [2] (2.72437143,2) tEnd=0.819132784 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1577 findNextOp chase.append id=3
   1578 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1579 markDoneBinary id=2 (4,2 0,2) t=0.0907429745 [2] (3.63702822,2) tEnd=0.318907132 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
   1580 findNextOp chase.append id=2
   1581 markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.819132784 [3] (3.63702822,2) tEnd=0.846938928 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
   1582 findNextOp from:[3] to:[3] start=3 end=2
   1583 bridgeOp current id=3 from=(3.81537032,2.07857323) to=(3.63702822,2)
   1584 path.moveTo(3.81537032,2.07857323);
   1585 path.cubicTo(3.75423074,2.04822493, 3.69481921,2.02210546, 3.63702822,2);
   1586 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1587 debugShowSort [0] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.64696132 tEnd=0.819132784 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1588 debugShowSort [1] {{4,2}, {0,2}} tStart=0.318907132 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
   1589 debugShowSort [2] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.64696132 tEnd=0.404693629 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1590 debugShowSort [3] {{4,2}, {0,2}} tStart=0.318907132 tEnd=0.0907429745 sign=1 windValue=1 windSum=2 2->1 (max=2) done=1 tiny=0 opp=1
   1591 findNextOp firstIndex=[0] sign=-1
   1592 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1593 markDoneBinary id=2 (4,2 0,2) t=0.318907132 [3] (2.72437143,2) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1594 markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0 [0] (0,2) tEnd=0.215060475 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1595 findNextOp chase.append id=1
   1596 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1597 markWinding id=3 (0,5 2,4 2,0 5,3) t=0.404693629 [1] (1.77689767,2.97472143) tEnd=0.64696132 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
   1598 findNextOp chase.append id=3
   1599 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1600 markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.64696132 [2] (2.72437143,2) tEnd=0.819132784 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1601 findNextOp from:[3] to:[3] start=2 end=1
   1602 bridgeOp current id=3 from=(3.63702822,2) to=(2.72437143,2)
   1603 path.cubicTo(3.2791934,1.86312568, 2.98348093,1.88013792, 2.72437143,2);
   1604 findNextOp debugShowSort contourWinding=-1 oppContourWinding=2 sign=-1
   1605 debugShowSort [0] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.404693629 tEnd=0.64696132 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1606 debugShowSort [1] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.215060475 tEnd=0 sign=1 windValue=1 windSum=2 2->1 (max=2) done=1 tiny=0 opp=1
   1607 debugShowSort [2] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.404693629 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1608 debugShowSort [3] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.215060475 tEnd=0.578517386 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=0 tiny=0 opp=1
   1609 findNextOp firstIndex=[0] sign=-1
   1610 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1611 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1612 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1613 markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.404693629 [1] (1.77689767,2.97472143) tEnd=0.64696132 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
   1614 findNextOp from:[3] to:[3] start=1 end=0
   1615 bridgeOp current id=3 from=(2.72437143,2) to=(1.77689767,2.97472143)
   1616 path.cubicTo(2.35977101,2.16866159, 2.06764531,2.54096746, 1.77689767,2.97472143);
   1617 findNextOp simple
   1618 markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0 [0] (0,5) tEnd=0.404693629 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1619 bridgeOp current id=3 from=(1.77689767,2.97472143) to=(0,5)
   1620 path.cubicTo(1.29122055,3.69928193, 0.809387267,4.5953064, 0,5);
   1621 findNextOp simple
   1622 markDoneBinary id=4 (5,3 0,5) t=0 [0] (5,3) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1623 bridgeOp current id=4 from=(0,5) to=(5,3)
   1624 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1625 debugShowSort [3] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1626 debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.6 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
   1627 debugShowSort [1] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=0.819132784 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   1628 debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.215060475 sign=1 windValue=1 windSum=2 2->1 (max=2) done=0 tiny=0 opp=1
   1629 findNextOp firstIndex=[3] sign=-1
   1630 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1631 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1632 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1633 markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.846938928 [4] (3.81537032,2.07857323) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1634 findNextOp from:[3] to:[3] start=4 end=3
   1635 bridgeOp current id=3 from=(5,3) to=(3.81537032,2.07857323)
   1636 path.lineTo(5,3);
   1637 path.cubicTo(4.54081678,2.54081678, 4.1519165,2.2456274, 3.81537032,2.07857323);
   1638 path.close();
   1639 debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.215060475 (1.77689767,2.97472143) tEnd=0.578517386 other=3 otherT=0.404693629 otherIndex=1 windSum=2 windValue=1 oppValue=0
   1640 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1641 markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0.215060475 [1] (1.77689767,2.97472143) tEnd=0.578517386 newWindSum=2 newOppSum=-1 oppSum=-1 windSum=2 windValue=1
   1642 assemble
   1643 assemble contour    start=(4,2) end=(4,2)
   1644 </div>
   1645 
   1646 <div id="cubicOp46da">
   1647   {{0,2}, {3,5}, {5,0}, {4,2}},
   1648 
   1649   {{0,2}, {1.1328125,3.06640625}, {2.03125,2.984375}},
   1650   {{2.03125,2.984375}, {2.9296875,2.90234375}, {3.5,2.375}},
   1651   {{3.5,2.375}, {4.0703125,1.84765625}, {4.21875,1.578125}},
   1652   {{4.21875,1.578125}, {4.3671875,1.30859375}, {4,2}},
   1653 </div>
   1654 
   1655 <div id="cubicOp46db">
   1656 {{x = 3, y = 4}, {x = 4.0000000000000009, y = 6}, {x = 0.99999999999999845, y = 7.894919286223335e-16}, {x = 6, y = 2}}
   1657 </div>
   1658 
   1659 <div id="cubicOp47d">
   1660   SimplifyNew_Test [cubicOp47d]
   1661 {{0,1}, {1,6}, {6,2}, {5,4}},
   1662 {{5,4}, {0,1}},
   1663 op difference
   1664 {{2,6}, {4,5}, {1,0}, {6,1}},
   1665 {{6,1}, {2,6}},
   1666 debugShowCubicIntersection no self intersect {{2,6}, {4,5}, {1,0}, {6,1}}
   1667 debugShowCubicLineIntersection wtTs[0]=0 {{2,6}, {4,5}, {1,0}, {6,1}} {{2,6}} wtTs[1]=0.171428571 {{2.6532478134110784,5.1834402332361513}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {2,6}} wnTs[1]=0.836688047 wnTs[2]=0
   1668 debugShowCubicIntersection no intersect {{2,6}, {4,5}, {1,0}, {6,1}} {{0,1}, {1,6}, {6,2}, {5,4}}
   1669 debugShowCubicLineIntersection wtTs[0]=0.503145036 {{2,6}, {4,5}, {1,0}, {6,1}} {{2.8774036920020918,2.7264422152012551}} wnTs[0]=0.424519 {{5,4}, {0,1}}
   1670 debugShowCubicLineIntersection wtTs[0]=0.604274731 {{0,1}, {1,6}, {6,2}, {5,4}} {{3.9881028045490883,3.5148714943136397}} wnTs[0]=0.502974 {{6,1}, {2,6}}
   1671 debugShowLineIntersection wtTs[0]=0.486486486 {{6,1}, {2,6}} {{4.0540540540540535,3.4324324324324329}} wnTs[0]=0.189189 {{5,4}, {0,1}}
   1672 debugShowCubicIntersection no self intersect {{0,1}, {1,6}, {6,2}, {5,4}}
   1673 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,6}, {6,2}, {5,4}} {{0,1}} wtTs[1]=0.628571429 {{4.1434402332361522,3.486064139941691}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {0,1}} wnTs[1]=0.171311953 wnTs[2]=0
   1674 debugShowActiveSpans id=3 (2,6 4,5 1,0 6,1) t=0 (2,6) tEnd=0.171428571 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1675 debugShowActiveSpans id=3 (2,6 4,5 1,0 6,1) t=0.171428571 (2.65324783,5.18344021) tEnd=0.503145036 other=4 otherT=0.836688047 otherIndex=3 windSum=? windValue=1 oppValue=0
   1676 debugShowActiveSpans id=3 (2,6 4,5 1,0 6,1) t=0.503145036 (2.87740374,2.7264421) tEnd=1 other=2 otherT=0.424519262 otherIndex=3 windSum=? windValue=1 oppValue=0
   1677 debugShowActiveSpans id=4 (6,1 2,6) t=0 (6,1) tEnd=0.486486486 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1678 debugShowActiveSpans id=4 (6,1 2,6) t=0.486486486 (4.05405426,3.43243241) tEnd=0.502974299 other=2 otherT=0.189189189 otherIndex=2 windSum=? windValue=1 oppValue=0
   1679 debugShowActiveSpans id=4 (6,1 2,6) t=0.502974299 (3.98810291,3.5148716) tEnd=0.836688047 other=1 otherT=0.604274731 otherIndex=1 windSum=? windValue=1 oppValue=0
   1680 debugShowActiveSpans id=4 (6,1 2,6) t=0.836688047 (2.65324783,5.18344021) tEnd=1 other=3 otherT=0.171428571 otherIndex=1 windSum=? windValue=1 oppValue=0
   1681 debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0 (0,1) tEnd=0.604274731 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1682 debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.604274731 (3.98810291,3.5148716) tEnd=0.628571429 other=4 otherT=0.502974299 otherIndex=2 windSum=? windValue=1 oppValue=0
   1683 debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.628571429 (4.14344025,3.4860642) tEnd=1 other=2 otherT=0.171311953 otherIndex=1 windSum=? windValue=1 oppValue=0
   1684 debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.171311953 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1685 debugShowActiveSpans id=2 (5,4 0,1) t=0.171311953 (4.14344025,3.4860642) tEnd=0.189189189 other=1 otherT=0.628571429 otherIndex=2 windSum=? windValue=1 oppValue=0
   1686 debugShowActiveSpans id=2 (5,4 0,1) t=0.189189189 (4.05405426,3.43243241) tEnd=0.424519262 other=4 otherT=0.486486486 otherIndex=1 windSum=? windValue=1 oppValue=0
   1687 debugShowActiveSpans id=2 (5,4 0,1) t=0.424519262 (2.87740374,2.7264421) tEnd=1 other=3 otherT=0.503145036 otherIndex=2 windSum=? windValue=1 oppValue=0
   1688 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1689 debugShowSort [0] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0 tEnd=0.604274731 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   1690 debugShowSort [1] {{5,4}, {0,1}} tStart=1 tEnd=0.424519262 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1691 markWinding id=1 (0,1 1,6 6,2 5,4) t=0 [0] (0,1) tEnd=0.604274731 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1692 markWinding id=2 (5,4 0,1) t=0.424519262 [3] (2.87740374,2.7264421) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1693 markWinding id=1 (0,1 1,6 6,2 5,4) t=0 [0] (0,1) tEnd=0.604274731 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1694 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   1695 findNextOp simple
   1696 markDoneBinary id=1 (0,1 1,6 6,2 5,4) t=0 [0] (0,1) tEnd=0.604274731 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1697 bridgeOp current id=1 from=(3.98810291,3.5148716) to=(0,1)
   1698 path.moveTo(3.98810291,3.5148716);
   1699 path.cubicTo(2.66914129,3.75641561, 0.60427475,4.02137375, 0,1);
   1700 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   1701 debugShowSort [1] {{5,4}, {0,1}} tStart=0.424519262 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   1702 debugShowSort [2] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.503145036 tEnd=0.171428571 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   1703 debugShowSort [3] {{5,4}, {0,1}} tStart=0.424519262 tEnd=0.189189189 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1704 debugShowSort [0] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.503145036 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   1705 findNextOp firstIndex=[1] sign=-1
   1706 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1707 markWinding id=3 (2,6 4,5 1,0 6,1) t=0.171428571 [1] (2.65324783,5.18344021) tEnd=0.503145036 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1708 findNextOp chase.append id=3
   1709 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1710 markDoneBinary id=2 (5,4 0,1) t=0.189189189 [2] (4.05405426,3.43243241) tEnd=0.424519262 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1711 findNextOp chase.append id=2
   1712 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1713 markDoneBinary id=3 (2,6 4,5 1,0 6,1) t=0.503145036 [2] (2.87740374,2.7264421) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1714 markDoneBinary id=4 (6,1 2,6) t=0 [0] (6,1) tEnd=0.486486486 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1715 findNextOp chase.append id=4
   1716 markDoneBinary id=2 (5,4 0,1) t=0.424519262 [3] (2.87740374,2.7264421) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1717 findNextOp from:[2] to:[3] start=2 end=1
   1718 bridgeOp current id=2 from=(0,1) to=(2.87740374,2.7264421)
   1719 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1720 debugShowSort [1] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0.503145036 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1721 debugShowSort [2] {{6,1}, {2,6}} tStart=0.836688047 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   1722 debugShowSort [3] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   1723 debugShowSort [0] {{6,1}, {2,6}} tStart=0.836688047 tEnd=0.502974299 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1724 findNextOp firstIndex=[1] sign=-1
   1725 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1726 markWinding id=4 (6,1 2,6) t=0.836688047 [3] (2.65324783,5.18344021) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   1727 markWinding id=3 (2,6 4,5 1,0 6,1) t=0 [0] (2,6) tEnd=0.171428571 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   1728 findNextOp chase.append id=3
   1729 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1730 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1731 markWinding id=4 (6,1 2,6) t=0.502974299 [2] (3.98810291,3.5148716) tEnd=0.836688047 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1732 findNextOp chase.append id=4
   1733 markDoneBinary id=3 (2,6 4,5 1,0 6,1) t=0.171428571 [1] (2.65324783,5.18344021) tEnd=0.503145036 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1734 findNextOp from:[3] to:[4] start=3 end=4
   1735 bridgeOp current id=3 from=(2.87740374,2.7264421) to=(2.65324783,5.18344021)
   1736 path.lineTo(2.87740374,2.7264421);
   1737 path.cubicTo(2.7913022,3.55361414, 2.87475324,4.49428225, 2.65324783,5.18344021);
   1738 findNextOp simple
   1739 markDoneBinary id=4 (6,1 2,6) t=0.836688047 [3] (2.65324783,5.18344021) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   1740 bridgeOp current id=4 from=(2.65324783,5.18344021) to=(2,6)
   1741 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
   1742 debugShowSort [3] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   1743 debugShowSort [0] {{6,1}, {2,6}} tStart=0.836688047 tEnd=0.502974299 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1744 debugShowSort [1] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0.503145036 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1745 debugShowSort [2] {{6,1}, {2,6}} tStart=0.836688047 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   1746 findNextOp firstIndex=[3] sign=1
   1747 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1748 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1749 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1750 markDoneBinary id=3 (2,6 4,5 1,0 6,1) t=0 [0] (2,6) tEnd=0.171428571 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   1751 findNextOp from:[3] to:[4] start=3 end=2
   1752 bridgeOp current id=3 from=(2,6) to=(2.65324783,5.18344021)
   1753 path.lineTo(2,6);
   1754 path.cubicTo(2.34285712,5.82857132, 2.53877544,5.53959179, 2.65324783,5.18344021);
   1755 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   1756 debugShowSort [3] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.836688047 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   1757 debugShowSort [0] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0.628571429 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
   1758 debugShowSort [1] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.486486486 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1759 debugShowSort [2] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
   1760 findNextOp firstIndex=[3] sign=-1
   1761 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1762 markDoneBinary id=1 (0,1 1,6 6,2 5,4) t=0.604274731 [1] (3.98810291,3.5148716) tEnd=0.628571429 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   1763 findNextOp chase.append id=1
   1764 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   1765 markWinding id=4 (6,1 2,6) t=0.486486486 [1] (4.05405426,3.43243241) tEnd=0.502974299 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
   1766 findNextOp chase.append id=4
   1767 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1768 markDoneBinary id=4 (6,1 2,6) t=0.502974299 [2] (3.98810291,3.5148716) tEnd=0.836688047 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1769 findNextOp from:[4] to:[4] start=2 end=1
   1770 bridgeOp current id=4 from=(2.65324783,5.18344021) to=(3.98810291,3.5148716)
   1771 path.lineTo(3.98810291,3.5148716);
   1772 path.close();
   1773 debugShowActiveSpans id=4 (6,1 2,6) t=0.486486486 (4.05405426,3.43243241) tEnd=0.502974299 other=2 otherT=0.189189189 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   1774 debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.628571429 (4.14344025,3.4860642) tEnd=1 other=2 otherT=0.171311953 otherIndex=1 windSum=? windValue=1 oppValue=0
   1775 debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.171311953 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1776 debugShowActiveSpans id=2 (5,4 0,1) t=0.171311953 (4.14344025,3.4860642) tEnd=0.189189189 other=1 otherT=0.628571429 otherIndex=2 windSum=? windValue=1 oppValue=0
   1777 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1778 findNextOp debugShowSort contourWinding=0 oppContourWinding=2 sign=1
   1779 debugShowSort [1] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.486486486 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1780 debugShowSort [2] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
   1781 debugShowSort [3] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.836688047 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1782 debugShowSort [0] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0.628571429 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
   1783 findNextOp firstIndex=[1] sign=1
   1784 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1785 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1786 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1787 markDoneBinary id=4 (6,1 2,6) t=0.486486486 [1] (4.05405426,3.43243241) tEnd=0.502974299 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
   1788 findNextOp from:[4] to:[4] start=2 end=3
   1789 bridgeOp current id=4 from=(4.05405426,3.43243241) to=(3.98810291,3.5148716)
   1790 debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.628571429 (4.14344025,3.4860642) tEnd=1 other=2 otherT=0.171311953 otherIndex=1 windSum=? windValue=1 oppValue=0
   1791 debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.171311953 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1792 debugShowActiveSpans id=2 (5,4 0,1) t=0.171311953 (4.14344025,3.4860642) tEnd=0.189189189 other=1 otherT=0.628571429 otherIndex=2 windSum=? windValue=1 oppValue=0
   1793 </div>
   1794 
   1795 <div id="cubicOp47da">
   1796 computed quadratics given
   1797   {{2,6}, {4,5}, {1,0}, {6,1}},
   1798   {{0,1}, {1,6}, {6,2}, {5,4}},
   1799 computed quadratics set 1
   1800   {{2,6}, {2.2404737,5.87759298}, {2.39345162,5.68487367}},
   1801   {{2.39345162,5.68487367}, {2.67348969,5.31541246}, {2.74792918,4.77711896}},
   1802   {{2.74792918,4.77711896}, {2.82236867,4.23882547}, {2.82848144,3.63729341}},
   1803   {{2.82848144,3.63729341}, {2.83027876,3.57616472}, {2.83215462,3.51498289}},
   1804   {{2.83215462,3.51498289}, {2.78850872,2.32758859}, {3.26769775,1.50382966}},
   1805   {{3.26769775,1.50382966}, {3.55499101,1.08453908}, {4.20162956,0.930553195}},
   1806   {{4.20162956,0.930553195}, {4.84826812,0.776567313}, {6,1}},
   1807 computed quadratics set 2
   1808   {{0,1}, {0.337189878,2.53658624}, {1.06305813,3.09524088}},
   1809   {{1.06305813,3.09524088}, {1.78892639,3.65389552}, {2.62772567,3.64823958}},
   1810   {{2.62772567,3.64823958}, {3.46652495,3.64258364}, {4.1425079,3.48623815}},
   1811   {{4.1425079,3.48623815}, {4.88772835,3.3075243}, {5.09137748,3.46764237}},
   1812   {{5.09137748,3.46764237}, {5.20611277,3.58418013}, {5,4}},
   1813 </div>
   1814 
   1815 <div id="cubicOp47db">
   1816   {{2.74792918,4.77711896}, {2.82236867,4.23882547}, {2.82848144,3.63729341}},
   1817   {{2.62772567,3.64823958}, {3.46652495,3.64258364}, {4.1425079,3.48623815}},
   1818 </div>
   1819 
   1820 <div id="cubicOp48d">
   1821   SimplifyNew_Test [cubicOp48d]
   1822 {{0,2}, {2,3}, {5,1}, {3,2}},
   1823 {{3,2}, {0,2}},
   1824 op difference
   1825 {{1,5}, {2,3}, {2,0}, {3,2}},
   1826 {{3,2}, {1,5}},
   1827 debugShowCubicIntersection no self intersect {{1,5}, {2,3}, {2,0}, {3,2}}
   1828 debugShowCubicLineIntersection wtTs[0]=0 {{1,5}, {2,3}, {2,0}, {3,2}} {{1,5}} wtTs[1]=1 {{3,2}} wnTs[0]=1 {{3,2}, {1,5}} wnTs[1]=0
   1829 debugShowCubicIntersection wtTs[0]=0.447821962 {{1,5}, {2,3}, {2,0}, {3,2}} {{1.921448828321461,2.2502841146969206}} wtTs[1]=1 {{3,2}} wnTs[0]=0.302178 {{0,2}, {2,3}, {5,1}, {3,2}} wnTs[1]=1
   1830 debugShowCubicLineIntersection wtTs[0]=0.5 {{1,5}, {2,3}, {2,0}, {3,2}} {{2,2}} wtTs[1]=1 {{3,2}} wnTs[0]=0.333333 {{3,2}, {0,2}} wnTs[1]=0
   1831 debugShowCubicLineIntersection wtTs[0]=0.5 {{0,2}, {2,3}, {5,1}, {3,2}} {{3,2}} wtTs[1]=1 {{3,2}} wnTs[0]=0 {{3,2}, {1,5}} wnTs[1]=0
   1832 debugShowLineIntersection wtTs[0]=0 {{3,2}, {1,5}} {{3,2}} wnTs[0]=0 {{3,2}, {0,2}}
   1833 debugShowCubicIntersection wtTs[0]=0.5 {{0,2}, {2,3}, {5,1}, {3,2}} {{3,2}} wtTs[1]=1
   1834 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {2,3}, {5,1}, {3,2}} {{0,2}} wtTs[1]=0.5 {{3,2}} wtTs[2]=1 {{3,2}} wnTs[0]=1 {{3,2}, {0,2}} wnTs[1]=0 wnTs[2]=0
   1835 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   1836 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.447821962 (1.92144883,2.25028419) tEnd=0.5 other=1 otherT=0.302178051 otherIndex=1 windSum=? windValue=1 oppValue=0
   1837 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.5 (2,2) tEnd=1 other=2 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
   1838 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   1839 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0 (0,2) tEnd=0.302178051 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1840 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.302178051 (1.92144883,2.25028419) tEnd=0.5 other=3 otherT=0.447821962 otherIndex=1 windSum=? windValue=1 oppValue=0
   1841 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   1842 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.333333333 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1843 debugShowActiveSpans id=2 (3,2 0,2) t=0.333333333 (2,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1844 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1845 debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1846 debugShowSort [2] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   1847 debugShowSort [3] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1848 debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   1849 markWinding id=3 (1,5 2,3 2,0 3,2) t=0.5 [2] (2,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   1850 markWinding id=3 (1,5 2,3 2,0 3,2) t=0.5 [2] (2,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1851 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1852 markDoneBinary id=3 (1,5 2,3 2,0 3,2) t=0.5 [2] (2,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   1853 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   1854 debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1855 debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   1856 debugShowSort [2] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   1857 debugShowSort [3] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   1858 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   1859 debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   1860 debugShowSort [2] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   1861 debugShowSort [3] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   1862 debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   1863 markWinding id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1864 markWinding id=2 (3,2 0,2) t=0 [1] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1865 markWinding id=2 (3,2 0,2) t=0 [2] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1866 markWinding id=2 (3,2 0,2) t=0 [3] (3,2) tEnd=0.333333333 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1867 markWinding id=4 (3,2 1,5) t=0 [0] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1868 markWinding id=4 (3,2 1,5) t=0 [1] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1869 markWinding id=4 (3,2 1,5) t=0 [2] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1870 markWinding id=4 (3,2 1,5) t=0 [3] (3,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1871 markWinding id=3 (1,5 2,3 2,0 3,2) t=0 [0] (1,5) tEnd=0.447821962 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1872 markWinding id=1 (0,2 2,3 5,1 3,2) t=0.5 [3] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1873 markWinding id=1 (0,2 2,3 5,1 3,2) t=0.5 [2] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1874 markWinding id=1 (0,2 2,3 5,1 3,2) t=0.5 [4] (3,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1875 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1876 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.447821962 (1.92144883,2.25028419) tEnd=0.5 other=1 otherT=0.302178051 otherIndex=1 windSum=? windValue=1 oppValue=0
   1877 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   1878 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0 (0,2) tEnd=0.302178051 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   1879 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.302178051 (1.92144883,2.25028419) tEnd=0.5 other=3 otherT=0.447821962 otherIndex=1 windSum=? windValue=1 oppValue=0
   1880 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
   1881 debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.333333333 other=3 otherT=1 otherIndex=5 windSum=1 windValue=1 oppValue=0
   1882 debugShowActiveSpans id=2 (3,2 0,2) t=0.333333333 (2,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   1883 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1884 markDoneBinary id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1885 markDoneBinary id=2 (3,2 0,2) t=0 [1] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1886 markDoneBinary id=2 (3,2 0,2) t=0 [2] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1887 markDoneBinary id=2 (3,2 0,2) t=0 [3] (3,2) tEnd=0.333333333 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   1888 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   1889 debugShowSort [0] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1890 debugShowSort [1] {{3,2}, {0,2}} tStart=0.333333333 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   1891 debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=0.447821962 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1892 debugShowSort [3] {{3,2}, {0,2}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   1893 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   1894 debugShowSort [0] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1895 debugShowSort [1] {{3,2}, {0,2}} tStart=0.333333333 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   1896 debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=0.447821962 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   1897 debugShowSort [3] {{3,2}, {0,2}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   1898 markWinding id=2 (3,2 0,2) t=0.333333333 [4] (2,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1899 markWinding id=1 (0,2 2,3 5,1 3,2) t=0 [0] (0,2) tEnd=0.302178051 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   1900 markWinding id=3 (1,5 2,3 2,0 3,2) t=0.447821962 [1] (1.92144883,2.25028419) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   1901 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1902 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.447821962 (1.92144883,2.25028419) tEnd=0.5 other=1 otherT=0.302178051 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   1903 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   1904 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0 (0,2) tEnd=0.302178051 other=2 otherT=1 otherIndex=5 windSum=1 windValue=1 oppValue=0
   1905 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.302178051 (1.92144883,2.25028419) tEnd=0.5 other=3 otherT=0.447821962 otherIndex=1 windSum=? windValue=1 oppValue=0
   1906 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
   1907 debugShowActiveSpans id=2 (3,2 0,2) t=0.333333333 (2,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
   1908 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   1909 findNextOp simple
   1910 markDoneBinary id=2 (3,2 0,2) t=0.333333333 [4] (2,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1911 bridgeOp current id=2 from=(2,2) to=(0,2)
   1912 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   1913 debugShowSort [2] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   1914 debugShowSort [3] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=1
   1915 debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   1916 debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
   1917 findNextOp firstIndex=[2] sign=1
   1918 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1919 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1920 markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.302178051 [1] (1.92144883,2.25028419) tEnd=0.5 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   1921 findNextOp chase.append id=1
   1922 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1923 markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0 [0] (0,2) tEnd=0.302178051 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1924 findNextOp from:[1] to:[3] start=1 end=2
   1925 bridgeOp current id=1 from=(0,2) to=(1.92144883,2.25028419)
   1926 path.moveTo(2,2);
   1927 path.lineTo(0,2);
   1928 path.cubicTo(0.60435605,2.30217814, 1.30002379,2.33042121, 1.92144883,2.25028419);
   1929 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
   1930 debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=0.447821962 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1931 debugShowSort [3] {{3,2}, {0,2}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   1932 debugShowSort [0] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1933 debugShowSort [1] {{3,2}, {0,2}} tStart=0.333333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   1934 findNextOp firstIndex=[2] sign=1
   1935 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1936 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1937 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   1938 markDoneBinary id=3 (1,5 2,3 2,0 3,2) t=0.447821962 [1] (1.92144883,2.25028419) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1939 findNextOp from:[3] to:[2] start=4 end=5
   1940 bridgeOp current id=3 from=(1.92144883,2.25028419) to=(2,2)
   1941 path.cubicTo(1.94782197,2.1619792, 1.97391093,2.0782671, 2,2);
   1942 path.close();
   1943 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1944 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   1945 debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
   1946 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   1947 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   1948 debugShowSort [1] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   1949 debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   1950 debugShowSort [3] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   1951 debugShowSort [4] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.5 tEnd=0.302178051 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   1952 debugShowSort [5] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
   1953 debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   1954 findNextOp firstIndex=[1] sign=1
   1955 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   1956 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   1957 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   1958 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   1959 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   1960 markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.5 [2] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1961 markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.5 [3] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1962 markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.5 [4] (3,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   1963 findNextOp from:[1] to:[1] start=3 end=5
   1964 bridgeOp current id=1 from=(3,2) to=(3,2)
   1965 path.moveTo(3,2);
   1966 path.cubicTo(3.75,1.75, 4,1.5, 3,2);
   1967 path.close();
   1968 debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   1969 debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   1970 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1971 findNextOp simple
   1972 markDoneBinary id=4 (3,2 1,5) t=0 [0] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1973 markDoneBinary id=4 (3,2 1,5) t=0 [1] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1974 markDoneBinary id=4 (3,2 1,5) t=0 [2] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1975 markDoneBinary id=4 (3,2 1,5) t=0 [3] (3,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1976 bridgeOp current id=4 from=(3,2) to=(1,5)
   1977 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
   1978 debugShowSort [3] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   1979 debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0.5 sign=-1 windValue=1 windSum=1 1->2 (max=2) done=1 tiny=0 opp=1
   1980 debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   1981 debugShowSort [2] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
   1982 findNextOp firstIndex=[3] sign=1
   1983 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   1984 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   1985 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
   1986 markDoneBinary id=3 (1,5 2,3 2,0 3,2) t=0 [0] (1,5) tEnd=0.447821962 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   1987 findNextOp from:[3] to:[3] start=1 end=2
   1988 bridgeOp current id=3 from=(1,5) to=(1.92144883,2.25028419)
   1989 path.moveTo(3,2);
   1990 path.lineTo(1,5);
   1991 path.cubicTo(1.44782197,4.10435629, 1.69509947,3.00816751, 1.92144883,2.25028419);
   1992 </div>
   1993 
   1994 <div id="cubicOp48da">
   1995   {{0,2}, {2,3}, {5,1}, {3,2}},
   1996 
   1997   {{0,2}, {0.796711951,2.36012932}, {1.63878124,2.27837338}},
   1998   {{1.63878124,2.27837338}, {2.48085053,2.19661745}, {3.06246392,1.97878949}},
   1999   {{3.06246392,1.97878949}, {3.64407731,1.76096154}, {3.65942155,1.71287481}},
   2000   {{3.65942155,1.71287481}, {3.66835761,1.67480112}, {3,2}},
   2001 </div>
   2002 
   2003 <div id="cubicOp32d">
   2004   SimplifyNew_Test [cubicOp32d]
   2005 {{0,1}, {1,2}, {6,0}, {3,1}},
   2006 {{3,1}, {0,1}},
   2007 op difference
   2008 {{0,6}, {1,3}, {1,0}, {2,1}},
   2009 {{2,1}, {0,6}},
   2010 insert t=0.5 pts roughly equal
   2011 insert t=0.5 pts roughly equal
   2012 insert t=0.5 pts roughly equal
   2013 debugShowCubicIntersection wtTs[0]=1 {{0,1}, {1,2}, {6,0}, {3,1}} {{3,1}} wtTs[1]=0.5
   2014 insert t=0.5 pts roughly equal
   2015 debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,2}, {6,0}, {3,1}} {{0,1}} wtTs[1]=0.5 {{3,1}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {0,1}} wnTs[1]=0 wnTs[2]=0
   2016 debugShowCubicIntersection wtTs[0]=0.235702334 {{0,1}, {1,2}, {6,0}, {3,1}} {{1.2166390977965289,1.2856741834504377}} wnTs[0]=0.640711 {{0,6}, {1,3}, {1,0}, {2,1}}
   2017 debugShowCubicLineIntersection wtTs[0]=0.336702456 {{0,1}, {1,2}, {6,0}, {3,1}} {{1.9124722896380537,1.2188192759048657}} wnTs[0]=0.0437639 {{2,1}, {0,6}}
   2018 debugShowCubicLineIntersection wtTs[0]=0.724744871 {{0,6}, {1,3}, {1,0}, {2,1}} {{1.359821149611685,1.0000000000000004}} wtTs[1]=1 {{2,1}} wnTs[0]=0.546726 {{3,1}, {0,1}} wnTs[1]=0.333333333
   2019 debugShowLineIntersection wtTs[0]=0 {{3,1}, {0,1}} {{2,1}} wnTs[0]=0.333333 {{2,1}, {0,6}}
   2020 debugShowCubicIntersection no self intersect {{0,6}, {1,3}, {1,0}, {2,1}}
   2021 debugShowCubicLineIntersection wtTs[0]=0 {{0,6}, {1,3}, {1,0}, {2,1}} {{0,6}} wtTs[1]=1 {{2,1}} wnTs[0]=1 {{2,1}, {0,6}} wnTs[1]=0
   2022 debugShowActiveSpans id=1 (0,1 1,2 6,0 3,1) t=0 (0,1) tEnd=0.235702334 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   2023 debugShowActiveSpans id=1 (0,1 1,2 6,0 3,1) t=0.235702334 (1.21663904,1.28567421) tEnd=0.336702456 other=3 otherT=0.640711351 otherIndex=1 windSum=? windValue=1 oppValue=0
   2024 debugShowActiveSpans id=1 (0,1 1,2 6,0 3,1) t=0.336702456 (1.91247225,1.21881926) tEnd=0.5 other=4 otherT=0.0437638552 otherIndex=2 windSum=? windValue=1 oppValue=0
   2025 </div>
   2026 
   2027 <div id="cubicOp48db">
   2028 computed quadratics given
   2029   {{0,2}, {2,3}, {5,1}, {3,2}},
   2030   {{1,5}, {2,3}, {2,0}, {3,2}},
   2031 computed quadratics set 1
   2032   {{0,2}, {0.796711951,2.36012932}, {1.63878124,2.27837338}},
   2033   {{1.63878124,2.27837338}, {2.48085053,2.19661745}, {3.06246392,1.97878949}},
   2034   {{3.06246392,1.97878949}, {3.64407731,1.76096154}, {3.65942155,1.71287481}},
   2035   {{3.65942155,1.71287481}, {3.66835761,1.67480112}, {3,2}},
   2036 computed quadratics set 2
   2037   {{1,5}, {1.50173477,3.89061296}, {1.76597918,2.79793753}},
   2038   {{1.76597918,2.79793753}, {2.0153684,1.78464605}, {2.27205088,1.42969352}},
   2039   {{2.27205088,1.42969352}, {2.52873337,1.07474099}, {3,2}},
   2040 </div>
   2041 
   2042 <div id="cubicOp48dc">
   2043   {{1.63878124,2.27837338}, {2.48085053,2.19661745}, {3.06246392,1.97878949}},
   2044   {{2.27205088,1.42969352}, {2.52873337,1.07474099}, {3,2}},
   2045 </div>
   2046 
   2047 <div id="cubicOp49d">
   2048   SimplifyNew_Test [cubicOp49d]
   2049 {{0,2}, {1,5}, {3,2}, {4,1}},
   2050 {{4,1}, {0,2}},
   2051 op difference
   2052 {{2,3}, {1,4}, {2,0}, {5,1}},
   2053 {{5,1}, {2,3}},
   2054 debugShowCubicIntersection no self intersect {{2,3}, {1,4}, {2,0}, {5,1}}
   2055 debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {1,4}, {2,0}, {5,1}} {{2,3}} wtTs[1]=1 {{5,1}} wnTs[0]=1 {{5,1}, {2,3}} wnTs[1]=0
   2056 debugShowCubicIntersection wtTs[0]=1.74609417e-09 {{2,3}, {1,4}, {2,0}, {5,1}} {{1.9999999947617175,3.0000000052382827}} wtTs[1]=0.122781788 {{1.7221068406383582,3.1607246577308117}} wnTs[0]=0.5 {{0,2}, {1,5}, {3,2}, {4,1}} wnTs[1]=0.438140761
   2057 debugShowCubicLineIntersection wtTs[0]=0.651913155 {{2,3}, {1,4}, {2,0}, {5,1}} {{2.5942051033446676,1.3514487241638331}} wnTs[0]=0.351449 {{4,1}, {0,2}}
   2058 debugShowCubicLineIntersection wtTs[0]=0.5 {{0,2}, {1,5}, {3,2}, {4,1}} {{2,3}} wnTs[0]=1 {{5,1}, {2,3}}
   2059 debugShowLineIntersection no intersect {{5,1}, {2,3}} {{4,1}, {0,2}}
   2060 debugShowCubicIntersection no self intersect {{0,2}, {1,5}, {3,2}, {4,1}}
   2061 debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {1,5}, {3,2}, {4,1}} {{0,2}} wtTs[1]=1 {{4,1}} wnTs[0]=1 {{4,1}, {0,2}} wnTs[1]=0
   2062 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 (2,3) tEnd=0.122781788 other=1 otherT=0.499999999 otherIndex=2 windSum=? windValue=1 oppValue=0
   2063 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.122781788 (1.72210681,3.16072464) tEnd=0.651913155 other=1 otherT=0.438140761 otherIndex=1 windSum=? windValue=1 oppValue=0
   2064 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.651913155 (2.59420514,1.35144877) tEnd=1 other=2 otherT=0.351448724 otherIndex=1 windSum=? windValue=1 oppValue=0
   2065 debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2066 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0 (0,2) tEnd=0.438140761 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   2067 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.438140761 (1.72210681,3.16072464) tEnd=0.499999999 other=3 otherT=0.122781788 otherIndex=2 windSum=? windValue=1 oppValue=0
   2068 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   2069 debugShowActiveSpans id=2 (4,1 0,2) t=0 (4,1) tEnd=0.351448724 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2070 debugShowActiveSpans id=2 (4,1 0,2) t=0.351448724 (2.59420514,1.35144877) tEnd=1 other=3 otherT=0.651913155 otherIndex=3 windSum=? windValue=1 oppValue=0
   2071 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2072 debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=0.651913155 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2073 debugShowSort [2] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   2074 debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=1.74609417e-09 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2075 debugShowSort [0] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0.499999999 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   2076 findTop swap
   2077 markWinding id=3 (2,3 1,4 2,0 5,1) t=0.122781788 [2] (1.72210681,3.16072464) tEnd=0.651913155 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2078 markWinding id=3 (2,3 1,4 2,0 5,1) t=0.122781788 [2] (1.72210681,3.16072464) tEnd=0.651913155 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2079 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2080 markDoneBinary id=3 (2,3 1,4 2,0 5,1) t=0.122781788 [2] (1.72210681,3.16072464) tEnd=0.651913155 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2081 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   2082 debugShowSort [0] {{4,1}, {0,2}} tStart=0.351448724 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   2083 debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   2084 debugShowSort [2] {{4,1}, {0,2}} tStart=0.351448724 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   2085 debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=0.122781788 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   2086 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2087 debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=0.122781788 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2088 debugShowSort [0] {{4,1}, {0,2}} tStart=0.351448724 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   2089 debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2090 debugShowSort [2] {{4,1}, {0,2}} tStart=0.351448724 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   2091 markWinding id=2 (4,1 0,2) t=0 [0] (4,1) tEnd=0.351448724 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2092 markWinding id=1 (0,2 1,5 3,2 4,1) t=0.5 [3] (2,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2093 markWinding id=3 (2,3 1,4 2,0 5,1) t=0.651913155 [3] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2094 markWinding id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2095 markWinding id=2 (4,1 0,2) t=0.351448724 [1] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2096 markWinding id=1 (0,2 1,5 3,2 4,1) t=0 [0] (0,2) tEnd=0.438140761 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2097 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 (2,3) tEnd=0.122781788 other=1 otherT=0.499999999 otherIndex=2 windSum=? windValue=1 oppValue=0
   2098 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.651913155 (2.59420514,1.35144877) tEnd=1 other=2 otherT=0.351448724 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2099 debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2100 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0 (0,2) tEnd=0.438140761 other=2 otherT=1 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2101 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.438140761 (1.72210681,3.16072464) tEnd=0.499999999 other=3 otherT=0.122781788 otherIndex=2 windSum=? windValue=1 oppValue=0
   2102 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2103 debugShowActiveSpans id=2 (4,1 0,2) t=0 (4,1) tEnd=0.351448724 other=1 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2104 debugShowActiveSpans id=2 (4,1 0,2) t=0.351448724 (2.59420514,1.35144877) tEnd=1 other=3 otherT=0.651913155 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   2105 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2106 markDoneBinary id=2 (4,1 0,2) t=0 [0] (4,1) tEnd=0.351448724 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   2107 markDoneBinary id=1 (0,2 1,5 3,2 4,1) t=0.5 [3] (2,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   2108 setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
   2109 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 (2,3) tEnd=0.122781788 other=1 otherT=0.499999999 otherIndex=2 windSum=? windValue=1 oppValue=0
   2110 debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.651913155 (2.59420514,1.35144877) tEnd=1 other=2 otherT=0.351448724 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2111 debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2112 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0 (0,2) tEnd=0.438140761 other=2 otherT=1 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2113 debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.438140761 (1.72210681,3.16072464) tEnd=0.499999999 other=3 otherT=0.122781788 otherIndex=2 windSum=? windValue=1 oppValue=0
   2114 debugShowActiveSpans id=2 (4,1 0,2) t=0.351448724 (2.59420514,1.35144877) tEnd=1 other=3 otherT=0.651913155 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   2115 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2116 findNextOp simple
   2117 markDoneBinary id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   2118 bridgeOp current id=4 from=(2,3) to=(5,1)
   2119 findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
   2120 debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   2121 debugShowSort [2] {{4,1}, {0,2}} tStart=0.351448724 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
   2122 debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=0.122781788 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2123 debugShowSort [0] {{4,1}, {0,2}} tStart=0.351448724 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   2124 findNextOp firstIndex=[1] sign=-1
   2125 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2126 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2127 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2128 markDoneBinary id=3 (2,3 1,4 2,0 5,1) t=0.651913155 [3] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   2129 findNextOp from:[3] to:[2] start=1 end=2
   2130 bridgeOp current id=3 from=(5,1) to=(2.59420514,1.35144877)
   2131 path.moveTo(2,3);
   2132 path.lineTo(5,1);
   2133 path.cubicTo(3.9557395,0.651913166, 3.15380788,0.909648538, 2.59420514,1.35144877);
   2134 findNextOp simple
   2135 markDoneBinary id=2 (4,1 0,2) t=0.351448724 [1] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2136 bridgeOp current id=2 from=(2.59420514,1.35144877) to=(0,2)
   2137 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2138 debugShowSort [2] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   2139 debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=1.74609417e-09 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   2140 debugShowSort [0] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0.499999999 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2141 debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=0.651913155 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   2142 findNextOp firstIndex=[2] sign=1
   2143 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2144 markWinding id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 [1] (2,3) tEnd=0.122781788 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2145 findNextOp chase.append id=3
   2146 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2147 markDoneBinary id=1 (0,2 1,5 3,2 4,1) t=0.438140761 [1] (1.72210681,3.16072464) tEnd=0.499999999 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2148 findNextOp chase.append id=1
   2149 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2150 markDoneBinary id=1 (0,2 1,5 3,2 4,1) t=0 [0] (0,2) tEnd=0.438140761 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2151 findNextOp from:[1] to:[3] start=2 end=1
   2152 bridgeOp current id=1 from=(0,2) to=(1.72210681,3.16072464)
   2153 path.lineTo(0,2);
   2154 path.cubicTo(0.43814075,3.31442237, 1.06824887,3.47704053, 1.72210681,3.16072464);
   2155 setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
   2156 setSpans all tiny unsortable [2] (2,3) [1] (1.72210681,3.16072464)
   2157 markUnsortable id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 [1] (2,3) tEnd=0.122781788 newWindSum=0 windSum=-1 windValue=1
   2158 markUnsortable id=3 (2,3 1,4 2,0 5,1) t=0 [0] (2,3) tEnd=1.74609417e-09 newWindSum=0 windSum=? windValue=1
   2159 markUnsortable id=1 (0,2 1,5 3,2 4,1) t=0.499999999 [2] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   2160 markUnsortable id=1 (0,2 1,5 3,2 4,1) t=0.438140761 [1] (1.72210681,3.16072464) tEnd=0.499999999 newWindSum=0 windSum=-1 windValue=1
   2161 findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
   2162 debugShowSort [0] *** UNSORTABLE *** {{2,3}, {1,4}, {2,0}, {5,1}} tStart=1.74609417e-09 tEnd=0.122781788 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   2163 debugShowSort [1] *** UNSORTABLE *** {{2,3}, {1,4}, {2,0}, {5,1}} tStart=1.74609417e-09 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=1 tiny=1 opp=0
   2164 debugShowSort [2] *** UNSORTABLE *** {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.499999999 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=1 tiny=1 opp=1
   2165 debugShowSort [3] *** UNSORTABLE *** {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.499999999 tEnd=0.438140761 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   2166 path.cubicTo(1.78458714,3.17018676, 1.87721825,3.12278175, 2,3);
   2167 markDoneBinary id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 [1] (2,3) tEnd=0.122781788 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   2168 path.close();
   2169 setSpans all tiny unsortable [2] (2,3) [1] (1.72210681,3.16072464)
   2170 setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
   2171 setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
   2172 setSpans all tiny unsortable [2] (2,3) [1] (1.72210681,3.16072464)
   2173 setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
   2174 assemble
   2175 assemble contour    start=(2,3) end=(2,3)
   2176 </div>
   2177 
   2178 <div id="cubicOp50d">
   2179   SimplifyNew_Test [cubicOp50d]
   2180 {{0,3}, {1,6}, {5,0}, {5,1}},
   2181 {{5,1}, {0,3}},
   2182 op difference
   2183 {{0,5}, {1,5}, {3,0}, {6,1}},
   2184 {{6,1}, {0,5}},
   2185 debugShowCubicIntersection no self intersect {{0,5}, {1,5}, {3,0}, {6,1}}
   2186 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {1,5}, {3,0}, {6,1}} {{0,5}} wtTs[1]=0.181818182 {{0.64462809917355357,4.5702479338842981}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {0,5}} wnTs[1]=0.892561983 wnTs[2]=0
   2187 debugShowCubicIntersection wtTs[0]=0.326064989 {{0,5}, {1,5}, {3,0}, {6,1}} {{1.2971500960309803,3.7865580517965118}} wnTs[0]=0.265062 {{0,3}, {1,6}, {5,0}, {5,1}}
   2188 debugShowCubicLineIntersection wtTs[0]=0.639696212 {{0,5}, {1,5}, {3,0}, {6,1}} {{3.1467223651509295,1.7413110539396279}} wnTs[0]=0.370656 {{5,1}, {0,3}}
   2189 debugShowCubicLineIntersection no intersect {{0,3}, {1,6}, {5,0}, {5,1}} {{6,1}, {0,5}}
   2190 debugShowLineIntersection no intersect {{6,1}, {0,5}} {{5,1}, {0,3}}
   2191 debugShowCubicIntersection no self intersect {{0,3}, {1,6}, {5,0}, {5,1}}
   2192 debugShowCubicLineIntersection wtTs[0]=0 {{0,3}, {1,6}, {5,0}, {5,1}} {{0,3}} wtTs[1]=0.772727273 {{4.4623403456048081,1.2150638617580767}} wtTs[2]=1 {{5,1}} wnTs[0]=1 {{5,1}, {0,3}} wnTs[1]=0.107531931 wnTs[2]=0
   2193 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0 (0,5) tEnd=0.181818182 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   2194 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.181818182 (0.644628108,4.57024813) tEnd=0.326064989 other=4 otherT=0.892561983 otherIndex=1 windSum=? windValue=1 oppValue=0
   2195 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.326064989 (1.29715014,3.78655815) tEnd=0.639696212 other=1 otherT=0.26506234 otherIndex=1 windSum=? windValue=1 oppValue=0
   2196 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.639696212 (3.14672232,1.74131107) tEnd=1 other=2 otherT=0.370655527 otherIndex=2 windSum=? windValue=1 oppValue=0
   2197 debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.892561983 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2198 debugShowActiveSpans id=4 (6,1 0,5) t=0.892561983 (0.644628108,4.57024813) tEnd=1 other=3 otherT=0.181818182 otherIndex=1 windSum=? windValue=1 oppValue=0
   2199 debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0 (0,3) tEnd=0.26506234 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2200 debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0.26506234 (1.29715014,3.78655815) tEnd=0.772727273 other=3 otherT=0.326064989 otherIndex=2 windSum=? windValue=1 oppValue=0
   2201 debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0.772727273 (4.46234035,1.21506381) tEnd=1 other=2 otherT=0.107531931 otherIndex=1 windSum=? windValue=1 oppValue=0
   2202 debugShowActiveSpans id=2 (5,1 0,3) t=0 (5,1) tEnd=0.107531931 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2203 debugShowActiveSpans id=2 (5,1 0,3) t=0.107531931 (4.46234035,1.21506381) tEnd=0.370655527 other=1 otherT=0.772727273 otherIndex=2 windSum=? windValue=1 oppValue=0
   2204 debugShowActiveSpans id=2 (5,1 0,3) t=0.370655527 (3.14672232,1.74131107) tEnd=1 other=3 otherT=0.639696212 otherIndex=3 windSum=? windValue=1 oppValue=0
   2205 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2206 debugShowSort [0] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=1 tEnd=0.772727273 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2207 debugShowSort [1] {{5,1}, {0,3}} tStart=0 tEnd=0.107531931 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2208 markWinding id=1 (0,3 1,6 5,0 5,1) t=0.772727273 [2] (4.46234035,1.21506381) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2209 markWinding id=2 (5,1 0,3) t=0 [0] (5,1) tEnd=0.107531931 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2210 markWinding id=1 (0,3 1,6 5,0 5,1) t=0.772727273 [2] (4.46234035,1.21506381) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2211 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2212 findNextOp simple
   2213 markDoneBinary id=1 (0,3 1,6 5,0 5,1) t=0.772727273 [2] (4.46234035,1.21506381) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2214 bridgeOp current id=1 from=(4.46234035,1.21506381) to=(5,1)
   2215 path.moveTo(4.46234035,1.21506381);
   2216 path.cubicTo(4.79338837,0.90702486, 5,0.772727251, 5,1);
   2217 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2218 debugShowSort [0] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   2219 debugShowSort [1] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   2220 debugShowSort [2] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0.370655527 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2221 debugShowSort [3] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=0.26506234 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2222 findNextOp firstIndex=[0] sign=1
   2223 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2224 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2225 markWinding id=2 (5,1 0,3) t=0.107531931 [1] (4.46234035,1.21506381) tEnd=0.370655527 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2226 findNextOp chase.append id=2
   2227 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2228 markWinding id=1 (0,3 1,6 5,0 5,1) t=0.26506234 [1] (1.29715014,3.78655815) tEnd=0.772727273 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2229 findNextOp chase.append id=1
   2230 markDoneBinary id=2 (5,1 0,3) t=0 [0] (5,1) tEnd=0.107531931 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2231 findNextOp from:[2] to:[1] start=2 end=1
   2232 bridgeOp current id=2 from=(5,1) to=(4.46234035,1.21506381)
   2233 path.lineTo(4.46234035,1.21506381);
   2234 path.close();
   2235 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0 (0,5) tEnd=0.181818182 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   2236 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.181818182 (0.644628108,4.57024813) tEnd=0.326064989 other=4 otherT=0.892561983 otherIndex=1 windSum=? windValue=1 oppValue=0
   2237 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.326064989 (1.29715014,3.78655815) tEnd=0.639696212 other=1 otherT=0.26506234 otherIndex=1 windSum=? windValue=1 oppValue=0
   2238 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.639696212 (3.14672232,1.74131107) tEnd=1 other=2 otherT=0.370655527 otherIndex=2 windSum=? windValue=1 oppValue=0
   2239 debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.892561983 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2240 debugShowActiveSpans id=4 (6,1 0,5) t=0.892561983 (0.644628108,4.57024813) tEnd=1 other=3 otherT=0.181818182 otherIndex=1 windSum=? windValue=1 oppValue=0
   2241 debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0 (0,3) tEnd=0.26506234 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2242 debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0.26506234 (1.29715014,3.78655815) tEnd=0.772727273 other=3 otherT=0.326064989 otherIndex=2 windSum=1 windValue=1 oppValue=0
   2243 debugShowActiveSpans id=2 (5,1 0,3) t=0.107531931 (4.46234035,1.21506381) tEnd=0.370655527 other=1 otherT=0.772727273 otherIndex=2 windSum=1 windValue=1 oppValue=0
   2244 debugShowActiveSpans id=2 (5,1 0,3) t=0.370655527 (3.14672232,1.74131107) tEnd=1 other=3 otherT=0.639696212 otherIndex=3 windSum=? windValue=1 oppValue=0
   2245 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2246 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   2247 debugShowSort [3] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=0.26506234 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2248 debugShowSort [0] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2249 debugShowSort [1] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   2250 debugShowSort [2] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0.370655527 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2251 findNextOp firstIndex=[3] sign=1
   2252 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2253 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2254 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2255 markDoneBinary id=1 (0,3 1,6 5,0 5,1) t=0.26506234 [1] (1.29715014,3.78655815) tEnd=0.772727273 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2256 findNextOp from:[1] to:[2] start=1 end=2
   2257 bridgeOp current id=1 from=(1.29715014,3.78655815) to=(4.46234035,1.21506381)
   2258 path.moveTo(1.29715014,3.78655815);
   2259 path.cubicTo(2.36251926,3.45810199, 3.72286963,1.90313876, 4.46234035,1.21506381);
   2260 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   2261 debugShowSort [0] {{5,1}, {0,3}} tStart=0.370655527 tEnd=0.107531931 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2262 debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.639696212 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2263 debugShowSort [2] {{5,1}, {0,3}} tStart=0.370655527 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2264 debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.639696212 tEnd=0.326064989 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2265 findNextOp firstIndex=[0] sign=1
   2266 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2267 markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0.639696212 [3] (3.14672232,1.74131107) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2268 markDoneBinary id=4 (6,1 0,5) t=0 [0] (6,1) tEnd=0.892561983 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2269 findNextOp chase.append id=4
   2270 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2271 markDoneBinary id=2 (5,1 0,3) t=0.370655527 [2] (3.14672232,1.74131107) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2272 markDoneBinary id=1 (0,3 1,6 5,0 5,1) t=0 [0] (0,3) tEnd=0.26506234 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2273 findNextOp chase.append id=1
   2274 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   2275 markWinding id=3 (0,5 1,5 3,0 6,1) t=0.326064989 [2] (1.29715014,3.78655815) tEnd=0.639696212 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2276 findNextOp chase.append id=3
   2277 markDoneBinary id=2 (5,1 0,3) t=0.107531931 [1] (4.46234035,1.21506381) tEnd=0.370655527 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2278 findNextOp from:[2] to:[3] start=3 end=2
   2279 bridgeOp current id=2 from=(4.46234035,1.21506381) to=(3.14672232,1.74131107)
   2280 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
   2281 debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.326064989 tEnd=0.639696212 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2282 debugShowSort [2] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.26506234 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   2283 debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.326064989 tEnd=0.181818182 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2284 debugShowSort [0] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.26506234 tEnd=0.772727273 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   2285 findNextOp firstIndex=[1] sign=-1
   2286 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2287 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2288 markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0.181818182 [1] (0.644628108,4.57024813) tEnd=0.326064989 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2289 findNextOp chase.append id=3
   2290 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2291 markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0.326064989 [2] (1.29715014,3.78655815) tEnd=0.639696212 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   2292 findNextOp from:[3] to:[1] start=1 end=2
   2293 bridgeOp current id=3 from=(3.14672232,1.74131107) to=(1.29715014,3.78655815)
   2294 path.lineTo(3.14672232,1.74131107);
   2295 path.cubicTo(2.43183374,2.33584237, 1.81530964,3.13070869, 1.29715014,3.78655815);
   2296 path.close();
   2297 findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   2298 debugShowSort [0] {{6,1}, {0,5}} tStart=0.892561983 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2299 debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0.326064989 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   2300 debugShowSort [2] {{6,1}, {0,5}} tStart=0.892561983 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
   2301 debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   2302 findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   2303 debugShowSort [0] {{6,1}, {0,5}} tStart=0.892561983 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2304 debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0.326064989 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   2305 debugShowSort [2] {{6,1}, {0,5}} tStart=0.892561983 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
   2306 debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
   2307 markWinding id=4 (6,1 0,5) t=0.892561983 [1] (0.644628108,4.57024813) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   2308 markWinding id=3 (0,5 1,5 3,0 6,1) t=0 [0] (0,5) tEnd=0.181818182 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
   2309 markWinding id=3 (0,5 1,5 3,0 6,1) t=0 [0] (0,5) tEnd=0.181818182 newWindSum=2 newOppSum=0 oppSum=0 windSum=2 windValue=1
   2310 debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0 (0,5) tEnd=0.181818182 other=4 otherT=1 otherIndex=2 windSum=2 windValue=1 oppValue=0
   2311 debugShowActiveSpans id=4 (6,1 0,5) t=0.892561983 (0.644628108,4.57024813) tEnd=1 other=3 otherT=0.181818182 otherIndex=1 windSum=2 windValue=1 oppValue=0
   2312 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   2313 markDoneBinary id=4 (6,1 0,5) t=0.892561983 [1] (0.644628108,4.57024813) tEnd=1 newWindSum=2 newOppSum=0 oppSum=0 windSum=2 windValue=1
   2314 markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0 [0] (0,5) tEnd=0.181818182 newWindSum=2 newOppSum=0 oppSum=0 windSum=2 windValue=1
   2315 assemble
   2316 assemble contour    start=(4.46234035,1.21506381) end=(4.46234035,1.21506381)
   2317 path.moveTo(4.46234035,1.21506381);
   2318 path.cubicTo(4.79338837,0.90702486, 5,0.772727251, 5,1);
   2319 path.lineTo(4.46234035,1.21506381);
   2320 path.close();
   2321 assemble contour    start=(1.29715014,3.78655815) end=(1.29715014,3.78655815)
   2322 </div>
   2323 
   2324 <div id="cubicOp51d">
   2325   SimplifyNew_Test [cubicOp51d]
   2326 {{0,3}, {1,2}, {4,1}, {6,0}},
   2327 {{6,0}, {0,3}},
   2328 op difference
   2329 {{1,4}, {0,6}, {3,0}, {2,1}},
   2330 {{2,1}, {1,4}},
   2331 debugShowCubicIntersection no self intersect {{0,3}, {1,2}, {4,1}, {6,0}}
   2332 debugShowCubicLineIntersection wtTs[0]=0 {{0,3}, {1,2}, {4,1}, {6,0}} {{0,3}} wtTs[1]=1 {{6,0}} wnTs[0]=1 {{6,0}, {0,3}} wnTs[1]=0
   2333 debugShowCubicIntersection wtTs[0]=0.397354824 {{0,3}, {1,2}, {4,1}, {6,0}} {{1.9511935265302276,1.8079355291007386}} wnTs[0]=0.661665 {{1,4}, {0,6}, {3,0}, {2,1}}
   2334 debugShowCubicLineIntersection wtTs[0]=0.355273081 {{0,3}, {1,2}, {4,1}, {6,0}} {{1.6886064138367243,1.9341807584898274}} wnTs[0]=0.311394 {{2,1}, {1,4}}
   2335 debugShowCubicLineIntersection wtTs[0]=0.6185225 {{1,4}, {0,6}, {3,0}, {2,1}} {{1.8422478636338226,2.0788760681830887}} wnTs[0]=0.692959 {{6,0}, {0,3}}
   2336 debugShowLineIntersection wtTs[0]=0.733333333 {{6,0}, {0,3}} {{1.6000000000000003,2.1999999999999997}} wnTs[0]=0.4 {{2,1}, {1,4}}
   2337 debugShowCubicIntersection no self intersect {{1,4}, {0,6}, {3,0}, {2,1}}
   2338 debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,6}, {3,0}, {2,1}} {{1,4}} wtTs[1]=0.333333333 {{1.0370370370370368,3.8888888888888897}} wtTs[2]=1 {{2,1}} wnTs[0]=1 {{2,1}, {1,4}} wnTs[1]=0.962962963 wnTs[2]=0
   2339 debugShowActiveSpans id=1 (0,3 1,2 4,1 6,0) t=0 (0,3) tEnd=0.355273081 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2340 debugShowActiveSpans id=1 (0,3 1,2 4,1 6,0) t=0.355273081 (1.68860638,1.93418074) tEnd=0.397354824 other=4 otherT=0.311393586 otherIndex=1 windSum=? windValue=1 oppValue=0
   2341 debugShowActiveSpans id=1 (0,3 1,2 4,1 6,0) t=0.397354824 (1.95119357,1.80793548) tEnd=1 other=3 otherT=0.66166507 otherIndex=3 windSum=? windValue=1 oppValue=0
   2342 debugShowActiveSpans id=2 (6,0 0,3) t=0 (6,0) tEnd=0.692958689 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2343 debugShowActiveSpans id=2 (6,0 0,3) t=0.692958689 (1.84224784,2.07887602) tEnd=0.733333333 other=3 otherT=0.6185225 otherIndex=2 windSum=? windValue=1 oppValue=0
   2344 debugShowActiveSpans id=2 (6,0 0,3) t=0.733333333 (1.60000002,2.20000005) tEnd=1 other=4 otherT=0.4 otherIndex=2 windSum=? windValue=1 oppValue=0
   2345 debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0 (1,4) tEnd=0.333333333 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2346 debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0.333333333 (1.03703701,3.88888884) tEnd=0.6185225 other=4 otherT=0.962962963 otherIndex=3 windSum=? windValue=1 oppValue=0
   2347 debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0.6185225 (1.84224784,2.07887602) tEnd=0.66166507 other=2 otherT=0.692958689 otherIndex=1 windSum=? windValue=1 oppValue=0
   2348 debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0.66166507 (1.95119357,1.80793548) tEnd=1 other=1 otherT=0.397354824 otherIndex=2 windSum=? windValue=1 oppValue=0
   2349 debugShowActiveSpans id=4 (2,1 1,4) t=0 (2,1) tEnd=0.311393586 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2350 debugShowActiveSpans id=4 (2,1 1,4) t=0.311393586 (1.68860638,1.93418074) tEnd=0.4 other=1 otherT=0.355273081 otherIndex=1 windSum=? windValue=1 oppValue=0
   2351 debugShowActiveSpans id=4 (2,1 1,4) t=0.4 (1.60000002,2.20000005) tEnd=0.962962963 other=2 otherT=0.733333333 otherIndex=2 windSum=? windValue=1 oppValue=0
   2352 debugShowActiveSpans id=4 (2,1 1,4) t=0.962962963 (1.03703701,3.88888884) tEnd=1 other=3 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
   2353 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2354 debugShowSort [0] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=1 tEnd=0.397354824 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2355 debugShowSort [1] {{6,0}, {0,3}} tStart=0 tEnd=0.692958689 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2356 findTop swap
   2357 markWinding id=1 (0,3 1,2 4,1 6,0) t=0.397354824 [2] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2358 markWinding id=1 (0,3 1,2 4,1 6,0) t=0.397354824 [2] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2359 markWinding id=2 (6,0 0,3) t=0 [0] (6,0) tEnd=0.692958689 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2360 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2361 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2362 debugShowSort [0] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.397354824 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2363 debugShowSort [1] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.66166507 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2364 debugShowSort [2] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.397354824 tEnd=0.355273081 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2365 debugShowSort [3] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.66166507 tEnd=0.6185225 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2366 findNextOp firstIndex=[0] sign=-1
   2367 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2368 markWinding id=3 (1,4 0,6 3,0 2,1) t=0.66166507 [3] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2369 markWinding id=4 (2,1 1,4) t=0 [0] (2,1) tEnd=0.311393586 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2370 findNextOp chase.append id=4
   2371 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2372 markDoneBinary id=1 (0,3 1,2 4,1 6,0) t=0.355273081 [1] (1.68860638,1.93418074) tEnd=0.397354824 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2373 findNextOp chase.append id=1
   2374 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2375 markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0.6185225 [2] (1.84224784,2.07887602) tEnd=0.66166507 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2376 findNextOp chase.append id=3
   2377 markDoneBinary id=1 (0,3 1,2 4,1 6,0) t=0.397354824 [2] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2378 findNextOp from:[1] to:[3] start=3 end=4
   2379 bridgeOp current id=1 from=(6,0) to=(1.95119357,1.80793548)
   2380 path.moveTo(6,0);
   2381 path.cubicTo(4.79470968,0.602645159, 3.22623801,1.20529044, 1.95119357,1.80793548);
   2382 findNextOp simple
   2383 markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0.66166507 [3] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   2384 bridgeOp current id=3 from=(1.95119357,1.80793548) to=(2,1)
   2385 path.cubicTo(2.21878767,1.12462389, 2.33833504,0.661665022, 2,1);
   2386 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
   2387 debugShowSort [1] {{2,1}, {1,4}} tStart=0.311393586 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2388 debugShowSort [2] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.355273081 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2389 debugShowSort [3] {{2,1}, {1,4}} tStart=0.311393586 tEnd=0.4 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2390 debugShowSort [0] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.355273081 tEnd=0.397354824 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   2391 findNextOp firstIndex=[1] sign=1
   2392 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2393 markWinding id=1 (0,3 1,2 4,1 6,0) t=0 [0] (0,3) tEnd=0.355273081 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2394 markWinding id=2 (6,0 0,3) t=0.733333333 [2] (1.60000002,2.20000005) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2395 findNextOp chase.append id=2
   2396 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2397 markDoneBinary id=4 (2,1 1,4) t=0.311393586 [1] (1.68860638,1.93418074) tEnd=0.4 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2398 findNextOp chase.append id=4
   2399 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2400 markDoneBinary id=4 (2,1 1,4) t=0 [0] (2,1) tEnd=0.311393586 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   2401 findNextOp from:[4] to:[1] start=1 end=0
   2402 bridgeOp current id=4 from=(2,1) to=(1.68860638,1.93418074)
   2403 findNextOp simple
   2404 markDoneBinary id=1 (0,3 1,2 4,1 6,0) t=0 [0] (0,3) tEnd=0.355273081 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2405 bridgeOp current id=1 from=(1.68860638,1.93418074) to=(0,3)
   2406 path.lineTo(1.68860638,1.93418074);
   2407 path.cubicTo(0.962984085,2.28945374, 0.355273068,2.64472699, 0,3);
   2408 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2409 debugShowSort [2] {{6,0}, {0,3}} tStart=0.733333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2410 debugShowSort [3] {{2,1}, {1,4}} tStart=0.4 tEnd=0.962962963 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2411 debugShowSort [0] {{6,0}, {0,3}} tStart=0.733333333 tEnd=0.692958689 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2412 debugShowSort [1] {{2,1}, {1,4}} tStart=0.4 tEnd=0.311393586 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   2413 findNextOp firstIndex=[2] sign=-1
   2414 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2415 markWinding id=4 (2,1 1,4) t=0.4 [2] (1.60000002,2.20000005) tEnd=0.962962963 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2416 findNextOp chase.append id=4
   2417 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2418 markDoneBinary id=2 (6,0 0,3) t=0.692958689 [1] (1.84224784,2.07887602) tEnd=0.733333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2419 findNextOp chase.append id=2
   2420 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2421 markDoneBinary id=2 (6,0 0,3) t=0.733333333 [2] (1.60000002,2.20000005) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2422 findNextOp from:[2] to:[4] start=2 end=3
   2423 bridgeOp current id=2 from=(0,3) to=(1.60000002,2.20000005)
   2424 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
   2425 debugShowSort [1] {{2,1}, {1,4}} tStart=0.962962963 tEnd=0.4 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2426 debugShowSort [2] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2427 debugShowSort [3] {{2,1}, {1,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2428 debugShowSort [0] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0.6185225 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2429 findNextOp firstIndex=[1] sign=1
   2430 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2431 markWinding id=3 (1,4 0,6 3,0 2,1) t=0 [0] (1,4) tEnd=0.333333333 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2432 markWinding id=4 (2,1 1,4) t=0.962962963 [3] (1.03703701,3.88888884) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2433 findNextOp chase.append id=4
   2434 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   2435 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2436 markWinding id=3 (1,4 0,6 3,0 2,1) t=0.333333333 [1] (1.03703701,3.88888884) tEnd=0.6185225 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2437 findNextOp chase.append id=3
   2438 markDoneBinary id=4 (2,1 1,4) t=0.4 [2] (1.60000002,2.20000005) tEnd=0.962962963 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   2439 findNextOp from:[4] to:[3] start=1 end=0
   2440 bridgeOp current id=4 from=(1.60000002,2.20000005) to=(1.03703701,3.88888884)
   2441 path.lineTo(1.60000002,2.20000005);
   2442 findNextOp simple
   2443 markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0 [0] (1,4) tEnd=0.333333333 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2444 bridgeOp current id=3 from=(1.03703701,3.88888884) to=(1,4)
   2445 path.lineTo(1.03703701,3.88888884);
   2446 path.cubicTo(0.777777791,4.44444466, 0.666666687,4.66666651, 1,4);
   2447 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   2448 debugShowSort [3] {{2,1}, {1,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   2449 debugShowSort [0] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0.6185225 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2450 debugShowSort [1] {{2,1}, {1,4}} tStart=0.962962963 tEnd=0.4 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2451 debugShowSort [2] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2452 findNextOp firstIndex=[3] sign=-1
   2453 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2454 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   2455 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2456 markDoneBinary id=4 (2,1 1,4) t=0.962962963 [3] (1.03703701,3.88888884) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2457 findNextOp from:[4] to:[3] start=1 end=2
   2458 bridgeOp current id=4 from=(1,4) to=(1.03703701,3.88888884)
   2459 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
   2460 debugShowSort [3] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.6185225 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2461 debugShowSort [0] {{6,0}, {0,3}} tStart=0.692958689 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
   2462 debugShowSort [1] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.6185225 tEnd=0.66166507 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   2463 debugShowSort [2] {{6,0}, {0,3}} tStart=0.692958689 tEnd=0.733333333 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   2464 findNextOp firstIndex=[3] sign=1
   2465 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2466 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2467 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2468 markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0.333333333 [1] (1.03703701,3.88888884) tEnd=0.6185225 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   2469 findNextOp from:[3] to:[2] start=1 end=0
   2470 bridgeOp current id=3 from=(1.03703701,3.88888884) to=(1.84224784,2.07887602)
   2471 path.lineTo(1.03703701,3.88888884);
   2472 path.cubicTo(1.25885081,3.41357374, 1.58910847,2.69425988, 1.84224784,2.07887602);
   2473 findNextOp simple
   2474 markDoneBinary id=2 (6,0 0,3) t=0 [0] (6,0) tEnd=0.692958689 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2475 bridgeOp current id=2 from=(1.84224784,2.07887602) to=(6,0)
   2476 path.lineTo(6,0);
   2477 path.close();
   2478 assemble
   2479 assemble contour    start=(6,0) end=(6,0)
   2480 </div>
   2481 
   2482 <div id="cubicOp51da">
   2483 $1 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 3.2262380859340407, y = 1.2052903527338259}, {x = 4.794709647266175, y = 0.60264517636691295}, {x = 6, y = 0}}
   2484 (gdb) p startEdge
   2485 $2 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 2.5538387028971403, y = 3.0829800885045522}}
   2486 (gdb) p endEdge
   2487 $3 = {{x = 6, y = 0}, {x = 5.3973548236330871, y = -1.205290352733825}}
   2488 </div>
   2489 
   2490 <div id="cubicOp52da">
   2491 $3 = {{fX = 2.625, fY = 2.25}, {fX = 2.25, fY = 1.25}, {fX = 2, fY = 0.5}, {fX = 2, fY = 1}}
   2492 </div>
   2493 
   2494 <div id="cubicOp52db">
   2495 $3 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 3.2262380859340407, y = 1.2052903527338259}, {x = 4.794709647266175, y = 0.60264517636691295}, {x = 6, y = 0}}
   2496 (gdb) p startEdge
   2497 $4 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 3.7591290556309662, y = 5.8567420025705115}}
   2498 (gdb) p endEdge
   2499 $5 = {{x = 6, y = 0}, {x = 7.8079355291007388, y = 4.0488064734697726}}
   2500 </div>
   2501 
   2502 <div id="cubicOp53d">
   2503   SimplifyNew_Test [cubicOp53d]
   2504 {{0,3}, {1,2}, {5,3}, {2,1}},
   2505 {{2,1}, {0,3}},
   2506 op difference
   2507 {{3,5}, {1,2}, {3,0}, {2,1}},
   2508 {{2,1}, {3,5}},
   2509 debugShowCubicIntersection no self intersect {{3,5}, {1,2}, {3,0}, {2,1}}
   2510 debugShowCubicLineIntersection wtTs[0]=0 {{3,5}, {1,2}, {3,0}, {2,1}} {{3,5}} wtTs[1]=0.5 {{2.125,1.5}} wtTs[2]=1 {{2,1}} wnTs[0]=1 {{2,1}, {3,5}} wnTs[1]=0.125 wnTs[2]=0
   2511 debugShowCubicIntersection wtTs[0]=0.32953467 {{3,5}, {1,2}, {3,0}, {2,1}} {{2.0754128281547217,2.4315376490509659}} wtTs[1]=0.59235675 {{2.2015477442470841,1.1371488033015213}} wtTs[2]=1 {{2,1}} wnTs[0]=0.414081 {{0,3}, {1,2}, {5,3}, {2,1}} wnTs[1]=0.976311205 wnTs[2]=1
   2512 debugShowCubicLineIntersection wtTs[0]=1 {{3,5}, {1,2}, {3,0}, {2,1}} {{2,1}} wnTs[0]=0 {{2,1}, {0,3}}
   2513 debugShowCubicLineIntersection wtTs[0]=0.467845317 {{0,3}, {1,2}, {5,3}, {2,1}} {{2.3494328385891112,2.3977313543564462}} wtTs[1]=1 {{2,1}} wnTs[0]=0.349433 {{2,1}, {3,5}} wnTs[1]=0
   2514 debugShowLineIntersection wtTs[0]=-0 {{2,1}, {3,5}} {{2,1}} wnTs[0]=0 {{2,1}, {0,3}}
   2515 debugShowCubicIntersection no self intersect {{0,3}, {1,2}, {5,3}, {2,1}}
   2516 debugShowCubicLineIntersection wtTs[0]=0 {{0,3}, {1,2}, {5,3}, {2,1}} {{0,3}} wtTs[1]=1 {{2,1}} wnTs[0]=1 {{2,1}, {0,3}} wnTs[1]=0
   2517 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0 (3,5) tEnd=0.32953467 other=4 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   2518 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=? windValue=1 oppValue=0
   2519 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
   2520 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.59235675 (2.20154786,1.13714886) tEnd=1 other=1 otherT=0.976311205 otherIndex=3 windSum=? windValue=1 oppValue=0
   2521 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2522 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   2523 debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   2524 debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   2525 debugShowActiveSpans id=4 (2,1 3,5) t=0.349432839 (2.34943295,2.3977313) tEnd=1 other=1 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
   2526 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0 (0,3) tEnd=0.414080655 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2527 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=? windValue=1 oppValue=0
   2528 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
   2529 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=? windValue=1 oppValue=0
   2530 debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=3 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
   2531 debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=4 otherT=-0 otherIndex=2 windSum=? windValue=1 oppValue=0
   2532 debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=1 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
   2533 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2534 debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2535 debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2536 debugShowSort [2] {{2,1}, {3,5}} tStart=0 tEnd=0.125 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2537 debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2538 markWinding id=3 (3,5 1,2 3,0 2,1) t=0.59235675 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2539 markWinding id=3 (3,5 1,2 3,0 2,1) t=0.59235675 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2540 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2541 markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0.59235675 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2542 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2543 debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2544 debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2545 debugShowSort [2] {{2,1}, {3,5}} tStart=0 tEnd=0.125 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2546 debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2547 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2548 debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2549 debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2550 debugShowSort [2] {{2,1}, {3,5}} tStart=0 tEnd=0.125 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2551 debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2552 markWinding id=2 (2,1 0,3) t=0 [0] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2553 markWinding id=2 (2,1 0,3) t=0 [1] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2554 markWinding id=2 (2,1 0,3) t=0 [2] (2,1) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2555 markWinding id=1 (0,3 1,2 5,3 2,1) t=0 [0] (0,3) tEnd=0.414080655 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2556 markWinding id=4 (2,1 3,5) t=0 [0] (2,1) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2557 markWinding id=4 (2,1 3,5) t=0 [1] (2,1) tEnd=-0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2558 markWinding id=4 (2,1 3,5) t=-0 [2] (2,1) tEnd=0.125 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2559 markWinding id=1 (0,3 1,2 5,3 2,1) t=0.976311205 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2560 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0 (3,5) tEnd=0.32953467 other=4 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   2561 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=? windValue=1 oppValue=0
   2562 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
   2563 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2564 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   2565 debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2566 debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   2567 debugShowActiveSpans id=4 (2,1 3,5) t=0.349432839 (2.34943295,2.3977313) tEnd=1 other=1 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
   2568 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0 (0,3) tEnd=0.414080655 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2569 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=? windValue=1 oppValue=0
   2570 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
   2571 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2572 debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=3 otherT=1 otherIndex=6 windSum=1 windValue=1 oppValue=0
   2573 debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=4 otherT=-0 otherIndex=2 windSum=1 windValue=1 oppValue=0
   2574 debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=1 otherT=1 otherIndex=6 windSum=1 windValue=1 oppValue=0
   2575 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2576 markDoneBinary id=2 (2,1 0,3) t=0 [0] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   2577 markDoneBinary id=2 (2,1 0,3) t=0 [1] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   2578 markDoneBinary id=2 (2,1 0,3) t=0 [2] (2,1) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   2579 markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0 [0] (0,3) tEnd=0.414080655 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   2580 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
   2581 debugShowSort [0] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0.467845317 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   2582 debugShowSort [1] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0.5 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   2583 debugShowSort [2] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
   2584 debugShowSort [3] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   2585 findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
   2586 debugShowSort [2] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2587 debugShowSort [3] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=1
   2588 debugShowSort [0] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0.467845317 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2589 debugShowSort [1] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0.5 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=1
   2590 markWinding id=3 (3,5 1,2 3,0 2,1) t=0 [0] (3,5) tEnd=0.32953467 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
   2591 markWinding id=4 (2,1 3,5) t=0.349432839 [4] (2.34943295,2.3977313) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
   2592 markWinding id=1 (0,3 1,2 5,3 2,1) t=0.414080655 [1] (2.07541275,2.43153763) tEnd=0.467845317 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1
   2593 markWinding id=3 (3,5 1,2 3,0 2,1) t=0.32953467 [1] (2.07541275,2.43153763) tEnd=0.5 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
   2594 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0 (3,5) tEnd=0.32953467 other=4 otherT=1 otherIndex=5 windSum=-2 windValue=1 oppValue=0
   2595 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=-2 windValue=1 oppValue=0
   2596 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
   2597 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2598 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   2599 debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2600 debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   2601 debugShowActiveSpans id=4 (2,1 3,5) t=0.349432839 (2.34943295,2.3977313) tEnd=1 other=1 otherT=0.467845317 otherIndex=2 windSum=-2 windValue=1 oppValue=0
   2602 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=1 windValue=1 oppValue=0
   2603 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
   2604 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2605 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   2606 markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0 [0] (3,5) tEnd=0.32953467 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
   2607 markDoneBinary id=4 (2,1 3,5) t=0.349432839 [4] (2.34943295,2.3977313) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
   2608 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=-2 windValue=1 oppValue=0
   2609 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
   2610 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2611 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   2612 debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2613 debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   2614 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=1 windValue=1 oppValue=0
   2615 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
   2616 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2617 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2618 markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0.414080655 [1] (2.07541275,2.43153763) tEnd=0.467845317 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1
   2619 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=-2 windValue=1 oppValue=0
   2620 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
   2621 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2622 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   2623 debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2624 debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   2625 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
   2626 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2627 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   2628 markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0.32953467 [1] (2.07541275,2.43153763) tEnd=0.5 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1
   2629 debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
   2630 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2631 debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   2632 debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   2633 debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   2634 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
   2635 debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2636 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2637 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   2638 debugShowSort [2] {{2,1}, {3,5}} tStart=-0 tEnd=0.125 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   2639 debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
   2640 debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2641 debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   2642 findNextOp firstIndex=[2] sign=-1
   2643 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2644 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2645 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2646 markDoneBinary id=4 (2,1 3,5) t=0 [1] (2,1) tEnd=-0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2647 markDoneBinary id=4 (2,1 3,5) t=0 [0] (2,1) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2648 markDoneBinary id=4 (2,1 3,5) t=-0 [2] (2,1) tEnd=0.125 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2649 findNextOp from:[4] to:[1] start=5 end=3
   2650 bridgeOp current id=4 from=(2.125,1.5) to=(2,1)
   2651 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2652 debugShowSort [1] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.976311205 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2653 debugShowSort [2] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.59235675 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   2654 debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.976311205 tEnd=0.467845317 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2655 debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.59235675 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   2656 findNextOp firstIndex=[1] sign=-1
   2657 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2658 markWinding id=3 (3,5 1,2 3,0 2,1) t=0.5 [2] (2.125,1.5) tEnd=0.59235675 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2659 findNextOp chase.append id=3
   2660 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2661 markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0.467845317 [2] (2.34943295,2.3977313) tEnd=0.976311205 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2662 findNextOp chase.append id=1
   2663 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2664 markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0.976311205 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2665 findNextOp from:[1] to:[3] start=3 end=2
   2666 bridgeOp current id=1 from=(2,1) to=(2.20154786,1.13714886)
   2667 path.moveTo(2.125,1.5);
   2668 path.lineTo(2,1);
   2669 path.cubicTo(2.07106638,1.04737759, 2.13820457,1.0930717, 2.20154786,1.13714886);
   2670 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   2671 debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.5 tEnd=0.59235675 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   2672 debugShowSort [1] {{2,1}, {3,5}} tStart=0.125 tEnd=-0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2673 debugShowSort [2] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.5 tEnd=0.32953467 sign=1 windValue=1 windSum=-2 -1->-2 (max=-2) done=1 tiny=0 opp=0
   2674 debugShowSort [3] {{2,1}, {3,5}} tStart=0.125 tEnd=0.349432839 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
   2675 findNextOp firstIndex=[0] sign=-1
   2676 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2677 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   2678 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   2679 markDoneBinary id=4 (2,1 3,5) t=0.125 [3] (2.125,1.5) tEnd=0.349432839 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
   2680 findNextOp chase.append id=4
   2681 markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0.5 [2] (2.125,1.5) tEnd=0.59235675 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2682 findNextOp from:[3] to:[4] start=3 end=2
   2683 bridgeOp current id=3 from=(2.20154786,1.13714886) to=(2.125,1.5)
   2684 path.cubicTo(2.17544317,1.23998928, 2.14808917,1.36146486, 2.125,1.5);
   2685 path.close();
   2686 assemble
   2687 assemble contour    start=(2.125,1.5) end=(2.125,1.5)
   2688 </div>
   2689 
   2690 <div id="cubicOp53da">
   2691 $1 = {{fX = 2.20154786, fY = 1.13714886}, {fX = 2.31676745, fY = 0.683232486}, {fX = 2.40764332, fY = 0.592356741}, {fX = 2, fY = 1}}
   2692 </div>
   2693 
   2694 <div id="cubicOp53db">
   2695 $5 = {{x = 2.2015477442470841, y = 1.1371488033015216}, {x = 2.3167674423028313, y = 0.68323255769716895}, {x = 2.4076432497431508, y = 0.59235675025684875}, {x = 2, y = 1}}
   2696 (gdb) p startEdge
   2697 $2 = {{x = 2.2015477442470841, y = 1.1371488033015216}, {x = 2.6554639898514365, y = 1.2523685013572687}}
   2698 (gdb) p endEdge
   2699 $3 = {{x = 2, y = 1}, {x = 2.4076432497431512, y = 1.4076432497431508}}
   2700 </div>
   2701 
   2702 <div id="cubicOp54d">
   2703   SimplifyNew_Test [cubicOp54d]
   2704 {{0,4}, {1,3}, {5,4}, {4,2}},
   2705 {{4,2}, {0,4}},
   2706 op difference
   2707 {{4,5}, {2,4}, {4,0}, {3,1}},
   2708 {{3,1}, {4,5}},
   2709 debugShowCubicIntersection no self intersect {{4,5}, {2,4}, {4,0}, {3,1}}
   2710 debugShowCubicLineIntersection wtTs[0]=0 {{4,5}, {2,4}, {4,0}, {3,1}} {{4,5}} wtTs[1]=0.583333333 {{3.1938657407407405,1.7754629629629624}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {4,5}} wnTs[1]=0.193865741 wnTs[2]=0
   2711 debugShowCubicIntersection no intersect {{4,5}, {2,4}, {4,0}, {3,1}} {{0,4}, {1,3}, {5,4}, {4,2}}
   2712 debugShowCubicLineIntersection wtTs[0]=0.467349523 {{4,5}, {2,4}, {4,0}, {3,1}} {{3.1023548730676489,2.4488225634661758}} wnTs[0]=0.224411 {{4,2}, {0,4}}
   2713 debugShowCubicLineIntersection wtTs[0]=0.649488354 {{0,4}, {1,3}, {5,4}, {4,2}} {{3.5531651685912107,3.2126606743648427}} wnTs[0]=0.553165 {{3,1}, {4,5}}
   2714 debugShowLineIntersection wtTs[0]=0.333333333 {{3,1}, {4,5}} {{3.333333333333333,2.333333333333333}} wnTs[0]=0.166667 {{4,2}, {0,4}}
   2715 debugShowCubicIntersection no self intersect {{0,4}, {1,3}, {5,4}, {4,2}}
   2716 debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {1,3}, {5,4}, {4,2}} {{0,4}} wtTs[1]=0.166666667 {{0.7129629629629628,3.6435185185185186}} wtTs[2]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,4}} wnTs[1]=0.821759259 wnTs[2]=0
   2717 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2718 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.467349523 (3.10235476,2.4488225) tEnd=0.583333333 other=2 otherT=0.224411282 otherIndex=2 windSum=? windValue=1 oppValue=0
   2719 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.583333333 (3.19386578,1.77546299) tEnd=1 other=4 otherT=0.193865741 otherIndex=1 windSum=? windValue=1 oppValue=0
   2720 debugShowActiveSpans id=4 (3,1 4,5) t=0 (3,1) tEnd=0.193865741 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2721 debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=? windValue=1 oppValue=0
   2722 debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2723 debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=? windValue=1 oppValue=0
   2724 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2725 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
   2726 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
   2727 debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2728 debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=? windValue=1 oppValue=0
   2729 debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=? windValue=1 oppValue=0
   2730 debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2731 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2732 debugShowSort [0] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=1 tEnd=0.583333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2733 debugShowSort [1] {{3,1}, {4,5}} tStart=0 tEnd=0.193865741 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2734 findTop swap serpentine=0
   2735 markWinding id=3 (4,5 2,4 4,0 3,1) t=0.583333333 [2] (3.19386578,1.77546299) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2736 markWinding id=3 (4,5 2,4 4,0 3,1) t=0.583333333 [2] (3.19386578,1.77546299) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2737 markWinding id=4 (3,1 4,5) t=0 [0] (3,1) tEnd=0.193865741 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2738 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2739 markDoneBinary id=3 (4,5 2,4 4,0 3,1) t=0.583333333 [2] (3.19386578,1.77546299) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2740 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2741 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.467349523 (3.10235476,2.4488225) tEnd=0.583333333 other=2 otherT=0.224411282 otherIndex=2 windSum=? windValue=1 oppValue=0
   2742 debugShowActiveSpans id=4 (3,1 4,5) t=0 (3,1) tEnd=0.193865741 other=3 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   2743 debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=? windValue=1 oppValue=0
   2744 debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2745 debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=? windValue=1 oppValue=0
   2746 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2747 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
   2748 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
   2749 debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2750 debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=? windValue=1 oppValue=0
   2751 debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=? windValue=1 oppValue=0
   2752 debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2753 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2754 markDoneBinary id=4 (3,1 4,5) t=0 [0] (3,1) tEnd=0.193865741 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2755 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2756 debugShowSort [0] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   2757 debugShowSort [1] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2758 debugShowSort [2] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=0.467349523 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2759 debugShowSort [3] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0.333333333 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2760 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2761 debugShowSort [0] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   2762 debugShowSort [1] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2763 debugShowSort [2] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=0.467349523 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2764 debugShowSort [3] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0.333333333 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2765 markWinding id=3 (4,5 2,4 4,0 3,1) t=0.467349523 [1] (3.10235476,2.4488225) tEnd=0.583333333 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2766 markWinding id=4 (3,1 4,5) t=0.193865741 [1] (3.19386578,1.77546299) tEnd=0.333333333 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2767 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2768 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.467349523 (3.10235476,2.4488225) tEnd=0.583333333 other=2 otherT=0.224411282 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2769 debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2770 debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2771 debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=? windValue=1 oppValue=0
   2772 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2773 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
   2774 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
   2775 debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2776 debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=? windValue=1 oppValue=0
   2777 debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=? windValue=1 oppValue=0
   2778 debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2779 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2780 markDoneBinary id=3 (4,5 2,4 4,0 3,1) t=0.467349523 [1] (3.10235476,2.4488225) tEnd=0.583333333 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2781 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   2782 debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   2783 debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   2784 debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   2785 debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   2786 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   2787 debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   2788 debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2789 debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2790 debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2791 markWinding id=2 (4,2 0,4) t=0.224411282 [2] (3.10235476,2.4488225) tEnd=0.821759259 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2792 markWinding id=3 (4,5 2,4 4,0 3,1) t=0 [0] (4,5) tEnd=0.467349523 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2793 markWinding id=4 (3,1 4,5) t=0.553165169 [3] (3.5531652,3.21266079) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   2794 markWinding id=2 (4,2 0,4) t=0.166666667 [1] (3.33333325,2.33333325) tEnd=0.224411282 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   2795 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2796 debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2797 debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2798 debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2799 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2800 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
   2801 debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
   2802 debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2803 debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=1 windValue=1 oppValue=0
   2804 debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=1 windValue=1 oppValue=0
   2805 debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   2806 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2807 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   2808 debugShowSort [1] {{4,2}, {0,4}} tStart=0.821759259 tEnd=0.224411282 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2809 debugShowSort [2] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2810 debugShowSort [3] {{4,2}, {0,4}} tStart=0.821759259 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2811 debugShowSort [0] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0.649488354 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2812 findNextOp firstIndex=[1] sign=1
   2813 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2814 markWinding id=1 (0,4 1,3 5,4 4,2) t=0 [0] (0,4) tEnd=0.166666667 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2815 markWinding id=2 (4,2 0,4) t=0.821759259 [3] (0.712962985,3.64351845) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   2816 findNextOp chase.append id=2
   2817 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2818 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2819 markWinding id=1 (0,4 1,3 5,4 4,2) t=0.166666667 [1] (0.712962985,3.64351845) tEnd=0.649488354 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2820 findNextOp chase.append id=1
   2821 markDoneBinary id=2 (4,2 0,4) t=0.224411282 [2] (3.10235476,2.4488225) tEnd=0.821759259 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2822 findNextOp from:[2] to:[1] start=1 end=0
   2823 bridgeOp current id=2 from=(3.10235476,2.4488225) to=(0.712962985,3.64351845)
   2824 findNextOp simple
   2825 markDoneBinary id=1 (0,4 1,3 5,4 4,2) t=0 [0] (0,4) tEnd=0.166666667 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2826 bridgeOp current id=1 from=(0.712962985,3.64351845) to=(0,4)
   2827 path.moveTo(3.10235476,2.4488225);
   2828 path.lineTo(0.712962985,3.64351845);
   2829 path.cubicTo(0.416666657,3.72222233, 0.166666672,3.83333325, 0,4);
   2830 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   2831 debugShowSort [3] {{4,2}, {0,4}} tStart=0.821759259 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   2832 debugShowSort [0] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0.649488354 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2833 debugShowSort [1] {{4,2}, {0,4}} tStart=0.821759259 tEnd=0.224411282 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   2834 debugShowSort [2] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   2835 findNextOp firstIndex=[3] sign=-1
   2836 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2837 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2838 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2839 markDoneBinary id=2 (4,2 0,4) t=0.821759259 [3] (0.712962985,3.64351845) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2840 findNextOp from:[2] to:[1] start=1 end=2
   2841 bridgeOp current id=2 from=(0,4) to=(0.712962985,3.64351845)
   2842 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   2843 debugShowSort [2] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.649488354 tEnd=0.166666667 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2844 debugShowSort [3] {{3,1}, {4,5}} tStart=0.553165169 tEnd=1 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=0 tiny=0 opp=1
   2845 debugShowSort [0] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.649488354 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   2846 debugShowSort [1] {{3,1}, {4,5}} tStart=0.553165169 tEnd=0.333333333 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2847 findNextOp firstIndex=[2] sign=1
   2848 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2849 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   2850 markDoneBinary id=1 (0,4 1,3 5,4 4,2) t=0.649488354 [2] (3.5531652,3.21266079) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2851 markDoneBinary id=2 (4,2 0,4) t=0 [0] (4,2) tEnd=0.166666667 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2852 findNextOp chase.append id=2
   2853 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   2854 markWinding id=4 (3,1 4,5) t=0.333333333 [2] (3.33333325,2.33333325) tEnd=0.553165169 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2855 findNextOp chase.append id=4
   2856 markDoneBinary id=1 (0,4 1,3 5,4 4,2) t=0.166666667 [1] (0.712962985,3.64351845) tEnd=0.649488354 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2857 findNextOp from:[1] to:[4] start=3 end=2
   2858 bridgeOp current id=1 from=(0.712962985,3.64351845) to=(3.5531652,3.21266079)
   2859 path.lineTo(0.712962985,3.64351845);
   2860 path.cubicTo(1.57131267,3.41551948, 2.81819034,3.45948982, 3.5531652,3.21266079);
   2861 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
   2862 debugShowSort [3] {{3,1}, {4,5}} tStart=0.333333333 tEnd=0.553165169 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2863 debugShowSort [0] {{4,2}, {0,4}} tStart=0.166666667 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   2864 debugShowSort [1] {{3,1}, {4,5}} tStart=0.333333333 tEnd=0.193865741 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=0 tiny=0 opp=0
   2865 debugShowSort [2] {{4,2}, {0,4}} tStart=0.166666667 tEnd=0.224411282 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=1
   2866 findNextOp firstIndex=[3] sign=-1
   2867 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2868 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2869 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2870 markDoneBinary id=4 (3,1 4,5) t=0.333333333 [2] (3.33333325,2.33333325) tEnd=0.553165169 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   2871 findNextOp from:[4] to:[2] start=1 end=2
   2872 bridgeOp current id=4 from=(3.5531652,3.21266079) to=(3.33333325,2.33333325)
   2873 findNextOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
   2874 debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   2875 debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   2876 debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   2877 debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=1
   2878 findNextOp firstIndex=[0] sign=1
   2879 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2880 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2881 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2882 markDoneBinary id=2 (4,2 0,4) t=0.166666667 [1] (3.33333325,2.33333325) tEnd=0.224411282 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   2883 findNextOp from:[2] to:[2] start=2 end=3
   2884 sharedlibrary apply-load-rules all
   2885 bridgeOp current id=2 from=(3.33333325,2.33333325) to=(3.10235476,2.4488225)
   2886 path.lineTo(3.33333325,2.33333325);
   2887 path.lineTo(3.10235476,2.4488225);
   2888 path.close();
   2889 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2890 debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2891 debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2892 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   2893 markDoneBinary id=4 (3,1 4,5) t=0.193865741 [1] (3.19386578,1.77546299) tEnd=0.333333333 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   2894 debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   2895 debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=-1 windValue=1 oppValue=0
   2896 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   2897 findNextOp simple
   2898 markDoneBinary id=4 (3,1 4,5) t=0.553165169 [3] (3.5531652,3.21266079) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2899 bridgeOp current id=4 from=(3.5531652,3.21266079) to=(4,5)
   2900 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
   2901 debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   2902 debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   2903 debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   2904 debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   2905 findNextOp firstIndex=[3] sign=1
   2906 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   2907 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   2908 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   2909 markDoneBinary id=3 (4,5 2,4 4,0 3,1) t=0 [0] (4,5) tEnd=0.467349523 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   2910 findNextOp from:[3] to:[2] start=2 end=3
   2911 bridgeOp current id=3 from=(4,5) to=(3.10235476,2.4488225)
   2912 path.moveTo(3.5531652,3.21266079);
   2913 path.lineTo(4,5);
   2914 path.cubicTo(3.06530094,4.53265047, 3.00426435,3.41005421, 3.10235476,2.4488225);
   2915 </div>
   2916 
   2917 <div id="cubicOp54da">
   2918 computed quadratics given
   2919   {{0,4}, {1,3}, {5,4}, {4,2}},
   2920   {{4,5}, {2,4}, {4,0}, {3,1}},
   2921 computed quadratics set 1
   2922   {{0,4}, {0.313151522,3.71221453}, {0.886767898,3.60197476}},
   2923   {{0.886767898,3.60197476}, {1.46038427,3.491735}, {2.10714698,3.44196686}},
   2924   {{2.10714698,3.44196686}, {3.12180288,3.38575704}, {3.75968569,3.1281838}},
   2925   {{3.75968569,3.1281838}, {4.3975685,2.87061055}, {4,2}},
   2926 computed quadratics set 2
   2927   {{4,5}, {3.59856947,4.79217123}, {3.39068129,4.44939202}},
   2928   {{3.39068129,4.44939202}, {3.03659239,3.81843234}, {3.06844529,3.02100922}},
   2929   {{3.06844529,3.02100922}, {3.09985637,2.22825976}, {3.22177695,1.60368348}},
   2930   {{3.22177695,1.60368348}, {3.35239933,0.944897345}, {3.25461667,0.846601983}},
   2931   {{3.25461667,0.846601983}, {3.19302952,0.807536747}, {3,1}},
   2932 </div>
   2933 
   2934 <div id="cubicOp54db">
   2935   {{3.39068129,4.44939202}, {3.03659239,3.81843234}, {3.06844529,3.02100922}},
   2936   {{2.10714698,3.44196686}, {3.12180288,3.38575704}, {3.75968569,3.1281838}},
   2937 </div>
   2938 
   2939 <div id="cubicOp54dc">
   2940 (gdb) p cSub1
   2941 $2 = {{x = 3.0774019473063863, y = 3.35198509346713}, {x = 3.0763003260366699, y = 3.3355427495692078}, {x = 3.0753041923884408, y = 3.3190757607779853}, {x = 3.0744102085015879, y = 3.3025879417907196}}
   2942 (gdb) p cSub2
   2943 $3 = {{x = 3.053913680774329, y = 3.3310471586283938}, {x = 3.0685526504546785, y = 3.3285797268698434}, {x = 3.0831050944309708, y = 3.3260658459407866}, {x = 3.0975671980059394, y = 3.3235031316554351}}
   2944 (gdb) p s1
   2945 $4 = {{x = 3.0774019473063863, y = 3.35198509346713}, {x = 3.0757503498668397, y = 3.327320623945933}, {x = 3.0744102085015879, y = 3.3025879417907196}}
   2946 (gdb) p s2
   2947 $5 = {{x = 3.053913680774329, y = 3.3310471586283938}, {x = 3.0758730889691694, y = 3.3273466070370152}, {x = 3.0975671980059394, y = 3.3235031316554351}}
   2948 </div>
   2949 
   2950 <div id="cubicOp54dd">
   2951 {{x = 3.053913680774329, y = 3.3310471586283938}, {x = 3.0758730889691694, y = 3.3273466070370152}, {x = 3.0975671980059394, y = 3.3235031316554351}}
   2952 {{x = 3.0744102085015879, y = 3.3025879417907196}, {x = 3.0774019473063863, y = 3.35198509346713}}
   2953 </div>
   2954 
   2955 <div id="cubicOp55d">
   2956   SimplifyNew_Test [cubicOp55d]
   2957 {{0,5}, {1,3}, {3,2}, {5,0}},
   2958 {{5,0}, {0,5}},
   2959 op difference
   2960 {{2,3}, {0,5}, {5,0}, {3,1}},
   2961 {{3,1}, {2,3}},
   2962 debugShowCubicIntersection no self intersect {{0,5}, {1,3}, {3,2}, {5,0}}
   2963 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {1,3}, {3,2}, {5,0}} {{0,5}} wtTs[1]=1 {{5,0}} wnTs[0]=1 {{5,0}, {0,5}} wnTs[1]=0
   2964 debugShowCubicIntersection wtTs[0]=0.658239823 {{0,5}, {1,3}, {3,2}, {5,0}} {{2.9893565350663849,1.7799961946192431}} wnTs[0]=0.613267 {{2,3}, {0,5}, {5,0}, {3,1}}
   2965 debugShowCubicLineIntersection wtTs[0]=0.540876747 {{0,5}, {1,3}, {3,2}, {5,0}} {{2.3420409812806477,2.3159180374387045}} wnTs[0]=0.657959 {{3,1}, {2,3}}
   2966 debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {0,5}, {5,0}, {3,1}} {{2,3}} wnTs[0]=0.6 {{5,0}, {0,5}}
   2967 debugShowLineIntersection wtTs[0]=0.6 {{5,0}, {0,5}} {{2,3}} wnTs[0]=1 {{3,1}, {2,3}}
   2968 debugShowCubicIntersection no self intersect {{2,3}, {0,5}, {5,0}, {3,1}}
   2969 debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {0,5}, {5,0}, {3,1}} {{2,3}} wtTs[1]=0.4 {{2.0640000000000005,2.871999999999999}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {2,3}} wnTs[1]=0.936 wnTs[2]=0
   2970 debugShowActiveSpans id=1 (0,5 1,3 3,2 5,0) t=0 (0,5) tEnd=0.540876747 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2971 debugShowActiveSpans id=1 (0,5 1,3 3,2 5,0) t=0.540876747 (2.34204102,2.31591797) tEnd=0.658239823 other=4 otherT=0.657959019 otherIndex=1 windSum=? windValue=1 oppValue=0
   2972 debugShowActiveSpans id=1 (0,5 1,3 3,2 5,0) t=0.658239823 (2.98935652,1.77999616) tEnd=1 other=3 otherT=0.613266786 otherIndex=3 windSum=? windValue=1 oppValue=0
   2973 debugShowActiveSpans id=2 (5,0 0,5) t=0 (5,0) tEnd=0.6 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2974 debugShowActiveSpans id=2 (5,0 0,5) t=0.6 (2,3) tEnd=1 other=3 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   2975 debugShowActiveSpans id=2 (5,0 0,5) t=0.6 (2,3) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   2976 debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0 (2,3) tEnd=0.4 other=2 otherT=0.6 otherIndex=1 windSum=? windValue=1 oppValue=0
   2977 debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0 (2,3) tEnd=0.4 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2978 debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0.4 (2.06399989,2.87199998) tEnd=0.613266786 other=4 otherT=0.936 otherIndex=2 windSum=? windValue=1 oppValue=0
   2979 debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0.613266786 (2.98935652,1.77999616) tEnd=1 other=1 otherT=0.658239823 otherIndex=2 windSum=? windValue=1 oppValue=0
   2980 debugShowActiveSpans id=4 (3,1 2,3) t=0 (3,1) tEnd=0.657959019 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   2981 debugShowActiveSpans id=4 (3,1 2,3) t=0.657959019 (2.34204102,2.31591797) tEnd=0.936 other=1 otherT=0.540876747 otherIndex=1 windSum=? windValue=1 oppValue=0
   2982 debugShowActiveSpans id=4 (3,1 2,3) t=0.936 (2.06399989,2.87199998) tEnd=1 other=3 otherT=0.4 otherIndex=2 windSum=? windValue=1 oppValue=0
   2983 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   2984 debugShowSort [0] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=1 tEnd=0.658239823 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   2985 debugShowSort [1] {{5,0}, {0,5}} tStart=0 tEnd=0.6 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   2986 findTop swap serpentine=0
   2987 markWinding id=1 (0,5 1,3 3,2 5,0) t=0.658239823 [2] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2988 markWinding id=1 (0,5 1,3 3,2 5,0) t=0.658239823 [2] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   2989 markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   2990 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   2991 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   2992 debugShowSort [0] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.658239823 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   2993 debugShowSort [1] {{2,3}, {0,5}, {5,0}, {3,1}} tStart=0.613266786 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   2994 debugShowSort [2] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.658239823 tEnd=0.540876747 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   2995 debugShowSort [3] {{2,3}, {0,5}, {5,0}, {3,1}} tStart=0.613266786 tEnd=0.4 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   2996 findNextOp firstIndex=[0] sign=-1
   2997 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   2998 markWinding id=3 (2,3 0,5 5,0 3,1) t=0.613266786 [3] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   2999 markWinding id=4 (3,1 2,3) t=0 [0] (3,1) tEnd=0.657959019 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   3000 findNextOp chase.append id=4
   3001 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3002 markDoneBinary id=1 (0,5 1,3 3,2 5,0) t=0.540876747 [1] (2.34204102,2.31591797) tEnd=0.658239823 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   3003 findNextOp chase.append id=1
   3004 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   3005 markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0.4 [2] (2.06399989,2.87199998) tEnd=0.613266786 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3006 findNextOp chase.append id=3
   3007 markDoneBinary id=1 (0,5 1,3 3,2 5,0) t=0.658239823 [2] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3008 findNextOp from:[1] to:[3] start=3 end=4
   3009 bridgeOp current id=1 from=(5,0) to=(2.98935652,1.77999616)
   3010 path.moveTo(5,0);
   3011 path.cubicTo(4.31647968,0.683520317, 3.63295937,1.25024068, 2.98935652,1.77999616);
   3012 findNextOp simple
   3013 markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0.613266786 [3] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   3014 bridgeOp current id=3 from=(2.98935652,1.77999616) to=(3,1)
   3015 path.cubicTo(3.49999475,1.123909, 3.77346635,0.613266766, 3,1);
   3016 findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
   3017 debugShowSort [1] {{3,1}, {2,3}} tStart=0.657959019 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   3018 debugShowSort [2] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.540876747 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3019 debugShowSort [3] {{3,1}, {2,3}} tStart=0.657959019 tEnd=0.936 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3020 debugShowSort [0] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.540876747 tEnd=0.658239823 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   3021 findNextOp firstIndex=[1] sign=1
   3022 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3023 markWinding id=1 (0,5 1,3 3,2 5,0) t=0 [0] (0,5) tEnd=0.540876747 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3024 markWinding id=2 (5,0 0,5) t=0.6 [1] (2,3) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3025 markWinding id=2 (5,0 0,5) t=0.6 [2] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3026 findNextOp chase.append id=2
   3027 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   3028 markDoneBinary id=4 (3,1 2,3) t=0.657959019 [1] (2.34204102,2.31591797) tEnd=0.936 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3029 findNextOp chase.append id=4
   3030 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3031 markDoneBinary id=4 (3,1 2,3) t=0 [0] (3,1) tEnd=0.657959019 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
   3032 findNextOp from:[4] to:[1] start=1 end=0
   3033 bridgeOp current id=4 from=(3,1) to=(2.34204102,2.31591797)
   3034 findNextOp simple
   3035 markDoneBinary id=1 (0,5 1,3 3,2 5,0) t=0 [0] (0,5) tEnd=0.540876747 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3036 bridgeOp current id=1 from=(2.34204102,2.31591797) to=(0,5)
   3037 path.lineTo(2.34204102,2.31591797);
   3038 path.cubicTo(1.37430108,3.12904072, 0.540876746,3.91824651, 0,5);
   3039 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3040 debugShowSort [3] {{5,0}, {0,5}} tStart=0.6 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3041 debugShowSort [0] {{5,0}, {0,5}} tStart=0.6 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   3042 debugShowSort [1] {{3,1}, {2,3}} tStart=1 tEnd=0.936 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3043 debugShowSort [2] {{2,3}, {0,5}, {5,0}, {3,1}} tStart=0 tEnd=0.4 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   3044 findNextOp firstIndex=[3] sign=-1
   3045 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3046 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   3047 markDoneBinary id=4 (3,1 2,3) t=0.936 [2] (2.06399989,2.87199998) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3048 findNextOp chase.append id=4
   3049 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   3050 markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0 [0] (2,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3051 markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0 [1] (2,3) tEnd=0.4 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3052 findNextOp chase.append id=3
   3053 markDoneBinary id=2 (5,0 0,5) t=0.6 [1] (2,3) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3054 markDoneBinary id=2 (5,0 0,5) t=0.6 [2] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3055 findNextOp from:[2] to:[2] start=2 end=0
   3056 bridgeOp current id=2 from=(0,5) to=(2,3)
   3057 findNextOp simple
   3058 markDoneBinary id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3059 bridgeOp current id=2 from=(2,3) to=(5,0)
   3060 path.lineTo(5,0);
   3061 path.close();
   3062 assemble
   3063 assemble contour    start=(5,0) end=(5,0)
   3064 </div>
   3065 
   3066 <div id="cubicOp55da">
   3067 $1 = {{x = 2.9893565350663844, y = 1.7799961946192431}, {x = 3.6329592934456443, y = 1.250240688218315}, {x = 4.3164796467228257, y = 0.68352035327717708}, {x = 5, y = 0}}
   3068 </div>
   3069 
   3070 <div id="cubicOp56da">
   3071 $3 = {{x = 3.2077595567431376, y = 1.2121007383531144}, {x = 3.0712003892698903, y = 0.91360430885366861}, {x = 2.6980028578011237, y = 0.76733238073295829}, {x = 2, y = 1}}
   3072 </div>
   3073 
   3074 <div id="cubicOp57da">
   3075 computed quadratics given
   3076   {{0,5}, {0,5}, {5,4}, {6,4}},
   3077   {{4,5}, {4,6}, {5,0}, {5,0}},
   3078 computed quadratics set 1
   3079   {{0,5}, {0.0833333333,4.98148148}, {1.33333333,4.74074074}},
   3080   {{1.33333333,4.74074074}, {2.58333333,4.5}, {4,4.25925926}},
   3081   {{4,4.25925926}, {5.41666667,4.01851852}, {6,4}},
   3082 computed quadratics set 2
   3083   {{4,5}, {4.0078125,5.32421875}, {4.15625,4.640625}},
   3084   {{4.15625,4.640625}, {4.3046875,3.95703125}, {4.5,2.875}},
   3085   {{4.5,2.875}, {4.6953125,1.79296875}, {4.84375,0.921875}},
   3086   {{4.84375,0.921875}, {4.9921875,0.05078125}, {5,0}},
   3087 </div>
   3088 
   3089 <div id="cubicOp58d">
   3090   SimplifyNew_Test [cubicOp58d]
   3091 {{0,5}, {3,4}, {6,5}, {5,3}},
   3092 {{5,3}, {0,5}},
   3093 op difference
   3094 {{5,6}, {3,5}, {5,0}, {4,3}},
   3095 {{4,3}, {5,6}},
   3096 debugShowCubicIntersection no self intersect {{5,6}, {3,5}, {5,0}, {4,3}}
   3097 debugShowCubicLineIntersection wtTs[0]=0 {{5,6}, {3,5}, {5,0}, {4,3}} {{5,6}} wtTs[1]=0.454545455 {{4.0946656649135988,3.2839969947407956}} wtTs[2]=1 {{4,3}} wnTs[0]=1 {{4,3}, {5,6}} wnTs[1]=0.0946656649 wnTs[2]=0
   3098 debugShowCubicIntersection wtTs[0]=0.297296392 {{5,6}, {3,5}, {5,0}, {4,3}} {{4.0929072920341625,4.362808103638363}} wnTs[0]=0.515735 {{0,5}, {3,4}, {6,5}, {5,3}}
   3099 debugShowCubicLineIntersection wtTs[0]=0.442158094 {{5,6}, {3,5}, {5,0}, {4,3}} {{4.0879917456946373,3.3648033017221453}} wnTs[0]=0.182402 {{5,3}, {0,5}}
   3100 debugShowCubicLineIntersection wtTs[0]=0.579011103 {{0,5}, {3,4}, {6,5}, {5,3}} {{4.4346371023199076,4.3039113069597246}} wnTs[0]=0.434637 {{4,3}, {5,6}}
   3101 debugShowLineIntersection wtTs[0]=0.117647059 {{4,3}, {5,6}} {{4.117647058823529,3.3529411764705879}} wnTs[0]=0.176471 {{5,3}, {0,5}}
   3102 debugShowCubicIntersection no self intersect {{0,5}, {3,4}, {6,5}, {5,3}}
   3103 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {3,4}, {6,5}, {5,3}} {{0,5}} wtTs[1]=1 {{5,3}} wnTs[0]=1 {{5,3}, {0,5}} wnTs[1]=0
   3104 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3105 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=? windValue=1 oppValue=0
   3106 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.442158094 (4.08799171,3.36480331) tEnd=0.454545455 other=2 otherT=0.182401651 otherIndex=2 windSum=? windValue=1 oppValue=0
   3107 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.454545455 (4.09466553,3.28399706) tEnd=1 other=4 otherT=0.0946656649 otherIndex=1 windSum=? windValue=1 oppValue=0
   3108 debugShowActiveSpans id=4 (4,3 5,6) t=0 (4,3) tEnd=0.0946656649 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3109 debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=? windValue=1 oppValue=0
   3110 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3111 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
   3112 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0 (0,5) tEnd=0.515734731 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3113 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
   3114 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3115 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3116 debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=? windValue=1 oppValue=0
   3117 debugShowActiveSpans id=2 (5,3 0,5) t=0.182401651 (4.08799171,3.36480331) tEnd=1 other=3 otherT=0.442158094 otherIndex=2 windSum=? windValue=1 oppValue=0
   3118 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   3119 debugShowSort [0] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=1 tEnd=0.454545455 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3120 debugShowSort [1] {{4,3}, {5,6}} tStart=0 tEnd=0.0946656649 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3121 markWinding id=3 (5,6 3,5 5,0 4,3) t=0.454545455 [3] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3122 markWinding id=4 (4,3 5,6) t=0 [0] (4,3) tEnd=0.0946656649 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3123 markWinding id=3 (5,6 3,5 5,0 4,3) t=0.454545455 [3] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3124 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   3125 markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0.454545455 [3] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3126 markDoneBinary id=4 (4,3 5,6) t=0 [0] (4,3) tEnd=0.0946656649 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3127 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   3128 debugShowSort [0] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   3129 debugShowSort [1] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   3130 debugShowSort [2] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=0.442158094 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
   3131 debugShowSort [3] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0.117647059 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
   3132 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   3133 debugShowSort [0] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   3134 debugShowSort [1] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   3135 debugShowSort [2] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=0.442158094 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
   3136 debugShowSort [3] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0.117647059 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
   3137 markWinding id=3 (5,6 3,5 5,0 4,3) t=0.442158094 [2] (4.08799171,3.36480331) tEnd=0.454545455 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
   3138 markWinding id=4 (4,3 5,6) t=0.0946656649 [1] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
   3139 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3140 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=? windValue=1 oppValue=0
   3141 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.442158094 (4.08799171,3.36480331) tEnd=0.454545455 other=2 otherT=0.182401651 otherIndex=2 windSum=-2 windValue=1 oppValue=0
   3142 debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
   3143 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3144 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
   3145 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0 (0,5) tEnd=0.515734731 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3146 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
   3147 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3148 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3149 debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=? windValue=1 oppValue=0
   3150 debugShowActiveSpans id=2 (5,3 0,5) t=0.182401651 (4.08799171,3.36480331) tEnd=1 other=3 otherT=0.442158094 otherIndex=2 windSum=? windValue=1 oppValue=0
   3151 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   3152 markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0.442158094 [2] (4.08799171,3.36480331) tEnd=0.454545455 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
   3153 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   3154 debugShowSort [0] {{5,3}, {0,5}} tStart=0.182401651 tEnd=0.176470588 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3155 debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.454545455 sign=-1 windValue=1 windSum=-2 ?->? (max=?) done=1 tiny=0 opp=1
   3156 debugShowSort [2] {{5,3}, {0,5}} tStart=0.182401651 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3157 debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.297296392 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   3158 findChaseOp debugShowSort contourWinding=-2 oppContourWinding=0 sign=-1
   3159 debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.454545455 sign=-1 windValue=1 windSum=-2 -2->-1 (max=-2) done=1 tiny=0 opp=0
   3160 debugShowSort [2] {{5,3}, {0,5}} tStart=0.182401651 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3161 debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.297296392 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
   3162 debugShowSort [0] {{5,3}, {0,5}} tStart=0.182401651 tEnd=0.176470588 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3163 markWinding id=2 (5,3 0,5) t=0.182401651 [2] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3164 markWinding id=1 (0,5 3,4 6,5 5,3) t=0 [0] (0,5) tEnd=0.515734731 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3165 markWinding id=3 (5,6 3,5 5,0 4,3) t=0.297296392 [1] (4.09290743,4.36280823) tEnd=0.442158094 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
   3166 markWinding id=2 (5,3 0,5) t=0.176470588 [1] (4.11764717,3.35294127) tEnd=0.182401651 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1
   3167 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3168 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=-2 windValue=1 oppValue=0
   3169 debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
   3170 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3171 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
   3172 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0 (0,5) tEnd=0.515734731 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3173 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
   3174 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3175 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3176 debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3177 debugShowActiveSpans id=2 (5,3 0,5) t=0.182401651 (4.08799171,3.36480331) tEnd=1 other=3 otherT=0.442158094 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3178 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3179 markDoneBinary id=2 (5,3 0,5) t=0.182401651 [2] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   3180 markDoneBinary id=1 (0,5 3,4 6,5 5,3) t=0 [0] (0,5) tEnd=0.515734731 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   3181 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3182 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=-2 windValue=1 oppValue=0
   3183 debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
   3184 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3185 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
   3186 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
   3187 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3188 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3189 debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3190 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   3191 markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0.297296392 [1] (4.09290743,4.36280823) tEnd=0.442158094 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1
   3192 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3193 debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
   3194 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3195 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
   3196 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
   3197 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3198 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3199 debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3200 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3201 markDoneBinary id=2 (5,3 0,5) t=0.176470588 [1] (4.11764717,3.35294127) tEnd=0.182401651 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1
   3202 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3203 debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
   3204 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3205 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
   3206 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
   3207 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3208 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3209 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   3210 markDoneBinary id=4 (4,3 5,6) t=0.0946656649 [1] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
   3211 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
   3212 debugShowSort [0] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0.579011103 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3213 debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0.442158094 sign=-1 windValue=1 windSum=-2 ?->? (max=?) done=1 tiny=0 opp=1
   3214 debugShowSort [2] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
   3215 debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   3216 findChaseOp debugShowSort contourWinding=-2 oppContourWinding=1 sign=-1
   3217 debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0.442158094 sign=-1 windValue=1 windSum=-2 -2->-1 (max=-2) done=1 tiny=0 opp=0
   3218 debugShowSort [2] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   3219 debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
   3220 debugShowSort [0] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0.579011103 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3221 markWinding id=3 (5,6 3,5 5,0 4,3) t=0 [0] (5,6) tEnd=0.297296392 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
   3222 markWinding id=4 (4,3 5,6) t=0.434637102 [3] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
   3223 markWinding id=1 (0,5 3,4 6,5 5,3) t=0.515734731 [1] (4.09290743,4.36280823) tEnd=0.579011103 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1
   3224 debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=-2 windValue=1 oppValue=0
   3225 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3226 debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=-2 windValue=1 oppValue=0
   3227 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=1 windValue=1 oppValue=0
   3228 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3229 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3230 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   3231 markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0 [0] (5,6) tEnd=0.297296392 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
   3232 markDoneBinary id=4 (4,3 5,6) t=0.434637102 [3] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
   3233 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
   3234 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=1 windValue=1 oppValue=0
   3235 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
   3236 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3237 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3238 markDoneBinary id=1 (0,5 3,4 6,5 5,3) t=0.515734731 [1] (4.09290743,4.36280823) tEnd=0.579011103 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1
   3239 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   3240 debugShowSort [0] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3241 debugShowSort [1] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.0946656649 sign=1 windValue=1 windSum=-2 ?->? (max=?) done=1 tiny=0 opp=1
   3242 debugShowSort [2] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0.182401651 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
   3243 debugShowSort [3] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.434637102 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   3244 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=1
   3245 debugShowSort [1] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.0946656649 sign=1 windValue=1 windSum=-2 -1->-2 (max=-2) done=1 tiny=0 opp=0
   3246 debugShowSort [2] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0.182401651 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   3247 debugShowSort [3] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.434637102 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
   3248 debugShowSort [0] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3249 markWinding id=4 (4,3 5,6) t=0.117647059 [2] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
   3250 markWinding id=2 (5,3 0,5) t=0 [0] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3251 markWinding id=1 (0,5 3,4 6,5 5,3) t=0.579011103 [2] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3252 debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=-2 windValue=1 oppValue=0
   3253 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3254 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3255 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
   3256 markDoneBinary id=4 (4,3 5,6) t=0.117647059 [2] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1
   3257 debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3258 debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3259 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3260 markDoneBinary id=1 (0,5 3,4 6,5 5,3) t=0.579011103 [2] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   3261 markDoneBinary id=2 (5,3 0,5) t=0 [0] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   3262 assemble
   3263 </div>
   3264 
   3265 <div id="cubicOp58da">
   3266 $1 = {{fX = 4.09466553, fY = 3.28399706}, {fX = 4.19834709, fY = 2.10743785}, {fX = 4.5454545, fY = 1.36363637}, {fX = 4, fY = 3}}
   3267 </div>
   3268 
   3269 <div id="cubicOp61d">
   3270   SimplifyNew_Test [cubicOp61d]
   3271 {{1,2}, {0,5}, {3,2}, {6,1}},
   3272 {{6,1}, {1,2}},
   3273 op difference
   3274 {{2,3}, {1,6}, {2,1}, {5,0}},
   3275 {{5,0}, {2,3}},
   3276 debugShowCubicIntersection wtTs[0]=0 {{2,3}, {1,6}, {2,1}, {5,0}} {{2,3}} wtTs[1]=0.5
   3277 debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {1,6}, {2,1}, {5,0}} {{2,3}} wtTs[1]=0.5 {{2,3}} wtTs[2]=1 {{5,0}} wnTs[0]=1 {{5,0}, {2,3}} wnTs[1]=1 wnTs[2]=0
   3278 debugShowCubicIntersection wtTs[0]=0 {{2,3}, {1,6}, {2,1}, {5,0}} {{2,3}} wtTs[1]=0.5 {{2.0000000000728706,2.9999999998542584}} wnTs[0]=0.5 {{1,2}, {0,5}, {3,2}, {6,1}} wnTs[1]=0.500000029
   3279 debugShowCubicLineIntersection wtTs[0]=0.704088595 {{2,3}, {1,6}, {2,1}, {5,0}} {{2.8621787139852466,1.6275642572029505}} wnTs[0]=0.627564 {{6,1}, {1,2}}
   3280 debugShowCubicLineIntersection wtTs[0]=0.5 {{1,2}, {0,5}, {3,2}, {6,1}} {{2,3}} wnTs[0]=1 {{5,0}, {2,3}}
   3281 debugShowLineIntersection wtTs[0]=0.5 {{5,0}, {2,3}} {{3.5,1.5}} wnTs[0]=0.5 {{6,1}, {1,2}}
   3282 debugShowCubicIntersection no self intersect {{1,2}, {0,5}, {3,2}, {6,1}}
   3283 debugShowCubicLineIntersection wtTs[0]=0 {{1,2}, {0,5}, {3,2}, {6,1}} {{1,2}} wtTs[1]=1 {{6,1}} wnTs[0]=1 {{6,1}, {1,2}} wnTs[1]=0
   3284 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3285 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3286 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3287 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=? windValue=1 oppValue=0
   3288 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.704088595 (2.8621788,1.62756431) tEnd=1 other=2 otherT=0.627564257 otherIndex=2 windSum=? windValue=1 oppValue=0
   3289 debugShowActiveSpans id=4 (5,0 2,3) t=0 (5,0) tEnd=0.5 other=3 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
   3290 debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3291 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0 (1,2) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3292 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=? windValue=1 oppValue=0
   3293 debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3294 debugShowActiveSpans id=2 (6,1 1,2) t=0.5 (3.5,1.5) tEnd=0.627564257 other=4 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3295 debugShowActiveSpans id=2 (6,1 1,2) t=0.627564257 (2.8621788,1.62756431) tEnd=1 other=3 otherT=0.704088595 otherIndex=6 windSum=? windValue=1 oppValue=0
   3296 (gdb) continue
   3297 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   3298 debugShowSort [0] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=1 tEnd=0.704088595 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3299 debugShowSort [1] {{5,0}, {2,3}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3300 markWinding id=3 (2,3 1,6 2,1 5,0) t=0.704088595 [6] (2.8621788,1.62756431) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3301 markWinding id=4 (5,0 2,3) t=0 [0] (5,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3302 markWinding id=3 (2,3 1,6 2,1 5,0) t=0.704088595 [6] (2.8621788,1.62756431) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3303 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   3304 markDoneBinary id=3 (2,3 1,6 2,1 5,0) t=0.704088595 [6] (2.8621788,1.62756431) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3305 markDoneBinary id=4 (5,0 2,3) t=0 [0] (5,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3306 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   3307 debugShowSort [0] {{6,1}, {1,2}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3308 debugShowSort [1] {{5,0}, {2,3}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   3309 debugShowSort [2] {{6,1}, {1,2}} tStart=0.5 tEnd=0.627564257 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3310 debugShowSort [3] {{5,0}, {2,3}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   3311 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   3312 debugShowSort [1] {{5,0}, {2,3}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   3313 debugShowSort [2] {{6,1}, {1,2}} tStart=0.5 tEnd=0.627564257 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3314 debugShowSort [3] {{5,0}, {2,3}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3315 debugShowSort [0] {{6,1}, {1,2}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3316 markWinding id=2 (6,1 1,2) t=0.5 [1] (3.5,1.5) tEnd=0.627564257 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3317 markWinding id=4 (5,0 2,3) t=0.5 [1] (3.5,1.5) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3318 markWinding id=2 (6,1 1,2) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3319 markWinding id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3320 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3321 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3322 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3323 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=? windValue=1 oppValue=0
   3324 debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   3325 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0 (1,2) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3326 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
   3327 debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3328 debugShowActiveSpans id=2 (6,1 1,2) t=0.5 (3.5,1.5) tEnd=0.627564257 other=4 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
   3329 debugShowActiveSpans id=2 (6,1 1,2) t=0.627564257 (2.8621788,1.62756431) tEnd=1 other=3 otherT=0.704088595 otherIndex=6 windSum=? windValue=1 oppValue=0
   3330 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3331 markDoneBinary id=2 (6,1 1,2) t=0.5 [1] (3.5,1.5) tEnd=0.627564257 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   3332 findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
   3333 debugShowSort [0] {{6,1}, {1,2}} tStart=0.627564257 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   3334 debugShowSort [1] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   3335 debugShowSort [2] {{6,1}, {1,2}} tStart=0.627564257 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3336 debugShowSort [3] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3337 findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
   3338 debugShowSort [0] {{6,1}, {1,2}} tStart=0.627564257 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   3339 debugShowSort [1] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   3340 debugShowSort [2] {{6,1}, {1,2}} tStart=0.627564257 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3341 debugShowSort [3] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3342 markWinding id=2 (6,1 1,2) t=0.627564257 [2] (2.8621788,1.62756431) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3343 markWinding id=1 (1,2 0,5 3,2 6,1) t=0 [0] (1,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3344 markWinding id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3345 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3346 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3347 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3348 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   3349 debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   3350 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0 (1,2) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3351 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
   3352 debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3353 debugShowActiveSpans id=2 (6,1 1,2) t=0.627564257 (2.8621788,1.62756431) tEnd=1 other=3 otherT=0.704088595 otherIndex=6 windSum=1 windValue=1 oppValue=0
   3354 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   3355 findNextOp simple
   3356 markDoneBinary id=2 (6,1 1,2) t=0.627564257 [2] (2.8621788,1.62756431) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3357 bridgeOp current id=2 from=(2.8621788,1.62756431) to=(1,2)
   3358 setSpans all tiny unsortable [1] (2,3) [0] (1,2)
   3359 setSpans all tiny unsortable [1] (2,3) [3] (2.00000024,3)
   3360 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0 [0] (1,2) tEnd=0.5 newWindSum=0 windSum=1 windValue=1
   3361 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [1] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3362 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0 [2] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3363 markUnsortable id=4 (5,0 2,3) t=1 [3] (2,3) tEnd=1 newWindSum=0 windSum=? windValue=1
   3364 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   3365 debugShowSort [0] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   3366 debugShowSort [1] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0.500000029 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=1 tiny=1 opp=0
   3367 debugShowSort [2] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3368 debugShowSort [3] {{5,0}, {2,3}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=0 tiny=0 opp=1
   3369 path.moveTo(2.8621788,1.62756431);
   3370 path.lineTo(1,2);
   3371 path.cubicTo(0.5,3.5, 1,3.5, 2,3);
   3372 markDoneBinary id=1 (1,2 0,5 3,2 6,1) t=0 [0] (1,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3373 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3374 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3375 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3376 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   3377 debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   3378 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
   3379 debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3380 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   3381 setSpans unsortable [2] (2,3) [3] (2,3)
   3382 setSpans all tiny unsortable [4] (2,3) [2] (2,3)
   3383 setSpans all tiny unsortable [2] (2,3) [3] (2.00000024,3)
   3384 setSpans all tiny unsortable [2] (2,3) [0] (1,2)
   3385 markUnsortable id=4 (5,0 2,3) t=0.5 [1] (3.5,1.5) tEnd=1 newWindSum=0 windSum=-1 windValue=1
   3386 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0 [1] (2,3) tEnd=0 newWindSum=0 windSum=? windValue=1
   3387 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [4] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3388 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [3] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3389 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [2] (2,3) tEnd=0.500000029 newWindSum=0 windSum=? windValue=1
   3390 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [1] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3391 findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
   3392 debugShowSort [0] {{5,0}, {2,3}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   3393 debugShowSort [1] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3394 debugShowSort [2] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=1 tiny=1 opp=0
   3395 debugShowSort [3] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3396 debugShowSort [4] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0.500000029 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=1 tiny=1 opp=1
   3397 debugShowSort [5] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
   3398 markDoneBinary id=4 (5,0 2,3) t=0.5 [1] (3.5,1.5) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   3399 path.moveTo(3.5,1.5);
   3400 path.lineTo(2,3);
   3401 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3402 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3403 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3404 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   3405 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
   3406 debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3407 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   3408 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=0 windSum=-1 windValue=1
   3409 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [4] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3410 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=0 windSum=1 windValue=1
   3411 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [2] (2,3) tEnd=0.500000029 newWindSum=0 windSum=? windValue=1
   3412 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   3413 debugShowSort [0] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.704088595 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   3414 debugShowSort [1] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=1 tiny=1 opp=0
   3415 debugShowSort [2] {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=1 sign=-1 windValue=1 windSum=1 1->2 (max=2) done=0 tiny=0 opp=1
   3416 debugShowSort [3] {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=0.5 sign=1 windValue=1 windSum=? 2->1 (max=2) done=1 tiny=1 opp=1
   3417 path.moveTo(2.8621788,1.62756431);
   3418 path.cubicTo(2.49148154,2.10034132, 2.20408869,2.59182286, 2,3);
   3419 markDoneBinary id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   3420 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3421 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3422 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3423 debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
   3424 debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3425 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3426 findNextOp simple
   3427 markDoneBinary id=2 (6,1 1,2) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3428 bridgeOp current id=2 from=(3.5,1.5) to=(6,1)
   3429 setSpans unsortable [3] (2.00000024,3) [4] (6,1)
   3430 setSpans unsortable [3] (2.00000024,3) [2] (2,3)
   3431 setSpans unsortable [5] (2,3) [6] (2.8621788,1.62756431)
   3432 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=0 windSum=1 windValue=1
   3433 markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [2] (2,3) tEnd=0.500000029 newWindSum=0 windSum=? windValue=1
   3434 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=0 windSum=-1 windValue=1
   3435 markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [4] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
   3436 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3437 debugShowSort [0] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3438 debugShowSort [1] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=1 tiny=1 opp=0
   3439 debugShowSort [2] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.704088595 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=1 tiny=0 opp=1
   3440 debugShowSort [3] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=1 tiny=1 opp=1
   3441 path.moveTo(3.5,1.5);
   3442 path.lineTo(6,1);
   3443 path.cubicTo(4.5,1.5, 3.00000024,2.49999976, 2,3);
   3444 markDoneBinary id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3445 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3446 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3447 debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3448 </div>
   3449 
   3450 <div id="cubicOp62d">
   3451   SimplifyNew_Test [cubicOp62d]
   3452 {{1,3}, {5,6}, {5,3}, {5,4}},
   3453 {{5,4}, {1,3}},
   3454 op difference
   3455 {{3,5}, {4,5}, {3,1}, {6,5}},
   3456 {{6,5}, {3,5}},
   3457 debugShowCubicIntersection no self intersect {{1,3}, {5,6}, {5,3}, {5,4}}
   3458 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {5,6}, {5,3}, {5,4}} {{1,3}} wtTs[1]=0.666666667 {{4.8518518518518512,3.9629629629629628}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {1,3}} wnTs[1]=0.037037037 wnTs[2]=0
   3459 debugShowCubicIntersection wtTs[0]=0.278899971 {{1,3}, {5,6}, {5,3}, {5,4}} {{3.5001544800676263,4.3269091333431628}} wtTs[1]=0.855895664 {{4.9880300830066844,3.7869549154423883}} wtTs[2]=0.865207906 {{4.9902038991416013,3.7891603690182212}} wtTs[3]=0.865213351 {{4.9902050861407137,3.789162057358868}} wnTs[0]=0.2789 {{3,5}, {4,5}, {3,1}, {6,5}} wnTs[1]=0.864850875 wnTs[2]=0.865207887 wnTs[3]=0.865208087
   3460 debugShowCubicLineIntersection wtTs[0]=0.448187637 {{3,5}, {4,5}, {3,1}, {6,5}} {{3.6795004703683416,3.6698751175920856}} wnTs[0]=0.330125 {{5,4}, {1,3}}
   3461 debugShowCubicIntersection no self intersect {{3,5}, {4,5}, {3,1}, {6,5}}
   3462 debugShowCubicLineIntersection wtTs[0]=0 {{3,5}, {4,5}, {3,1}, {6,5}} {{3,5}} wtTs[1]=1 {{6,5}} wnTs[0]=1 {{6,5}, {3,5}} wnTs[1]=0
   3463 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0 (1,3) tEnd=0.278899971 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3464 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.278899971 (3.5001545,4.32690907) tEnd=0.666666667 other=3 otherT=0.278899971 otherIndex=1 windSum=? windValue=1 oppValue=0
   3465 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.666666667 (4.85185194,3.96296287) tEnd=0.855895664 other=2 otherT=0.037037037 otherIndex=1 windSum=? windValue=1 oppValue=0
   3466 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.855895664 (4.98802996,3.78695488) tEnd=0.865207906 other=3 otherT=0.864850875 otherIndex=3 windSum=? windValue=1 oppValue=0
   3467 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865207906 (4.99020386,3.78916025) tEnd=0.865213351 other=3 otherT=0.865207887 otherIndex=4 windSum=? windValue=1 oppValue=0
   3468 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865213351 (4.99020529,3.78916216) tEnd=1 other=3 otherT=0.865208087 otherIndex=5 windSum=? windValue=1 oppValue=0
   3469 debugShowActiveSpans id=2 (5,4 1,3) t=0 (5,4) tEnd=0.037037037 other=1 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
   3470 debugShowActiveSpans id=2 (5,4 1,3) t=0.037037037 (4.85185194,3.96296287) tEnd=0.330124882 other=1 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
   3471 debugShowActiveSpans id=2 (5,4 1,3) t=0.330124882 (3.67950058,3.66987514) tEnd=1 other=3 otherT=0.448187637 otherIndex=2 windSum=? windValue=1 oppValue=0
   3472 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0 (3,5) tEnd=0.278899971 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
   3473 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.278899971 (3.5001545,4.32690907) tEnd=0.448187637 other=1 otherT=0.278899971 otherIndex=1 windSum=? windValue=1 oppValue=0
   3474 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.448187637 (3.67950058,3.66987514) tEnd=0.864850875 other=2 otherT=0.330124882 otherIndex=2 windSum=? windValue=1 oppValue=0
   3475 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.864850875 (4.98802996,3.78695488) tEnd=0.865207887 other=1 otherT=0.855895664 otherIndex=3 windSum=? windValue=1 oppValue=0
   3476 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865207887 (4.99020386,3.78916025) tEnd=0.865208087 other=1 otherT=0.865207906 otherIndex=4 windSum=? windValue=1 oppValue=0
   3477 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865208087 (4.99020529,3.78916216) tEnd=1 other=1 otherT=0.865213351 otherIndex=5 windSum=? windValue=1 oppValue=0
   3478 debugShowActiveSpans id=4 (6,5 3,5) t=0 (6,5) tEnd=1 other=3 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
   3479 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3480 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0 tEnd=0.278899971 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3481 debugShowSort [1] {{5,4}, {1,3}} tStart=1 tEnd=0.330124882 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3482 markWinding id=1 (1,3 5,6 5,3 5,4) t=0 [0] (1,3) tEnd=0.278899971 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3483 markWinding id=2 (5,4 1,3) t=0.330124882 [2] (3.67950058,3.66987514) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3484 markWinding id=1 (1,3 5,6 5,3 5,4) t=0 [0] (1,3) tEnd=0.278899971 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3485 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3486 findNextOp simple
   3487 markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0 [0] (1,3) tEnd=0.278899971 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3488 bridgeOp current id=1 from=(3.5001545,4.32690907) to=(1,3)
   3489 path.moveTo(3.5001545,4.32690907);
   3490 path.cubicTo(2.92005897,4.20668888, 2.11559987,3.83669996, 1,3);
   3491 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3492 debugShowSort [1] {{5,4}, {1,3}} tStart=0.330124882 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3493 debugShowSort [2] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.448187637 tEnd=0.278899971 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3494 debugShowSort [3] {{5,4}, {1,3}} tStart=0.330124882 tEnd=0.037037037 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3495 debugShowSort [0] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.448187637 tEnd=0.864850875 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   3496 findNextOp firstIndex=[1] sign=-1
   3497 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   3498 markWinding id=3 (3,5 4,5 3,1 6,5) t=0.278899971 [1] (3.5001545,4.32690907) tEnd=0.448187637 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3499 findNextOp chase.append id=3
   3500 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3501 markDoneBinary id=2 (5,4 1,3) t=0.037037037 [1] (4.85185194,3.96296287) tEnd=0.330124882 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3502 findNextOp chase.append id=2
   3503 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   3504 markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.448187637 [2] (3.67950058,3.66987514) tEnd=0.864850875 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3505 findNextOp chase.append id=3
   3506 markDoneBinary id=2 (5,4 1,3) t=0.330124882 [2] (3.67950058,3.66987514) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3507 findNextOp from:[2] to:[3] start=2 end=1
   3508 bridgeOp current id=2 from=(1,3) to=(3.67950058,3.66987514)
   3509 findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   3510 debugShowSort [0] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.278899971 tEnd=0.448187637 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   3511 debugShowSort [1] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.278899971 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   3512 debugShowSort [2] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.278899971 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3513 debugShowSort [3] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.278899971 tEnd=0.666666667 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3514 findNextOp firstIndex=[0] sign=-1
   3515 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3516 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   3517 markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0 [0] (3,5) tEnd=0.278899971 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3518 markDoneBinary id=4 (6,5 3,5) t=0 [0] (6,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3519 markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.865208087 [5] (4.99020529,3.78916216) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3520 findNextOp chase.append id=3
   3521 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3522 markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.278899971 [1] (3.5001545,4.32690907) tEnd=0.666666667 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3523 findNextOp chase.append id=1
   3524 markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.278899971 [1] (3.5001545,4.32690907) tEnd=0.448187637 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   3525 findNextOp from:[3] to:[1] start=1 end=0
   3526 bridgeOp current id=3 from=(3.67950058,3.66987514) to=(3.5001545,4.32690907)
   3527 path.lineTo(3.67950058,3.66987514);
   3528 path.cubicTo(3.60967231,3.86879396, 3.5595932,4.10721159, 3.5001545,4.32690907);
   3529 path.close();
   3530 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
   3531 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.855895664 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3532 debugShowSort [1] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0.330124882 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
   3533 debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.278899971 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
   3534 debugShowSort [3] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3535 findChaseOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
   3536 debugShowSort [1] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0.330124882 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   3537 debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.278899971 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   3538 debugShowSort [3] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3539 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.855895664 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3540 markWinding id=2 (5,4 1,3) t=0 [0] (5,4) tEnd=0.037037037 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3541 markWinding id=1 (1,3 5,6 5,3 5,4) t=0.865213351 [5] (4.99020529,3.78916216) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3542 markWinding id=1 (1,3 5,6 5,3 5,4) t=0.666666667 [2] (4.85185194,3.96296287) tEnd=0.855895664 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3543 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.666666667 (4.85185194,3.96296287) tEnd=0.855895664 other=2 otherT=0.037037037 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   3544 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.855895664 (4.98802996,3.78695488) tEnd=0.865207906 other=3 otherT=0.864850875 otherIndex=3 windSum=? windValue=1 oppValue=0
   3545 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865207906 (4.99020386,3.78916025) tEnd=0.865213351 other=3 otherT=0.865207887 otherIndex=4 windSum=? windValue=1 oppValue=0
   3546 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865213351 (4.99020529,3.78916216) tEnd=1 other=3 otherT=0.865208087 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   3547 debugShowActiveSpans id=2 (5,4 1,3) t=0 (5,4) tEnd=0.037037037 other=1 otherT=1 otherIndex=6 windSum=-1 windValue=1 oppValue=0
   3548 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.864850875 (4.98802996,3.78695488) tEnd=0.865207887 other=1 otherT=0.855895664 otherIndex=3 windSum=? windValue=1 oppValue=0
   3549 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865207887 (4.99020386,3.78916025) tEnd=0.865208087 other=1 otherT=0.865207906 otherIndex=4 windSum=? windValue=1 oppValue=0
   3550 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3551 markDoneBinary id=2 (5,4 1,3) t=0 [0] (5,4) tEnd=0.037037037 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   3552 markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.865213351 [5] (4.99020529,3.78916216) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   3553 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   3554 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=0.865207906 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   3555 debugShowSort [1] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=0.865207887 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   3556 debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=1 sign=-1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=0
   3557 debugShowSort [3] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=1 sign=-1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
   3558 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
   3559 debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   3560 debugShowSort [3] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   3561 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=0.865207906 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3562 debugShowSort [1] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=0.865207887 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3563 markWinding id=1 (1,3 5,6 5,3 5,4) t=0.865207906 [4] (4.99020386,3.78916025) tEnd=0.865213351 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3564 markWinding id=3 (3,5 4,5 3,1 6,5) t=0.865207887 [4] (4.99020386,3.78916025) tEnd=0.865208087 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3565 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.666666667 (4.85185194,3.96296287) tEnd=0.855895664 other=2 otherT=0.037037037 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   3566 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.855895664 (4.98802996,3.78695488) tEnd=0.865207906 other=3 otherT=0.864850875 otherIndex=3 windSum=? windValue=1 oppValue=0
   3567 debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865207906 (4.99020386,3.78916025) tEnd=0.865213351 other=3 otherT=0.865207887 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   3568 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.864850875 (4.98802996,3.78695488) tEnd=0.865207887 other=1 otherT=0.855895664 otherIndex=3 windSum=? windValue=1 oppValue=0
   3569 debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865207887 (4.99020386,3.78916025) tEnd=0.865208087 other=1 otherT=0.865207906 otherIndex=4 windSum=-1 windValue=1 oppValue=0
   3570 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   3571 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   3572 debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865207906 tEnd=0.865213351 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   3573 debugShowSort [3] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865207887 tEnd=0.865208087 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=0 tiny=0 opp=1
   3574 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865207906 tEnd=0.855895664 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3575 debugShowSort [1] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865207887 tEnd=0.864850875 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3576 findNextOp firstIndex=[2] sign=-1
   3577 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   3578 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3579 markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.855895664 [3] (4.98802996,3.78695488) tEnd=0.865207906 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3580 findNextOp chase.append id=1
   3581 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   3582 markWinding id=3 (3,5 4,5 3,1 6,5) t=0.864850875 [3] (4.98802996,3.78695488) tEnd=0.865207887 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3583 findNextOp chase.append id=3
   3584 markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.865207906 [4] (4.99020386,3.78916025) tEnd=0.865213351 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3585 findNextOp from:[1] to:[3] start=4 end=3
   3586 bridgeOp current id=1 from=(4.99020529,3.78916216) to=(4.99020386,3.78916025)
   3587 path.moveTo(4.99020529,3.78916216);
   3588 path.cubicTo(4.99020433,3.78916144, 4.99020433,3.78916097, 4.99020386,3.78916025);
   3589 findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
   3590 debugShowSort [2] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.864850875 tEnd=0.865207887 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3591 debugShowSort [3] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.855895664 tEnd=0.865207906 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   3592 debugShowSort [0] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.864850875 tEnd=0.448187637 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=0
   3593 debugShowSort [1] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.855895664 tEnd=0.666666667 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=1
   3594 findNextOp firstIndex=[2] sign=-1
   3595 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3596 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   3597 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   3598 markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.864850875 [3] (4.98802996,3.78695488) tEnd=0.865207887 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   3599 findNextOp from:[3] to:[1] start=3 end=2
   3600 bridgeOp current id=3 from=(4.99020386,3.78916025) to=(4.98802996,3.78695488)
   3601 path.cubicTo(4.98947859,3.78842425, 4.98875427,3.78768921, 4.98802996,3.78695488);
   3602 findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
   3603 debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.855895664 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   3604 debugShowSort [1] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0.330124882 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   3605 debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.278899971 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   3606 debugShowSort [3] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   3607 findNextOp firstIndex=[0] sign=-1
   3608 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3609 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3610 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3611 markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.666666667 [2] (4.85185194,3.96296287) tEnd=0.855895664 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   3612 path.cubicTo(4.97231197,3.77658033, 4.93595362,3.85783577, 4.85185194,3.96296287);
   3613 </div>
   3614 
   3615 <div id="testQuad1">
   3616   RunTestSet [testQuad1]
   3617 {{0,0}, {0,0}, {0,1}},
   3618 {{0,1}, {1,1}},
   3619 {{1,1}, {0,0}},
   3620 {{0,0}, {1,1}, {0,2}},
   3621 {{0,2}, {0,0}},
   3622 debugShowLineIntersection wtTs[0]=0 {{0,0}, {0,1}} {{0,1}} wnTs[0]=1 {{0,1}, {1,1}}
   3623 debugShowLineIntersection wtTs[0]=1 {{0,0}, {0,1}} {{0,0}} wnTs[0]=0 {{1,1}, {0,0}}
   3624 debugShowLineIntersection wtTs[0]=-0 {{0,1}, {1,1}} {{1,1}} wnTs[0]=1 {{1,1}, {0,0}}
   3625 debugShowQuadLineIntersection wtTs[0]=0 {{0,0}, {1,1}, {0,2}} {{0,0}} wnTs[0]=0 {{0,0}, {0,1}}
   3626 debugShowLineIntersection wtTs[0]=1 {{0,0}, {0,1}} {{0,0}} wtTs[1]=0.5 {{0,1}} wnTs[0]=-0 {{0,2}, {0,0}} wnTs[1]=1
   3627 debugShowQuadLineIntersection wtTs[0]=0.5 {{0,0}, {1,1}, {0,2}} {{0.5,1}} wnTs[0]=0.5 {{0,1}, {1,1}}
   3628 debugShowLineIntersection wtTs[0]=0.5 {{0,1}, {1,1}} {{0,1}} wnTs[0]=0 {{0,2}, {0,0}}
   3629 debugShowQuadLineIntersection wtTs[0]=0 {{0,0}, {1,1}, {0,2}} {{0,0}} wnTs[0]=1 {{1,1}, {0,0}}
   3630 debugShowLineIntersection wtTs[0]=1 {{1,1}, {0,0}} {{0,0}} wnTs[0]=1 {{0,2}, {0,0}}
   3631 debugShowQuadLineIntersection wtTs[0]=0 {{0,0}, {1,1}, {0,2}} {{0,0}} wtTs[1]=1 {{0,2}} wnTs[0]=1 {{0,2}, {0,0}} wnTs[1]=0
   3632 debugShowTs id=1 [o=3,4 t=0 0,0 w=1 o=0] [o=2 t=1 0,1 w=1 o=0]
   3633 debugShowTs id=5 [o=4 t=0 0,2 w=1 o=0] [o=2 t=0.5 0,1 w=1 o=0] [o=3,4 t=1 0,0 w=1 o=0]
   3634 addTPair addTPair this=5 0.5 other=1 1
   3635 debugShowTs id=1 [o=3,4 t=0 0,0 w=1 o=0] [o=2,5 t=1 0,1 w=1 o=0]
   3636 debugShowTs id=5 [o=4 t=0 0,2 w=1 o=0] [o=2,1 t=0.5 0,1 w=1 o=0] [o=3,4 t=1 0,0 w=1 o=0]
   3637 debugShowTs id=1 [o=3,4 t=0 0,0 w=0 o=0] [o=2,5 t=1 0,1 w=1 o=0] done
   3638 debugShowTs id=5 [o=4 t=0 0,2 w=1 o=0] [o=2,1 t=0.5 0,1 w=0 o=0] [o=3,4 t=1 0,0 w=1 o=0]
   3639 debugShowActiveSpans id=2 (0,1 1,1) t=0 (0,1) tEnd=0.5 other=1 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3640 debugShowActiveSpans id=2 (0,1 1,1) t=0 (0,1) tEnd=0.5 other=5 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3641 debugShowActiveSpans id=2 (0,1 1,1) t=0.5 (0.5,1) tEnd=1 other=4 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3642 debugShowActiveSpans id=3 (1,1 0,0) t=-0 (1,1) tEnd=1 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3643 debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0 (0,0) tEnd=0.5 other=1 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   3644 debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0 (0,0) tEnd=0.5 other=3 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3645 debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0 (0,0) tEnd=0.5 other=5 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3646 debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0.5 (0.5,1) tEnd=1 other=2 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   3647 debugShowActiveSpans id=5 (0,2 0,0) t=0 (0,2) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3648 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3649 debugShowSort [0] {{0,0}, {1,1}, {0,2}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3650 debugShowSort [1] {{1,1}, {0,0}} tStart=1 tEnd=-0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3651 findTop swap=1 serpentine=0 controls_contained_by_ends=0
   3652 markWinding id=4 (0,0 1,1 0,2) t=0 [0] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3653 markWinding id=4 (0,0 1,1 0,2) t=0 [1] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3654 markWinding id=4 (0,0 1,1 0,2) t=0 [2] (0,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3655 markWinding id=4 (0,0 1,1 0,2) t=0 [0] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3656 markWinding id=4 (0,0 1,1 0,2) t=0 [1] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3657 markWinding id=4 (0,0 1,1 0,2) t=0 [2] (0,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3658 findNextWinding debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   3659 debugShowSort [0] {{0,0}, {1,1}, {0,2}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   3660 debugShowSort [1] {{0,1}, {1,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
   3661 debugShowSort [2] {{0,0}, {1,1}, {0,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
   3662 debugShowSort [3] {{0,1}, {1,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3663 findNextWinding firstIndex=[0] sign=1
   3664 markDone id=2 (0,1 1,1) t=0 [0] (0,1) tEnd=0 newWindSum=-2 windSum=? windValue=1
   3665 markDone id=2 (0,1 1,1) t=0 [1] (0,1) tEnd=0.5 newWindSum=-2 windSum=? windValue=1
   3666 findNextWinding chase.append id=2
   3667 markDone id=4 (0,0 1,1 0,2) t=0.5 [3] (0.5,1) tEnd=1 newWindSum=-2 windSum=? windValue=1
   3668 markDone id=5 (0,2 0,0) t=0 [0] (0,2) tEnd=0.5 newWindSum=-2 windSum=? windValue=1
   3669 findNextWinding chase.append id=5
   3670 markWinding id=2 (0,1 1,1) t=0.5 [2] (0.5,1) tEnd=1 newWindSum=-1 windSum=? windValue=1
   3671 markWinding id=3 (1,1 0,0) t=-0 [0] (1,1) tEnd=1 newWindSum=-1 windSum=? windValue=1
   3672 findNextWinding chase.append id=3
   3673 markDoneUnary id=4 (0,0 1,1 0,2) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
   3674 markDoneUnary id=4 (0,0 1,1 0,2) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
   3675 markDoneUnary id=4 (0,0 1,1 0,2) t=0 [2] (0,0) tEnd=0.5 newWindSum=-1 windSum=-1 windValue=1
   3676 findNextWinding from:[4] to:[2] start=2 end=3
   3677 bridgeWinding current id=4 from=(0,0) to=(0.5,1)
   3678 path.moveTo(0,0);
   3679 path.quadTo(0.5,0.5, 0.5,1);
   3680 findNextWinding simple
   3681 markDoneUnary id=2 (0,1 1,1) t=0.5 [2] (0.5,1) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
   3682 bridgeWinding current id=2 from=(0.5,1) to=(1,1)
   3683 findNextWinding debugShowSort contourWinding=0 oppContourWinding=? sign=1
   3684 debugShowSort [1] {{1,1}, {0,0}} tStart=1 tEnd=-0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   3685 debugShowSort [0] {{0,0}, {1,1}, {0,2}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   3686 findNextWinding firstIndex=[1] sign=1
   3687 markDoneUnary id=3 (1,1 0,0) t=-0 [0] (1,1) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
   3688 findNextWinding from:[3] to:[4] start=1 end=3
   3689 bridgeWinding current id=3 from=(1,1) to=(0,0)
   3690 path.lineTo(1,1);
   3691 path.lineTo(0,0);
   3692 path.close();
   3693 </div>
   3694 
   3695 <div id="cubicOp67u">
   3696   RunTestSet [cubicOp67u]
   3697 {{3,5}, {1,6}, {5,0}, {3,1}},
   3698 {{3,1}, {3,5}},
   3699 op union
   3700 {{0,5}, {1,3}, {5,3}, {6,1}},
   3701 {{6,1}, {0,5}},
   3702 debugShowCubicIntersection no self intersect {{3,5}, {1,6}, {5,0}, {3,1}}
   3703 debugShowCubicLineIntersection wtTs[0]=0 {{3,5}, {1,6}, {5,0}, {3,1}} {{3,5}} wtTs[1]=0.5 {{3,3}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {3,5}} wnTs[1]=0.5 wnTs[2]=0
   3704 debugShowCubicIntersection no intersect {{3,5}, {1,6}, {5,0}, {3,1}} {{0,5}, {1,3}, {5,3}, {6,1}}
   3705 debugShowCubicLineIntersection wtTs[0]=0.5 {{3,5}, {1,6}, {5,0}, {3,1}} {{2.9999999999999991,3.0000000000000004}} wnTs[0]=0.5 {{6,1}, {0,5}}
   3706 debugShowCubicLineIntersection wtTs[0]=0.5 {{0,5}, {1,3}, {5,3}, {6,1}} {{2.9999999999999991,2.9999999999999991}} wnTs[0]=0.5 {{3,1}, {3,5}}
   3707 debugShowLineIntersection wtTs[0]=0.5 {{3,1}, {3,5}} {{3,3}} wnTs[0]=0.5 {{6,1}, {0,5}}
   3708 debugShowCubicIntersection no self intersect {{0,5}, {1,3}, {5,3}, {6,1}}
   3709 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {1,3}, {5,3}, {6,1}} {{0,5}} wtTs[1]=0.5 {{3,3}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {0,5}} wnTs[1]=0.5 wnTs[2]=0
   3710 SkOpSegment::debugShowActiveSpans id=1 (3,5 1,6 5,0 3,1) t=0 (3,5) tEnd=0.5 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3711 SkOpSegment::debugShowActiveSpans id=1 (3,5 1,6 5,0 3,1) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3712 SkOpSegment::debugShowActiveSpans id=1 (3,5 1,6 5,0 3,1) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   3713 SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0 (3,1) tEnd=0.5 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3714 SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3715 SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   3716 SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3717 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0 (0,5) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3718 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3719 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   3720 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.5 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3721 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
   3722 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
   3723 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
   3724 SkOpSegment::findTop SkOpSegment::debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   3725 SkOpSegment::debugShowSort [0] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3726 SkOpSegment::debugShowSort [1] {{3,1}, {3,5}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3727 SkOpSegment::findTop swap=1 serpentine=0 containedByEnds=0 monotonic=0
   3728 SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3729 SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3730 SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3731 SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3732 SkOpSegment::markWinding id=2 (3,1 3,5) t=0 [0] (3,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3733 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3734 SkOpSegment::findNextOp SkOpSegment::debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3735 SkOpSegment::debugShowSort [1] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3736 SkOpSegment::debugShowSort [2] {{3,1}, {3,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   3737 SkOpSegment::debugShowSort [3] {{6,1}, {0,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3738 SkOpSegment::debugShowSort [4] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   3739 SkOpSegment::debugShowSort [5] {{3,1}, {3,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3740 SkOpSegment::debugShowSort [0] {{6,1}, {0,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3741 SkOpSegment::findNextOp firstIndex=[1] sign=-1
   3742 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3743 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
   3744 SkOpSegment::markWinding id=4 (6,1 0,5) t=0.5 [2] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3745 SkOpSegment::markWinding id=4 (6,1 0,5) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3746 SkOpSegment::markWinding id=4 (6,1 0,5) t=0.5 [3] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3747 SkOpSegment::markWinding id=3 (0,5 1,3 5,3 6,1) t=0 [0] (0,5) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3748 SkOpSegment::findNextOp chase.append id=3
   3749 SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3750 SkOpSegment::markDoneBinary id=1 (3,5 1,6 5,0 3,1) t=0 [0] (3,5) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3751 SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0.5 [2] (3,3) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3752 SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3753 SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0.5 [3] (3,3) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3754 SkOpSegment::findNextOp chase.append id=2
   3755 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3756 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
   3757 SkOpSegment::markWinding id=4 (6,1 0,5) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3758 SkOpSegment::markWinding id=3 (0,5 1,3 5,3 6,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3759 SkOpSegment::markWinding id=3 (0,5 1,3 5,3 6,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3760 SkOpSegment::findNextOp chase.append id=3
   3761 SkOpSegment::markDoneBinary id=1 (3,5 1,6 5,0 3,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3762 SkOpSegment::markDoneBinary id=1 (3,5 1,6 5,0 3,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3763 SkOpSegment::findNextOp from:[1] to:[2] start=2 end=0
   3764 bridgeOp current id=1 from=(3,1) to=(3,3)
   3765 path.moveTo(3,1);
   3766 path.cubicTo(4,0.5, 3.5,1.75, 3,3);
   3767 SkOpSegment::findNextOp simple
   3768 SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0 [0] (3,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3769 bridgeOp current id=2 from=(3,3) to=(3,1)
   3770 path.lineTo(3,1);
   3771 path.close();
   3772 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0 (0,5) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3773 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
   3774 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3775 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.5 other=3 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3776 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3777 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3778 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
   3779 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
   3780 SkOpSegment::findNextOp simple
   3781 SkOpSegment::markDoneBinary id=3 (0,5 1,3 5,3 6,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3782 SkOpSegment::markDoneBinary id=3 (0,5 1,3 5,3 6,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3783 bridgeOp current id=3 from=(3,3) to=(6,1)
   3784 path.moveTo(3,3);
   3785 path.cubicTo(4.25,2.5, 5.5,2, 6,1);
   3786 SkOpSegment::findNextOp SkOpSegment::debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   3787 SkOpSegment::debugShowSort [1] {{6,1}, {0,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   3788 SkOpSegment::debugShowSort [2] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   3789 SkOpSegment::debugShowSort [3] {{3,1}, {3,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   3790 SkOpSegment::debugShowSort [4] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 0->-1 (max=-1) done=0 tiny=0 opp=0
   3791 SkOpSegment::debugShowSort [5] {{6,1}, {0,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 -1->0 (max=-1) done=0 tiny=0 opp=0
   3792 SkOpSegment::debugShowSort [6] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   3793 SkOpSegment::debugShowSort [7] {{3,1}, {3,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   3794 SkOpSegment::debugShowSort [0] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   3795 SkOpSegment::findNextOp firstIndex=[1] sign=1
   3796 SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   3797 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3798 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
   3799 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
   3800 SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   3801 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3802 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
   3803 SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3804 SkOpSegment::findNextOp from:[4] to:[3] start=2 end=0
   3805 bridgeOp current id=4 from=(6,1) to=(3,3)
   3806 path.lineTo(3,3);
   3807 path.close();
   3808 SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0 (0,5) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
   3809 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=3 windSum=1 windValue=1 oppValue=0
   3810 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
   3811 SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
   3812 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
   3813 SkOpSegment::findNextOp simple
   3814 SkOpSegment::markDoneBinary id=3 (0,5 1,3 5,3 6,1) t=0 [0] (0,5) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3815 bridgeOp current id=3 from=(3,3) to=(0,5)
   3816 path.moveTo(3,3);
   3817 path.cubicTo(1.75,3.5, 0.5,4, 0,5);
   3818 SkOpSegment::findNextOp SkOpSegment::debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3819 SkOpSegment::debugShowSort [5] {{6,1}, {0,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3820 SkOpSegment::debugShowSort [6] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   3821 SkOpSegment::debugShowSort [7] {{3,1}, {3,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   3822 SkOpSegment::debugShowSort [0] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 1->2 (max=2) done=1 tiny=0 opp=0
   3823 SkOpSegment::debugShowSort [1] {{6,1}, {0,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=0
   3824 SkOpSegment::debugShowSort [2] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   3825 SkOpSegment::debugShowSort [3] {{3,1}, {3,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   3826 SkOpSegment::debugShowSort [4] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   3827 SkOpSegment::findNextOp firstIndex=[5] sign=-1
   3828 SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3829 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3830 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   3831 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
   3832 SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3833 SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3834 SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
   3835 SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0.5 [2] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3836 SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3837 SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0.5 [3] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3838 SkOpSegment::findNextOp from:[4] to:[3] start=2 end=0
   3839 bridgeOp current id=4 from=(0,5) to=(3,3)
   3840 path.lineTo(3,3);
   3841 path.close();
   3842 </div>
   3843 
   3844 <div id="cubicOp68u">
   3845   RunTestSet [cubicOp68u]
   3846 {{0,5}, {4,5}, {4,1}, {5,0}},
   3847 {{5,0}, {0,5}},
   3848 op union
   3849 {{1,4}, {0,5}, {5,0}, {5,4}},
   3850 {{5,4}, {1,4}},
   3851 debugShowCubicIntersection no self intersect {{0,5}, {4,5}, {4,1}, {5,0}}
   3852 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {4,5}, {4,1}, {5,0}} {{0,5}} wtTs[1]=1 {{5,0}} wnTs[0]=1 {{5,0}, {0,5}} wnTs[1]=0
   3853 debugShowCubicIntersection wtTs[0]=0.565184359 {{0,5}, {4,5}, {4,1}, {5,0}} {{3.8517056846571536,2.4305708556260548}} wnTs[0]=0.684396 {{1,4}, {0,5}, {5,0}, {5,4}}
   3854 debugShowCubicLineIntersection wtTs[0]=0.320104156 {{0,5}, {4,5}, {4,1}, {5,0}} {{2.7756498612431599,4.0000000000000018}} wnTs[0]=0.556088 {{5,4}, {1,4}}
   3855 debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{0.99999999999999978,4}} wnTs[0]=0.8 {{5,0}, {0,5}}
   3856 debugShowLineIntersection no intersect {{5,0}, {0,5}} {{5,4}, {1,4}}
   3857 debugShowCubicIntersection no self intersect {{1,4}, {0,5}, {5,0}, {5,4}}
   3858 debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{1,4}} wtTs[1]=0.2 {{1.0320000000000003,4.0000000000000009}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {1,4}} wnTs[1]=0.992 wnTs[2]=0
   3859 debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0 (0,5) tEnd=0.320104156 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   3860 debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.320104156 (2.77564979,4) tEnd=0.565184359 other=4 otherT=0.556087535 otherIndex=1 windSum=? windValue=1 oppValue=0
   3861 debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.565184359 (3.85170579,2.43057084) tEnd=1 other=3 otherT=0.684395636 otherIndex=3 windSum=? windValue=1 oppValue=0
   3862 debugShowActiveSpans id=2 (5,0 0,5) t=0 (5,0) tEnd=0.8 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3863 debugShowActiveSpans id=2 (5,0 0,5) t=0.8 (1,4) tEnd=1 other=3 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   3864 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=2 otherT=0.8 otherIndex=1 windSum=? windValue=1 oppValue=0
   3865 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3866 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.2 (1.03199995,4) tEnd=0.684395636 other=4 otherT=0.992 otherIndex=2 windSum=? windValue=1 oppValue=0
   3867 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.684395636 (3.85170579,2.43057084) tEnd=1 other=1 otherT=0.565184359 otherIndex=2 windSum=? windValue=1 oppValue=0
   3868 debugShowActiveSpans id=4 (5,4 1,4) t=0 (5,4) tEnd=0.556087535 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3869 debugShowActiveSpans id=4 (5,4 1,4) t=0.556087535 (2.77564979,4) tEnd=0.992 other=1 otherT=0.320104156 otherIndex=1 windSum=? windValue=1 oppValue=0
   3870 debugShowActiveSpans id=4 (5,4 1,4) t=0.992 (1.03199995,4) tEnd=1 other=3 otherT=0.2 otherIndex=2 windSum=? windValue=1 oppValue=0
   3871 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3872 debugShowSort [0] {{5,0}, {0,5}} tStart=0 tEnd=0.8 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3873 debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=1 tEnd=0.565184359 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3874 markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3875 markWinding id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3876 markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3877 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3878 findNextOp simple
   3879 markDoneBinary id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3880 bridgeOp current id=2 from=(1,4) to=(5,0)
   3881 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3882 debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3883 debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=0.2 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3884 debugShowSort [3] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=0.320104156 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3885 debugShowSort [0] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   3886 findNextOp firstIndex=[1] sign=-1
   3887 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
   3888 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.2 [2] (1.03199995,4) tEnd=0.684395636 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3889 findNextOp chase.append id=3
   3890 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3891 markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.320104156 [1] (2.77564979,4) tEnd=0.565184359 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3892 findNextOp chase.append id=1
   3893 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
   3894 markWinding id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3895 markWinding id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3896 findNextOp chase.append id=4
   3897 markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3898 findNextOp from:[1] to:[3] start=3 end=4
   3899 bridgeOp current id=1 from=(5,0) to=(3.85170579,2.43057084)
   3900 path.moveTo(1,4);
   3901 path.lineTo(5,0);
   3902 path.cubicTo(4.56518459,0.434815645, 4.31943321,1.43682528, 3.85170579,2.43057084);
   3903 findNextOp simple
   3904 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3905 bridgeOp current id=3 from=(3.85170579,2.43057084) to=(5,4)
   3906 path.cubicTo(4.50196934,2.37162018, 5,2.73758245, 5,4);
   3907 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   3908 debugShowSort [3] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   3909 debugShowSort [0] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0.565184359 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   3910 debugShowSort [1] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0.992 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   3911 debugShowSort [2] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   3912 findNextOp firstIndex=[3] sign=1
   3913 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   3914 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
   3915 markDoneBinary id=4 (5,4 1,4) t=0.556087535 [1] (2.77564979,4) tEnd=0.992 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3916 findNextOp chase.append id=4
   3917 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3918 markWinding id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3919 markWinding id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3920 findNextOp chase.append id=2
   3921 markDoneBinary id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   3922 findNextOp from:[4] to:[1] start=1 end=0
   3923 bridgeOp current id=4 from=(5,4) to=(2.77564979,4)
   3924 findNextOp simple
   3925 markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3926 bridgeOp current id=1 from=(2.77564979,4) to=(0,5)
   3927 path.lineTo(2.77564979,4);
   3928 path.cubicTo(2.15096664,4.59013319, 1.28041661,5, 0,5);
   3929 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3930 debugShowSort [1] {{5,0}, {0,5}} tStart=0.8 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3931 debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0 tEnd=0.2 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   3932 debugShowSort [0] {{5,0}, {0,5}} tStart=0.8 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   3933 findNextOp firstIndex=[1] sign=-1
   3934 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
   3935 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [0] (1,4) tEnd=0 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   3936 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [1] (1,4) tEnd=0.2 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   3937 findNextOp chase.append id=3
   3938 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3939 markDoneBinary id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3940 ../../src/pathops/SkPathOpsOp.cpp:183: failed assertion "unsortable"
   3941 </div>
   3942 
   3943 <div id="cubicOp68ua">
   3944   RunTestSet [cubicOp68u]
   3945 {{0,5}, {4,5}, {4,1}, {5,0}},
   3946 {{5,0}, {0,5}},
   3947 op union
   3948 {{1,4}, {0,5}, {5,0}, {5,4}},
   3949 {{5,4}, {1,4}},
   3950 debugShowCubicIntersection no self intersect {{0,5}, {4,5}, {4,1}, {5,0}}
   3951 debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {4,5}, {4,1}, {5,0}} {{0,5}} wtTs[1]=1 {{5,0}} wnTs[0]=1 {{5,0}, {0,5}} wnTs[1]=0
   3952 debugShowCubicIntersection wtTs[0]=0.565184359 {{0,5}, {4,5}, {4,1}, {5,0}} {{3.851705684657154,2.4305708556260521}} wnTs[0]=0.684396 {{1,4}, {0,5}, {5,0}, {5,4}}
   3953 debugShowCubicLineIntersection wtTs[0]=0.320104156 {{0,5}, {4,5}, {4,1}, {5,0}} {{2.7756498612431599,4.0000000000000018}} wnTs[0]=0.556088 {{5,4}, {1,4}}
   3954 debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{0.99999999999999978,4}} wnTs[0]=0.8 {{5,0}, {0,5}}
   3955 debugShowLineIntersection wtTs[0]=0.8 {{5,0}, {0,5}} {{0.99999999999999978,4}} wnTs[0]=1 {{5,4}, {1,4}}
   3956 debugShowCubicIntersection no self intersect {{1,4}, {0,5}, {5,0}, {5,4}}
   3957 debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{1,4}} wtTs[1]=0.2 {{1.0320000000000003,4.0000000000000009}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {1,4}} wnTs[1]=0.992 wnTs[2]=0
   3958 debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0 (0,5) tEnd=0.320104156 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3959 debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.320104156 (2.77564979,4) tEnd=0.565184359 other=4 otherT=0.556087535 otherIndex=1 windSum=? windValue=1 oppValue=0
   3960 debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.565184359 (3.85170579,2.43057084) tEnd=1 other=3 otherT=0.684395636 otherIndex=3 windSum=? windValue=1 oppValue=0
   3961 debugShowActiveSpans id=2 (5,0 0,5) t=0 (5,0) tEnd=0.8 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3962 debugShowActiveSpans id=2 (5,0 0,5) t=0.8 (1,4) tEnd=1 other=3 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   3963 debugShowActiveSpans id=2 (5,0 0,5) t=0.8 (1,4) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   3964 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=2 otherT=0.8 otherIndex=1 windSum=? windValue=1 oppValue=0
   3965 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3966 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.2 (1.03199995,4) tEnd=0.684395636 other=4 otherT=0.992 otherIndex=2 windSum=? windValue=1 oppValue=0
   3967 debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.684395636 (3.85170579,2.43057084) tEnd=1 other=1 otherT=0.565184359 otherIndex=2 windSum=? windValue=1 oppValue=0
   3968 debugShowActiveSpans id=4 (5,4 1,4) t=0 (5,4) tEnd=0.556087535 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   3969 debugShowActiveSpans id=4 (5,4 1,4) t=0.556087535 (2.77564979,4) tEnd=0.992 other=1 otherT=0.320104156 otherIndex=1 windSum=? windValue=1 oppValue=0
   3970 debugShowActiveSpans id=4 (5,4 1,4) t=0.992 (1.03199995,4) tEnd=1 other=3 otherT=0.2 otherIndex=2 windSum=? windValue=1 oppValue=0
   3971 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3972 debugShowSort [0] {{5,0}, {0,5}} tStart=0 tEnd=0.8 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   3973 debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=1 tEnd=0.565184359 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3974 markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3975 markWinding id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   3976 markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3977 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   3978 findNextOp simple
   3979 markDoneBinary id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3980 bridgeOp current id=2 from=(1,4) to=(5,0)
   3981 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   3982 debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   3983 debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=0.2 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   3984 debugShowSort [3] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=0.320104156 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   3985 debugShowSort [0] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   3986 findNextOp firstIndex=[1] sign=-1
   3987 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
   3988 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.2 [2] (1.03199995,4) tEnd=0.684395636 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   3989 findNextOp chase.append id=3
   3990 activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   3991 markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.320104156 [1] (2.77564979,4) tEnd=0.565184359 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   3992 findNextOp chase.append id=1
   3993 activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
   3994 markWinding id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3995 markWinding id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   3996 findNextOp chase.append id=4
   3997 markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   3998 findNextOp from:[1] to:[3] start=3 end=4
   3999 bridgeOp current id=1 from=(5,0) to=(3.85170579,2.43057084)
   4000 path.moveTo(1,4);
   4001 path.lineTo(5,0);
   4002 path.cubicTo(4.56518459,0.434815645, 4.31943321,1.43682528, 3.85170579,2.43057084);
   4003 findNextOp simple
   4004 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   4005 bridgeOp current id=3 from=(3.85170579,2.43057084) to=(5,4)
   4006 path.cubicTo(4.50196934,2.37162018, 5,2.73758245, 5,4);
   4007 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
   4008 debugShowSort [3] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   4009 debugShowSort [0] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0.565184359 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   4010 debugShowSort [1] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0.992 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   4011 debugShowSort [2] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   4012 findNextOp firstIndex=[3] sign=1
   4013 activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   4014 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
   4015 markDoneBinary id=4 (5,4 1,4) t=0.556087535 [1] (2.77564979,4) tEnd=0.992 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   4016 findNextOp chase.append id=4
   4017 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   4018 markWinding id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4019 markWinding id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4020 markWinding id=2 (5,0 0,5) t=0.8 [2] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4021 findNextOp chase.append id=2
   4022 markDoneBinary id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   4023 findNextOp from:[4] to:[1] start=1 end=0
   4024 bridgeOp current id=4 from=(5,4) to=(2.77564979,4)
   4025 findNextOp simple
   4026 markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4027 bridgeOp current id=1 from=(2.77564979,4) to=(0,5)
   4028 path.lineTo(2.77564979,4);
   4029 path.cubicTo(2.15096664,4.59013319, 1.28041661,5, 0,5);
   4030 findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4031 debugShowSort [1] {{5,0}, {0,5}} tStart=0.8 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4032 debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0 tEnd=0.2 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   4033 debugShowSort [3] {{5,4}, {1,4}} tStart=1 tEnd=0.992 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   4034 debugShowSort [0] {{5,0}, {0,5}} tStart=0.8 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   4035 findNextOp firstIndex=[1] sign=-1
   4036 activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
   4037 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [0] (1,4) tEnd=0 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   4038 markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [1] (1,4) tEnd=0.2 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   4039 findNextOp chase.append id=3
   4040 activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
   4041 markDoneBinary id=4 (5,4 1,4) t=0.992 [2] (1.03199995,4) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
   4042 findNextOp chase.append id=4
   4043 activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   4044 markDoneBinary id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4045 markDoneBinary id=2 (5,0 0,5) t=0.8 [2] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4046 findNextOp from:[2] to:[2] start=2 end=0
   4047 bridgeOp current id=2 from=(0,5) to=(1,4)
   4048 path.lineTo(1,4);
   4049 path.close();
   4050 </div>
   4051 
   4052 <div id="cubicOp69d">
   4053   RunTestSet [cubicOp69d]
   4054 {{1,3}, {0,1}, {3,1}, {2,0}},
   4055 {{2,0}, {1,3}},
   4056 op difference
   4057 {{1,3}, {0,2}, {3,1}, {1,0}},
   4058 {{1,0}, {1,3}},
   4059 debugShowCubicIntersection no self intersect {{1,3}, {0,2}, {3,1}, {1,0}}
   4060 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.333333333 {{1.0000000000000002,2.0000000000000004}} wtTs[2]=1 {{1,0}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.666666667 wnTs[2]=0
   4061 debugShowCubicIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.195806707 {{0.80509754536484868,2.412579877819526}} wtTs[2]=0.665291365 {{1.6652800396786596,1.0041259050152926}} wnTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} wnTs[1]=0.109171117 wnTs[2]=0.555550487
   4062 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.666666667 {{1.6666666666666665,1.0000000000000002}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.333333333
   4063 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.316987298 {{1,1.6054083424670758}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.535136114
   4064 debugShowLineIntersection wtTs[0]=1 {{1,0}, {1,3}} {{1,3}} wnTs[0]=1 {{2,0}, {1,3}}
   4065 debugShowCubicIntersection no self intersect {{1,3}, {0,1}, {3,1}, {2,0}}
   4066 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.555555556 {{1.6652949245541837,1.0041152263374487}} wtTs[2]=1 {{2,0}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.334705075 wnTs[2]=0
   4067 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4068 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4069 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4070 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
   4071 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
   4072 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.665291365 (1.66527998,1.00412595) tEnd=0.666666667 other=1 otherT=0.555550487 otherIndex=5 windSum=? windValue=1 oppValue=0
   4073 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.666666667 (1.66666663,1) tEnd=1 other=2 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
   4074 debugShowActiveSpans id=4 (1,0 1,3) t=0 (1,0) tEnd=0.535136114 other=3 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
   4075 debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
   4076 debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
   4077 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4078 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4079 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   4080 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
   4081 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=? windValue=1 oppValue=0
   4082 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=? windValue=1 oppValue=0
   4083 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=? windValue=1 oppValue=0
   4084 debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
   4085 debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=? windValue=1 oppValue=0
   4086 debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
   4087 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4088 debugShowSort [0] {{1,0}, {1,3}} tStart=0 tEnd=0.535136114 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   4089 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   4090 markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4091 markWinding id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4092 markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4093 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   4094 markDoneBinary id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4095 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4096 </div>
   4097 
   4098 <div id="cubicOp69da">
   4099   RunTestSet [cubicOp69da]
   4100 {{1,3}, {0,1}, {3,1}, {2,0}},
   4101 {{2,0}, {1,3}},
   4102 op difference
   4103 {{1,3}, {0,2}, {3,1}, {1,0}},
   4104 {{1,0}, {1,3}},
   4105 debugShowCubicIntersection no self intersect {{1,3}, {0,2}, {3,1}, {1,0}}
   4106 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.333333333 {{1,2.0000000000000004}} wtTs[2]=1 {{1,0}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.666666667 wnTs[2]=0
   4107 debugShowCubicIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.195806707 {{0.80509754536484845,2.4125798778195251}} wtTs[2]=0.665291365 {{1.6652800396786593,1.0041259050152929}} wnTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} wnTs[1]=0.109171117 wnTs[2]=0.555550487
   4108 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.666666667 {{1.6666666666666667,1}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.333333333
   4109 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.316987298 {{1,1.6054083424670758}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.535136114
   4110 debugShowLineIntersection wtTs[0]=1 {{1,0}, {1,3}} {{1,3}} wnTs[0]=1 {{2,0}, {1,3}}
   4111 debugShowCubicIntersection no self intersect {{1,3}, {0,1}, {3,1}, {2,0}}
   4112 debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.555555556 {{1.6652949245541839,1.0041152263374484}} wtTs[2]=1 {{2,0}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.334705075 wnTs[2]=0
   4113 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4114 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4115 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4116 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
   4117 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
   4118 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.665291365 (1.66527998,1.00412595) tEnd=0.666666667 other=1 otherT=0.555550487 otherIndex=5 windSum=? windValue=1 oppValue=0
   4119 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.666666667 (1.66666663,1) tEnd=1 other=2 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
   4120 debugShowActiveSpans id=4 (1,0 1,3) t=0 (1,0) tEnd=0.535136114 other=3 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
   4121 debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
   4122 debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
   4123 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4124 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4125 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   4126 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
   4127 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=? windValue=1 oppValue=0
   4128 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=? windValue=1 oppValue=0
   4129 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=? windValue=1 oppValue=0
   4130 debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
   4131 debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=? windValue=1 oppValue=0
   4132 debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
   4133 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4134 debugShowSort [0] {{1,0}, {1,3}} tStart=0 tEnd=0.535136114 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   4135 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   4136 markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4137 markWinding id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4138 markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4139 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   4140 markDoneBinary id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4141 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4142 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
   4143 debugShowSort [0] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   4144 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=1
   4145 debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=0.665291365 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   4146 debugShowSort [3] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0.334705075 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   4147 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4148 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   4149 debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=0.665291365 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   4150 debugShowSort [3] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0.334705075 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   4151 debugShowSort [0] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
   4152 markWinding id=3 (1,3 0,2 3,1 1,0) t=0.665291365 [5] (1.66527998,1.00412595) tEnd=0.666666667 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4153 markWinding id=2 (2,0 1,3) t=0.333333333 [1] (1.66666663,1) tEnd=0.334705075 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4154 markWinding id=2 (2,0 1,3) t=0 [0] (2,0) tEnd=0.333333333 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4155 markWinding id=1 (1,3 0,1 3,1 2,0) t=0.555555556 [6] (1.66529489,1.00411522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4156 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4157 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4158 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4159 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
   4160 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
   4161 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.665291365 (1.66527998,1.00412595) tEnd=0.666666667 other=1 otherT=0.555550487 otherIndex=5 windSum=1 windValue=1 oppValue=0
   4162 debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
   4163 debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
   4164 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4165 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4166 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   4167 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
   4168 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=? windValue=1 oppValue=0
   4169 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=? windValue=1 oppValue=0
   4170 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=1 windValue=1 oppValue=0
   4171 debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=1 windValue=1 oppValue=0
   4172 debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=1 windValue=1 oppValue=0
   4173 debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
   4174 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   4175 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.665291365 [5] (1.66527998,1.00412595) tEnd=0.666666667 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4176 findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
   4177 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.555555556 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   4178 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=1
   4179 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.316987298 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
   4180 debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.333333333 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
   4181 findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4182 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   4183 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.316987298 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   4184 debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.333333333 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
   4185 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.555555556 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   4186 markWinding id=1 (1,3 0,1 3,1 2,0) t=0.316987298 [4] (1,1.60540831) tEnd=0.555550487 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
   4187 markWinding id=3 (1,3 0,2 3,1 1,0) t=0.333333333 [4] (1,2) tEnd=0.665291365 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4188 markWinding id=1 (1,3 0,1 3,1 2,0) t=0.555550487 [5] (1.66527998,1.00412595) tEnd=0.555555556 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   4189 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4190 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4191 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4192 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
   4193 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=1 windValue=1 oppValue=0
   4194 debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
   4195 debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
   4196 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4197 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4198 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   4199 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
   4200 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=-1 windValue=1 oppValue=0
   4201 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   4202 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=1 windValue=1 oppValue=0
   4203 debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=1 windValue=1 oppValue=0
   4204 debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=1 windValue=1 oppValue=0
   4205 debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
   4206 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   4207 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.316987298 [4] (1,1.60540831) tEnd=0.555550487 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
   4208 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   4209 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.555550487 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   4210 debugShowSort [1] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   4211 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.109171117 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   4212 debugShowSort [3] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0.666666667 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   4213 findChaseOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
   4214 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.555550487 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   4215 debugShowSort [1] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   4216 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.109171117 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   4217 debugShowSort [3] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0.666666667 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
   4218 markWinding id=1 (1,3 0,1 3,1 2,0) t=0.109171117 [3] (0.80509752,2.41257977) tEnd=0.316987298 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   4219 markWinding id=4 (1,0 1,3) t=0.535136114 [1] (1,1.60540831) tEnd=0.666666667 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4220 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4221 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4222 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4223 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
   4224 debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=1 windValue=1 oppValue=0
   4225 debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=1 windValue=1 oppValue=0
   4226 debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
   4227 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4228 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4229 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
   4230 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=-1 windValue=1 oppValue=0
   4231 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=-1 windValue=1 oppValue=0
   4232 debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=1 windValue=1 oppValue=0
   4233 debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=1 windValue=1 oppValue=0
   4234 debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=1 windValue=1 oppValue=0
   4235 debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
   4236 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4237 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   4238 debugShowSort [1] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.109171117 tEnd=0.316987298 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   4239 debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.195806707 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   4240 debugShowSort [3] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.109171117 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
   4241 debugShowSort [0] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.195806707 tEnd=0.333333333 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
   4242 findNextOp firstIndex=[1] sign=-1
   4243 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   4244 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0 [1] (1,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   4245 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0 [0] (1,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   4246 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0 [2] (1,3) tEnd=0.195806707 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   4247 findNextOp chase.append id=3
   4248 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   4249 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0 [1] (1,3) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4250 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0 [0] (1,3) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4251 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0 [2] (1,3) tEnd=0.109171117 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4252 findNextOp chase.append id=1
   4253 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   4254 markWinding id=3 (1,3 0,2 3,1 1,0) t=0.195806707 [3] (0.80509752,2.41257977) tEnd=0.333333333 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4255 findNextOp chase.append id=3
   4256 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.109171117 [3] (0.80509752,2.41257977) tEnd=0.316987298 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   4257 findNextOp from:[1] to:[3] start=3 end=4
   4258 bridgeOp current id=1 from=(1,1.60540831) to=(0.80509752,2.41257977)
   4259 path.moveTo(1,1.60540831);
   4260 path.cubicTo(0.847867966,1.82018507, 0.758966982,2.08026719, 0.80509752,2.41257977);
   4261 findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=1
   4262 debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.195806707 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   4263 debugShowSort [3] {{1,0}, {1,3}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   4264 debugShowSort [0] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.665291365 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4265 debugShowSort [1] {{1,0}, {1,3}} tStart=0.666666667 tEnd=0.535136114 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   4266 findNextOp firstIndex=[2] sign=1
   4267 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   4268 markWinding id=4 (1,0 1,3) t=0.666666667 [2] (1,2) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
   4269 findNextOp chase.append id=4
   4270 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   4271 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   4272 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.195806707 [3] (0.80509752,2.41257977) tEnd=0.333333333 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   4273 findNextOp from:[3] to:[4] start=2 end=3
   4274 bridgeOp current id=3 from=(0.80509752,2.41257977) to=(1,2)
   4275 path.cubicTo(0.835544765,2.27505326, 0.908315599,2.13752651, 1,2);
   4276 findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=1
   4277 debugShowSort [1] {{1,0}, {1,3}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   4278 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0 tEnd=0.109171117 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   4279 debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0 tEnd=0.195806707 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   4280 debugShowSort [0] {{2,0}, {1,3}} tStart=1 tEnd=0.334705075 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
   4281 findNextOp firstIndex=[1] sign=1
   4282 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   4283 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   4284 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4285 markWinding id=2 (2,0 1,3) t=0.334705075 [2] (1.66529489,1.00411522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
   4286 findNextOp chase.append id=2
   4287 markDoneBinary id=4 (1,0 1,3) t=0.666666667 [2] (1,2) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
   4288 findNextOp from:[4] to:[2] start=4 end=2
   4289 bridgeOp current id=4 from=(1,2) to=(1,3)
   4290 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   4291 debugShowSort [3] {{2,0}, {1,3}} tStart=0.334705075 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   4292 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4293 debugShowSort [1] {{2,0}, {1,3}} tStart=0.334705075 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   4294 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=0.555550487 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   4295 findNextOp firstIndex=[3] sign=-1
   4296 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4297 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   4298 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4299 markDoneBinary id=2 (2,0 1,3) t=0.334705075 [2] (1.66529489,1.00411522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   4300 findNextOp from:[2] to:[1] start=6 end=7
   4301 bridgeOp current id=2 from=(1,3) to=(1.66529489,1.00411522)
   4302 path.lineTo(1,3);
   4303 findNextOp simple
   4304 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.555555556 [6] (1.66529489,1.00411522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4305 bridgeOp current id=1 from=(1.66529489,1.00411522) to=(2,0)
   4306 path.lineTo(1.66529489,1.00411522);
   4307 path.cubicTo(2.09876537,0.69135803, 2.44444442,0.444444448, 2,0);
   4308 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   4309 debugShowSort [0] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   4310 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   4311 debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=0.665291365 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
   4312 debugShowSort [3] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0.334705075 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4313 findNextOp firstIndex=[0] sign=1
   4314 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   4315 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   4316 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4317 markDoneBinary id=2 (2,0 1,3) t=0 [0] (2,0) tEnd=0.333333333 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4318 findNextOp from:[2] to:[2] start=1 end=2
   4319 bridgeOp current id=2 from=(2,0) to=(1.66666663,1)
   4320 findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
   4321 debugShowSort [1] {{2,0}, {1,3}} tStart=0.334705075 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   4322 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=0.555550487 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   4323 debugShowSort [3] {{2,0}, {1,3}} tStart=0.334705075 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   4324 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
   4325 findNextOp firstIndex=[1] sign=1
   4326 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4327 activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
   4328 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4329 markDoneBinary id=2 (2,0 1,3) t=0.333333333 [1] (1.66666663,1) tEnd=0.334705075 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4330 findNextOp from:[2] to:[1] start=6 end=5
   4331 bridgeOp current id=2 from=(1.66666663,1) to=(1.66529489,1.00411522)
   4332 path.lineTo(1.66666663,1);
   4333 findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
   4334 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.555555556 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
   4335 debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
   4336 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.316987298 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   4337 debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
   4338 findNextOp firstIndex=[0] sign=-1
   4339 activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
   4340 activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
   4341 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   4342 markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.555550487 [5] (1.66527998,1.00412595) tEnd=0.555555556 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
   4343 findNextOp from:[1] to:[3] start=5 end=4
   4344 bridgeOp current id=1 from=(1.66529489,1.00411522) to=(1.66527998,1.00412595)
   4345 path.lineTo(1.66529489,1.00411522);
   4346 path.cubicTo(1.66529,1.0041188, 1.66528511,1.00412238, 1.66527998,1.00412595);
   4347 findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
   4348 debugShowSort [0] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.665291365 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4349 debugShowSort [1] {{1,0}, {1,3}} tStart=0.666666667 tEnd=0.535136114 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   4350 debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.195806707 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
   4351 debugShowSort [3] {{1,0}, {1,3}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
   4352 findNextOp firstIndex=[0] sign=-1
   4353 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   4354 activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
   4355 activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
   4356 markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.333333333 [4] (1,2) tEnd=0.665291365 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   4357 findNextOp from:[3] to:[4] start=2 end=1
   4358 bridgeOp current id=3 from=(1.66527998,1.00412595) to=(1,2)
   4359 path.cubicTo(1.55280685,1.33608389, 1.22130537,1.66804194, 1,2);
   4360 findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
   4361 debugShowSort [3] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4362 debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.555550487 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
   4363 debugShowSort [1] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
   4364 debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.109171117 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
   4365 findNextOp firstIndex=[3] sign=-1
   4366 activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
   4367 activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
   4368 activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
   4369 markDoneBinary id=4 (1,0 1,3) t=0.535136114 [1] (1,1.60540831) tEnd=0.666666667 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
   4370 findNextOp from:[4] to:[1] start=4 end=3
   4371 bridgeOp current id=4 from=(1,2) to=(1,1.60540831)
   4372 path.lineTo(1,1.60540831);
   4373 path.close();
   4374 </div>
   4375 
   4376 <div id="testTriangles1">
   4377   RunTestSet [testTriangles1]
   4378 {{0,0}, {1,0}},
   4379 {{1,0}, {3,3}},
   4380 {{3,3}, {0,0}},
   4381 {{0,0}, {1,2}},
   4382 {{1,2}, {1,1}},
   4383 {{1,1}, {0,0}},
   4384 debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{1,0}} wnTs[0]=1 {{1,0}, {3,3}}
   4385 debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{3,3}, {0,0}}
   4386 debugShowLineIntersection wtTs[0]=1 {{1,0}, {3,3}} {{3,3}} wnTs[0]=0 {{3,3}, {0,0}}
   4387 debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{0,0}, {1,2}}
   4388 debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{1,1}, {0,0}}
   4389 debugShowLineIntersection no intersect {{1,0}, {3,3}} {{0,0}, {1,2}}
   4390 debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,2}, {1,1}}
   4391 debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,1}, {0,0}}
   4392 debugShowLineIntersection wtTs[0]=1 {{3,3}, {0,0}} {{0,0}} wnTs[0]=-0 {{0,0}, {1,2}}
   4393 debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wnTs[0]=1 {{1,2}, {1,1}}
   4394 debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wtTs[1]=1 {{0,0}} wnTs[0]=0 {{1,1}, {0,0}} wnTs[1]=1
   4395 debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,2}} {{1,2}} wnTs[0]=0 {{1,2}, {1,1}}
   4396 debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,2}} {{0,0}} wnTs[0]=1 {{1,1}, {0,0}}
   4397 debugShowLineIntersection wtTs[0]=-0 {{1,2}, {1,1}} {{1,1}} wnTs[0]=1 {{1,1}, {0,0}}
   4398 debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4399 debugShowTs id=6 [o=5 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4400 addTPair addTPair this=3 0.666666667 other=6 0
   4401 debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4402 debugShowTs id=6 [o=5,3 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4403 debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=2 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4404 debugShowTs id=6 [o=5,3 t=-0 1,1 w=0 o=0] [o=1,4 t=1 0,0 w=1 o=0] done
   4405 debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4406 debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=4 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4407 debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   4408 debugShowActiveSpans id=2 (1,0 3,3) t=0 (1,0) tEnd=1 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4409 debugShowActiveSpans id=3 (3,3 0,0) t=0 (3,3) tEnd=0.666666667 other=2 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
   4410 debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=5 otherT=1 otherIndex=1 windSum=? windValue=2 oppValue=0
   4411 debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=6 otherT=0 otherIndex=1 windSum=? windValue=2 oppValue=0
   4412 debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=1 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4413 debugShowActiveSpans id=4 (0,0 1,2) t=-0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4414 debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4415 debugShowActiveSpans id=5 (1,2 1,1) t=0 (1,2) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4416 debugShowActiveSpans id=5 (1,2 1,1) t=1 (1,1) tEnd=1 other=3 otherT=0.666666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   4417 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4418 debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
   4419 debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum=? 1->-1 (max=1) done=0 tiny=0 opp=0
   4420 debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   4421 markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4422 markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4423 markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4424 markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4425 markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4426 markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4427 markWinding id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4428 findNextWinding debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4429 debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
   4430 debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum=? 1->-1 (max=1) done=0 tiny=0 opp=0
   4431 debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
   4432 findNextWinding firstIndex=[0] sign=-1
   4433 markDone id=3 (3,3 0,0) t=0.666666667 [1] (1,1) tEnd=0.666666667 newWindSum=1 windSum=? windValue=2
   4434 markDone id=3 (3,3 0,0) t=0.666666667 [2] (1,1) tEnd=1 newWindSum=1 windSum=? windValue=2
   4435 findNextWinding chase.append id=3
   4436 markWinding id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
   4437 markWinding id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
   4438 markWinding id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
   4439 markWinding id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
   4440 markWinding id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=? windValue=1
   4441 findNextWinding chase.append id=3
   4442 markDoneUnary id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 windSum=1 windValue=1
   4443 markDoneUnary id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 windSum=1 windValue=1
   4444 markDoneUnary id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 windSum=1 windValue=1
   4445 findNextWinding from:[4] to:[1] start=1 end=3
   4446 bridgeWinding current id=4 from=(1,2) to=(0,0)
   4447 findNextWinding simple
   4448 markDoneUnary id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
   4449 markDoneUnary id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
   4450 markDoneUnary id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
   4451 bridgeWinding current id=1 from=(0,0) to=(1,0)
   4452 path.moveTo(1,2);
   4453 path.lineTo(0,0);
   4454 findNextWinding simple
   4455 markDoneUnary id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
   4456 bridgeWinding current id=2 from=(1,0) to=(3,3)
   4457 path.lineTo(1,0);
   4458 findNextWinding debugShowSort contourWinding=0 oppContourWinding=? sign=1
   4459 debugShowSort [2] {{3,3}, {0,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
   4460 debugShowSort [0] {{3,3}, {0,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=2 windSum=1 -1->1 (max=1) done=1 tiny=0 opp=0
   4461 debugShowSort [1] {{1,2}, {1,1}} tStart=1 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
   4462 findNextWinding firstIndex=[2] sign=1
   4463 markDoneUnary id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=-1 windValue=1
   4464 findNextWinding from:[3] to:[5] start=1 end=0
   4465 bridgeWinding current id=3 from=(3,3) to=(1,1)
   4466 path.lineTo(3,3);
   4467 findNextWinding simple
   4468 markDoneUnary id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 windSum=1 windValue=1
   4469 bridgeWinding current id=5 from=(1,1) to=(1,2)
   4470 path.lineTo(1,1);
   4471 path.lineTo(1,2);
   4472 path.close();
   4473 debugShowActiveSpans id=5 (1,2 1,1) t=1 (1,1) tEnd=1 other=3 otherT=0.666666667 otherIndex=1 windSum=? windValue=1 oppValue=0
   4474 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-2
   4475 debugShowSort [0] {{3,3}, {0,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=2 windSum=1 0->2 (max=2) done=1 tiny=0 opp=0
   4476 debugShowSort [1] {{1,2}, {1,1}} tStart=1 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=0
   4477 debugShowSort [2] {{3,3}, {0,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=0
   4478 </div>
   4479 
   4480 <div id="testTriangles1a">
   4481   RunTestSet [testTriangles1a]
   4482 debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{1,0}} wnTs[0]=1 {{1,0}, {3,3}}
   4483 debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{3,3}, {0,0}}
   4484 debugShowLineIntersection wtTs[0]=1 {{1,0}, {3,3}} {{3,3}} wnTs[0]=0 {{3,3}, {0,0}}
   4485 debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{0,0}, {1,2}}
   4486 debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{1,1}, {0,0}}
   4487 debugShowLineIntersection no intersect {{1,0}, {3,3}} {{0,0}, {1,2}}
   4488 debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,2}, {1,1}}
   4489 debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,1}, {0,0}}
   4490 debugShowLineIntersection wtTs[0]=1 {{3,3}, {0,0}} {{0,0}} wnTs[0]=-0 {{0,0}, {1,2}}
   4491 debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wnTs[0]=1 {{1,2}, {1,1}}
   4492 debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wtTs[1]=1 {{0,0}} wnTs[0]=0 {{1,1}, {0,0}} wnTs[1]=1
   4493 debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,2}} {{1,2}} wnTs[0]=0 {{1,2}, {1,1}}
   4494 debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,2}} {{0,0}} wnTs[0]=1 {{1,1}, {0,0}}
   4495 debugShowLineIntersection wtTs[0]=-0 {{1,2}, {1,1}} {{1,1}} wnTs[0]=1 {{1,1}, {0,0}}
   4496 debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4497 debugShowTs id=6 [o=5 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4498 addTPair addTPair this=3 0.666666667 other=6 0
   4499 debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4500 debugShowTs id=6 [o=5,3 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4501 debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=2 o=0] [o=1,4 t=1 0,0 w=1 o=0]
   4502 debugShowTs id=6 [o=5,3 t=-0 1,1 w=0 o=0] [o=1,4 t=1 0,0 w=1 o=0] done
   4503 debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4504 debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=4 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
   4505 debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
   4506 debugShowActiveSpans id=2 (1,0 3,3) t=0 (1,0) tEnd=1 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4507 debugShowActiveSpans id=3 (3,3 0,0) t=0 (3,3) tEnd=0.666666667 other=2 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
   4508 debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=5 otherT=1 otherIndex=1 windSum=? windValue=2 oppValue=0
   4509 debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=6 otherT=0 otherIndex=1 windSum=? windValue=2 oppValue=0
   4510 debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=1 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
   4511 debugShowActiveSpans id=4 (0,0 1,2) t=-0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
   4512 debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4513 debugShowActiveSpans id=5 (1,2 1,1) t=0 (1,2) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
   4514 findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4515 debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= 0->1 (max=1) done=0 tiny=0 opp=0
   4516 debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum= 1->-1 (max=1) done=0 tiny=0 opp=0
   4517 debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= -1->0 (max=-1) done=0 tiny=0 opp=0
   4518 markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4519 markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4520 markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4521 markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4522 markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4523 markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
   4524 markWinding id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
   4525 findNextWinding debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
   4526 debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= 0->1 (max=1) done=0 tiny=0 opp=0
   4527 debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum= 1->-1 (max=1) done=0 tiny=0 opp=0
   4528 debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= -1->0 (max=-1) done=0 tiny=0 opp=0
   4529 findNextWinding firstIndex=[0] sign=-1
   4530 markDone id=3 (3,3 0,0) t=0.666666667 [1] (1,1) tEnd=0.666666667 newWindSum=1 windSum=? windValue=2
   4531 markDone id=3 (3,3 0,0) t=0.666666667 [2] (1,1) tEnd=1 newWindSum=1 windSum=? windValue=2
   4532 findNextWinding chase.append id=3
   4533 markWinding id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
   4534 markWinding id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
   4535 markWinding id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
   4536 markWinding id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
   4537 markWinding id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=? windValue=1
   4538 findNextWinding chase.append id=3
   4539 markDoneUnary id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 windSum=1 windValue=1
   4540 markDoneUnary id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 windSum=1 windValue=1
   4541 markDoneUnary id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 windSum=1 windValue=1
   4542 findNextWinding from:[4] to:[1] start=1 end=3
   4543 bridgeWinding current id=4 from=(1,2) to=(0,0)
   4544 findNextWinding simple
   4545 markDoneUnary id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
   4546 markDoneUnary id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
   4547 markDoneUnary id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
   4548 bridgeWinding current id=1 from=(0,0) to=(1,0)
   4549 path.moveTo(1,2);
   4550 path.lineTo(0,0);
   4551 findNextWinding simple
   4552 markDoneUnary id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
   4553 bridgeWinding current id=2 from=(1,0) to=(3,3)
   4554 path.lineTo(1,0);
   4555 findNextWinding debugShowSort contourWinding=0 oppContourWinding=? sign=1
   4556 debugShowSort [2] {{3,3}, {0,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum= 0->-1 (max=-1) done=0 tiny=0 opp=0
   4557 debugShowSort [0] {{3,3}, {0,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=2 windSum= -1->1 (max=1) done=1 tiny=0 opp=0
   4558 debugShowSort [1] {{1,2}, {1,1}} tStart=1 tEnd=0 sign=1 windValue=1 windSum= 1->0 (max=1) done=0 tiny=0 opp=0
   4559 findNextWinding firstIndex=[2] sign=1
   4560 markDoneUnary id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=-1 windValue=1
   4561 findNextWinding from:[3] to:[5] start=1 end=0
   4562 bridgeWinding current id=3 from=(3,3) to=(1,1)
   4563 path.lineTo(3,3);
   4564 findNextWinding simple
   4565 markDoneUnary id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 windSum=1 windValue=1
   4566 bridgeWinding current id=5 from=(1,1) to=(1,2)
   4567 path.lineTo(1,1);
   4568 path.lineTo(1,2);
   4569 path.close();
   4570 </div>
   4571 
   4572 </div>
   4573 
   4574 <script type="text/javascript">
   4575 
   4576 var testDivs = [
   4577     testTriangles1a,
   4578     testTriangles1,
   4579     cubicOp69da,
   4580     cubicOp69d,
   4581     cubicOp68ua,
   4582     cubicOp68u,
   4583     cubicOp67u,
   4584     testQuad1,
   4585     cubicOp62d,
   4586     cubicOp61d,
   4587     cubicOp58da,
   4588     cubicOp58d,
   4589     cubicOp57da,
   4590     cubicOp56da,
   4591     cubicOp55da,
   4592     cubicOp55d,
   4593     cubicOp54dd,
   4594     cubicOp54dc,
   4595     cubicOp54db,
   4596     cubicOp54da,
   4597     cubicOp54d,
   4598     cubicOp53db,
   4599     cubicOp53da,
   4600     cubicOp53d,
   4601     cubicOp52db,
   4602     cubicOp52da,
   4603     cubicOp51da,
   4604     cubicOp51d,
   4605     cubicOp50d,
   4606     cubicOp49d,
   4607     cubicOp48dc,
   4608     cubicOp48db,
   4609     cubicOp48da,
   4610     cubicOp48d,
   4611     cubicOp47db,
   4612     cubicOp47da,
   4613     cubicOp47d,
   4614     cubicOp46db,
   4615     cubicOp46da,
   4616     cubicOp46d,
   4617     cubicOp45d,
   4618     cubicOp44d,
   4619     cubicOp43d,
   4620     cubicOp42d,
   4621     cubicOp42da,
   4622     cubicOp42db,
   4623     cubicOp41i,
   4624     cubicOp40d,
   4625     cubicOp39da,
   4626     cubicOp39d,
   4627     cubicOp38d,
   4628     cubicOp38da,
   4629     cubicOp36u,
   4630     cubicOp35da,
   4631     cubicOp32d,
   4632 ];
   4633 
   4634 var decimal_places = 3; // make this 3 to show more precision
   4635 
   4636 var tests = [];
   4637 var testLines = [];
   4638 var testTitles = [];
   4639 var testIndex = 0;
   4640 var ctx;
   4641 
   4642 var xmin, xmax;
   4643 var ymin, ymax;
   4644 var scale;
   4645 var mouseX, mouseY;
   4646 var srcLeft, srcTop;
   4647 var screenWidth, screenHeight;
   4648 var drawnPts, drawnLines, drawnQuads, drawnCubics;
   4649 var curveT = 0;
   4650 
   4651 var pt_labels = 2;
   4652 var control_lines = 0;
   4653 var curve_t = false;
   4654 var debug_xy = false;
   4655 var step_limit = 0;
   4656 var draw_active = false;
   4657 var draw_add = false;
   4658 var draw_deriviatives = 0;
   4659 var draw_hints = false;
   4660 var draw_hodo = 0;
   4661 var draw_intersection = 0;
   4662 var draw_intersectT = false;
   4663 var draw_legend = true;
   4664 var draw_log = false;
   4665 var draw_mark = false;
   4666 var draw_midpoint = false;
   4667 var draw_sequence = false;
   4668 var draw_sort = false;
   4669 var draw_path = 3;
   4670 var draw_computed = 0;
   4671 
   4672 var activeCount = 0;
   4673 var addCount = 0;
   4674 var sectCount = 0;
   4675 var sortCount = 0;
   4676 var markCount = 0;
   4677 var activeMax = 0;
   4678 var addMax = 0;
   4679 var sectMax = 0;
   4680 var sectMax2 = 0;
   4681 var sortMax = 0;
   4682 var markMax = 0;
   4683 var stepMax = 0;
   4684 var lastIndex = 0;
   4685 var hasPath = false;
   4686 var hasComputedPath = false;
   4687 
   4688 var SPAN_ID = 0;
   4689 var SPAN_X1 = SPAN_ID + 1;
   4690 var SPAN_Y1 = SPAN_X1 + 1;
   4691 var SPAN_X2 = SPAN_Y1 + 1;
   4692 var SPAN_Y2 = SPAN_X2 + 1;
   4693 var SPAN_L_T = SPAN_Y2 + 1;
   4694 var SPAN_L_TX = SPAN_L_T + 1;
   4695 var SPAN_L_TY = SPAN_L_TX + 1;
   4696 var SPAN_L_TEND = SPAN_L_TY + 1;
   4697 var SPAN_L_OTHER = SPAN_L_TEND + 1;
   4698 var SPAN_L_OTHERT = SPAN_L_OTHER + 1;
   4699 var SPAN_L_OTHERI = SPAN_L_OTHERT + 1;
   4700 var SPAN_L_SUM = SPAN_L_OTHERI + 1;
   4701 var SPAN_L_VAL = SPAN_L_SUM + 1;
   4702 var SPAN_L_OPP = SPAN_L_VAL + 1;
   4703 
   4704 var SPAN_X3 = SPAN_Y2 + 1;
   4705 var SPAN_Y3 = SPAN_X3 + 1;
   4706 var SPAN_Q_T = SPAN_Y3 + 1;
   4707 var SPAN_Q_TX = SPAN_Q_T + 1;
   4708 var SPAN_Q_TY = SPAN_Q_TX + 1;
   4709 var SPAN_Q_TEND = SPAN_Q_TY + 1;
   4710 var SPAN_Q_OTHER = SPAN_Q_TEND + 1;
   4711 var SPAN_Q_OTHERT = SPAN_Q_OTHER + 1;
   4712 var SPAN_Q_OTHERI = SPAN_Q_OTHERT + 1;
   4713 var SPAN_Q_SUM = SPAN_Q_OTHERI + 1;
   4714 var SPAN_Q_VAL = SPAN_Q_SUM + 1;
   4715 var SPAN_Q_OPP = SPAN_Q_VAL + 1;
   4716 
   4717 var SPAN_X4 = SPAN_Y3 + 1;
   4718 var SPAN_Y4 = SPAN_X4 + 1;
   4719 var SPAN_C_T = SPAN_Y4 + 1;
   4720 var SPAN_C_TX = SPAN_C_T + 1;
   4721 var SPAN_C_TY = SPAN_C_TX + 1;
   4722 var SPAN_C_TEND = SPAN_C_TY + 1;
   4723 var SPAN_C_OTHER = SPAN_C_TEND + 1;
   4724 var SPAN_C_OTHERT = SPAN_C_OTHER + 1;
   4725 var SPAN_C_OTHERI = SPAN_C_OTHERT + 1;
   4726 var SPAN_C_SUM = SPAN_C_OTHERI + 1;
   4727 var SPAN_C_VAL = SPAN_C_SUM + 1;
   4728 var SPAN_C_OPP = SPAN_C_VAL + 1;
   4729 
   4730 var ACTIVE_LINE_SPAN =        1;
   4731 var ACTIVE_QUAD_SPAN =        ACTIVE_LINE_SPAN + 1;
   4732 var ACTIVE_CUBIC_SPAN =       ACTIVE_QUAD_SPAN + 1;
   4733 
   4734 var ADD_MOVETO =              ACTIVE_CUBIC_SPAN + 1;
   4735 var ADD_LINETO =              ADD_MOVETO + 1;
   4736 var ADD_QUADTO =              ADD_LINETO + 1;
   4737 var ADD_CUBICTO =             ADD_QUADTO + 1;
   4738 var ADD_CLOSE =               ADD_CUBICTO + 1;
   4739 
   4740 var PATH_LINE =               ADD_CLOSE + 1;
   4741 var PATH_QUAD =               PATH_LINE + 1;
   4742 var PATH_CUBIC =              PATH_QUAD + 1;
   4743 
   4744 var INTERSECT_LINE =          PATH_CUBIC + 1;
   4745 var INTERSECT_LINE_2 =        INTERSECT_LINE + 1;
   4746 var INTERSECT_LINE_NO =       INTERSECT_LINE_2 + 1;
   4747 var INTERSECT_QUAD_LINE =     INTERSECT_LINE_NO + 1;
   4748 var INTERSECT_QUAD_LINE_2 =   INTERSECT_QUAD_LINE + 1;
   4749 var INTERSECT_QUAD_LINE_NO =  INTERSECT_QUAD_LINE_2 + 1;
   4750 var INTERSECT_QUAD =          INTERSECT_QUAD_LINE_NO + 1;
   4751 var INTERSECT_QUAD_2 =        INTERSECT_QUAD + 1;
   4752 var INTERSECT_QUAD_NO =       INTERSECT_QUAD_2 + 1;
   4753 var INTERSECT_SELF_CUBIC =    INTERSECT_QUAD_NO + 1;
   4754 var INTERSECT_SELF_CUBIC_NO = INTERSECT_SELF_CUBIC + 1;
   4755 var INTERSECT_CUBIC_LINE =    INTERSECT_SELF_CUBIC_NO + 1;
   4756 var INTERSECT_CUBIC_LINE_2 =  INTERSECT_CUBIC_LINE + 1;
   4757 var INTERSECT_CUBIC_LINE_3 =  INTERSECT_CUBIC_LINE_2 + 1;
   4758 var INTERSECT_CUBIC_LINE_NO = INTERSECT_CUBIC_LINE_3 + 1;
   4759 // FIXME: add cubic/quad
   4760 var INTERSECT_CUBIC =         INTERSECT_CUBIC_LINE_NO + 1;
   4761 var INTERSECT_CUBIC_2 =       INTERSECT_CUBIC + 1;
   4762 var INTERSECT_CUBIC_3 =       INTERSECT_CUBIC_2 + 1;
   4763 var INTERSECT_CUBIC_4 =       INTERSECT_CUBIC_3 + 1;
   4764 // FIXME: add cubic 5- 9
   4765 var INTERSECT_CUBIC_NO =      INTERSECT_CUBIC_4 + 1;
   4766 
   4767 var SORT_LINE =               INTERSECT_CUBIC_NO + 1;
   4768 var SORT_QUAD =               SORT_LINE + 1;
   4769 var SORT_CUBIC =              SORT_QUAD + 1;
   4770 
   4771 var SORT_LINE_UNSORTABLE =    SORT_CUBIC + 1;
   4772 var SORT_QUAD_UNSORTABLE =    SORT_LINE_UNSORTABLE + 1;
   4773 var SORT_CUBIC_UNSORTABLE =   SORT_QUAD_UNSORTABLE + 1;
   4774 
   4775 var SORT_LINE_COMPACT =       SORT_CUBIC_UNSORTABLE + 1;
   4776 var SORT_QUAD_COMPACT =       SORT_LINE_COMPACT + 1;
   4777 var SORT_CUBIC_COMPACT =      SORT_QUAD_COMPACT + 1;
   4778 
   4779 var OP_DIFFERENCE =           SORT_CUBIC_COMPACT + 1;
   4780 var OP_INTERSECT =            OP_DIFFERENCE + 1;
   4781 var OP_UNION =                OP_INTERSECT + 1;
   4782 var OP_XOR =                  OP_UNION + 1;
   4783 
   4784 var MARK_LINE =               OP_XOR + 1;
   4785 var MARK_QUAD =               MARK_LINE + 1;
   4786 var MARK_CUBIC =              MARK_QUAD + 1;
   4787 var MARK_DONE_LINE =          MARK_CUBIC + 1;
   4788 var MARK_DONE_QUAD =          MARK_DONE_LINE + 1;
   4789 var MARK_DONE_CUBIC =         MARK_DONE_QUAD + 1;
   4790 var MARK_UNSORTABLE_LINE =    MARK_DONE_CUBIC + 1;
   4791 var MARK_UNSORTABLE_QUAD =    MARK_UNSORTABLE_LINE + 1;
   4792 var MARK_UNSORTABLE_CUBIC =   MARK_UNSORTABLE_QUAD + 1;
   4793 var MARK_SIMPLE_LINE =        MARK_UNSORTABLE_CUBIC + 1;
   4794 var MARK_SIMPLE_QUAD =        MARK_SIMPLE_LINE + 1;
   4795 var MARK_SIMPLE_CUBIC =       MARK_SIMPLE_QUAD + 1;
   4796 var MARK_SIMPLE_DONE_LINE =   MARK_SIMPLE_CUBIC + 1;
   4797 var MARK_SIMPLE_DONE_QUAD =   MARK_SIMPLE_DONE_LINE + 1;
   4798 var MARK_SIMPLE_DONE_CUBIC =  MARK_SIMPLE_DONE_QUAD + 1;
   4799 var MARK_DONE_UNARY_LINE =    MARK_SIMPLE_DONE_CUBIC + 1;
   4800 var MARK_DONE_UNARY_QUAD =    MARK_DONE_UNARY_LINE + 1;
   4801 var MARK_DONE_UNARY_CUBIC =   MARK_DONE_UNARY_QUAD + 1;
   4802 
   4803 var COMPUTED_SET_1 =          MARK_DONE_UNARY_CUBIC + 1;
   4804 var COMPUTED_SET_2 =          COMPUTED_SET_1 + 1;
   4805 var FRAG_TYPE_LAST =          COMPUTED_SET_2;
   4806 
   4807 var REC_TYPE_UNKNOWN = -1;
   4808 var REC_TYPE_PATH = 0;
   4809 var REC_TYPE_SECT = 1;
   4810 var REC_TYPE_ACTIVE = 2;
   4811 var REC_TYPE_ADD = 3;
   4812 var REC_TYPE_SORT = 4;
   4813 var REC_TYPE_OP = 5;
   4814 var REC_TYPE_MARK = 6;
   4815 var REC_TYPE_COMPUTED = 7;
   4816 var REC_TYPE_COIN = 8;
   4817 var REC_TYPE_LAST = REC_TYPE_COIN;
   4818 
   4819 function strs_to_nums(strs) {
   4820     var result = [];
   4821     for (var idx = 1; idx < strs.length; ++idx) {
   4822         var str = strs[idx];
   4823         var num = parseFloat(str);
   4824         if (isNaN(num)) {
   4825             result.push(str);
   4826         } else {
   4827             result.push(num);
   4828         }
   4829     }
   4830     return result;
   4831 }
   4832 
   4833 function filter_str_by(id, str, regex, array) {
   4834     if (regex.test(str)) {
   4835         var strs = regex.exec(str);
   4836         var result = strs_to_nums(strs);
   4837         array.push(id);
   4838         array.push(result);
   4839         return true;
   4840     }
   4841     return false;
   4842 }
   4843 
   4844 function construct_regexp2(pattern) {
   4845     var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
   4846     escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
   4847     escape = escape.replace(/CUBIC_VAL/g, "\\(P_VAL P_VAL P_VAL P_VAL\\)");
   4848     escape = escape.replace(/QUAD_VAL/g, "\\(P_VAL P_VAL P_VAL\\)");
   4849     escape = escape.replace(/LINE_VAL/g, "\\(P_VAL P_VAL\\)");
   4850     escape = escape.replace(/PT_VAL/g, "\\(P_VAL\\)");
   4851     escape = escape.replace(/P_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?),(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
   4852     escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
   4853     escape = escape.replace(/IDX/g, "(\\d+)");
   4854     escape = escape.replace(/NUM/g, "(-?\\d+)");
   4855     escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
   4856     return new RegExp(escape, 'i');
   4857 }
   4858 
   4859 function construct_regexp2c(pattern) {
   4860     var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
   4861     escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
   4862     escape = escape.replace(/CUBIC_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}");
   4863     escape = escape.replace(/QUAD_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}");
   4864     escape = escape.replace(/LINE_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}\\}");
   4865     escape = escape.replace(/PT_VAL/g, "\\{\\{P_VAL\\}\\}");
   4866     escape = escape.replace(/P_VAL/g, "(?:f?[xX] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?),(?: f?[yY] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
   4867     escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
   4868     escape = escape.replace(/IDX/g, "(\\d+)");
   4869     escape = escape.replace(/NUM/g, "(-?\\d+)");
   4870     escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
   4871     return new RegExp(escape, 'i');
   4872 }
   4873 
   4874 function match_regexp(str, lineNo, array, id, pattern) {
   4875     var regex = construct_regexp2(pattern);
   4876     if (filter_str_by(id, str, regex, array)) {
   4877         return true;
   4878     }
   4879     regex = construct_regexp2c(pattern);
   4880     return filter_str_by(id, str, regex, array);
   4881 }
   4882 
   4883 function parse_all(test) {
   4884     var lines = test.match(/[^\r\n]+/g);
   4885     var records = []; // a rec can be the original paths, a set of intersections, a set of active spans, a sort, or a path add
   4886     var record = [];
   4887     var recType = REC_TYPE_UNKNOWN;
   4888     var lastLineNo;
   4889     var moveX, moveY;
   4890     for (var lineNo = 0; lineNo < lines.length; ++lineNo) {
   4891         var line = lines[lineNo];
   4892         if (line.length == 0) {
   4893             continue;
   4894         }
   4895         var opStart = "SkOpSegment::";
   4896         if (line.lastIndexOf(opStart, 0) === 0) {
   4897             line = line.substr(opStart.length);
   4898         }
   4899         var type = line.lastIndexOf("debugShowSort", 0) === 0 ? REC_TYPE_SORT
   4900                 : line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ACTIVE 
   4901                 : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN 
   4902                 : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT 
   4903                 : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
   4904                 : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
   4905                 : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
   4906                 : line.lastIndexOf("  {{", 0) === 0 ? REC_TYPE_COMPUTED
   4907                 : line.lastIndexOf("{{", 0) === 0 ? REC_TYPE_PATH
   4908                 : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
   4909                 : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
   4910                 : REC_TYPE_UNKNOWN;
   4911         if (recType != type || recType == REC_TYPE_ADD || recType == REC_TYPE_SECT) {
   4912             if (recType != REC_TYPE_UNKNOWN) {
   4913                 records.push(recType);
   4914                 records.push(lastLineNo);
   4915                 records.push(record);
   4916             }
   4917             record = [];
   4918             recType = type;
   4919             lastLineNo = lineNo;
   4920         }
   4921         var found = false;
   4922         switch (recType) {
   4923             case REC_TYPE_ACTIVE:
   4924                 found = match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
   4925 " id=IDX LINE_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=IDX"
   4926                 ) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
   4927 " id=IDX QUAD_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=IDX"
   4928                 ) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
   4929 " id=IDX CUBIC_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=IDX"
   4930                 );
   4931                 break;
   4932             case REC_TYPE_ADD:
   4933                 if (match_regexp(line, lineNo, record, ADD_MOVETO, "path.moveTo(P_VAL);")) {
   4934                     moveX = record[1][0];
   4935                     moveY = record[1][1];
   4936                     found = true;
   4937                 } else if (match_regexp(line, lineNo, record, ADD_LINETO, "path.lineTo(P_VAL);")) {
   4938                     record[1].unshift(moveY);
   4939                     record[1].unshift(moveX);
   4940                     moveX = record[1][2];
   4941                     moveY = record[1][3];
   4942                     found = true;
   4943                 } else if (match_regexp(line, lineNo, record, ADD_QUADTO, "path.quadTo(P_VAL, P_VAL);")) {
   4944                     record[1].unshift(moveY);
   4945                     record[1].unshift(moveX);
   4946                     moveX = record[1][4];
   4947                     moveY = record[1][5];
   4948                     found = true;
   4949                 } else if (match_regexp(line, lineNo, record, ADD_CUBICTO, "path.cubicTo(P_VAL, P_VAL, P_VAL);")) {
   4950                     record[1].unshift(moveY);
   4951                     record[1].unshift(moveX);
   4952                     moveX = record[1][6];
   4953                     moveY = record[1][7];
   4954                     found = true;
   4955                 } else {
   4956                     found = match_regexp(line, lineNo, record, ADD_CLOSE, "path.close();");
   4957                 }
   4958                 break;
   4959             case REC_TYPE_COIN:
   4960                 found = true;
   4961                 break;
   4962             case REC_TYPE_COMPUTED:
   4963                 found = line ==  "computed quadratics given"
   4964                   || match_regexp(line, lineNo, record, COMPUTED_SET_1, "computed quadratics set 1"
   4965                 ) || match_regexp(line, lineNo, record, COMPUTED_SET_2, "computed quadratics set 2"
   4966                 ) || match_regexp(line, lineNo, record, PATH_QUAD, "  QUAD_VAL,"
   4967                 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "  CUBIC_VAL,"
   4968                 );
   4969                 break;
   4970             case REC_TYPE_PATH:
   4971                 found = match_regexp(line, lineNo, record, PATH_LINE, "LINE_VAL"
   4972                 ) || match_regexp(line, lineNo, record, PATH_QUAD, "QUAD_VAL"
   4973                 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "CUBIC_VAL"
   4974                 );
   4975                 break;
   4976             case REC_TYPE_SECT:
   4977                 found = match_regexp(line, lineNo, record, INTERSECT_LINE, "debugShowLineIntersection" +
   4978 " wtTs[0]=T_VAL LINE_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
   4979                 ) || match_regexp(line, lineNo, record, INTERSECT_LINE_2, "debugShowLineIntersection" +
   4980 " wtTs[0]=T_VAL LINE_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
   4981                 ) || match_regexp(line, lineNo, record, INTERSECT_LINE_NO, "debugShowLineIntersection" +
   4982 " no intersect LINE_VAL LINE_VAL"
   4983                 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE, "debugShowQuadLineIntersection" +
   4984 " wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
   4985                 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_2, "debugShowQuadLineIntersection" +
   4986 " wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
   4987                 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_NO, "debugShowQuadLineIntersection" +
   4988 " no intersect QUAD_VAL LINE_VAL"
   4989                 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD, "debugShowQuadIntersection" +
   4990 " wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
   4991                 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_2, "debugShowQuadIntersection" +
   4992 " wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
   4993                 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_NO, "debugShowQuadIntersection" +
   4994 " no intersect QUAD_VAL QUAD_VAL"
   4995                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE, "debugShowCubicLineIntersection" +
   4996 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
   4997                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_2, "debugShowCubicLineIntersection" +
   4998 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
   4999                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_3, "debugShowCubicLineIntersection" +
   5000 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
   5001                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_NO, "debugShowCubicLineIntersection" +
   5002 " no intersect CUBIC_VAL LINE_VAL"
   5003                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC, "debugShowCubicIntersection" +
   5004 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL"
   5005                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_2, "debugShowCubicIntersection" +
   5006 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL"
   5007                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_3, "debugShowCubicIntersection" +
   5008 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
   5009                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_4, "debugShowCubicIntersection" +
   5010 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
   5011                 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_NO, "debugShowCubicIntersection" +
   5012 " no intersect CUBIC_VAL CUBIC_VAL"
   5013                 ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC, "debugShowCubicIntersection" +
   5014 " wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL"
   5015                 ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC_NO, "debugShowCubicIntersection" +
   5016 " no self intersect CUBIC_VAL"
   5017                 );
   5018                 break;
   5019             case REC_TYPE_SORT:
   5020                 found =  match_regexp(line, lineNo, record, SORT_LINE, "debugShowSort" +
   5021 " [IDX] LINE_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5022                 ) || match_regexp(line, lineNo, record, SORT_QUAD, "debugShowSort" +
   5023 " [IDX] QUAD_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5024                 ) || match_regexp(line, lineNo, record, SORT_CUBIC, "debugShowSort" +
   5025 " [IDX] CUBIC_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5026                 ) || match_regexp(line, lineNo, record, SORT_LINE_UNSORTABLE, "debugShowSort" +
   5027 " [IDX] UNSORTABLE LINE_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5028                 ) || match_regexp(line, lineNo, record, SORT_QUAD_UNSORTABLE, "debugShowSort" +
   5029 " [IDX] UNSORTABLE QUAD_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5030                 ) || match_regexp(line, lineNo, record, SORT_CUBIC_UNSORTABLE, "debugShowSort" +
   5031 " [IDX] UNSORTABLE CUBIC_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5032                 ) || match_regexp(line, lineNo, record, SORT_LINE_COMPACT, "debugShowSort" +
   5033 " [IDX] id=IDX line start=IDX PT_VAL end=IDX PT_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5034                 ) || match_regexp(line, lineNo, record, SORT_QUAD_COMPACT, "debugShowSort" +
   5035 " [IDX] id=IDX quad start=IDX PT_VAL end=IDX PT_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5036                 ) || match_regexp(line, lineNo, record, SORT_CUBIC_COMPACT, "debugShowSort" +
   5037 " [IDX] id=IDX cubic start=IDX PT_VAL end=IDX PT_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
   5038                 );
   5039                 break;
   5040             case REC_TYPE_MARK:
   5041                 found =  match_regexp(line, lineNo, record, MARK_LINE, "markWinding" +
   5042 " id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
   5043                 ) || match_regexp(line, lineNo, record, MARK_QUAD, "markWinding" +
   5044 " id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
   5045                 ) || match_regexp(line, lineNo, record, MARK_CUBIC, "markWinding" +
   5046 " id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
   5047                 ) || match_regexp(line, lineNo, record, MARK_DONE_LINE, "markDoneBinary" +
   5048 " id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
   5049                 ) || match_regexp(line, lineNo, record, MARK_DONE_QUAD, "markDoneBinary" +
   5050 " id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
   5051                 ) || match_regexp(line, lineNo, record, MARK_DONE_CUBIC, "markDoneBinary" +
   5052 " id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
   5053                 ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_LINE, "markUnsortable" +
   5054 " id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5055                 ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_QUAD, "markUnsortable" +
   5056 " id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5057                 ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_CUBIC, "markUnsortable" +
   5058 " id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5059                 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_LINE, "markWinding" +
   5060 " id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5061                 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_QUAD, "markWinding" +
   5062 " id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5063                 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CUBIC, "markWinding" +
   5064 " id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5065                 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_LINE, "markDone" +
   5066 " id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5067                 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_QUAD, "markDone" +
   5068 " id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5069                 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_CUBIC, "markDone" +
   5070 " id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5071                 ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_LINE, "markDoneUnary" +
   5072 " id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5073                 ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_QUAD, "markDoneUnary" +
   5074 " id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5075                 ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_CUBIC, "markDoneUnary" +
   5076 " id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
   5077                 );
   5078                 break;
   5079             case REC_TYPE_OP:
   5080                 found = match_regexp(line, lineNo, record, OP_DIFFERENCE, "op difference"
   5081                 ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op intersect"
   5082                 ) || match_regexp(line, lineNo, record, OP_UNION, "op union"
   5083                 ) || match_regexp(line, lineNo, record, OP_XOR, "op xor"
   5084                 );
   5085                 break;
   5086             case REC_TYPE_UNKNOWN:
   5087                 found = true;
   5088                 break;
   5089         }
   5090         if (!found) {
   5091             console.log(line + " [" + lineNo + "] of type " + type + " not found");
   5092         }
   5093     }
   5094     if (recType != REC_TYPE_UNKNOWN) {
   5095         records.push(recType);
   5096         records.push(lastLineNo);
   5097         records.push(record);
   5098     }
   5099     if (records.length >= 1) {
   5100         tests[testIndex] = records;
   5101         testLines[testIndex] = lines;
   5102     }
   5103 }
   5104 
   5105 function init(test) {
   5106     var canvas = document.getElementById('canvas');
   5107     if (!canvas.getContext) return;
   5108     screenWidth = canvas.width = window.innerWidth - 20;
   5109     screenHeight = canvas.height = window.innerHeight - 20;
   5110     ctx = canvas.getContext('2d');
   5111     xmin = Infinity;
   5112     xmax = -Infinity;
   5113     ymin = Infinity;
   5114     ymax = -Infinity;
   5115     hasPath = hasComputedPath = false;
   5116     for (var testIndex = 0; testIndex < test.length; testIndex += 3) {
   5117         var recType = test[testIndex];
   5118         if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
   5119             console.log("unknown rec type: " + recType);
   5120             throw "stop execution";
   5121         }
   5122         var records = test[testIndex + 2];
   5123         for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
   5124             var fragType = records[recordIndex];
   5125             if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
   5126                 console.log("unknown in range frag type: " + fragType);
   5127                 throw "stop execution";
   5128             }
   5129             var frags = records[recordIndex + 1];
   5130             var first = 0;
   5131             var last = -1;
   5132             var first2 = 0;
   5133             var last2 = 0;
   5134             switch (recType) {
   5135                 case REC_TYPE_COMPUTED:
   5136                     if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2) {
   5137                         break;
   5138                     }
   5139                     hasComputedPath = true;
   5140                 case REC_TYPE_PATH:
   5141                     switch (fragType) {
   5142                         case PATH_LINE:
   5143                             last = 4;
   5144                             break;
   5145                         case PATH_QUAD:
   5146                             last = 6;
   5147                             break;
   5148                         case PATH_CUBIC:
   5149                             last = 8;
   5150                             break;
   5151                         default:
   5152                             console.log("unknown " + (recType == REC_TYPE_PATH ? "REC_TYPE_PATH" 
   5153                                     : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
   5154                             throw "stop execution";
   5155                     }
   5156                     if (recType == REC_TYPE_PATH) {
   5157                         hasPath = true;
   5158                     }
   5159                     break;
   5160                 case REC_TYPE_ACTIVE:
   5161                     first = 1;
   5162                     switch (fragType) {
   5163                         case ACTIVE_LINE_SPAN:
   5164                             last = 5;
   5165                             break;
   5166                         case ACTIVE_QUAD_SPAN:
   5167                             last = 7;
   5168                             break;
   5169                         case ACTIVE_CUBIC_SPAN:
   5170                             last = 9;
   5171                             break;
   5172                         default:
   5173                             console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
   5174                             throw "stop execution";
   5175                     }
   5176                     break;
   5177                 case REC_TYPE_ADD:
   5178                     switch (fragType) {
   5179                         case ADD_MOVETO:
   5180                             break;
   5181                         case ADD_LINETO:
   5182                             last = 4;
   5183                             break;
   5184                         case ADD_QUADTO:
   5185                             last = 6;
   5186                             break;
   5187                         case ADD_CUBICTO:
   5188                             last = 8;
   5189                             break;
   5190                         case ADD_CLOSE:
   5191                             break;
   5192                         default:
   5193                             console.log("unknown REC_TYPE_ADD frag type: " + fragType);
   5194                             throw "stop execution";
   5195                     }
   5196                     break;
   5197                 case REC_TYPE_SECT:
   5198                     switch (fragType) {
   5199                         case INTERSECT_LINE:
   5200                             first = 1; last = 5; first2 = 8; last2 = 12;
   5201                             break;
   5202                         case INTERSECT_LINE_2:
   5203                             first = 1; last = 5; first2 = 11; last2 = 15;
   5204                             break;
   5205                         case INTERSECT_LINE_NO:
   5206                             first = 0; last = 4; first2 = 4; last2 = 8;
   5207                             break;
   5208                         case INTERSECT_QUAD_LINE:
   5209                             first = 1; last = 7; first2 = 10; last2 = 14;
   5210                             break;
   5211                         case INTERSECT_QUAD_LINE_2:
   5212                             first = 1; last = 7; first2 = 13; last2 = 17;
   5213                             break;
   5214                         case INTERSECT_QUAD_LINE_NO:
   5215                             first = 0; last = 6; first2 = 6; last2 = 10;
   5216                             break;
   5217                         case INTERSECT_QUAD:
   5218                             first = 1; last = 7; first2 = 10; last2 = 16;
   5219                             break;
   5220                         case INTERSECT_QUAD_2:
   5221                             first = 1; last = 7; first2 = 13; last2 = 19;
   5222                             break;
   5223                         case INTERSECT_QUAD_NO:
   5224                             first = 0; last = 6; first2 = 6; last2 = 12;
   5225                             break;
   5226                         case INTERSECT_SELF_CUBIC:
   5227                             first = 1; last = 9;
   5228                             break;
   5229                         case INTERSECT_SELF_CUBIC_NO:
   5230                             first = 0; last = 8;
   5231                             break;
   5232                         case INTERSECT_CUBIC_LINE:
   5233                             first = 1; last = 9; first2 = 12; last2 = 16;
   5234                             break;
   5235                         case INTERSECT_CUBIC_LINE_2:
   5236                             first = 1; last = 9; first2 = 15; last2 = 19;
   5237                             break;
   5238                         case INTERSECT_CUBIC_LINE_3:
   5239                             first = 1; last = 9; first2 = 18; last2 = 22;
   5240                             break;
   5241                         case INTERSECT_CUBIC_LINE_NO:
   5242                             first = 0; last = 8; first2 = 8; last2 = 12;
   5243                             break;
   5244                         case INTERSECT_CUBIC:
   5245                             first = 1; last = 9; first2 = 12; last2 = 20;
   5246                             break;
   5247                         case INTERSECT_CUBIC_2:
   5248                             first = 1; last = 9; first2 = 15; last2 = 23;
   5249                             break;
   5250                         case INTERSECT_CUBIC_3:
   5251                             first = 1; last = 9; first2 = 18; last2 = 26;
   5252                             break;
   5253                         case INTERSECT_CUBIC_4:
   5254                             first = 1; last = 9; first2 = 21; last2 = 29;
   5255                             break;
   5256                         case INTERSECT_CUBIC_NO:
   5257                             first = 0; last = 8; first2 = 8; last2 = 16;
   5258                             break;
   5259                         default:
   5260                             console.log("unknown REC_TYPE_SECT frag type: " + fragType);
   5261                             throw "stop execution";
   5262                     }
   5263                     break;
   5264                 default:
   5265                     continue;
   5266             }
   5267             for (var idx = first; idx < last; idx += 2) {
   5268                 xmin = Math.min(xmin, frags[idx]);
   5269                 xmax = Math.max(xmax, frags[idx]);
   5270                 ymin = Math.min(ymin, frags[idx + 1]);
   5271                 ymax = Math.max(ymax, frags[idx + 1]);
   5272             }
   5273             for (var idx = first2; idx < last2; idx += 2) {
   5274                 xmin = Math.min(xmin, frags[idx]);
   5275                 xmax = Math.max(xmax, frags[idx]);
   5276                 ymin = Math.min(ymin, frags[idx + 1]);
   5277                 ymax = Math.max(ymax, frags[idx + 1]);
   5278             }
   5279         }
   5280     }
   5281     setScale();
   5282     if (hasPath == false && hasComputedPath == true && !draw_computed) {
   5283         draw_computed = 3; // show both quadratics and cubics
   5284     }
   5285     if (hasPath == true && hasComputedPath == false && draw_computed) {
   5286         draw_computed = 0;
   5287     }
   5288 }
   5289 
   5290 function setScale() {
   5291     var srcWidth = xmax - xmin;
   5292     var srcHeight = ymax - ymin;
   5293     var hscale = ctx.canvas.width / srcWidth;
   5294     var vscale = ctx.canvas.height / srcHeight;
   5295     scale = Math.min(hscale, vscale);
   5296     var invScale = 1 / scale;
   5297     var sxmin = xmin - invScale * 5;
   5298     var symin = ymin - invScale * 10;
   5299     var sxmax = xmax + invScale * (6 * decimal_places + 10);
   5300     var symax = ymax + invScale * 10;
   5301     srcWidth = sxmax - sxmin;
   5302     srcHeight = symax - symin;
   5303     hscale = ctx.canvas.width / srcWidth;
   5304     vscale = ctx.canvas.height / srcHeight;
   5305     scale = Math.min(hscale, vscale);
   5306     srcLeft = sxmin;
   5307     srcTop = symin;
   5308 }
   5309 
   5310 function drawPoint(px, py, end) {
   5311     for (var pts = 0; pts < drawnPts.length; pts += 2) {
   5312         var x = drawnPts[pts];
   5313         var y = drawnPts[pts + 1];
   5314         if (px == x && py == y) {
   5315             return;
   5316         }
   5317     }
   5318     drawnPts.push(px);
   5319     drawnPts.push(py);
   5320     var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
   5321     var _px = (px - srcLeft) * scale;
   5322     var _py = (py - srcTop) * scale;
   5323     ctx.beginPath();
   5324     ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
   5325     ctx.closePath();
   5326     if (end) {
   5327         ctx.fill();
   5328     } else {
   5329         ctx.stroke();
   5330     }
   5331     ctx.textAlign = "left";
   5332     ctx.fillText(label, _px + 5, _py);
   5333 }
   5334 
   5335 function drawPoints(ptArray, curveType, drawControls) {
   5336     var count = (curveType - PATH_LINE + 2) * 2;
   5337     for (var idx = 0; idx < count; idx += 2) {
   5338         if (!drawControls && idx != 0 && idx != count - 2) {
   5339             continue;
   5340         }
   5341         drawPoint(ptArray[idx], ptArray[idx + 1], idx == 0 || idx == count - 2);
   5342     }
   5343 }
   5344 
   5345 function drawControlLines(curve, curveType, drawEnd) {
   5346     if (curveType == PATH_LINE) {
   5347         return;
   5348     }
   5349     ctx.strokeStyle = "rgba(0,0,0, 0.3)";
   5350     drawLine(curve[0], curve[1], curve[2], curve[3]);
   5351     drawLine(curve[2], curve[3], curve[4], curve[5]);
   5352     if (curveType == PATH_CUBIC) {
   5353         drawLine(curve[4], curve[5], curve[6], curve[7]);
   5354         if (drawEnd > 1) {
   5355             drawLine(curve[6], curve[7], curve[0], curve[1]);
   5356             if (drawEnd > 2) {
   5357                 drawLine(curve[0], curve[1], curve[4], curve[5]);
   5358                 drawLine(curve[6], curve[7], curve[2], curve[3]);
   5359             }
   5360         }
   5361     } else if (drawEnd > 1) {
   5362         drawLine(curve[4], curve[5], curve[0], curve[1]);
   5363     }
   5364 }
   5365 
   5366 function pointAtT(curve, curveType, t) {
   5367     var xy = {};
   5368     switch (curveType) {
   5369         case PATH_LINE:
   5370             var a = 1 - t;
   5371             var b = t;
   5372             xy.x = a * curve[0] + b * curve[2];
   5373             xy.y = a * curve[1] + b * curve[3];
   5374             break;
   5375         case PATH_QUAD:
   5376             var one_t = 1 - t;
   5377             var a = one_t * one_t;
   5378             var b = 2 * one_t * t;
   5379             var c = t * t;
   5380             xy.x = a * curve[0] + b * curve[2] + c * curve[4];
   5381             xy.y = a * curve[1] + b * curve[3] + c * curve[5];
   5382             break;
   5383         case PATH_CUBIC:
   5384             var one_t = 1 - t;
   5385             var one_t2 = one_t * one_t;
   5386             var a = one_t2 * one_t;
   5387             var b = 3 * one_t2 * t;
   5388             var t2 = t * t;
   5389             var c = 3 * one_t * t2;
   5390             var d = t2 * t;
   5391             xy.x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
   5392             xy.y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
   5393             break;
   5394     }
   5395     return xy;
   5396 }
   5397     
   5398 function drawPointAtT(curve, curveType) {
   5399     var x, y;
   5400     var xy = pointAtT(curve, curveType, curveT);
   5401     drawPoint(xy.x, xy.y, true);
   5402     if (!draw_intersectT) {
   5403         return;
   5404     }
   5405     ctx.fillStyle = "red";
   5406     drawTAtPointUp(xy.x, xy.y, curveT);
   5407 }
   5408 
   5409 function drawTAtPointUp(px, py, t) {
   5410     var label = t.toFixed(decimal_places);
   5411     var _px = (px - srcLeft)* scale;
   5412     var _py = (py - srcTop) * scale;
   5413     ctx.fillText(label, _px + 5, _py - 10);
   5414 }
   5415 
   5416 function drawTAtPointDown(px, py, t) {
   5417     var label = t.toFixed(decimal_places);
   5418     var _px = (px - srcLeft)* scale;
   5419     var _py = (py - srcTop) * scale;
   5420     ctx.fillText(label, _px + 5, _py + 10);
   5421 }
   5422 
   5423 function alreadyDrawnLine(x1, y1, x2, y2) {
   5424     for (var pts = 0; pts < drawnLines.length; pts += 4) {
   5425         if (x1 == drawnLines[pts] && y1 == drawnLines[pts + 1]
   5426                 && x2 == drawnLines[pts + 2] && y2 == drawnLines[pts + 3]) {
   5427             return true;
   5428         }
   5429     }
   5430     drawnLines.push(x1);
   5431     drawnLines.push(y1);
   5432     drawnLines.push(x2);
   5433     drawnLines.push(y2);
   5434     return false;
   5435 }
   5436 
   5437 function drawLine(x1, y1, x2, y2) {
   5438     if (alreadyDrawnLine(x1, y1, x2, y2)) {
   5439         return;
   5440     }
   5441     ctx.beginPath();
   5442     ctx.moveTo((x1 - srcLeft) * scale,
   5443             (y1 - srcTop) * scale);
   5444     ctx.lineTo((x2 - srcLeft) * scale,
   5445             (y2 - srcTop) * scale);
   5446     ctx.stroke();
   5447 }
   5448 
   5449 function linePartial(x1, y1, x2, y2, t1, t2) {
   5450     var dx = x1 - x2;
   5451     var dy = y1 - y2;
   5452     var array = [
   5453         x1 - t1 * dx,
   5454         y1 - t1 * dy,
   5455         x1 - t2 * dx,
   5456         y1 - t2 * dy
   5457     ];
   5458     return array;
   5459 }
   5460 
   5461 function drawLinePartial(x1, y1, x2, y2, t1, t2) {
   5462     var a = linePartial(x1, y1, x2, y2, t1, t2);
   5463     var ax = a[0];
   5464     var ay = a[1];
   5465     var bx = a[2];
   5466     var by = a[3];
   5467     if (alreadyDrawnLine(ax, ay, bx, by)) {
   5468         return;
   5469     }
   5470     ctx.beginPath();
   5471     ctx.moveTo((ax - srcLeft) * scale,
   5472             (ay - srcTop) * scale);
   5473     ctx.lineTo((bx - srcLeft) * scale,
   5474             (by - srcTop) * scale);
   5475     ctx.stroke();
   5476 }
   5477 
   5478 function alreadyDrawnQuad(x1, y1, x2, y2, x3, y3) {
   5479     for (var pts = 0; pts < drawnQuads.length; pts += 6) {
   5480         if (x1 == drawnQuads[pts] && y1 == drawnQuads[pts + 1]
   5481                 && x2 == drawnQuads[pts + 2] && y2 == drawnQuads[pts + 3]
   5482                 && x3 == drawnQuads[pts + 4] && x3 == drawnQuads[pts + 5]) {
   5483             return true;
   5484         }
   5485     }
   5486     drawnQuads.push(x1);
   5487     drawnQuads.push(y1);
   5488     drawnQuads.push(x2);
   5489     drawnQuads.push(y2);
   5490     drawnQuads.push(x3);
   5491     drawnQuads.push(y3);
   5492     return false;
   5493 }
   5494 
   5495 function drawQuad(x1, y1, x2, y2, x3, y3) {
   5496     if (alreadyDrawnQuad(x1, y1, x2, y2, x3, y3)) {
   5497         return;
   5498     }
   5499     ctx.beginPath();
   5500     ctx.moveTo((x1 - srcLeft) * scale,
   5501             (y1 - srcTop) * scale);
   5502     ctx.quadraticCurveTo((x2 - srcLeft) * scale,
   5503             (y2 - srcTop) * scale,
   5504             (x3 - srcLeft) * scale,
   5505             (y3 - srcTop) * scale);
   5506     ctx.stroke();
   5507 }
   5508 
   5509 function interp(A, B, t) {
   5510     return A + (B - A) * t;
   5511 }
   5512 
   5513 function interp_quad_coords(x1, x2, x3, t)
   5514 {
   5515     var ab = interp(x1, x2, t);
   5516     var bc = interp(x2, x3, t);
   5517     var abc = interp(ab, bc, t);
   5518     return abc;
   5519 }
   5520 
   5521 function quadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
   5522     var ax = interp_quad_coords(x1, x2, x3, t1);
   5523     var ay = interp_quad_coords(y1, y2, y3, t1);
   5524     var dx = interp_quad_coords(x1, x2, x3, (t1 + t2) / 2);
   5525     var dy = interp_quad_coords(y1, y2, y3, (t1 + t2) / 2);
   5526     var cx = interp_quad_coords(x1, x2, x3, t2);
   5527     var cy = interp_quad_coords(y1, y2, y3, t2);
   5528     var bx = 2*dx - (ax + cx)/2;
   5529     var by = 2*dy - (ay + cy)/2;
   5530     var array = [
   5531         ax, ay, bx, by, cx, cy
   5532     ];
   5533     return array;
   5534 }
   5535 
   5536 function drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
   5537     var a = quadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
   5538     var ax = a[0];
   5539     var ay = a[1];
   5540     var bx = a[2];
   5541     var by = a[3];
   5542     var cx = a[4];
   5543     var cy = a[5];
   5544     if (alreadyDrawnQuad(ax, ay, bx, by, cx, cy)) {
   5545         return;
   5546     }
   5547     ctx.beginPath();
   5548     ctx.moveTo((ax - srcLeft) * scale,
   5549             (ay - srcTop) * scale);
   5550     ctx.quadraticCurveTo((bx - srcLeft) * scale,
   5551             (by - srcTop) * scale,
   5552             (cx - srcLeft) * scale,
   5553             (cy - srcTop) * scale);
   5554     ctx.stroke();
   5555 }
   5556 
   5557 function alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
   5558     for (var pts = 0; pts < drawnCubics.length; pts += 8) {
   5559         if (x1 == drawnCubics[pts] && y1 == drawnCubics[pts + 1]
   5560                 && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3] 
   5561                 && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5] 
   5562                 && x4 == drawnCubics[pts + 6] && y4 == drawnCubics[pts + 7]) {
   5563             return true;
   5564         }
   5565     }
   5566     drawnCubics.push(x1);
   5567     drawnCubics.push(y1);
   5568     drawnCubics.push(x2);
   5569     drawnCubics.push(y2);
   5570     drawnCubics.push(x3);
   5571     drawnCubics.push(y3);
   5572     drawnCubics.push(x4);
   5573     drawnCubics.push(y4);
   5574     return false;
   5575 }
   5576 
   5577 function drawCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
   5578     if (alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4)) {
   5579         return;
   5580     }
   5581     ctx.beginPath();
   5582     ctx.moveTo((x1 - srcLeft) * scale,
   5583             (y1 - srcTop) * scale);
   5584     ctx.bezierCurveTo((x2 - srcLeft) * scale,
   5585             (y2 - srcTop) * scale,
   5586             (x3 - srcLeft) * scale,
   5587             (y3 - srcTop) * scale,
   5588             (x4 - srcLeft) * scale,
   5589             (y4 - srcTop) * scale);
   5590     ctx.stroke();
   5591 }
   5592 
   5593 function interp_cubic_coords(x1, x2, x3, x4, t)
   5594 {
   5595     var ab = interp(x1, x2, t);
   5596     var bc = interp(x2, x3, t);
   5597     var cd = interp(x3, x4, t);
   5598     var abc = interp(ab, bc, t);
   5599     var bcd = interp(bc, cd, t);
   5600     var abcd = interp(abc, bcd, t);
   5601     return abcd;
   5602 }
   5603 
   5604 function cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
   5605     var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
   5606     var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
   5607     var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
   5608     var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
   5609     var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
   5610     var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
   5611     var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
   5612     var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
   5613     var mx = ex * 27 - ax * 8 - dx;
   5614     var my = ey * 27 - ay * 8 - dy;
   5615     var nx = fx * 27 - ax - dx * 8;
   5616     var ny = fy * 27 - ay - dy * 8;
   5617     var bx = (mx * 2 - nx) / 18;
   5618     var by = (my * 2 - ny) / 18;
   5619     var cx = (nx * 2 - mx) / 18;
   5620     var cy = (ny * 2 - my) / 18;
   5621     var array = [
   5622         ax, ay, bx, by, cx, cy, dx, dy
   5623     ];
   5624     return array;
   5625 }
   5626     
   5627 function drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
   5628     var a = cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
   5629     var ax = a[0];
   5630     var ay = a[1];
   5631     var bx = a[2];
   5632     var by = a[3];
   5633     var cx = a[4];
   5634     var cy = a[5];
   5635     var dx = a[6];
   5636     var dy = a[7];
   5637     if (alreadyDrawnCubic(ax, ay, bx, by, cx, cy, dx, dy)) {
   5638         return;
   5639     }
   5640     ctx.beginPath();
   5641     ctx.moveTo((ax - srcLeft) * scale,
   5642             (ay - srcTop) * scale);
   5643     ctx.bezierCurveTo((bx - srcLeft) * scale,
   5644             (by - srcTop) * scale,
   5645             (cx - srcLeft) * scale,
   5646             (cy - srcTop) * scale,
   5647             (dx - srcLeft) * scale,
   5648             (dy - srcTop) * scale);
   5649     ctx.stroke();
   5650 }
   5651 
   5652 function boundsWidth(pts) {
   5653     var min = pts[0];
   5654     var max = pts[0];
   5655     for (var idx = 2; idx < pts.length; idx += 2) {
   5656         min = Math.min(min, pts[idx]);
   5657         max = Math.max(max, pts[idx]);
   5658     }
   5659     return max - min;
   5660 }
   5661 
   5662 function boundsHeight(pts) {
   5663     var min = pts[1];
   5664     var max = pts[1];
   5665     for (var idx = 3; idx < pts.length; idx += 2) {
   5666         min = Math.min(min, pts[idx]);
   5667         max = Math.max(max, pts[idx]);
   5668     }
   5669     return max - min;
   5670 }
   5671 
   5672 function tangent(pts) {
   5673     var dx = pts[2] - pts[0];
   5674     var dy = pts[3] - pts[1];
   5675     if (dx == 0 && dy == 0 && pts.length > 4) {
   5676         dx = pts[4] - pts[0];
   5677         dy = pts[5] - pts[1];
   5678         if (dx == 0 && dy == 0 && pts.length > 6) {
   5679             dx = pts[6] - pts[0];
   5680             dy = pts[7] - pts[1];
   5681         }
   5682     }
   5683     return Math.atan2(-dy, dx);
   5684 }
   5685 
   5686 function hodograph(cubic) {
   5687     var hodo = [];
   5688     hodo[0] = 3 * (cubic[2] - cubic[0]);
   5689     hodo[1] = 3 * (cubic[3] - cubic[1]);
   5690     hodo[2] = 3 * (cubic[4] - cubic[2]);
   5691     hodo[3] = 3 * (cubic[5] - cubic[3]);
   5692     hodo[4] = 3 * (cubic[6] - cubic[4]);
   5693     hodo[5] = 3 * (cubic[7] - cubic[5]);
   5694     return hodo;
   5695 }
   5696 
   5697 function hodograph2(cubic) {
   5698     var quad = hodograph(cubic);
   5699     var hodo = [];
   5700     hodo[0] = 2 * (quad[2] - quad[0]);
   5701     hodo[1] = 2 * (quad[3] - quad[1]);
   5702     hodo[2] = 2 * (quad[4] - quad[2]);
   5703     hodo[3] = 2 * (quad[5] - quad[3]);
   5704     return hodo;
   5705 }
   5706 
   5707 function quadraticRootsReal(A, B, C, s) {
   5708     if (A == 0) {
   5709         if (B == 0) {
   5710             s[0] = 0;
   5711             return C == 0;
   5712         }
   5713         s[0] = -C / B;
   5714         return 1;
   5715     }
   5716     /* normal form: x^2 + px + q = 0 */
   5717     var p = B / (2 * A);
   5718     var q = C / A;
   5719     var p2 = p * p;
   5720     if (p2 < q) {
   5721         return 0;
   5722     }
   5723     var sqrt_D = 0;
   5724     if (p2 > q) {
   5725         sqrt_D = sqrt(p2 - q);
   5726     }
   5727     s[0] = sqrt_D - p;
   5728     s[1] = -sqrt_D - p;
   5729     return 1 + s[0] != s[1];
   5730 }
   5731 
   5732 function add_valid_ts(s, realRoots, t) {
   5733     var foundRoots = 0;
   5734     for (var index = 0; index < realRoots; ++index) {
   5735         var tValue = s[index];
   5736         if (tValue >= 0 && tValue <= 1) {
   5737             for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
   5738                 if (t[idx2] != tValue) {
   5739                     t[foundRoots++] = tValue;
   5740                 }
   5741             }
   5742         }
   5743     }
   5744     return foundRoots;
   5745 }
   5746 
   5747 function quadraticRootsValidT(a, b, c, t) {
   5748     var s = [];
   5749     var realRoots = quadraticRootsReal(A, B, C, s);
   5750     var foundRoots = add_valid_ts(s, realRoots, t);
   5751     return foundRoots != 0;
   5752 }
   5753 
   5754 function find_cubic_inflections(cubic, tValues) {
   5755     var Ax = src[2] - src[0];
   5756     var Ay = src[3] - src[1];
   5757     var Bx = src[4] - 2 * src[2] + src[0];
   5758     var By = src[5] - 2 * src[3] + src[1];
   5759     var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
   5760     var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
   5761     return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
   5762             Ax * By - Ay * Bx, tValues);
   5763 }
   5764 
   5765 function dxy_at_t(curve, type, t) {
   5766     var dxy = {};
   5767     if (type == PATH_QUAD) {
   5768         var a = t - 1;
   5769         var b = 1 - 2 * t;
   5770         var c = t;
   5771         dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
   5772         dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
   5773     } else if (type == PATH_CUBIC) {
   5774         var one_t = 1 - t;
   5775         var a = curve[0];
   5776         var b = curve[2];
   5777         var c = curve[4];
   5778         var d = curve[6];
   5779         dxy.x = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
   5780         a = curve[1];
   5781         b = curve[3];
   5782         c = curve[5];
   5783         d = curve[7];
   5784         dxy.y = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
   5785     }
   5786     return dxy;
   5787 }
   5788 
   5789 function drawLabel(num, px, py) {
   5790     ctx.beginPath();
   5791     ctx.arc(px, py, 8, 0, Math.PI*2, true);
   5792     ctx.closePath();
   5793     ctx.strokeStyle = "rgba(0,0,0, 0.4)";
   5794     ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
   5795     ctx.stroke();
   5796     ctx.fillStyle = "black";
   5797     ctx.font = "normal 10px Arial";
   5798   //  ctx.rotate(0.001);
   5799     ctx.fillText(num, px - 2, py + 3);
   5800   //  ctx.rotate(-0.001);
   5801 }
   5802 
   5803 function drawLabelX(ymin, num, loc) {
   5804     var px = (loc - srcLeft) * scale;
   5805     var py = (ymin - srcTop) * scale - 20;
   5806     drawLabel(num, px, py);
   5807 }
   5808 
   5809 function drawLabelY(xmin, num, loc) {
   5810     var px = (xmin - srcLeft) * scale - 20;
   5811     var py = (loc - srcTop) * scale;
   5812     drawLabel(num, px, py);
   5813 }
   5814 
   5815 function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
   5816     ctx.beginPath();
   5817     ctx.moveTo(hx, hy - 100);
   5818     ctx.lineTo(hx, hy);
   5819     ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
   5820     ctx.stroke();
   5821     ctx.beginPath();
   5822     ctx.moveTo(hx, hy);
   5823     ctx.lineTo(hx, hy + 100);
   5824     ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
   5825     ctx.stroke();
   5826     ctx.beginPath();
   5827     ctx.moveTo(hx - 100, hy);
   5828     ctx.lineTo(hx, hy);
   5829     ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
   5830     ctx.stroke();
   5831     ctx.beginPath();
   5832     ctx.moveTo(hx, hy);
   5833     ctx.lineTo(hx + 100, hy);
   5834     ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
   5835     ctx.stroke();
   5836 }
   5837 
   5838 function scalexy(x, y, mag) {
   5839     var length = Math.sqrt(x * x + y * y);
   5840     return mag / length;
   5841 }
   5842 
   5843 function drawArrow(x, y, dx, dy) {
   5844     var dscale = scalexy(dx, dy, 1 / scale * 100);
   5845     dx *= dscale;
   5846     dy *= dscale;
   5847     ctx.beginPath();
   5848     ctx.moveTo((x - srcLeft) * scale, (y - srcTop) * scale);
   5849     x += dx;
   5850     y += dy;
   5851     ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
   5852     dx /= 10;
   5853     dy /= 10;
   5854     ctx.lineTo((x - dy - srcLeft) * scale, (y + dx - srcTop) * scale);
   5855     ctx.lineTo((x + dx * 2 - srcLeft) * scale, (y + dy * 2 - srcTop) * scale);
   5856     ctx.lineTo((x + dy - srcLeft) * scale, (y - dx - srcTop) * scale);
   5857     ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
   5858     ctx.strokeStyle = "rgba(0,75,0, 0.4)";
   5859     ctx.stroke();
   5860 }
   5861 
   5862 function drawCurveSpecials(curve, type) {
   5863     if (pt_labels) {
   5864         drawPoints(curve, type, pt_labels == 2);
   5865     }
   5866     if (control_lines != 0) {
   5867         drawControlLines(curve, type, control_lines);
   5868     }
   5869     if (curve_t) {
   5870         drawPointAtT(curve, type);
   5871     }
   5872     if (draw_midpoint) {
   5873         var mid = pointAtT(curve, type, 0.5);
   5874         drawPoint(mid.x, mid.y, true);
   5875     }
   5876     if (type == PATH_LINE) {
   5877         return;
   5878     }
   5879     if (draw_deriviatives > 0) {
   5880         var d = dxy_at_t(curve, type, 0);
   5881         drawArrow(curve[0], curve[1], d.x, d.y);
   5882         if (draw_deriviatives == 2) {
   5883             d = dxy_at_t(curve, type, 1);
   5884             if (type == PATH_CUBIC) {
   5885                 drawArrow(curve[6], curve[7], d.x, d.y);
   5886             } else {
   5887                 drawArrow(curve[4], curve[5], d.x, d.y);
   5888             }
   5889         }
   5890         if (draw_midpoint) {
   5891             var mid = pointAtT(curve, 0.5);
   5892             d = dxy_at_t(curve, type, 0.5);
   5893             drawArrow(mid.x, mid.y, d.x, d.y);
   5894         }
   5895     }
   5896     if (type != PATH_CUBIC) {
   5897         return;
   5898     }
   5899     if (draw_hodo == 1 || draw_hodo == 2) {
   5900         var hodo = hodograph(curve);
   5901         var hMinX = Math.min(0, hodo[0], hodo[2], hodo[4]);
   5902         var hMinY = Math.min(0, hodo[1], hodo[3], hodo[5]);
   5903         var hMaxX = Math.max(0, hodo[0], hodo[2], hodo[4]);
   5904         var hMaxY = Math.max(0, hodo[1], hodo[3], hodo[5]);
   5905         var hScaleX = hMaxX - hMinX > 0 ? ctx.canvas.width / (hMaxX - hMinX) : 1;
   5906         var hScaleY = hMaxY - hMinY > 0 ? ctx.canvas.height / (hMaxY - hMinY) : 1;
   5907         var hUnit = Math.min(hScaleX, hScaleY);
   5908         hUnit /= 2;
   5909         var hx = xoffset - hMinX * hUnit;
   5910         var hy = yoffset - hMinY * hUnit;
   5911         ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
   5912         ctx.quadraticCurveTo(
   5913             hx + hodo[2] * hUnit, hy + hodo[3] * hUnit,
   5914             hx + hodo[4] * hUnit, hy + hodo[5] * hUnit);
   5915         ctx.strokeStyle = "red";
   5916         ctx.stroke();
   5917         if (draw_hodo == 1) {
   5918             drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
   5919         }
   5920     }
   5921     if (draw_hodo == 3) {
   5922         var hodo = hodograph2(curve);
   5923         var hMinX = Math.min(0, hodo[0], hodo[2]);
   5924         var hMinY = Math.min(0, hodo[1], hodo[3]);
   5925         var hMaxX = Math.max(0, hodo[0], hodo[2]);
   5926         var hMaxY = Math.max(0, hodo[1], hodo[3]);
   5927         var hScaleX = hMaxX - hMinX > 0 ? ctx.canvas.width / (hMaxX - hMinX) : 1;
   5928         var hScaleY = hMaxY - hMinY > 0 ? ctx.canvas.height / (hMaxY - hMinY) : 1;
   5929         var hUnit = Math.min(hScaleX, hScaleY);
   5930         hUnit /= 2;
   5931         var hx = xoffset - hMinX * hUnit;
   5932         var hy = yoffset - hMinY * hUnit;
   5933         ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
   5934         ctx.lineTo(hx + hodo[2] * hUnit, hy + hodo[3] * hUnit);
   5935         ctx.strokeStyle = "red";
   5936         ctx.stroke();
   5937         drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
   5938     }
   5939     if (draw_sequence) {
   5940         var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
   5941         for (var i = 0; i < 8; i+= 2) {
   5942             drawLabelX(ymin, i >> 1, curve[i]);
   5943         }
   5944         var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
   5945         for (var i = 1; i < 8; i+= 2) {
   5946             drawLabelY(xmin, i >> 1, curve[i]);
   5947         }
   5948     }
   5949 }
   5950 
   5951 function logCurves(test) {
   5952     for (curves in test) {
   5953         var curve = test[curves];
   5954         if (curve.length != 8) {
   5955             continue;
   5956         }
   5957         var str = "{{";
   5958         for (i = 0; i < 8; i += 2) {
   5959             str += curve[i].toFixed(decimal_places) + "," + curve[i + 1].toFixed(decimal_places);
   5960             if (i < 6) {
   5961                 str += "}, {";
   5962             }
   5963         }
   5964         str += "}}";
   5965         console.log(str);
   5966     }
   5967 }
   5968 
   5969 function draw(test, lines, title) {
   5970     ctx.fillStyle = "rgba(0,0,0, 0.1)";
   5971     ctx.font = "normal 50px Arial";
   5972     ctx.textAlign = "left";
   5973     ctx.fillText(title, 50, 50);
   5974     ctx.font = "normal 10px Arial";
   5975     ctx.lineWidth = "1.001"; "0.999";
   5976     var secondPath = test.length;
   5977     var closeCount = 0;
   5978     var logStart = -1;
   5979     var logRange = 0;
   5980     // find last active rec type at this step
   5981     var curType = test[0];
   5982     var curStep = 0;
   5983     var hasOp = false;
   5984     var lastActive = 0;
   5985     var lastAdd = 0;
   5986     var lastSect = 0;
   5987     var lastSort = 0;
   5988     var lastMark = 0;
   5989     activeCount = 0;
   5990     addCount = 0;
   5991     sectCount = 0;
   5992     sortCount = 0;
   5993     markCount = 0;
   5994     activeMax = 0;
   5995     addMax = 0;
   5996     sectMax = 0;
   5997     sectMax2 = 0;
   5998     sortMax = 0;
   5999     markMax = 0;
   6000     lastIndex = test.length - 3;
   6001     for (var testIndex = 0; testIndex < test.length; testIndex += 3) {
   6002         var recType = test[testIndex];
   6003         if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
   6004             console.log("unknown rec type: " + recType);
   6005             throw "stop execution";
   6006         }
   6007    //     if (curType == recType && curType != REC_TYPE_ADD) {
   6008    //         continue;
   6009    //     }
   6010         var inStepRange = step_limit == 0 || curStep < step_limit;
   6011         curType = recType;
   6012         if (recType == REC_TYPE_OP) {
   6013             hasOp = true;
   6014             continue;
   6015         }
   6016         if (recType == REC_TYPE_UNKNOWN) {
   6017             // these types do not advance step
   6018             continue;
   6019         }
   6020         var bumpStep = false;
   6021         var records = test[testIndex + 2];
   6022         var fragType = records[0];
   6023         if (recType == REC_TYPE_ADD) {
   6024             if (records.length != 2) {
   6025                 console.log("expect only two elements: " + records.length);
   6026                 throw "stop execution";
   6027             }
   6028             if (fragType == ADD_MOVETO || fragType == ADD_CLOSE) {
   6029                 continue;
   6030             }
   6031             ++addMax;
   6032             if (!draw_add || !inStepRange) {
   6033                 continue;
   6034             }
   6035             lastAdd = testIndex;
   6036             ++addCount;
   6037             bumpStep = true;
   6038         }
   6039         if (recType == REC_TYPE_PATH && hasOp) {
   6040             secondPath = testIndex;
   6041         }
   6042         if (recType == REC_TYPE_ACTIVE) {
   6043             ++activeMax;
   6044             if (!draw_active || !inStepRange) {
   6045                 continue;
   6046             }
   6047             lastActive = testIndex;
   6048             ++activeCount;
   6049             bumpStep = true;
   6050         }
   6051         if (recType == REC_TYPE_SECT) {
   6052             if (records.length != 2) {
   6053                 console.log("expect only two elements: " + records.length);
   6054                 throw "stop execution";
   6055             }
   6056             ++sectMax;
   6057             var sectBump = 1;
   6058             switch (fragType) {
   6059                 case INTERSECT_LINE:
   6060                 case INTERSECT_QUAD_LINE:
   6061                 case INTERSECT_QUAD:
   6062                 case INTERSECT_SELF_CUBIC:
   6063                 case INTERSECT_CUBIC_LINE:
   6064                 case INTERSECT_CUBIC:
   6065                     sectBump = 1;
   6066                     break;
   6067                 case INTERSECT_LINE_2:
   6068                 case INTERSECT_QUAD_LINE_2:
   6069                 case INTERSECT_QUAD_2:
   6070                 case INTERSECT_CUBIC_LINE_2:
   6071                 case INTERSECT_CUBIC_2:
   6072                     sectBump = 2;
   6073                     break;
   6074                 case INTERSECT_LINE_NO:
   6075                 case INTERSECT_QUAD_LINE_NO:
   6076                 case INTERSECT_QUAD_NO:
   6077                 case INTERSECT_SELF_CUBIC_NO:
   6078                 case INTERSECT_CUBIC_LINE_NO:
   6079                 case INTERSECT_CUBIC_NO:
   6080                     sectBump = 0;
   6081                     break;
   6082                 case INTERSECT_CUBIC_LINE_3:
   6083                 case INTERSECT_CUBIC_3:
   6084                     sectBump = 3;
   6085                     break;
   6086                 case INTERSECT_CUBIC_4:
   6087                     sectBump = 4;
   6088                     break;
   6089                 default:
   6090                     console.log("missing case " + records.length);
   6091                     throw "stop execution";
   6092             }
   6093             sectMax2 += sectBump;
   6094             if (draw_intersection <= 1 || !inStepRange) {
   6095                 continue;
   6096             }
   6097             lastSect = testIndex;
   6098             sectCount += sectBump;
   6099             bumpStep = true;
   6100         }
   6101         if (recType == REC_TYPE_SORT) {
   6102             ++sortMax;
   6103             if (!draw_sort || !inStepRange) {
   6104                 continue;
   6105             }
   6106             lastSort = testIndex;
   6107             ++sortCount;
   6108             bumpStep = true;
   6109         }
   6110         if (recType == REC_TYPE_MARK) {
   6111             ++markMax;
   6112             if (!draw_mark || !inStepRange) {
   6113                 continue;
   6114             }
   6115             lastMark = testIndex;
   6116             ++markCount;
   6117             bumpStep = true;
   6118         }
   6119         if (bumpStep) {
   6120             lastIndex = testIndex;
   6121             logStart = test[testIndex + 1];
   6122             logRange = records.length / 2;
   6123             ++curStep;
   6124         }
   6125     }
   6126     stepMax = (draw_add ? addMax : 0) + (draw_active ? activeMax : 0)
   6127             + (draw_sort ? sortMax : 0) + (draw_mark ? markMax : 0)
   6128             + (draw_intersection == 2 ? sectMax : draw_intersection == 3 ? sectMax2 : 0);
   6129     if (stepMax == 0) {
   6130         stepMax = addMax + activeMax + sortMax + markMax;
   6131     }
   6132     drawnPts = [];
   6133     drawnLines = [];
   6134     drawnQuads = [];
   6135     drawnCubics = [];
   6136     var pathIndex = 0;
   6137     var opLetter = 'S';
   6138     for (var testIndex = lastIndex; testIndex >= 0; testIndex -= 3) {
   6139         var recType = test[testIndex];
   6140         var records = test[testIndex + 2];
   6141         for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
   6142             var fragType = records[recordIndex];
   6143             if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
   6144                 console.log("unknown in range frag type: " + fragType);
   6145                 throw "stop execution";
   6146             }
   6147             var frags = records[recordIndex + 1];
   6148             switch (recType) {
   6149                 case REC_TYPE_COMPUTED:
   6150                     if (draw_computed == 0) {
   6151                         continue;
   6152                     }
   6153                     ctx.lineWidth = 1;
   6154                     ctx.strokeStyle = pathIndex == 0 ? "black" : "red";
   6155                     ctx.fillStyle = "blue";
   6156                     var drawThis = false;
   6157                     switch (fragType) {
   6158                         case PATH_QUAD:
   6159                             if ((draw_computed & 5) == 1 || ((draw_computed & 4) != 0
   6160                                     && (draw_computed & 1) == pathIndex)) {
   6161                                 drawQuad(frags[0], frags[1], frags[2], frags[3],
   6162                                         frags[4], frags[5]);
   6163                                 drawThis = true;
   6164                             }
   6165                             break;
   6166                         case PATH_CUBIC:
   6167                             if ((draw_computed & 6) == 2 || ((draw_computed & 4) != 0
   6168                                      && (draw_computed & 1) != pathIndex)) {
   6169                                 drawCubic(frags[0], frags[1], frags[2], frags[3],
   6170                                         frags[4], frags[5], frags[6], frags[7]);
   6171                                 drawThis = true;
   6172                             }
   6173                             ++pathIndex;
   6174                             break;
   6175                         case COMPUTED_SET_1:
   6176                             pathIndex = 0;
   6177                             break;
   6178                         case COMPUTED_SET_2:
   6179                             pathIndex = 1;
   6180                             break;
   6181                         default:
   6182                             console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
   6183                             throw "stop execution";
   6184                     }
   6185                     if (!drawThis) {
   6186                         break;
   6187                     }
   6188                     drawCurveSpecials(frags, fragType);
   6189                     break;
   6190                 case REC_TYPE_PATH:
   6191                     if (!draw_path) {
   6192                         continue;
   6193                     }
   6194                     var firstPath = testIndex < secondPath;
   6195                     if ((draw_path & (firstPath ? 1 : 2)) == 0) {
   6196                         continue;
   6197                     }
   6198                     ctx.lineWidth = 1;
   6199                     ctx.strokeStyle = firstPath ? "black" : "red";
   6200                     ctx.fillStyle = "blue";
   6201                     switch (fragType) {
   6202                         case PATH_LINE:
   6203                             drawLine(frags[0], frags[1], frags[2], frags[3]);
   6204                             break;
   6205                         case PATH_QUAD:
   6206                             drawQuad(frags[0], frags[1], frags[2], frags[3],
   6207                                     frags[4], frags[5]);
   6208                             break;
   6209                         case PATH_CUBIC:
   6210                             drawCubic(frags[0], frags[1], frags[2], frags[3],
   6211                                     frags[4], frags[5], frags[6], frags[7]);
   6212                             break;
   6213                         default:
   6214                             console.log("unknown REC_TYPE_PATH frag type: " + fragType);
   6215                             throw "stop execution";
   6216                     }
   6217                     drawCurveSpecials(frags, fragType);
   6218                     break;
   6219                 case REC_TYPE_OP:
   6220                     switch (fragType) {
   6221                         case OP_INTERSECT: opLetter = 'I'; break;
   6222                         case OP_DIFFERENCE: opLetter = 'D'; break;
   6223                         case OP_UNION: opLetter = 'U'; break;
   6224                         case OP_XOR: opLetter = 'X'; break;
   6225                         default:
   6226                             console.log("unknown REC_TYPE_OP frag type: " + fragType);
   6227                             throw "stop execution";
   6228                     }
   6229                     break;
   6230                 case REC_TYPE_ACTIVE:
   6231                     if (!draw_active || (step_limit > 0 && testIndex < lastActive)) {
   6232                         continue;
   6233                     }
   6234                     var x1 = frags[SPAN_X1];
   6235                     var y1 = frags[SPAN_Y1];
   6236                     var x2 = frags[SPAN_X2];
   6237                     var y2 = frags[SPAN_Y2];
   6238                     var x3, y3, x3, y4, t1, t2;
   6239                     ctx.lineWidth = 3;
   6240                     ctx.strokeStyle = "rgba(0,0,255, 0.3)";
   6241                     switch (fragType) {
   6242                         case ACTIVE_LINE_SPAN:
   6243                             t1 = frags[SPAN_L_T];
   6244                             t2 = frags[SPAN_L_TEND];
   6245                             drawLinePartial(x1, y1, x2, y2, t1, t2);
   6246                             break;
   6247                         case ACTIVE_QUAD_SPAN:
   6248                             x3 = frags[SPAN_X3];
   6249                             y3 = frags[SPAN_Y3];
   6250                             t1 = frags[SPAN_Q_T];
   6251                             t2 = frags[SPAN_Q_TEND];
   6252                             drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
   6253                             break;
   6254                         case ACTIVE_CUBIC_SPAN:
   6255                             x3 = frags[SPAN_X3];
   6256                             y3 = frags[SPAN_Y3];
   6257                             x4 = frags[SPAN_X4];
   6258                             y4 = frags[SPAN_Y4];
   6259                             t1 = frags[SPAN_C_T];
   6260                             t2 = frags[SPAN_C_TEND];
   6261                             drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
   6262                             break;
   6263                         default:
   6264                             console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
   6265                             throw "stop execution";
   6266                     }
   6267                     break;
   6268                 case REC_TYPE_ADD:
   6269                     if (!draw_add) {
   6270                         continue;
   6271                     }
   6272                     ctx.lineWidth = 3;
   6273                     ctx.strokeStyle = closeCount == 0 ? "rgba(0,0,255, 0.3)"
   6274                             : closeCount == 1 ? "rgba(0,127,0, 0.3)"
   6275                             : closeCount == 2 ? "rgba(0,127,127, 0.3)"
   6276                             : closeCount == 3 ? "rgba(127,127,0, 0.3)"
   6277                             : "rgba(127,0,127, 0.3)";
   6278                     switch (fragType) {
   6279                         case ADD_MOVETO:
   6280                             break;
   6281                         case ADD_LINETO:
   6282                             if (step_limit == 0 || testIndex >= lastAdd) {
   6283                                 drawLine(frags[0], frags[1], frags[2], frags[3]);
   6284                             }
   6285                            break;
   6286                         case ADD_QUADTO:
   6287                             if (step_limit == 0 || testIndex >= lastAdd) {
   6288                                 drawQuad(frags[0], frags[1], frags[2], frags[3], frags[4], frags[5]);
   6289                             }
   6290                             break;
   6291                         case ADD_CUBICTO:
   6292                             if (step_limit == 0 || testIndex >= lastAdd) {
   6293                                 drawCubic(frags[0], frags[1], frags[2], frags[3],
   6294                                         frags[4], frags[5], frags[6], frags[7]);
   6295                             }
   6296                             break;
   6297                         case ADD_CLOSE:
   6298                             ++closeCount;
   6299                             break;
   6300                         default:
   6301                             console.log("unknown REC_TYPE_ADD frag type: " + fragType);
   6302                             throw "stop execution";
   6303                     }
   6304                     break;
   6305                 case REC_TYPE_SECT:
   6306                     if (!draw_intersection) {
   6307                         continue;
   6308                     }
   6309                     if (draw_intersection != 1 && (step_limit > 0 && testIndex < lastSect)) {
   6310                         continue;
   6311                     }
   6312                     // draw_intersection == 1 : show all
   6313                     // draw_intersection == 2 : step == 0 ? show all : show intersection line #step
   6314                     // draw_intersection == 3 : step == 0 ? show all : show intersection #step
   6315                     ctx.lineWidth = 1;
   6316                     ctx.strokeStyle = "rgba(0,0,255, 0.3)";
   6317                     ctx.fillStyle = "blue";
   6318                     var f = [];
   6319                     var c1s;
   6320                     var c1l;
   6321                     var c2s;
   6322                     var c2l;
   6323                     switch (fragType) {
   6324                         case INTERSECT_LINE:
   6325                             f.push(5, 6, 0, 7);
   6326                             c1s = 1; c1l = 4; c2s = 8; c2l = 4;
   6327                             break;
   6328                         case INTERSECT_LINE_2:
   6329                             f.push(5, 6, 0, 10);
   6330                             f.push(8, 9, 7, 15);
   6331                             c1s = 1; c1l = 4; c2s = 11; c2l = 4;
   6332                             break;
   6333                         case INTERSECT_LINE_NO:
   6334                             c1s = 0; c1l = 4; c2s = 4; c2l = 4;
   6335                             break;
   6336                         case INTERSECT_QUAD_LINE:
   6337                             f.push(7, 8, 0, 9);
   6338                             c1s = 1; c1l = 6; c2s = 10; c2l = 4;
   6339                             break;
   6340                         case INTERSECT_QUAD_LINE_2:
   6341                             f.push(7, 8, 0, 12);
   6342                             f.push(10, 11, 9, 17);
   6343                             c1s = 1; c1l = 6; c2s = 13; c2l = 4;
   6344                             break;
   6345                         case INTERSECT_QUAD_LINE_NO:
   6346                             c1s = 0; c1l = 6; c2s = 6; c2l = 4;
   6347                             break;
   6348                         case INTERSECT_QUAD:
   6349                             f.push(7, 8, 0, 9);
   6350                             c1s = 1; c1l = 6; c2s = 10; c2l = 6;
   6351                             break;
   6352                         case INTERSECT_QUAD_2:
   6353                             f.push(7, 8, 0, 12);
   6354                             f.push(10, 11, 9, 19);
   6355                             c1s = 1; c1l = 6; c2s = 13; c2l = 6;
   6356                             break;
   6357                         case INTERSECT_QUAD_NO:
   6358                             c1s = 0; c1l = 6; c2s = 6; c2l = 6;
   6359                             break;
   6360                         case INTERSECT_SELF_CUBIC:
   6361                             f.push(9, 10, 0, 11);
   6362                             c1s = 1; c1l = 8; c2s = 0; c2l = 0;
   6363                             break;
   6364                         case INTERSECT_SELF_CUBIC_NO:
   6365                             c1s = 0; c1l = 8; c2s = 0; c2l = 0;
   6366                             break;
   6367                         case INTERSECT_CUBIC_LINE:
   6368                             f.push(9, 10, 0, 11);
   6369                             c1s = 1; c1l = 8; c2s = 12; c2l = 4;
   6370                             break;
   6371                         case INTERSECT_CUBIC_LINE_2:
   6372                             f.push(9, 10, 0, 14);
   6373                             f.push(12, 13, 11, 19);
   6374                             c1s = 1; c1l = 8; c2s = 15; c2l = 4;
   6375                             break;
   6376                         case INTERSECT_CUBIC_LINE_3:
   6377                             f.push(9, 10, 0, 17);
   6378                             f.push(12, 13, 11, 22);
   6379                             f.push(15, 16, 14, 23);
   6380                             c1s = 1; c1l = 8; c2s = 18; c2l = 4;
   6381                             break;
   6382                         case INTERSECT_CUBIC_LINE_NO:
   6383                             c1s = 0; c1l = 8; c2s = 8; c2l = 4;
   6384                             break;
   6385                         case INTERSECT_CUBIC:
   6386                             f.push(9, 10, 0, 11);
   6387                             c1s = 1; c1l = 8; c2s = 12; c2l = 8;
   6388                             break;
   6389                         case INTERSECT_CUBIC_2:
   6390                             f.push(9, 10, 0, 14);
   6391                             f.push(12, 13, 11, 23);
   6392                             c1s = 1; c1l = 8; c2s = 15; c2l = 8;
   6393                             break;
   6394                         case INTERSECT_CUBIC_3:
   6395                             f.push(9, 10, 0, 17);
   6396                             f.push(12, 13, 11, 26);
   6397                             f.push(15, 16, 14, 27);
   6398                             c1s = 1; c1l = 8; c2s = 18; c2l = 8;
   6399                             break;
   6400                         case INTERSECT_CUBIC_4:
   6401                             f.push(9, 10, 0, 20);
   6402                             f.push(12, 13, 11, 29);
   6403                             f.push(15, 16, 14, 30);
   6404                             f.push(18, 19, 17, 31);
   6405                             c1s = 1; c1l = 8; c2s = 21; c2l = 8;
   6406                             break;
   6407                         case INTERSECT_CUBIC_NO:
   6408                             c1s = 0; c1l = 8; c2s = 8; c2l = 8;
   6409                             break;
   6410                         default:
   6411                             console.log("unknown REC_TYPE_SECT frag type: " + fragType);
   6412                             throw "stop execution";
   6413                     }
   6414                     if (draw_intersection != 1) {
   6415                         switch (c1l) {
   6416                             case 4: 
   6417                                 drawLine(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]);
   6418                                 break;
   6419                             case 6:
   6420                                 drawQuad(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
   6421                                         frags[c1s + 4], frags[c1s + 5]);
   6422                                 break;
   6423                             case 8:
   6424                                 drawCubic(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
   6425                                         frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]);
   6426                                 break;
   6427                         }
   6428                         switch (c2l) {
   6429                             case 0:
   6430                                 break;
   6431                             case 4: 
   6432                                 drawLine(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]);
   6433                                 break;
   6434                             case 6:
   6435                                 drawQuad(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
   6436                                         frags[c2s + 4], frags[c2s + 5]);
   6437                                 break;
   6438                             case 8:
   6439                                 drawCubic(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
   6440                                         frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]);
   6441                                 break;
   6442                         }
   6443                     }
   6444                     for (var idx = 0; idx < f.length; idx += 4) {
   6445                         if (draw_intersection != 3 || idx == lastSect - testIndex) {
   6446                             drawPoint(frags[f[idx]], frags[f[idx + 1]], true);
   6447                         }
   6448                     }
   6449                     if (!draw_intersectT) {
   6450                         break;
   6451                     }
   6452                     ctx.fillStyle = "red";
   6453                     for (var idx = 0; idx < f.length; idx += 4) {
   6454                         if (draw_intersection != 3 || idx == lastSect - testIndex) {
   6455                             drawTAtPointUp(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 2]]);
   6456                             drawTAtPointDown(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 3]]);
   6457                         }
   6458                     }
   6459                     break;
   6460                 case REC_TYPE_SORT:
   6461                     if (!draw_sort || (step_limit > 0 && testIndex < lastSort)) {
   6462                         continue;
   6463                     }
   6464                     ctx.lineWidth = 3;
   6465                     ctx.strokeStyle = "rgba(127,127,0, 0.5)";
   6466                     switch (fragType) {
   6467                         case SORT_LINE:
   6468                         case SORT_LINE_UNSORTABLE:
   6469                             drawLinePartial(frags[1], frags[2], frags[3], frags[4],
   6470                                 frags[5], frags[6]);
   6471                             break;
   6472                         case SORT_QUAD:
   6473                         case SORT_QUAD_UNSORTABLE:
   6474                             drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
   6475                                 frags[5], frags[6], frags[7], frags[8]);
   6476                             break;
   6477                         case SORT_CUBIC:
   6478                         case SORT_CUBIC_UNSORTABLE:
   6479                             drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
   6480                                 frags[5], frags[6], frags[7], frags[8], frags[9], frags[10]);
   6481                             break;
   6482                         case SORT_LINE_COMPACT:
   6483                         case SORT_QUAD_COMPACT:
   6484                         case SORT_CUBIC_COMPACT:
   6485                             // unsupported
   6486                             break;
   6487                         default:
   6488                             console.log("unknown REC_TYPE_SORT frag type: " + fragType);
   6489                             throw "stop execution";
   6490                     }
   6491                     break;
   6492                 case REC_TYPE_MARK:
   6493                     if (!draw_mark || (step_limit > 0 && testIndex < lastMark)) {
   6494                         continue;
   6495                     }
   6496                     ctx.lineWidth = 3;
   6497                     ctx.strokeStyle = fragType >= MARK_DONE_LINE ?
   6498                             "rgba(127,0,127, 0.5)" : "rgba(127,127,0, 0.5)";
   6499                     switch (fragType) {
   6500                         case MARK_LINE:
   6501                         case MARK_DONE_LINE:
   6502                         case MARK_UNSORTABLE_LINE:
   6503                         case MARK_SIMPLE_LINE:
   6504                         case MARK_SIMPLE_DONE_LINE:
   6505                         case MARK_DONE_UNARY_LINE:
   6506                             drawLinePartial(frags[1], frags[2], frags[3], frags[4],
   6507                                 frags[5], frags[9]);
   6508                             break;
   6509                         case MARK_QUAD:
   6510                         case MARK_DONE_QUAD:
   6511                         case MARK_UNSORTABLE_QUAD:
   6512                         case MARK_SIMPLE_QUAD:
   6513                         case MARK_SIMPLE_DONE_QUAD:
   6514                         case MARK_DONE_UNARY_QUAD:
   6515                             drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
   6516                                 frags[5], frags[6], frags[7], frags[11]);
   6517                             break;
   6518                         case MARK_CUBIC:
   6519                         case MARK_DONE_CUBIC:
   6520                         case MARK_UNSORTABLE_CUBIC:
   6521                         case MARK_SIMPLE_CUBIC:
   6522                         case MARK_SIMPLE_DONE_CUBIC:
   6523                         case MARK_DONE_UNARY_CUBIC:
   6524                             drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
   6525                                 frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
   6526                             break;
   6527                         default:
   6528                             console.log("unknown REC_TYPE_MARK frag type: " + fragType);
   6529                             throw "stop execution";
   6530                     }
   6531                     break;
   6532                 default:
   6533                     continue;
   6534             }
   6535         }
   6536         switch (recType) {
   6537             case REC_TYPE_SORT:
   6538                 if (!draw_sort || (step_limit > 0 && testIndex < lastSort)) {
   6539                     break;
   6540                 }
   6541                 var angles = []; // use tangent lines to describe arcs
   6542                 var windFrom = [];
   6543                 var windTo = [];
   6544                 var opp = [];
   6545                 var minXY = Number.MAX_VALUE;
   6546                 var partial;
   6547                 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
   6548                     var fragType = records[recordIndex];
   6549                     var frags = records[recordIndex + 1];
   6550                     var idx = 10;
   6551                     switch (fragType) {
   6552                         case SORT_LINE:
   6553                         case SORT_LINE_UNSORTABLE:
   6554                             partial = linePartial(frags[1], frags[2], frags[3], frags[4],
   6555                                 frags[5], frags[6]);
   6556                             break;
   6557                         case SORT_QUAD:
   6558                         case SORT_QUAD_UNSORTABLE:
   6559                             partial = quadPartial(frags[1], frags[2], frags[3], frags[4],
   6560                                 frags[5], frags[6], frags[7], frags[8]);
   6561                             idx += 2;
   6562                             break;
   6563                         case SORT_CUBIC:
   6564                         case SORT_CUBIC_UNSORTABLE:
   6565                             partial = cubicPartial(frags[1], frags[2], frags[3], frags[4],
   6566                                 frags[5], frags[6], frags[7], frags[8], frags[9], frags[10]);
   6567                             idx += 4;
   6568                             break;
   6569                         case SORT_LINE_COMPACT:
   6570                         case SORT_QUAD_COMPACT:
   6571                         case SORT_CUBIC_COMPACT:
   6572                             // unsupported
   6573                             continue;
   6574                         default:
   6575                             console.log("unknown REC_TYPE_SORT frag type: " + fragType);
   6576                             throw "stop execution";
   6577                     }
   6578                     var dx = boundsWidth(partial);
   6579                     var dy = boundsHeight(partial);
   6580                     minXY = Math.min(minXY, dx * dx + dy * dy);
   6581                     angles.push(tangent(partial));
   6582                     windFrom.push(frags[idx]);
   6583                     windTo.push(frags[idx + 1]);
   6584                     opp.push(frags[idx + 5]);
   6585                 }
   6586                 var radius = Math.sqrt(minXY) / 2 * scale;
   6587                 radius = Math.min(50, radius);
   6588                 var centerX = (partial[0] - srcLeft) * scale;
   6589                 var centerY = (partial[1] - srcTop) * scale;
   6590                 ctx.lineWidth = 1;
   6591                 ctx.strokeStyle = "rgba(127,0,171, 0.5)";
   6592                 ctx.fillStyle = "rgba(0,0,0, 0.5)";
   6593                 ctx.font = "normal 10px Arial";
   6594                 ctx.textAlign = "center";
   6595                 for (var angleIndex = 0; angleIndex < angles.length; ++angleIndex) {
   6596                     var angleParts = [
   6597                         angles[(angleIndex + angles.length - 1) % angles.length], 
   6598                         angles[angleIndex],
   6599                         angles[(angleIndex + 1) % angles.length]
   6600                     ];
   6601                     var angleStart = (angleParts[0] + angleParts[1]) / 2;
   6602                     if (angleParts[0] > angleParts[1]) {
   6603                         angleStart -= Math.PI;
   6604                     }
   6605                     var angleEnd = (angleParts[1] + angleParts[2]) / 2;
   6606                     if (angleParts[1] > angleParts[2]) {
   6607                         angleEnd -= Math.PI;
   6608                     }
   6609                     ctx.beginPath();
   6610                     ctx.arc(centerX, centerY, radius + (opp[angleIndex] ? 10 : 0), 
   6611                         Math.PI * 2 - angleStart - Math.PI / 18, Math.PI * 2 - angleEnd + Math.PI / 18, true);
   6612                     ctx.stroke();
   6613                     var tx = centerX + Math.cos(angleStart) * (radius + (opp[angleIndex] ? 10 : 0));
   6614                     var ty = centerY - Math.sin(angleStart) * (radius + (opp[angleIndex] ? 10 : 0));
   6615                     ctx.fillText(windFrom[angleIndex], tx, ty + 5);
   6616                     tx = centerX + Math.cos(angleEnd) * (radius + (opp[angleIndex] ? 10 : 0));
   6617                     ty = centerY - Math.sin(angleEnd) * (radius + (opp[angleIndex] ? 10 : 0));
   6618                     ctx.fillText(windTo[angleIndex], tx, ty + 5);
   6619                 }
   6620                 break;
   6621             default:
   6622                 break;
   6623         }
   6624     }
   6625     if (draw_log && logStart >= 0) {
   6626         ctx.font = "normal 10px Arial";
   6627         ctx.textAlign = "left";
   6628         ctx.beginPath();
   6629         var top = ctx.canvas.height - 20 - (logRange + 2) * 10;
   6630         ctx.rect(50, top, ctx.canvas.width-100, (logRange + 2) * 10);
   6631         ctx.fillStyle = "white";
   6632         ctx.fill();
   6633         ctx.fillStyle = "rgba(0,0,0, 0.5)";
   6634         if (logStart > 0) {
   6635             ctx.fillText(lines[logStart - 1], 50, top + 8);
   6636         }
   6637         ctx.fillStyle = "black";
   6638         for (var idx = 0; idx < logRange; ++idx) {
   6639             ctx.fillText(lines[logStart + idx], 50, top + 18 + 10 * idx);
   6640         }
   6641         ctx.fillStyle = "rgba(0,0,0, 0.5)";
   6642         if (logStart + logRange < lines.length) {
   6643             ctx.fillText(lines[logStart + logRange], 50, top + 18 + 10 * logRange);
   6644         }
   6645     }
   6646     if (draw_legend) {
   6647         var pos = 0;
   6648         var drawSomething = draw_add | draw_active | draw_sort | draw_mark;
   6649    //     drawBox(pos++, "yellow", "black", opLetter, true, '');
   6650         drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? sectCount : sectMax2, draw_intersection, intersectionKey);
   6651         drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addMax, draw_add, addKey);
   6652         drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
   6653         drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
   6654         drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
   6655         drawBox(pos++, "black", "white", 
   6656                 (new Array('P', 'P1', 'P2', 'P'))[draw_path], draw_path != 0, pathKey);
   6657         drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
   6658                 (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
   6659                 draw_computed != 0, computedKey);
   6660         drawBox(pos++, "green", "black", step_limit, drawSomething, '');
   6661         drawBox(pos++, "green", "black", stepMax, drawSomething, '');
   6662         drawBox(pos++, "red", "black", lastIndex, drawSomething & draw_log, '');
   6663         drawBox(pos++, "red", "black", test.length - 1, drawSomething & draw_log, '');
   6664         if (curve_t) {
   6665             drawCurveTControl();
   6666         }
   6667         ctx.font = "normal 20px Arial";
   6668         ctx.fillStyle = "rgba(0,0,0, 0.3)";
   6669         ctx.textAlign = "right";
   6670         ctx.fillText(scale.toFixed(decimal_places) + 'x' , ctx.canvas.width - 10, ctx.canvas.height - 5);
   6671     }
   6672     if (draw_hints) {
   6673         ctx.font = "normal 10px Arial";
   6674         ctx.fillStyle = "rgba(0,0,0, 0.5)";
   6675         ctx.textAlign = "right";
   6676         var y = 4;
   6677         ctx.fillText("control lines : " +  controlLinesKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6678         ctx.fillText("curve t : " +  curveTKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6679         ctx.fillText("deriviatives : " +  deriviativesKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6680         ctx.fillText("intersect t : " +  intersectTKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6681         ctx.fillText("hodo : " +  hodoKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6682         ctx.fillText("log : " +  logKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6683         ctx.fillText("log curve : " +  logCurvesKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6684         ctx.fillText("mid point : " +  midpointKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6685         ctx.fillText("points : " +  ptsKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6686         ctx.fillText("sequence : " +  sequenceKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6687         ctx.fillText("xy : " +  xyKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
   6688     }
   6689 }
   6690 
   6691 function drawBox(y, backC, foreC, str, enable, label) {
   6692     ctx.beginPath();
   6693     ctx.fillStyle = backC;
   6694     ctx.rect(ctx.canvas.width - 40, y * 50 + 10, 40, 30);
   6695     ctx.fill();
   6696     ctx.font = "normal 16px Arial";
   6697     ctx.fillStyle = foreC;
   6698     ctx.textAlign = "center";
   6699     ctx.fillText(str, ctx.canvas.width - 20, y * 50 + 32);
   6700     if (!enable) {
   6701         ctx.fillStyle = "rgba(255,255,255, 0.5)";
   6702         ctx.fill();
   6703     }
   6704     if (label != '') {
   6705         ctx.font = "normal 9px Arial";
   6706         ctx.fillStyle = "black";
   6707         ctx.fillText(label, ctx.canvas.width - 47, y * 50 + 40);
   6708     }
   6709 }
   6710 
   6711 function drawCurveTControl() {
   6712     ctx.lineWidth = 2;
   6713     ctx.strokeStyle = "rgba(0,0,0, 0.3)";
   6714     ctx.beginPath();
   6715     ctx.rect(ctx.canvas.width - 80, 40, 28, ctx.canvas.height - 80);
   6716     ctx.stroke();
   6717     var ty = 40 + curveT * (ctx.canvas.height - 80);
   6718     ctx.beginPath();
   6719     ctx.moveTo(ctx.canvas.width - 80, ty);
   6720     ctx.lineTo(ctx.canvas.width - 85, ty - 5);
   6721     ctx.lineTo(ctx.canvas.width - 85, ty + 5);
   6722     ctx.lineTo(ctx.canvas.width - 80, ty);
   6723     ctx.fillStyle = "rgba(0,0,0, 0.6)";
   6724     ctx.fill();
   6725     var num = curveT.toFixed(decimal_places);
   6726     ctx.font = "normal 10px Arial";
   6727     ctx.textAlign = "left";
   6728     ctx.fillText(num, ctx.canvas.width - 78, ty);
   6729 }
   6730 
   6731 function ptInTControl() {
   6732     var e = window.event;
   6733 	var tgt = e.target || e.srcElement;
   6734     var left = tgt.offsetLeft;
   6735     var top = tgt.offsetTop;
   6736     var x = (e.clientX - left);
   6737     var y = (e.clientY - top);
   6738     if (x < ctx.canvas.width - 80 || x > ctx.canvas.width - 50) {
   6739         return false;
   6740     }
   6741     if (y < 40 || y > ctx.canvas.height - 80) {
   6742         return false;
   6743     }
   6744     curveT = (y - 40) / (ctx.canvas.height - 120);
   6745     if (curveT < 0 || curveT > 1) {
   6746         throw "stop execution";
   6747     }
   6748     return true;
   6749 }
   6750 
   6751 function drawTop() {
   6752     if (tests[testIndex] == null) {
   6753         var str = testDivs[testIndex].firstChild.data;
   6754         parse_all(str);
   6755         var title = testDivs[testIndex].id.toString();
   6756         testTitles[testIndex] = title;
   6757     }
   6758     init(tests[testIndex]);
   6759     redraw();
   6760 }
   6761 
   6762 function redraw() {
   6763     ctx.beginPath();
   6764     ctx.fillStyle = "white";
   6765     ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
   6766     ctx.fill();
   6767     draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
   6768 }
   6769 
   6770 var activeKey = 'a';
   6771 var addKey = 'd';
   6772 var centerKey = 'c';
   6773 var computedKey = 'q';
   6774 var computedBackKey = 'Q';
   6775 var controlLinesBackKey = 'V';
   6776 var controlLinesKey = 'v';
   6777 var curveTKey = 'u';
   6778 var deriviativesKey = 'f';
   6779 var hodoKey = 'h';
   6780 var intersectTKey = 't';
   6781 var intersectionBackKey = 'I';
   6782 var intersectionKey = 'i';
   6783 var logKey = 'l';
   6784 var logCurvesKey = 'z';
   6785 var markKey = 'm';
   6786 var midpointKey = 'k';
   6787 var pathKey = 'b';
   6788 var pathBackKey = 'B';
   6789 var ptsKey = 'x';
   6790 var sequenceKey = 'j';
   6791 var sortKey = 'o';
   6792 var stepBackKey = 'S';
   6793 var stepKey = 's';
   6794 var xyKey = 'y';
   6795 
   6796 function doKeyPress(evt) {
   6797     var char = String.fromCharCode(evt.charCode);
   6798     switch (char) {
   6799     case '0':
   6800     case '1':
   6801     case '2':
   6802     case '3':
   6803     case '4':
   6804     case '5':
   6805     case '6':
   6806     case '7':
   6807     case '8':
   6808     case '9':
   6809         decimal_places = char - '0';
   6810         redraw();
   6811         break;
   6812     case activeKey:
   6813         draw_active ^= true;
   6814         redraw(); 
   6815         break;
   6816     case addKey:
   6817         draw_add ^= true;
   6818         redraw(); 
   6819         break;
   6820     case centerKey:
   6821         setScale();
   6822         redraw(); 
   6823         break;
   6824     case controlLinesBackKey:
   6825         control_lines = (control_lines + 3) % 4;
   6826         redraw(); 
   6827         break;
   6828     case controlLinesKey:
   6829         control_lines = (control_lines + 1) % 4;
   6830         redraw(); 
   6831         break;
   6832     case computedBackKey:
   6833         draw_computed = (draw_computed + 5) % 6;
   6834         redraw(); 
   6835         break;
   6836     case computedKey:
   6837         draw_computed = (draw_computed + 1) % 6;
   6838         redraw(); 
   6839         break;
   6840     case curveTKey:
   6841         curve_t ^= true;
   6842         if (curve_t) {
   6843             draw_legend = true;
   6844         }
   6845         redraw();
   6846         break;
   6847     case deriviativesKey:
   6848         draw_deriviatives = (draw_deriviatives + 1) % 3;
   6849         redraw();
   6850         break;
   6851     case hodoKey:
   6852         draw_hodo = (draw_hodo + 1) % 4;
   6853         redraw();
   6854         break;
   6855     case intersectionBackKey:
   6856         draw_intersection = (draw_intersection + 3) % 4;
   6857         redraw(); 
   6858         break;
   6859     case intersectionKey:
   6860         draw_intersection = (draw_intersection + 1) % 4;
   6861         redraw(); 
   6862         break;
   6863     case intersectTKey:
   6864         draw_intersectT ^= true;
   6865         redraw();
   6866         break;
   6867     case logCurvesKey:
   6868         logCurves(tests[testIndex]);
   6869         break;
   6870     case logKey:
   6871         draw_log ^= true;
   6872         redraw();
   6873         break;
   6874     case markKey:
   6875         draw_mark ^= true;
   6876         redraw();
   6877         break;
   6878     case midpointKey:
   6879         draw_midpoint ^= true;
   6880         redraw();
   6881         break;
   6882     case pathKey:
   6883         draw_path = (draw_path + 1) % 4;
   6884         redraw(); 
   6885         break;
   6886     case pathBackKey:
   6887         draw_path = (draw_path + 3) % 4;
   6888         redraw(); 
   6889         break;
   6890     case ptsKey:
   6891         pt_labels = (pt_labels + 1) % 3;
   6892         redraw();
   6893         break;
   6894     case sequenceKey:
   6895         draw_sequence ^= true;
   6896         redraw();
   6897         break;
   6898     case sortKey:
   6899         draw_sort ^= true;
   6900         redraw();
   6901         break;
   6902     case stepKey:
   6903         step_limit++;
   6904         if (step_limit > stepMax) {
   6905             step_limit = stepMax;
   6906         }
   6907         redraw();
   6908         break;
   6909     case stepBackKey:
   6910         step_limit--;
   6911         if (step_limit < 0) {
   6912             step_limit = 0;
   6913         }
   6914         redraw();
   6915         break;
   6916     case xyKey:
   6917         debug_xy ^= true;
   6918         redraw();
   6919         break;
   6920     case '-':
   6921         scale /= 2;
   6922         calcLeftTop();
   6923         redraw();
   6924         break;
   6925     case '=':
   6926     case '+':
   6927         scale *= 2;
   6928         calcLeftTop();
   6929         redraw();
   6930         break;
   6931     case '?':
   6932         draw_hints ^= true;
   6933         if (draw_hints && !draw_legend) {
   6934             draw_legend = true;
   6935         }
   6936         redraw();
   6937         break;
   6938     case '/':
   6939         draw_legend ^= true;
   6940         redraw();
   6941         break;
   6942     }
   6943 }
   6944 
   6945 function doKeyDown(evt) {
   6946     var char = evt.keyCode;
   6947     switch (char) {
   6948     case 37: // left arrow
   6949         if (evt.shiftKey) {
   6950             testIndex -= 9;
   6951         }
   6952         if (--testIndex < 0)
   6953             testIndex = tests.length - 1;
   6954         drawTop();
   6955         break;
   6956     case 39: // right arrow
   6957         if (evt.shiftKey) {
   6958             testIndex += 9;
   6959         }
   6960         if (++testIndex >= tests.length)
   6961             testIndex = 0;
   6962         drawTop();
   6963         break;
   6964     }
   6965 }
   6966 
   6967 function calcXY() {
   6968     var e = window.event;
   6969 	var tgt = e.target || e.srcElement;
   6970     var left = tgt.offsetLeft;
   6971     var top = tgt.offsetTop;
   6972     mouseX = (e.clientX - left) / scale + srcLeft;
   6973     mouseY = (e.clientY - top) / scale + srcTop;
   6974 }
   6975 
   6976 function calcLeftTop() {
   6977     srcLeft = mouseX - screenWidth / 2 / scale;
   6978     srcTop = mouseY - screenHeight / 2 / scale;
   6979 }
   6980 
   6981 function handleMouseClick() {
   6982     if (!curve_t || !ptInTControl()) {
   6983         calcXY();
   6984         calcLeftTop();
   6985     }
   6986     redraw();
   6987 }
   6988 
   6989 function handleMouseOver() {
   6990     calcXY();
   6991     if (!debug_xy) {
   6992         return;
   6993     }
   6994     var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
   6995     ctx.beginPath();
   6996     ctx.rect(300,100,num.length * 6,10);
   6997     ctx.fillStyle="white";
   6998     ctx.fill();
   6999     ctx.font = "normal 10px Arial";
   7000     ctx.fillStyle="black";
   7001     ctx.textAlign = "left";
   7002     ctx.fillText(num, 300, 108);
   7003 }
   7004 
   7005 function start() {
   7006     for (var i = 0; i < testDivs.length; ++i) {
   7007         tests[i] = null;
   7008     }
   7009     testIndex = 0;
   7010     drawTop();
   7011     window.addEventListener('keypress', doKeyPress, true);
   7012     window.addEventListener('keydown', doKeyDown, true);
   7013     window.onresize = function() {
   7014         drawTop();
   7015     }
   7016 }
   7017 
   7018 </script>
   7019 </head>
   7020 
   7021 <body onLoad="start();">
   7022 <canvas id="canvas" width="750" height="500"
   7023     onmousemove="handleMouseOver()"
   7024     onclick="handleMouseClick()"
   7025     ></canvas >
   7026 </body>
   7027 </html>
   7028