From a5c7fc6ad97db344896c43c13777e49f624baa1a Mon Sep 17 00:00:00 2001 From: whitequark Date: Tue, 11 Oct 2016 21:25:46 +0000 Subject: [PATCH] Disable closed contour check in the test harness. The check was actually half-broken from the beginning and until df83ee4; the thick red line was rendered properly but the error text was rendered with width 0, which by chance worked on some GL implementations. That commit has fixed the underlying bug but left the text line width at 0 to avoid test breakage. This commit fixes the bug, turns off the check completely, and updates the tests to account for breakage. --- src/groupmesh.cpp | 2 +- test/commit.sh | 9 +++++++++ test/constraint/angle/free_in_3d.png | Bin 4848 -> 4757 bytes test/constraint/angle/normal.png | Bin 4967 -> 4859 bytes test/constraint/angle/reference.png | Bin 5355 -> 5245 bytes .../constraint/angle/reference_free_in_3d.png | Bin 4939 -> 4840 bytes test/constraint/arc_line_tangent/normal.png | Bin 5315 -> 5078 bytes .../at_midpoint/line_plane_free_in_3d.png | Bin 4395 -> 4315 bytes .../at_midpoint/line_plane_normal.png | Bin 4395 -> 4315 bytes .../at_midpoint/line_pt_free_in_3d.png | Bin 4372 -> 4280 bytes .../constraint/at_midpoint/line_pt_normal.png | Bin 4372 -> 4280 bytes .../cubic_line_tangent/free_in_3d.png | Bin 5142 -> 5032 bytes .../curve_curve_tangent/arc_arc.png | Bin 5349 -> 4983 bytes .../curve_curve_tangent/arc_cubic.png | Bin 5766 -> 5202 bytes test/constraint/eq_len_pt_line_d/normal.png | Bin 4479 -> 4389 bytes test/constraint/eq_pt_ln_distances/normal.png | Bin 4434 -> 4344 bytes test/constraint/equal_angle/normal.png | Bin 5352 -> 5250 bytes test/constraint/equal_angle/other.png | Bin 5185 -> 4896 bytes test/constraint/equal_length_lines/normal.png | Bin 4413 -> 4323 bytes test/constraint/equal_line_arc_len/normal.png | Bin 4609 -> 4529 bytes test/constraint/equal_line_arc_len/pi.png | Bin 4714 -> 4632 bytes test/constraint/equal_line_arc_len/tau.png | Bin 5034 -> 4952 bytes test/constraint/equal_radius/normal.png | Bin 5396 -> 5238 bytes test/constraint/horizontal/line.png | Bin 4329 -> 4256 bytes test/constraint/length_difference/normal.png | Bin 4535 -> 4443 bytes .../length_difference/reference.png | Bin 4616 -> 4524 bytes test/constraint/length_ratio/normal.png | Bin 4608 -> 4528 bytes test/constraint/length_ratio/reference.png | Bin 4684 -> 4598 bytes test/constraint/parallel/free_in_3d.png | Bin 4311 -> 4285 bytes test/constraint/parallel/normal.png | Bin 4792 -> 4667 bytes test/constraint/perpendicular/normal.png | Bin 5018 -> 4893 bytes test/constraint/pt_line_distance/extended.png | Bin 4587 -> 4509 bytes .../pt_line_distance/free_in_3d.png | Bin 4461 -> 4385 bytes test/constraint/pt_line_distance/normal.png | Bin 4461 -> 4385 bytes .../constraint/pt_line_distance/reference.png | Bin 4534 -> 4457 bytes .../constraint/pt_on_line/left_free_in_3d.png | Bin 4409 -> 4301 bytes test/constraint/pt_on_line/normal.png | Bin 4421 -> 4306 bytes .../pt_on_line/right_free_in_3d.png | Bin 4406 -> 4298 bytes test/constraint/symmetric_line/normal.png | Bin 4486 -> 4413 bytes test/constraint/vertical/line.png | Bin 4327 -> 4313 bytes test/harness.cpp | 1 + test/request/arc_of_circle/normal.png | Bin 4879 -> 4534 bytes test/request/cubic/normal.png | Bin 5046 -> 4959 bytes test/request/cubic_periodic/normal.png | Bin 5354 -> 5200 bytes test/request/line_segment/normal.png | Bin 4303 -> 4227 bytes 45 files changed, 11 insertions(+), 1 deletion(-) create mode 100755 test/commit.sh diff --git a/src/groupmesh.cpp b/src/groupmesh.cpp index 8880c91..a890195 100644 --- a/src/groupmesh.cpp +++ b/src/groupmesh.cpp @@ -569,7 +569,7 @@ void Group::DrawPolyError(Canvas *canvas) { Canvas::Stroke strokeError = Style::Stroke(Style::DRAW_ERROR); strokeError.layer = Canvas::Layer::FRONT; - strokeError.width = 0.0f; + strokeError.width = 1.0f; Canvas::hStroke hcsError = canvas->GetStroke(strokeError); double textHeight = Style::DefaultTextHeight() / camera.scale; diff --git a/test/commit.sh b/test/commit.sh new file mode 100755 index 0000000..bd95b5d --- /dev/null +++ b/test/commit.sh @@ -0,0 +1,9 @@ +#!/bin/sh -ex + +make -C build solvespace_testsuite +./build/test/solvespace_testsuite $* || true +for e in slvs png; do + for i in `find . -name *.out.$e`; do + mv $i `dirname $i`/`basename $i .out.$e`.$e; + done; +done diff --git a/test/constraint/angle/free_in_3d.png b/test/constraint/angle/free_in_3d.png index 4fb2e9fd952ea2a14a9b8961f62cc38ccb3a2281..7fd497ea815fcd9d94d1eba05e26fe3e19f5e3aa 100644 GIT binary patch literal 4757 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 delta 3083 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 Qy8`&x?Y3`6#dZqgKU;U3SO5S3 diff --git a/test/constraint/angle/reference.png b/test/constraint/angle/reference.png index 59376ffd1028e96c49562654ddef5dc2607b8766..3da3445c7e031ea2c7b1f3988b5fe8392e93a293 100644 GIT binary patch literal 5245 zcmeHLc~DbXzCO7Swum4Yzy(kgPy;9`(#rl6Tbo4@fv`sr5U+rU0ofDmAu2XO9obYu zKW%wH2v;FtQ9@{isI7t`K>-0p4YCEAJuI0UwX2#p^SXIcHGfRiR3*8UlixY#JHPFG zU(W4!{#IFOxe@?CdGDTG2LOPG(zk*fI>HUgY6oEHuD!eL4xYX?@J95!dskKc+i^j> z6~=bC16X_FPTpVT?3WiR2FZ|`C`M@wv|7>y$-{ADn_dCgtuiS1qy4cs-bh>i*khWY z^)?2mj+FFb0l2W6gaO|x8Ue~CDi)|3AOQRoVpFGP0wC`C%>b$5ZSIu^a)HTTyhDk=4`eOSU3t1A zKGjg3`QO8U2Z+@QfO7FaIHaybcK&<%BcZ?#Aea0_GaV|r-dLVVvlDVbjG@@Q)|35Q zJG_eXQBUR|+ z!tF3*0nWE1JARa=$L~^U2m5XX)N_`Xy!ae}5~@yYT!xw_&;&Uvgtmqc@V2^+NS^vT zr9549g;gvd)d)4{9D@R*i_*z3WX0DfGke^dQ`}-9DJneWcoy zvjmFiOKgUV&CCxKkQPl*<2VIxzf&UF+gk)dI3;vrQ$?e7dMr?{kK{>zzsgHi zQTG7d>ck;C)J|7cBmQg!^h$+_)kQIk+mmV^Kfv?m6pV-$E0nGZd-0%peQc*H5m7_I z`$IT)sg)DS4n^42=w)F&vw^fE0&5E!5LMT(z&A^Xs;I#?hDevwJ0*$(gzG@RR_rF# zrar)fas{K))QSz8zm{(8Wps>=jwM$>q;nesgL4gZ+r@T#QQE-J^uVfb5~F7mOEV=; zrdr-ubi9c4v8cbqHu4R>gjyF=@eW7o)IAEkX?32XFRUP6(C7PZxn**W0CEqdrXQen zs+i}yc&}!G9qyw~O`+8M<5npz(Ctc8i55eT-8;1MI-dlMEoooW2@b`bJIsp zpR6e8;zSj{ycFl@w!{P6RA6dXEXpo+q&vIb=_QvLu)sq#;+difPN6xv-PRUTL~}kz zR2aT>18YZjH=7cSuMW>5J@@jS$dE6oD9=5ZjvhpyheUmJohXkLw$lZdvSOt}M^e*G zs?|NwMcCS2aGTgKhS+ljH(rMa3{tXv^fMdWaQ6BPG&HV`NRJ@qh*i!Jbei>E((Mp> z*!imWGKEr81ElBY>hvnjL+Cn6Q0kx$uCS;E1-b5>UUXIDS3d4>^jwjh zlk1og(1^I>;NR|GVpN0Q{|TugE59JX+%a;4m-sc6 ze(xlM(1Mz+hx(jaxGRQcT5>BVXS5q+UB>JOMY{!rh`{q$p5be~l@CJT+nL7o9%qEt zEy_}jfOVZLOoGGDRWB#xn^{>r`YwLP=~${77+gX;;}z*O^32JlWOl?MnIDXU8r7-z zvb9I8EA83!Wd;%VU~{+X==M`S*@rR6HtJZ4hs}n3@y79J!C(ERKUneRhQ--F5v)>r z3$!h-Ct)Ya>g{Vf&r@tBs)|nQHQRWuvZ;aIsV&j)gzK-Y*8s2@k=dKAa&4|nB#DYz zbeRBltU)F#;#_aoboWgQTEo!@Tcep0w&($)u>7fY!c(`g5iH3uZ0qBoiac$Kivsg{ zRh0I@4_m+W!E92a+QS2-6GAb+64(8hF9e7jwT@vD4#bKE9^k?r(lEWac3&tS?Ss4Z zkto)&xZ@5Hfme|=O$VzXioL9cF2gT$JqwVOAvmAq6l!f+hgL(soiAzGSon*aCPD<3 z=a)qqXrGcdP9=bcszfH&Y#o|+u4Mrq@8^aT|Aix$lyG8k#F*#AoMqzVs|_IPkt{5< z9`-#$ljxuYc~=iPJN<$0-@4Ie?m+b-ur46=gyEoXF#fJwUy@{UIB9Njm@i12YiJml z6a~QEHFV)b(!IqsZX4GMhdMF&DH3y!5keBX)W<0<3vkapNCQP#M>z-V}+2+mmL#<)1={=FAv9DW*Rp zEYvTG%gBvcT*ozuQT9)GnsG9o-}%chu4Bb9nW7u!JM$h+vE4^TjVqiJCnt|}oXqh{ zsGfGSJ?Ii1KQ*}w6V;P%z$ERH)o7#_)D)B#;Fl6wjn#=f&h>DasHhNX0bYt%VGA2- zzlB+~#|KmFmZ-U!M>?(u8A=`dL}T?IQ*L)nV$;E>V}N3o{e_w4=^AwMO3!zg&*vBa zOq2j=t-(Twei4otvcbX(@Nyi#Bv7Nu+T>S(bx znjm14n)*UCNb~Qq^|K1-p*=DmVxp>Gq3Y!Voa^9Bm?v{A$^>c6sQ_r5`+sNYXW2A* z|NV;7?$4*uTwR!EsyA!U&&SX6IoeD4z4oXcdmy_Iy+x*)IR)m+0pjJakj007RkkdW zcJ>9zx$Yd{r6#3$K3`nS4j9t|VE5s#V&@N~AgYXVZryQ}0nA5VA#5~?TP=w0%2}L;(sv%oAO$DIl&jPU{QWz>i#1b0B55)B9M271NZ5m zmv5W&Kve0+7Z;tS@8EysFDO zH17TPOKDa%@<8iN9@Wgil>mCq@Omi)cyRB3dQ4;>xZAN9**4e8TAtO=D$NH9i$oc?QRS>0=p8`MqV5TJ8^*PX#pjH`DrXYg z;0~ayqmuQ|hbooK>WLBq9+875W~$%xR{tsP@~xlvMDaB2kSl2p_(`yT%FA7{9pYt& zVg(1vIU}su*6QM#kj?Dm+({9>XBUG?ZeW{t!50JHT@-G#0Y{6+RuVIxmmOJ7Ugnkz z#P1|p7-%yZ_U#D!XzDbPl-S4c{FU6WGO}1W(gP1#W$OD!i{cyRItV3A zmuzYtMEK7}f4FXDG8_3TapEm`Vrb~}xXUQ_xk%&f(LtwP6T_Xi3>hEB-|UdwEt&G-C!Cro>;?#~O@Zls zv8?%MtRT?#4X)U`p;AmH_RYZ7CHkF4$icBb6X9s4%~IOe0tm}O9^Dg|nLr57)#4lUa!v7bEZy)i;^vniruyWoRY?A2RVv4bsh zE5oY88os+X2VSm=FX?DbSZ~Q#tn24ZZ@OQD)6vnnZdu=^$2?$aB?GncSK5#}q7OeE)=qlgZP;PHJ27Ep=diYf-JPP{TJEB8yk%W^A0U0XsNn^+#s&4y ef67RrvOI^Nl(0-T4gFgY?6r5^#riK&^4|am+2SAo literal 5355 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 literal 4939 zcmeHLX;4$y5YG=TZ)T`hH9w|ms**aly1H(6fA{Ni zzCIClHkL|?^ArI9O53-YI{*NYCjJ-&#KJ$4@EibDmF?zcj{eF0ZFRA)1c_%~Y-w6@ zJqm6*i0(8Mo>V->yQJW*XLv!$G=*wOIsD6Wrf=^0=Q`M1CY=w~`=_k9q<;Xn?)A3X z9Id0n*?GPm0NfkT4nP5rp^QY@58=QY6cq2(%}M7E{_MM2`~gOs(+DF z@OK+N>gWBd#zZz2`zSZ`jla-S_S3lt9=+DyZ zwydjw7}09i3?~TGxvi_cUh#g7+WocOlt-tBX9+cNMA5}s|2%y+~ zCFq>zO`#VbR`3Qh8L+@uS<7=a0*^?iOamvb~Y5Vu6t^*6hr84 ze(};hC5H%xGrLO`anp8%Gj-|Fi2VW&YBpq`uPGCO*w39!^O|w`z%jCMz(sLPZ2uYqa=@52mx8>}G*lknm%xL%^XbvrV9$zhH$=H z$*5sl%H8O5y7V;-=qvUnkWQ9D=*A!VTC}wNC(cJWO-6IfAF#_?y5|(Ro!2PA% zG&&EOa}^GYLac*WLNk)yIt2!LK9b&pMO=#9OT|u-Jf3AuMrp*rVQLXMTpGs(ReLpk z=qwy|8433aNd@vodmV>x<@eM8LYmPRL=>}cDTlwwU-CdF2dvXmC16^t$S6BoiWw5F z^CBE(ixfdtC4IoYRHVmX2>!8%8P7nknnkq8%nm>UCStpY*pwM)+gU_FuvaH-m7GSZ zen z!LgY16Yth|^mo3&Jd*g&4wq1ub zZKUqrQCq_so}=d!5Nai1@wP1|Z{D#u6p{0E_C~_2ZgL&1LY`TiQaBofO<0GLIqMAtG~hNSxrII-Rfu+qN`Sk^kCd>pb?M77jr8Y zYa=$$aB3#L_(RA*L*Svx)Y+>zp!ouPfXLa>`!Tn42ZFHyqf&3*)<(BXC!{V#h}jl6 z^6@$kN;`k``Mdk?V(MRJ6*F_pcJ3Nc1bAiA=`Q<2NJ=-cgrbqpPr@`kZsgeL4>5Y` z=XHUwT%O4(wY3H3veG8-|!RgLT@#y$XgpkKDU@bt(WS(w^e7}?OmpS&#g`&=cM(9o4!3zhoGu7JT5!}g z(D&dIo{{XNN0v#n^6^QK{UUr_{qts!ugz^n$D>hmBH;97q!N9I>40FPj3rb%-n%U3 zg61$d{fCEYs}eJN)BpkTp71&iF?S-!M1RI(rX?BWHCu;td^55xftZc`D>*^S7Qu|! z`__mZPCDKn7E9tqvxwmzUHx3dHJ|q`9TMyPuqX~;rky3S7ClA4;(^#wyTS7$0aNQvsX)SKj}bE6h5#-+*W zkjy3hWip{mIxf*9JjKE~b6JQ9sOFhtKqQqj`gYDF)zO@t z_cp5?3jQQ;61$XQ=nt%?qDS_qlj?u;#V<4AzKh1PgViHuXR>)XnN~ezn%RP zj(rVI8;GkQN~|Y4Z=jJ0{2%{E3H+f{@?jY4JRGh7NO4%aX;ncF8Wb<$g3bJbf+`g! z?&8lmnbwMg1GP}J6$QnD^>NWVDJZc}Tq&%}_3IOtNtfU1^q0ri#+ZzV+8)HmPyZ3G z5e`Gm^kaC9M~H&cTmR8*peMC!T&mSyFYWJ;Hg(8G_*sQ{w3b1>@sQ^EVAqdx`D2MI z56gt1mn7=R^WEigGU685z5eKuLkqxh{K`D|Nw&09m*6t-Zc|5l&!Cp^b70yq8>_oc zg@GPE*yGuA!W~_Co^u6DpmgZ1lJoVYGP2b);$aB$eIB$i6SZ&~8O7cmqP_^GkX7W{ zKWoQ$4C)VcBew`n%DlBj4zM16MN+bQR3T;e>GoMu)R-{uZQ*O~q_4=`MeQe-VgNlh zVJae)rN_<8?yCiWy7r3_G&Qm2Gu*z>i<4qZQpLZ|6hK*`GnGPeaI9l1Hs}L5=_|8q zXU2JU?w!~}rl`InsVP=7bSJgNhCIPjgrs0j1a>OQy$7NuRnJfYTpiUfvVXYZ^?d(5 zb+j#0L2+VUc$L(3u|jdu%wWULJ2j#Wz}5p{Qz+ygI(!+h{zi20ErE@Qs}Pd44I&Lf zIs8qR{7+(L7zYeJZ*MmM@Q(j)D^JtX>40w|1K>CD{yVFZPEba#Pyxj>k6}=wjRSLR zBuh8Pq5eU@&Cc z5)hdo`|RWXL>~tN47O78g!sL3Mv~qbB;PSae#+S-3r^A=+8sr~(x~t68i9HO=&nG- zDC?C=Sn^rSrBh-*FBA~3JxXcY97>!9)5ZL402fOb)gaY1BjsXIuIhN&zOwV=Ra;TAsLr+6@119oH9KvYG#G7E=SFE8s>6QD zs9HN%HKb(%jPfA6%UiZFVFwoNEGMap4T)I>!?lI9#-TUg-j%Ck^uGX|2xoupGL>?ROhTQC6;r3B+JrXRPB^P+hH7ojESajJyWs+wys#s}5 zUV%NnuW5NqFX&wTSxyB`I(Yu7`=LL&j*{WF7c3a$JvALfF3G@l3mbFJW=hz<0g!=2 AdH?_b diff --git a/test/constraint/arc_line_tangent/normal.png b/test/constraint/arc_line_tangent/normal.png index c2c65029edf62f90b4f56bcc743002ae40e52e3c..72980cb38bbdc9d4c8263d3c2120b27f605f0de9 100644 GIT binary patch literal 5078 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 diff --git a/test/constraint/at_midpoint/line_plane_free_in_3d.png b/test/constraint/at_midpoint/line_plane_free_in_3d.png index 510aa890e9ec35c5d975bff4608d853e2a0645b6..e9f387999c761c9bb6812309035d2dc09cfe69d6 100644 GIT binary patch literal 4315 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 M?Dp7}Y{w-02fC-|Bme*a diff --git a/test/constraint/at_midpoint/line_plane_normal.png b/test/constraint/at_midpoint/line_plane_normal.png index 510aa890e9ec35c5d975bff4608d853e2a0645b6..e9f387999c761c9bb6812309035d2dc09cfe69d6 100644 GIT binary patch literal 4315 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 M?Dp7}Y{w-02fC-|Bme*a diff --git a/test/constraint/at_midpoint/line_pt_free_in_3d.png b/test/constraint/at_midpoint/line_pt_free_in_3d.png index fe283089e4a2e716c8d6cb2cf55a2f91d2bd300b..2d0490db01ba0a63b55cd0752f95e70731df8ee6 100644 GIT binary patch literal 4280 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 sWH~WwzNbzMs(=dY4cmOm*AX)R1>KeIEC2ui diff --git a/test/constraint/at_midpoint/line_pt_normal.png b/test/constraint/at_midpoint/line_pt_normal.png index fe283089e4a2e716c8d6cb2cf55a2f91d2bd300b..2d0490db01ba0a63b55cd0752f95e70731df8ee6 100644 GIT binary patch literal 4280 zcmeHLX;hO}8opr-VHqg031zVYPFY2fP}x)WgHvoVl-o^325nRy>BPgoBb^Etn!%q9U zVh2qBn&+hC(cc1A86{lPo|CLf_3BZX}FDeWW z9>I+P!8}zGC>oFfXpv9_4tbCmfGZ2$7$hbOblos8a8Bk=nv`9 zS`)dX=wz1P;4-~_)#}lgKQOT!tQcggt-qC)LR$%{EB21b!FPV{=&poX2MorkPhR9$ z54)MPFa-eg47NHN;nYGPRh$s;5`;=wE?v0!N2!{yqKf>`5jz3r|wL1D?q3-yB-ygCE>n_xAkl^QKugOfU*#BS6OgaH(Dx6 zCBW*X?Y_g>%xhvztVtpvCE_G0vbPX`y!1`xy*0p0iB&FL_YwzMcO_mVoKbV0l=jgx z48^UY!E4b7x=p8y-S|*LeRY$Kk^wP0Hz=KPXG{}!q$^gyR1uwhb&&`#Tb2tTy^qeYmfp4M>Nr_&#wc*(+7h)w)p_aLs%!=)L!35XQctM1uLj= z$Wd7654(N)E3BT8>J}HvVL)N)FuWlh7d6ndcs(%J(kf>>sJk8Df`X;Iu|3Z82Bx z>Z9x{)Or|%oD##fr1yB33Z)+4k~wZ~qyzOSTZu_>>>lA#NEWnvumZD!= zK({JfUP5Z|b^~bIK)%X4-xmg{OVEKE2@JV7u`P7TfkjtUKn4m!-Q{Hj)N|`k;tq@; zK)|F2xD{Nq9ac!KxgZ6trMD7IM}uO#hr;E_e-=pshtg6^kNc|#Iaqz z7FJwl+k{V#C9c%YXWP!MB%jtw#4$g8(dh*b_?@e5u)NAgYFOCv0*moL`-mDk3}^Bm zrj?oPoqxc9p~WJWY-%W5vz#NFn-v?0&&?bzn1VOPt=8C0qDYC+D;2Q-dA<)`h0R*1 z=vpYxgvA=&sJ5M$nj9|Y=jX&I(c4t_9ERU@kl>Plv4KQ~pJX(nUV;JvT{==UW0~Qh zfmoFyl0eYLfHfpkYm5w_0*Sm57_318iG+kKBMEb%h1FE)*qJpyW-Wi*KX;vb?>_tN zZ}0EB=eBS2HJxrb9ROgu$90{FvZp)PW)8$M1tidt6i3NcngoSDZIJLa?XCio2S@Qf3ONRAEJBNq~87@=FOB;mtF_jK>qm zdzRe|`#{x_(;WTPW@Pc)5O+g~?}{Qa#7MyNn;`jJ`G1s$fkAwfhoL)ukUUbCt@<=f zJ20Bw_ZFwuHZ;!c6!1rs%6f$)Rad&hhA&Aw*}Dyx`4TF>;-0!5W{*81JYd8B{vwJ; z>aars^orU;Nu&BNhyx{kA;&cLE1D#dQ8|vG8?4AvXhuBF6dckem5vqdlCdgV64)<4 z8(QKNY9($Hz1kC%io3A*+kL>=wf2z3wUJX^k9$B@?5U2qfeap&s~<^lG2Jtt)Bi4T}t zUZAJyT`PmQA?+$@d^Z=6)0fv~uIQML>^cBFFu1yMIS1Zl12<_f-wQhY3AHFY6Y_~k zpPQ^<$aw4HT1&gB{?3t_%p`EpwVp^wh<8P1QEP;e1)-U;7RpRX{n>ll zDr$m9mfGID;qK)*k`1P*s*OMOn4N)Ag~_A)h>@rtv*fwPj$PG-Vx#{4V$`>LV}ju( zw*P3J{`zxMu=bzRk1~|E(J-T)T-(>1$Ks-T1N!$Hf)TOzHB%{9; za^&t+5IBPE7{X(akG5PseuKrqMgnqSzCpkH&d$KWRHNLA5H!G6dLim8{$d1*0%;j7 zZOn@abau-$va5PgAj5Rw{)*7={f^eIF?##f4D0CHegQA`Aj#lb-M_b4up{)mlOVuX#F;4(o$5X?IrDa={U zf|JvdFQ57IpUT0N=$aRuIkEocK%3NIEX=9NxmT5GQlwIR#>4YX>1(;(E5UX}RYuFD zM{tlB+s}*KdKd;`;bm?YQNYKTzR%7Cpl1b^WQn(7z=FCsl(60SS@pSR#haRhZg=!r z@z+vr5~JB>8Lh5Q;tM(WSAgdtl#) zO9M}WWUH9sjZL{btdkneSgOroR+F! z$yw?$A*{>1$e!7-;o0qtO$@P7bMcean*1`_Sxy62+S8^K!0~%DQshw5Iepn}z#DSLH>V4yBViSUP_(Ko#}O?`Al4ZaksFofeT~4r1J^ghC2k zo#@Qj+Eng2tVzQ(ct*1~V@E;r(tCR`eW{;di_B&=GJ4dnBWk;2;=jyJ`ii;vN7W2) zd^3xUu0RQVAEw|BMNrhcq&h$Peu>t;f>uS!9vKOQCTnhVCo~FY-|9*}uS~QCR^vfE sWH~WwzNbzMs(=dY4cmOm*AX)R1>KeIEC2ui diff --git a/test/constraint/cubic_line_tangent/free_in_3d.png b/test/constraint/cubic_line_tangent/free_in_3d.png index 5784a678f75016af3b50405c0b77478924b564b4..2ef2ad5e3c6ea1ea500907f83c40779612edeec9 100644 GIT binary patch literal 5032 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 literal 5142 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 diff --git a/test/constraint/curve_curve_tangent/arc_arc.png b/test/constraint/curve_curve_tangent/arc_arc.png index d458890779036143681269b24e5b41f35fb99cdb..9193cb2f91e07653f9785470940708aaa4651705 100644 GIT binary patch literal 4983 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 i?X&9s-}u}#FC{l-%$qY^$wEJ|N*p literal 5349 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 diff --git a/test/constraint/curve_curve_tangent/arc_cubic.png b/test/constraint/curve_curve_tangent/arc_cubic.png index 5b47f7029167c7aa7df064f1fe8696e1ebfe754b..5e4935e53156fd029cc6a56f189d516a2938e07e 100644 GIT binary patch literal 5202 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 diff --git a/test/constraint/eq_pt_ln_distances/normal.png b/test/constraint/eq_pt_ln_distances/normal.png index 599e55f6892355a6796b83eb3c2ac2a99b5dee38..72a026d323a31072415e297ff6c7256ad2b87988 100644 GIT binary patch literal 4344 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 diff --git a/test/constraint/equal_angle/normal.png b/test/constraint/equal_angle/normal.png index 2b744a8fb9db796a806ad1ee2be5ebaf3236a7c5..f530bd592a9902c6892fac89bef69784c394c386 100644 GIT binary patch delta 3439 zcmb7Hd011&7N3L!!wv<4vWtSPAflB`2mv%G6{rh^2m%)swT49mtN}t66;$@#CsbK& zYAs73AP|rQ16aWpL0keQ1VpT16%YsthP;dKd+&Si&v(E3efQ4HIdgvVn{(!z8T*R$ zRnF$4-rjpX{4W+xOC-7CfcvSvnO{kEgKrHxP)^LpZCC83-d|=O#&2P&2;oOgj3%P1 z!52~2t^WE%ZPiLT!P%N;lVH?;ruE^dR;27jkjpLrj;{s?0ATdu;9PB^T&^F?(A0Hw zyD?2I4i3(Xp(}Eq_s~z#8)8=e^TwS2lG+vbB!%GWx=gz`G&?(capBMce+0h~ZbcdA z3NaRp6g|OF^QSdGOEs8Spl!tkpbdiu?)@)XK6M!b;OPVJ(At2L|0JEz2ZJQINy!K; z*#XDuZGq)VDoVwU82F%u9d3C?&r562m=1ejj8P|G50pOKgVIC{s4-G(4lJrNhV%$A za1O@N?3}@W>`b8l{LKuk|Az`SK{_sZ5R;R=E%X%i#>G9F@bYu3X#sCB3i_$QPx+T?5aoQ4s?tU4?~si3H^ z6y=0!hRxB&XqQuPEJiQ4L|1jJqt?F~jQRG?!!c;5Z9nLc0SI3MRcXu3SVl2CXyu`R z`{QtQ@>Cj+!|HXaeq|f2g9f8p?|WO)>ZVthC3j}2{&!{F5+M}yXgve4G5ski*&k)$3YwAyZ|MW-R6XUN2w z#Oa*WK-7w6EH3*s;bhWTId40@BxQJLxL{s&=dYq$FCNNL)er%#=Fm;z2E2SYp(Ca6 zx6~E}a&2cWVU6BeTs%cD9&V^;UrHl-M*JE3av&_mtXMJcEY+{

QGgG0fyILo!IC zFIuDc+v+MT0%xclqvp^_;&$hameexw^Di$g)5h z5B0eYOe_|GeAW7u2?o!OWZhKv`Mr2&>3%g%D@biq>hvcBsAT8I}(Y zWOL;2tHTCH=$f3Usj4F@Nt9_~K5>^kNm$mY*hc@zj!tpyCbq0DOZvj-gR^vMLVFJ4 zZtlpmMEX+Pij=N6D#(~z4HYn=#zq_bk*GEbM7bg;U))ok!c~Oyj*rJUiuAr)1ru!bS|f@WZA6uMZdI zb+W=Yvp>-?&Kq-g(h+_tLajUmmAa5_-h-65E*G55nV+!?8|Lrt7WD!N9DS$Zim_RW;-2OYc=)XS%Xn@Ex;qf05Gb&8`)VZh8=^;8>0soTl zxMN~wMQESK=dLm5!`*$7`5G{FMR@#T67I*|Y%O}JBRc(dCO(jDq9yzdgKz(06Yxjk zh-xdgA2r%h<>hL{ICK-*VZ0ITZqNMvpjW2#%nQxgUy$fPr-x@42JYKrW+Xg=!S7k` zT;=8Fz&NC0bAO9F=r?4N`n<9$5EGC;Iz2km)QoLrChWxELktOSUPL!WFCzGLB0V`H zB^e}{bH}cK0Hx~?N#o(jxHpaxy&Mq!=iyrMx0Xp))|s@A9zL0=y}4s_!w4B@ljC2- zm&X|%?I2DP8hkk5(I#$x9c3<7oin~PUXZZY9K(5gZ)!VZ3Ck!_J5H;CT+scmU~Tohp3LcD6tXl)|x@3SR|0@@=cCzZ_iLA{*k z!IwLRc@2V`@#%zc!1sfC>*s^7bPy>Vx5x&3BH(BDLA`=`Z_#+kaAKw?$S>@KWfhP; z#-xW2CLTx|?Wm?r-Jt!-Q*l=yEHyg(zFSckSMAsEP!HteZ0M{Ug4%&kRi;4}Sv}d~KDOz>_LRAWPsmXjHlvpNyJo;?L zacaIVjD(-c7NVEuc&jZd9~Sa%KV`|a$sh*0gbt^NlVfST z>bI61<1eKJCD^_Ci>YQelxCHQ_Tkth3oaw2OYST1<&=_pB|DkeNbz`-usbveI*VPg z(wnaqGDnM)H7jOh5)j(%I)0@YiZ*D3)(tQauoD2j{+d~dS<Xo9@%u1So;|4OyhJ|ONIy-l-PFdW>8mP;LU1pULifHQsDD7UN z)s+34K?Ym#S?27MU1}iF-V3UiS=K7=qRGEIiE<}Spee#@&x8D8HmGg`{VlOpWEaFi z0PTanfRQlx4L#@ktM1Nq#7kudNC+OF!-$((C8!2BD?WbLyTD%zUpLIaSEShaFqu7`li=Qb=>r592-2lI4QaN36%LDMFck3meG1 zV~OY%y`xs9RNEBrG-%S9+sz&?{{98kUj;puuGoQI^MbjulhxAhJ@oNs9aXaohXh` ztPVVg>yZ*_pVVhb**#4OHcQDv964dR=5&kS(kHoP!^%|C`#%h4kw z*ke@oaPVbzlYN;>30?hWF+abW2(-%8Dhd3&*F%omCGCA^aN(DkKB&kK->{sgb~iU6 zigvf-oNvPA5V4{nY`(r>rB_zbpd_@7+{CRSJquuuACjUHtm~>w;uibDIr3`iv8CjD zLP7b1RSVEnqSMAuU~NRT^Z}&E+-sYxlhjhZ1s&AmsmBP%pZQRJ{}-%!eH>WMei z+0){dX(CTw!Y!k1h-kf#`Tl|lm`Yu%(dP~S>z;$$2`~oz3MKAagUZ?Z$x?tk-Xy=h IRh|&*pLa`V2><{9 delta 3558 zcma)9dpwls9)IRFQ{&Dsk~A)f>?qZV5QZ(v3fV0t#Mn^BH5G}>JEn`RTvqQ{YN?cx za+}n+Hq4|o?V+$V_H&*!=Pe$Vgne4oqrVVaJb{%qu5 z>ax%Aa9obKr#WL#P}MLXCk!Vtbdv;S&>`q8*OmD4=kHYHEE=tZME~(OR%3n27^w#w@^yCLY^?U^Gn>94MI&<8cmA*Zh$Ij1?636S4u) z#r%jkD(Pi>#v=icJj97aLZRL8gj&*HgTYG?)L5VgwA+(KI6$5oZs6A@bbh0qI;cSU zKrjH?OYW0HzQ#52JZfcb4CD8aWClpFq$B*k73rICA>)tmaRm615ua%5LF4JWdoc68ALNj{^Svjm zl5lbzZhl)`XBA?Dck_wI|3taP+Qd=NU&)lIQ(Ja?txg}i)M9GFTh^^zo(h>9lZlsV ztV{HdhZfIC)kag0{_@+&?XBkz+0CC%|75NnCQBK4@@Au#kbcXe z^%&Ww3QoKS!i{hM4^X_b(_6OE^6Enl{VPYh4zGS@{DiY!Dk|Bl9W8?pLvIoQ3K z@UR;!?oze?d>dV66Ai*t8G*{$X~K)pj))(wWJYLES%!Z>Ek>(^Re`vd%qPwSh8Cxu zKLcr=CcIC}fC}d;=cRA?aKi83buRYG(KfJYQ%*GJ2DU&XG}I0;&7GR{|i>@1%l8h@zr`Le2E&=2^Dvyxn*F?K zO}B-Tgo_$7>d5lX_f8{g*P}bdAw36MF>Y0Cv*w6L8yZ+jULrA*bh%g ze`;QLy)=O};nmLU=+n?#|p3YxA^ge&&e<>h3!lk4S-6&MeF=+%3%F z(c1Qjmzzkb_0iZ-<;y$&z-J3Fp;2L91Tdq9o0k9trZ)sY-!El{#}(7!TBwNd05xF<>VL?~r?&sT!rd_XO83vDM^}KqwVX?($fy%)% z7TyoJXSthDi;vY#E?uZ*6O&8PJw-dUP5lqHYXsm}R%@LHXEc6^2~FexjJFb|5a zF;`;9G^l6Ai{B4SHv1H+W*1*3fzm;eS@k*l-))wrePt($hi6FSXdKJKn5qO13VdyJ zDRl91N#}|9Y%t?N+i@xEhob3bYgzB_nKz++Leg*BdkK3Wc@*8Aix$nnHERGB$$pRd zmR{fwSnDB0{h{Lvnn%A?w0wXbTU-b~-?5C}N~^`f8ln(gTg`}4ycK0<(75z7a$`$6V+nf7(jN{d~Xj++8n=lvJ zJ8Z?7kDGqRD7fD{k#`#S_a_?{(L7cOLRH=4ipNAvaiVvTflg%CdOS28Tjrv%b^H zK&ilzmFX0O0rijT_H8Kx47Qo;?~&tjh3qmDRlvFufzk)A!zx+oX!qH3*!;so6>-}$ z6!#m-2C(1+ZLae&;9i+sPo+ET0<6HqHC|!$&Vt%rFFnxE9z|nY1_f<|V>4Qqifa}m z8{?Ah3sY-Raat8#Q~1aCYBGne&l|&U-_mCSx&&&w4R{#oF2n{`9A1Y+>rGg#v!bDglm(Yzdzq|#B(z~*L*o$eWD1R zLeHm2)8EB{j>{2P0sBB#=q|f) z+uX>@0``dCQVcb0CCt8bf9=tJ&vyYZsQyD@N6q?t{rv2|20E9lUF5jiW;RfTFLsuF zc7l6+1yfBm?Pu<~UILmO4Vzz{=&4STiZli|jqz7y9yXC9cHK4su2F5z6PlO)sH0K|0IDRUqyPW_ diff --git a/test/constraint/equal_angle/other.png b/test/constraint/equal_angle/other.png index 21cdcc46c3290d4bf21d149b36efd9648f55ecfc..ab7676c6949ee327b478890201565c7ed555bdde 100644 GIT binary patch literal 4896 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 x;#3)4nRHD0V&c!W(kZLJ$v~` diff --git a/test/constraint/equal_length_lines/normal.png b/test/constraint/equal_length_lines/normal.png index 6a59e7d61262d7f43975be35ab9923449c510187..cc0f9c26880f726b6d351dd72c34edff089acc88 100644 GIT binary patch literal 4323 zcmeHLc~Db#9{=Ss+#amZ%BiflEffMML@|N~qAMV}M1gRmqJXdvS_P3nNU&;cS=dgi z0;1T`B18h|Qtm)PbpZ_;%aN!dm#8R_1VM-ihBT>2$<8XwZaX_W;~#I{%$s+9zMt#& zP6Y?~n;I=M0sxq9-?n8p0MJm~X0Skeq&2pnAAm*F?OQg6q!$kh)JgZbOWP$^@aMJ- zrC7=KwSDvH@Q+F8)NemWWq0PR%2{pK?Y)k1mIGVV9{Ygp?GYt&J=xv08%u`D3vl8b9_-<&8A;S1B!{WTOEr^Iqv{RpdvzgB z)yU${41aZ|H}E<$78cOOhgyHmgWYWVpNajp&R@p6KaGkV!Ya9FwbOtYmPlyz<5B9$}A{B1D zy1E)UvYdigMSmfw>-{1fgD1`KK>6OLg41?tAB$<^QPs4;lQA>i_>2GSz#i@J#+&$D z9@?vL1j!z4^GJ=*Xgn>EUjYFZuDu%0EN;x@?tpwW3CBK&_>~FTjM{-67MueOYz|e` z*J4QKzusDBIVIOJRC+fp0g&U|+n@%@J1r0~3U1-sS)Fmp`D+BS`*4Rg_TXwNbF(qp zm4X<7mxZMyLyggOKCXERQWl;$rMlFaGqyOCg`RQ~?zD>*y8j_O#TIHTwkn8iYjnoe z))y-;i~5*J%5ehipf=SsN+~mvD4^C&-c*cz(Q)eu55tkfmDCW!M5?$jrsVD|t58^^ z3B~cOD6y92+BQB^PY~TW%Lu9_MXKMor&f58GAG}K1U-r~bV8d`5Vb& ztMDxubd38yBExxC`h>3A*LX*3<+{F5kAJ!<|L?@Pj*lbA#z)Jww*2}=_+QgPYU=Fs zu_*{B_oCMY?uUS$$4tLJ{X=WPceHjff!u@TA47ul6S|aPZPBUhwsx_iaBS_1a?RIz z!S=a~o$dx>$5}!F(lZvXB*z0WtKFoMdeA`{LAbmS99rf@rfp&ZP0(=4jl=MDxfkCC>02;urhe|K%_7TD|3Hj<$kbA>lXp@V}0jSooAi9|< zX!M>@75Y&Lj$D7!D)dW|?`m*M&Y)mdYLUByK7z-dat8K6FL!^&w=4+*zMrz1dY`4K z04pMIX((aUHoL&Dssf8-kpn_ecHMoYPxGFHh37d36jB3VsXarXdXy$4YWTIdY-vIQ z!r|%Q(s!;FP*QIYEyaoz?5hr(Xc7pl2vp8xbQw_bRn zo5)n`G7%8Z$=y3!$GGCSZ)7cMLHOY4_X1TBj(J4BL6p%f&riNXiWP9G4#~&T5|chM zV;!5gVlB;3^X$~#icEn+;s)u{epOLo{(}qE&1tRv*>Vp~52iYLpMWz}KYAJ?oLsl| z0x?}^W7bjX-;)~CkNc#i(X)c+{jNJk8Fe8W*!Eh6#yyYvj3{C}GvOdWap!H(vDCF; z=pmd-#8$5VWOJs8-QzrZ{!LBa;EOP+Fr1la1A-*)P{w!t(PmAN?YQT~s^eV${Km0D)rvO%W&kU~uL(EyVJ{qnX9`Q*M<;`Nb7$`>n5!6j5OKI^`>gLF@CR;+72V+W?b z(a*s5SWN$l%-&jlyhv>+q46_LDRyQ=4mu^a2-xvGKj8A!Ej&r-;P9?fgLY)wzww6t z(&Bo&!$T}-Ol8L0hUe;d6claFyT} literal 4413 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 NKK~Fu-fl|P{{a*>#%urp delta 2205 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 literal 4714 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 HYWzO|3JWjT literal 5034 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 NOA`y@oIP;pzX8dDfm{Fp diff --git a/test/constraint/equal_radius/normal.png b/test/constraint/equal_radius/normal.png index 376ddea777405a1c949a6e1d636db0673d0186cb..17931920e2e4769e87bbdeaa586c1ba0d75a20ff 100644 GIT binary patch literal 5238 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 literal 5396 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 Nc5d6ZHGeZH@;~s=N%;T( diff --git a/test/constraint/horizontal/line.png b/test/constraint/horizontal/line.png index 3a5e46e4b93ef7b0e43fe0c09be587880d1845f9..6a2f7b238aa9bfd57cc5cc6fabd356fa2c78ce20 100644 GIT binary patch literal 4256 zcmcIodsLEX8h=3%&CzPytWnF#vS!CgGFwfZ=wh0iI@W}mu11+!5~I$7AE(yH;(`ECC&l8IwigEsGDbPW76e;lCm)*SUp%TGytH* z1&;vd^sE30Lq>rmmNfwUq-_j#P#`4GHG-dd1gQ^JyZ@hx#)?N<1b%hIi3x%KChWwP zp<0HdGCWb>-zR5HSSB>ztomXo%HE8>s>;+bmCr36ru7@IneT9vL3~$!MqHE!8 zJ=g|n2k$(9OORRu5OOqSuD-8e(xOFxw`69Y9NGMDb3nPQ1aPq98|FesgWpMo?^Jw( zc1l-m*s{yI@7f^%#>hx*d8P$MzK}huE&&ZvXZEp{`?@FqbWI5$rn=NIWPxM4f=P`M zffXL@QM=VgsB!&sTwP2!65uVBlmCGPkRmGxQbS<4RJpIhx+YDIAi3pEmyv zXhEuN)F5l5$dmq3LsFY`ugJVK@DfBXEW3JcU@pV&iSefwE5X zKB|78EFRqc{pzQdo~9|V30I12#G~1bmS^_Ao0#O3*%X6AQXULvHyT@)2_r`L2tmQr z{adsznSE8pd@evdZG!Qjuvy~An`Z`RQbB4;8c^#n|0u#q%3+}EmCe)W25_fYb)(M! z2>m011Yfgs0K2iS6m}+sn4NrgjD{mJpGd`5nNMG_ zGlyQ+ws!4j)xWE)=!+n}G^ikNy09awne9gu?2Dkw`8_e>_0{d=hkda67sE!rHSbGu zA#HeDdv2MN5gC;hv@(2z7>0VBC(PEf;@u43>X^MML6v&HZqPQ~LAkMvM>GK`_m_Ef z$O6uRtjK*!V%JZaLho8_4Py)!s6sPk?P>R3nBMW3t$G@GA?~JTw=YuD{QUYdrM^rR&aX?V`9+{#5k+*|3ZUF+tH2m$ zh4TVuTcL)m(?aO+^ZZQd!&8L|@NX62hrLSB9UTTpTc)XnH?!=6=(BZSL-?YwsdWY3 zO4FGtT!2}rjK>Fbh3wrKyz9blg|t#3_7-Wc?j&rXO53<%Cda0n2};HUA9sXcOX0RGoh zj&yP3zpl=4h2`*LWfIUB=l>8tS*E^>0TV#+3da-kA0k0%d-5f(V+au11*^pv+8ft% z77gt01;LGkoPSq#Mn|A^1}p{Z=8O~5wC$vj2SS%4!QzuG&>OAq5hV0qLhv{b(?hKi zsvKahM{1Ra{roUq(Y0rnK6i7MD28VWn{|_6McD}pfh=k7I?xjID^!+ebF0j~7T^zl zt?k{h@0iDN*-+71ebCgl+}Fsn;K}K@X0PK2h@T&tBGI0#`v^<3i%2Kv-Ev>LF+pMa zHvk3Y+SXKEW77~e@RDad3#!`W313Mar3@ZMd zi2?=Bf6yxbD-2>Ja_Vb8Qg8)^c9%A*q_n;r4F=!%k|oh8Z`+)QyRQwuG;zfyQD4Zg zcfG?F7q$jV*-ODDCvW^pN!w_H^c|N)OU^KHB-E(J6_w|1G*BCOvNIjhGjUKC{h;AvaWnVg+th4ngEqbSj+h~}6pHIl5)n~0~&k_yD z&^*sXvgD)c5_|bzN$YF46-J+oZ}rW|I`5j;e7^ai{CILsM!yAT=~$brQC?6~C#;m* zWg&Q^4;T+b!hU8xa4u=m3 zMgv{)OF8kcM2Rc6$8&{OV&5TNw#8N^l}Srp$Lcsa)u*%XP3Rk@27MRA@IM#eP#OxL z-6Qlpv7hZ_*svTwb_}g3auE3(eJp1c#VPJb1q}`{<#2i!Vj1|41YbsF5VGq9fOlf* tWv6=1)T^Sc8r(}G|K}Dum5{A4aBbaYF6}w>EBwy`aNFbQT(t|I@*9HCw!Q!W literal 4329 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 N8`k=)DOycT_$Pdu4J-fv literal 4535 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 y5Vv9Z#rY#m({`qYzXt=F~V@i|`Q zZ9Y*_O}EZ#k&pLEpIP@rAGjPlc~94u!DK?fSo(m9yX^RA^rf^@Q1VSx*e#JvP^_9} zMBV?cs>}JyI$Zfy{E$*v+lS2RlZF7;(AMf%(&lO;mJ%R31j`@cq4N#XQ!qn|pudGbDSOG}fgqD;<@_qxOvl*?u+ zS@6`rBqyuTEkAUcAN9EzjCX~EJ~Z~dsAB5nhredj);rf>Y1((ZrJd}TK5kNir5ZC+Scz02oa58kGDE%?N374Lm^OPmCy9lC#SlR|r6AoW*+`TYIT z=W7xF%>p17Rd9c*u+sxY&OffQDUEbN`vQ5rDUE7iPCKuqr8kVgWi}Yj0Y&z-9aBlZcnXvnn_fB%!{QD47KvpDTth8 z{O6V=lu1tl=}fI&qo?}lJBoCCI>w_oCodSG?@~smLz@V=xJTw0bS^??JrmKH3oYJ$ z6k;4AncHx&M@^BL-<7Wx1w@ToMC;MFfW~O!dY7R9TBu(9{~zxU_?s7}5I9Bv0Bb6w znihcD_+9W^1kf@2k%0O9l0U2t|BvBHh4{$OJxvP$)?WSaZTfz+_11i+qD!wF!J2FV z7h^%y1O^XgOz*u!0C|Zzp$wyZ-s?;!UnI*c~V*@ykC2AeUJ=?}(oy#)<$A_JZFbmg}WO6Q2-^Cv>kbhb9 z6?hG#RBPlhgO-k5>b5lnFPdR2)9J(sW=NVQU@ur&gdrs7Lp~hk@)D4Zx)A5sQ+L|I z!NF2*6>zBzw?o@w)$52~53rgWT>Xe zLj$)v_b_;;9oGsS_!-3PZT8nf@@i5skUNazdCc~l&fJgWI&(1jw!CW7d^!@!h6nCq z7ft#~KIxrv8SM5W?;4ns@4-=rwpUyg*P5p0C^~$Md&cJk1j1oNo}-#PPu={JOZ0(` z3EIJ2=!*jL8;TJl5%E!>IZ?RxPcESR+^WlaCs4v8XXe~043-U;fB=`n*w722h%OxG z;>i1MSGB12d?RXZY(9wi;erO&1M}VS@IbVQJ6$jrW_WoJpoioOiv6)%)CK02)N>;Lm)%qr01 zIZZO+HN2|b7seW2S5m+b_eDO<-B??&NX0Ik3Q!PnszVB>XRcaZ{3SyVo1+RF$Q9-o zerBX>q=-N9G&@7iwQJug#R`kP`>&;andaz%%8Wb(`_i$P2A4!!{F0%*|N?+h3ip*aO_r$5_-5V zreI4eafNG^p>rWa6f5nHe;YD#VxibH=vMNOB{;vGN!RJt`~AyxSy^49wPMerFPn=) zRB|`TjM+d6H4vpJhZXQy&fK5_gayGh;VBW7hQRmxR~KtEYYdvPfhjFpTc5VZ#LHro Yb2?~vSF21^1=MASm#=5RR&4yg03bVjEdT%j diff --git a/test/constraint/length_ratio/normal.png b/test/constraint/length_ratio/normal.png index b67ffe0f8af994f3e7648d299b45c5c122838b5b..eacac75d6e07607e7754026d7d1a5a0696f85d65 100644 GIT binary patch literal 4528 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 PcEI{Ie%{3&QV;wGY6x*J diff --git a/test/constraint/length_ratio/reference.png b/test/constraint/length_ratio/reference.png index 7d3b8712476d98f0db12c73ec3561aee67593c77..42ea9562a1f4d353f7cac585e4c5500b18de7f1f 100644 GIT binary patch literal 4598 zcmeHLX;jl!7Jmc+!3>)yi$Y^Tg$^hvt}PH`zzuLg24jE_p(p|=g2)yK|0uOZ5u~=D zrEFDEAt5OxYzjowVnqyyBuJ=@>3VT;EGzr-JgetUG1@4w(!M=RTB z-Qn7kaeJAz%|Yk&qAiC*>af2Ywe89AI6xTaY;e|DgkXe?Y(0KV&5x2}Ug`fcP5I8apWTW>J^S=#9H9ID z!$v0^02vz3b~ZQc)4F6N$VaII{7rEim4IFBJyit9iXZLvy=RU3TPpn+px>t>>0dJn zx`xH&4tN5Pc|&WqVz*}}RS-1TOQ(10Lgwzo0!LeQ=9%UF$IrfJ)8s$dciDmDU2zW$ zXLQ(y&SE7S0bsr2+HBpIh8C9Z2F#4D5I1yN zcb43zM7un7ijn0!<5lq`mUlUJO`}5x%0c1zVJDma;ZYC7)-8n;pAeK# zH|3V)1W`9oWghT&J%~1}$*#A)yB?N6&Fh$+JAV%*EZQ+*Q@OfF+)ChY=h&~WEUirrQK^pX6 z9^XJN$!e+QmIim)_-pwY;lRfMA>l!S=7{gpjWh2oaR(3+R#4J5J@&=3#A_?g%pmuh zWRS1mz{KnJPzNyU*((QhfcBFssJ(tz#_NYQ7wHJ$sX!|&@XNpBZcfSWI!NXqc&7i{ z8-dm*%E@H}1iNHfkDjj4b1eI_C!AoP)2-=%6LRFgBHf-HcA22jo)639G-W3=Br1YF zrmtsqhQI2niCD+tsP1ffG2dy1s?P2m($GC+ zyMeT{|LVtT;&$f^AVGFOQ$-C%+Gm+fqWd(JZl|FjEkl7Smant`nfPZB|0PY5#|*t2tp`X@l<5x+ZS7M&V{Tz~+_yIy^dONtN)+ zd6PM9!1iEEkQRAtL^t(-iA6peLEv*v51k8cVq%(9pHvDHwM^Qxv2w+;$DLls+|gO^ z63!Emt@rT(URkdnY?nEBQB*ZA52#*7s}y2Yia>I&r*bG!AWqW1Nr_6*!=$!VSEebj zx5v?U^;p!dj$aLJW956w!zk#A1VLfr_uG?-2+CTy?V_?vYa5-FUjrR!gRb4Wxm2Vy zbU1o|6oI^XydqcEUdSpSXb%paLzem<3`C$8-MK&KV7@lACUAZ?4Z#j~0`GrQ9BT0}4Pn zv#ZD(i_n%cpVkew13;cKJ~ym)Bb7Y=ZAYDfgc(DeV@22}>uGOm104nkFw2-#72cc# z|1QI1|XS=!Kil|Snpfw;n+^VQcrgUnU@9Z2-2-v$*N(i z5+ufKQ2g0*EziD_jhf}Gz1E_{;JLcsaX*%cU%0Xo@6?8X2q%qj^af8ZR4P!-+XLFO z>)8tq{$7JQp=s9hSn>_FmM9LGzELyX&2dOMH2ZZQD(NEaP$(kjx~jRl*&TLd+} z!fs?Y9KX9TcxzVju=BUB@&>OJRkD?W1E*Xh_k`9vM?2(S4E0IteoMYX7x3%v9_kY{ z#{K#-N9kH$L}&2nsV5GB;i|?vYdE~L)MuQiq+Svs7;4Rz6q}8D_xS7Gq50`3{A66$qf;;d1XJx z12$EvG^cg`+FbrH_R*@!<#e%heW0)9-n=Z;16~S4`LHLgivrfA^H4Oe9BElc976)t zo8a>b56MJK-iy%`LI4FvEFa)upbDwNoR;lsDjEFbdP9o@a{&GuMN{<6{*7GvCGzLX zMtd(5@?mo=W=95EUFES_!#U#ykLaz*848;Qai5do(_pXY&Z+>8^4#d7d!l&84UvJ{ z$>u|{l3}k$V{x@fB$7Bk%`|FFfDJz}4^{5x%>huJA35W>|EZLHw3;RHFT2wQYKt;f zD{53ZqebhYGhfTQ;YS2js6sElhi{7}@N8>DKMRO U4fl<~FFOEi@!aN7;Z8jA9}fb6DF6Tf literal 4684 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 literal 4311 zcmeHLdr(t%7Cy=4r8Fr@@db*)77?j{R;;7(RIEEY{bOhR<4$JooO|#2 zedjyhcTSFNC2t^1pEn%<2pc`tZ3Dpjj$8(M*qy3f=}!QRvNx`C^FEaIT;g{6U$^Hb zwj_F{^$>W;k!E%~R)4mswoRuZu{A3El%LMdlb3$t?DB}{K;j}>qYJj$oNZlyrZiVf zvaV~O_?ZGY2)y?JP`|_*!a^@94icu>0@FTT7mTbp0Jn5zfor-D4+h3q4&VMpK^(h~ z&}^9~wS72_QQt0(Ydb6|uTrx2#iD-A>Mfr#hB`mR)!dILF4%9Tgwa@F{$9PveLPs3f&otITX+pBDq>hRheaIY#(Py^rdJPD3$1=As zKEGzy2XdqHPN}yXIyXOv`dW)^tGFUj*Jgl|KaGL>3nt!YMHfqPLaXsFHR`7Rfdux} zW0{{U>`Xp8UbOMBcOs-Nv29!fG20_0Mq13?%;s`qi~%e^(qn`I{|h~;FlBjEWA30^2zaQQrKa!TRQG!EEL=hnq*vR1oc; zca)2M3HAleL5x>obuXjv>O)0eNsyrmiLkJmP(F=sD%LRkC6ime3tvlL0!+8FT9ljE z!D@$kj1G_1jRkNjh0DA2K`-RU8zp4!H<36@*1$RU#lv2X<~c8%i9*?UcWAwK3YKBa z?Z76~{_G+NS}T}EI& zoat+SdC}Kh0!)iw)&3JkdaHtiagoCDUaN37$W#09am>CEakeHDKwE7 z>%ybVX&>THUHGuoc#U2_{*XC#fC!9hIxN zNB-!3uvTYQ#GbTr+!}gV{1ua|G$Gz#1s8wV3voU5Bc4(?h;`i2{hmgLup_~(Cl)&I zxABP}jm`jy>Ne9u-jkJjBEKiSu$7W}`r&jfAITRrQTWqcz@G2e?8Z!hImiBMu6%@Hv}HcR@c#gV%&>?X zgMhHJZZ@W%YbLuDyhBDGHPopdWQNhBMc4yVPdpQr0Ze#*KJfSo4phN!41mcDh~?NDjR^gl zanQN3DKL8_2+3oU=2W`~XDw3Ozf1>+MfJj7!g(AML051nrmITplqG7g&u1Wo+(nkC zl0JLd7l*2;g68)9i(lF4_!m9sI_Jot7-JYNtHaViW(y0+RIXJiFsV^ruYmy;e|iYbVWXL zNgW-{kyI)j>+^l?8w-Ns$%?tY<-8~yV`-_EbMIh_KCrpj2ygXpl9d z=kj^V|%s99^a9>mNGzMNt3U47y7W7LHczd0puzqbo{SJhC4{GZSSf z1b?gV-j7~ALu;-^U%cJ_G*Sz*pV=EF%HX?-whG=5IA31Isp|NfhIOd_mq% z4Is}-R;L)Ir6{FC%W|se1(x0XzBtv&<}e8z{f3PQmzY^{q$e)qt$&zTjCA?z=J#h6 z1|{+91hT%S-Zb5^0)__Hxk(_u8H2_;)Mqbuj#(S$fjy=$^_55O3YMIxWOcWvY`G#^ zTW)}}jyUO;z^aTgef~JkNP2^v_G<8gIBM-RkuoqQGhae~u}|Z~>#uaNd8tOW=Jilw z3+gZS9CmW%l_iU-;|z&Od1q)mzl0q&`Jo_O)F`#!&Hi1^Ty*cTb1tGS=lWNa?21KM zJjSz1hhCJ1?Z(42G;#CukiY8QS$XeH6hzD$am9bq$F{}ad~Kh~$cGV+olZ$An`cqj Q9~Q9DoxHC2_tYc*0peQ65dZ)H diff --git a/test/constraint/parallel/normal.png b/test/constraint/parallel/normal.png index 518845f8f3d96fc13fc77b572e109f2bcbd6d6cf..e408b3fe6d805bc9d204b01b7dd790e43d7b9d91 100644 GIT binary patch literal 4667 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 literal 4792 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 literal 5018 zcmeHLdoH4YG3WDk4fOy3l0{6{$6nY8jEnl-dkU*8MVOCbm{1(w0kd=_1KY zrg{g(@Kfm~Nii-FU97vIY0O4r-se}@UAw2Y_mB5I=RIf7;XLOzzwh&XzQ51+^SwQB zn>ISAD9um;0H|zOZ?_o$ED`<3E5KjMcBi%gpy9p2ZuQo%Q~j+@$DX>LJXp(8@?Z1K zh07hSZ?-b+=Pc=KKGG2&L`uGYWBbs`KIvXoRE4VK#VLI3+KpQKH@M%;wbrZ1;}u!~ zKpy*!4*;VUZweR|OnETHhzr0CoHnpcMX&&`0Z;bEDg!+N2?Jsk|4TyFCv?IyJv@@L z=(MVCA^n%IVXEx6Kl3Zeej?96&-7}6@Rw5Wt4*_84?mn~riT4Hd%7HIZ(^AVS{X|x ze$JNBp|s@y#HN1olSUTS)SG}})^7*|Gkxk*!Q}h6k4U^+aGm^xKry0C9mPtFXPSR8 zgW}Ke!U1GG;gg6Bm@AhD#vnPD( z9|`^_(I?Lf^Cp`{lliS)5;1c6b{e)$yV+(aAD_x%H3u^o-o!14tm_imZx)-LBbl6TJYG< z2hJ10tR&=xA>lGurp~lKWvrd2H(o)7N^ff_GtN#S`rUx5fd;YkII6>fCy2VU zb8+XEi^ATKswGu>G_e*lG)%o7LZMnkQ>zXyQ;@Kp)){ddwa`_MJAWrU=>kr>1g^G1oOTY}IV}kxr@*x<4SBJzx6}X39Zgor z*S`l-X!_VmD;C=k6*=+YuxW9~i#hP{{ZH$*iFD!*v9lViq~hLKJW^9%|Vp}($LYv+#k%f0bh;S z!uf$590#q9G~^b0_z8H(F5?L!k*RI0mjc)v#j*=?gu zM5oKyjhAD!Z0XP^uZJsYi)MKrHe`blL+-Tu_${X1@{h{%cmi4I+=Ex6y@V0I@7^Bo zd2BHAVeaoXl-TR=O2{b~7w%0K%WI=DHBt2ty@A*sR&RgnhpJ{A(zMZFfQw zk?5R=dtGe%n1d>21R4>8p8FpTHeq`$M>l!G?1W_Ga~?P|lr07IK4n8m1u~XH&3kbI%ivT)|35NEKa`e2;-^Qyqzz zK^H8`dliZtIEOd=sxu1xlJy$I$^Cp|fh1UJTo|hbjIpe>D^&8$p;a);4v#qB^zXkD zQ=Xjj>d~wkYJY=cOs8ZQO2~G1BjRN0suIm#wOu{v>*jzv5GcXh>fRmayJatZt7_)s z0JC!c?6-NgkRgSeLRGb6TSZA$FpeE{vtGiWwZ4yI4ba{!cZK9Xr)YXzOduLspPd5s zsS$(ru;vw{lQBo<5+O^x#O_Q~7=lWv;x4M}sT+s9HN5@<71g2dhkD>U zEXf2Vc1_y?h$D=XK^G(9@usyX6}j>-w)^M2XZti5>Q|i&9efDy^PzB*jVRFzvvRlY z7+cH}%6NstZS!QW+vqZpq=BQ%h=vKKDB7JqvVMpkTOV2WZjX$DBb9sVzw#LlGajsd z%O`?CH7u*zsZBD|HTROeAWKÐZ@YPeH3N)X(Re}mT$hut%nmpEW(h!&#|yT_ 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 literal 4587 zcmeHLX;f3!8a)XF0ZV}@iXg^Ltb!3Yw<5Tt@}RyUsfK&i?kd_s+d^ z)WSqcQb7^`Aa&$>qvHU;(ZY|o81$s*WLygXvN=bL4p;{#a9a=D=rB@{H_v%3 z%{h~N#%O}U^gfm!o)ffiMc%L~*Q(yd3eej)wdt+mmp^yZrt}oKUY7Z%dJGMs_p8bD zplc%zEvZ|FMjD700frYPmOEfFlIK_mC)m74Aak`^3LapOZktC!-mdm){0gBF{HE5R z3PP>?*)mIT6yncU2H^0CbIT##!`N$=4X|?WTha%wcz^`*Hy0{@W|Ql-!d?;ZYNmWi zLfhI_-S@|uZLAfJYh5S~2-oA5ptN{ffmSti1hnzO0%`&MyS`OG%wxWC!dW?P+zQE) zjI20b2v62E9+i53EMY;7^%#8{4LHDVSpfMHx)Ja%{P>c zoP=if{p36}9@~yUGkB5 zP-nn%k7fjjn58WAy|mubBz&z1K)Ro!sbmin-o_`1t_S{e3Pn~Lymg*h_o2buo8AXO z4{2^<|MZfE(}V9bZ$~^hNFoMIcd$?gVPYUct7M12Pv}-MNVc5gkQ`>`-S7T{6Q;#K z=wjfr*v&1PpNxY-czvWm;Li^pW>1y50fItO#(K@1(I-iL&D-;fIaD;2-nL|; zb>PX}9~ov?Zdq4eRlW|)fhP}=V}+IRHj$;APPfME!01}yNi#Dh?8y-ZdvdJ)Rt*McP&nDeDs~x%_)+i`;i*>1i8buWz;$*vhx)-_I2>o< zoQLq1h8wcIWcQb=xNL3Y+O5SyY{5@lBORS&NvARK-=Hl^*%;hRmh&GI;S;>1yVI3E zK3;Mo-3E}_38li)_hNc|Qy4X>DYj2L3q06LZEVRiux#seew}786L_&#&d}t^s>|kM zB1#06oh8bgzf5N$y(tk^IWia=Wom2)2k1NrHJvW$VDJNKm&-=C4;_I}qo&iCy=fTu z&%AuvNNT7o7+nyf&pIijT;2I^>Hu)~u4K+(>5roWUo2JT<&{h`%j4U8@)85`@}&Hl zu^vW!&S5r_`iw!#sby_tk#Rywew&kHDgwO9MOSa`^y9+`t&mN9?b2-OE`e&ieotv9 z5g{|2I<)~qKP#a|kcvB5@|%PjmW|)7pEVWCD4Kj{cOAh{p%U=n4QxAPlFtT7l-`#_ z#GvSX`!i}nZ}IKAR+JfOKg1~xvJkpDdwP<@NhC3216UK2Wq#j`cvRxX+E`vFPSA8p zLUDWBQAM;;>lZ|2&HxS5O==J2x4yLFeVzR>Q$rVtFp}dxOG|T+Z71y4bw!vcLqGgt z%Dm8=l8mlB4O#LCH(ZhWFmGKPrbJk;rj;t4p$$YYsV38&XDf@!$Dj_h-x31%&{%w_ zihZ1O8W7CABqs%cHJvx4o}bHg2Or#FV~&f=Tn;F zVw-F}juOjTFa2?BYG=+8B0-D|%y1S3^zY49lJacVqj`>jKLG-2p4iFAZESi<^jpOx zyM87%%CmBAI@&H|huMWXw0|_&#Ywaej!UdimjcwSbIO7ke%h%RZ2hryFODo9b+ZE# zd!s_~gN#G*_CB*Y9hz65qBTE(pUt>vCv2r(Qz{HRa-W+k0zNKW7*L*vCogGnqXGXa9q`>XNqK!Qj#$xd1VL zh^{2z2M~8vdyvFH;)LYK9pu#!whYQKyO}=y`XAR~-EjMxVa2vt$o= zsRnwUru8AbI&9CG9TI(>KDEIS(2KrMK!R3(;;Z1yNf#oG>F_FqHQhv^6o=^0&LxgbN&4Tb zrWbTIOO0XN`Vhc+etu+!mNn+Zi@NEP82Ua{P2SLnat2NwPK27?%X%jVb|EjpATR7%{-__071Hb5>f_y1#CbBXuezDVZOi|2H;~@L?T+KT zGQjtV zVp1EC!bX+Ww%o3FvWPOXOswdarl0SF_lpmtq9zq@1kC9*js<~~URSnrsZCUK05X$%o zA}zxu5){-8gi*5!HM*OuqD-217farNCJ@l0#8YCv$xXjOi)ehYF#KjqS|sH&ubwa4y?XBe diff --git a/test/constraint/pt_line_distance/free_in_3d.png b/test/constraint/pt_line_distance/free_in_3d.png index 8b7653016547e07cb492ca5841a9987376edeb1f..a083fb9b0aac0836adbe38c83de832e31bbbb1c0 100644 GIT binary patch literal 4385 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 r51(y?P>;>t)`pk8tv-AD`|KIQD`}ux8-`_ue z_pU7p^A^nm04QwRYQF~nD0=cMD=qn_dVfkg04gTi>^J@pd70DkTS&L-qEju6^qm21 z&u`uInvYgDH82QS=7ktL?Qd_0RyClF)7b*{y?!Z7moE!oWO-{gp@^T6QccnCdZ3-O1AgNQogcR89I%7s-PK2hdzZFjeY*q z!!uVC0!&oZW}x&*vbLz+ay%TQO~dG_iQX&(^o*&@O$ss%_kSgM`s<2*CVhuU~kZ^Ab zl{Z6iO@`P?>J=k_h70Hpi&u`#qGhE$SqbK;M_X>jn4V`W-}>goPc4p4(KpKyQm2DgRyH&NrY>kJ2Sy(tZ#^V=u=}X;lG(ehuX*V0fF1Dm zjh#*Q`|CEi6#|Ufw0sOg8?WmCt@Bf0-`^Wv`#S&C^@M@3^*#blo9i7Jwi0pe@~Qc1 zGO#;ZDvAn`=w9tP5wo>|U;ci8l!KSUiM?)2>aCncJ2!|21^r2K8kK3Hl-oHKcdL-) zFpA-a30FfL-jS17I|j>`?5|0|wcZ-j8Qh`d@S^0mb_Ek|u?Vil&@R&{VVKj$m~hsH zWbH)&<2042mRrjLv*|KFQNk~IWCGTGyQ1NgM1SzfG!HD6rw1&?TRa5rRkFmoDWROx zMkT7s-FNf=AX=wlAaTE6_Xc5FQ2C{=f}%)>f5Bz;gx5;ESxOizj?)P9hRS1PvfRTC zLFFw=*v2IcLNo>?7G>ARa#hf_D8j(-le*;O`9Eu1K23+dmzG4Xk@$^~)rcFLNkfba zQLWj+HkxplCLW4rIAR-1x`mOwR_cQC9`oZo^R@>fju;^@wnRRacHOdKQ$~GHRQ|oS|)`JCMGUq}N?MkNWFc^2QzX(P#o*`Y2`V$CKW+$+lJ%yQkG*MCr=!-<@cwV0q# zBNJ*YR}~F>vs{U7-vg<5!wl*JCl%=Y`vw~&td^MYk$B~~7mr-|JlvY~-vc`NBa+QZ zzlL_Xf9_>-EGe^h32gS8mGYltMX8`)>MPm=1FsuC8kEpvT$;T1bN~3F*?d@4=w%nL zy`p?ZSZaxcr~tEUih6VIU*BN((BW?|{J+7FZcJef!X?Ly^*)lN@AaR~7{s5992ByDqLPxdH`3j5O`vkg4z$8%w%cbh-=bAr3fPSWy zv)W{pmK2<5ADE(M$MDzNFbB1Nz88L?-1?fnNv=Gt)Y^%7^u2@M<&uhzJ zx#mf5a8E9eWv>C04JbAeXqVb!yjEAF+W?b`{%{sgYJg=w(E0Blhipm+(V-39w2H!~ zi&pzI4i4*seU`46kcgqfok8L^o!4kM3u-L+J$GJsCWBtlSFH9nC@Jt|QlBvj9LVQ= zhkn*_D{xVS_TE@9@iHcX7$i9!c5Y9^bJm@=5wzxOwc=BU*Vb2aA9oo#kG+^!!s#0+ zx5hVJEe!GMqYg!|D*^-$2tFMQ)-z5^b*&X}@=z*%$QAmqC#*e}j5XPe;cZAujtrLv zB*^Y5n%aJ*il|7hw$Qzlb!_~*Lpg~Q&pPoSw)z=CheJDv z0+;WaLWf+JX`5dnM`-UJvm0U^DIjR`*NMmsY~yKo$qj-K(!ZTHd}rcyv?<#q)JA%1v>M1L~Id4ekbYR3`8{VpMD@@{-G99@i17iwcLR zqZT`(M%z&Wn|6E$`9h=+a@{$yz=j#UYQq&pWMMwXpUaMYxPK^M@vy4zg|h<-LD*Jm zvaAlg!RrWI(p=I@ literal 4534 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 literal 4409 zcmeI0c~nzZ9>*_%D1rf$%2E(ilxk&(h@!FyXgd;wY8woMB?{UC0$eT74Fp{AUB|H$OE&yjLi_&j ztDVprRRNhgSfUL8QjY=$8paF&9x7>pgH$#QC~HEqo`k7_O)fYE5WmI*kdgnVhguSg zjLcC@CB#W_gsc6mDW{M$S-fynT=nA?nb>lePtSIT2E9unQ{Jt{DVU}f> zO-M$jBtdRD1D~l6rYnMj->g|`r8s?VLm7;GS$Sd2d~M7p(}4Y>%lrl*>6zANR=71f zoDw`8=p5xmImzuK{!X^v_!a=poVvKw*6VNzBI%%G%iEd8;Hk�dj}td|@>?eaY!^ zi(C4vs`B%MJHaQsNTG(@!EVg%Zz)p-e9&JX*sk-HMcCzp?0Mtu=$YV|rf5_u^%j3mu zX*IVi3H#BxshNr9yS7u~j0esDXFmbE9N?wt61v6$=pghpmoO#a zh7#}fIk)$8cZU)QFQ3&Jy4t;{iHS1_=}M<_M8uLlXCO;vx29Ko?T_1iqteB0X3WuF zfuUQhtN5qIeqA+V)0O|xG?t`o$~>2 zCz(RUNo!0*%3tnR2hpmUG~4K5qY)DSd-K!Jxs|PkhzkaV(Zge)1Fyt)O&U!aVlwT< z^RGTekRR+RGrh&`5|&OQKpYA;WY*5o1v8JX382c=(9dSnkO^++v3nQR0de}0wzSA) zXy%O6pQQBwVE-F005~5>YdGe&4w_Y+l|3OSQznlrc>l8D2n7YV0sj>sn?hyB$MyRF zh8|3HQ%{8Lq15_|8v|b3?p7H#E4l6FQ<-9)Y52b z)H4hr9wJ+h-i_ZN(4@ex`00lB2M5AyGi0f2OmHICP(`&Djj+#mvV5VH)HJF*w?F`g zE|oj|Q#%~Vk67E3ZPw2@cE~!|@{~ZJFinCJSAmvq=bg3c|u5f}g(!JIFD) zLEMvYxzv7tYAg-`i7M@MfVCxHr_P@yQteu3hv&N)uuL5_LEc!kopJ?Rf6;UO%XYjvDY$0&JK6yiw+KgVQ$_v6&fpP`j**IH}Dg zMf&b?=CA^!TJ&y4IomU}$Vm~LeKgN8-N;v~@|xZSq@{s^UCL)ZW5^ZEfT;SuwgNzE zE->1%R6Pdg7yNVMhX99~ryiZeM^@)@-$mA?sSflq^Gp*r$RX1TB6~UOWbbn+rv&YJ zm(RwvF&r5jfWrF~5C^vWx<`IX6H%e&WihnGLa6JP#_iuNO$oxpJ{$pD?pQJSXnzI3 z>#I1ty#SDNX^>w`D&}NMd!T+}q(F63UqkGhmbHpnVP$*I;9>?H0gh9()+AH|0R~#A z6!e~8e_=DXUy*&I3PH=>VI&zUyBx1&<5xf$WFsKDtx}_92N+3a+PAI;y}O7w^if?8 zbfyPDX77jP^lvUOj(jn{(*4dr-4yKGGSz^z}UYjP?!;!?f_{( zVSYY$H#6rkoVrv%Rj=tFzRJ`A=!m9W8Tbk3;Vu=Qd>*M7xCujXM<-T20S7B45wwr5 z!ok_Da>X2HXe+~DuW!d-lB?A);HbpEo0-O24SEac?AQYiu>t=WZT+#Yf#5YUl)Eiu zmQVPJU;he&Cv8;d__-V=Ic_d|d_gwobAPPZB-0(ae%6QLa77nGkCDNqy!_LndtUXf z2IxKEINPL5ROT_aADlJVm?=Y}IZIAbH~o~*AF$naJU{K!FAZ&RSq^wE_Uq6~C1U>h z5c@1KUKa6~FwhWXHx?;07Zwn>L{Z5tlwoniq?Q;^LkAyIZ> zJ25ljUeAb+bvx7W0=GNzQL}lzsCcG$_~ss;iKv3$`!Ryxy=_b^FUn7VjW3J|K0Y34 z;U620H6Ve!Ms3XabFaUkd`m|S3{(Nj$j^SYB(i|foaVJJiI&DcAFF2Gm&`~@o^9vE zqC*-3_i4EPv z_Ck7AkZy1WUM9FTd7yNZ<-K$0rDFXLL!N{abW~^DDuGQ=5vP`5{A2YA48u+z>&kQhw>b87yk`JUjeBA diff --git a/test/constraint/pt_on_line/normal.png b/test/constraint/pt_on_line/normal.png index 0f10f4e004d0ccee8f89497179fb5b6a986e0b8b..c0b5085e2fa34696ef4b3492d3c4090394a002ae 100644 GIT binary patch literal 4306 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 CxW2vs literal 4421 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 V8TBF+{$~V$Jv(hJ(zoM6{{m1v6;A*F diff --git a/test/constraint/symmetric_line/normal.png b/test/constraint/symmetric_line/normal.png index ce4acf87f10e1c5939b5c186483232df98a2b5fb..972da941b47e17a4c23909efb8dec67aea6324ce 100644 GIT binary patch literal 4413 zcmeHLc{tShAOFlHM?#jA(8ZQ(s2r6$l1EvgjC)kHIikcGH4K%0Nl9(4mi*SH#4zz2 zWHDc|Mbfa{BW zxb?+f`TIre#KU9dl823?S-#}ektur-E4D}nXB&oEdwP2VP&Rp>2mn$IzcL`Hg<^oH z0tJ9lv?MTygOGq<9G=t_DFoK-!y~|Xfxqb@=ciY7=wy{jntm~BxJUn#&O~0w+=GYB zj`3nU`Z?aJVhp@3bj_)gZHjm=9A$=7BsI3(L zTvZM9-#!e&fLrsuIkXD5hYO(Oxs|JB{;cG_#O`!H$+pP?o%?GDyBD=mlgeOpn*b15 zhW=cetD^{+&Im|hex_HLm;?GiZS&m9Bhx!0;+F`Q@dwJUlt7U6>1NSI*xFB~QiH?* z*r+~R%7FHpPO&OT;fJSlOH-NNWD(BXoFrlbz83 z+B;X|kBP7l9?thyfs1VRV^(oUog(POHK8l-$pNV!&Ckye=LC*7Y+(hQl>WRhzgv9T zKLja-`&5xvgTOd}PZ5rbi-BQSv}LEyJOXBRm&!=^A*Z8@+``c0CTMaeJY9sqz&=Vc z75-R1-Z#bb{Ff5Q6~zrU6qVPn#DnStC@kdRD!Wu$;I*F88pbX^bzGEW8W_FH(f4?S zJO$Lk6;#!Z+H%rglhk$7?kD=P-BEP zzZRO8L?N3CHn*)@59aysOx`FUZ|WE)<_#v5mf9^3bW~=rDy|%$#nm7j@W0@IJ+%yP zt1t~g1zdZamCWUVWd^I~01d0)=K;c2Pypb-%wOjju|Nz+!O#3Sfa<=~LshhI1P1i_l=_CQ56>X#PsOW!e8_j&BLU=8`gyh1(g?#T?FZ zLEx1_F~=A_Jv@_F!=77zL*jGNsBe9Q-}mWcTId&l;|zQ+2}n)`_!zlGV4y=tAq%f~ zOL&BSF1eP-!Iy zD3fI3+)Mn#anJ*lB407PZ?(5@=qE5&&ohy31v`&5CG~-!oq|N_$YLJ zQbctd$Xd*ik$VUbaQH6^=*$s>t2V|bd+^WEae?{5XBQ7tWt1ZdpzaH2xQW>T$hR9S z7NHFA*h;HYwd0TnxwizCo34+;2e8nsB*1CSEq77_ZRodH)OU(Bc~8m!2m zLqmKu01D--#*u}k?dbjvL?C5N3w>38Et)gcY+@v&D%DHhHHd*Vg}CgH=c7Fgc9Gd8 z5ShY*JiN=xJ*u_~fgp`NcsaQcgjk_4X z9PiP~4G#9HXbU;*lBQv!7yGKk6lkB!fa<&JI||Kt{fs*_0_-VC@7aQlah*gjS%0_;6?moW(2z2o;Jn%-PTDt<4wvGsrn>q_kPl%!oEcg%19D!JPM%TDC0 zvvpoGx%Z`$eM=GdC%xP=E`9@k4opJ-*(RoHUGPzwToawa>T53kZ3hss7s;t&_eEuK zwH%83qlx{Tzq?;TB{+3MvyCbxXsP<)HklQd1ICY(mbhp|E@5H_t?T_u&%Z@Sax1tkabG2-hishH{@7Y>! z%QFca$aa1+Wi~J|_N@3h^Y@1Bea%N`!^HfNLS4molPJrSK}W95=$*m9osBwqxuaDB z82Bh%q1h~7swnYd8)&`effZ{Ox=xSeblU@W-iZFtlsM~3^liE6V8N>m zev~?*`82F;O-FzX(3v^QzSWqExPR;2fiFa53J)O*5pSqJG|! D0MGxo literal 4486 zcmeHLdsLEX8h-)tMyAGQO}g5+n^_vAm03|zt5%wJRZ-Mv%(T3fx74CgYs~w&ZK9Q8 z+vw;hNET)(h}lGD6SgWE-f%22OYw$|CNdwUo~*TL{%FtHbLJd4hx2_e@Ao{v=l6Sl z&-=yhwcnwpxfZ3n}y^|b5>Y_eYRu-*DG zrBCf>#;;2@ZYv6I-)p$~68gz{tg}dw{S#5E$Y5TjMb=Q1Ug;>-!LTU>zAkU^*h`<- zD=t1h2(Yv>rW*-Bf;ABa&Z`&$@|s8_&@f;Ca9=?S;LEPe!Vjqsz_`P^=7IE&z z8eRBjq<_qc+l)z}rXv9EqRLzeX6X&OvfyO983giC#y8Fa;$DL(Bo;e8OG^JtXvS_D z*BgO|1Ho+?vv9PdF_{sX0Q}9QVlIq_JTmj003&whNgEu45V@+~6-5tg;n0Zn?GIgH?SYwEu;%!2{ zH}`WnD#fREF9fU=_X3n>u|9_{aA7F}a!T4P(!8&TF%uqC(MC)80#dF!z+Nj{)H?ji zKObaygrMIsrC1pzSCA`X;?441uwdGUfpvN=5jM8lnw;@c?y_@gCy^X2IEr1W zLFF~Dg~`;Cv=>P6=5Y8RtLtQ?d@(tEGMKBD^$29%jmifuug@5 zh>k>hm04ddfeRhsD2#>^D6?`SekDPGXwxaOa!TStpUmjv(;WOn9<=&+02asoaV6^g zxQK&ePYmiwe-(|ijYl+Gu5s}xXN?bV%k9g0YTcaReZjt(Me%wv>_sD+QFE|ox&+Vl zkDQW?diwQHx*f1o>RIZ9>@BqFmV+_}vs>Qxb~74V_LT2oKVsbvI49)~sS4T9r3-ty z0Cp|fI53GVktOp5$;(jJnS4RvYCQz#-9x--L>0oqtf$KUB{H6t=V$gFSH@Y_dwT7udwZM@W9uM z$v?vC0x;7yeRYUzt037j1BH3MvC-=;iT;L?Yi)E};fGVJ6HUWMk9g(F~dM(?cf$a@7iw{J+JeR2DK_Iw`^k$*bP{ za7x3gdP=+)X}M7HFsAg7rcj0Ce_u5dvaKb=y7CNx*~b$N#t$EQMdCT`sOm_vITOJnUc}xVKX@gNY{)i`a68+v2z!VQ<9qf zqG-lRCi(gMPWb**l#eP1$CR!EoXp9t0dZCRQh?CWYD8^T@jo#^CHOeoV2ozyEa&c3 zXefi23ar2R!xZ@whDoLT3B&&Z42^?Gz6%QgVlZzJr1#Aq%@6;zi)Qv@Z)g}E$c2H> zFDQ@Wi0V782!Qxet-w>$8E{T?-%+;G0t|}hio3ofBGYkL2zf)_Vo2p{G~`l;oD!N` zo9hMcy6XYQeySVH-Mh9Ts(Ba%po^zQzErYA0QCYM=eS?vqX;^sUWsfX(ZL2(Y< zz%UfAnfJUrQN7n2#_7=ZijpYoz6G+>p^=G^Y^!3brfKN&)~E!Kxu)Jkx1Gs(;x*xk zm6^~Sli**&S#l|FAsE_54B^zNg4WzF2So*b^japIJfU2mN{OwxVG^} zrAi*Q8enXs3|*i^S{8m1xd_|UMj(6ewDHjsWN(nwI;iOAqmKfOKLsgG{^FDar+df+xcVtzq~x4<-UQ_{+9 zfYfhc&7nc39z7d+#2fQ}*|U0F=lQjCZk|_k+Fy;mtlOR@7KG2&YhsSv9WJK5#)g*l z1`&z_Hi`+nTaxh7Q2&$jIf?w3jh&+dRGxG*p;eq3)GG<2vv}FuqL)&Po0xxx^)g&A z&~JNfgeIevc_k7o?2}09ywb|{5{coxfT2<=^DDNO?sZgs_o|8%J^?G)=SJL8*|6W2 z)c+r^FbojJ4oTPJV=i6TL8`h?`DoJ}b|v?OeaQKY(uvd5LDtjLJ>w1{m~aKwnwSy) z{f@*O!e5o@vTHVtq~%j%SoCsHhhX4mIKja}27oho7cnURov$sON>o_qlvm=2dWK zS?I9&x$b-7*!7}Q6Dd4uNkGE*xOw^DW?9oyZRq5^PYX-m=T1kEe}D!NaQ}?jTxanA e)tiVn=VA|EtTMO}$c5gofL&Jhmh|n!sNVq5t~JvD diff --git a/test/constraint/vertical/line.png b/test/constraint/vertical/line.png index caa33372e0e24210e01e3798ef0acfa344094f37..884b366f2439a79c20e3fe0a5078c8b9074f475d 100644 GIT binary patch literal 4313 zcmcgw2~bn#8vPTtAfg}|P${^PmVywimMEJGu7Fx75Q#!8q9TUH2!t)Up;XHQ;aU1v zRKSsn?;#Lm2?!)aX^Dyw6-kh=gt9%2fEq%Eu)TnR5)i6yrkzP9Gk5a;_xsOxzH`pK zF^3N9(Oj@%0RTXA-(EW>0N~j1FG5vzg?S>S2>`8Y`|P%VOS;ZSlfQ&oT#Dj$G*%1E#+g#`x)9ob!v!8O1thrj4g1DQP!h3>_Kv0?FMf7>w= z9+BJ~GWntWlhKLgr3<&}#|JK!XkMra?0b5yHGdc4&&tH>JNhFL3v*sFS1TL`_p0+` zmkhe^qUJiO9=j}<1_Y?7GmBM{zOe;pV;wm_k8b&}KNgJk272!@km*zAk5GU&DZ8;; z7Y5Kelbg;$orU2RhpPY!?MeJ|%=6={2SQ=y}M*Y{B?5ES!_hd2laTsSdLS?6l$1ek^$ZcCC4Yltu8)wsz`Xy|&E;t+E+~TaOOYR z=@}hmc`khJSszSdBxP`kC(_v%+Oy&AbZyJ&+l*!HBxxd9?UUm*TMPfjNnpQ_B%8nW zK782?9$@fsWE{r@>xo}3Rsx9|<%eTcTn>IjE;_Od(_*Mg9vNDz3lFe?YoJPo`HMqU zNtRjBj5hCx?`bFw|h>#3cSgVP-?l3JWc zNLB@ypVX1t?sH@|cu*#d(Zkuv_m{Z8v6JDZjNJBwCbcYrL`$$h4gENZD4Q$dQ2XPz zPiYwqw8~NA0zrf_5*<&uC~0QZq0{6 z3Ah?>6@>)xo-80GMnF?zL_QnSSOdbxT=norEW9rYr0R(NGhU6dQ#1T zPxRdBNk^>0Eu$Y@0R(&H^QU*=fkgla)Joun*i&Q ze6-Mu68!}pjuK5pQ<=M>!Vs(jF|>L%VGcM#+(y7 zZ|eAC{VG}R;THEi17MF_)>s$^CN+F>vxTA@&29N;8o~EYjsi+DUtol51Mroi56ltk zWV)K`%fA5w@yFlCMkp{PLP>IZW~!UJAiRgnfDS9Ptw9#SC2IgUF?ST57P|A9EO#E= zUJ2+wkn3AJdQi2uerAM8GtVCw&-8_so-&oxpLL)Q&SqLqu7xBl^f>@(e<2&q)=Tp6ON||31S%jK)b4I{m+-g(!$tiWCXr|79xPj zXzZotT3>W2h-tV)9fAgF5)GJb=*g#H}AutzTzUj-{uf@U+CuonWVRb^% zEvCfgXB%n5$qna(U$^pCg?DfTZr6J=#YZhUe0FdTF)#8pH;5@AH)jxDkUJ|ptvR_I zelanY2zrZbAK%VPri{Fx5No=diM5#qoMO(MeyrbMg*~ra;^i5d?l(AMe^qje;>s+n z#!)i#*#_w$^5;Okkl28)lTkr^pYP22JfU+?O>iKR8g!oL)Fkb?agt;P1a{SAO)mez zy+UT^J^p>^nMi-bs*`1FUl$4~k}bBcDtNW6K?dMJ+ZMR6aBmp*R2gpwDqHHFVcpf+ z-S%&x;b5uX;0Y=&$aV}Y^lsweBm2uz_8eT^%Sf;M1twTpt(n8I+E|dctJ#fvmQ((m zn6`cgSYgFRwlT~InbuPCd%paz7|FpfYfeb5n7lsIu`bVgAc1UX6W-GMFVZONzfVat zoBAOql9iG{I*u)D<3v@p>2;*|$L8C!`xgSzeg-a@7u8|u#lU^n{iEn+-cTA=_JEu* zI2@Ar!K03`J^D%45c(F>QHd5}Tx9jlYgwo384XM-NSP z=`qYq+96_$>Sj^N#pM0C)L3KE8e^U=M&YAN&|L^1T{d_*( z-~Y7Rb|)1@ZAAcp%C@Zzy8uAq$G;eP_#bv)Y7+oz^lc9I9!IYVn(YsDJX>_4{e*MM zdzHdmo;6{6yW1+0zc*SFc=Bw=bH}srfh*=+w0-ZiKK-_$rGc~jWnI;`qSpDAEG}0b z*gaRRRRTckEC&fN8gP_7NF}h;g@^zNbBqCG7LNvME13X1meT}wssE=#J$HM`g-s1P zBhn7v7K${8&Kr5zJM|e`N-8t2w0s?Dtt(yfPG|1Pj+R?p>^*1HK9{B)_Qw`uwJv;B z>}HvAtXL`6(@?s+<69I!bXz&uAT31*H2O5a=RS?NPId~+$RJ0Dv3-dAUG?hBh{jlcVdCrDvilWO{4{ve(C5+ z@yXo_K+#tPVHlY?&*V1v6kz~#K2>IDW^zDcUI`;w=P-W2#?utkm4)GK#ezLFV4YDg z=R-=q2@_P37YmF1=R)opdSuAdYX|=~gEhyqQ$AhX@v8xD4UGFGXkzpu)H<4_Dp3#y|$ZLmvn;(q^ zSEj4>T8Q5w1stl&B+Jd{Hy5vydFbr4@89cv4+r`)yV%QQGy>)eBLe{WfMc`CM_1`a z90L$F;?ahAqYo*+2*C(;Jm^F=;h1W@>XYvGM5Qd(I2Tody4~1E*%dx=4USQ36HYT! z18+wX^fo5sDj?WfW*|3G$+x;8u!k6v!#j9o^A5%=Oeo;=`6$j{`5!|BxB~=d#0--E zcRc91+j);OI{N*a4u8FTHAtwAH+$$m`n9JiqV4bj^~VsUcp(4!l3Zn|dLG{F&a%zj zSm$w$-*?2Ibk^p84a8~a;L~^5@R+w1!XQB3n^?B$E|)?3iVuk-(g#*UEj}@Hf*dDw zRwbF~BQ&Kf@|s5$fRp|awqIsAi6rlD*BJe;^Vr13nF4F&c(hty6G7iOxFmkQAa#y0 zMCA?Of)P9eCOAU8jOMLmLVJe=FMe$)RTvoIG4z#QIuQ}l!5hWBwvU&XFN-ZFYtSL5SLTZjN=^QMgB6P29#kiXh6 z0o-40__MX)(sc~eDIhhA)%&8upk+J&SCJ^*suK z|0z4~M*k8t(5;}xM;h2rlGLy@@bes4QD%34>v1P)Ef!#G8R z?uz<)(OMg_aU~W+-BZe1SD5@A|4K@Fdp>|Pei^pJhZ!n4#a0~8J1?q|wAh|V@^Gqi zdOg-1!G28+yH?!25nO$2j^y9kx*^1(nZK4wKhAYZ%9oJq_>ve~x=E`s(^Di=wZlnb zRk$&XGvxk@?JfKvXKk?kMk`11^YZ0W(W5RfG-H$YJkrM8tF zp->Pcggi7TNXW%ng(3n{7TJOuAPA8iLPL5%pr#JX`jlDWCbxqtrio$q|- zyEpQH?Op|0by)y_!v1~c_5h$s({G$K@=fWf_*MXvg7%y5KJ1s=*XH(phNVhG?fqIq z_3ag9>A39`H#2Mh_$qE|r4ZC#+?J56y!+9uyVCYs^hJ-pH9JJ>dji0PiOc{L02xZi zvM11T;1g>q3WP7x0+2QX3zlfI0l0@z0mOJ14RFf;p&-#F!$G6lg<9f2MhK0^#g7Nx z@TdCbUZyYY3#z=TJl%F3;=u6^=;BU{x z0q9Enf`|)ss_O}WWHA@OE{1pX$N*`V(08SQJn_eLKC&o8)7Z=aEYUsc@d}ADvvWA- zawr%8@3UU8)}r{X9z0;KoeLlxqpFQafv_F32*P)wSn(gpnKX?`doDUn-=a%Ff?!R* zJKsIL9Sx}KH5XzT6#U3*L>4&CbCtP`9W6vbyAx&sqLM9~9!a7sk?Z@Eu8DEUp`dD# z(uX4E%RC)?#x?KQjpZnyy;NC(HSaA;H0>-3z=GU)S~)H!S&9IhHiw`#E1hs^!GD%) zrtXIYhx0+VO|Ac)xiZgea~G#!Tm3}IJsHas=uH%R9N zpTP$Xh@eA%t+-9;-li#^)UvbU-q<2eNYLxBeB(s1Pl0X6Fh(W%`L6F*w>5scy?+AL zlwcJ;E8LGZn5kZ^gdPrdjlDQqbgRKRDJ#cA2X045X<|(-lfjFY#7NWt>7D?8_8I_N zB7D&p98nI3$LFc^cU6HD2X#L6SUg=~6bDVe7+i z@U~e7sP4!%4L!v8a#8^xkdtB{sK_0U4gI`=#dzp>=JJMT2% zDNmH@FE&J4PS5T^QkUCC?~Y`afaBcR(3v~*AYbEn)$#U;M`ig-hU&h3yW4{MOh*B@ zH>*3{lYNYchbTTqXQX}bib0m+0cN)=(r}miggZJI-)trAl+fNM-N=gwX?h6$zZu53fX9^^%%J7>@$9QG+Ru!P5+J>}{Q`kX zU|`?Eu`*F;GQtnvJG!{Q^Dz3(8Wto#)^@s&|L(wY(h&LFR}dZfj5KOZYt7=5i?q@- zG~xr3C}q@{G0`zhR>wTSsCc+Omu(7z(Y97(6kUk~Z;m8T?GU6_d1Bx6?Hxe_lUKrn z@<_}Ni&Q*hpUaM~XJF;+$f(rLrE9cx$Bvd&Y_+O5VZ(+_L=w`FSsk&S1%19v3BAXY zhxfo7qE+oJm)fJvL0`Uyk?X#egZI$wFGCk=vY>ScZ;RJ6p>;cv<2n|UF@0RageW+z zj<@0XniX+4#vWxSVvIE#+OyP=Sly#JlU2u^ZE=;Rt5vtKpw$RJUa_t_Xi z1DyfR_03U{S1a_{4z>QjVC2TLTfTOnX*$Aw7!|hRL2U9R7=3Qd4QQt_i5Q-S9#4Wp z4~hm}js;h(G&_uH-N=UO`>_tRblHwrIP?elGMj4L7N`rOlKkkEX(W}ouo<$(Q7EV{tFY&s695foBbR)HpYvhpRlA&*2GcOl zj3(iUL4`98f7joI$2)u{HuEKWUi_y6KgLwN=Q5G`In5dX8P87gG!0EY?D%(!u<-B# z(X=C#U0hNcO0uRRw4s&|(hLb;R=2&&C;+59O}V&t81Jxw3( z%oGLI17P^qxRv1U`z8?(5vw~hJ;3P6cfJD(jt`VNirj%LI4TkPH^YPL8UYNsO3{v( zs{rj}p;h==InY#D@Z-ut6SgyfK7fo*153p5$(v8xzIX1%q~}R+sVkDp!nXvoCM8HZ zwt5=|EM`{2gQ!{nGe*=%c?v6zbOkU?Ky(ftc6BQ+7Yg63{R!(UKiaiw97-Rur#me&OrU&_*}%WlbDim6#Heu!(j(OoitIJVp0?0MZT zFpm0(6F0#Md-Fq_G(WPK-b?4C_BM|8&?utzW}o)rV`CXsg@QL@Z6an6pVD_US&Ciz zO1s6#R6LR)u1d^rDX8XBs&n)GN1Yo2+it#a6LEdpuj}!7_k;N&-&ck-@?=m!-(7#c z+pd;|yzY`(!G?RaMoGW7*+y8~nN&_H!j?V^p9uQq29uIuc>xwA@8geAkJ+hQ7M6e8 zTOM$$w72o?KA&*o&!&9&L)_6xSFyt+s$fMOOa(R36i-bW7-uUamM%>?`PyHp#pQSiQ19;^!^mi8UN3X^NY-JM8=oo zwXHo*U2fTlEyjBaD94GplNQ~+dKzym$ZxpR?W&&`m3`2UWm508x#Zen zeL-FyZAcJWb*lH|3c=D7SEF950grv0INWh;h3|s^+83u|MAt7*rjTxiOltUxBZnT8 z3u30-6Yn;kog-T5Qs#MS@XlgjJ9D#CB=cW-U@@;XqapR)&t5!L_MjloW59k3TXU8f GHS|wwOJ;Kb literal 4879 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 literal 5046 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 q&j(Ee(Vv|w{g=Y8PP@!@!S%#rU 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 L(9|IB0L1t|h&3K6 diff --git a/test/request/line_segment/normal.png b/test/request/line_segment/normal.png index 189436b5fea5b76caada587eeb81886d1f415833..69711fa2e62145abfff49fffa5316b47018ff774 100644 GIT binary patch literal 4227 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 V8luMU$R8D8>n10=!i`Yk{{SSx$Qb|t