From bae696975e090b3e0340dc12749dfbfcdfd95ef7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 11:03:22 +0000 Subject: [PATCH 1/6] Initial plan From 878e624f480882c51e3d13a71d293cea4225840c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 11:10:30 +0000 Subject: [PATCH 2/6] Initial plan Co-authored-by: darkautism <3898040+darkautism@users.noreply.github.com> --- bin/example | Bin 0 -> 26640 bytes bin/test_p100c10 | Bin 0 -> 31312 bytes bin/test_p10c100 | Bin 0 -> 31328 bytes bin/test_p1c1 | Bin 0 -> 31144 bytes bin/test_p4c4 | Bin 0 -> 31312 bytes lfq.o | Bin 0 -> 17240 bytes liblfq.a | Bin 0 -> 18338 bytes liblfq.so.1.0.0 | Bin 0 -> 23624 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 bin/example create mode 100755 bin/test_p100c10 create mode 100755 bin/test_p10c100 create mode 100755 bin/test_p1c1 create mode 100755 bin/test_p4c4 create mode 100644 lfq.o create mode 100644 liblfq.a create mode 100755 liblfq.so.1.0.0 diff --git a/bin/example b/bin/example new file mode 100755 index 0000000000000000000000000000000000000000..46f656c46bc73b5d8db542bb121acc09d03a862d GIT binary patch literal 26640 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 W7*A|J{T%v-#7$ZDodkshl>IkDwbv~G literal 0 HcmV?d00001 diff --git a/bin/test_p100c10 b/bin/test_p100c10 new file mode 100755 index 0000000000000000000000000000000000000000..7d4c2ed11a04b241b1c8d452daa0f3a5ab457cc3 GIT binary patch literal 31312 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 LeKk%Y4rTufn_)Wb literal 0 HcmV?d00001 diff --git a/bin/test_p10c100 b/bin/test_p10c100 new file mode 100755 index 0000000000000000000000000000000000000000..18500737dd24b9d2f8a9c733edd6a4004f0e6605 GIT binary patch literal 31328 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 S91CY3)h49=Axs3rAf5 literal 0 HcmV?d00001 diff --git a/bin/test_p1c1 b/bin/test_p1c1 new file mode 100755 index 0000000000000000000000000000000000000000..bef2fd6b080bef5c0fafead0218f7c46e6fb68f7 GIT binary patch literal 31144 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 literal 0 HcmV?d00001 diff --git a/liblfq.a b/liblfq.a new file mode 100644 index 0000000000000000000000000000000000000000..29dc64633f8c30ad5d6a610d66c3e22775e57d26 GIT binary patch literal 18338 zcmbtc3w%_?xu5gQNj7W}5=l@X8=e8oOCkgkG!F@zfCv&Kh!{h%c}TK}$!?9PJPcab z7zMmqy`rGj-rDL#YabS`k0KiVm20V2Es7MVR6w+1efFxCe&5VDo3mrm*ByU3XXZcO z`}=0j*>etNmDG1Nw49fa=ZkImuA%6=k3L^P{!F5{B7rex!{2`n_1D&PRb6YaHN@JQ zn(G=m!og5oQ&%9+*4mBGRdo$*f%+it1%g+F1K|MgHwJjWF4WrS9%DbZ!)5AlR?aLe z-r&zAZlUo~y^_g$OaH$VBt=R-66ee)eZbf)aX?T>uHjUn{~p99y*6Nmrr z^yyEM#{F;Eva*_G{)Rt2n*nk$EYD%c{JkGIoC#u*v{`6C~3 ziJTb*5Wi#&EQ~aiE{sfA7+I4Kf7yU%0DJEq2ZLU=>IF{J$G+Hq@_qCl{eb{x7rcgs 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

Gs8@Zl!YnjEk7btRmy2 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 literal 0 HcmV?d00001 From 3a740e9b03913a8f3c54e78ad9dc71b157fb2829 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 11:13:03 +0000 Subject: [PATCH 3/6] Fix lock-free queue bugs and add GitHub Actions CI Co-authored-by: darkautism <3898040+darkautism@users.noreply.github.com> --- .github/workflows/ci.yml | 17 +++++++++++++++++ .gitignore | 7 +++++++ _codeql_detected_source_root | 1 + bin/example | Bin 26640 -> 0 bytes bin/test_p100c10 | Bin 31312 -> 0 bytes bin/test_p10c100 | Bin 31328 -> 0 bytes bin/test_p1c1 | Bin 31144 -> 0 bytes bin/test_p4c4 | Bin 31312 -> 0 bytes cross-platform.h | 5 ++++- lfq.c | 8 +++++--- lfq.o | Bin 17240 -> 0 bytes liblfq.a | Bin 18338 -> 0 bytes liblfq.so.1.0.0 | Bin 23624 -> 0 bytes test_multithread.c | 2 +- 14 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 120000 _codeql_detected_source_root delete mode 100755 bin/example delete mode 100755 bin/test_p100c10 delete mode 100755 bin/test_p10c100 delete mode 100755 bin/test_p1c1 delete mode 100755 bin/test_p4c4 delete mode 100644 lfq.o delete mode 100644 liblfq.a delete mode 100755 liblfq.so.1.0.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1793d31 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,17 @@ +name: CI + +on: + push: + pull_request: + +jobs: + build-and-test: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - name: Build + run: make + - name: Test + run: make test diff --git a/.gitignore b/.gitignore index ba6acd0..4bda73a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,10 @@ /Visual Stdio/.vs/lfqueue/v14 /Visual Stdio/Release /Visual Stdio/Debug + +# Build artifacts +bin/ +*.o +*.a +*.so +*.so.* diff --git a/_codeql_detected_source_root b/_codeql_detected_source_root new file mode 120000 index 0000000..945c9b4 --- /dev/null +++ b/_codeql_detected_source_root @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/bin/example b/bin/example deleted file mode 100755 index 46f656c46bc73b5d8db542bb121acc09d03a862d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26640 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 W7*A|J{T%v-#7$ZDodkshl>IkDwbv~G diff --git a/bin/test_p100c10 b/bin/test_p100c10 deleted file mode 100755 index 7d4c2ed11a04b241b1c8d452daa0f3a5ab457cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31312 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 LeKk%Y4rTufn_)Wb diff --git a/bin/test_p10c100 b/bin/test_p10c100 deleted file mode 100755 index 18500737dd24b9d2f8a9c733edd6a4004f0e6605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31328 zcmeHw33!y%z4v+7d6P*d2?-FEkO>3`OEw4)AZS7WClD1RXb@!#$z+i*iOEb^R2GBQ z+?W>8+IppeR&O``#NJ+uTN_2C_Tzf7wH8aQs8mC-8mmQHmwdnfS!O0va<}h$zUR5m z!wcs<=f9r+`Jewe@0s&1*|D^GnXYL}9R|CA5ws^=V9F)oK)Wm;D`%xF8Rw~N3bO&5 z94F}IA_G+%$MvDPBk=}ulFOvRIr8xW%~Y-|q@3i2J4zD-Mdd72z$9l;QNr5y`+{@Ll_y$5rtcK6(nqumNhkiz@0`8+)b#eYb(gpOzV(HTX_f!@<5k2%c9RV8&_Vj7 zi5#Z#2qfYW{@BIwgrno-z)PD%>D=dBpcQW{$NFLL_Y8x78+b2L{6Th|OF!9qE`0ki z_&bNe4+8H+ia)LZ;#~Si4}P`_=)jK2yPFD zI+@?!8LF$_=&x_y=x?lRX$7Laqa_$>Bn)fp2n1MQOG}8ghnhPAbq)T`Kx<>tOXt7+|o?4@GsMmbM@xT{J@GvWu##7FYUb70fOuiIk(I+0o*xf;r4zRdcbw zA<%%v7>?d z5OOs?gvPYsiea(GBrc<+C7EW@XC?gO+wVf?8tkZq!()kGXTJeVhnm;beA-Tf9LF_s z-d6Y`iFe95nJK)2k6$S8G)~A)b)1aB)BK>0{usQxJ zja_wYiNUKmjc7Y#@ceoz1#XSOi+M>9_Qc?+4t0Dh2CsZUv;#5tM8%B!dog%5*L#q%CG?}76kIPZb;9{8W^fsaxq z{LR<(p5yDWUMpnGcXMAzA3Wykdd@k_n>9FR0nme!%WzJ~E@#BwOqA1a4Gs=A?%^;k z98Ui-3ey7S^s`Zz77(X@6oqLabNc=$ObdzAd!sNdAWq*Dg=yh%x+4nHg5mUrC`=2W z)0ahIS~#3u9EEAYaC%l0riH@ki4k~k^7~l!H>PASVZ42VlP`~hFNuSf#laWE!E@u_ zf;f0e96TWo9u)_B;$S-t{t~+dvG$)G0{zJtT6_;16si;})>pIov+x1>K zI-SAhTpC3{c&y|s;TZ>#)=R7Vy>c-wywYT4Eu@ki*LU=_vYok|#k?RrhgU z&&V8$%#ICWsgtf0>DF{s3Kc`9@#LV|~7!JGmnpd^0k*XTw>(-oWv76<1YUU9rBxfAwJ~X(T0&K*^cM`wt;Y z$=;26Mf?^2sjB)3MKh^7Ci=_|NEa04)!;|))%aY0c%%7Hc~&y zpWY0jw1?m|zV0tp7oVVM=uC#Pv+J8mCqAYI%Cd9;h{uc)bbil#u`j)5g9&rE)H zI%4QVMb~p03|`XxPXEn(s2rg_$@1+gr3Qo>`@jAfDLbs4c@0h${ok|Hxw$W#*kfG} z72r@OEXA4Sy$rR|2l|KGryUr%zO~|b;W&GS6oHG_8##4i-GzXnc05` zC8e*p?+L;Uq&#|sH|6GT6e|#Lr`B};Wwo#Sv&KEXp6l~^E=q+Zvwb}mIn;pZzWUXr zH~(^biLa+J)z_PG>`Z!0Ja+YAtUenW?ORwH{_~MaFEp}sWQT|&QX>3Pnb-gIzYPvn z?E3s0VA+0G`R+f3Z;us#d&}ACo@J>p1l3OR)n7r?E`kbCZ4&(NfirqCiIe9xEm>4`?DYfpQP-jHgGzpRdqkd^;LC0PaeD8*L!{Hk#d?h zS@&_yR&itrpGVPvcR!u>sqaW7x4QS%o!~)$9;w`d0(<7P@saO`-5X00NBsx?IylIM zX%uuU^?u|uAdBA6?_@)WxaQ^}@^{`KlpZTM@e#3!z#lIxOJm}wY z$Jh0&1}OZIulv~H#%NzEezblyWXjQU-qwGBVZI(0FK>^OLqWt1^clXMW-KQbil`|T z!IJW|k2s?Ym{E~BB7!?~ndfG{C!OPz^BlF1V;1GO(mF z4~S4X3Pn_y_fzsSdays6BzjioamxH>Q*Qo8&VPMT|Hw~4IZ|1~6&$I|M7r}&w6`yLXYS&9`cA!9&Jmy zPhxn{fb@A>zmeM<4X+E@Q-b+7qr(P)>i=hD>W-KI9+>q^RnJLmauA$`}^ za|uTKi=hIHsR3WgqbcE6_`o}29usn7j#Th~?qAF2<>Tx4cqJZ8<&x{nyJCJU{^gq0 zJ)054pWS?RdzPhE9@1U1vA^&cTa zusk?9WS*)_MLa9PGq3b?mY%MKVc?`T@ilW~mCO~KKb`l$c@LcT!2c)@(ESoRS{twP z2ZGmy1L1&|?l1)!W_od}sIx7&U~(sxkLp<2(bf>I4|I6NohI+P$*tk5y>#;_(2(O@ z9cpQ9^-gZ^c7%h$mS9ssL4lO5YzuaVH=SD!0+AYO+Cp`$-u7^3vv+c9gE!C`*c1qc zI%j&@+uDa<3cPgNs};A57J+f5x4tz{7xXUTx*F<2b>7V#ZNa9T999$P40%^ptX{3k z%XsquY2%EAJJGNdq}&e%2Y-y*92gw@9r6t1A0t17ydCR_JO4a5xDW8|j|K;m05AD? zaIhS?`Io`L2arF2{3P<+v$#aSr5__NL!OIk@Ji$lV8OAI@W>xR-hfrvQRMQr5Yx6@ z#PfvtU*gH^GM0I~`o=_0 zW`!rU!sAr9ulHnD@*;jfvOc8GA#(^hTjoi&p^7PL+G3$06N2K_8F41Ut9CS6}SOyv?Za zcyBSQJb7JKwWmnmm*~j@roxlCShXeqIX60jXO^UzceV zYY}6Yz#)9qi5M7L$&wbHy zkdB8$#*$>N9z?_KAbymL6ZsektLMukI`Z7uSV>pUnbB_rI`}ph^1pmJ*hcU{zE>%q zeFl7h?zQ5eTdZ^(mvr?5EKeG$)`gjZjg6GK%A^>pmCr|E>B)~$DNnyM=uppm(Q}ym zkOnGzxhyEV`y`usrcKp9LE;r3cJFxmP#s5MtDeIHvSHY%Q*(9b2EU5Ch%ojOV|70VEf7uf_(i)oxWm+qGFF+}evRL8M;YJf0a9X%JB<+x}M z*)m;+kxh0|mk?5O?kA+~`h+sgrl0VZZY>9GifQ4=T9(qpg{?YJJXvU`nLm#789iLy z{vq%gR5teFl=@A=I@VRB$8kMQLOUR2jpIU7n@}#bN?mV)Ep3397C5}zO-u`uI)P^+ zN!^D?qo|^J%tKPv1rweGltFk;HW2o>jBO~V=+KhqxDxa^D5NdK$(1;vmCAFe?B-=Q zZVf~-U9JtlC0;@VCxJY`rlkXL5)Tq8IVA{8DoY_%2AxuxaGIV7*`4LCRObUg<9A`K zr2Q48a+bImnQH_Wb4L4Cvh?gPfk{myJ+6#2gDOoNfwOBQXY!72Y;R_xrjU3Z${{wI zmx~e?5L2d2-Yy;g0D!T)igK259e540JLO|4@e}DE@fC1orPGtw2}WKyFgQkB3vhx& zddoSEjrbOjUJnT+7~>Uk1Hc@K%#_G+Rp4~ANu-*)Ny~NdK4Gpru)8K$WZ-R}>U3fT z8Rw!O`>t%87{5y-Ix&Ns<(fwNP9%}k5h6W;f=(r7ko#RX68#sP{vpxN(h1KQGu@&S z-wrTHD3!>@7gYL;N{JxPAQfYXk9Vc(E2J@tn^;0vZYNdEX3}-Ry@c13e;4Ev9?_Fm zMz?YZQp#%D1t6`YGibH*xmo{m(^M3v_Sl>hP z&cta4*N_HcGE!!)3$3PU28TwI-mYg&Ob2s-o(lS8BqvMK$zz(fMw_K+H3`NZFUb(5 zR;M6ICsjpCl`4>#blhyDVCLg`FNDrTq_<2m&&S*cy$QzqUe1dXR~A;vRKX+3UB*>P z8MS#8DccpV?5&70J4ZegPEoZDlBi6-5$77+X<+s>l6n-*{EnpVAgWfRX{+?@C|(A3 zX8&Uh=>U2J@)(d#8f)iK{Z7?pRK>Rk4V`!Gt7LF!3nc}M~oyJpgJ6kl8 z=*gj$26h1tk%_awQ{IUaGp+(p&TSB#N`lnULebRBh@w29s3Qbp~=I14ydz{oKuoIboe-4u8>ai$nYZ>Dp8`H~(VjT7l#y^W9{&o6O}SIA5(`X-1s4n_5gGn7ZvsGNDA$hni626;)8w zQa>e)muxiuF*b>!s9d5B30C-X3Zl+z0%;pGcOWHn0-#sS4iK;%0KFIa5&>TYFo*(8 z?g@JVjD_Y=NZjgIl+`pZUA_RTVs7;;(2J0q6X&$L*(*#@R;QDhZz)x(FiP6H(0!8h zlD*5J(}(0Hd);KGo9uIwU3|V#vbrj$$!n=~R2jDx3a%jI-j_8-Ca+&hyFmL?(&$=5 z5nhbQ-zaf(G5QkPM2OQIbOSuUOH#{0P5LJZ(B&@aumpIYj7_^Yh2Qc~w|Np-DNO=& zB(t$8_a?{O5K3h8m%#6o#-`ruiM?+GnZro5;A}-DxsQS;iC&cDGmG?{TB;UCkoPR0lAvGUa+Q&oL78hoEUJt@RS$q7tq2 z+*D%I_&U#UImZF;6^xTW&*re{U&BeP^O941D5o+HX>sV}c^#)2Vwq>8I<(duM*|>j zBTD6BnKyz;h8 z6H9s>w0?&u*Nnvp$IBwa=zIe`nL-nLe=Zffz`7a9P4oI0Ze<2d(I0UC{R=3MB8^{+ z$)Z8((hfq|nWQR6>nnl(1sKShtaSj0W?Y5Bd%&DTf(K54^LZ4s4^n=BqRoJ||ANv4 z!WwRX6HN3cl0jp?7=?VK;v4`*9!`q^l_O<;A#G?v4KzUb)n`@?AVo1$LG3AM1G+sI z4EhY5s-a{#61?~>PO~XowS(MM8jU8CJaaIQJY$ka4i=NMN8Sk1kH%96jl6`4Q>p0f zMe$#BH@WKsSHY5Kk#~nhG6&=y#xj)Y(DwaruyfDfkwf~gf*CbPIdsLnBcFO}H^3W^ zl0O0Kof#CK-vjsnp=j>Bo15@Bz@H$wekQB97Yd$+1fNN0vEgG0Cnb$Sh$ZFWw1u1H zm0Jq5_@hJHcMsMX+^j9xWY&w&{0vgbH$ZiRmJ!<2&bD!5{sjDKq&ejNE2SoOfYjV* z>Nfz18H0Te4*fa+>7*HH)TaRIBs-=$ek{zq1AKNGE=9JD)9CRy#WNXMK+c4UiAWf4 zN1_Rf$1JH{?4-#`dBGudqELkj~Nlv#3 zJEi-!aW`e=!HhzQ(o|s@nS|rE%b`$T1(t83@C^c%0-%-ReFV%0a1e!ukeKVun0h;b ziPVdWK*DE|NYy4xiLoI;Rmu%YqMu%y?2DmqKyEGNkR>>@eIG#ST>i^oQz4bLHOcgQ zHRvMt7l3#cDWjdWrBi(U7Qm}Wj8A__^joS{1d3FA6c{?ReKg8=pwv#FK=}|-r;&2% z5PG#!E5I`v7s@oGWD51QJY-4$77>c3lB+rDB7l`h~3#B{Wn`bQBH z-jPH;s!~H}QVq?FeAcMp!-vlrHF@L>Hj&l=%c)4?g)=SZOk>^c zuh9f%tcOV2Em1_;Jx~lHsY`oA;ORoeCQ*x-Tu9LJoDOZ@A}oCLy&!d=Up6D@-v;nF z3J)WdejmVml58XHJliI!P5cuGV-WpaFuskn;70(~%NnvC2e6G;or^X=2*C6pp z^B@ZUgv8DHp%j`VWZ1&YC;#4@cqVSnAE4p{lAI@Bl8SUyh|H5VSwZvUEc8|p5}zl_ zP*{M(=Sg~sdY={V3M9YBz zIk&aTR%-inS`gHr%1e;=UQj0rn~?Yd;Z788BY+kN^hU&!1kl>x7z!^TWnVOOZ9rB+ zyH>^Y%M{uCqOQISQlbPbIN-xC?1UC_J?e#HIhZ(Sh8P0+njdW4< zo>4IZm|5p=^HS&WEG)#hkx-B-BDyo@Pa z#Yj!7;;k5!1Go?tjfPTK;1U*)jhPW0YeowVIXbBrgHH#@W|OI7=fa0r9H(oB$L;3s z$Z?2oJU5eT%$Z%4eyipttyy#xn-KAxH9yA_bzXL~DLE-s>7>^iMZq(&M{=Y*cUTVh zzBfmsN+(9yb6jNJqyl(?oKT**jdxIPnl{;!?l!W=Wv>~Xrlq2TC!^b8+7#K(h?l9O zqpjh7%Nwo9#&K|3GTcVZnJ$`*#)&{68)l5us7X|uS-|3h1k2Z$*28uYHw8nHU)3bO zFrvXyVTN%TVdn7?+q_~pz!A0x2hJLT5D`7wjUibQtAq^px=Xl+=D4NHs0DLlqrgpJ zggt@?jz^comXf7qV}c$L9hi)xh`6y98CpinAi)#u+s^)^julqvJ?Mnn#R0tW;w(Nm^tpCs1)Ngek{h!JlycM7|HYgUWpj6rQ&KbKh`8%ugM_V zs$WPQcat_oT(`<15U$FxlOx7xJ}#LS?m2eQc-6GeJjs+n1w%q1+k~xb4pJ@BE+k#c z)>Cj{RL9p)(7uV2{#_~^pcCyeYd^(_J%?nxM5o{2r2T z&C=}^>FMd#7^a(=W@XzREBPubd%86Z2;Dv^2+J+wc55uSQx8~)3$3x8mSHbSw^D(z zNwC&3?G<)`sauK0)R3uJrm^-3K$>k#F0+gbE78_C+BUA#y1IZL6Y^Sa+X#9s-SB8n zcG-5J45YCDf)@|I7LycPcO;(m&t!zg*#Y!r+vg)m*b(U+dl{6ELs!q3z zbjt-M!~TtBBRB1}95(H5tVPw@a$x=!6)abol}@c#ZdvwzyB5+9+$`+j)(Be`#56;< z)6s}i5eMfq@X(9*eB2o%Qo6IJrTWXCBg0LCX(?QBd@QslGZqlC^&`b z=`W^dbXg-r7a01~3{1?rX$(jd;qB#gcHj@&NW5vcU~saOkZ!o0g56fCRIx~u>?(2vC$uS0X1oDi7q=1i+%nKWZo0hWxK_6U9` z(14*G{(pbK&|slK!v~B@j42veE*e>UaL~Bmw+xN3!0A>A-As@RY-1`c6A@#P7oV_7 z0#?#&t7IMwybGNP>+BUgUhFa}i&&OhqeV7~GTXSS)*8o4n#D28t?2;K!yy6VbqDH5 z=(&<2k^;@h)2tEXUptJmmhSa}YHZtMr2s4->19^ZCA?-1t+u?R1OmU0lPj~z5L0MD znVn`OfB!V?%@g*O`8uryzvaQ_&xAFPXvX+a= zYQ;1~gJkWC+<&8&TYSvy+$6i3b3ite98oL$!DVk3ef;o__)d17AXYgK z{Tfp-CUOehhj!c)joqKa>LwMtqCUhfE)8zuIf%?gS2|@dg1T@v`eh=rE23u=t~v&K zvOU&HH@3j<_63>LW)zIX{*~Zu>2=+tfyBTz8p>V{dm(Q<; z-PKIv(836$DMip$@Qa<>_ETL54dEEnIjVq9D!TooJuWBP?3MJIr=QSX05O z+f`D85aDtp}w`Qvssbxc}5WG8)IN<@pX~!Lh_G9(i?UDU|AonF zpO&m+_&Q^gm!HTh@B_K7fq#Xvz75X}Ms&(=P1ZFupdS9YO5zTQPgRD4oh?nlK!dlw zxsE<58T9kdSVomc7^s%k#wI^k&bjEVzep|oTbKAiCjUew@2ogU^e}E|wRCb(yp)KK zN`|3xZV62B`x`fr_Q=bR?Ba@A-^$fhS1tuD?xUN;7Hn$>C|5K@Y^V!`I-m`$Lu26! z^&L*C03Xk6!gn?68Uvz*_^M_zYin)rhv-9|)M$K8lfL)*UkaB0uaOcAZ1y+fyP}ML z_>&KdO?6w)A^e?AzlaRp6i%bYadtmK13iV?gB@F$e{owIeYiC4qoFN9+*rnUNCQEk zpdDPo%k|?^2eh0Sf7 z0)_N$YM`TVb6dy8LUbv;@~U!H81C#SYzfx4h8qHf7@PjNCGrEn7?On>TJSAa&Vo;! z7BM zPxS34eB=Q>`v5)h18*@$J%^WMA6UY1vSwtq`qgi;G;NKUc7t}gdBcq+HtF}9H$J5S zdP;j*<1p<+$iv<(pL#O!G~yaFc?B&YA6x(GNiJ8S;dn`!F?d6FA`fM0mjmUf z=dHk|9-=}o$QZNLGgBt>qEX)c)Qyx^I~d^~ffkRMjMLkigl(6mU1i>+eG3_PeGF+mT)`<6 zB93|<3$1GQiW+$+sK=p3!4RD}3PcpF=TXpt+r;z}I{q+EI=3glsM{0nPC!L>CmbN? zK*HA&0evlTZ=&evy@`(k!ANVq)_*4_>x8UhcY*UeKx&4Gk}AVJBF&Q)WYI6ii$ zZ$Ear6SP%kcS3Ih9%9~a_9no9RjBfxDf>QEw2E74K9=x#f>r}%-%r%&*(OwTj8Llt z3S64`VZs*)@R`A27FEsJIO_q|V=gr1G1qG@SoE6fgiAE#gzFt3V)-6+p_YeTzjdKk ze=GQE_M4nf^s4zY*DEgc;R)9p$jFYD2qDZAm6`u$qOyN8kJ_m0sQtPvDtq0&Lse$} z#(cs;4X@j`p(0+t`CIcr3u3R^gEqfY2F<@UAF-f1h_Ho;Ac2Z#R zGO86_|A;NycU-hjU_Ukn4YF*|=ry@hAoi)TnY0ECnxM9bBbC-4( z4S!DO)tDvA$gRtkMf=WNRx_ltYu3hf_1g7OX09Z9G7o5{V1ju{dzTvcu6Bl?GunHy zo$qP)=)m8j@24)>uOHC4KcWg4G`xem&gMH1)!Q8@iwd>l zY2+|2ECcsx?Kur?5g-NbbJ~jp;g3D+&deS-KAi(?}tI5_<&qtdq$xIo=EcE~{F7aksCbJGlE&>An zBCzf6rhoF;$ouqfKwXY`+VUPsR0S``1x?NB^U4eu$yLQ_d;J{3E7tJ`M9pn3?~Ksnz@zCSTsz;Z79KCi`$Oo{lFb zXe6@Ru*Rdq%g?xHj{IEwQ-;A81Fz$m(LNH4IcB3w_<=b5GKp93Jt`3zSQ;D4Qp*K~ z?53j`Ny7%PdXJGKar!zE>2H^d4~4%61&xi2e0N{rpFrVU?dk)b^r$^%^`Ol!BtHHL zmErvG3ivgafyo4gxZ_;)z6BnQjb`!h0iNNq>5;#CqEvm!`7kyqfAotuHDI8oEp(^BjPj+a18_I2P>(cYr+7$k~IrJg-LwewBRf}(SC(BFD#@z-^9)NRGbz-ZH^v7>HNz~2zwvPr__ zRQoSowrus%8h=g2;_9XT*!>>9zeGDhRQ#zK+O^}GvhiC_5vKp> zkI+Q6IHUV}_@g{S#LuxmN%e}YWq*KgpmOh`)kAj`BWg-$`!KSl9J5Is;UGIntNc!z z{5w2D$mn?N)r!BDgQ|x9@f?3cXPdvdF4)i-z)O&qf~x@=|s2}p@f>cekn;j8H45;nw2u?&z?4LIpLShA-TQ^~&9eJoju~^1t=CYwE?6;XP}-HglPA^fW|Sn+j!g+1e)c@ZEk=z z1qmHu2nz{SMpbp2TA)mbqnlX)<_`K0A8>&U;U;j_1)DI@NU$Z?*rv*L8#Z(VzM>%f z^|XL0!-J|wXv9twZmXwF{fNSjV3UA{PLBU|h`yVFsTONManO8EhswtbFmfi|*kcj^ zJir@~FO~8tFN$SGS*?2%dM*mF^376S02I3UVXnq{om$-wt{DHi&}N_d!&yez(TkPd3ugi$p$E^5w*cL*;!O z!e*k(#6$)_qgnIBVvGFNgce>_fJtq)bcihk(E97;~1 zeuhG9`_=COl_x7knaBI@c`2{@pLr#t%s-c)%2fX;_+L?=`j!0WUO`d$ZUIKl@%5ho zC02fCj$l>!txB=f5MMt%eMnC(%3&M%-K_o|W<0-wRsJDlQ)1-R@APZ(fyANs1Qdl8 z{tFN&c2)iA_pti=rUTSC9CBDi^r?RQA!x*+lK*9^qE65WILY!o@YsTO<0*H6=Q S91CY3)h49=Axs3rAf5 diff --git a/bin/test_p1c1 b/bin/test_p1c1 deleted file mode 100755 index bef2fd6b080bef5c0fafead0218f7c46e6fb68f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31144 zcmeHw33!y%x&QgrnPiel!UPi5Odv>DGD#pn*fb%46Tk%$FbFaY$z;)F5|fF53yT43 z8l#|A+e!ty+-j>=wASldqoB0C{4KUtQEG*1H58Xv*VZNf-+Pvs$w+!{?{lC3^ZcKO z1Lr&EUC(>o^PcmaIrGhzt&5j0(KU^!WU#XtL0*r*lt@Bfi>#n1VZ|&N*GcRwW&<`k zPS8t40jfwx^}(f6;tiA}mr0e=lw$;%sZv=;CCLqyiW3Ayl`K`jBxg}o!tvz`iGoj+ ziXLgtE9fk~RK}<>rakgaRi2QmS}?eLB+f6YJwlUQgOqEKa;oengOF6I{7KDIE|&g` zFAGQrNtN+(4N@+?TqMMpDya=h6@LlW{!iMwP|AJbr5}Y7BL3%G*>tD{oejuf4@Lotr>*d66lm&OLt> zgPLB#NjEZmn}C%*qNPhZ@wct=-u2?gZ=IF(n|F7v{ONx_wCv}feT#U=ZjvD$N~BMk z$YH7vLna>KkL?^!I7%-BpKlhm(_eFdR=lws>xaPKF$De%;JwK4iR?O^ezNs+_|_rt zw+?|H0N#rnpDqI8bow)f!25^5`-Z?z9s=)1hrOW1r+Gk}&Ytce@K*yrK3)mItsUWZ z76`P5t7|R`)HGZcsH<*l0;098F%+&N46ADk23c@ZW0e2}uJ3g7vhFG)oL*4cSB%HH+h@PBfZ38mRZ8 zRO>@{WFzhv7JFFY(i++x+Dm@V(`?4O5cgWD_;<8UkqN}lDWv;F?g3!f^vTh zJ}CzONDLkW8cDq|cy|QL*so&nDmI9GBnF=r!+)lF#sgOB-cu6uGf_}lU zUoy<(40*pG22i@6$RSGK`9KpudI~@3JBL8D_bJ*#S>AQ9Zwz9=-<`Y@g6DM|_jeEP zM6I;zX@Aem6UmG{MWI#L+xP5Oq-b~@h=|;asF?Fi_#A)Ff{|{tvs#eP735+;PWg6k z%EP_>?pt|hYyDHxdG9+i{5`?`wWaGWIRNqJlOdh~@l#Lrc~MY&7rtBG^}>38*Pr3M z{tGJ?7xotZ8mxDLJTUy0X^eeT=S#`j0n1=U&w@vR@%LB{QZeVV@NgJ-1=TUN5(bW^ zWNjn91F{5v7w4aOEftf$@^|(7pMLKg|I?ote(gE`3txrPpjS)-Hi;q2R z*GA-?nLotjJde!z8nRqd+cv;?K^LfnU08=!+~F0*n3IoItsFN!1q0f#-1WG`*J~4`U-m=BV2#V z0~dKyc6Om!ihz4_RoBNA{;tpKcKN%n%I!Wk6?V_?cc1H|4ovaaR21+0-IgMMcUh{x zC;iANPfR>^_Bv^5WccS5cl_;8nHL(_TCzjL5h)RVDa-8}_{YFN>Gm(a4VEppmF#%8 zV|T0o+*`sbx|gKF5Hvf%Uvm*Py8tRgvq|v3pSO1;Jjp+=pyO{8%!igxv@riS%L@Em ztxnAI!cW$oOy?n2g1M~vTjA|ELd+l_tUm2)gE6vstRP*luRVEO&d1VKrIoAvHShg0 z6MD%l+>I2jeLWC@Pf~VJA2^-UXk{UNcI+ltby{~{w33|@^`Yjmd?{@I|mPkDuLfk-~;qPw1?R}nznnDpQDK~z|8D+qX zh{U@bzmy%nCpu#0J%1Oxac;~QZgTSR=v%?(|5R!L#@+@Ol|TlTl;r{uElUlIX6;<&-(kr0o12=fA3;Z|7&A94af|3J#U!#whC81Q$`MYxc->kq0EyT(sSGT_XpURPc zFFK~QURC&OURvH`{y}uw;qSg6b!nHW_4_-Ma^TL{{yEQeyzTEkAG7_}VISsHzdz-H zl#Unq#5-gj5pp9BmGS`YTZ84q-*t2?pRdG&rCf5IdRwfIg}+->(Y+Bt{Q1sLwv6?6 zFU$1zOrt5o{MyNGjdub;IOnCUZmZEJ zOJ936;VYvBV4UWyX$n?{ybHLl+Ujt%cVk;is6IQJRR-I`-U~}BDpY+5?;ap+v@vfR zx|V{R^ZvlVLnzJufq_4wOh@?<$~RHAVxO4vw}F8@g#U10APMk`C`(Y@`VsIbi#{G0 zIEwNil%Jv8@yWnI5nTHaN@=3Rz4~Q|?#xnmYN^{<>blCE zS;njQFv)t6Z-5M)AFw6v)Eo43-I>=Ji`?E$Q}2cpSQnBM$h52LM{Yvfqr(gP=Rg!MlbDdGfbuSYZLHD_?dTtywbKtqd!f#cOt;85@ zgB}LUJ9T|YqT5;Sy3Fk)-J3vv2z0P>yLwKA~=HlKruqGvIKSEhjQ}u za<_MVjH^Xoau6p+!P_c%(U;Ze%VP2=^<@$0xrnnDh|b5LEYfz1(6*R{Ko3RCIG1G4 zq%$5kD?XeS^8TSY zj>1<19PXDL!^xncb4h%RT({a0Z^>EXbSH!NKWU zrWg4NiY7}mn-2*w>|#(-<(Sh)D@w=Z^K$&7oy_bvhFCnW&`A!^M#}u8HcisP5u*HhL9AG98W$z$Knf1ZM(yfKB!Qa3=02 zRB}oPm{gWRstmfM)Z;QG5whD#9I4Lt0gc&?xsvvG)Jj<5Mih==T+BJ#eUm>&Tc#hWN$>6e4o zAiGmOq8h)D{$W>uYpjQ!yiPE3OMpQdb}7Jd66r1BI5zA%KziLIlwgce$PECqB{EYY zN0)=ssZAi&+)Y}JgO3Swsg?-xR8ldL`1nvd zt{{zLxrs%D<#tljY#QAcT#I-+dAC76;eI{2A|mPgKFmn?NKdXK6qj(!C1vBCq?txM zMwuf8xWpo^?E6YUr^p}6^538irD?;+=5aLTlYXdOhkCDKWDXzNcVu%jk3}@|9*kQH z&V+ruJ0B2f3Sd^S6&LMdE)c(%XnU4mB`>TAZ(`coG#U+kBb(mHv~@g`sN1wWWUWV= z>xtFac(;~S0lt8M_G?}`tJ%Vb`4X^RgzTj?X)D)o6>1xiM`Sw~yIVdot`c z!E~T^1G)*>`M9K$!!&J`HeJ&y6O3J6(2z8(O1~PVhg3bURH+JI#X#L@xUukYz4rk8 z39|E5$vg{7AM_>|?|Fgdi7QK{)elKi6}Ny{r?FNkqtiTEL7XEcb41yny^@>RBV|Jr zRGT1)#`JbvE44yq&y~c(@Z~*%Xtdw05w$?mRwNil>?$VC%+rFRbyW7&kgP^di5&v=2>_Uyt9 z)w~a+R{;JNIpI+NDNto0CmaN@7!|s~B>WZt&6;N9nXdqtDGj&)a+Lm#Ruf(YfzGgR zM4m;?XqH@jN^1Eg5AwaB((>aBOX}dsZH zi_CVBxqSXUsf1}=n7y5PO!N0SupcB74xZM80SU{&3{BrXazv`Lb{zMTm@huD#Zls0MLj^kbs*2>_BB3GPk-`ZMtbyT0I+E zVs7;w(7%W5yiC#uJFdYiOi@;Q$jmmSN>xTkd*``cBfVtrL(uskvWx6>k)1BG&qa3e z)kewcs-l*z#n!KtaR;E_X)acD)x9rs*^UlqbZcqE<>$E?D2+iDd#Z0#cKs#Z1K|5 zI#3royy2Y1J4|fwNH!OB+Tc-LZ16JeQnXb(n(yzp`VuznZ8C%`cGrQ?$uDFh-=~<^ zr}O~r;r;M^7k1eblfO%hq$>X)5athcH<9U?9*++deql+kf!60FO27OV{Q~Ngv^}q5 zBvWW%@5`a;yT~VyU9_&B;#Q{968%2+UltUNMjo>ei^WG$m$n~@P9>E?O1}_zib5aq z*tGzNW~@VHH84w&;ej{7`7A2h`zb#~)uvsZ{V{6e2y3_iUXQ#3*`Qdu1NnC3!fe9i z;&LxCE%8}BqevrT^=N@62*3MGrzKWV3{_DF3R=Hz&jN!!6_eM-UIj+a`LCR+?r0|Im|?OASdsG$alF3 z698r-J1&q-+zACwLV~X(v_ zXr78(^leaGprwbKTiKP|n2Ug~K%PnN|Etu*_K})vO#NygF9o#@S-%{>HK=Sx9`PA~ z4?*?Sdx5H30UY>~PszOT=rNw^&lYRm$ zZ=iC5fR_Ngi^?fv;~fC>p!LVd%yEuXb3L$M03)JFF1HD((tTHQH)ZC+jHjf4rYe(p ztFUb~yri!Hi-yVobm@x$Bm*G->2m;#LS+Opb6g(NZaXlMc5xF(=$1rkHsRq|KsCw@ zN}|tQ&GvcFw@tb=TNV^E(EhptIlCI6S2d{=Jlg?Yg`7;GzJ`a)odCZ_ zs9yke2}eBu@IK@*jdV4#WiHOcQfU)Em!gm}%=PlMr>QQ)=FX-8VyVA} zmfU9*LoR1Xy9ZKQ?i511TG`aGd_kh!WRXVN^OA&iOVe+Gcxpc`=`;;_Bk5x!jieV* zBg1KR$>6IC8&3;uB8k)ZaQ?(m5&pzN;-@BDvWeLz!LQHJXaO_U(~w>lMWo#U#UPTp zwEG2~Zd7an^;m5rXnRgc+p_>0AN^*K-o*%?pdtT0fC(6+4CLZ_0L&rD7UIseZKB%5 zKaMa4(N}=+Jmk3#0(ehuj>bL;;7Ve743!|rmmu?n>7Znp0xG5aylF5ZZefaN;tNw3 zRBT1YTuqbVCe{mBOe0<(k=uv`N!wF}Jr!RXk3#G>$b8Wp1>RI-Zq7U@G(pI)d6|!Y z-JEzPZq5Zzu^3sdlk24-T~#9Mq)k@PI=Kh=d&qp9{5Mp7gv{5;{iysqGMjg`R6}0R zfgt9C@k4A`>9a3$+$pKl?*$QRC7ZuLMr@D>TR_`^ZE}5WmA%yV=(HjDB^r4InI8nb zhRVyxe1q^6DxVNQ8-&S-vWduiZ!i~?V&trsrB1mwASu016D_{{boO81^(nZa?N5lwVWu3{*OP$S&v{-G} z1whsvkv(Umj{bPYYK5Ma+9L~HICOGUWov6(7rDs1^s~5%;ZTA09HKq4XhcL}Rfgct z)=3}(ZwZi{B*QXi!DE=?npV!eFe)4R@*zLkqZw|Oi@PJ+Ns?o@nY@kc8ReeqH5aur zmTp|*BEGZcWV@rz%Zhd-JEh!1EqS9Tct(y$wv^`%%jVwqW^2^w_$Yg}gAAVFgD1!d zC7D<90m@0!Cb~T?BWrZls*E%(6$3mG!w%EVlH-hcnUoRj4fk7ah9*15!O6+!Hg#u; z=r%eh0)cFpI$WbJQFWS+#Rmzt@G-rI?ILb`gOT6VBtAc)!BSy{#UsMZ<0ZCxg>ZmV z*diP_eGo!K^b8lKWKpaVGT7@X;vSmmk}jhj%!-W*7ljed2qHKhT@qVNmd+m;a*KGu zVjM-p&9%tXGGZnPrre-85IgN?He$*}XP+}NQxnu25|b?3h{iN#*&vNcvd3bcQI}&q zM{_Vbk7T5|#mq|?WSgX=`Vb^y;$_>DM#>0G8$4l#iJ2B-l}D^K>4S`uDu)lULC#9< zcqE;;|*B=Rcc`)J;Ac2d{mxvr^2{__-Lf@^HhasL46? zG?R0hSOABZgQuCT`H^W7nSkWr0&*Js#e<&^g^4^yr$?L_J2z%Tl*pTfms?syo+aU# z5hCSi|52Bjek=Fz}itBn-*t@#lMcjef{5p#4H z?w=OEaBQRbs%f9Qlc|6ThKx#<30v7rZ3Y&=hwmvPblLbZ44@(C`?%3=w+I)XLM(rnGr?PVU1#~R6WQ`4+0+ifMUv$CdG zlY!9f!-BBXGIm>|z@56!N}OknYPSq~fyYV(#wNik%e0r-K2x_6jY(lsvrJ>nV}LZ< zm^j}u(yc^W<7nHsSnKQreq`8dxojikwRFR+J>F^8ap9~g2Ttgvq5+c>nS zd9Jm_+RK&gsHa#-h1S>_D`~CexY%(pz$i=~!j@3pHS{iB`29&U}WWo}G2blZb2c$WI83pHNLG7>d1*hoQhyt9v? z8_R~;oK%Mgf`hDVc=~TF<56W<3VB1x5g67QY%9gBdD;Abye1AUehd& zS!zuIh+zy17(ZwL8zzi>F@+sPlaZ@g!^ppO2djl-ga+j3?&_~istfcdK%N(k( zyrcvIe~OcvZ_P*Gpa=8qG%F$7nm^C77KnCjsz;T!_6r0?)SV9nB`NmmG z70S3cOcWo`NycQ&N?!#HyLr4_B;t(=@}bdlhKcaRprrABF0hhNrgaMS+j-B4lCj20 zT51hnV7ZoBDWt$pBu~1P0HT&(#YeHDibo5#tZJ!MWE<`}u63D*M?bmIi6zEPwVVa; zUOl?wv7F_6w4JGN)B5?=1p6Z)gIb!ExXhYRPUFf0Zke!bat6Ycvfb|xuHHGfITd$4A?yq2Vy^3AY9%2{kzsooXkr^0D=X@AJ zLpTHDG9JZ6(W?qq9TPp-9%XrqP4K&Yb|&>16(ez}46ySDMN9+T_%so07{%GPG3qgb z1CaSiI^91g9C3f;>#JdRHqbn@Fav2x5wvCej^?rh)D}WRI0kKw@bN`Ow;#8h5TccR zI4`eU%YA@xszO8oLvvDVz1XkTHmm(x*FQw~J>V_#xOKWyW_4P&+VF&TcP#((No8{|KA3(%Jw?F}t$ zVJ|)N)sEL32Eyv)h&50xf9=M=hxa44a@ocZ-n7VHmWY>hddud_kq^Xq^P0mQq2Pl0 zU?|wuSOc)St)^jtcyp*Xub%(EV1_rZJzTq>KGXrhyt?Z4&7qnG{8X)_qdl)9w6QT% zn-`{6AGU+YU;3B_Bf`O&a7!Bm={Ic=LQPY3dxIk51&kon)WyKmKwo|``SQqWhW9Vld-;XD0zZ)JYWaI6Yg+JRU__^Un`CuuE!yEP zq$KXJco}6!sJ*d16s+~uG*r_|BSQiHqROc92m`g!R97G1$~hPPt}oIGf14#|EG}>3T_NE;LV|ozuJ>ei{|Q07!dxe&47pu-W5)x&T;ktLIWd(?*Q92v%tcZ z7J4;l+-pG_L-_U>ZyF7Tgo0LZ2`|eRiQ*eJ?sOiUM2(%ItU1`+j;|PlAx>!wAzZ_9 zkkE9XxdV%Uu+LY+@*7&3gZcF9(_mZv#+J6r@-d|JqgGY2{Eqgv{KimCQ%7wuA9FJ> zt4O}$7gI8SLnGd{%31I-)BO6Hny<4I&QRimbYVi(HnvRnHBhBCSci&?k?`i$V7tI0 zDDx;XLjYk|lt+-!rsQjxo>v>JX(FfwFJ$Fd%&&S>=JRzguQ7BsS5ZSV8I(XBRwvN+n^~{{f+@QLLX>0Hi+o`ag#K_}udkG(T z8qVHF576Ml1aqo~+LG*jr5q<4Mq#TD(I!jNR+(v6YpczxuQ74vz1O_v2@TK_+LIcG z>4UvYcDj7X#AL~kO5Oy%O`C<(=0`~C5$#ba1<##Eiky&~js7es!=78Ja9^m$o6xHU zuV|5nf_l1W1PsxcQ-O$rwLA(M@x7P|>ZqakLgTn|cLI#so$%cRH1yqseFW`GxG@pX zjfpoWih;g4@c|&XY37#+yAxsUZV=HC`nU=;ZwfX0623)(k{yF9J;*sea?;p-h!cTWCI<@I``F31#;rYLxNumfFr*zt-37QNy)<`7*u=6DN;SibulXyrb~s}79ntAej`ugUqu zsG3hXUUXm#k2zjP0a5dLLI^WSley3Qt%=5dYaX`I*kSuMTQv5XeT!<$eA#@=LJP0i zH=rTjzWJ*8V+&%h*#kEJ;t85wHSf2ef^%^zr3cLu=BFn4?^FCsXl3oG_LvzH3B*SY z1x|oJcUV0Zo{c1WF*pd-W8G{;MKE6G%@#ErsZm4bU4)|nHSf2N+BnLgz~Xf@OXEy{ z?B7w*KY{(o7%<4P0i(y{PJ!5G#tvHFt~Ym~;GLz5xleygM~5HNj~VFXG2?_G{B**2 z2MEart_O4s$piWy4LIzNpn_&&_5*9hlIL>jNWei*iapy zy66B$M_Lh$nQR>F8CM5u>Mj+wT#ALM!n|F(Lr(8IH0-nKYr$wDsY-KPJ*=xIDTK?V zn7gaZ?+7WtTnbSOznM8fv~lS+u7&)Fb;TSP#2mVG6E2&!YsS@E_nOM(Xlg^R1O;K$~AFAy=HxsIchJjnftUiVS@Rl_BM6!ZS536r?huuKi|>r(1E{0 z-%CTZSKp^|f5d2khPUt~uK5;3^;V~nMQ`8HdT7LYgpe32)r+6urb7LA5+#i5kb(Q8 zc2GlK1V~YOQ2Vup-Vj0s?yt4yV?-!ipVv;nf=G>q#e9u$D#*-!$8%2D|D5x%Q;g?f z=W!rpH$dLzgr(b@;93E$WaoVtD6B}rcBbaq>WYKqJ#&M@+ubNcc_Xn@;nuSi<=-%oky1{v1oI`5i32ytAjf@HK&bFc43}!v{1A*$w#K zfRdMA@%1xG^ECWt4S_ENUdQ8?7m{F1nt?jux5eR?NPKS`o;Ft+e*KqPf(jDZO{oD{ zV}>g#K%AEF_a%( z1iuDjzEBT%09NUA?fw}=jb*U--_xDqLY~Oq4^cY4;{2JB-z6%1Ivh2O{2ce>MGnU+ zu4qX=f|Ai2MWVJ+>QN`E>iMv>L-5m&;k<)12%r=@4KIT+C4-5#fy>!1cNb5} z6FxT%|8L+wot^YFJnt{Q)})jz3ica`kAD#IMc`9mkBTeF&W;hkp2pPgQWgFL*Q20l z`33M~XJ(1OiA^!~u;}mU?DTSc>erqZoi+sjIlz;hOzKxHF9+VMfS7VE@M-!;<}8Up zqS`=svdAm&%Fd0zli$=*^`sQLn&Tx9Q``i6D*9Vc5`#o_vDD+0^OxoWrCTLF{>kKh zz?0v`lyElrVS=$AOMbPMLqWV;t=@vhQK?p z4xVlt>F+p^pX2Sx0p1(ipsb%ggr3zy;4cGy{Au*8LjQ*8N#u;dsiLMWTbAD(&3LI69gWnrRW}C%wH?jPI3~dy;BTQUT62EsdF5r$hohyyVt+tT{fkzzz`4sWSXjC|aKVx# z6^knam8A=pFAl_>s_;`BI&Udaf2xK5C6@R<2NR*Y!*-2XE`_AOwvl&Fj zz~e+z{M{KeHTaLv1Zvw`0u9xn+NL1>BFzQhs>Lxh&QWoEMkk@-kLwK97Yq$LcoxT` z{CpM%+3oGJC4QKY|QDRfdA!BaQs#cYERfdKx#j*1}q!#gVK z2mRR{)e@Zd-iX6HycUXMzTin6G_vGmf)ShTBBhplUb<3%0c~UkIn$KAgSz zFlMbd+uIz2qNA?bJe<)BuF{3&I2^BMoV@{u-^^FLIfN!e8EzAlD}rt9^!JE3n*;)& zwFR51NkGJ1y(f>$UAe}ycl>hPed z5*o1+gpd4tlqPsO7)pF-hOJEQV%luRLRrNQz@ykmqR!$ zlx2MX>47VfUnuDj2T4Zt-Vu@~pT*1H1swTR>5uFe#-Q*rX@ z^MERo6{9TU{r9YtSL4sTl2MjlNKh4V=CJ<*0{LIbf8iCJs@x&K$ThzGW1z&!Z_5^} zky0s^8sgih2l?nBKsjwApPSX+m5k?Cuqr=*Y)Xv0`ulL-$O95d@d+pjEBu!rQ0%Jq z)#qXLcS8HAb4YSpMf9oh{~2h+qU6T^P>l=mt|S;ouLQ=ZhmWRGww`Kb|%s1PqDRnoI)sxBzvI!`KWjYY=D zDKx#$<8<;rlkzi%D^5|y^U`@jJdQYzFBbgt1DMzp&s#QxeE)JGML)ofP4V&pc z4cO#3L9Y@Ss3INHN9K;i8^}p6mkMXdCkr%Fxw4RQk{d0RrwEG5S*CzV&Z44(lk5l@F0YNGezUBs1tJ zm;Ox7OGpSw<;imGQZ6}PCd8P^sSZl@e-5|&cj{X$9MM<}wTXiNG0qWNXM-Y(xf8fzYk4`>vN5Qy{E*bNaBR|UBUcTtJ#6xzI4DnDR zebPh@Q+W&y;t~GX$?=4v^qb&|n?&i%=K`P=Zz9K)qu}ou1^*}Dy*QE+*>xuUWb2vm z-J{^YJ_>#qcrT9RbQut5(m#F_ynhtDZxsBjQScr#*b7>6S`5UQ?CBo`e;x4Cl9dqL z9SQfcK%h6=)O<~#x&4|zYg0!j5Zyf;p>QiJ$4m3##ks!oSfIAy z!az%~C)n1}8xHm~Tv*fD6$&;qZR`xfgtkpxA!%Shu%3~TMu~w#!(rkOC5z*zOf(uh z8mJE;WH)Psp4d&@CrV*MBr(hkew=>NWjzlpweIhUS9GzX($1op_q|>oPbY^%WjEx zfrrMfN?Q`}YEC2Cjs!fvo=SmR67XVP5`^6ec&bCCyA$xr7ew2afKOG-$p0<@FE7=c z`fvh1ErI{B1Ux!4mi8y$Juxg}ze>QX*dX%Z1bkKk|JmYM51jSDSr44`z*!IczwCkc zGp7EVzwa%_-*3HA%$WbC{b7Chu)ptF=Kyck@Og`X9-dKwb4FejBmQ=xoc!bP@NnyH z4%5Qn!K&?qW@O<(O@N}O?_oL+RJLuFcd^2)nsIO=n@z(Y)DgCGx*ufm|TnN(J{{F?KANl(Z zID;Bcbqn8*yiKN>h#}e-32}p9wGb4^$on*I>3Fn}Yn|98S*o#{P_-?)Ue9oqMXqe{K$UU1W-X zAb4zj^@i#zs;{gLTyX$OZXzWwel|RO>gR(mBg@F!fqHp-mA+jY{mqsB=pWGyL#rE> zm+mip0TP#>#^JFwsOf`NUq;?8Vu!ygJE-mfYa=(|6gA>t(^={dP{^&F4 z#a}>Z$gfS=080=x%gCV8{WO2Azv945 zNna-!0qN5HkVm`7AJq-jzd*z?-j1PV8Bfpn<7|Y`@#?;3H5j}s`j^3*FjD-{gVZNe z{5#930g=|hhdv=?2eebKz{#RN`~7LfXb+^C&+QR+|GGWO)fByvzHDI>CxxW0Smu@KY_t#|l2XYRd%1(&KzWol3 zlkxt=<&nP~tnor4TTga~I3gv&FExdO5B=NlaP`hlzX6sT?yB1LcI5U%0l2q{)%UN+ zgdwPQy1)4{sWtlXt(2!zE=9t`ja$2 zkiK|(>%Eb~#0&z$>h$0=7$d941QLC1{mBy;aJ+vpC9d%|zw^sn=q0ysH&VC`Rze6q z$=F40;B-!_jXulu)kdEqk6r5@xHj`(70rh%dW^GGA6&-gM>OEgk7s@CKUl-99=K%( zco3imYqp@ko<3>3@Bd-+nsUU^;NgEA9_GR{3ZgZcgHHib7j4E|JiRV@O$m-d;B!@c z(|mJa@NzKqv(v{;{Z(C`;lRSum&h;=`nSsQ_dTNlioEZS9zM_-?@Psx*4IO(3N7bt zy%mP}`(3eKB|2i}9e)(w zxFDeqw>Z2%1}~uj9zB<8fU$SMMOBc2B{hXWgsV^}p~8Y+lAqCogLx#;Uth>63!llj z>3?wkYfA>t`xumiH6>iZ!J0yz3q_GF{{CyA=fBWjy2&pL}#Ji=My$tH%J#qhLepDCh#Gl;s(G64l{i|~Q19ND|Fu!)PU*nBH z5H38r{ZF+ApCvb}zoIUB0<#A1OE|AIa)W;$O`43U2!RwWbCk)3G5h5(G8ZuMHj~L$EqHF=C#o$wWLW!Ba>2d&^HY!Z2`BoA{a- z*8#B#<_gZ9&U)ai2hMun|0@sB^Abv(tzQZRLtlynBS9}cVG6d)@#0ZYZ&zs1j9x4| zRa)KC)e>nA_ISmUChz(goslcN^zbRzlJBh#cXW1oXS8^GBB4-6sLki|N!gmNP;X?@ zndKl5tD&JQ+|=pqj`X&BXLPoBgPp-m!BDt&j<>t3dj!VkrN>^Kcw|%w#yQ^R&R|o> zTgi2`G=-bIn|r!KZTb1EA=n%CuCA`HSLGGFd4RM@#^N1lSO$)QcZY``MQ#oa5C0x{ z4)PC>zk$3P>y7Z=hKKh6Zh3!rI1O;Y2gAcv$lpNz9pt+{93DP_-24ca5V-UR@(Sc8 zuFr3q2u` zN^snUV>R0OBq5f2GH=$Gd2;)V6&|mCO{yoi+LKxBajMZupwFMGN|L zeMPFrsdZoDaY*+L&_4wo?A-nVeW@q+Hly0(z1ghw6!uwlo)Udes;3Z`YESM`)tXGO z(@o)S^nX6dB9T811NR_sy~u?>Aayh8>obi~EoSU8IE1fC5d)thc2v}HN@mfBJWdN=65Av*7inpoXkLfdlc3Oy7v;{uXBo6dUR ztOw3|;H(GEdf==F&U)ai2mbdxpxy&h?|sp7kkW%9V`(y1FQVaT5l=ajL_R^n>isf_ zj=eWFQPS0WW^}JWiEo1;|M2tSE`lHCdztdxXTbaDSt}AfVx@FU($x)Ep)^#j3v&e< z8!K~_Nio(a-;cu5lP7wDNQv$#{gO?+)28a5D)EXByL-HS zsE(tsmCxZJ*)Z(nDLR+LZ5)SxCF!{R;;?FmRR4c0Q}1ghD=eWK2c#;Qua@~$GVhl8 z4w>(k`97IHEc5*`KP>YTG9Qw;sO3L@cB%yL1vNE`yoGBvMnd6;w{#xf;4CScAK~EK z8|IezO3G$QG^>Dw=yuU5SIIu#B17PWd|!^=>Yc$7x?R#)8zN80pO7(DDnm3`q#2wR z(>QYhJx$|di2hEYE{WCC0EBUL{Cs4V(InDm^mBRphrs7h*|-Cz%x@Cbu{Mw%$Mtg(+72OW z5*M1;hH|-8?s^?;SwqCM$l>KEF)dE(1)fbHb?@PrNEIz$9+I-opZWx#9Kw6@fUqa! zY(qIihn7Oem7<@ALe^rOT&Yt#sXU*`ZeC`S)<7iJ<=O~b>P19wQpf{rRyF`9^AVYQ@=lDEtbawRiluHw<{HDroU#7ZEIaRWU@}ul zk1Hq3ph{E6;OrX9nY?3LyW82gb4a`p7<&wNh@&iK4Gpxu)C&OWZ-R}>U3fT8Rw##eOI1MjNc~`otQz+a?K)r$J0pa zAdwzIL8lTk$o;PCiT-O&e~;)N(FyMvGu@&S-wrTHD3i#>XH@!xN~s{9ODZN1AMZ-n zmr3IkZekf>xt&xsn?u(H_cC5j(Or;Fc}P#Mk4gIOg&8Ry=;^J5;u5Y!q->f)nyJSV zl({m1OD*Hd?o|RhMgA04{3mKqmNtfLo>~PU?c3VTDDPK{%;iJJ=RG3L2Fyyf6OH5Y#!3`>S0(wK)ZD>ZPMJp`}rNP4&w0Aq_mxDNCz7eK1a6XrG@|dQr(dKGeLyEE63vMJ$Yt$)7vPo4|Hpekd75Fp;+)YLXWoyOgHm=e6kSNlHYO|kV@#QyFB?EnwH1=6 zOuruI2Ca_ZZLJGdusG#Sb4mnEJ?Z)qH#)*&0b3f^NAC^9bwmCvpQ z%cpI{#T0&b0y&=MMs4wUg3~FgDza%5rFXN+u|!V~ceJqcd0_XY8N zPThjhp7swC|M$RSL-=-Bpf_l3C>smOh(c7MH+c5|F@;UP8w!=@`Q|Rr+MXz`q~`ZP zx(3p8nM?UGfcsJSCIL?Zco~I%B7l}n7IY2+IPWC@H%S97hAK*bL#-*l1z{Svyg25Q zGoF-Od?;$gCJ*jXP>XRm&r0gZLF0J2LOLxV!(UZ8RAGUnYct*4{95R`0Ee5*cazy} zGMA6rbhU1!d2qotYB7!5MzF6X6LKVdqzNTnQ3XXQ^;6oX(gvFKFzP9ayi)Qp!3uv) zMwFRXfJ9*!!jaMefG%l!2nYi>g2Jx}xE=sa=cfs{1;99H9)p8h{iw2xBaFe}mveQlWxydd*Whq%* z71Wfq+{(Iw~uXcHlh5wBkd&o@bG z6{u-9OMotNY2TIr?~~lD`!e{09`$f1m6g+=rB!Bz&y)DH z2r>t7&@!_Vl@vSzo-_?XPcupK0(BlZW;B3c9UV_sO}W&R3rJ5jNAU%uS{aU9c8VqG z$kpde2QaNI;7g3;k8vXL)POe|0afX?Ra z@O=w**)!6=MU14X_*o##Z|fc+)5|y6J{0(grM(K;phJ|Zi8vwsMr0VBuc0S1Xks5M zpyGD0_Tq5Uync#XnL|_byWD?|fbt_8lb2$$SSEF84@23hG@5So)xbXw2AY?rtOr0e zV*?6DL$hbT=YtlOS?NQlG!15E>@sS zN!#;3!OlH@XFlm~gc+-GtKn1yBCLk z6u@>AuE$}#1t5yTS8y=b*QAQ#cRdg&{`2#MGauNG8K>QL%PB-hyruaGv;3XW4Pk(82 z2h}J7MJhf73?*$3jWQl6jZ-O5-iFklapX54^crVYgC`po%5*v?)YtKlDFHZ#P(K0c z3XZA)NVgu7$*WDW8to>?Z`AJxp1ZOEg-Zz_S6+p}l?0G0uR(z>(9AVm%JTRJCL#V^ z=O@r!NuupepnW80SWJq6)hDBaJ_jI;~*rEm0K`isP&{FuEVkqPc zSwDc3Rydo`?rwJO6h0x*U2K^~+KbYJc1zRmgm~rJ4r1>BU58&YD^h=@XLWV8Qed3GeBr|by zXy$tvhny$>K`PQ!AvRCiWCd~i&|7nG@OiQvh50!6Jh>EwDjaO_A*qJEUI0Oi2jkmV zveKoez&;jB8pg_rk<{=qrZ&q-@RbxZT_x`3^}==4SFb^5@lN-=evxo+)${n;P?- zwJ_fkcV1q+Dft<-*;JD^j)G@okK{{v?y!9BeQ&--l}?MZ=ex+@={|UZoKTg!jdxH% zmNvta?Kbiz<*gZ?rDdXnXQ10*+BveH5ic{x$6LewRybahjpN{~bTpfqGg~wpjT3=D zHk>n`ISI?pX#MlG117#D5|BkU2xa6Gyswwx@jm=N-ac)?^GM}WJ%$i+vW6C0^1Y7B`%mT$yk8l!B4#x&VtG0v#TiJqe|7#~M6 z(mZ11VYQl|NzyWX2of>y^6i-uWCUi7957?VNK3FPTg){%BaD+O$BwW;j!N$2_z)hi zx(B0iWJhqGe1p1e0`>4jF#@UX{HZh;CM6)^LvnIViyHbo#-~s{YcM>fx;4u3)Xe5h zjXR35eBNF)b;)*2OK^?FV@nLre{VEWGx=y7Irk-wN-<88$6~_F!wsLU2IskF7@Tv& z1USkVJi}-$jt!I803-*OkkjBV9{hwTP318qJZ{nnXpGy1aM0?8GFL7ee z;xJyM)5|z%f2PvgbovMGrDZ>}+cS(@jmY@@$WlzQM|yZOsBg zw+{)zO3S$2nh5U9eOBsXYhtfu*p=B~=%J!MMm1@iko0?@B>mCQB*~W|t z%gC`(ZH=RC<8rO95BLdTujRIlkk`@;kM=~L-O7dY8X>G3O-F_Bltf|O#$!0tsAb=1 zO|k2g?I>qhX{FYbW-D#I<+{U4n}bHxWm`tJI!n*7vf&m_ zpOw8B23A@gK>FppgVsc+VhmZt}_^LexDRkM$BhuOv)L<(fAqp)>7XSrChkY~`7 zr5dk8bK0CRn7+lCE=gq4jJZB68a3@9+$zwJp*{Y8f5^~qp<%;^j7y9v8d@$ITYPxX z$l#9(jfueNRvC4S+`%J+*SriO?D3YMU`90;0r z#L~xO@F2?a8m+}P{IBj+j4^UP0y@i@+Gj1k%$mANo^?o256rj|b^gklA)HsqaTrV# zo7}gUUl3r$#yKk$%D6mC6d%xO#w^XsSpyBX^LV>V#2XjnU85I_5#fnW$>Qy-w9=4g z^$GPmdCQ41ew~%J(i&T7xmQ{lq`*(4>>MivM6I}y_hO`xM+>*Caivve8=h9KbyYTx zesZIO`Nz(*oDz7i4b926oLb)7PA1%RWra1}{y@l}lx3x^vZmKkzw*G_ZDmp26{zM8 zYZ}hOSfW|^KsglvR#~%9v~A zAe3klaoY=(nTCCZm2PV{!fkxUw5*k)vPLmY(I8p(0{7qel@=c}cW|c}D-jA5OKy_g z#W^6GOO9w1{@}8=i$4C*_T)}>9w$~g5B&=!V@%}~x({x@F&?|Wg4Jy*c13-NU0fX8 z#j}sh#%=dHX;zHqwi!YyF4ZE+M#-W7~NK=ZSt>TwEw;iCm5E{ZUsB@f; zPb#|ogylepX7;f>-?pCn0R7a6hyu#J%E~H&2l}`*vu$IRk279~OWkWXKorv?MiOb( zERgR-##a!=pKfRs_*Pi7ig%dpjIm~dRkv%U2+4_y*-9)J9)Pg6)k|S={Dv?$%|#r$ z>2x1C>(5O4@3dVsouVYx^h>P_(Gz`NaDk2a+f6gx8=`>}ui0U`LK}O?LR{}@BpG$# zn2Q!G7x`rCZ`-cv4lYuGz{W^NXSgF2kl#&A_)KErrw!@P-S}UOu@?M^8UA*S{{dV} zkpBT(fS!Q#ws-Y}z4RtnFFt-42&+#fHbb@i8#o3&d^NF~%XWnD{YCx>MSQx`TeEPX zd`-?v=JrbQJyCB_8~=atJa18NxTUf!6oFt-Yg6ymP;)!} zfUPUiTNDXx?g+IMh3SKcy&&>WK^DP?aIiVt)dNBLOSc%IxwEOaU6JuwMi81?6JTob zmtx<8znhj$ST`KSspIBqPu{zYL}X00_J37V2sVDp$0`Y-kFHd!P-iLu26!_5Dq%03Xe4!}m0sT7#m6_?l)r>*{O? zgy{pG)M$K0lfLu%UkaB0tC124ZVt5Ld!meg@RJXVO-)FAp4Yo|g> zuoVRvBjK&x!Crw!P!>^Sh5*8_IFBHsPRZ9bx2Pr9+(}R~KGVvv7+-BDRPcGPs3UYf zSJ6x(8I(XPX0eXe4$jPb0KCoeRv1fi>^NiAqyk^!YdXPHwsYh=RVLomDcNflFL7VT zHnYjj(ByeD_L@s-(&ONCZLe8VFA*PuPKdR=X%P}g&D6L=Z#W%qf+Zlrw`v)Q7!tZw zyH%swZq@G8(zYjx->KcLFu6kEz1sIQcW;7C-_w4m5M;z&-YD#AzZ7eUsjW86ZCbs# zOZ%p#)pG`0z1n9o56GS|+B$f^QP}L%*js#i2_JiD&)!Gx`;fOB_3mAoy$>4`Ba*G| z`AwFktueE%)7F~TU2kHGey@4`FEl{E(4N#d%>6Ee?H2jIk;&2_mA(ahTeb?Rt&fq^ zW7^N96go_%L@9D&dOq4yS%Xtet=Y};_L^JK>eUPneUZMvy%~PldZ%!Uvqu>Ker)`! z_qbfChT|n^JmzJ%;>KRd($)gysJE@are2{!FUa_^)f-bL^P*ASz0{7q+5@5;<^viv zjP5hJdb>d09GYx0xF_F3-1lhrN$&f!M~OS0?2BUjW60KrW&KTEki71rJkA{s(B z(0GjVhETIFXv%TdUw}yD`;iN^{K)k?7kc$~g0Eq($@xUDnoqfoxX_2kU9TY{J6Q#s z!=j2~C9250pK#Qn=0o-|+i-SJVDU1l6zJyLcLF@E6C`b#&-?X04j?HaCEE|QJKl6!k($Eu%`8DVawGt z9h=|O?vca$9t|u1HPW`YRD(IS4c4`h6vE|djNP^7-9id5mqOHHe3%76)N%C=u7zLF zG|ikE#2C7I3r<^hYQ}Zj_nJGkyJ+|$sV*;DL2g~KBHnlAiiQ!L-LNjHtJhr_XC7fP z%-E;B0TawOv^S}NZ)&FqI;FiO+xeDuj}H7j`d;dyz4|_#`y)XMH2ek6oXx*LRPT0_ zEL!`PHb6Z#AcRC$saE_D7Zqy9lgMFQLVY zJ{7MtyT69wU-ZA~=6e_#JnotKtoe*(p1|zG%tPj3lg~5~e#3dgG5?AwoKM4i5@zN< zVrn(-#^lQzd!`e`vdP{XPNv~q2^xj$HmvO^dHESn%aNan|C~|qrNHZWTXY`@CZu^N z6aH`#euc!VzjIU~G^jK-k!4m14B1Vo9f!uo#lDZvkvM$~2kBoeyGr5jK|y0)U=lr>`zn@h295`wW`8nxDkphlaT=AU#SW8B49EsAUQjgl>Rj;$HABCU(XwN%B zg8-_r((p1EQ#F$Kb?|4Qf4vf~mO1n)7U2t%@ZSUeOm_Z^M3^sF5P ze+}@{&Y))v+BZf|BWH|E_02uuQePKs7;Wsp-cTD0e{ll?JiXxvJ{;MM-8=RBCxP%L z>|x@kQt0<#TDk&lon0H7Is+}(6YLE%MYgc!u1(#1bJJIHW)AvomySSFPfycUeEf?x zYg&7nHU$GMkxiShaf5xU7!;uW%@M4$Q_&pXyBV?5wc^t13zr9$U$iWM-)vd7?xN}o zYipnnn_YqB{(zwRmtD#N7t~$6w7M>E@ro7o%Nqg>)l2J^2NL&r_`VYD09C1K}N@8k5>FX4yqdYV>yAA-mXAdjgh+odR z7+fvb7{|^oHuPw3R{RLiNPWT3h^=t3am#m%v9;dYD{JEW+=;(I6jMUK_@j0~#XfMH z6sOSMZ46J%qz}lAKm-E#9Uv7!^aDXE>PP%MkgADxv18(h0kw@C!-=R#{5hi$Bb{}>Fedx1p>^5#qK+)z~OA($L2(Id-wb-t2W1PJm z+wsiTvNeP%L>}%DlrIN+dg*tQIGY3lp!Ebhn@B*Gx;w+n$0OQ@qOYwBAQgIp&CD03 zU3(vmV{muzxbp?u<;ZPsfi?vR9byOz2~|c_O`AHPOo*eKnGbUZeRvPJ;KoQBIGaLk zm}n%}5o+yH<))1rdxBq95PmH!sLJr5DiRv86NkH+X)`~juqV_e;E|K#e;uOlWYDDq zmj#|^zNe(}$pVa>r(B1SlX|0RlhCelkIN;9h+J8*StNd5eVbn${DtWxl z$`jork%+2)A2z`#sa$%P$ zKL!623RJ(6|I{leD&Hl**g3iW-ukI5vrMy=$$~;+~UP`6< zC3}op$)6j;hyw9aQaQaHr^h* z3yDnCaZ*7tZ_Oz3C+md3Uy{aevOImPf^f diff --git a/lfq.c b/lfq.c index 4d94075..5a6e728 100755 --- a/lfq.c +++ b/lfq.c @@ -91,14 +91,16 @@ int lfq_init(struct lfq_ctx *ctx, int max_consume_thread) { return -errno; struct lfq_node * free_pool_node = calloc(1,sizeof(struct lfq_node)); - if (!free_pool_node) + if (!free_pool_node) { + free(tmpnode); return -errno; + } tmpnode->can_free = free_pool_node->can_free = true; memset(ctx, 0, sizeof(struct lfq_ctx)); ctx->MAXHPSIZE = max_consume_thread; - ctx->HP = calloc(max_consume_thread,sizeof(struct lfq_node)); - ctx->tid_map = calloc(max_consume_thread,sizeof(struct lfq_node)); + ctx->HP = calloc(max_consume_thread,sizeof(struct lfq_node *)); + ctx->tid_map = calloc(max_consume_thread,sizeof(int)); ctx->head = ctx->tail=tmpnode; ctx->fph = ctx->fpt=free_pool_node; diff --git a/lfq.o b/lfq.o deleted file mode 100644 index ac84530485bddaafc17037670f4220cdf5010c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17240 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 diff --git a/liblfq.a b/liblfq.a deleted file mode 100644 index 29dc64633f8c30ad5d6a610d66c3e22775e57d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18338 zcmbtc3w%_?xu5gQNj7W}5=l@X8=e8oOCkgkG!F@zfCv&Kh!{h%c}TK}$!?9PJPcab z7zMmqy`rGj-rDL#YabS`k0KiVm20V2Es7MVR6w+1efFxCe&5VDo3mrm*ByU3XXZcO z`}=0j*>etNmDG1Nw49fa=ZkImuA%6=k3L^P{!F5{B7rex!{2`n_1D&PRb6YaHN@JQ zn(G=m!og5oQ&%9+*4mBGRdo$*f%+it1%g+F1K|MgHwJjWF4WrS9%DbZ!)5AlR?aLe z-r&zAZlUo~y^_g$OaH$VBt=R-66ee)eZbf)aX?T>uHjUn{~p99y*6Nmrr z^yyEM#{F;Eva*_G{)Rt2n*nk$EYD%c{JkGIoC#u*v{`6C~3 ziJTb*5Wi#&EQ~aiE{sfA7+I4Kf7yU%0DJEq2ZLU=>IF{J$G+Hq@_qCl{eb{x7rcgs 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

Gs8@Zl!YnjEk7btRmy2 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 diff --git a/test_multithread.c b/test_multithread.c index 7c239b8..50658f0 100644 --- a/test_multithread.c +++ b/test_multithread.c @@ -59,7 +59,7 @@ THREAD_FN addq( void * data ) { THREAD_FN delq(void * data) { struct lfq_ctx * ctx = data; struct user_data * p; - int tid = ATOMIC_ADD(&cn_t, 1); + int tid = ATOMIC_ADD(&cn_t, 1) - 1; long deleted = 0; while(1) { From ef276e9f5a2a8574d1f296e981b1fe2279cfbaaa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 11:13:22 +0000 Subject: [PATCH 4/6] Remove codeql artifact and add to gitignore Co-authored-by: darkautism <3898040+darkautism@users.noreply.github.com> --- .gitignore | 3 +++ _codeql_detected_source_root | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) delete mode 120000 _codeql_detected_source_root diff --git a/.gitignore b/.gitignore index 4bda73a..4dfedf0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ bin/ *.a *.so *.so.* + +# CodeQL artifacts +_codeql_detected_source_root diff --git a/_codeql_detected_source_root b/_codeql_detected_source_root deleted file mode 120000 index 945c9b4..0000000 --- a/_codeql_detected_source_root +++ /dev/null @@ -1 +0,0 @@ -. \ No newline at end of file From ad326ffc2cc36365e1f4c0412c67c047ad9cc6e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 11:15:11 +0000 Subject: [PATCH 5/6] Update CI to use GitHub's official C/C++ CI starter workflow template Co-authored-by: darkautism <3898040+darkautism@users.noreply.github.com> --- .github/workflows/ci.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1793d31..6e86fc2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,17 +1,21 @@ -name: CI +name: C/C++ CI on: push: + branches: [ "HP" ] pull_request: + branches: [ "HP" ] jobs: - build-and-test: + build: + runs-on: ubuntu-latest permissions: contents: read + steps: - - uses: actions/checkout@v4 - - name: Build - run: make - - name: Test - run: make test + - uses: actions/checkout@v4 + - name: make + run: make + - name: make test + run: make test From 32a815fb67975a9431440774af08c022d0f98a5b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 11:53:48 +0000 Subject: [PATCH 6/6] Add ABA stress test (test_aba.c) for the lock-free queue Co-authored-by: darkautism <3898040+darkautism@users.noreply.github.com> --- Makefile | 8 ++- test_aba.c | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 test_aba.c diff --git a/Makefile b/Makefile index 5fc12a6..ddef0e7 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ CFLAGS=-std=gnu99 -O3 -Wall -Wextra -g LDFLAGS=-g LOADLIBS=-lpthread -all : bin/test_p1c1 bin/test_p4c4 bin/test_p100c10 bin/test_p10c100 bin/example +all : bin/test_p1c1 bin/test_p4c4 bin/test_p100c10 bin/test_p10c100 bin/test_aba bin/example bin/example: example.c liblfq.so.1.0.0 gcc $(CFLAGS) $(LDFLAGS) example.c lfq.c -o bin/example -lpthread @@ -20,17 +20,21 @@ bin/test_p100c10: liblfq.so.1.0.0 test_multithread.c bin/test_p10c100: liblfq.so.1.0.0 test_multithread.c gcc $(CFLAGS) $(LDFLAGS) test_multithread.c -o bin/test_p10c100 -L. -Wl,-Bstatic -llfq -Wl,-Bdynamic -lpthread -D MAX_PRODUCER=10 -D MAX_CONSUMER=100 +bin/test_aba: liblfq.so.1.0.0 test_aba.c + gcc $(CFLAGS) $(LDFLAGS) test_aba.c -o bin/test_aba -L. -Wl,-Bstatic -llfq -Wl,-Bdynamic -lpthread + liblfq.so.1.0.0: lfq.c lfq.h cross-platform.h gcc $(CFLAGS) $(CPPFLAGS) -c lfq.c # -fno-pie for static linking? ar rcs liblfq.a lfq.o gcc $(CFLAGS) $(CPPFLAGS) -fPIC -c lfq.c gcc $(LDFLAGS) -shared -o liblfq.so.1.0.0 lfq.o -test: bin/test_p1c1 bin/test_p4c4 bin/test_p100c10 bin/test_p10c100 +test: bin/test_p1c1 bin/test_p4c4 bin/test_p100c10 bin/test_p10c100 bin/test_aba $(TESTWRAPPER) bin/test_p1c1 $(TESTWRAPPER) bin/test_p4c4 $(TESTWRAPPER) bin/test_p100c10 $(TESTWRAPPER) bin/test_p10c100 + $(TESTWRAPPER) bin/test_aba clean: rm -rf *.o bin/* liblfq.so.1.0.0 liblfq.a diff --git a/test_aba.c b/test_aba.c new file mode 100644 index 0000000..0125295 --- /dev/null +++ b/test_aba.c @@ -0,0 +1,166 @@ +/* + * ABA stress test for lfqueue + * + * The ABA problem: a CAS on a pointer can succeed spuriously when: + * 1. Thread 1 reads head = node_A + * 2. Thread 2 dequeues A, frees it; malloc() returns the same address for + * a new node B; B is enqueued, making head cycle back to address A + * 3. Thread 1's CAS(&head, A, A->next) succeeds even though the node at + * address A is now logically B — A->next is stale/garbage. + * + * To maximize ABA probability this test uses: + * - All threads as both producers AND consumers (tight enq+deq loops) + * - No thread_yield between enqueue and dequeue (maximises racing) + * - Very small queue depth (each thread keeps at most 1 item in-flight) + * - Many threads competing on the same head pointer + * - Magic values in each node to detect data corruption caused by ABA + */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include "lfq.h" +#include "cross-platform.h" + +#if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ +#include +#include +#else +#include +#endif + +#ifndef ABA_THREADS +#define ABA_THREADS 16 +#endif + +#ifndef ABA_ITERATIONS +#define ABA_ITERATIONS 500000 +#endif + +/* Two distinct magic values — LIVE (in queue) and DEAD (already freed). + * A read of DEAD_MAGIC on a dequeued item means use-after-free / ABA + * corruption. */ +#define LIVE_MAGIC 0xAB1AB1EFUL +#define DEAD_MAGIC 0xDEADBEEFUL + +struct aba_item { + volatile uint32_t magic; +}; + +static volatile uint64_t total_enqueued = 0; +static volatile uint64_t total_dequeued = 0; +static volatile int errors = 0; +static volatile int cn_t = 0; /* tid allocator */ + +static struct lfq_ctx ctx; + +/* + * Each thread alternates between enqueue and spin-dequeue in a tight loop. + * This keeps the queue depth near zero, so the same pointer addresses cycle + * through head rapidly — exactly the condition that triggers ABA. + */ +THREAD_FN aba_thread(void *arg) { + (void)arg; + /* Allocate a dedicated hazard-pointer slot for this thread */ + int tid = ATOMIC_ADD(&cn_t, 1) - 1; + + uint64_t local_enq = 0, local_deq = 0; + + for (int i = 0; i < ABA_ITERATIONS && !errors; i++) { + /* --- Enqueue a fresh item --- */ + struct aba_item *item = malloc(sizeof(struct aba_item)); + if (!item) { + ATOMIC_ADD(&errors, 1); + break; + } + item->magic = LIVE_MAGIC; + + if (lfq_enqueue(&ctx, item) != 0) { + free(item); + ATOMIC_ADD(&errors, 1); + break; + } + local_enq++; + + /* + * --- Spin-dequeue (no yield) --- + * By immediately spinning for a result with no sleep we keep + * maximum pressure on the head CAS, creating the window for ABA: + * our enqueued node may be stolen and its memory recycled before + * we manage to dequeue it ourselves. + */ + struct aba_item *got; + do { + got = lfq_dequeue_tid(&ctx, tid); + } while (got == NULL); + + /* Validate: corruption means ABA or use-after-free occurred */ + if (got->magic != LIVE_MAGIC) { + printf("ABA corruption detected! " + "magic=0x%08X (expected 0x%08X) iter=%d tid=%d\n", + got->magic, (uint32_t)LIVE_MAGIC, i, tid); + ATOMIC_ADD(&errors, 1); + } + /* Poison before free to detect future use-after-free reads */ + got->magic = DEAD_MAGIC; + free(got); + local_deq++; + } + + ATOMIC_ADD64(&total_enqueued, local_enq); + ATOMIC_ADD64(&total_dequeued, local_deq); + return 0; +} + +int main(void) { + printf("ABA stress test: %d threads x %d iterations each\n", + ABA_THREADS, ABA_ITERATIONS); + printf("(tight enq+deq loops, no yield — maximises head-pointer reuse)\n"); + + if (lfq_init(&ctx, ABA_THREADS) != 0) { + fprintf(stderr, "lfq_init failed\n"); + return 1; + } + + THREAD_TOKEN threads[ABA_THREADS]; + for (int i = 0; i < ABA_THREADS; i++) { +#if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ + pthread_create(&threads[i], NULL, aba_thread, NULL); +#else +#pragma warning(disable:4133) + threads[i] = CreateThread(NULL, 0, aba_thread, NULL, 0, 0); +#endif + } + + for (int i = 0; i < ABA_THREADS; i++) + THREAD_WAIT(threads[i]); + + /* Drain any items left in the queue after all threads exit */ + struct aba_item *item; + int drain_tid = 0; /* safe: all thread tids have been released */ + while ((item = lfq_dequeue_tid(&ctx, drain_tid)) != NULL) { + if (item->magic != LIVE_MAGIC) { + printf("ABA corruption in drain! magic=0x%08X\n", item->magic); + errors++; + } + item->magic = DEAD_MAGIC; + free(item); + total_dequeued++; + } + + long freecount = lfg_count_freelist(&ctx); + int clean = lfq_clean(&ctx); + + printf("Enqueued=%" PRId64 " Dequeued=%" PRId64 + " freelist=%ld clean=%d\n", + total_enqueued, total_dequeued, freecount, clean); + + if (errors) + printf("ABA Test FAILED!! (%d corruption(s) detected)\n", errors); + else + printf("ABA Test PASS!!\n"); + + return errors != 0; +}