From d2b4d7a664563de361d8044ad567109b9a7f6c9c Mon Sep 17 00:00:00 2001 From: joaquintb Date: Wed, 5 Jun 2024 11:59:08 +0200 Subject: [PATCH] Fixed test results --- .../fixing_fp_fn/fixing_metrics.py | 0 .../fixing_fp_fn/fixing_test_results.py | 30 ++++++++++++++++++ .../testing_tuned_models_fixed.xlsx | Bin 0 -> 13503 bytes 3 files changed, 30 insertions(+) create mode 100644 model_selection/fixing_fp_fn/fixing_metrics.py create mode 100644 model_selection/fixing_fp_fn/fixing_test_results.py create mode 100644 model_selection/output_test/testing_tuned_models_fixed.xlsx diff --git a/model_selection/fixing_fp_fn/fixing_metrics.py b/model_selection/fixing_fp_fn/fixing_metrics.py new file mode 100644 index 0000000..e69de29 diff --git a/model_selection/fixing_fp_fn/fixing_test_results.py b/model_selection/fixing_fp_fn/fixing_test_results.py new file mode 100644 index 0000000..edf945c --- /dev/null +++ b/model_selection/fixing_fp_fn/fixing_test_results.py @@ -0,0 +1,30 @@ +import pandas as pd + +def swap_fp_fn(excel_path, output_path): + # Load the Excel file + excel_data = pd.ExcelFile(excel_path) + + # Create a Pandas ExcelWriter using openpyxl engine + with pd.ExcelWriter(output_path, engine='openpyxl') as writer: + # Iterate through each sheet in the Excel file + for sheet_name in excel_data.sheet_names: + # Read the sheet into a DataFrame + df = excel_data.parse(sheet_name) + + # Check if the columns 'FP' and 'FN' exist in the DataFrame + if 'FP' in df.columns and 'FN' in df.columns: + # Swap the 'FP' and 'FN' columns + df['FP'], df['FN'] = df['FN'].copy(), df['FP'].copy() + + # Save the modified DataFrame back to the sheet in the new Excel file + df.to_excel(writer, sheet_name=sheet_name, index=False) + + print(f"Swapped FP and FN columns in '{excel_path}' and saved to '{output_path}'.") + +# Path to your existing Excel file +input_excel_path = '../output_test/testing_tuned_models.xlsx' +# Path where the modified Excel file will be saved (can be the same as input_excel_path) +output_excel_path = '../output_test/testing_tuned_models_fixed.xlsx' + +# Call the function with the file paths +swap_fp_fn(input_excel_path, output_excel_path) \ No newline at end of file diff --git a/model_selection/output_test/testing_tuned_models_fixed.xlsx b/model_selection/output_test/testing_tuned_models_fixed.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..46c96062a2705baea44661564baa3672635bfd78 GIT binary patch literal 13503 zcmZ{L1yo$wwr$}a+@0X=?gR)LT!Op16CgOjt#Eg@KyY_=mq2iL2?Y6-^t-QL^ZPPN zs4-ZRUFYmI=d!IJ0|AKv003YCih6w-5+Az|{Xw5`y-HY_Wnyue z7WtqKNdoE-BznYVN^m79@GLZlgvUL?(U;76$*b`PAoMY1*~Zfz36H<=?h&+dY|N zxFEJmzK0nxSkL6J&1HESF1H*Tg(@Z{8FCYg=R4L^ouc9F>50Y2yx&GY%d^nuddwhQ zL+pJT=S*;|u(B==8{j_Ikl&Jw?-v+HUemWzQ9mjXqKnT6!^HAbusVeZa*K8cOX7T9yN)pOPA zWw|ogEG}(nqF_ierc+!L{^($i;YC+Eb6f?UGRG})IWWSC-$`=H#Q6(=s=P&so)^yV+b^{o1b!^*g0jLd6qXyGxvojHLicR`bh171Q_KU-#e4U*5}c17Fr zAHV!i>F({cG!s&@8km}X@9RJ04TNfzy3L!xgk?qI9h@0hYO_#MY4~8s@hh;TaNuhP~_j=rly4 zF3p1r5O0aFWlco;T;r4{6!p2k4|3jO8aI($!Z9NT>J5OacS=^lt4gFkY@<7FT03Tb zg65k79&GBM-;Ja{Y2Rwq(@j##P(GVyhBxoH74Wk~8CcOtOWH*IqtpI&R#E(doanfH zD?QxBueVwTAyl?}=#IPuW};pbx3{qc6s!|x_wYyZ{AR>ziPbt26Wf^)j&EDmZZ*7b zKSgLG`PMeW-nXUegCHoPv0 zDtwm^^J#w1XQ=yh4tRoCd_r(D{8|apK#P`hqAK#J)QWCYI#EGGTuwa4Z&-fy4kdy5 zAJO`!+~ue1P#-nRIpPKN2am^MUB>5Q-=N0na)JJKJUj-qgD99=I`t&iK?CwBQ@2N| zYu|sw^r_J&c#h4QKI%?#7F&87nX*XefR!C4FI5w+El|xet2BgNu$YJy9_pfrNN~r~ z9iA((zg3~q{}b5D)G}9h*-!sYp3jWl69s2Y*8(}y4P0-%&AMj7wZ2Q(YW4oAWLaKd zXQVb#cN`lWP^pTiS>(y;Jbp44%)B^xSRxOsO4Vd|ixnf|S1Ur^_!vHXPTLE&Z>&WD zH=;6Q!WD*=DT;4P<19!&anG-}S2u>hCf496b65{-|3=9z zeO)tZFHbar$Y;hMM_BKcO~~=yVwZ2_}#l2{|2Xgh>WbH*w!cV=>I6a0))j9t(D zL7zL`CeIRNlXtSZ&EDeF)UUlR#p=8>{zSroFPFKbr#ZpN6Fp)f9-s7*%@X<**fDIZ z%gN~_8uS|%F6c2fjP)6^VFIcY!7r6m^;xv~A?RXqy<{WA_wDzRwDq>8;c-E{K%tAz!$3j4RZv@0Hl+L}v zRc_y-lj>FF?ht3IM@zzK-P#>+kXLR*bFD`PXKiZXDe*L6F)O@WXF!Cb*ZQJ~wkfA` zGPjqOUg=5Z`jF(-rGNQkKO~8~!?&k*ts_?HbGx?nU>nc(UN+sM4;9Q=9Q$bvaTnsci*cfo=-8s0waUp?k@&iKKC1Mi|=6Ho5&u4M^fM9vuX$mxquxdmoQf$Yq zv$J?hw}^!YdOw>$6;|Up>|wFcE&(=2u|*Y%tIB0cgrJp8m9ZAQc1nGj9#7j02CA18 z-C2P;YypX@yp#>1+7PES&&F=?@)wPHqI=eL9{UyE?-07X==5UwK3(2nVZNwkhV9K& zAMPpA`RYDh_>rVN&adR(u5BQC&6a&EFs4Hll7aCej)OLe(7I;Vi^edlD6FaIUuHq{ z@YT3N%rWI&4-rqrW19;v=ZS>36PXj<5n7o=GQUM)Cy0g8Wl5>$%-fcS=U;t3L#poX zjrwsC-U0Sc0SP`~?R|j&0CYgQiu0F%xY;>cIhmW7I6E=@dHbUxK^iNLX}lOun8?Hm z!X$94^=5|%?Xd*WGuP?rXd|4;jDo_Ow`U0C6w{^EPloyx-@Y{@);A(Dd0gc2!zm*9 z6iTT@MJTIgoXOUD@r1I|c5Iu)&JB_>O&6Db2+z~ZL_j^!QcO+m{hFL2;b0mOa`MfF zg=n`*70t|03vqaXJu*xWJ$5@O)&T!A?J`(2gPw-F|p3q|xNSqCiDDR+(S zB#|i$KB9JZn3H{*3l4$t)Dq9~Fucg4i_#0_MDdcvb)@nf&ABCZ^|2)6lkH~CYL3(c zm$4pO!MS471y#?f$7b^~b*KeZy&~SJ&F1};0EyaGmQTE6hry<0Q{{Hsg)`Q+vfVSM z#B1z<4aO^kgQK1TuHkXc;c?gRlD%gbdfZ%RZtRSX!uMDN+1Ix@iqNc2muL;3QN2V} zx(Pz6{ZIg1{-{{2@*=H35kqB69hzdRlKqboN5g>c#U6?<18-_rkK(hFx14vmy>)Q* zM;(Aa+r@B_^U&zKb(mqueiFIoZ4wQjL6A3^N6Gr`%iso#s3Yo1YMnyP|PMwN2VC3aTTI}0l*U6%?HVnRC6Y>nj76wOG86cVU|Sm-GVTjoCO1iOVou3U4^vH z(2u+f1q7cOCh__@so@XgRYltd#F{`05;!J<)(I4Y6h1!}{2Bv?h}EqGt#eF)f?gE%*5ws`YGnV>oB90vAQ*cibwc{v(Ioi(hTycpt_(T@7}N zXuE3c#ZpQjP0^X%D$)3d^$#Hugn9fpbp|1ki7}01oRT{eBG3?sv5aRa8>8)Jd$n)X z(M2p)51TOWGX#911@3ZABlS0p_JnVgg8<_{pJY5wje0h=x){1QhX+UK7KhdGpbNcD z%8($eEb>gnOQ5`oM3;$rDn^02BWV+F?i3Y;3K9a|5m*{rbs8Xs-QE4Xi>DQ8U{as( zP~EZkC_i-DBWkL;oALN(?Vcp5(Zlk1+PMk7LJsqpCQM2xbAkzv01qj<|ZCU z0_%MCG!>Cg0)PYf10{OMWFHQhb`&v?zS5QP$Bx;2b2~Jmh_j&@W(#Sy-Po4;xR@t$ zXRQ+ny^}UNEm}@j<}-4Y|KLRT^^(0V^y#dNa*f#dt`iq2YDkwK_TJeVa;#!zV5zW) z`mm0^T>3cpR^737Gb7iCzi3m1Zb40JR7UgJ+74?a=cJw|RJL`P^WF4gTX@ajS5Bq) zp{j}O+ZPe70?#KVuhqHr{JXeWLv2%`=?Z?tlgave!=zRdN9D}j&05M^p*|_H_^E8# z4{CE*e0Z((*lYVb7f1pO%O##MssV*#?vB?g7*dS&T#0=4#_@8$W<8!}zw6HT_h#ej z&9B-O8UY%phpgu@}jhCEZebjGgdG_A+f$RAqK5VzqT6Xk-O8NBYCu9JW z3YDxMiXsjvv_F3HaPRJSQqyas-aYZiHRk68P_rN z@|1%cQ_nqD8*A2?nf@?-@RVp5f0-#^Sd^|hIT!wIK@>xBg+cv7G+}=A8UUg)3mz-8 zthf}0Ka7k39g#gd+@UEE2maPw|4*}sCb`>Rb&F}M7dIm2kQ`Ai;0A*9KjGeOARZ<^ zRD(H$^b2n^7O1R-Xl7cG;It@+gdJ^;FCdD#mlXBkj*h~^-{Ero>hb)%*d*v_^)>k5 zVhvC+1vlH%&*29P^wdWR5ERyTH6n2re3x7Tc`W6GNseg9qypTm?3k&`LC$b4p~4Cz zdZ%Y_5}3RO=jrCpc3RF!=?3oY;!d!FhvJ2d_wbGi(iT7=3!$M8i6xAPYX8QJRvylk z6LV*=4GS-^kB!>QgT5 z{m9#1p24L;o#|Je4SO?dk58wh{kybuA8DhN)Y^nB;u3nEYf9za5>*9>P4E)*F5^cn zM+AS1d`Mpx?T4TUR|Xn6dc&1b={)YEXy}tRITpNaCXmQGDqjyLfkghLpLJ+G*t_WE zuAftopzJo711~){z$<2MtAuh^tn8{bTsbAdA@c^liTJjI*Dc2!mtj+qeqDN}d4c>2 zxYv=|<;ZosA}7llJE6KoR{Em5^Nvz#t0ZdsE@b9;PYl1%^J&3*a#t_p4kN)aj_Req z<&gXM*VA|T)4Zho#^s`hp@nm9E9n~r%x@f( zS?ZBQwe-?ErN<)u-DO;!S*?FSZ`{ERkaE1lYH%+MjMJTpuv$13AFP1Wo(Zd?q> z#;W4mKeO3mag~~F(%ac{LXRIxSW}KaNT3omyd)2!e9yJ17p^_LUzC%cmXmhu>bY*Q zz-!M-tNcv3r02Dc32~&F;l%5^CvtHeO^ePzWV(uz&DhfLC!@R zk$f8lg%DnTzk~t4wW{`&;5f3kL6-RnBL$ZHE17Dt%J5w49KAamyV#xymy)Za%(~r&E2Ml1vbYt*03Ia?4`ir0ZqQ$ds_mC5m zy0{gwno%blN)z;9DpksQxHGq|Nd%%a17j%N1Zq`sX@Ye1tvV{C?*JFg~%mpuFIgF4QEA1{wSP>aVjZ5}H`~z!N6u z+w?ihiAr)D-LOk_m(5n9$D!#~JlvvY!Sxi=8?Q}GZEu=!e(XdsMNl&` zEv3ZNC=*4t@c306&)Qs! zh8K6kMf`I3AIRd?&*UScMeqx~K#Z|Ct`~TRq3-oD|Aq3`13N3YQT1NPPl^h+K9iyK zy>0J6?(idbe){l{Y->tBB0(veey@ z`^WJN?Y-doV79jL`}(vG9OX+ciJ9yj^2>*sKV0S)N}}o-cMvVg-3b=^GPK7U6Wo3R`O8X zvyQ5rhysvN@W~LqOB%THqFD7zr^z%jFs=)OpTQ(Ann4^G43V(#ZVJ9&v6$sScOyV821?ZPPXc-ce4FPpj3B0{Fj43w+au!xGPY_Y}G&0zR5gHb& z?w%*C#1J{mMjG(i{X}`|Hq3Adu+{sfB>MF=*KgXRC2q z>i4<{FHm<{8hI{hP~jiNo(N92(a9!zn!aruEODje#RY=Hys>3=I^SSBM=1rQZQOfz z0mp?slBaRG{V=#^9!8qnfRX(2QfO;BLKu6 ze*c|4IR0Xf6~{boj7LmtVrG&`rD4~(pZ<2n^E+ItLrZG3bio7uE6X5N|z&~fBfJ%MoI z=O2)~Cn+0nVkov7vrYGo8+wexxX%WL#9kzIIRw{(j+yKp!>_!*oZyw+kNbD$el^ zsgG2d&P6?tn8zcFbbOPR2zg}FMuBrEDr90zobOYbm)wWTLKS3H%{(aqJr1AIEAIGT zEq)yAWxRg~Bqu|AAy_sqMR&n#WvmEq?zmZ+DOC^K=BD(#`S3`E>Z3Nc_exZu3EVgw? z@Iz5FFvWYb7pI7=|KO-o!7M^71Y0m)umBQa12+h259Nh`vYO$X6B4{pb>yYp`rlkqPd|{DpY}d z8+*aQm_Hj;-o9UT{p8Bq;WTvSaIhz86_3p6(Kx5*A9*n0RSg}^6@shH4KLc6(rKy$ zw^$|vzNuE^KiXq@DaH0fO|l1m6>u3w;=s4zY2`njnmv$eUgSjCDFz#n(`b^zf`Lue zndt}j>=qdEUSA$a{aF+mU+1Z*Y7v)BDK@<%N zHjZRB+41<9i!j{4*+VzmHxx>FDD3gWFuMUah@$rp9V)EBUsXg_Bu7+$OW8VQ#nDw_ z_;`5(kSa8rjg!`Ga=Eoq*Ne`?2Z9Kc;BN%M(k6ju^n*SU28vn4`slKq)>C$3u*Ts( z4D!)PrVGLhaOl7{qiWO?Pk*dHL=N{PWy0pxeFVOj(tGCbI|M<*MTnKpABHo zFhm@_vwONrE9Gt=*8d=`imCa@Bkn>s@pn~0T+xMV%noU-igD`&@K4sTgh*4g1?4F$ z|Glih`Bzy1REuN=u?DCXi2@6WyTTS~vx#6MAU`7*4@y()9YjJ`I;uKpVmWbs^>v;S zW#rAFn!D2uCmnV+;rtbGz>r396>16)yJM;Ag}t4i_)0fSk9AqUnl@LneNm5UQevT% zXlCjVhreZTWvvqx(pUCAKD}y09tosa%fA;H-xLsJ$a`st_uUk0^ zDW&(5{iX|c>LbH}p1p@$+%_8B>G;;nQW!;P_Smh^3!}^d-1YB>_d1^z zs*t2YOsA{v>r>=-Rc3rt8_egKKDw24`^=r>%Q&wyJzP|Xv30P1(n;;Z9BUSauGu?-!Tpgg#0br@Tm>2if}7ycj(38BnFF3l12G~_;NW&{<(bbMv6lIU-$WO4&}X_okJFAX20aHJomuiUZl zU@eoO*%YH2R*KjBkC%S3Q3rXcOa^7sVnVbcGk<1!$7(o7yJ0@e{?$7czEJ+D{#5bEb9r-uy?pk5d z>8lecW)6hWAto1`)M>^bN8QcNXp{Txs5En8Iv_{An%f%Sk7jdd#Mcn3O`HPt3- z3%>s87c@M1l`4)^mR;xGyG+Sfg;kcd%e&6sj7v(W5yBMSy=}Ecxcu7a@f)v&)Y%flbhDc}SKfDES z4$6NxKTf{s#FMV(zYgBaAzs`-8r2VB7KMZy2|>k52NJiEk}S59=>xv$l$me%y7m|h zX>6=vu{P*@u#240+`86a3;j?;E_47Ihj7?lhWSk0-gOR`V88?B<9 z(aZCZkVfvF_bH3P5k55!ompRgvR*!QVZ3Jt?Ajk)g+!6!@`Z0^_BqU4IoJV`^Z~m$ zGPGT;!tE-GQ71J@imR0ikngZLV;TuXP3mKkE3EH&3$tr!_G=D)4780G`O0qC6HD_I zKnj~-BurSuyzu)z3){Vw-Vnt4jEZ7)t|%`qfUvADu2?Mrg`0~{9pM!LW|hrMdbYIR zJ)T-Ukov3QG(jJ2Qvzljg}^IknfZG4`8F+NA9dB0j6|amfw401s|w3vxH@e=J^Ooc zh}Jb*bA?KTPe)k(rbL1kX~SBcSD2fEj62F&9Pj%S;nVOlSg67%b@F-y5r)}+Ck*cYqym2$jL|~bt5Cy> znI$!#&KgnC!NH$80yg&h>8m@*7@%bpJRcL-{KsXjPZly8Q(B78#p9y00eYIL>RUg4 z6GpJ&AHvA`n=ouVSWEwhFnT!UOpP7lkg4)+mnzdE!jgF99Bb%c=42B4c0Mb|V%crw za6CTgXQhw3{OU}OV7!px|MGA_2GaHYejf6a!Ls~8m;&yokgSRp20KiKEiJO|v^$=Y zvb!bJKI~j&J?`e5JfSN53u7oXk9V}9v4vyrS>v;a1Kzwq+5iu4&VJ;%KL1vBG=tdZ zG=jq`cN|0*7>5YGX-~aYhQ5LHRw0`4P2S9i;oq4+d`3iOS~#aCpNG_+Ou&U^>Ro>s zRkR0@*`_@gv!nz=twko@1o85Li;b}b`wy3~q$mE_|Lrgqsf#bDW{G8(JLp{Bgo8Sa zpjN4=i&*W9`8=27j0GoG*m>iNqW@pZrvvkW6b>zW1wFtZ*V)l z-GAOD^HNP{z~1}OBkau%C0OczP0*N~v#*i2aP z*tt1LRL+niaz=&07nQCypc$tgO$pb51Y7OkP)8 zH#KqM*%8{*_EY6|+e0Q5sbY|WQb8x|B=qMFF9QLkzsju zGMK%Wl{huf5n619NZI(Q3B>x#TFH&*8lF~<<9HndsVBO75y;~kU3g0V7CCGfd#nD- zW2F8;MOKiI@o7&jTcQ+VpBYsV<&;>$A)3{ud~>AOMb`Vj)dt~dWL9v|?90M?%6k5E zt#YEt{#0hy1C65Of0QGGap#48R}awc9%J)IT?JS+D!>s)HzK}=5IIi>`{>?W2{D}# zvjA;6F5u-6kdk6LQPaccFrKh+{ZF-pt!t* zuUBHZzX1{4G|x|Y;rL5yEf+K@2xiZSkPqv49c0RS5W008N)kpw4a z4{H;r-!!qNwi1=bjPiup3j>r>P%IYB=bV;KShg%!3u#Z)_ovV+W+^l7XlJWOk2`*| zc3YDjctMcW#Ahtfn718GxW~vtT@pfjl71v)vQ&N4XxIZYk0xn=dEftD7_Y9?L&VK0Qdrd3m1NdwWldg ztB0R7AmbL=`*R;_pR> zmY`bOu_MH$o2xso57N32vKxMNDHHE$Xx`sZ^L9mtdT%gL;MHp*wBkgBFt{~InRBIw zzwS(bEETw&hcns>#oNe^9ig|V^PIM(%a4C&5*SgZ_ktI>g`C*1xv>!93h&F>K{6VU zdDF)4lW16liM-UYvSm6Z-+*6PcZK14{(9dXRoAb+d?AqNk|TUR5!2Y&CUGxuCB zcP^}YfXrWfNjBw)F%3tko?(txsn-BF=2PqW(3JqOICq{HIW3UUMVqmG){2@(JJCW^ zjpeXF{<%j{8)L=-+Dw$|u`|s^d)fP>4-(QIzlwQ~YqG5a_KPu8j4ukgcdS87dFNa2 zr)ZCg{Z{bz5{;htAE(MO$KYGJawqxDUSRp@KuJJHig5;NCQpe#q9KbZT<6vP7dXNZ8yZtPz zTBcFf5bThVAVdNM+>aQv87&Nz9Qf8ypV$!UiIF(ag1QHt(7GY`AYu*lNyveFKg2z+ z1V`l0nyeoJ+U}A5seuiWM`4|yos0$A)u2rc&~r4gc4A`u{hARcV++oLC|reRq90`S#} zMnBUbSA&*AMwlUoJ!bM|5ruyDieiwV$9BF!*6C5|8b0=@*{RON4IbkL>}O?9>RV~C zk4p}|Y%(uns}u0EsToz}$B#uE=Y^wJHzYB+lH&IC*RlDs;jX|c!OXSx{Hp>Z!#el% z{gX$!S7Gxc)oGuOGiMomk0wMA67n>sT-oxbbBeSc^zWuvT_X zho;^VC(~D1oZ{ov&J}%@eRoqK z{0}@Pmb3H1UeIgrcBu)BmBO+#FV9%yTo~%6y3(pVP z%cu;aEsxD4_wij*=O)E`lfw6)^H#d|iA?Dk&5(qvpeFfX-J8>nQ63lqpY6bTzH=E) zisC%VExH&kg5y4eEq&X}53+Ymu0HFtK-jDsAL1my-8Ls_xnjn~6D%$HO!cFzBk>> zh|n8l?|1-=P{U#j=m>P1;EE2!xi-0ru#Ez$xM8Re2xQ8}TK7+K^2m!gl{S*9C-2vm z3-e^vM{Oa5J%TE7LR}Vb;=3Q_?e!ke(uXDr-+jrW275`(X*jSdCX@R6OiWoOFKg;jsj{55GsvU!>=bW=#=s zU~O6e>Wh9tD0ps>iA;Up7oP=eM`-=}1=-0xrGSe*>r}U-@eMWrSKUcNFk& z`10OW7<&R5@4C33IM`%^hBVkD50x`&vYH$*(OEqWv-qgmS$x3x>2zFK&LLL_)Z{f_3 zfmctiMkQsnouVjG#2&_GL(AA5D2JhR3Pq_-Awpi-oNOXf)=3TbztZ`hoJ1tN!J1AH z2IcgGZGVBYf_~G{6Fz-G-(LH*qxTv8CR3|K2Zki|%>5QLwhji40r>An5J0={&yO$Y z>i_=-5?))sJ`nJiEdbyPR{eji|8qRxwfXC*`M=GFLI3_=X6Ro7yq=o;4?w*i0_-1v zf1ROxjq-Yo>TeWb#D7KkGgS2&<@I#O-zaAw3I=_d*K7GR>+u@pb-(v-l((Rp_Ae-Z zy1%bcUiW?eMlk>lm;MXNpDxgAl-G6OzfqD1{uSjq^z%D10RUit?v!^%~`M z`uaDDHTl1y{7GhCqr47j|AXQSmP!2w4@%%kN`JC;;l;9Yp5epZ*_} CltU2! literal 0 HcmV?d00001 -- 2.24.1