From 2ab5388dc13e68b4c8c233858f5f26ea5a14a8f0 Mon Sep 17 00:00:00 2001
From: akagundu <david.akagunduz@gmail.com>
Date: Sat, 4 May 2024 16:54:22 +0200
Subject: [PATCH] Gestion des exceptions pour louverture de fichier

---
 Grid.java                        |  16 ++++++++++++----
 build/Cell.class                 | Bin 0 -> 407 bytes
 build/GenerateGrid.class         | Bin 0 -> 2803 bytes
 build/Grid.class                 | Bin 0 -> 2657 bytes
 build/Sudoku.class               | Bin 0 -> 1551 bytes
 build/SudokuButtonListener.class | Bin 0 -> 2211 bytes
 build/SudokuSolver.class         | Bin 0 -> 1725 bytes
 build/SudokuUI$1.class           | Bin 0 -> 958 bytes
 build/SudokuUI$2.class           | Bin 0 -> 1201 bytes
 build/SudokuUI$3.class           | Bin 0 -> 728 bytes
 build/SudokuUI.class             | Bin 0 -> 3222 bytes
 11 files changed, 12 insertions(+), 4 deletions(-)
 create mode 100644 build/Cell.class
 create mode 100644 build/GenerateGrid.class
 create mode 100644 build/Grid.class
 create mode 100644 build/Sudoku.class
 create mode 100644 build/SudokuButtonListener.class
 create mode 100644 build/SudokuSolver.class
 create mode 100644 build/SudokuUI$1.class
 create mode 100644 build/SudokuUI$2.class
 create mode 100644 build/SudokuUI$3.class
 create mode 100644 build/SudokuUI.class

diff --git a/Grid.java b/Grid.java
index b5dc539..f4254af 100644
--- a/Grid.java
+++ b/Grid.java
@@ -1,6 +1,8 @@
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
+import java.io.EOFException;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 
@@ -32,11 +34,15 @@ public class Grid {
             }
             System.out.println("Success");
             System.out.println(this);
+        } catch (FileNotFoundException e) {
+            System.err.println("Erreur : Fichier non trouvé: " + e.getMessage());
+        } catch (EOFException e) {
+            System.err.println("Erreur : Fin de fichier atteinte prématurément: " + e.getMessage());
         } catch (IOException e) {
-            System.err.println("Error: " + e.getMessage());
+            System.err.println("Erreur d'entrée/sortie: " + e.getMessage());
         }
     }
-    
+
     public void saveGridToFile(String fileName) {
         try (DataOutputStream output = new DataOutputStream(new FileOutputStream(fileName))) {
             for (int ligne = 0; ligne < 9; ligne++) {
@@ -48,8 +54,10 @@ public class Grid {
                 output.writeInt(Integer.parseInt(line.toString()));
             }
             System.out.println("Grille sauvegardée avec succès dans " + fileName);
+        } catch (FileNotFoundException e) {
+            System.err.println("Erreur : Fichier non trouvé: " + e.getMessage());
         } catch (IOException e) {
-            System.err.println("Erreur lors de la sauvegarde de la grille: " + e.getMessage());
+            System.err.println("Erreur d'entrée/sortie: " + e.getMessage());
         }
     }
 
@@ -73,4 +81,4 @@ public class Grid {
             System.out.println();
         }
     }
-}
+}
\ No newline at end of file
diff --git a/build/Cell.class b/build/Cell.class
new file mode 100644
index 0000000000000000000000000000000000000000..c8b3b8cc3d755aceacc0d0a8c098afaa3595d0a7
GIT binary patch
literal 407
zcmZvWKT88a5XIlz?fqL%6BDh(LaTU%DQ(0iAOu7UCH-Dp!iDn!@h+drMo<I`KY$-f
ze0yq8u-KW|H}5wy?;o#k08X&0p|G96M=wG@!j2$VnX<7084JSGqAKb$fj>B!2-IkC
z%TDK_sO)8Pm)qry$xA9~Fn0ZTX6wlpO@MrSzZUfMqFGMudExxY$d={t+^kHB2yu!4
zp&L(C&~^H-G}UZ)mCx<8#sTkByjS2kCo9F8AY;N`MqQY7_5#WLXLygTTQhEvb$&%M
zA?vt}U!1q*_Wt1#a+;hYQfz*6`^;`%kUhbBU?DW29qtwi-_MFep5|7B+28THReL<D
KPk)CF58Y4nyE3r=

