From db1671430113b010d9581b05d6a671118cd6bda9 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Thu, 28 Aug 2008 02:57:03 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=BF:=E3=82=B7=E3=82=B9=E3=83=86=E3=83=A0?= =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E7=89=88=E3=80=81=E3=82=BB=E3=82=AD?= =?UTF-8?q?=E3=83=A5=E3=82=A2=E3=82=A2=E3=83=97=E3=83=AA=E7=89=88=E3=80=81?= =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=83=81=E3=83=A3=E3=82=A2=E3=83=97=E3=83=AA?= =?UTF-8?q?=E7=89=88=E3=81=AB=E3=81=99=E3=82=8B=E3=81=9F=E3=82=81=E3=81=AE?= =?UTF-8?q?=E3=83=93=E3=83=AB=E3=83=89=E3=82=B9=E3=82=A4=E3=83=83=E3=83=81?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82=E3=82=A2=E3=83=97=E3=83=AA=E7=A8=AE?= =?UTF-8?q?=E5=88=A5=E3=81=A7MRC=E3=81=AE=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E9=A0=85=E7=9B=AE=E3=82=92=E5=A4=89=E6=9B=B4=E3=80=82?= =?UTF-8?q?GUI=E3=81=AE=E5=A4=89=E6=9B=B4=E3=81=AF=E3=81=BE=E3=81=A0?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2300 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../tools/MasterEditorTWL/MasterEditorTWL.ncb | Bin 11103232 -> 11103232 bytes .../tools/MasterEditorTWL/MasterEditorTWL.suo | Bin 39936 -> 41984 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 15634 -> 10706 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 29 +++--- .../MasterEditorTWL/MasterEditorTWL/keys.cpp | 5 +- .../MasterEditorTWL/MasterEditorTWL/keys.h | 4 +- .../MasterEditorTWL/MasterEditorTWL/srl.cpp | 91 +++++++++++++----- .../MasterEditorTWL/MasterEditorTWL/srl.h | 9 +- .../MasterEditorTWL/MasterEditorTWL/stdafx.h | 20 ++++ 9 files changed, 109 insertions(+), 49 deletions(-) diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditorTWL/MasterEditorTWL.ncb index 3fa85b4f19e4346a87eaef22458d50fe7972ae9d..809f9097a3b619c51ac10083fa99e07db9a969ab 100644 GIT binary patch delta 31842 zcmc$H2XxfN+USh5Ywvp17h}L{Y-6l-0b_$P2GdOMU`hzRW2)%^LRmv#O~2$u~m zJ6u60;#AqtX`UN@?xj{nBwv!PC-%OKOAftb5v4Ytc4(Ai zb6f)FbNc|kJ@*a#g$_T!{R;5&L*Bq&>F_JuYk-ft99q~8g4r*DZF~_Pq0jx`j1CXs zzXf=wSeK{p1&dy=pT7YG)BHXVpu=zRj{&|i?aha6I{Z05T|lTu)i-cnhtCq00sNR> zeNl(66w*Y5R!#NQ_b}PAUQk_}1O@Z_8Vc6oIpP+8AMzVPhz{Q_Hj)r}q5REM{aJ_dMv+#7f}g?sP@X%7^v^(%-V<=~qS zG}GaYoIL>k+7I4Rhxc+00Qk2@-qe3jhi5rQ0DR@oZ{Y29_(~S z&KXb;KKe~TPyL12&IJH}=J!Hh9lp@H65t*D-~)B|YUdh&zpU}5ogq4Wy>k=5OILpb zAECpyIX_K=f>w3k6pYpj3Y_}^K4|(I_&6PYzqAj>D63>Ea4fxFft4B(b!ZD%KZkNlT$kr(9efB9D;A%GvTn*(*=!DbJ8+$#dj+ z@e=P5ozm;7|gyL4>m9k2bQbDPtR931fHI&*)U8RxIL}{*!c20G6wpsOV zpOro;=|X|foq9rjp@DEgxFp;a?g<~&bLr)uks4c~%X(%Bm!-+h+0KPd{+fa;P`wt; z$GOZkW07|v92nm9|GBQ6n_iL1p=#P#Avaku!j_^o(JOp-Q0GKTxP^sPDE6VeIk zvN_}@QlM;;?Q)RpkU5!`1zD6OS(X(!Sa!)_a!EN{j*z3|(sH!yP-V9qBge{day;oj zB(8X56**0=Dp!-M%QfVha=Khgt}WM*>&p%0#&Q$6x!i(u8Kj1Ly30M}o^mg_x11^W zk^9R7J}aM-&&wC&i}G*sCHXQe-c|Vz`I>xPz9Ii9 z-;{4j@@@Gq`M&&6ek?zc|B;`Q$iZrOeO?h1QIQl`Q52_AR0&avDaDl%N~jX0lvbjZ zPRfVMIAtfK&y*jOAC*JOPs$a==FD)maSk%qQ{%rRn|DOlaQ0T_D)*FN=b-taItR$( z;>hbA(G}yX@;||P2EgS&n7PM1VqQCJT>5N-Ww>}32nxzFT1e+fmrtWZaTRS$E0whd z_Ei=r50qkL^80F1?0V-PK#i20Tt;mfE}&dMVn9+r`G8W=e5srBk0wSN6xDxwUk#1Q z=X-&iq4d^)>&SKHD#V5AUHDcy1Z)3`bRIqy)=mw@qe~|3W$e%;}YC z$+zU6;tf(}rGhzvHgk>o19toZFxuB($xS+SP(y2Ul9FNKe=+HQ4&Sz)(aCA}FjG2c zL(s;cO+lN3wghbrO5=M?Glm?>_sTWyP7|$z8Wr1`UkUxE3^a{j*~g&hIrt>=N6^Ed zM?sH+o&-G&dKT0}76{u>jb)!m&q%qBYH@3lR9;FYP2tv4lDC_z;3K@B2@A>$>J!vA zs9#Y3paDVcWQ)@FR44*Qj^?9UOnGYsYqGVXHN{%Vy3P8MyUI@$DvR~RmSQKdk2p*m zFDfxEWQW=*NMXvd-Ps;&Pqr7^n+@lcMn*@Q@pGCRcjNgvEnNY6?^lys9o4#0NkG_@ zppMXq+Adn0q-H0z1on^)om98yK6jq458Snu*i39E_7n$+ABy{`7_9P;lIpAsY2R=c z0woTu!(TAx?APr#?0?#C+Hcu!+yAnE!SCkh{1mEVLU|O-B(h`KaqM{3!)CJ+SQkGg z!kF4E%9t5O7o6+{Wz2?9eL&*~?yMH)HL;+9v5-7pOLKQt@3O#HDSz*#^i^g7-fd8J zD7OLoWM?twWG7|0vvsDskg{Ep-dzo`v(iwhm9v$z4e8chjdf67KZ5&!`;gm7^17>$ z;t}yD@u+yCsWDB}$T!{9aBB^|qZ~;7=&ojl1OnBkfZ(K*v4~sB9aPFYD>~Cij~;5Q zXQ$2#d0yZ}UgAsep}dO^<4f}4d<5_2%kt&;RK7A_g-_$F^40k2d=0)PpU&6fYx8yZ zx_mvp8Q+|5!MEl+@*rXOE__$M8{eJp&G+N8_@Vp<{CM8W&*JCs3;4zSa(*?xiQmct zDf4$Bz2aYccqCxKD%b^HkOf6h1-B3*qzILSRKbvu?+I;%_l4d5H08ZEVtb|Fx&Q4Dmf0d%Mj zbYvQQ_E!+!7(SwkRmji#qGRy^@_Ju%aM_+po^n?y;_PE;EIYX5604L`Dk^D8 zx>8?hMmFz{4zY$yv!%}D$NkZv;X%OEIZ(GKEi|)ibIt$*hhoYw?mKRnvPWZkt9JuE zi?~G~BX&R}ge`9&h)p}a*q-mR; z3Y;_@&{O-J2Hh5sRPuT-D2l-=47T?nH{mP5zsOqQkpAub-t?OLSSs847{8fU^{6$W&7E7+V+d>jIE2* zO{xeA&v+0OQ~~}3UuDWUmN}L?RybBVRw<6vjy|$exxZb~NpF*~ldKw|7RQaqF322< zxh24HD>###70GWy)DU*3*oHhCqPim+gNoE*kkM!_z7IcuAIuNuNAY9%YE*QjIRFiR8!>lE( z5!Og+DQlE|XEk}?tArc5PATqv#( z^TmlR4Aln%=UzvWhJoB^#&?w+q|GojHnOeEC>NkM)i*fQ!jwRCKFWY#p);~#m>QPy z0`!9MLh4(3!Af}*aJ`S^CQ4JK85mKwLR}~mnprJu5H<;0gl$6prRXxA9bmrg6221l z2z!NZgl~m?V9fm_92JfU$AuHZN#SQ0&t>6?@P}|sxGvlfZi1orPs z_}ho?Fb_BXHwGg4Y`7X7{ogF}A@X{-nv`KM$>9TC2)s0CKWfR$v;JkhW4&v=XT5Lz z+xozIos&Q|XUWAC>H(q>;ViZ>jjmXA)kNSaFHZsS`W}eY(ZUomVT2mV=W?-51~eJE zS|!NV5rC@}DU19#LJj5TN*Br*qNR@1fZQLUx>=XJpM-v(hDS}~wtzU<%Z*d^g4TWu zd??hu9il8(Rw&Pv7fOUPl63k&4Q)lOZE9N=l|$sAAmPS=jHBo^73AD(kaY7w)-3^P zM^}CiNW3tmq!I&CkD^{ONWLl{`)Y#ps|WIrVg(r1Q^kd6&9+lP-TTGDl^2z;wo{SsEMD8SH#=meetpQT(nBE zq(~uB2dSqtT$(6NleS3TOMgf`mHvtcbdH6}7s@f^s`5y&J4-mrIMbZfolTrgote%) z&S}o+&d;4+IKOo6a_)A1<$Op6jRKYa33rLl1Z%X8*h1_e_7;bTW5wB~olu3JJ=LJ` zokDf-6X%7`4fQ?(Ph{o*6akl`K~C}Ng1LH0~2t$vP$^`Oh8T9qwFPNqt)Whc%Jf# zZYH03&D({1(r~mIWqD7=3K=|Fb+OImf5`07YG^kF?AU|gU!i)gp)VTx-$Bs&DORUC z4}!0g@~^479P^E+oFQ)xabHUgPU=a-Qh9X4D!cfWcD*a$UIr+C-3(bMnsJCX3ps z>^@|C_BhEL4}zyT-%aMU>EqS1IB z7RW-%8qcvKi91`33Qlvb&oFBB=0ksB^&#yhU9#0sM;E^Q5~JuWnVhXgv%FkDHfO8F zt2L08OJkfKn3*N!C(d%~XBi#a#_jmZP)Wk^1ST(VMc~T7Re`GmKMs5)_Lef8{Rle& ztZaclNy<%7quNq~t322xbS`Ivw{5r-fU>3ovIR#fo5cOfmhRT}g+J)G)RMxTMB>q^4DA0{$r(L)i>+&C(4R_&f)s1S@do{)MHkIVR zgHAz!2~B&;UAURVPEtdYI`et3e3TWLz9(niCIeM=;6IrYj+2g4j-MT;9ltovIL<1d=rv7+WBr)bJ=R!lE6dS&h#?2@miWy=@F;g5W zjw7>k)F}Qa7|Zvj8w{f|*^{G&%8$7B!5vXsY%aDJdx?X^G2|A2t%Ic+@(tpcq7GvF z%SFk!DQYO2DJx{j6t$Ho@bh4WX%F+cPm~z)a*A3uvx^+0oF5_R3*XL`<`{g*KdP`A zB2W}1X0ln%mnLBwZW*7OB^9_7WmGJ4)?HK=$+N(6ybTF-XQ$&6qt_=%-c<07=8?@) z)hN&ZV8=M;nSQ>RTnN7voTHSB-9TNKA_4sa1_TTY$O;ISrbul-WR)`s?+kyAKhIy} zFY&+gSHXWD4PgQZ3xW!g&%N_Y0bp%Xlc~)#&~HDKqlsslS|fg(^gZa7l+(IFv8xYC zT_z}WQ+2P?IX!-ZKy8br-X-nNX=)VqOygE?t91S5D{c>HIQ~wxQo!T=d8;06&>b-T zTy`3tuPX<;`BVJc!=RxEe-=lX+)nW`u|WJ%+yxr%*Wz9e#3S~Je~5pIJ~8}CWF%Iy zNP!YBL6}RDq#{zVR8%T1g-a1qq*MxAE#TnQS#@=(fz$?4TS)C7b%N9dQa4B-v>^3^ zlm%%pq@j>LfHWG?7)awF_3%hEO@icwGzHQONV6g3L7EF`zMd9?>|Fl82#Wl_chLNQ zjEOY-&(0VlCSurAb-;B&ofjG4{{;^)q;e2opuDv(z(Bs5rH1p=Dwrr$hfoY?`{d7A zYFN}W;2Zsg(*AryT&$Z|%jLSd8P$ly&Q{CG0<7GFG6oAc#V?jFlfJXnC}(jgOp28z z0I5^nkPHY?ovfIxhIwvsXZTPswQGuv#kOL1aiBO#9IM-N*|J-=+2R#^)}ZjO*^Z43 z;nRXYZ%Wpx{7s-{${iX@YfSGxc!?noMzb>j~>g>nZEc*3;HgJOe(1 z`r;7X1RVjj0GM zFX`v$2J%9=hHeDcChj?ER7iC`4a^ogYp1QNoj;ly@d?sxj#{7XDT`#|9MCXZ$*;&S zb70~A6yqSC*Yda#3-B4_G(tVlT%_gvUs(ooosUm5H-ZF*=#U(;Lvc7A-DO@G2(wGw z;2SYvdfDdM=Go@k7TAbwp$#|>FrHmt8|;Gp541~e%P3`+7K$R^z7Eb~o{(X4)k+ZI zJS=|zB9bE28S$L>E7>(yEzSaGB)`m6D~DF+JIDdbV~A=~bIb_M(irPFPD8J6X0DY;fNI)f+itHwKGrNV|%5Gz~vo;8Y4g@@; z{aDZ0c-FZNeEhIa1ES!SnNyaZEvGHNSk73^T2@={a;adY`zt2v>bM9y9|(^Ia2_u; z(D?`{H(w3S93@97N!1LGA~n|NL=#~$O!HKT?#zX_{!-^MXOfBUn`{Nnq`}52(ujQ* zQyEj(9ZDC|Ae@Afm>HItmRXkBmRw7oC z7|LTbkl7jVcff;yhXIcQL}?s(y#R=88sCJ76V*skov1~^))Z=pi}MVuq@k@*+yN!c zS(Wr9YGfewwutiQB#(fm5K1;f7V(@LBdBjNw%#2$9qGmddIPU)@@B_*v*Yu#%j~op zxOhORO70W2Hd|HxgH&3mMtW*VwWK=IVsJ<;h0Pw+DODWYb=2|ntvuQ}+WB>?3zY(7 z7|V_4KH?^G^SA|^#(lw+=ac!(BHht&M7k$Ekp?JPO13glS)?pczEpNA$CZ=HW96w5 z>I`$1b(VA1aHc!IZe)=6V!k?P#*{X0N#F$-eaW!XtAi^jv>F7b*f@ttqC9wLm+p15;NInD_e-7wrWepG*kGekhIszt1=b%0d8gy3yZ5L|m+f z;S!|mVu)7X0=DmlSeqZ)Cmj|8>4FkNMlM#P6IR0}iMKp!q7kj3F&Y}7vB;a{oJ9t$ zSR`_Av8r0y%T|RvT&zZvZ6hP4))>P>L&JnLQYTF{2=oK+6;*ZS!n<_#ib^pgeF=Cx zK9K6eZi9`c!u7JZ8L~v}zzVWPjxGWB)|X-@>2q*gBsVk$mCo-p4V8ZUPH;HT z0B|~P%FM9twti*(+PcTO*ZK_ziotTIk__yQ#sym970f`}dD{isMcZ$-OSa3luf%TB zm*5J?{oP+L4g*Y&M3{HKlCXHbi2=`qozyYC-FGxyG#wMbb|vY3_nONp&SKvODkq@-MK4VbJN># zjtc@QO}|qD6!~SQ4Y!GW1z)sgN$K)Ua$%Vo5?mZc(g1u&59ChHGtdDl+Mf~oa=_Zk zBzn18H}rj(RdyaIs<+h*0!r6L8~r~m{X!-$2P(e;8f&b4f^3GDV$boXh2F3&h_-W5 zjO=X);KBG)CfvT!zRAAXzQw-PzRlj1++VInRiv@xNEiV1hp)kZFo}+Q$6Cia$9l&G z$418;J)%k75Y?qsxd!PYW{c}m3#bxCaD%7YqR719@wnmb#OWgn|ivINWR zge`}3dQWp3>_$G#Te+9uzO;+He!wX2wNin$Geb0YXKWlwdrfsBN*={?bgHNY;DAP^_TzMmWYv? z)gDa)ft2cj+wz{QnKFAOs={2bT(taVxn#L)`Q5VIdYg*@@46qe60_|_=cwv@NJ8ca z77+Iq@E@l0on<>|yhZKgq2?Pk-Rd~EnEPkS@_&M!RSagLDQqWc4vz8+*u~NoHkPyp zmw89n&(a-2W_>^t&Vr35gTaM96m;Uz;zH-2(+m!?9p7LMIDT{-bR2RVb{uj1(EHvHZ{IYrW6mm${MUS`m$5Z0IyUye6X9+L+PpXRx%;r zJOtbYxe(Bp3-ho*k0#v)xpx<~e%%MJ6^$&(PN%boGuT-aJXjEA(&X*xEgW40IBN#@ zu5X+2@gtPTd}NtqnQZY|ax7CUE36m!7bNmiHLTnNn6t(Z0`#A=S$ZsLj$B!fH&s*C zn)>x*=Tb88Q*~s)f#|Ue8C#%s_Y{{(ON%y!qPo!YQs^SyB5oD8iQ7$kTmy^zYwD*gCNtN7Ef^NT82bHFxv$d)7QQug3;d|i}gh5-I zEOZzyU`pA)xBp;2VE@s6(0<6?mTwI~XzD`D;iviS)LF^5o@zMpRtg^j>!G_w8@DT= zGssF@B`%<8X@k#~;RE^@Od=C+V2aw?+dJ4h+B?}h+q>8UMrv0-RR?3wJ=lzu2EkW9 zHC3FVNB(BW74+y{C1soGTD0QPOv}Jlfvp4E1ilwo-BuvBlLDq&b&RC@SLpVoi?Gd# z%H?=Gow3>iY=JhL&29^_)wfZ(8x7kRyJs4m>W{ZDCCJIo)L?v!{P~&s$P+Hby|rwH z`-CpnF4&A>1PzVFdRvw8x$_Lq%3WBnhp=GJ^abR0h>Aw z{N-g}=c;Z~gBIFAN-JD8WABr(o9RC3HXhC%a&iLS--t( zHe=aR`31Yx_G|%4A)R)sWj!`TJ$5(7zz%YlR}h2~sDR5ryC6Y00_aykk`3THs5+2= zzJUb$wWqy->*@pg77{{Dzzy!JPdP~j`VJC8Z9xO^!Ko7?12z=zgM5LU?l2xH8Z|NC-9bt51#j40Hq%LXXV) z9y&5A$TQGSkYHrGTroyWHN*^b6cR$8LSWSQ0e!~^Ispj|3HZUOft-O(LPF?oKRDG- zGSDeV2)V!);%f)|8y+b584?((eg)L)n1N11g1!2nwEAA4MrsE71rh{H{NQxsWd=F} z3G^mEIMw|#&{;?bJ@kXqh-?Nr2MG=Z{0g2J-v^571;3(SA&&50^EX-j<0=BgkEqRU5EUf zUqPe}zX85xgn}Brd7+dJ{}cTQd6*wON{8P>HzBX$2QRI|Z=qX|d;Q?iI{c0Y-GQ4M zeg&#ta2MT$ygaBXzMi^u_&szF^2UDf7#)6J-_!oSA3Rov|Be2JJkt*zr^6qh2aqpl z)yJV(zV|G`%P@FX4n0@3qW=l$U2b@)s467u_g@CrKo6?z4EfFF`3 z>+sj;HRPdw@QU#4$)Mp1V0rWXkSj%hfyFGqH~PUV>2NrS0Pyep;Hf&?imd=Y=LfH> z!vioq*VPydT;I%9(cyM%#{e1&EI~(#clNBBq;8cfy!ZePAdy~?knyF{Js&u<;b)n@>l-%JLDcSNJnCbIcE5ME=^SO5g)!QmnO1!h7Iy}~#& z4)Pd3cuyTZ9*u|mDKzM--%E#kC?7;Y%ih3y>+o!p4SAR!JX42HKocPE#)*(7P2dy^Y^zb2t57Xh3&?LzB!pME~KhWW8&_>9qceoaK!Rg2; zya&8Fh?X-*UsZBupIXY(8np&kF4U!i>I4#elwP+DqKhI-rHl3^d8$dk=>dO&?T_@1Z_B!mXn@q2*|z8C6`vLK&q zzR(L^po8p%20}uJp40ISioyq=vZy}!YCkMzBBHF|H?J|0Oc;q*uaJZ&D|iBMI!gf0 zo~FYqqN*mGj)cNz=xOXPG1-VFU-;5b#>i;^X5<(Nd#S<))YPprY#Ecfm;k8#}LF!oU6lw^*vCf zVaqD49HQ`fI=qzbX&f@ffO}}ce7zt7nnmaf_<-+)1vOb=s>0#mmb6twUwSfalWqQ_RU{oqS=xPlb2d0ljm z1*g;vr2NXVlgO(B>K2wkW3(=-%8teh4yhbTJftoyIHR5k(#|YbV=%d@smZaG;3QFN za|e+i-K}T%dVWXk7$KlWK+S;kfLZ~y1L{C@JpFTUAFJ|F(&cltsdiv+^iHgeU9C>S z1;yM$d2Q%rwKvwz?0}XF>bPriTFuh#@>mv9`3SyC+l7)jd%p6Q4(qFBt4rU<2Av_Z?g?$$gk7hbOq};h^~*cQ7f#xFbj+ z!EfM-4&R3_V_@Z;Srl1~4;Rr37UDfn@X8NfREN*Ra{)eaIc(*z z==BFv90Eec(`kJW8NPO?5{6J2oC)yX{NPmCLTC)4GK5MX+7UA9C--7YEECI+S6`|r zq~_X$(q!;a_xn<7(91i_GcbJs9)wBmE;Yh)4KFasB7m_oR0hyqbY{9R6PX#zTxKb= zhS|dGWWHp+VSZqaFmRX&;)Ji5Kvrf;ut{ta@L6?)Gesle@J`XgC8&r;Va#!0N-!uC z%T!}(Ksx@tQF0dfPFUVY^n@it1|4(Do)JK?usEm`u8IeTCit92GV{vVl!c>0^#l~oV5F!dCt6GEUcAX zUC!9~wUOBbmSRJ;5!;CTdfXl5SzR~@+YT86-p_11V%+USgGU;B^Wki|o~AO>AT44R zL)tdp_pyi!D+BO)o^uO2iM2#UHnTWia)AFh2JO3NYvEZ{~Xli_l>tqocL(DSU^CVd*Xv+Q=tp zGirv@0T*e7NBAjziPM^mh{fGT1d z;HU5dU=BwF8}oY;-v;VPWGER|m}?9r3w!VcJPCX8Pr$oqPrt`M;Ny_aA23$nV;I{S zl#d$Wr6%=!%yjG*O4goo$Kr5u{FFPSV->sx(gA!E=1-|br;Y~F+JG?`6BQ1K&;(LbGIeu8HAhn>WS_Bi7s+2gyWKtLyODsVH8C7z)G_k8 zuH4c2Nra`ILzyky(;nPn{(@fIXS%|o)AB?3IMel{(dPsB5Izj!dkKVEk}0W=tp*Tm zX*QaSIPG?K%EcD8&PrqA>);XW90;z`DO~~>whd6&7w-QDrJ0!8gB=5*4Emt}Y{R}& zi*zyf?Ke7*1B0FfnED=Bu_d9GCjyl6iZ}&V0%B_mGk8d!>oCT{Ol9(bbU%i<{+ij( z9Ab{^l=e4p2rDbH#n{p;oxO%^3${HR_{?JWLFeeqEZ5g=-y9q)QnX=t3Ca zH5>=S`GBd+u7eq)AE5k+&Q^>`QNs!;%6AB{J?inHv8^Im7ke9YF8w)^1ZYa<7dk}l zZc7NkWyqeh?)hzetTh2Q!AabBTcq))KVPBB_DLQPjwvP}YU3Me{S4zP%?ieHd z9$#dd03)V-8V}anMD!7G!^TV-QxHBz$HI-ztVb=#pkLj=VOAh-38WYOb`3n7{Tf=Q z>ogJNFnQ$2j)Y3iUa$_$HySSLaVP=9$jNWNx+|s8dK8t?F%4|fr`z~15HwV)qDw|u z4`nqM;GTBLk1>+w=iOmgBm>X8W6P>0j?V$yzJ#Lyo8L3>IED4HD!fTsGZh!4p+q{{(Sx3*AP4fqN@iXBKc!hpf8bc2@iow4}12 zAw4vevO~;H6XjRqhk!M7x|4xpCxhpfj^$&t2`KQ-3-0iwE=+gO_-4cR>8PVX=2KC9 z!Q@j@P%UM_uT|fe2!z0glo80eCQ82vbYfg9_9$kg74Y znff}ZzW>A^jKO#;ron9b26UNR|IOV{_R+tu`I0345@0;e4_-lHOZnkiit zrV;4+bY=d+NlZ6btG%En{tI?9zEdE#Q3|dKN*VobF7U{)&{KmlCIBy;f~!KGs3Nl- z)S4!^1x%!72S+j``D=(gzT}Q5*AIALO+W?;tHEZO+W7?JVYZlhLVI?LDM7m8g(U4V ztXdSSvSrxVH*`(9Tz1EM_JLeI4!rd)NY>ZDVJm>{kOGpmHt^bBz?41!rFaAA5Vt@v zRzY~s@GZqoiiGKyo)V$1?anZ4fAi$OF;4VgE%k5wiDFHS?+E%6ke?1~J*JUbI!6}Z zgjZL+;YMWX=Ls=*IqCGfJH4O1P!rh$dODrPUCb_~JX@YUVoqxf7zthaBS7A?xe72I zdPIWWGq?zz0&I#-_j4FMj7-lF%&r+?;|MDq;gnZ&w=D z`h_i`$R+T!o`z}n{TxsjUeK)Is=E}c&~ZG$)e8kg6P8$hbssLU#mushMwi^j!hM)h z-w#uA3NfWSDR>h@JCuJxgjmOT{e3`H3;Z z^G_vM3OYFom>1iKE%+q%nuT0j8v9r~|1zdDQ?MzvC8M=uVz=P@ZL!7jZAmur>9M@h+gto< z+1>)P1?OWg71b_Xi;chq4`W~0v={ecuVU>|JpgKsvUmhPG$;TxFx$L z;h1|&!M11yv&B(5DZ4W|1lJ~E+oRhwEnbL|#gPV+O&2!+eFz+Y-Z}J(s@8NNcramo z7##YJ+Pt>sr8}KjuroT24MIWscZyTRN^cI@V-Pb$$4p>ecG78QbZi?qI9J$a&^y|+ zBj49K_`dJ!{5xuLg}vs;uiK(EZ4QpfVhScj-?M1H2cKT)j&n-Wqrq^xy6we2AtgdYTT>Xde8E%|f&ctpc-ijlLM)Ky>>%h*<9jbM{9F zEFXbb@lkYwELl@F%5e>Xhc^tBhaCMrI>hrFy7&^pP!Mo}7?K6zLIDu#34(Zz08yEe zz~_wl`yKrZK5aTXNzmoG$fwqiLW7LPN! znu7>hjJ^PW53N@bRYFzJXpn#OI~DL3aOa`7YY_dB0D2do>%jERj%%5pnh2kwx-S(~ zzL}w0K4~ol`SjW~<~&DEv+6!XST=p7==z)hx5Cd5ApZ?rg23UM`G(z|9=(}c$hY0| zENWdi+WCn7Y8d@Ybwm%w(=i-?&zwS3@ukX&KUMjZ-f#4%1?_BEut6(AmtVp_=yNup z%N&?b-#PSyD4?lH+CL-uQ)5w3DN#pCijwa}M*|amI7l&&V&5B_JE)UA^&`=aM`5ZO z)4L_WcN*?*%mCZ?3bPhmWCE~cQR zXa%CDw&{BmS*gp3zE=!UPZPcS3DI-e^vOmWU>n0(*qZPwIuAH<8AAM5K;`=v67!Lj z?^nLQL%xlP50UTS$z$X@c=B7J7_cGgqoUn9g?vX)E+DF?`lBNCSNT8B1+Of9r#GVN zE8GZ!n}Kce80d2-Y|2fS_4<=4E!kDoTy|> zwN?6^80_1C_#^TiPCkR|CJm1Rnx!;632IV|HE7jfNpOJKK>z+|WRHJGXy31E-ABG( z*ZLLF6DjngET&2=y|Wg&sh;X?DmoPz5FKm>*rntcC`DJ!cQ~5Ie;1<9Y~-1PvH?}; zOErP1^??!Y0$(6)_%iZsO}vJDTM!Ypm^$kOK>8Iht{tXcxC`wtPt_hk^i(u$VIT6H zgua1%&a5Yhx~*vGb<`!t)my)<4Uc0A=b#$cOzGesu8Zqo-yC4-cMx|1e}aM9R2^@}wDWTZ&tS^kH9St6@Egx>|3c623jCUJ z7M|*QR!CeLdgB64dCTn^y=tJ**9(j>ft4WuTN^bjWDV5{Spy~ikJ0u*)=&lba~;$K zH3Nkr4{&0O&K542?BFUmEv}g^hP$vM=05Cld4L|0%T)Sux||iUk2M@FWDPG1S;OnX z-rp!>4RRrCxKPL%t`)L|A~+Zq!^N?WHTa%=tYOd_*6?>BYj|478m=3x;ZPxKcvi?7 zUKFy1^M$OT6NJk%(FcXBp++HVs8GlnP870+%Z04L3na81eOkyGw&+i%^~oz_4Z{n` zA_Z55@Cgl_)F>p2e+pT{)k3o13duq!Bnz;MOtNT?x}xqVxR5o_mGiNNVuh?B517Aa zNg-=!2unKzM(AS=Hw#(A-9px2FJukV!2Q1t#^qxT`wCgZ@j})B8~aQ)aKDf>Al;)) z$>knp4F+p$Qm9#%FVw7y1J8{u)TimZP&Yc|t`Mo+OB;Zr=z7q+m>--{EtQNkW{&*e zRFYCHI|Tlvo@HM<9?C_i^q`Se>c{dGP&FOm^pIdnj~|?t!w(MYhj^&p%~ziq=I|Q` z`Y$e0Q`-lpx;WLKXvCF%Z6nl2;46UGEBr~2K%D^2;)7Fz4z}p&%Kh0K z2f7N^UAX>%%R0q@B)CH1dI9@_#1;rq%RCDL(OuxJpP-|3#)_cF=3OyFzlrHC8%ZBG zEe?hts9{I4`Xo_UQFO+91!e*!l)^#~opO3tOdk`ylhN;Hy`reSSz5f%>7bx}W~me1 zHt#|ZEU2;m#dQ}ZZN{ljHoYsNkDlJqDU=a)5YZ>c|J{f5cZ(zHu%WHk%`evYPoI3d z8l4-81@zUTddDcD*$}VIR^x`?1!JRYX|-bFzGfGkN;t2bFB4aqEtnKHFhCoa5;qqw zSeG{aNJ(Wni@&1tcUlu1Z{*L``l7N|WefbC6SH;322j zB0x^3LWG=*$&K4vB^K&4;3SHbcr&NJ5v_pS^4^PIf{(>-_Woi)3rb+4x#CR1*GY=q(w}Eq}`Yo zmy5-*uxEwtMEM#j}OysVigKwb&p zBynlnw}IP$*ESXl$g`z!?Moy`;jjv?UnfYEW!C`hum)R?9nOwnwQkGe?lEBrg}7Lw zgae3z(XAxPuCGf4Bx_|{J-;enK@|&Bq0~wlDUu7c<16DFn2D9h#Z_^ygA#yNV)XBk z>#O5-V2LdLIIaqow4XnYd&<&kN7u$Rj7xw?s|=Kp0Fzi5no594tqk7S1Su498{{P* zw?j_Wt&2+|+t$TZAlvpOrD%V*juY5|O>teZ*0o*SO2$sdRRwhQs+zrH+!MB7XWUAQ zwz6kjS8%c-jai!Xip9TZcyHWvt4c*4oqJpB5*0phFXcjE7iefq$YsjYZbsm&eF^z)wSFIzte zCDjAUmkoRUV#2J)&Bv8I^?dxj$VU%nhn{#@|C@132Zwi<^*ThGaWn2hG;6v3QX3$} zmu0L)_jKF%yS7}3Zx%?00)3XG2_&g_Jp4RzsrbOU5m;x~krN~fmJz$slAgHIvUINv zee0D_swGqv(p9K8XW}6t19YNbmGMudwvGzD3zEwCo5iwemnzReJ zCbHPH@wMWA=h%|)6M0?wmk$dGhxw(@2O z@sCnMwA(o;S4Hhchl)=_wHsF|?MscKlZ|ycplfFQrWWhu^u4MsTO)p|9t(YeJ%kD=SfW+&BRiAc-QCx-s(gU z>Q7ePho+^p)SlQ)iRxW1S>Jlep?U76{DEUB*}bc_<*nK-beLrP1)msPJ#`_Dr8N7l zm)N&nx^8Jqx;=-N$~;JkV3>U?NJ6vtqPi2lMy=E~%ujCs+KNXh<1ll^fCSJ*`29^O z5$mLGXKwoe_S8xJk$G$YthDx8l2^vYl~LcJ;0ygA>dT(U2y-N;!_1_A3j=s{QslB~l{ULL~^LbWBYR zVnOvKv+uft18K*Bp0yhP^u;)w>TmxUC4xwe=Y7A?9`;Fnfy3!ef&W~!gm$-IDrUl| zTKPZL8ju=hgN=hE>tx>&%xWXYUXnfvW-?LgcZ?-Z`=v^nWpwJ*(6yIFRbE6wYw>UCA~x~h9!HN38xURS!;Rmysr1WuC`v+`(9T&udBV+ z)xqoP=yi4Sx;lGZUA(TYURO7-tGn0L!|Uqlb@lSPdV5`&URR%dSKsrb&s;ZWaG9q| zQ}40)FZ$ZnKJ4F5$}iHdG+s?6Y)TC&*q(aBN#r*DoMd2=eh#f?RIFsZD2BfKqmA`3n>_qc0(j`<$)zg_W6ND zw1g%D&#~IQ?6jwY^7jr*G+(-xmem=T(E2y8Ixd<_ur>-IErw@tWdDunG8w#TP!JhB zJgcPEad_4zB9XdP4c1-`uX-!gyE4nWa!~%t!8g|4$gNtMM2;C!k|b^&B5UO~4LQzg zH+EJ{nMuB0l@eeN19dG0c-$AHTWYlst;L9;Up~`I9ATgjB}2)H02`UzDn3|C95jq` zL>k7N!E#toAm|^Zi7>r#DKwPauU8%D{KH|Nm+??-i>h{1%c3eB)vl;2N3|-d!clFC zYHn1CqKPU`R8yl$6V=eDvP3mAsw7d3j4DS|6QgP-)xfBFNfj@uR#JtFs*_aFGStYB zlE5`XKr;ye$rl228Uk81)#gJ$TMj{voG*q~*S;8DBUFYdzWn*{$*>t0Hsh?CQ6ogl zJ~(`zT}xe6<5+ji#??$zNX>3Fiv)Am8H{6~?R*r9I(`@he9M2fdlm($byM52v0s3PgJfb_FILOv2X+^b1 zU3)HDtHZ5v0N+UDPM(m0KAvwa#=8L2JbbTqN6E>kxn&Hk&olLq6DNH-|d%AD$ZD#~c_ zMf*vcN|9~l``NTQbtmm+0+xYq0o5j1mHG`QmkQ#yKt&^;WY2U>E4AiybEV~7tZo7ob6qh>s^@VT{tIy;ap4p*y&vUy1BOeDboj# z^oHF+wNTf*KeYUZ(+}sboNp=EI|FwlgSHF~B*#K$y2zlRwvn2}2HQyXu&FkZ8#GYS>X(`Q#V`2-7TNNP zI+!9)e*16Z3=O0*9B>$7#V)+jj*~quMazn|ztGR)2 zC^xqhIeIBKNNct`cgIKh*^7&ijJkQHNurkLAoptIiCXoVdD~}s+GO<_HMm!g;k|lB zbj#`)F(PYduO5Rw=ry!k_W`{k>Nc+z(R#00Ec?w@lO!6-*56$>D>AUxb)5d-9 zL}b87mL92GHTGwqFi$AC7oFCrfFMyF4-Tz)_}W_{g>>wvFo9* z#_%O0Sa7px+VCZj0c;W!{`%pPXsm6#mzQb_Is#6($#CW6knP9vN|25Vm-Gy!Ub`i!NEO0gs1F5%vsYNgm5cq2=hI|plRepz}bP&?$F z`%%gKeM>D`vwCx}%+`YPwZgKq9J>JS5_-;^$*@D=?(5!j|0v1qs7~4jE?e(lKvI1Z z9)u2r2Wbx5vPW#ttGlo6QgeONYAtBS+|L4(x-DBaZ`q|qll0d0nzwA)rCIBi}AJ}}; z_)ydIR*k!~tXscf^JZNdrMF0LX1?SPPj6bcWy9L(?A*l zitwCRiOzK;sFMP3r&NN6%9Y`t?!8grL=5aTv~Q1YZ=OdC8$Pt#fWB`awfpqV>SoR? zWpk9h`5rw!w&w%*o(nPMUm4@SSM<%WG4=lS-&MD6?KUlaSomID&l|4WB)v^Dpc7x$ zOlJJ1i8pt?4`y~jJ<^-osEb>|)C`&=ISJ1Kq6iKWPEEU9}6ct1$;)6vH zSOhBuAF*mH^#yH{;%EZ*vAZk_sD)@50c%nd4K~JL)K-lW8mm!DkQ%Dis_lQ<5B>1V z{&!~1%-qTSaL+k&@8A_Bp1HEMCyZYoR+D|{wPfUpTU&n#B6yg5?3FrSOQEunCunTV z?~DJN8<8LMacby4KbjO#9KD z|L3-(G^&LvUoKfaX%y;Kp43N#j0Ug1YFqB>-qgw;l}M8fvqys93k>3q%BqgH4?27_Z=iXyPn?(-JaC%qLf=BRKecPp-0zs0o!r`ARzR zr#stVy~4f2*3+(sm?*3RPn-Q-Tci1`Wo3Z2KdCrb7Ak zD<`K@4%E5(%62Ua&^s-J=nrpsqF5sNojB(jfl^St&R^YRFo+1jGK1Em*=F$A)`8u* zsJS~;tQ~NyW29&EseWT%@4mgXvX%PR1FF5ZJ^+KJ$ zsFQKlSQj@*dogwE%I*rvBjJMArT7i*~^ z6pV3mKC>STq5$`$d}IG!PZEq;6#Jx5x`6xl#CP^<)QJK1^xDljLhy|rvb3v7gv=sO zINF{UOx>tGvDmdYs$tyTFz#p=Z)+HLI>+0Sxw*`x_|jkKW~kQH%u}zoAMl}vnBMpf z*JBM8;qve9a?Pf{(PHdg`#nOgkY62cKN&>_FpJ%9+voeyGxv4+x|U!^EasTl<+>dv zG`-}*yInDw|IbzCI+N=K;syB?(LDN*>6{OnmpxO*9~^T<(9sD~NaRRbjE5DGpQlI_ z%W(1MHAZ+8%$oGCw?D{|CQPxya}6t;FcoVRWR16mv-3l)S8zr|qwqnj`{3ggf&0BS zS*Ea|MPi~hCl*_BVtI9#7=}aCW+3DR^ZcPz^SN8c++i=$Mc$uJT_6 z&#f4^0~vXGE~Sh8rkGrGnh#ci)nEY(@a0aA5?}#ov1~_LN6NH97=8?jz#1?Mb;)2h z&;ehd_hV12Vj4@V7EKu)Xw(V1zzJ{?oC4p1ZqNhVANV;9&VXLP!CBA;`oVyn{Zt`7 zXMt5>`J8+dtOf<(2v~s;SAqs;JYsve9n*v05I79-P}hXtFWKcvajwv)XEUr~OiDJ2 zKLR;m3HT6Xfu&#>NCgYQT9~c_*hK8HLC-qVJKoWjKwI=|xJsPjUkP0Wte{%Yc2tNd xti>wE1uuv3daU9GPy#GEz9qP$NyA1X#5mt1+zK;*JbnAJTCk{~w%XmOTIf delta 12466 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 diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditorTWL/MasterEditorTWL.suo index 5f0cbd28e058c418908b4116f61f1d8a90c2dc80..306bafb69399ad6654be6edec35c4ac875ef9490 100644 GIT binary patch delta 4438 zcma)=dr(x@9mn_VUY_E*Ao5UA5D5W;f`Up#Sp-Ey5EY{o8;RAZ5e+emMx-vWT1{e1 z;1^?KtmDL(X*6k+ThiCGqSi!bOcQATXr`HV8rx1fN%Ls1M%1<6FZ|YF9Qrupm-D@! z`#X<&?s?p`<)_Y;i_TLQoinF69FANl4+`AAeR~@6=}tAs87h&BI!-hGG!3B~Na!XhA@Q`p`(wRuP6}>fdDlX3?OH<4a zXNj?UV?s?dBi=ok8}oVKv)im7MJ`28vc0h_5s9pBE>wS4$Uh`HHobj}$5`mvZ98^s zoiX$5#^g#P#gRF7PfED4a%=KmYfqhStjBIV(cPAwoDzvjN}*v8D`qE$Lt~&=$jE!m zpG)Cpk2I%wY2UE#L2ee z`FsH(b5PDL*NaQrYKr8m(S>$r$zEf|2cttdA7hL(%?+4CvaPgSN-DGMp3)_z?RyDw zW&dV(hx=$jhr4gkUN81YiWMtcpB>sZ|FT%=o|GXd&U=&_;v0?AYtG;#nORdT-g2+B z)MU>&7S$igJ15}z8a)uxcqmvCM}+g^K4n} z688olN_-131oriXVNO36B8wG4tUeVghR8Ud$=Ho7h-n@a>;~5>yHTZ#i@gS7+11L% zB7aEPdS!f+4gJjT*rbs2n#-1{0SY$qC_Ec^Tp2fny$~CDSs6QgT-ixwqmgfenBIVb z_5BE*^>y?y2`rwQ&*?k@>g+@P%k6FWd!cs*umsd$;d(T3R%gj~mh7^>+}va&`%t7r zv^Mw$%!W^fA_VCgaz=9ze+{3ByjK}V;)cfU!~9^}Gtho`rX$Ld;EyURz#L*6*YGUP zC#2oV{2Y}7xX40&P$6H_9u0g`Sw7hB;X{yrsEnOC4bM8}W7@HiWT;%HV5KtNUkuN6 zTCI%jRe2nKWDdtG3i-sx;W^=7Q^sBS1UyrxGQQ$-@T|B?*%tV2jr)_bm0*8Xc2yZW zeNEX7587w1+3+nuJdA_8HrWCw9-c=+!T|OdJWnm3GA{TX@Z5d;1K2KQyOnWNpMvKK ze>xb)SNWX6)@TVV+gWiR8qWdFLLThf6qppSTxIP4TM*MUWo*CiNJ5?u*1x&EyL^hD z^WY8LDJH|e3eR*w8E5`QWgjZzi2MAW&F@(w(Q^S8>lXK>h<|d`c%g(+`y`fbWF=Ci1fb*q9iHV+Gh)Z$&;;84J&VZ$e(6jGZo0Hd`4xT?)Szd6_bvW+%1N)ymkR zrSSd;m>PwAl3IACMrEwS6TLX3ip2K`f*=qQ9jXS4oG1vuVr8tb)XdN^ko@Kv1 z9GP**j@sEXYjC|rdA-ImrU5<_xlh>x@S8NQF~}sx_1@{aT;tM1(|)P-QzM1X#tn9$ zo{=KEs<9N??5bF)Ez4+MwaQ3${E>>STJ27)HVaMdQMOMR7k8_&7nJd^Jf!TXvIit@ zO?uh=xN{1G>BoAf4*o4=Z!22@c2U`7WjrVO=9qpXt!suybm30l!nHqGoocL9+>ok< zIfFgpCuJk-y1MPAZMR##RaPY*EKQf>`jERq?LDoBISk?QhX>Q7N-FNU&+iYryspED zXKfDZh>?|L4-XRK{HKwk<|k$O`Y2hoZcJN!+8{yZFSe&~kCD#iDEacCY8h5Hat_{ z4IHOz64>8(6Dds@{XOtr%wHV%FT zJd;luIa+6KWXSOVwe5*U5`KXw)<9yzhSUAtdrv6F^>B_{ zRUb^pMF{S)GvUY?xE>1DGDI2UqBSm7**dT&7C?$u#zy!p&PGNm<1x?gawe{3+L8R9 zgNX`fDXhQ^FFc>FSQ!g*^Jc{*%J}^i{5YBmrZc1YlJ1$G%7S%q_UiQy8+rcefbE^= qH1hri%kFM&50R1=Z<<~?9e<{MSCobQGxGl|bZpm7V|x#EntuaRy0kL@ delta 3908 zcmZvfdr(!^6~@oL9G(RNh@e!IheUz$QdEpkF5D}K2oc1XhXq00Odmm0F|9A`_rW5)liodkuJ8Qz zI{S6@KIhVN(baR(_0~mK#`wMemBp52ErE)lrO*RV1yn31C^54f&I5U&-Pmm*i{Ly-(iPY3x??%F;zEpRmn*T;4JErnd4;~xV|jMTZAoM^pCjEP^ zN_$3%&1`2Nqutonyc@|Q^E^QzCJ}6wJeHRs`F4nOW;K}EpIwb*tqx`jxl_dH%x(yk zf#+r=9gelE6A&NR)NDCpbTGbP)WmQ-&!CQxk~@V1Q6B;P1^O#1WdEY<*nh!YhsH>l zI#`!IvUuFKTmQ7~&zPtrEQ^^r9hDIfhtJ`JKpBu%N|)WXcYVDhiJA4q@#a3Kt$1CK zeR#*izXS?rA{xDC$@v+nBkmP0lRPyO=`3$Bb3eNpEAKTfdDgR%YaYz~mL@knl_gwT zu44?u?&m;Udls%78O8PHGhjWh`3#EW>MW0Q&b!;#9E3FHrE!fzxO1~y(p52Tj?1%^ z)xoUIm>P;RR=LJVeoMUk`teL@etLQI(U{@lqcLpNdMGDEQtfzYdt&;~%F7csVxvl4 zNfau1ewcMXR1T5x1Wk?SQFt3_QN}T+K$etLdy?B=n8^iZ7Ryr*2WQFP?DSyHceo#8V39vpN*= z?ntx=lM>6Gy?QzofVpX*qZ5C5a=ik=+x zx8VEWSzc4d2KOslgyYTG@q{noQAg=k#sR(zpMyA{jGMAY^NuOwDqMl*DtzEm$kBWs zo{f0$?qDY=keBZfluBi+uZE96tWm}et2FPRGS2vQ_yokm%J>aCqIsvL@;WRTU-v>y zGCH(TpNh!7=?h>A5Em$8n?>-ci2Od`-^6R~6e3HpvYGPU!wbdjEfZ5+Dm~TtzE}M= z&p~*u=CHB_@cVW1oK(gQbz0f`%GmoAc=mo8qvuMzqqEow|E|vLH_Dp8emBW{)~G@* z^EFKzQ^tlrg~#e!x0J1dkHN=^FN;`2PL-@3z7TPvGVbne@H}YG_^}%=U)b}eJP*w}}3VbHwtIBv>Z|g)3DdPZ7!Sl8K6F-(%7dQE;n}Nug zaMWq=FCnJ;vH9>rV42D|=v?@1h zXXoYs%OYoYmdUWMSei>4C8f`nv={#=b2?+tZ;s*LS#gXc@(8D(kk8{k>CD`VaZ@KK1per!Hw!}p#y z3x-L2Cf$0oTN(Lscy94Zzq~T_jfni2dc@s@Ke)umS#gzoS@I)WWc7>`dH-vXNQid& z_q-i^#C^zwe~NaZA*9aUGBOltOLSjC;A0hpKKWOM;q4tpI$HiFtyO_ehWXHG_VwW% zHy9zi)_(qcIsH!_U|pDew`slPJrU@PNRzKj&aZe;ey}{jIq=P6K^&}j2ktoT!{^L@ E0m%er$N&HU diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm b/build/tools/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm index 7960e6065927d46065c68bc9dcf90c3ab8c6f26c..a6eeed79f22809626f8940a65108b4baa4ff8e24 100644 GIT binary patch delta 289 zcmbPKbt!nmA*Rhom`a$1%^6G?3>l0V%ot37q$z^|gURGvS<}sRY&%#dui`P7ti&s~ z`5&(lBQ}+r9r+7E5@zT|Y|fS4&N5k!lWnqv)RD;-w0I`(6H?kNqwK?mRduB%*cfwk zV}LF(-mIr>!vxfYDe1^By?L6h9;2i=g9W-y20ex(hQ!H@{F0MF)r!6GPeN a^9Gholgo?+CT}nnnXF+Vu{qCT2@3%Dg*+1g delta 1503 zcmcIkUr1A76hE75rEJP*x|O!wF0(&S>u6>65TcucL{>_!FpxRj685icmPWW9A}E5u z?-pxngqUN^ap~7>Y?9v$DMa`J;vqU?K|J^{Lb&3@0{=L$ij^m z%U0_KYs=O`ovWMrsFS+!bkYf8VzJhCRJ&<^z0Ea18Ol+L`ti-l|03n^h%X+ubA}2u zO-Z~3nlr4T%fTYNLlIerTcSkV;nRN`y9In zIY`J;0^c+R@twu1&=H!^#f?DpjGn?2odanBX~^9e>?z9XMFC#)?*6=YOZmW8VxJ|I z4v{K)_Z$`h&%Qdf1k1S(-_?~0u~PB3Y=6SxvK`;gh`Cw*ESkck=wOA{=&CXNkG~eZC z_lo@HK~d+jvg9%1DfEsX>(LhYXZ#FMf)f={6-2y0c4sI8?+A}`$-k__CPh~Wsch)~ zCBR6aT(Fkf6%)~hokfKX&@dfDCJ{_+8Z(l?rIg3oun%J@@}_xLFjeL$&jC9MOb)1N z?4+^o!kIAM6pHfwUwS(TxvNW6Sy-94SJxE6d>hq1LMDg|7Fj7e>O`%~LrZirIL diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h index 5c9653be..e14da974 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -3187,12 +3187,25 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; // SRLのオープン System::Void loadSrl( System::String ^filename ) { - if( this->hSrl->readFromFile( filename ) != ECSrlResult::NOERROR ) + ECSrlResult result = this->hSrl->readFromFile( filename ); + if( result != ECSrlResult::NOERROR ) { - if( this->rSelectJ->Checked == true ) - this->errMsg( "リードに失敗しました。" ); - else - this->errMsg( "Reading the file failed." ); + switch( result ) + { + case ECSrlResult::ERROR_PLATFORM: + if( this->rSelectJ->Checked == true ) + this->errMsg( "本ツールはTWL対応ROM専用です。NTR専用ROMなどのTWL対応ROM以外を読み込むことはできません。" ); + else + this->errMsg( "This tool can only read TWL ROM. This can't read Other data e.g. NTR limited ROM." ); + break; + + default: + if( this->rSelectJ->Checked == true ) + this->errMsg( "リードに失敗しました。" ); + else + this->errMsg( "Reading the file failed." ); + break; + } return; // 前のファイルが正常である保証なしなので前のファイルも上書き保存できないようにする } this->tboxFile->Text = filename; @@ -3391,12 +3404,6 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; { this->tboxIsCodec->Text = gcnew System::String( "NTR" ); } - //this->cboxIsRegionJapan->Checked = *(this->hSrl->hIsRegionJapan); - //this->cboxIsRegionAmerica->Checked = *(this->hSrl->hIsRegionAmerica); - //this->cboxIsRegionEurope->Checked = *(this->hSrl->hIsRegionEurope); - //this->cboxIsRegionAustralia->Checked = *(this->hSrl->hIsRegionAustralia); - //this->cboxIsRegionChina->Checked = *(this->hSrl->hIsRegionChina); - //this->cboxIsRegionKorea->Checked = *(this->hSrl->hIsRegionKorea); this->cboxIsSD->Checked = *(this->hSrl->hIsSD); this->cboxIsNAND->Checked = *(this->hSrl->hIsNAND); if( *(this->hSrl->hIsGameCardNitro) == true ) diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp index 6d7d6c3c..1c2d2f5c 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp @@ -8,7 +8,7 @@ namespace MasterEditorTWL { // ユーザアプリ用 - // 開発アプリROMヘッダ署名用公開鍵 + // 開発機用ROMヘッダ署名公開鍵 const u8 g_devPubKey_DER[ 0xa2 ] = { 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, @@ -22,8 +22,7 @@ namespace MasterEditorTWL 0xC9, 0x6F, 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, }; - - // 開発アプリROMヘッダ署名用秘密鍵 + // 開発機用アプリROMヘッダ署名秘密鍵 const u8 g_devPrivKey_DER[ 0x263 ] = { 0x30, 0x82, 0x02, 0x5F, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, 0x3C, 0x15, 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, 0xD5, 0x79, diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/keys.h b/build/tools/MasterEditorTWL/MasterEditorTWL/keys.h index 9ede7f2d..59c91f47 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/keys.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/keys.h @@ -6,9 +6,7 @@ namespace MasterEditorTWL { - - // 開発アプリROMヘッダ署名用秘密鍵 - + // 開発機用ROMヘッダ署名鍵 extern const u8 g_devPubKey_DER[ 0xa2 ]; extern const u8 g_devPrivKey_DER[ 0x263 ]; diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp index 6582106d..9a5523ed 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp @@ -286,19 +286,11 @@ ECSrlResult RCSrl::setRomInfo(void) } // カードリージョン - const u32 maskJapan = 0x00000001; - const u32 maskAmerica = 0x00000002; - const u32 maskEurope = 0x00000004; - const u32 maskAustralia = 0x00000008; - const u32 maskChina = 0x00000010; - const u32 maskKorea = 0x00000020; const u32 map = this->pRomHeader->s.card_region_bitmap; - this->hIsRegionJapan = gcnew System::Boolean( ((map & maskJapan) != 0)?true:false ); - this->hIsRegionAmerica = gcnew System::Boolean( ((map & maskAmerica) != 0)?true:false ); - this->hIsRegionEurope = gcnew System::Boolean( ((map & maskEurope) != 0)?true:false ); - this->hIsRegionAustralia = gcnew System::Boolean( ((map & maskAustralia) != 0)?true:false ); - //this->hIsRegionChina = gcnew System::Boolean( ((map & maskChina) != 0)?true:false ); - //this->hIsRegionKorea = gcnew System::Boolean( ((map & maskKorea) != 0)?true:false ); + this->hIsRegionJapan = gcnew System::Boolean( ((map & METWL_MASK_REGION_JAPAN) != 0)?true:false ); + this->hIsRegionAmerica = gcnew System::Boolean( ((map & METWL_MASK_REGION_AMERICA) != 0)?true:false ); + this->hIsRegionEurope = gcnew System::Boolean( ((map & METWL_MASK_REGION_EUROPE) != 0)?true:false ); + this->hIsRegionAustralia = gcnew System::Boolean( ((map & METWL_MASK_REGION_AUSTRALIA) != 0)?true:false ); return ECSrlResult::NOERROR; } // ECSrlResult RCSrl::setRomInfo(void) @@ -320,19 +312,19 @@ ECSrlResult RCSrl::setRomHeader(void) this->pRomHeader->s.exFlags.DSWirelessIcon = (*(this->hIsWirelessIcon) == true)?1:0; // レーティング - const u32 maskJapan = 0x00000001; - const u32 maskAmerica = 0x00000002; - const u32 maskEurope = 0x00000004; - const u32 maskAustralia = 0x00000008; - //const u32 maskChina = 0x00000010; - //const u32 maskKorea = 0x00000020; u32 map = 0; - if( *(this->hIsRegionJapan) == true ) { map |= maskJapan; } - if( *(this->hIsRegionAmerica) == true ) { map |= maskAmerica; } - if( *(this->hIsRegionEurope) == true ) { map |= maskEurope; } - if( *(this->hIsRegionAustralia) == true ){ map |= maskAustralia; } - //if( *(this->hIsRegionChina) == true ) { map |= maskChina; } - //if( *(this->hIsRegionKorea) == true ) { map |= maskKorea; } + if( *(this->hIsRegionJapan) == true ) { map |= METWL_MASK_REGION_JAPAN; } + if( *(this->hIsRegionAmerica) == true ) { map |= METWL_MASK_REGION_AMERICA; } + if( *(this->hIsRegionEurope) == true ) { map |= METWL_MASK_REGION_EUROPE; } + if( *(this->hIsRegionAustralia) == true ){ map |= METWL_MASK_REGION_AUSTRALIA; } +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + if( (*(this->hIsRegionJapan) == true ) && (*(this->hIsRegionAmerica) == true) + && (*(this->hIsRegionEurope) == true ) && (*(this->hIsRegionAustralia) == true) + ) + { + map |= METWL_MASK_REGION_ALL; // オールリージョンを許す + } +#endif this->pRomHeader->s.card_region_bitmap = map; // ペアレンタルコントロール @@ -835,7 +827,16 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { System::Int32 i; - // ROMヘッダのチェック + // ROMヘッダのチェック (NTR互換領域) + +#ifdef METWL_WHETHER_PLATFORM_CHECK + // プラットフォームのチェック + if( (this->pRomHeader->s.platform_code != PLATFORM_CODE_TWL_HYBLID) && + (this->pRomHeader->s.platform_code != PLATFORM_CODE_TWL_LIMITED) ) + { + return ECSrlResult::ERROR_PLATFORM; + } +#endif // 値チェック u32 romsize = 1 << (this->pRomHeader->s.rom_size); // ROM容量 @@ -845,6 +846,12 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "デバイス容量", 0x14, 0x14, "指定可能な容量ではありません。", "Device Capacity", "Invalid capacity.", false ) ); } + if( (this->pRomHeader->s.game_cmd_param & CARD_LATENCY_MASK) != CARD_1TROM_GAME_LATENCY ) + { + this->hErrorList->Add( gcnew RCMRCError( + "ROMコントロール情報", 0x60, 0x67, "TWLではマスクROMは用意されていません。ワンタイムPROM設定にしてください。", + "ROM Control Info.", "Mask ROM can be set. Please set One-time PROM.", false ) ); + } // 予約領域 for( i=0; i < 7; i++ ) @@ -856,6 +863,40 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "Reserved Area A", "Invalid data is included. Please set 0 into this area.", false ) ); } } + for( i=0; i < 39; i++ ) + { + if( this->pRomHeader->s.reserved_B[i] != 0 ) + { + this->hErrorList->Add( gcnew RCMRCError( + "予約領域B", 0x099, 0x0bf, "不正な値が含まれています。この領域をすべて0で埋めてください。", + "Reserved Area B", "Invalid data is included. Please set 0 into this area.", false ) ); + } + } + + // ROMヘッダのチェック (TWL専用領域) + + // 値チェック + u32 region = this->pRomHeader->s.card_region_bitmap; + if( (region != METWL_MASK_REGION_JAPAN) && + (region != METWL_MASK_REGION_AMERICA) && + (region != METWL_MASK_REGION_EUROPE) && + (region != (METWL_MASK_REGION_EUROPE | METWL_MASK_REGION_AUSTRALIA)) ) + { +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + if( region != METWL_MASK_REGION_ALL ) // オールリージョンを許す + { + this->hErrorList->Add( gcnew RCMRCError( + "カードリージョン", 0x1b0, 0x1b3, "仕向地の組み合わせが不正です。本ツールを用いて修正できます。", + "Card Region", "Illigal Region. This tool can modify this information.", true ) ); + } +#else + { + this->hErrorList->Add( gcnew RCMRCError( + "カードリージョン", 0x1b0, 0x1b3, "仕向地の組み合わせが不正です。本ツールを用いて修正できます。", + "Card Region", "Illigal Region. This tool can modify this information.", true ) ); + } +#endif + } // ROMヘッダ以外の領域のチェック diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h index 61a82b32..357b6515 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h @@ -6,11 +6,6 @@ #include #include -// 宣言 -#define METWL_ERRLIST_NORANGE 0 // エラーのアドレス範囲を指定しないことを表す特別な値 -#define METWL_ROMSIZE_MIN 256 // 最小のデバイス容量 256Mbit -#define METWL_ROMSIZE_MAX 4096 // 最大の.. 4Gbit - namespace MasterEditorTWL { // ------------------------------------------------------------------- @@ -36,6 +31,8 @@ namespace MasterEditorTWL ERROR_SIGN_CRC, // SDKバージョン取得でのエラー ERROR_SDK, + // プラットフォームがNTR専用 or 不正バイナリ + ERROR_PLATFORM, }; // ------------------------------------------------------------------- @@ -264,8 +261,6 @@ namespace MasterEditorTWL property System::Boolean ^hIsRegionAmerica; property System::Boolean ^hIsRegionEurope; property System::Boolean ^hIsRegionAustralia; - //property System::Boolean ^hRegionChina; - //property System::Boolean ^hRegionKorea; // SDKバージョンと使用ライブラリのリスト property System::Collections::Generic::List ^hSDKList; diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h b/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h index 6c1fb4be..a82ab9e0 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h @@ -4,3 +4,23 @@ #pragma once // TODO: プログラムに必要な追加ヘッダーをここで参照してください。 + +// ビルドオプション +#define METWL_VER_APPTYPE_USER +//#define METWL_VER_APPTYPE_SYSTEM +//#define METWL_VER_APPTYPE_SECURE +//#define METWL_VER_APPTYPE_LAUNCHER + +//#define METWL_WHETHER_PLATFORM_CHECK // プラットフォームがTWL対応以外かどうかをチェックする + +// 宣言 +#define METWL_ERRLIST_NORANGE 0 // エラーのアドレス範囲を指定しないことを表す特別な値 +#define METWL_ROMSIZE_MIN 256 // 最小のデバイス容量 256Mbit +#define METWL_ROMSIZE_MAX 4096 // 最大の.. 4Gbit +#define METWL_MASK_REGION_JAPAN 0x00000001 +#define METWL_MASK_REGION_AMERICA 0x00000002 +#define METWL_MASK_REGION_EUROPE 0x00000004 +#define METWL_MASK_REGION_AUSTRALIA 0x00000008 +#define METWL_MASK_REGION_CHINA 0x00000010 +#define METWL_MASK_REGION_KOREA 0x00000020 +#define METWL_MASK_REGION_ALL 0xffffffff