literal 0
HcmV?d00001

diff --git a/build/GenerateGrid.class b/build/GenerateGrid.class
new file mode 100644
index 0000000000000000000000000000000000000000..a954a37e9644882151ce134dd31ac357d0d79957
GIT binary patch
literal 2803
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

literal 0
HcmV?d00001

diff --git a/build/Grid.class b/build/Grid.class
new file mode 100644
index 0000000000000000000000000000000000000000..68bd47b403934960bc3d92d130e445d088617fc8
GIT binary patch
literal 2657
zcmaJ?U2jxH7=EU^-Ltzr*rn}CzdxXqrL+_Z6zCVwg~Dn}kruF4(bL^SyL5ZbdiHFg
zqM}$oKq2wYghUf=xKkmzB_+`-Z%m9A-WU@vxbr6{0r8o0wja>OO?KwY%=^CcywCg0
z%+LQW`~YAtZUoVY4h2mCY{Fgz`-1SILpJ+m)2X0KL3a=V^aSBYuWSwk(T0PvIpjy5
z?4u<Nc2s^H3nGRWr0a_T3}DcY<3SAJglt}t&L<TN2T_R;1*fFN=^(0crUU|`B`Cm{
zG<;PyuPHdI;B^6STu-G0{9|JSQGRs^__~uu((V=TM7Ex$LDWp>0>uMKLqDFK9@niA
zZ9K)9b;Gt6pBmKC`EejJaMVgBx};MmWoijI>bK14{-iVyM+VMoGg@0pGbY-GZ7XR^
z&{V-20?LGL%gqIXkyvc&A`pMvOwY;y0)aH`Z5fa@!)Dfs>u%J5oZBt~tJs2wip^+}
zm>ErlhH*I?7ueuzoiy7HYql0M(pj4bbd8ahR%E;tE7EbhY!WJT8Rr}(R7_%=V0JA2
zR3tIMZ2L^p&e)cg9@OngGm$Cw;k+MHDpHtMVZc<7R`Dh*6&b`8*ebG^VdBHtcwEn9
z6kJeoQSNsUvnt*~M4)t;t&vH~ydX(eaS3lPE-{<f(2<LAJ#8mVL&ZCoQSmM=`|+OK
z_<cXF$eyS_a3eFQ*QGGD9D8W|ydJli!}63{9BP7PIjyC#EFPs0qjw}Gi(8(rqy(@`
zrBio>q$Xkp<0&)JbLgBbJWKj)bg8qHZcNyd<TH~UCwmk`5OerYpg;%~W?Gxlqoxtp
z>@!Jwl3y8HGwh7OzBQDzdV{t1j8AITA;OcXL>HNKBpKz37PobaT4&;vx^5-o`TV_+
zs3gFjSz=@*U$Yror<6QqmXX6Q6q0j7YSz^m({=0l^fYO5gq<>;IUjCS97+r0DKjIF
zo0donXVYnmdeM0d7OUWZUs8zU;?XT;5o8vFG}b2QT^3oB5C0L%GOf;f^4+ust84lc
zh<brS2e*Qcq{OZXG%go7Y0Q{Ydj5#J1?(rWrZubJGnRe8G^es@0X1eAx)n`n%!gI|
zV&(q%818X8rWuKpo@sO)yH=Na#mrNVBeQ9J4fC-T_KQTXn97HUYN^z4($;xHUl-WC
zD!;X`3Do|-9UAx$H1ay9$mLbVFCV{obFtmZ(RJSK9`@bM^AOFUKq&AN3JSi5$J1RE
z3fw}Ir>9!><;~y0Q`KI5AKuY<6b{c7h}%#8niFjQxI_N}G_&2vCjtC>`ND({L^+C3
z50x)T5%zH0g<@=@#RhnvfDeR%O#*lXMLb01LlipDTJq3t5~`QRM^`~}A?@_^)<|fZ
zB(&=G8VPNi``Mm@Z=Sc^oQL@Sbg=&VEXwr^UP6?mL|I0ZVRW)T$Z<bsB+5z`rH3e2
z0^RHaZN+vMs4xgTK>Kg*!#{c-fzfUA2+pHuFc0u-OAhKitn2hvcyoBJqcB`3ahH}9
zhYNEERd^S$9_aLXI(%WDT-j3L4f}E^=}^MTJ(PC%Wrj8FVPAXLpF`Q4k6Hch<aX;W
z!X?k=uz`JZ4&~gb;x@v^-M*;P+bXxLYW?vxN(b+vhV!)xr~~M7hlLN}3a&EIYq){W
z*#kH6C7*D&oF_>LP(`b1Qc^=P)lxWhEN49qu-Gw*>m=nhN@-1SJWaa{EiO@7S15?9
z^u37|Mr_7cr1WdFI>h#%=rKwZ_{C$iC}<Opcm@BBW)gc!LFE%D@H(Wo(S{QcY?OZ>
z`V>?bll2|gnHNa|p-TM*^7?H5mIL94Q3@S26=)|0SMFIFOHJ*{%epmRqPo0>+E)lj
zGA;G<z|qfd%lfILFoE6F`5sc!!Be$|8|>yb`<?Vc@XCZ-SvR<9*|l`yE)#-8ygz@!
z7NOM161s;>%6EYrvq}xl<`1}*!$#-0{jv<CmPGOB5=ak$^b$x9fgB`|ZtO$fnqZ2!
j`EGg@5cE~{K{E3(KE)@fz+sNdxPF9l{Z9L`)4uW_yZ}`5

literal 0
HcmV?d00001

diff --git a/build/Sudoku.class b/build/Sudoku.class
new file mode 100644
index 0000000000000000000000000000000000000000..9726413593a83a2521326509284bbaf47c046828
GIT binary patch
literal 1551
zcmaJ>+j0{}5Iv*Yu2yR-3^ov31RFa@a)NS&fDB1cVo)M;iHsd5Ph)AyEMD!Zv@2Kn
zoys@lIWKw1Ly}75DqO_}@DceCib`@uyI|S4QY!WI^mLy--959<|9Schz*THmm_W%u
z*+K%PEHYTs;#~vpSzJq6TsBa#kj4Aj=L0Q1wD1u=&f*hXnIOz{3so#>al^n(fz(#d
zX$xc;x4BlS1irhYXc6CYv*dVANUvnEv_{{W-&O+S4aZY=`<+eITa}wGEvb%lJb|g=
z4~@riM^;?vZB?3K&+)dZI?&isp~e?5i=|hYjNp|qTa0Yl)pUYp%z#PBA@BOKt%H|)
zerMUy=_ZTEr^$AiF-|nr3}tJ3MRsF~R@3kIS}Fp_HT!LUyMI}ewQ&Y#S%OYs;}lNY
zn8Xxok9=$_=wmb5J*;c@&um=8yp7NCg@Ic(YWUK?S2mV$n|yEiei(#3*<DfLBflMt
zXK=>^1HZ;M1{yY2bnIP?nm_2)z0Jp}6$<2vjVRUY#?_ST3RuN@z0}Y;hm?wJCfm9u
z-9B5wUeyobHFtwhb$H<Si8>iI%<(Jtb&EI}B|B9M_i$ezAub4<>BwzW^Szb~*PZYY
zwIGyU80c;@@d43ztOBQow!@GD>ER4G^5N=w1|I0j9}3JLU^w26zpdgM5+z-ht<dl7
z8d%qt(dTr!0(RZ=RIldBAW&rT)9Bn|jHt<Xq}O&;Fdqe0-=sTYITX0M+f~Q7kKW^G
zGS$%@#1J*<x=klkRRiA%EWA<QaohyX|Gyt*`Hb~TP4LI-IMjF}xf<Y{aF+5Mch``l
z227UsAj<nlZ0sTV7gA-4^zS?nc#CoZDatfu2IGV{4U^x8Y0Shh*9nuL$J9PDL@*kQ
z1DN~BZY=J>T0e@DW3<iR7$3<AA{1~w#wl>sbkgNNk@}5Fls+>wo}_#m7brFJxnXTU
zro2eL2PyRDiuI7}6g_9@7x|Aur++;HeU46ijj`)O44u_1SV`_EdVvLK%6!#v$d7D*
zZqZV5X*!?%8CQ}wX7oCzA*N>rum>2s`3FuEp0a@$ApayGe);!rS_U}zL{NXOvm}P?
zo+CcU-6Z=wi4{n#M7@G{_z9lnceh9lJWIXg%X<k!yukbm<jCUE5T%G!t`^ySi#0Ua
Ov8&vh+<(gdwf_Kor9`&?

literal 0
HcmV?d00001

diff --git a/build/SudokuButtonListener.class b/build/SudokuButtonListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..fbc0221958b16a6c535d3bfa630e818875f3893e
GIT binary patch
literal 2211
zcmai0T~`xV6x}zOWI`N}uLuaK_(dV2vDPAjQu(yeAXb#N(pCq!VkFGa$pom6UH*bT
zxE4IL))yY?i)~3+edt3U`p}=ye^QsW-Dd&<E^Sv<&fGcooU_l_=iHn8@%Jyk0yu;F
zakSvQ3N)ij#2FFYBF@Ip6Gt!3#nFlLarEK+I4+<+jsXnDF@)h5M&h`L55yo7r^}@Z
zTt-%Oqq4eUVl0NM668bKz9wQ^#C7q%VPe9>M<za22z&05g353;?dBDth2o4mS5$~)
z$AeX`f;m<6eb*@{G)zur@7as?a=NgTb7s?*27(>hM9<}%oZqK#q&<__a(#n!$Ap40
z=+0<`z1f_juN3E}w0GT}%8SOH_H(XtReN__Z(h$R9B2<P)Ao{|){ENl)BS<Tu&jF}
zSmn5HPtT3o3qcGMpD^cKVZzSm=pJQ4nU0$Z@lDk=sW?LIPUWB!zhyDtF7svFEqc>>
zBqv!lmB}cVo6Qw`?P%|WP+{RHZd!N?2Q0LTIEX_Q4&#VI?Xcr}`hIKCX?5KBDNncd
zn3%NiDL%9CIc}M_ZNbKriD?Tn&?fF!n8jTaIScnNrvMXq3-fR+xLB}o94AbCVZlSe
zf{&twMX)UgB$0I9W=G0gj*vRrA6}l;3qq#C!3kZ=<?~F2oO#;Yk<+5kq)%8_!m@=l
zPFi?J#3@ksC2lFyzpi+N>TT4qse5|bS4ak`R~xm(*DjZF-{S;v?AoP+4dVE6s>Xt>
zuiB2xL*cHwlyMe{{!q@&yYy(=oQI&^GIDQ6c|-zLIkL=TUOTh?-2j6FUbCHV#_{#6
z_BiDWwpY-6RY>d%yBVW{Zqah}9I09DU-V?8V(lGSSrNl1Yh-Uw=VgXuu(Gn2-LfuL
z&_1WJ$a0MKjMQ7VtKRZh5rKBs_41pNp`Xca74_I1NtZC&6}>FFD$q#_IMOal3||`_
zBJ<m4D9|&xN}_R4^sMI=9adGh<D8XkB-6-1wtw(4*^@qu>O#Su)mxqD*yS<5;5u?5
zcVxBI9ma`~p@0J(kY?U|92OV|$-&`u7?QISJb8SACr=QcQQ93v8|B-48=+l<&;6;N
zp;FE32&G!q5l$UnhmmSB))9HiU4?eBp)X(&qY@RU;%6`FP>m+k(4qsWa!gf43xk&5
z)kZg9j&}ZzmCh1k-{9-c4OH}{eu7a#oR1K{;S%;FOR$owXyR)`)Tcy$s<yI(sx>t3
z)+RTwm-<vv48^X5>Q$z{%k>A;lu)~dhF8^ffjWLg)h0Hu?<o_m!9%Q|o-{~_JuC`H
zu+V+nX{2o855j(&B*7!3caoIOk=U<D=|hsZLP}Rj=OcO_qh}qWFEC=FQ`NUUL*0Oh
z`Y1#5k|}e8QHB<7QmN*a5*k);DAmmJ8&_C;b4yEfVJ4ZRD4}Turm+Si{Dju!<fL;T
zi~vOtYQLbk!P{jsv_?1xeLUQktgd*BHWn{Lw=n*m681MgLZz@4{uYt&lLuk7_RpWj
zcJzJ09HbFrz{9++jxzKyoDR_92tP+i9eO6Xa+m!NWRkV*gbe)`WH%wt60(Po-Gn>;
z8c5!pn~>kL$`}c_5$-Y)M)Wa8!(EX?gp0m}(Q>;hnusKCcbS{DC!z`SWhxDcDAl1y
zuoAMr$wP!Z{Pw`0{BZ{xZJcnRpK<`T8007n@mvk_Gs3?F1MFiz#&Ib~wGq+h2&?Ca
VsTb&0>Mtk~C0r@I%P1k7{udPo-|qkb

literal 0
HcmV?d00001

diff --git a/build/SudokuSolver.class b/build/SudokuSolver.class
new file mode 100644
index 0000000000000000000000000000000000000000..bb14a006795778f5e783d03760c587c279ad5bdb
GIT binary patch
literal 1725
zcmaJ>O>Y}T7=9+Z>s>pWCM4aaq;_%AwE1e2LQ)6fekLWYiwmW$S``j-V-M*z&Th23
zt_UX%5#lEhPE|Qnks>5G1k?kU-r$1758%X~KvByxYl}KcgtR;J&O7hN^StlO{Pyzs
zuK;FI&Y%m&GRPvAfsNy7N^kXY>qG{_IBDTj1`b9t7{!<}7+2DSiPI*|2&B$?z87B<
z&_>7Z3g`<#O$v0EJzsv<SY49g9e1ftjS&U)$DGrn<!hl=D~^34&{c`u>dH-bEwM2%
zDR3w;yDh7YF!Gdr%8M%Q=M?OgW2sb9zL`qU2&;0@Q^DV;G-|<0qoPuTlaJiTu8l+J
zHZf)6EZ(+p1bsH%!L&fnd=SJ@9J*^aW&ALxMcpaPSU6{+fLRmo+ISCh0!PbkemV5&
zb(xn@ocDa<YLLjJjUvvQxM1TVF4^eEQ5%<Wh4|VrFpokpRd@a6sgIT($!g5nDB^o|
zD(g`!SBal=L+QtNyj6LVNxdkk=M9cQgPu+~iRJ}Uw?fa4D{&~@)nW$oSP+<e4b{!R
z*ot3l<--?S3NNwyd68dDBFbvu*JQ*R_piDuav|`mZhX&+A5w~9*N>Ug8ND&qOqBp<
z9?xGc3iKV2Ucg*aVCuf|+wY}LgSjl@1zE4NU88JUS;-8iH+2?w@4AGUkSz&V(SHhk
zv@~|t#8uUn>jJ~CtLgcVgB3Z|#MWf7=vLz(TsOgjrOE+M!W#Qg@_iXD)ZHkOr1ot)
z#8!;v3Apb1wYrRkn~uf(OxiSi9Pg~J$pg$kZL@E-zSv&WR)__+UaxquESmU0;N(7j
z2VoO9{{MCu<o)d8)dh6$GNGGe4_7(Pg0nIHGsKS+c;+~!5~bSeMIT3Hx<S`8=fW@O
zxH3Mm1FfJ_oHdRZc{yu3`X>5*f_}t&4g=Uh>KQt@?lmbo`Zhf~lGsDAC~J&npc5uz
zTfBxD9OG(&Ag8H0OpC+lctu6Zgl)png|36v9qP)q5dFyrOoe6bLbfOU6c4nEIW^y&
z$mVun?I8UfF6#x|(R<S0V`iLcN8dqa6GKf4wdzc$Y{JmDn@Wwk4P88Y^}Dvcp>h6U
zql4p<HVSjBpaN*|{p%s1EU)`19OXmuCN5wA?~}|m9LLAh-@_2@)9y3cON=Dc29VxG
zhuDS5|F9TI{{utt=SOOMI+_GUx>fRTw1VLnirT<L)-jsg9Q_FlLNo~O?=}O+Xp!Gz
zkj<vnY6T;gQ&UPSn2woxinCh5ax4mi6OQQ^4;;%$J=h!GV)(x{OpbrFRbVk`<!QF<
z3^`Ad?`fW~Y4&Rdb2x|dl;<gx_$uDw>OSkT#Fz04T*8->zoPDITurKR0-d|iL_gW9
os;K!TdW2wYERk!KMPnLuf(BSvFs)#bOIV~f&$Y$%ApfC%0X}1bo&W#<

literal 0
HcmV?d00001

diff --git a/build/SudokuUI$1.class b/build/SudokuUI$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..d56e53b3c2a32800618a4431e7511d3f7b7deb2a
GIT binary patch
literal 958
zcmZuw>r&G|6#lliv@zwXf+A87u`QQ~cLl3ZF2c0nOw}3v7t*x^(rhQ$6nzGtz$fsx
zGgus%@d11%9nYp9{4g`gIp^DR|2Dt={P+prA(k@eK~6_6#x+dnh%0$RM-t;1jABy9
zO-w2CmO9JpgcZ^#>X^oihFJ}!hT9A&x$6Xzr0A7eSQq=@>x~6M7ah-$C5CMN3@*H3
zNR&mLGxSy*k8g#|9qzxfc3g#6wseH|lKbz4-{f_Mv3zCEYFnmtAWh!po-~&tmsO=N
zsASoiwCw$=)jG+c*F@;se9ch_v#0IMsVr1r)w5j@I9{X5<*uk}m^W|-cNx-KJdiI$
zAPw|mz`&pajc#~NxNYuJ-|N0pH*gR4H9RnAeUA)0#uEbzSTyidMGRN0T*G%<m**&7
z&hY}_hBVuphLVA2cuqSy?P+qJDr|Tj_sgyo1Uz8qi-vVAuVHTQ>~UK%jQ)52iW5jq
zk<|EUI);AR=a%GAyUU@J!efZ%)sj*{L<@PJFrnz_1~O<3F4bgonlDt8MyF|8v_7u+
zqREiScR`gXN%OR6vH!4lG*H;8Q`v5cA=T~&GdQ3fo15FMh)>I-kp5s-98`G_SPj17
zSgvR=6wc9G7R{FM6s=v#&uxK-MviW3FK9(zeSL}}y1+4d2XT?mOQcPZtq{F9{SB;m
zgxFWI7%tN{MG~}sh9L}}_<thr1fi?Ph`&8TqI!%Z$<)?t@eu3~S_kP4GBdLs=$|oi
z1`?1_RtFcpAj1ZX@5riBv8dDp(xflbw@l5h;5ybZg$=qkn<$}5$TqH!hk@8{lr+RO
fB$L$0)hNRVu8~a8k9Hkn5i*K7k~%frLz14q)JD^m

literal 0
HcmV?d00001

diff --git a/build/SudokuUI$2.class b/build/SudokuUI$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..aeed762d2ea667909f3e9f10b132d52834e111ec
GIT binary patch
literal 1201
zcmZuwe@_!Z5PeHquABz~0*b$=icm_Sii!$|mQtixs!7#^`15+V(39&ex!Z!@!~gsi
zCR!4WegHp|arUl_)!3xFw{K_O%)FWX`RnTs0Jrg|4@0=3V;GYfuIh-XeJY7*4e2Ci
zbR>{b=&V|@YMJXp3iCR0xTfPe7IZq^&~Q`3qK4ZHy|V5Elh+vZa<yrT{pPdMGNCJu
z=g3ut{`4Ps<~c*WAZ*TXvg~-g(rnbY|J1Cx3NbC|2=58^cZJ{JHp4`^{LVZybLNrE
z@k8#(Ts|}@s_$h*)?byTwZCm1v^n&uX!;i4a1>#GC!Kl4LIH}N<%+=Z_O`jK3tPh-
z19!2+kgV`PZi+w}7{RE4F$JDcUhi|k5jo_x6lI|<M8JK9T=&&3-B{60PFYpV1~0ys
z+zY500;KY|wBcBFhx<Xw=BYj3ab2E@(o3Z?^90N=42H$JCWWg?pQ19v=tiZpY+wcV
z46Ne5fd|MNSVKX>x`84#G(0r0iIRaWmABq0dvbxnD0v?D3$7UiJoqcb<JvoJNrnqy
z)PE%|I{{UoGEa8s$lLO{DS26#_F7X);ZcHV)rNGtQC+z&zleI*4TT*GxKt{2gqe<9
zJ38<FBW7e4_Ie<wi=)Q}+*@}{SCBZTyT+p+8VAA)$D%}?-s7^$sV$P*Dj21no{92t
zMA#%Xp+PvURAGBS2{S@5+BOkSz7`0#Dftsq))_`RJl%B>S0oa}aY>wqzGH9rq7j82
z{f{_G3B7q>lbXtyUepl1NQP5jgM(@Y>8<wAe+;JyJwsoY>8ubvGy4TBbBvx(bYd8%
zwU>5aht{(=*S7xvjc}m!4Y8eL#J9g8u`}Eo{|;>@Hk_;;qpy;kYeCPl7EUb2N8=wc
zk!`_PN@PBReMbLyqJ@DLPO4)IgDPB47;XxE^!*Y^yrOWgDfu^;##>}zVgWVeVbM5p
poF^*->=!mQ#55%6?c+koauE}>$I0^&6{dJoxJA28$q&&^zu)bUA`$=q

literal 0
HcmV?d00001

diff --git a/build/SudokuUI$3.class b/build/SudokuUI$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..433bfdcb4390836d81f9fd121548c17038a9eb09
GIT binary patch
literal 728
zcmZuvO>fgc5Ph4Zacnj;loBXV`au9EEp?#>4n;^%l@iG<l?vP)dr4i~b>&^RBL51h
z1jK<Kz>h-AI*xk5l6PjFXWqOW&!4})egk-cEgKCiIIwZo!9Co!(Z-^K2Us%4vP0pD
zg;fh33y&D;`Z!jdO$Nt5%A@p4{;|JJ=*w8f`V~Xdy@I=+7-~CdBp7D>Sc-%EbRe=1
z!5}e65b8LUha&r&W~U-zSaSW7;5_hx3+;(>A+`6qNZB?1wjpzl(mV^r+t?5^r|maP
z6%p>rFiBM`hx<Ywr;&xn98cgfG!BH)?^2~Xu7Ptj;acc&^svUUj;9tjI6Q1}JcG;e
z+|)Qz_Rbaq?@KANog`37D27%cGYRC-dp|f4p=Mb8uW~<DT2LiPn9?!KhnWbp*fSr<
zzR9&tB}3IUH{?@zFN<j;bHg(0FdvN)F##KH*EgOSyDEMG@t0FK*rXMMrG%bT*zTmj
zbg<8|SeCexpG8Irkztv(zy@6$tkp7eqUEU2+r)K3XUSWo*dR`C?K@cS2P)qvqH)k!
zCkv!>-oRX$->2*<p({U8-S1t3U81%=#!TssQ8(Tg))h?~GgP2ZLryI(uz;^5Y(()*
a!Yi1^EwVLQ$=kS7AZ<J(OQK1B@%#f<Q<~QR

literal 0
HcmV?d00001

diff --git a/build/SudokuUI.class b/build/SudokuUI.class
new file mode 100644
index 0000000000000000000000000000000000000000..97e68350a03c3c5067d55bb5f9d192760db83f32
GIT binary patch
literal 3222
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
C@&3~Q

literal 0
HcmV?d00001