From a11465ec095ed62b17806a28677c150bcf28d28b Mon Sep 17 00:00:00 2001 From: bmgjet <50484759+bmgjet@users.noreply.github.com> Date: Sun, 22 Dec 2024 20:29:41 +1300 Subject: [PATCH] Upload --- ...305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx | Bin 0 -> 111368 bytes ...e4b0e6d0-617d-47df-93a6-30168e1de63f.vsidx | Bin 0 -> 171 bytes ...f7acd8e8-0e14-4221-ac25-ae7b073d1ab8.vsidx | Bin 0 -> 70636 bytes .vs/Ruyi-GUI/v17/.suo | Bin 0 -> 80896 bytes Ruyi-GUI.sln | 25 + Ruyi-GUI/AIIcon.ico | Bin 0 -> 4286 bytes Ruyi-GUI/App.config | 6 + Ruyi-GUI/Form1.Designer.cs | 629 ++++++++++++++++++ Ruyi-GUI/Form1.cs | 288 ++++++++ Ruyi-GUI/Form1.resx | 203 ++++++ Ruyi-GUI/Program.cs | 22 + Ruyi-GUI/Properties/AssemblyInfo.cs | 36 + Ruyi-GUI/Properties/Resources.Designer.cs | 71 ++ Ruyi-GUI/Properties/Resources.resx | 117 ++++ Ruyi-GUI/Properties/Settings.Designer.cs | 30 + Ruyi-GUI/Properties/Settings.settings | 7 + Ruyi-GUI/Ruyi-GUI.csproj | 90 +++ Ruyi-GUI/bin/Release/Ruyi-GUI.exe | Bin 0 -> 41472 bytes 18 files changed, 1524 insertions(+) create mode 100644 .vs/Ruyi-GUI/FileContentIndex/305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx create mode 100644 .vs/Ruyi-GUI/FileContentIndex/e4b0e6d0-617d-47df-93a6-30168e1de63f.vsidx create mode 100644 .vs/Ruyi-GUI/FileContentIndex/f7acd8e8-0e14-4221-ac25-ae7b073d1ab8.vsidx create mode 100644 .vs/Ruyi-GUI/v17/.suo create mode 100644 Ruyi-GUI.sln create mode 100644 Ruyi-GUI/AIIcon.ico create mode 100644 Ruyi-GUI/App.config create mode 100644 Ruyi-GUI/Form1.Designer.cs create mode 100644 Ruyi-GUI/Form1.cs create mode 100644 Ruyi-GUI/Form1.resx create mode 100644 Ruyi-GUI/Program.cs create mode 100644 Ruyi-GUI/Properties/AssemblyInfo.cs create mode 100644 Ruyi-GUI/Properties/Resources.Designer.cs create mode 100644 Ruyi-GUI/Properties/Resources.resx create mode 100644 Ruyi-GUI/Properties/Settings.Designer.cs create mode 100644 Ruyi-GUI/Properties/Settings.settings create mode 100644 Ruyi-GUI/Ruyi-GUI.csproj create mode 100644 Ruyi-GUI/bin/Release/Ruyi-GUI.exe diff --git a/.vs/Ruyi-GUI/FileContentIndex/305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx b/.vs/Ruyi-GUI/FileContentIndex/305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..4de952be5cfe96e1ce038fc5e44a77fdd2e973be GIT binary patch literal 111368 zcmdqq3EWjv|Hu7(PUkvTN>oB*xJp!rkfBgl^FRa2P|;kH<_u|0rD&2=rUr^ise}?z zWJt(7t2BwI2qEhE{(kFoPN#v}ec#XjxnHlx>$u)$t-bczYp=ET+H3E#AVT7|OX z(S|2uk^Pr1j}u)fs#R>(xJTRWJ({)Z)c%IH&3bgXse9|T&APYk+NDRc%Wvw{p=_9A?9#o{S!cBFv43u<@G+|rGpaWF z&vLEawnvBdo!fRlF#FP1Rm{%)w{vaSy-WM@|3M$fsDUfm_UzfAbNhXY8a-R)u>Y>C>0En|y%l%trcl;pEkfb#z(_`kSd>Fj7gRx~9M?TJ|e9bQVDn~dhgqj)kJ z<9`(yOGJmoqJ$DFCLSg9N=7;UMt=(?qgXu3tDKXzv|yGks;Z@lC^v4a3{zy>A}yH` zC+)A+N+xZot**@D(O~77jEZY%Ji0s{<%vhN6_bb(S(eNqy=>(YQNdVLz_(R69vu;9 zE4lHgg>R@_JQ^2|s^qm@P(76N;?43+Xe-J`J6=w!`@RoI+J?00H&kOPWXyI!o727z z_C4AWkEVMeTVzGK3ELM{sbUWC46lwypU0!?w9Cn;P|~Vypl?n=y{zg~rK-uKWqzbG z*Ivh>0m*1bEGp)&!rGU3ber!*ZY)ypU%b2pm8QCCBW6``Xd;T`O}!LU>wD8r@svtK z^Qk#hnO=MKR0Co6!%nG|v>xk4MGhQC*K|kPP zD2Q39hWSyToo$#WiYF`+ZMv*7(avT?gJRLDSX4R|-4lyygc^uP52)T^QU91NRWDMq zhF-~5Q7U#Unj4FHtH!*FtW?@=EILq)}WR%Gv-rKeMp{gQf zn2ZKzN5itB(t4x8O$TpQlvhoom)`g>t1hZTV30SZ`u`z1QoKv=(H1>&n>W+EWYpH{ zUtRQLZOa$wh*sGu#-m+o9rZ5n04uVhhm%ne70=WBqUOl5Uer)ItEf7fJif3B<8N%d zRRR2no9eyJ3J|lckBvpw<*||TF^^G(e=0X^DD0+34p!#zXonYRpkj3F$Dd!iCD|`9(s4J@2N~xC$?1$A()o{#4$UR;sU3}lQEsbf)M~9@!GuOvwt!pcW ztg>y;uI@dyO;*$)84XQPGcRh~(1x^%a!A-XpeoY3s!SEY%CA#^=QCMb@i%Hjb@)Ry zKzXpJZ!Qc?>3hz0#y2_bKiFP2@fm{*O1I^S*ZTEX`Hanf*W*9FKPTz+yv| z>P@3cJj#wm8~vD4m(Y|(t6Un7CTc}hT|9c&d-z+iXpJ|$)smm)TKN&734?W{n5DFq z@*VE~*%-C_g9auOdTrDZ$RviBjpcgIc6E(qA30C#iZv&Z)>8<>TpI@##IJtl8XvM#;z<9Lg?-Ts>(s`;z9a$=>SB~mjm7^h7g&F3P zF}=6$tuiE|r{hu4Sd`y)vxL{b{#N&t%0V;6b{bAo)up{t=U*81F4b36Q8s-I<`Pzk@>a<}M?Omut)l4cTuANFnY8CCH>PHo& z`q{giUM+hw(IWLRPkg#p@>=h2T2Z;_?@ylI4%@JzXBdLH`(`^JRgC}a7-#j6$v^u$ zC=oUEURvDyr;ccK0G0U|t?uQ?(zIv$;w+Lm>16;g!>ZKt3&bdD#m zx=QW1_HKX&LpM-X1+`!4Mhr{Sf5VQaga5lXIz092paS@~H_iX1JDwuLF}U|IS4!Wn z&`VEB?}+NnYiYU?q}xs@{};Qa1EirQ!#YRDqb>Utz{i$BYE8|J!--Xmo=)SJilH6p zmSKqVwQ|z?l}?}eMmzg|xxYHx5<0boF;?64Q<7D$$`-bp?rfG$m=54?9xH6sb1S z-KTJIw0D}VnX~WUi<%*a>2cmD*Y6;$R)*<`S(eRd+C)x0O?Q@bTS9wKo(l|3z7Yiz|?_gD};#-gDhLx(q?{cV3 zbCY&)clAM=Pd(wl*;+{XH@(+eK~10v-`gv~EGzugKI-DsuaUp^>r)*aY6b1c04++` zm2a+J395K1Z82SuDc-New)u?|%T^`#D{H;cJ+X>mTk6KDJ?)*&hQ6)pYK4TC#4qvY z`vvb5l~A{yw2EIQtDL%9vbU(2@3W$B;?bwNZ51N@&edNg&SN(oHDWJ~MK!evzxT2? z+k~Ig5*g!z@(k6O>ZJ=5qpL{W+RBQiC8J&O=%HA&RChbI-Gr5}lIHxOB)Va!gCb9q z$1fQ)=T`}vC!;l4HvgO&i%#-}yFiK6`eBuHt@=blog`d$uTEvCCQ$XN_N>fVQ9j@I zG1>O!VKqUvwZbJThHtCB(kMpps@{0?oL{rsib=bXqJ~ok3;RA=m*L(Stb6B)4%aOa zzq+)Y)hk^*zv9+ims4ZWJHCnjeq31o-lkezondYi74a(4okraO(B?MgiHc-J-QrPG zKYVn=+0f)$>Eh$b8lm zt3lxHtZ1u_DIFRfV;v)pb+9L*s6?Kqfp#rBDw7qJP1t;1ON*(2lt$O%+0oLhXq|?v zgxz4#<=X%a4u0?ARBv4BQ}ODSx>e^X9+-iPLNC^CmqMq>fPShz-tR^^AtN-3zw= zIW%)Cs#OKU{jspu+Cf!a!VZc(I;hpeiD*pbD*y1k?zZ{Xby(%ZqS0Y3KLm6ytN(tP z=;o3xg*?3qqtlAUt2}CygxzwtA@vC7%+tJ_x6gG@-1{_EqU+DM&WW19MW6^(Mf^di5ERbOR7m9a{0R&=&k zlx`_x_Bw6lymYd^dJ_(}%%$oiIxf@}p@G8R%mjb+KHWF|DnaPg8bH++BVNL8E#9lP&@moTdecl!trbdTe|4m2UH_;ee<+wns<`zooq0EF6w*%lx)n9D z>9EyVNwXJUQBA2LS!IR;f8WeIYAxlXqsePecY}4lwxh`huE&y5J|6%z0w|6C4)9*l z(ck38{Bt7DQ17jrsn_04k`-;pj+SdM4^slo17p!b4Mgh0+NesdKBJ)Dc3zT*&h*5}fh~=$?-JI- zH8D^H>L^o8PAr=uRrO8aFp2@cOjX{Rk}?x07Q@1wFmZyVOjc!& zre``FHtODWJbKJ8J+$>44fQICpWt-NmhXvT7KD6JP*C)q)&nb3z5 z))o8t9IvZ?0=w8}p4w2BPj!@!&c8=#)YYM(TM99|<*Srud!?xc?6VuSOZp_G^G?QI zYxF4Whi#~ty@N^8J|{XzjVW|F!byj1#wU zRc9rA)TQ?YW6|$gSGDcKcsZ3JVOKHg&niqC4UZbwz0OrR4ZZ%0Ys#T=sukkV*J@2I z_4X~NS*sGHMi^zN4yR`$$%u$n3$8di4{8gFndV_Atj$Tz; z>%kJg=vJQU*xI`7sk)Y`S3{zoAGKdErCLGBbZQ>#t*rOZ9*kc4Jdx7&$q3a;!&SibgWj7 zM-4nd2hE~As8v*ZbG2(((WZ=DyI;8_?ens$!{HNprtiKcemd7^daToT4P~OCBNWUF zkQ0ku^4in2>i5}E?W|~6A{wm|lRlo-tqC1F8Ua+ikfBc+OZbk5{na>`>$5dwZih)~ zZmC_cs#a&v8?BYsKGs)^nj`KV#xB^i?9P(afO@r``}FruUGHbvS$>p0I*CR1r?2Jx z8d*8$AX2t*Z{k6^{P#gvwKqzI^l?mkr;(?xcStp~ilhmi9rZrF)CoxIPSL>_X9B6u z`mLyX<&9cpM>D<5%1ZMGt=KBeNVU{&Q?&4r%?9((rM2$~dsIe4Q@Hn4)u+>{O!X7h zt$Ik9bd^;C?YOsyJ}lE->qSGPhh?SlmrAJBwQfRvL-nJ2^Ttw)B~b4T9p1;fu*$#v zS0zc;^f2Ku^qTZ`E((G3`=w7aZOJjC5VYz7vk;*n?Zh!q| zc$TMMqtm_4Yu>$;=P>`2R{8Xg+kv3J+KOs^@45$l?}x2Qs7kZDwd&8IO%Iybk6G=Y zN~o*L>OPX|Tnwo=lISI&1+<<#ecTMrodtt06%8y{)yB~0ioP|>#boZ zgO0fU3ZrwApGw9Z5U<^z=lR&Nsil5D#O@p(_|hTZ!<`)hnYWMpBGlGB@Rc4O{XA$Z zW}I$F@1v!iG7fxcjPeQLA?cyad#T#!0{@gjt5|!fSLk5Ww)7N@f_mdwrTdtM(A@CY zQX<-{{-C?-8OQHIwtGNHbe}3pp= z4L2)%-M#s%%<1^BX`lS;zYCs;wz7A{zk2U&r;~_A05VCv*Xo)8tGa9op`poN2WHsj zuX4_e51FTXz7}aFllsV@zk+HGRd430&`+{4-NVehC8%~xO?PcFkiOd%CN`?-1P>k$ z_9pA-1LnX3ZsUa6yDmL)Lm{OXabTN5i5pAcRB4W3oehYQ-r&25NlPaG}xI zMwRrD{x6R#ef*KmEqx2r&!IE2qqPaU0dAF}SLpwK#doDHlQne2qicM6W0O5U&1oK< z^n1Lzj8%8tqx;hOU{S|=$iYvVb`WJ;yifL1#xz|-=-jF&f%8Ns=8anG@X=td8t{44 z`KjFW;Z8$+Ea+$U96cAOPY?am7B!r@O3ger>}ahlpB!o&P#H$YqD9)e>QJMBszv+j zpMMoor}dMUR^&kNxzK5vzJ@l*f5?uj|#a+FA8aJ?Ew~*Nf_b`m|Ix z{nTfCYNTpes;gALy`Yq%ef2@9UTQPs%$JYVGeVVmy>Xt(Op`HX(g|^&)zwn^%+8xe z=iJXcpIoI$kLrFn??1Nem&yNILBI29SB_pY{rAf@^=ZOB<=-#Oe-jLKs8fSyqQ83& zrT-?|zh7578;k6YcSxq=?%&<6M#6BRk=jtYi7P6`FCsMZTPHu@f`Xb%-(XMWuul!A z2d;xI{qH0FqsfCDgXx^TPOM1(q$HY0sWR1(G(PAU^pmnCpG*C|%}BpU*LN#)xuHta zGk9TC*=K*#+x?esGC#IfVsFG^nQQqa@ID_{_;%ISHoT`+NpIb5Sm|C+>UNe+UK)8c zk~|snXQ+IVUsyv*Ub}-G1_Wz*zhqM~Wvh!*8)p5)@n^VP@^go#aB6)G;5oV#;HSSS z2^%oA%CRb>F2j|fI-bv{HNwXWmTp& zq{?K>4^5+sXg?+O)2U4f(jUQOKC7VkznQ4-S1{i%<)c2JYSE6^M)j#{BDykR?WNhE zj(58sqQ0cN5K55P`=OW>J8t*S<31VIXp^HOMUmm9-N}xI`$dNijkgr3DOT!!`%$V} zoi8+*@iTR9GJ4cMG1LSmM`iE>d0EC}KpjCkUei_{R7AWXMXC*Q&TxXv1%)+WQ9hjb?4jc2mP|LQ?!a!Zd_8j<`F9W~q_pWDY%pVMiCOn;Wd zhP1BkI{M}&s87c19-}@pO)uT2?&*m`xPl_G@IN z)J}EszxMv$dTI9Vb4B&WoR~eWr@N7MgT-%M4)z#zLN%y%w%T<11NSfp$GDGYN3=#`?X33-WvG{W+Hl>M zQ1hwYGKLhLq_jvi9ELA_sHd8o<~b-69m_hhGW*8Ta7)}XPv7t#tIps@lRm~$eGc}~ zOarDGD{S44#3Gc|*u`#t)X}$4LU6K2} zbm69^%n74}ma4a_Wj!l>nyjbka-x!Tz3k=yh2d2jbBwVK2fb z5#Dw>wdqa>LxE0J>Js5}qtlSje{@3B;j_vwy|p1LWSADl?8#Ug_I-cV0h0b{rfPEk zYpbwUdLRnH@YkzFHKS~G?B|I`%VSo1s^>B3D^LZ)2ZG*V#`sJu$3Hx>TJ`&-+VR}D zHD%JDh|okrCsSpp!l>Kmo?F<2w(?J3UI0t%H5M)bEa+bbBsV<{=N}NO4C-d;P7PDH z94&#Ll5}O--%my#ho`oD&TQ=x9);2yz0_TmgFk>|-F3hFEg?<%uRfXbr*7)|Mqf;i z27Wl~-A#4B^eW+vADCfxPRJXbuBi3*IsxT|6NjHN%EzPAbkO+~u?9eU1}t2vd+n(bI_a1S z`XdA?fQIxT8s4?K1~Cn@VYE~~*Vve_j;F2H$sFIjV5&FugmKE#H&I%J z_aRFIf-<)=R5+}3XGSfOI%-rWYCFBcqY))lS8*FFv|a6cch9Q7-lt!w8(;REttw4B z=x^+Ac=>p!lIT+aB7I0-;5RXr`n1Z1G9AKUMx+^tf1s?~!epM${go!1Xngl|B&w+6 zd=));qWeg;IWL|*>e3r^66KH+w@0aU0II8~0DB+S3h8|SU#pt;Z^*U?kx75Z#IGf_ zx=OBz&9SLPNv|}UBKlRf=Fd7_MtPOqtAeGfRGYK%=p%3cw0&x7b=?%wwnCRy7uCq7 z>!5VWD|$Y;ety(ce2^DA9Mn29sxZoSqyNnx*7}>jK1OL<+V>ny!?d~vXKhjS?DLZl zIpD8yNR9TIwB&jds~cF!wRH_~YH07Sssv3?=c-@nf#JW(%Hx-&mnNgzy`q$ZE&%nV z09}@<^;NNIHSM4tkAK*Epe_om{`II&7%{vU%XNyQ!f`t*@zz${CK(+;m^{{aPI3xnH%c z4on*mGzg^AWR6;4(~9w)|DWJH-C>RWdBq;SfI8_}j#PpVj}* zm-_d5)KVo-*9eHL#v6C(UpFH1J(gfQMkW>O4uxfGr)l^OKIU361HnE}U z)h>SS%l0%ncI=pnM=ktuZjLWcAOGhqsPyXLp0g&L1=Xe1Gt(ck>sGMO99HRsPYIHkGvxQdS#%#jw;aJ`3h*s-(QPm1L;huxnM*k3*@mCwt zy%D8Zn*Pp(GVw`>3YL>PD_NdiDqTBhpw{tj8`5VJdgyMyK_lTO+>A}AFscWwt`74- z_-IdeT9je9+2Z|5wM~JQQiadBl#Ba@a$?a+HFx-+M=`1#)vDg8JYg!RF-i&26SmYD zQ(Lhd`~phnN7Y{U@WG;nEIquGdG6N!`nEK*YJAhYXq$iJG03-~4ITUy`jz^C8rsip zN6NS*h4yrqE`R*!P@h)|Y8t6lvwL)@b8dD2q_wzusdp-s zP?f2QN-E8MFF#T4AE`9DmQUZ(@p+D=@iJ&$q>5GH(`(sNUb?yA`&GjmQQcVmN0(7? zPo`^Cy~)udtf~aP@!GTRbcdJr!gJQ{*gzDEret(!%iJTYWcC^LRYiKd)~&2JY8sEx zyyZ`y!73jOaYM80cUts*ppR@*Qrpt!uwkRRS`QoDTb^{m{oxvp zPa7+@aN8>V*{fpw77+E|lTWL$@BpM2n+asXk4Imm!&8~-8=dL3bT{cmRfrA~pM-07 zG-&I+#unY#7!;3Y>v2;Z)H=9SC)#oEQQCby;-Z=<<^|Im4Li9$x77P#J}&jwS;pI9 zsfH2tAB}GsJ#>RYo6~2w$>=gQbRs(0FI3eWx?gH@_3(&@-lSi8mM{H2ywND9tn^;H z=AFAj~oE^8vbk*Ftqmp@8&Gk%l??Rb`JeB|60{DA| zAiqJa)x&gJjiQw5lUi}0C$pJMc=^S$;x(nrRZQk!qF{Q4pFY2&4nU2B+BM5R!BJzC ztO=oy^NT|*c}&>Qpilt)l$^fJm+md9ZMBHsi`EA^N~s1)7bZ7m$A$K2ss8$J5KV~N z$gG=i1dNt;KlX? z>SpUz1O8s+jQgOZ3Rk@LR~4cd1@+*%6}*{u@abhh`X(%z#~ znW_-gyz)^uW}ff+5^~m3bp!oXQO9_rC|<+SQcXWpKiXfF%`Z{)46~m6R8UoPhL_52 z9fZqgeO%&`y;uF@sAq$7eQr5fy_Pl zTWR-)`bO1=dT%$t{SK{)t=Hbc!Gj?(nYzQQnzSd!QZ=b#Q>WM4R9y-CC}+3N*GT1q0;h1RkH1QEq#_+Jr*4iW-=LfJ983tx>uPi z`_sses~r=Tg9cu;*Wr=(v8<@PPAjP|-c}A9(m)j2H)D^&e(nF)?+aOE<|<)qR6h^5 zYW)&bHDI%j%$II~DyXHp;py=@3e>*VA2fyblAou^u&z2a+W62h$UDFK)rhb(eN2UH z{T!-|+E(;le>I=f{q_*E-(PJ)O&lHs@`HDHcuXiY`_(C|q$)~t#V~tRUrM#(PCqG> z)zIgW;lS6na(xp+b+BYS{;j7d9`G&!eHo+(5S~&^`S;v%<&plP42yvJJ^OYv-;QX z(+EiGRU=Z`oA6 ze%nL`*WSp~CWdLp{YFrA#rQGUBK=&P=cX1f5l-0$uC5Wxo5m(%e%+`1JLrA-!T8jt z`Ab6%8c%ej=#vFMeOO`AXGZ_5#3s5v*6GOAsa738%`wlX@pbk)*fS4@^n646qK>4& zP&sFwXT5l~x$x3x;NyV$n`f+VHIWsOx=lg|i3-37^UIr>p z4ZLB9)-=oy0ky?Fiq~KjkMvYPIp1!M*H!;86nKnv#eI(sO-1$&x#0$pr&K@DY1Q^)&* zG>EDHZH&=Y*90OwOyEmq>sczG-to(8UCVplv&lNoV`u8Bf69${{PE2-Yxgp?tw7} zD^KwdnPpEqCk~b%ou_(K`n`sfeS(>bGT!H8yx)5j><3GZa`3Cv38~K@G{>;<%I{j_ zhWSZY-J82&I;;2rb3C8y0y-~{gzWim%ypetwTtoU->9sQ7=-|x^>V3k>c97iCS2tSf*T3mBXJ|O} zGU!@hXe_D{X4jr`7*y5Ds%ouu@R`p+HP_Y=D=M0>)6I#B+;1v%;Izc&?R!^O)oHE2xEKldqV?IXs&}xGCA>@cQ=PU}f@ypK zz5k!T!UxL#q!_AIe|BBfYrm$YV@;KyiuEVP4|*{E@AvMX?AO84Xl&2*c=b0OdO8eS zWCYctbh6Mc=ji^7=18e4T;18u@mp%T;iH%C0Bf>W)t`*j)7{E2{lTcFO!VY1l=&5( zx{apgfB({2+Pcojx{s0c#G0Mnrej>?X{O(Av;XuXnf{+HWTVvode+I`+dpz(@3RQ& zi9(OhMqAg`(f7C9eA3b%O1JY}?u`Hf}XJR=#3(v-LusoiN=i&Ky0alP!z6%LogcoBa ztc?)iH?>5&b$uC)5AN4P#Vz=n7kUXE8_BW#TJ&%szbT!mLl z+inxWO|cpA*AZ@xEr@SLxV5zMwIgi*W{l;3J$Aqwup{1x`cT``cg8N#%F~T-ceH;u zCZYdt(f_u*m;Sfy+=jiekF@3e2=~VUI1mTn?b6cg85+-TDBgj?q%FUb@Lf0pN8%_P zjbl(hg6R2<#d}Z>r+ECmI36e9M7$60#|Q91df{KjSaB6Mx0u@ORvWf8d|E8~30!g0+LrbFNOl zuFj3FPJV6{>Ky1{-I8#1UiS9Xt$GjZnI{ixuH_z1yiVS}T;HPgexVyG9@alI<7z_d z=`|7Xus$Gkbr;Ch>D@g}+W3=0xHy);lThbp&+in%r3jZHtdH?LKRxf~>N5vVuWJJj zpNX1@cvw$>xo4w3I`FVQnQ%3Q_WjaK!Sm78rkAr4%PV6pR>7)R4Xa}ftckU-HtN=- zZ?`U9f|p`Ftd9+_Azp@;;}zHl^#Q8qeNoZBSQ9 zzWsLC9N6+6VDTVLE3sR z;xgi2BD`E$`CcRbb>iP3yprW_6aNnJ@8Wy-K7N27O55(o_$hua^D2J5)GOM68*!7g z^)^c@*B0DL{C2`Sq+Zca_%r?@ZT(-R)x#fzcgrk=^Jt;o+DAifmbCQx#NWgEjMTTQ zyGS0^6{s&i40RRc@%mDmt0zHRee&w*jwGxb)gFH|@%pzXe0eeAkHh1MKap?_7RM5J z5|)&D*>@D&(!}fDmv8S>JPl8mR*z>AE+?%X&Xw6xKWpmiU5xrgP+wk+ur45dc@3(+kXP*;yj#>PvQc63ZKSja3L;_9Om_Ykyyw$}2?kB4FbJPZ#< zecRa6>-#^h{;fdw2-K5O9zGI}!lO~&ZuaHJpuQpRVf}ErdmJ8*dOX$RPsAK7jwSFU zEQu#eRasPuaA_C*VZ9 z5AVkZ@Iib?T0Kt2srU%Xr{Q#b6d%JGI1^{#<2YMd{!b8|i}P?kK8XwPDSR5Ak(SRQ z!q4Jjd=8(-7o?rPmJxmlU&iJ53ciZ3;p?~p-@ujlCccGl<0@(8e3$Th_&$DsAL2*& zF@A!d;%E3det}=&YFvYB@he=1>v02a#7+1$ZpLr$Tik-*;rF-|x8ZjD0e{3D_!It& zzu->%6@SCuaTor9f8uW3gVyMNp2axk!31WZzW(6pvr!)mdst5ly7@3a>RY8AUjPro z!%<%X^X2-9G*{2ux<{ZM-}La2coZIu`UKXOAA`qYF+2{BM}1Yz`&$l{AYT76qvul+ zPsUTQ6qd#^()z8Q<@EJVNBxr}9zFxl#B$QopH282ERW~nd8nTc^?WYC3aD>udi;f` z-y`$z#aIa|V=h*~s#p#6pp&m(18ZU})Kf&hybkK07x3^Ucq!IHJtytU8(>4c3@^tk zun{&!J!b3cUxioWHP{53Vl%uJ_2nsFzd5$Rme>kgV;gLX?XW#wk9uCv^SuE(;*Hn| zJ7X8@irug~_Q0Na6W)xs;H}sTZ^Pc$2m4|_>@Tgq4aD1tAB;nADBgj?q=ts*F2W;l zB#y$-I0o;=v3L)T!+WKbX9D4gcpu)658#9N5Kh9$I0dKT!}thJ!|C`aK87=JCeFgg zaW>AuCvYy#!}<6mF2JYoX?zA3;v#$&7vppIJidTS@I_pT%kU+98JFWL_$t1Juj2}Q z16Sgk_!hp6tMDCs7vID8@dNx2Kf;gk6Z{lE!_V;x{1R8=8eEHC;W}K88*n3T!mn{N zeuLlQ7W@vs$E~;xx8o1^BksVT@Mru5cjB-38~%>F@DKbGcjF$ki#tDWqaMWduzvc; zO<)%4s{hvDI}5<8!b$mOwpE>&x{m3io6@1xum6CgID= zpuY3u;nVPREQ@F0nOF|b!n5%lERW}+zPRA|pN|({1=NoM`|=C%BD@$YVP(w4Dp(b( zVRfv5HL(`zD>A-4J8`@7@fvJ` zO|cnXi`QXuY=JGY6}HAU*cRJid%PYy;0@RjZ$$mrx|h2%cEPUL4ZC9x?1?ww&3Fsm ziuxzDJpbFUH}=84*bn>T033*e@OB)GLvSeGfx~b(-ideN2pox{a5Rp=yKyYugX8dC z9FG%lBHoAh;{*60K7^BSGETv%_%J?#({MUIijUz8oQbpWah#2F@ClrY^Kd>si3{*4 zd>Ws@g}4Zx#l`p>K94Wp5_}Pt;xc>*U&iJ53ciZ3;p?~p-@ujlCccGl<0^ay-^KUv zef$7F#E8x7xCYnaSGW$>;|AP_oA7JgjNjn5xCOt%?{O<`!|nJ3 z{)jv9C;SB zy#5sp_juHgRC!q6;&yYeIF`VZP|vD+x|8t~EQO`944#Vmjc;G?bS#T!;F(ws_3K@p z{%kx4%S&sw^9Y|$SU=P6>Gi9XzFc4C_VC462`ghRR>7)R4Xa}ftckUxZNCm-{fh#= zolEditS2p91H6p*%Lz9k+*qpXMNJ4dMg3l*Une$~mQPD;&GI(b7TaNaydFD9Tfd{! z)Hdoud{^v--LVJu#GCMDY5CkrxEJ1ry|EAK-|+Ez=_hTy0jMuydHn4-7>D3cyaR_x zTmMcRLHtM@g`;r{-i>4N9vp}IwHYtRc$|O}@jkpCAHWCkA)JJhaf-C-`$q^*!|C`a zK87=JCeFggaW>AuCvYy#!}<6mF2JYoX?zA3;v#$&7vppIJidTS@I_pT%kU+98JFWL z_$t1Juj2}QLt1;kN%$>%TiS8*KH(4WL;MIombU(<($cRcycX9<8{gOC2Hc37@N3*G zEx&IGZ^7^IdzNpL*6u$N{)y#36W)ox;Vzc{fq&v|+=KS8iJy;9-&Xdpz8mW5#|T{g z1c$3H)w$Wy%AFepcqi$WiMB4LMR}j{3wfXYK z(&}A5;O^mTun9JmR{m?Txl~g}ZCTzpc)zsuCJ~-2 ztz1*_5vf-+OMmQmcpPV=e!Y~s(6Rv!JRgsMUeuR&A>0+aVR!6-J@F>I8E?T`v6r;{?M=9kw0h`I z{6OLd;q5pWhu~1W1Bc;oyi?kCM&KyoN8=d08^=mZKaTLdI36e9M7$60msb9Vq}A&q z#81QN_$WSxGjJx(!pCto&cP?7m2V#5`S>I*z^A08dxr2rT!hc!Vtfvt#}{x3zKBb4 z8NP%s<8pijU&Yt(bzFgO;7WWG-@>W^()v*TF#9CMz z>tJ2H1TV#USYK)i5H*(8f3KEmx~PS;^0kvTFK92VTpgsPyOH=#*crQESL}w}u?P0V zoA745McVPvTiW*e65kK|;{Y5eE#2)ng!rL^he^wC1o0zr6pog*{@r+wwEY`Tcp}~} ztsWl02k{}Cgp+X!PL-D5G->6SLHtadg^%NGoP$r`T%3pV@kv~OPvO(}3@*e)_$)5Q z=kR%a0hi#5xD=P+OZYM_$5-%Gd<|d675E0O#5eIRd>dCuYo~Yded0gB5Ah@X7(c;J z@iY7!zrZhXHLk(6_!X|h^|%2y;wJnWH{&<>EpEZ@@O#{f+i*MnfIs36{0V=?UvQ_i z{~|l zu?kkjYFHg>U`?zgtsHgm65=n#dc-%7HvTr2Rv%Zh{2G=w#cNsKg5@o-6}FbPy|#qg zVSC~`5WWFB;*Hn|J7X8@irug~_Q0Na6W)xsNZX&=q?M}=@qMu$_LtUvw-X+WLvSeG zfx~b(-ideN2pox{q?O}tY2~`?;C$ zw=Ca+-x0r+@HWCf5dIN&NXus@%YVaNEdK-l#ND_Dqx@lfj$s`0U;?u+iP@MJ55atx z9}mR>c$l>PFG#o$7RDp62p)+?;n7$WkHKTH7#@em;|bE*r#RsfcoLSxlkpTRg{83! zo{FbQKQ9nI3(uCepXCXkD{cE15Uzj~iN9D{`pU%TVin@6Nn5`r@wKov*1@`X30{iz zu)ehIG?dnF8WG=E+I+nk%df*0*h<>=+e%xngS7Md4cHNHl$L*IY3aKW?!oe&($>F~ za4)<~+IoEm_a)q)@BqSt2;Yu_afr0-4I?}p@5H-s1dhZ}(#kWI@I5$AT6xCfMB?wm z`|$yM5Ff%xI2otlRB8D>g42nA6d%JGET2XAah#2Fr0wrK!t?P-Tp(>bPZNFy7vds( z78m1l_&mOVOQdaY8R3@*zanirui*+@DXo9JDXm|UY3a91%l{|BJEfIpx3u!@LHpq>3&*78pGR7{e8lI+L$QFg zbcYizh=s7QwCx{B_$X=Vi{i1w7sKQ5csv15#2hRxEuWJJm&B9t6f7le`=?@AEXVS* z2$z>uKNk>RL0bM7;>E;Q!pfM7Riw=)YZ0z3ZT-4J|{?f`Zi1^!aFw2MH zFye>fop_hDa*vi)Kle(@Z=$qv-;WRCBx&_B8K>Y>d>9|WX*eApm6rcZ!n34pXExzE zgy#~Thx74CTp+EU7D>zRIpUwk7jOx_h)bpI?{aDDy+-`&(#r7$;g$F%zQyuYgx|q; z@jZMWKajSaPY8dCpW)~D1%8REaSg7;uW%i%#|_fTy@~MGxEa5}Z*hyX{oYD=8*axR z@JHN%KjF{#3+}{U@i+V(ci|uSC+@~Q7!_b#!??8iOJY9a^W&jd01v~%u^<-0!gvH0 z!6We~JQ|DQF?cK%!{hLHJV9DJLt4F@Ev^5b zPy7W~0W0E#coANVm9R4AN-KX=!qo`ZAY2n`VQs8~b@39s6zgGqY=8~%GQ1qGkTwoo zL%0bx#b$UdUWd)G1-8Ui((0=n;r7z@vjgE9up{1xov<@@!LHa1yJHXRDQ$bV67Ge! zVQ=h%eX$?*#{oDH2jT5F7>D3cyaR{faJ&=m!Vx$UN8xB3gLmUtY4tV^#}hvRC*pm0 zKR$pD;zKwIC*u^HiVx!>(zZLD@T2&cv~g?};m2_{&cP?7tv^p%`US*4g-_!%xDXfN zv$z z&&La}0#?KerETY8!j%Z;60U+(u^Lv#8dwu+Nz1Pe;ktMUUW)awJ~qIHco|+UEx$&D z8{?ID70a(7+yt9qGrShB!{*omTVgA0jcu?kw!`*#y|nXWXKCYFH{!cv5A2CI;mvpp z-ip2OHtdakurKz*{y0EdJq;p!I}Rp(DB(MB7!Jof@h%*JBXJat#xZy|j>UU$9NvrL zaRN@n`|y5z03XDMq|L7$Cj5xB{hW@E5kCWG;w*d|XX6}v0_Wm9oR3f90(=UembU$c z(%O45@y`)n!t$krUuOAod<9>{*YI^*fp6eSY5nV6!tdex_yK;1AK}ONiL~;5M)-65 z0>8x7xCYnaSGW$>;|AP_oA7JgEUkXF5dIFo$E~;xw@XXEgYZv;cM|>;f5YE#7yf~N z;%?l7_Rnbf{Ths89%=QHML3Dsm=_Phe3%~(#R7O39*zaE5EjNGum~QBN8!;}R9g9t zC0q=T!{hM;Y4ul}a0xt#_)`d%!qQjuq@`~nZF|=d z-<O=O?Wfjg12HXyiMA6`w;Gn{jfg{z=1eO z+IoWt55b|t4sY($@c6T6xwHzaBT>M%*MV{kMd-;CIr>vz72R+%Bygzp;E5@qgf-xEuGN{gc~1 z?qMABU_#n{W)sefhhRR;FD>0+gb&ApSO^Q_5m*F|#G|C`Ur}lMf1I>-FHZbP(#l&B zPnNdb(uB)MTd%CNe9pwP@EmFB&y$wV`FH_Vz>0VwUW6A*%fE`W{HqaP9cy4stcA6) z4%Wp>@KUUY^|1jq#LMtLco&YqkvIxR z;~2af$KpLW4)4YBH~}Z(eRw}UfDhtBI0+}?6r73=<0Ci?r{kme7|y_%I13+_*1zTu zegfy>Je-eD;sSgMpT=i!AuhsaaWOuJ&*KZY1Yg9ZxC~#ymvK41g0JFh_&Tn@H*h7s ziErWCxC-CFckw-ZA3wkk@gw{gKfzD&GyELCz%Ow%uEDkV6|TeexB)lfCj1&V<2U#% zZo%*Hd)$iKa6A5hKjIGj34g|4a3}tXzv1t=3;)1BaksSo7!~4tg>lS-3CzMIW@BDy z`Q#&<9}mR>co-gz1+fqo#v`x@9*IZc(O49Z!DF!)9*4){33wvrU~w#gCt*oE8Bf7d zSX$bCpGx>NJRQs88F(g^!?W;gJO|6;xp*F)j~8GCtcVxlMR+k*!pfM7Rj?{n!|KxZ zt0v)ESR3nLUAzP@#d=sD8(>4cOj`a|5N?Ex@k+c3uf}Vz2{y%Mcr9Ls&9Mcx#8%iE z+hAL4C#`(f6YhXFU`Mv02a#7)xj+l=4hceqtry=}wo#Q#Wm z2mT~&yE~g-OiDym$!a!~A$C7Lc|-hZ8P{g|M)+@*PF^ zXe>(nafFY@6YxaL!Qxm#+J2ubE#ET4pDL{!rxPxVXW*Gw4$s1~@f<9V=i+&IK3;$o zup(ZF7fCBeCCnwh3gK#mt78qU$@1ES>tJ2H1TV#USRWf;L%a+x$1AWAHpVOQDrw`` zwbJUfCGoAWHMYUF(vHg;2zQjW-<_nb-;Mb0*aLe?OLsHjTkuxwg||sd*N1Rl?1%kv z01m`KcsmZpAvhH8z+pHX@07OP5jcwY(Ktrh{*7b#c;Y8WA4iFwB(0xLCHx3Zmv&q} z%JP|nXGzQV3Bq%69?r)nae=gQK27);T!@SCSzL_I;q&+cF2NV2?Z_yhikJEXP4PQt(9Z}>azlD2=l3Gcz^2*zEEV;)Rk7A7$p^Wq_x5A)-pSO5=` zw*LhQ7sA5Q_TwnRM`KYu29K3i|0fd8!Qxm#TK**opG>%vwEaJo_|x!oEGuojGx03q z&&G44t$!X?kXDXLEU%2YSOu$MHLQ*`uqM`$w*5MI3GtU=J*9w%88a{H)-wDlkiP= zGv0!?VlTW6drPbTzStiJvV0KUj)QRs4wbh3;nMQCi}(>Z5=Y@^9D{e`SiA?v;k`H> zC*VZ95AVkZ@IibCC*fqAf>WiH`w_y^a60ji5uSlFaTY#~vvH2J`j|&}zO?)oNIT9K zO1n?Kg!rY>#?NK=626Sf@fCbkTK+2tzkw^Ie_l%XJ$xTOzz?OB<5R+)Nh{wMguleq z($cLXydF15OTUTm*SHzK!EbR3euv*n8$W)ORu8`s|GTvP`jhZ(Y3cG53H6h}ENSIB zgm6A->lMI)(#lsDi%3gfR9ZbBgU4bqY3rXr_(aUX;?l}-3gJ@H@;iSp7XX80o z9?!+|@O)|Itbi91e-U1cm9R4AN?Wfg;c8eNYhX>Rg|)E`*2PQkQmlvdu>m&3%kXl% z0vlmtyi!^@uO@sA;il5+uQ~B8uqC#_*4PHyVmoY)*JB5~0XyQ2*aCb`I8|Cc)1PvQc63ZKSja3L`goh=tMDCs7vGbX?+1iGB>XXcil4Lm z3;YsS;~HFxU*S4jj~j3!Zo;o|Gk$~L;uic4zsIe(4Yy0%pC1YDApA4oUvMY>iofCS z($@b2cN4!yT7AZk4C87ZY2l=_^m&Ot1oIJpDB%Kx4<}p@3lV<=;Uah>9>wyagpa{v zu^1kQ$KwfjBIZat4o{YL-aL)?)3Gd`foEblJPXgpbENI}xp+SD7f2iLE+Tv}R>I1d zi&doMQ;l$StbsM9_U7u!rck?lr}%;O?)5hi~Xc+cL3pmI7nJKhp_w( z94@V$M@uWu7`$6r`f)gc_=(c$`9Z=D;UsC>og%IOOqZ5!rnG!!OUr)_K7n&_9?qAx z-qZLj@r$M9|2*Lr2){^pDK3+?{wsuE#n+^*zk=`^xDwyQx1^Q#9m4P8d-y(nAT7U- z2!D*9;HUT*evV(@m$(|&NZal@Y58s-ej{!oezUap+DiO3+>Sp;+y9@X<+D>-zQ414 z7yiNW-GujGbW~`kn6&j0((*}4%Qqj(^W&k!7bIK=3*!-31do)K-_eAN5p4$s1~@f<9V=i+&IzO?dIAY75~MOaB%f3HTk zhO~ZOlW=XUOZ+8xDb~aK*Z>>iWq3JWfsL@SwDMg=_-eccn_yFHhS%bC*c@A6OKgR$ zu?@DxcGw=T#}0UdwDR3ZxRbQ{>Q1-^_Qac{wQnzJ>-8qS5B9}=*dGVrKpcd(<6sk_!_>B zEAS0miErXt_%^P>cko?&58szot`7-+B&~maF0Fj4@hg_E!}Yj<8TAe@Cs%*MQU2U^j7MM* zY2`hda8W!4kHuor@;e?+Bt8d=V+lM7OXA6R3YNmsSO!nU)9`dGi)Y}OSPsv^v+*1( zkLTifcs^c$6|f>+h!^3-SP3g*E>^*+SPiRV4XlZ^ur}7gx_Aj*iuJHQHo%5>8D5T8 zU?XgdSK?K8HC}^FuqigfYw(Gt2fP70;*Hn|J7X8@irug~ z_Q0Na6W)xs;H}sTZ^Pc$2m4|_?2iL*AP&OYaWD?Sp?C)l!{K-*-i0G@B#x4HyxvWC zEZ&3T@Ln8`6L2Elhxg+H_#i%nlW?-M?LJKS5uAq8@lkvXXW&enC2bs;O?VDIfpc-5 zwCydBmi}qtpTUK=2%p8p_?)!$ULd@L@KVCd@Fjei<*yKa6<@>GaRt7CEAdTy3*W|7 z_zu2{@8SFS0e*-dNh|*+(#|7a62Ds7d1Rxs`q?Zk-M1{?g5TlyxD~hIcKktFK0guu z8Gpf@_$&T~zf0ThAB6wJ-M9y%qMYwAj(ISFS(wCZ%qwmG3rH(xL22`gB7~2YR*qu` zA17@dbv)r5Y3rXXEnO+%PnDMLG->&riRTbs9?!+|q^*Ae;R;w0FJ$?}gezfX%*85L z6{}%&tRZbXwWO8%QsV0o-vBQo{&H#Mzmo7(cr{)lEx)GH(lsZ(1-8Ui*c#hlTWp8z z@p@_P(UI_t((><0xSO=?_8{C7Z^E1L7HRACCfo=6Vn1oy8Ax~#-j0KD2o9CD-C=}> z=+%L%_C?f$?@!f)bR_%^P>ccg9qJ!$!TMEuA2 z3Clkt{JFGrYY4BE_Pe~B34bGP``ZX_#~-AX|0lvf<1e@qf5qSMcie@4;Geh~_h58P zXrCCyF^{zEC#CIgUg8fSoS*QaSO5>h!?7S1l9taAgp1&j((30J!pCAUJPwb?6YxaL z!Qxl~Pr{OTGM<8^q?M@TVP9Ug{`p-w#9bX9?`j^qaiasFv!03ab4~{-0 z`q1dZN`?3EQsF!**B_nhkBL4u`uN;`LiF#WPb~HPQ%m{x^jv>N&YzY0&&&Bgyu=ntbmivBqIljztDQ*TDE61{5lYSEvHUcHq4*DRI4*UI&uFJ;Gda(>-X z?tZaUJ#m9vzhSQbYR+#Gy=ks*$@#BEFN)qGdduj=(XG*KrNZAH-I?p-rR(MLod8U35+qoR*4 zmHv;(`QPRIaXEi{^a-WX?@2j-a;fK@n)9bcpB{Zi^qJ9TMV}pgPV~9a=S81i%HJ2{ z{DsjMMgKAS;^<4FFO9ye)bszG^Or~eCHk+?S43YKeO0OWy|&czuaCYl_umwKbM!5_ z|F-BmqVI~nyOe+L&H4LFwfi54{zvqK(GNvG9Q{c2qtTB=|1F8&o zpN)Pl`uXS=qF;=DDf;E;SE65y{#W#C(XU6p5&dTLThVVvzZ3oM=yyw{&ku6`!<_#l z=VLb-?q4-}^-}Ni&z4HZpNn3rRDNAM=hul|H+sG3FO+ikOF94L=&wYtAH6~JhS3{E zZ(PdWo96sx(VOS`MLEAksc@4*@&z7=(F1jn%FD>Q&ZAv|VAlHxO{6wke zmP+}zn)6eop4-Uz>F8$kO!RE@T=abOLiD!L%c8f7ULL)D^bV!M|IJeM`tL>WRLbr@ zDwR)nFJmQGPGS@#9{dDv*(a%Od7yW$n3#H1_S4ySR*K+;qrR@Dq zu79tTyC3ELkE1_{j@@`DC;zLIy;sfo)pCCIod0z68m0WdR_vU7XRcSLta$D>ycIyw`bjm|}P zMR%79XCdc%O2zxuIloPGfAm1~VDwOQv6MeYa(*=D$D>QRz8qbNo{X+WPes?F>(Pzq z>F8$kO!RE@T=abOLiD!L%c8f7ULL)D^bXNqkKQr*8`0m4{#Nw2OU3(la{jx~-z$~B zcgp#lOO=DWsGL7K`nS=?ME@@O*y!U*J@{zLQy(HBNvR4V)z=lmt5!uhA1|8uE!=hZoXP4u;; zo_l@H-w=Ic^i8Gwd21V@y+{`X7y_v7eQes!o{uUg98 zHFAE*oA=(O<~*U&{F}=luFPzd`hd(Hli?9R1Z&;ch8q*DXthvo-g( zMQ>FqUORJtB03eFiO!YkSL}-Jj?PCHqI;ryqnAW4jqZ!yI(nN@`Fc3#N1{ig$D+rh zC!$Ny<>*TEWOOxpD!LY3k8VUyM>nHqqGzM$qUWO*qPLA+7QJ2c^62fOcPNz)zm@af zE|uQDTPk1vZ?6AA^bezVirzW;N6|ly-X(h1=-r}skKQAC&rl>d*+^}mTeD%bxu=Z`5>Z#*&QPl`S{`jqHXqfd)I zJ^GC3Go#OnK0ErH=yRjbE0w-4%=wF={}_F7^d-@kMqd{Fr|3UNUmpFJ=)Xo^5q)L! zRnb>RUlV<8^mWnKN8b>AWAshYH%H$ReQWe>(YHt65q)R$UD1DwzB~Hw(f35(8+~8& z{m~CZ|0DXr=!c>oj(#Ni(dfsb{~7&w^b^rfMn4t(bo4XP&qhBN{e1Kb(Jw~76#a7a zE77l(Dvw{!`8T59jD9Qn?dW%+{~i5q^n20oM}H9gVf07QAD1fkV>d}ZI(n7pRijsn z{#5kp(Vvc9BYMr~&qRMV`g751MSnhe?dWx)*NtAUR66`pse0#zxqhQk@54=VezWM! zqgzVF=c1h7B6`c{#nG+NZP8mrw?}tGcb4*RBIlFQspxccCOR9Pi|&f-99@Z?jIKscMc1P1(T(Wo=w|dx z^lbE8^nCO}^tREbAFfTU88r4-aUGc=slxXMDG>7GJ5ameWHI7{nO~5MgKf{-{@aN z?-#v)^e>}-6@5VTfzby=A6zQF56$_*qJJHIc=Qp`M@Ii9`l#rmqkkKHO!V)fkBvSq z`uOM*qJJNKV)RMTCr6(WeQNY+(WghB5q)O#S7 z`AecNjlL}UPtkvlzC8Lb(SMD;BKpectD>)tz9#zG=)L#^{@(Z;rkt`qt>% zqHmABBl^zhyQ2RVeRuTVqwk5nH~PNl`=cKyRc=0*^AANo9Q{c2qtTB=|1F8&opN)Pl`uXS=qF;=DDf;E;SE65y{#W#C(XU6p5&dTLThVVvzZ3oM=y#*v zi+(@)gXj;VKZ^c1`jhC`P1CMMuM)j#^lH(cie5eX)6r{0uNnQB=+8!fE_$u#&quEv zy-xJH(d$KjA^MA@^7of>{wvYzM{f|lVf04P8%KXNdXwl)qc@A*Jh~{ zdU14XbX)XRrQXw>IUkQsL?@$D(dknChTS=zk1j;_ME6E7iC!Ar7rk|<^x2>D135pG z^Tp`l=#l8r=&|VW=!xi3bUC^bJy|NAYdK#p)jv3s^Rv-&(eu#@(c4BZi{37JdGz+t zJ4AmyddKK*M1Ql?IOq3E#sB~2`X5C9FxT&#^FNCIar7?HyGHL8y?ZJD?wRu|qW6kk z8NGM(KG8pk{%Q2jqJJK}Z}cys_lw>?`j^qaiasFv!03ab4~{-0`q1dZqJJHIc=Qp` zM@Ii9`l#rmqkkKHO!V)fkBvSq`uOM*qJJNKV)RMTCr6(WeQNY+(WjS6=V#{pStd9qOXp=Ci>dw z>!PoZz9IU?=$oQ%j=m-O*67=!Z;!qs`p)RPqW>0scl6(*?}@%Q`o8Gek%Iu=x3szjeair`REs-UyOb!`sL_XqF;^vSM+Pq zuSdTT{buxA(Qik;6aDY#ccb5nen0wy=ntbmivBqIljzvZ(oRON61{5lYSEvHUOoEL z(Q8Dn8U2~)&qjYPdadZsN3R{dPV~Cb>y;|EznJr1ivDu+SEARC-XMCz=#8Q`F6GZn zqBkqmF5RNkJmf7)-QOC$RjKRSqdTHIqvO$u=wx&%Ivt&f&PL~=yP~_J^U;Oqp6K4_ zC8g}!m-G8Qv`*@exz3x9?X15yA3HpDY;4Q_|GTY^wm0_{FB;n@-lEU9jvXr9R)3M3 zZDTu{Ty7h?thlrOZ5bOMTW+otC&msIC+pvqv8iypk6oMUYg1#>eY~r=yXYKen{&mP zzA`g5U+OCIXST1*wLiPY7V66GzP`Kt*geM2`M$o;#|vY7>dL;pyKn50K0eS~Z;J1& z>;9Ip+l(z1_jj!Kk1h4_YLmLgf=vW`@D+eoGw^Yof!@;qW#Y27lQ2TbM z-5<(zelCtltHt*7a9=+>wpLe;v<*kbxH;N+ajY#r)~R}|{XgFBm)hl0A20Xua)+|q zS5`Xol|DY%ww-K0Pj-l_?Q*r_xZ0MiwGV53eXXBbYnSWo&w7Wx-fq_0s`asRW#LBK zywS&}+n>`N%IUs-x?OH|?rpX|o9)A9hjOOfoDHS$ZR;P>E2<=J8M{|sxw6XIuho+) zMRs0Peyta!`9+n!$BI(#qB>eGN|TG~2*v%PJS7$v)suV>3uXOikv&TMw&H5V)lZz`|Hj4MEe_Q)~+S*p)MRmp7gX7Jq=C0;}=E3GtbGfj>~wrt@m76hvhPmSTe!8~IGpL@*(Q6Y>b=2* z;&i*8uD9DUo2T3T^w?YKhmU-zav_LTP>Jv-me&bQ0?wr9TX zxGs(heSM*QSZE&>+VX{Vd7H|ytyQj8n^O2dl^r}+^hT=<_cs@t$C|D$cA6jVyK2|1 zWwGl=sw8ghGKnj7?9JU;C6f;;&65?v*1CGSxY|CfR%zYZC00%gQHe!XDYwWfr57E0 zmC-3Ugb% zr-z%XO?U5AW$;#I!?rGq2b#y5%gxnpNp>{Hi`o@D-8@^Ita#wL;#6Osu9$AG+?p)z zs&rzpr}mGXDjw*&2P=QJmsQ7$j*xGM+n*!#^!CaT{v4^a+FtIan+KbV#S>Lp(A}jf zU3jLr+%A_Z9LMf1w}mU!)@`qR6yi#`Mea|Q6}ZtnUsTg>FI(Als>0u1zHprjmE`U9jJTZbu+DZ^=iB}HN{1bt z13T)e#csK`cb`DNU}u$?ot4_#inD!JySuaAor{~?@2~qi%kGoK#k#Yze0Tjw*|M|J zP^>hQr@WO7#rz;^vN~yOY&kk9WS0msQhs%&PIaI#JY8 z<7#ugdAg{LM(?GT8kd_Vn}ZuxX+iL4bE(PA!Ll8>^wuNav^D7NVkxdPhbxjuH;QTuuJ}; zXg$yJZKHkI=x5btuCPIwM{e{hP?~6Y$E);mbEe7#vf)gwto0i?T~wkcT5nVg%A<+$>tJ)aDReo7;&`eoMR!lNZ>K6%COUUe zh-;N%6ZP*vlW+0}g)SE+>WDq3+c#-DQN9R83L_sj>o2lFJ%gS-)9G`z)A?-GoD)^& zu;*-9gq}UyZqD^n=PG6s)%wnl-7>*ET-BXxj$KH;VFF^&vT>yfQO0;O)a3h z$=&^x!nj;i=issCTJd1tJyfYNSx=rXDhYU`>8Zo@55?$k zcl~&kN_6FT{hh3GqlMIp;YM+(kC*y*xns24_UnO6mcPtc|v6qw?AnIefZ(&^9?{|7QK0tRty+wrx<>wd<~&Yaf&f$NV|hsdQQ8 zmvQ5c=5V~Pj`eW0PXk@oKH!1o!RBJ~aPwGmsVVkqL|kjGH#eH6i{1%5TU3^i|Nfy6 zeYxjEBj)gmy>*6?!wDqnX&o)`Ot8LrWE{(&z4^mj~8il*N@6Pvi zee9{eio#v!D+`?tdep9XYN7A$sq#5h|IQTEM0liluw#9&{8sbIyTy7trYdfDwDa_6 z=hV^8mt$>@_HnApwpgF2@`iF`sogJk-mO%*nyPft5N9MM09ti?+!CHv+ZWKN#bmi;z=Aou|DVb7`Ra$wJ`)WOusw-U*Pqrl| zs|-(&RFP|W7b zS9Ev2(r>0q8oF|z?J@S8snW&rLw#Mjnkk#uZ-hKk_gp#BSB`c{9;>{VsXXB4@d_W0 z7ndq0XDZL6^K!dcsnBLBMfkANVXf42j`?u1(@L*?rpknF>|Dtaa!^ z3T|{-ZFY#8?a!Ht!Aw2F25qramS)C}xYYFYWfddu|G*u6ytlcpd1XM2Y^BTo=3zcfI}8tDh|w%S}F? z?i4oCpDio-uMclj!?rX1tXTr@46D=$$ff*MkMAwYNAn8aB6AgH?k0=c3w7{7>8_r} zjiPr2my2>37n`Sxd`0f{Vo}cTs#52wyWUVa>e%~;+z&k)qX=WOBh95I+YVIvqw9|F zSWykHWSnenHqRB0_VuG}r`hAVioa5Gq7=D5QE53>_Xc{(n>bhZ#QkKY>s*yBPpx*C zs};^%=MlQQQQ_lCbG7IVN9lIDv)~(fn!L|)$vg>) zm%4OUT|HJjQTKP%8?;$8(!r(TO8rA|F+#@qCL31kIpn8t5c2a>#RlcDF)a#Zqix=( z9C6H^jdpXo{XE^*t%mF>JM^m>m5X9+yo|y<*J&bu%{Xv#zO9zadgptK z^4C1&k)nE4jpnYpRBw9V$v!?`)Eh-^)TQVteHJ`ZR0eRhs0^Sh%CFcvmY=xP+$gdI z_t!sfD5_hPU=;d+vVV8I6+4@(I@FdQs?>J8-aJ=Sb0VJ)H;sRHmupt(&7ix-`?|K$ zu~3XucULYOtH^N_J9D$UE0_7a+Q+B*?pmGiu5!k zQ+T#{uIQabJ|3?8MX@+quI4M%JaxRoI#FpqUwPz;w-V16m)o}Gwr!=J(~tM|oUG^O z%P;nvDxYwp>8>%@e4X!ave4D}@|P`}9g3E2zDl-OpY2f8+Inv+JlA*icqD9Rlp zSZ%*{MV;lkJ~tjOdb3b1Wdvyr$rWP@JYV!4;n0WJR>$%MxlvCWpSbRQL9>cx2jqcc zJ$PIy9x7{bt+-g%7OKRYC>}3es3Ui^O$+5(E}9=kcb6(H@nli|0nNJ@SuAvZ;L$pk z!YD+o)k4MXaMSTdhiI)~q3*2~&sBP&XZ00PSn4P%?R$$8^;fLa`}%!q|1HHm<+mAu zjpk<2+&i8uE|v{@${KF0And8DYeh56xY+cp^{+jZv&+r(3e&phCB4T%I_~e(JlH(c zTy3s3*PENov&CDNPnXm)r;9APq|%%ZW?a!z=DpEfmf%LyQ)W#sDPPvdF0FWOX>M(9 zYmPT3n^Vo{=1g<8xxaa!d9Zn?d9-<~x!hc7t~G}cH~RQ=bF+D-dA4Zn8r?O2aA}pr z-9@Vdmsae~6}3(KYKCopksJFYCYlGEo5cf_JNr82_f^an>)4Dvt`#rTed)N|D|1_# zw`tzCsBX7!Vn=gd(HpnFYC_l5hx&8-o5QhrVl$Mee$_if^^{p33eA;jX|-40CoKbVuk521SQ$ij@UORw%`+S&n+!+GWSwtC3KAjcw6WNBi#4_Q$wpe_5kP zd92a{J!{Pihr3e1SXlbXWvPr}VHFIyJkg<_=<8;=U18x;mo7a4$7-3S$~~0kcFQ2& zmg+C^bE$1!YM+-nr;NT`XNmn8DCL){lq0Lmq9Z?-J1**2$I@-Nty<|6Tj@L!Pvc3J z7{8-uS1PrTuVyS!xc2Ix_zpV~te-hHmuj^RrQvG*9ah0n`g;bYvsGpkq8bc^xYp^g z)_J#9XRauvYi;>jmq7g@`)rhdtGUPq<4xq7o-ir{*7%S=>PEG^XYE(OZA~@6M!)N3 zQ61|kZgeVn#xa}KFvwc<3<}H2APQxp{-XEAEH1ihtq|SSD?rcc8<>ffZsy1KSGh47 zIotl9%@uC!s6g@6y5VqLO|M^wQuus@WfgE+b8pdnFFLlef`^*J4uXw7_VjrDMQcQ6 zdU2)6PwSs}x@bia7mHSe&~-JT`NhLcPni=M#_Yk|%_u_*-96s+pXjH|45;hH(H=pR<5ta4UvH^%U!CJvYU__7OVluUu4rZ! zwG+$jzxiRu>{s$oSVJnC|8dOzlYLDs;h3Lhj}O$7vrRdnmO$Z}p++h1-ABH9$5AZ2 zi9Ym$bYzDH;xCz}oU4KXA!x+l3xO;C$CC085$K0FoK;i0b zqU+|al`V4z=i9dPeZ?w_J*PX0cCT3LK3z0=!V^uS4eLL+Sv3Adb2jGG(NpG1&Ee^r z@Cy$&xiLqD=1S+w7z-eu>{vtgY}EJwFKb>|JY8=a&NP+e)166mYP0WJ z|IlNW!e=_I&a^#dP|eG;$}W_H^*qbXpd$B1uPDAli*>&5npw5;eQ$GL@#2b+9k_ON z+lPSO3Hv%xpUy5$99)|5)d#@Kih2UxNpmQ6jp0&LSlWH`tajh-A;)$j*q3pxD4wXN zZ>0#&7u8Y2dIDM%pY5lNfXq6(Vx|-MW46o;4Ij)3pt)ybcl4AIIkMAedl-r8Me55K ztD#wSH8>9Ak0X67M12P2zuF9keyG@u`b6A#Cx%kb54&u+MQMAe?L5?OjAC5jk9rKH zfZ7b@i@lFH-Za0w*twt==$N(20ear32hCbpuR&I+(@=hhJ5Xd*9By`t2wsD%2H1mb-s?*S2yB0>HIJKE$xpu7Wv|8cVQ)b&x+ipCC zLeZ;1sidrrQqy?K?4DSkX!q(jV@2tsmP6^k)Nxm{$ph(Zz7APvKMnHPSO%q)-FwIf z^%$~K4Tfw}gW;LtYQG)EHIBKrf{Eg?+ObflIaY@CJdpp^!juX2tKU#st+hW!G>(O3 zL}MOP8C&mi!Vbs$(c3}p)p96(%z&X%VV@9+@9Dm-rgF>%V*}*pW~av4_UCN-Y<5Vg zl^5nuaiJ-6eH*1&i9O#>S$|iuw>5V(_cr$x)kWy8UHmxRoN3NB=bF}3?2$(^w)VoK zc^Tsz)Z3OWc(`elKiZ`(XVh$HMCIFqVQ)CHN-gKz)8g5i><$^}WcDbMs)rUCvsh>E}cG{CTnuAuiI@WI6JBGrY>Ud3c=u#8m{M3_F14B?E z>t&-dsPBx*&roA}#_`Y#lXs)O5+C$CP$=4J?~pjE)ltf8-%z@ZS{UW$P{kG5rZqre zslAY$qnb%rY628HZ!HcXN?~zD`Q;7{f2EST9r>VE*9NfAyZ~}@xZ|k5>R76(+fnQe zcUXrz-;dO|L!WrIDR++a8!?P*hw$`rUFXA*E4Qf ztQnka3yoA=;g9|^^5RX+s^e z&`cn*&2DpK&wATqd||DZCB_%So_L(=W2MFX9kN8LjO?*%9a&-|g2J`_j>0uBfxuA6N&&bNQp z{0bW38=>ORBNL{+|ERAlhK{WjsN0bx(ih$J&J8K;%-38a+Xs84mHHW#(<4=`a9fkj zN2+Y2bTdzg+^dK2%AzlA)%9#MV}RVKhf%897llGP-d3rH4_8XLYu*p#g0h9;rCvQ; z`5^_Y`Xe`Lzfp@~mx5z4^?e|+UoU#JW6760j#;HIjr`P$wpt@Z^%x3KZHDKI)``(w z`&dTnI(o>CxmTY^LAw?0f$Qbad!xp+$Xe_4sJwaikcGzY+Dmcw zuAx|%lSgjO^s~yAu@jrUal<$Yg{~Lvi#|DJMgXOZx6F)^XU)l@KDhof?r839?knm) zqq};}Xa-6j7|pQys!~bvla* z%MyFhj92X~QUcH%m_2U8E+>1ASUB2cU^Ye1*4rf=^lXoG&lWGPW2?&6aO|G8QioDQ zj}*HlsIZ% z(cR;H*Y{%9IcAzin=I7dLm>|9A8H}T>{AP&SlEGs{IL(m+=O(~uR~8+gFr5q+l~H* z{;T-vp`mzL6+@w@qfjX3?osUQrbA&_gBYz7pQ<=HX8Ea(ogJLR`Y{So?S%YPM@eg? zLQe*jiuHcG^=BMgAJd;fHW+oI@~mfq(%CM0yihd8M_1HDC{@isqExlQfnw^*KwKzV zaX~)l2_S#$>ON9&=Eg3*BNftRMdNyN+SUIXOI%iH!JPPH={@t zy741&Z!Hn+#k9_ZY_`^9ZgsY4H<;Z*$f{xH)hN$Q8j%g&Su}U<%|-j2 z^&gRM`ZXvNy$q`Y?2&WG2k#WJ+#XT%O^+C&>&8vqSkD?0p|E`YZD;WACjY$!$SURE zY@N`}9HD2u1;|frG>WO2F8d**k2k`qBs;wY)-Z&w%p)I^eDsu_Jes#QbA{|tp4Bo+ zl(~A8Cidu~(lyjU`ooU-;OkA4Yv#p}C3?juc4o}cU2EkiE@wJD&$dhRT1U%A`Kv`n z_MhuKHH$u4kI@SI#gx6p?d1}U8h2K>!&l?J=yhHDh~7Wn#i2bQj&S&f##6o!LA?pz zbs$UaJVtvEm3;fYjS{TcDIdO{c@P6sP{j)kQkgF?|~#$lC4C}vbpnpov9U%0h-X_F6T zD3Kd8Qph*&4w@_V?%=tiQ3Vd`WM*0P7KeTra-(m8>>S=GEsSG+syk7L>Ym}fky_lC zuRyjP?{v1l=AJ8DAe+5+$OdiJ=)GNPS7s+%;nMswvPV0GQd@o?`~AuW&NP(){cU8A zUN?GH?-ThTJ}BkQV51Z>3xPs63xW1!n~T70O{ru*IodmBMgoPXHb5b$4N!`y4USbv ze74Wr+`Tj$X7GjWm_1rXbNXyv>vuuT;CQ&sDs3MsUHb62&}4%a5c%L4WRKbd*u<6;z`e&?GVf#_NL1dero*N$Z0DCZb-OCO zEke-)Lwnn;#3KK#Pg?o$g@d_J@6|AO%dLJAYR}AIq0qhWC|qwk3f*`M#a$n8=!I#8 zSgwzN<`%UE$fddm?SGMz=(>~`EJBvJgJS2GE0D_*9hR?ckJpjA<{P==#+Pn(+wjfX ziYzy?hf>(P!$-F1$)UJd<+VG|?srAF7S z@1W~SEb?u$OQJn0>NV@AW{1RZvMF@4J*dnojmV82FiH`lR5X4y8b!5*KB4bO{SJg* zkvUPl+s&di5x)#^s%X6f9Z%Ok;{k4FD_*{0(O#Lo@r{MK9J{+v{q0)-yXIZj-y7|F zuzSev2h>ADEz+<8W)!CG_LSZlde#UZg{6mv_5&()IE>C&Xch#yG=G5H829Tt^G6?F z-$yCaGaC9qC^xj>IJCw?YdN$M{8TH*F?-^bZq&Dv*2snvZG(14S!BPS9`fJUU;2Wx zO;0F+qi?{}=Z?8I(}L1UeT2iYxaiA`#$#%H$L^}J@qAG)4&}Ac2nx%bC$d}}i_$^u zikn5>i{YhB?)BNwH%w|&6kB~qXHblo@w`DwI*a>|^fJ#Bl7=0@yn8|aGP^|6Xz zZQqQ?XhlJ5;aFR3t^-$^(#gmL#m3H2^sI3ja_@_O^o^56yzlmbIhZ zb@EBS!Tg%~!Z%6i%Mv_S^p%EvzCMxeADYg_UPjwd+Y!; zuHN1hU(cgB+5uwt1o zuAsYWS!9p*9zCm+p%jpEC@ixU=vh5LZHDW1RwEzu(70o*mIC=;M24)@`$E3ifq=rb z4*|~<%~YT(dS&KH0kD%u(QY(>HT=BqQ7O#E}2mCKRIH z7fKC%FyvA@g+nSxTQjSul$xEu;kq>U?I^md9zeEjwo9#;k?m|#=t>4E;eOQ-S#qu| zIalw!WA^y!2F1c&3X}_aUnupoeaIdoL32z}TYHDDpRdsL=65u&EUInL&Juml<;r7Y zM7uE2Jd|HMvo`69xz^D-rP&h4o?<0x|J6LGm+Cj7{5laICd+2u3T|ooJwEfOs5Y8v zf2P{Kc~m=ecQuU^rz<_R6XpecA!>GDy2%D}0mC;*Mk)NaOA7hm>l)PWQ_moq^$d{D z=39`@cJ!mTsEbfs>{v(ZOIGto>$1jIj-`Os9Qk0st=T=_klVG2+^DHg>tS6UxzYL~ zOU%KdR5AyPa!n0}6HViCH5gvn=?u6b^h{>G=srCx-&2fN$61L#@vAIN9DS!9tq4L!?ZWT74fn#nL$K<@QS(Oo?_ zZK;x@mx0340;`pWHq%`#8%h~12J*+-FHEIfuHukRVq|&rY%m9l<4q;O zs1w<5t`()28CPG(@L7MxPO_P%P<*?A?&`_laLfl^#3M`2c8=&_J7$S*Jcq9wQMkVJ zG=DAq?Hon#zA-#{N}mUXVs6&&@@{MHZSHGcS-iO1m|x(=@3115j#lc3>b+~9lo7x6 z=(p><(`L8Ou3xL&s4uM6LS;ePA>Y(sXr!(NL%Yn>V0gAT*?y|W?89?c56XTEcYPCQ z9z?5d%@?(VvmJ^xUt=vH4qus@GqOU-y{~MMKg0K(R(V#c_MdIK>kG)?OGLc5kIl*X zz7VyjzAQBVA_dfYDAsB}6l-M>#aI1?cJlhh1-Vq4858oyj2ZH0n3GkHIrfy9F%)C< z7;MQ;Q%U z)Cxn2qPY039*2GNuB!2ndo>2 zk!|Wv6ffT^qWJ1vp=Z^lW-XOfyIe*ynAY6=a*$j*(>|Nqx1KT6Txbf>ZdG3-ijf%{ zG%B`_1^H=C1LdzTagcB7QuCxcntO|CPSg`uPx|FSGaPD5G)mrCzS;NSogOd$M|&W~ zE1ezdua8&kP)@5SQ9pXT(gS@3=vRhtx+%t!?VBEh-)*t3?w((?Lcd#s?pi7HJq9=C zPmqOX`Kt73Qc?nWaMJvzsHP|Kn96WTQ_y^bG;> zLH&tR-VRLU-da4ePTh$5LH0M<-yzTK%s@Vv`7t(gU0sJ$&D~8d_2R5A3Cr3JvezmH z4%gXfeiT_~&Tp9QL$;YwLwD6w$Oh#YrJ=bKBO#WUKR|IYE<&j^8mn=++@;#6!m)Cq z*N>jkD@0{!)SpsL^ixop=w;w7nin^vh8_fZYqa^ue{DMo#W%%xN%PX?zNT~-wQ1t} zKP`-7xvySFaZ=Z!d{>8|d{J{Co7E7gba|(xgq$6viquvEqo@3~5qfLt$Lt(>#)Fl5s;&sZ zUIJu^{gWuZ#_z};`v*{}>dm51)cMFxzsQHqv;xwC<cmQquf3%6GrIg37)!@4p*VT~7H+7?O&vN5s+|$%Mw!0t2SFaL> zUG2g$UPiXbGvucpCJNC`NaRvmj$GO$XLV$6lg;*|80mS|C>XW;R(9}wQSFL+GlOSM zhW}>p%qxqRd2V#qNEX>|z7Dz3-$T}#b3&mT;o@}DUE?#o4C`!aEtG?LtSCm>Z5-N9 z{*UU^;Vyr?dG=MXU)rGAc_E`TF`h-1*k_4+FrG!RP=}yU%vhmk&F0~@=6F+iv&#sj zvzh@tWi1tjWw*1Mj(aPr$bWr2WP@E9>cPn-OZ4SXnhblV)CrE+qaHv{`E40s$7@}^{Xs; z)y7X|H&6{e{Bq}9KR5anG4-w$QdD#J&7|S?jqJ16`|wuc&^tGGWtS)N**TtRvSIYC zwr8!JBAWUe1WrEN4HX=86c-bw*a_^2A;bA8QtGp>V zT<6kSE^{>G}^Ub zr55?aU%xFSr<7IXgWu_5hcr=QPxU`DO?*(kkxP5F^a*w}_cr$xjVW+j)2^AVZJqIj zeuJIO<7GeEGhqaQMw~_vs0}xEuzsvxFj?u3p4IxGafThXXnf;WoY8f=YEi9kr#*7x zS8`E_uoKVN(puJBrH6Wl4}Pl++29vBP}=ytI&|Hy(4qe;$yj6bt)qEk$6{m_1;t1! zhDLQ}iRH1dhF^g7PC1sIW{go-ehp&uEsBwXV|R@dP_M|h!YF-=2#{}fi6QsHipbC> zQ@^;vXR|0M#q3Z*>1M_l`KdKTX{9wp{tr7r%_ln+Q!OL%Uzx)p6e;GtMk#6TMZZv5 zX&=#3_CM$;$|Lh9$bT~@Xw|}A2xQN&1JTYkEreKDBSSW8J(11klaZaqDJa~bT~V?f zv(PS>Vdse6s`RnikMm7#%p_}#gr&7bK3J(hDQVsq-8G|+Vlt=va#oo|uQh{w0U zdPUCc6F{}8y4U^&YgXGUbmV?#m%j17uAeW5_&i?a3iWN(*yt@(W1|q&+o=4iw^5lI zdSl}6SSV_8ln>)=p|wA)+CtM)_8y?8CMzvb3QbkbjavKZwn`mtM;&Wt+8%RczM5l+ zb{&N^*VpYbb<9uuaL`@zMJN{5rSu)8^PU`Ye`#MaPi}^hh4vvJ_x4>Y$1L<)O(;fY ziqKQ)a}@ari=)Z|ZPliJBaxr#c*2#T~Lu9gbHNeUX8DP|A_Z|M~jIYLl|2K1XS&o*K~8HDV@!e4tu-o_mMu<;87gS zI3auNc|qaoA6okwCXI2uQC zZ_4S{8ZwQ<)gHbVnW8@FH6jgAm8kBKfxcKLDzj7Vl`AcU+A2@&}HdD)ikcm zHs$q&e!njCTYsTy5m$z1rHOeJD412^y*QFX865(ELZ0v z`_=i#H?=)_O1~ZXq_#&TL_Lq}SI?td8~RnlyDjZpkuQr?uI)A7*;MMR8X!B>`6z$& z+mW?a`bT5bqiyHtODXa7>tV=FH9vZ4n1R)AbIb-i-;hgf0g91PKMG}7pVJCBR+5L_ zAs^LHp0Z9ls;#V(8aXRh_TD1jtVE!Y?Z{NGc`NN(ME=+dhuqtphf-h7 z#UQJO@wvG*vrE%WX|5Nj-rUlZr&in0yFXf$60Y7pvPyp*`K&*WgFnjNXinN2VLlke z*NiMG=UN<860|QU2hCRvvo9!Zr6#&-+^>G;&uBy|9gN#hdXL5v-0Rz_v&Bn0h05xv zKj^*CHla|IH5~Fy>{x_@73|cGAfL_8qx3P?fu7ZZAouLBqh+$ma(#ZYB(qI9rFV$p zZa0fC_-S4pUAH4wsN&-PKt(xXe;&#ab0hYw%R9d(fGpRV;8b(Ed0FwYu9379LyNf4 z|4-{iw;IF$WN7};o(0eQog+K-rmJ+Jne6F)^QNm*I39NGOxN*D`H9^4MKZqvsn0vx zzWMze`<2ZoTg69X7r)q!uFtoh^L=-|^M9eP4!>rt<({Zx^&y%$vzHx*W0sf|G-t{l z``nQKX6aFk{F)lhG|j1~@sJz!p0V7P=C-DmL@kGxH1{>_Mpv7m-h*!|kUzt>>}n_T zwtAhzmvwe{J7%pfGSO4~LTTa)ITWs12)P-3*CoDc9yG%AeT-Q)F3r*--|Ry}F3lUD z)Kin7Fs*DN`;{t`cj^<=dgzOy8rSRrvfqv;K|WhO)Zg0Pfnh=t5Kb06l_I7Db^$M zyYPBav*o{C#m1m>6>C&i?W(wM)*C(5wEp1x8RU;&3&feG*=~IpH20x4^i4HCl_ayn z+}L|y&x+qFHtIyX0QEzVZ+acb5;KG-TyG`v-@A$Iv=70T+rzi@d>g)F9{z6+@0yz0 zw^rUY^PHoS-z3m*xe9XoeNJG{!}~8E0rubf%N7dQAXC(&H|neN+KBX-O- zqaI|B66V_{*X{B08@}%P%{rWKde*+m(b&mo+zgl2&M#)5)nIcnzM|LGO_raiKC|+q z#9I%TX;(89juzBv%xt@yt+ez%BY6{i12X#EkcCQT-{kw^MX5ujNiQ0YH|>4bb4Hh3fxly}W3u3L>7+I(`MsD=PP`;Qm!}+FkFo%FcpNJ)DRAo-u z>I>j-h0mjUf}P$oWW%VG4dshV*5Tl{BlV{lRkj(kqr3WA$RBkncT!&ciChlrRccZD zB(^lSHSO*(7PfO@M{{q{oTr`2c8mMJlhONQT?svFbqTrmn=RIR`|Ze?vKg(D z&D9;$cbIE?^|j0qTcP!TF`=jQg#4b4@;>}x#X_ZtnG5!e{)Y{As-ICGlxuxcZpD@15q;_Fl#ewo!>?}!y>G4eZz=yxF0+sKXIbVAmupOJ0ac;tg$l|Z3* zBjlV}TQxSaT=_?q`}z;1xo;woZT6<>XN#F#3h0_OSv%ADZwxi;Qb*sZ=-VhI(!riV zioafvnYUL8+&gf>PL65ZPwrghDr}(1Q@JUir|Q(5mpwn}sYN zR_%sD^eY-DZG9(;QpuVl3d?3LI;_3+UhWN-@-19QM-bH96K(*LGN|n{3WExu2{Q*4KC4yd_%6 zF$T9A&y`)3!l?gipA*_kvAgroyP)4@2l0HnnJ=r19QbMP9J=CHXK^^@zh65+p;&uD zCDdLWR3l0Sv1PN7IJ#>U+1~N3&23FztC&SZvCu}KnCjc3r~G~)4*SmeX?%@B)SE)r zy&b;u(cd&vhpzaN3%Rss7_H=J5ADmS51o~m9YyOPxOeQ{mEx;oqd!-xgKOvH=2smKzIew$SAOk(^}+uG D5o+dY literal 0 HcmV?d00001 diff --git a/.vs/Ruyi-GUI/FileContentIndex/e4b0e6d0-617d-47df-93a6-30168e1de63f.vsidx b/.vs/Ruyi-GUI/FileContentIndex/e4b0e6d0-617d-47df-93a6-30168e1de63f.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..821f19ae06f93f5282679ce4b93009e3e3f7fa4a GIT binary patch literal 171 zcmZ>EaTjD~VrXZ802e6j0HmF*VnT~ki;82Ca?`U?V~X=ji;`1gic$;mi(`UHD>HT7 zLp>1;M^De>{5-wP`#kUYZ?4zz{hc}Uo-=1=XQyraZh6JHHJ0m^d3>$^W&D2?5i^+*Sw3pYq}kJF z&7QL3j9vGbK4tdI{b%hoeafuq`^=m@rD^|zckefD()j-`RLz_&j&^s#!kDimPWb%SL5dG%b_K#r!SarvWJE{YWm! zWY&mGC8Q>EqP}AO^dRb%#5g95FeI47cJ_HX-<4hS~@+ypY!4h7O9D1%28Rv)>h|YsmduqJ(omTH7Y2ot#Y(f zQM0K~5-aMe(X6`CIJFY$lT`HLHS>(;9R66&2*0Xps`;N6bbi zDN~i2RdYp^RjK~<3Fh)STC`>+vmkO**3^}zVW_O0m3&6DofBhIz4}qTy6PHgnpM4$ zZ-|(3)S(L1`2ncOh-jrsOJ(L@Me12)C8$GnuIbxI&?40+CoL+Da!S@B zeF2r3mMW@V)1qiHHGhn$J{N~aN>)Ewky!@u-|8)ujG& z@%2<$1DF$0i&Uu&HK}J!DN_ZlPG!|AQ#oDhRXLmAKo!)LYLu+9rvF8ak_#e7vs$WH z61^!o6_lyMq8NO)I3Civa*>>(lCv?TMJjhjCt9i+twJ?DBY%bbX-8dYQi2vKN0XYQ z{Qu?0);-^eYSc+dOlqZMl@*n*oQf!=wBD4Ejb!Dg9L=Uh z%29%*X;Gu*ospx=t`1d5>(bJFBdsuM)Rp>C+pezCmMUM9D!WFgG__TYx=odhQJxd) zQjI!EIZD&4#xOU(by`<0D%GbJshkF^{3S7~1ofP9N}`|6m{pCMq*bV(oRpTDcXg%9 z!J^2_#vqkBKW5dH@|CQ9(g>^b+m-t1o*!XXrrN49^`n?tsWPoGMb#HZ&a~(`rKJwj zx>QytDyw-(WU3|=N@GY`sy@|Fl}bxXb5YiHGc8ioB4w&xnaWY2B)&mfq=II%k*qWo zG$~nWTB*v4n*DF3W=o<*&6TDp7qhA?%(qfmX$3K>9?}^g8;O4F>`YLW80 zMM0Hnm6~g*7OA-ksws`xl&>`9rzw|jsM%Cs7M-YV8h~P9EK)z3y2`3oerlpl)Lcyz zHA2OL|LkGSrco(PJt$4HiW-$_v{aR8Qg5nEWfe53Mmfq?TFO_{R!q%g7RLAM&`jo^ zXri=iCi85JP?fr7>FTB$P3lB<8oI~O6;0Pr)oW5GTBQ1e<9_MASVdZ-`jSj$X(lr+ z)~@Cnzz31PAj(st`KtLFW8IG(oylw-cW7z7o$>WAjHtF+*PLjmvL^)rnRe( zRyQ|BSQ}9_8jKQ(BO#l~Y!NjYMlPn_nT#qGwF(t<<6Ro(9L=hs`rIQ5<&p4lG*Ox+ zCFtlhc7M4 zMoo%SW4lsiF5i`A)uc0;tE`^2fyyt8sI-#&Dpb&Ogc6jm1QoPiRcg|#q8h4FWljH! z5v~*UO4D(rN^PdvDo0Z;uG*;+C3i+|sk!=5jWRVUO=Y!Jq2xdHsT0*GS!vzlYp%*P zo0_Oz3EB9J(xO}>=o3lximKN)QBjMOpN)cgQz13iA{Er3Vqw0ZS*=JPmNJ*gWIl;m zm6fA>9rNm02ir06{q39YO=rBcX?sP(xe?V$t5%0;MVeK)GkVYkF4e1*#-lz{LG>yt zQwM5F(2m_TM$#?DpfoL2S!v5gjtZLnJJzBmN=SoGIZ7_eWERJUq?%l`Ri+AQVA&Xh z%9_+XMK$bNn##&o4@xe{=cGeK4f zr&_5-IVJgxRn5G}sfijbN=+K$oS>f7R+G}Ss4%}X)m*b$of5ioQsr~`MOvLErKLjm z$nP07>QHS}qbB-X)PpY8!}48aV?13w|MyF(N;Of3in)kN?wv2I+q6hg<?_ z!2C$=nIF8;)Ky``u2HF=e2p-zLItfQmGxa#Sqa)poiS|HD?vT1pTFE_jasT$nm@!~S3jCnf);5likeifk5Y?DqLW`U8GRA7RFzuV840=~YX>S* z>rJhcoO;M*GMcpBv{8!sirp5E%)Mff@^xNSa~;WAq*JaAel^!p4JI87^D~+2V(ae9 zWDbv|>hrAVQv*|34Hc`SrZW)H_C%jUg$jTTNQ8Vp%4mZ+aS=#;@MAMn$z! zrMgmClQI>Rpn?{qCYsIVw^s!XTRAEeR+>IE$Jhuj(Sz9 zp}Nwfh9!}vf~M5rHBspHpL%tYmUi`=i-xLKC;F^4o604TsmiXksG+)=mftkZDpO09 zqvTXp)T%Y5PP8;N*TJC5u5qTdYgUyv#I-f`pjNq9ucFqas2mm4i4wAz%oWijb*q}x zXIiN;RVdBB^-{8?g6Kq@rCDCEGh^Z4rRceu@T%>7M>r#%QYLuWws!Xd;{r_T0AB`5J z9u$?VG$m+AnpI5ws6JIHcGaYO#i`Mo>easz)VV4(tLB=Dq9z+PTBJfr)aX!GvcAqW zQJH#9O>&W=vXa$A`6{SGm7o64=4dTxsWR1EX^N_x8;_`|NouRxX*E}kW~atxs-cq8 zDzqpUU8zzzsa}gTtEdjOR5{vRDN{MB)KbkVYAT5uHB3zuQ;up>NM+@80SuI@@ z4OLbXO$+0=of}_aRhGu}H+7PWVJIq1F?FS!uCnU0`F);pw1-uAKXP=I(>YBw8u`-5 z)S_cz7^#P@+sM>bm6}STLk&O=I4Wz(Mt#~X3o@C}nasQSN-a{tkl4d1p)>}NhN|^y zQdd1QnKz>otw{N~*cL5P^OUK(BQ4Ub7O5XaE!84TDNTzssjHM<9QkUZrJ7XGl=9Q| zrXEV7l^SYR2`Z>Y`C3J4k}6ZTTBNkpn`+W9(ne{KYP3}Os>wzn<)nU8)}(TZU7M3e ztLAEz%1Y4ey!;r{=gLu&8Y)MbO321YQbFAo{%35eOvx%}(upPepJAu9ROkEDthOjc zC0`bYnVM_bC2~}$HRke94Js&ElPWc3W201=Ce5bav`7U_iy~R|CHa2Rx-@20rk+!W zs?n5-sALrsm7tiKXh@o}agJ5YMOll~O7(MMbvk;r(p00^RZzaBvS_6~(;DaJ2br2E zVP33GtyETJNfgo;md)4bgr-HR%*9fzI(4XI)u*AVxn^~8&;xQBgKE@JOI4qyf@r9v znsU*V>a#K1J2G`Yb7?*pFfXEd$i<6-l4z^@H!V_Tn$^<6d=s@*rZz#9*~n2r$*R}X8B6s=(@;|n z>O_;u>PiK*Rjah9M}AffRbTj@Rw+T9C^_XTM|Zz^{n#s3twkl#N`0z4CuY@3{isGw z6jj#Pl%}>?q_QeCtEeU_WMj%jf|jaMi&Uwa!c6AYsL^ae?CPmeudYg>{`5%h8MEqK zleStP+`On!xhzg@>Z&+0)lfO=O{>s~R8T)!swZ46(%SWGr376ImgdKxN=?e_lOLFx z=+IJ)CMD-0o|w;9jk?nGzgVPX)#wmXpUSVurzt_RDMvd~gHb# zC2P{gYLPNE9v#fe*OY2hNIB{%4N0@v=uMrdMrox{P}{Cr?vnzXcA3?qGy^qi|%b)rQosE4i%S6Syt zJicV#9tJ##G9yFE28ka_4UX)dti$y7_ zp<1a@(|-%uwO6ZJ5DyVr{q^L<>gd;PVM`GBe zv6pl#X?2%H&uO=mM7_$3V_jOKMxvNjt)-e(w`o$_=b~n69G|yGT20ib2Mt>Zi(-ct z=6g#WYN>{o%GX6fJ@}K6ZXAM=0 z6iZ@KK~rk3`dpN|=X=ni)UA@0qovjP4pmmA`pia+(lmADs|QWWQB*@^s-R4j)9O^C zwrT0qOlC@cdsUPA$;A(0N><^NSUNtA9DO&nqg1J=rPUF$`L0w*{i~l;NCQ(;6RlB` z%8E-OYCLM9NvAt~?kbezYgC>Z-Kw9?SY7%M)m)i6p`}dqkj9fXGZ)=zQDqd;>Qt#7 zvM~mgRVay`)s;F=^{FzK-w^dSH5O?@R92=6>P-n1v3AvH>T0F>G=R;bQf1XBza(O6 zt7KKGxn|R(rRtxYUonyvk8oX$#}AMORPF<|3+3ZIRAk^CK;rPo5f`C`}1E zmef%BO4F}?nN0SPg-6w|qV18CPx_{^uvuSfuTpZ^O9cDeFmD1FM7O4jn zbk3g}g=ujv{WuQDlKk*;`Bq9!4K*Y!RlRD|$@GYt%|=0M*U~fwb*|*D{PZSSOO>oe zn$%pg8dyrpMkk*{{h}zVK2@d!#l0d~tJcoZqHkgts@KI-JGL=qRj(QyJld1`qMe%G zdufeYn%XKy16UMSd2MwrCT*htwYNdwrV^KE$dQE5MvglApf|j=A zSE_uq(tvXjRZxxkOqH6|sQN@yg6cIkHBSZA^oX(!yozYvb>2{d(iX&MwZ^hcCcTVO z=ju>VlM+%_irGlkhozH`CN)nv#Zj+eC_xQNV$v5dC1^GmQ%X=jx*1T7ma5PhZiFzJNXR8(SFlX)S7^Z-IJKKV7RXjWwov4PKoe898S}j%GC;O=^{*y3(5*?VqRf zhv;Q7fUo0hnevsRWR*2_m9=)270cp+n2j9OsG!&xt1F4})Tqowb47KfrP=>{C@QD= zlK4clEt*x-ZqypJv}eSr@fB8mR}ae9Y?{PkCSHOfy3>O_?(r!&gw6I3jTdc~#DRyA6?X7znh6ZN37)~Ih~HovZP z64s)$G$kl%Rx45u8^(@OL5Hha<)U7TH1&*G^{o2h=v>FJ%1Tacb@X<|&y=eCU-YTw zItjd(U!5KVl)NyODzoH2o0j@fjS|#Wv#G48v1z3$CH6J(nMt3Yxmcri7HEN_CYMr9M?IiOLj$Hl%VEnr5w$wbCp%2 zStYBilagL7s;ottQcgA&r36)`XtCi9UqGu)KVyP;%M%61vHM%KE_1UOQ^~%wQsLoSA`qt}ESBJ`3 zCH??4HBp*QM5@$mTB?FNS3?y_^7ZOOlX_NtHli+Vs?jQxtVx%ZOQI&ts-c!DQ-u`O zP|Z`%s#G}_OH-Owts2!UElrx$RFLme<$2LunQBs;?@FC(QR+$!)xVZ%R%P`zFW)5f zuSKfVv{U3LIU5PuGb)$GY%bqhTBL?LEYsty`s|EM^`J>j6qTTY7OC?THLFR@wMaGE zMJl9x)#u_ursQtXL{T*hVm39O8*Npe7Nxdop3P56Q(5(DsD64zK|QNRP5v7-t4!tV z^}7n1otIycD%C_$`6`s;$FFjl)VUU^e@z{6dD85h{5GbZi}R~i^VCmQpXyna>Lm4} ze9aa_niggAD^Z7os;rIf7LY9 z-VfDDs0(JO%Wb$Ex(~P2V@9ZpNVpQ}YZ>$U?u4u2YN!!Ly>7Zgojt>~P~VT3*Q>yA zU0e@!MU46lP*?bv-v~FxO>k4(471o13vhERL|t~HU!502y=)D8<5t)Qbq5&Bb?+JW z!~Qq`i%~CdB5x25#vwQq^|~tZhT{kviKB39)CoQE$KY7p21~FMb$mpAIaXjLR^d3* zfff0BYZ2C@5EtRacnMyLop>28#>?>vyb`a%tMMAV7O%tW@dmsRZ^E1L7Q7X2!`tx= zyc6%jyYU{p7w^OSaS1+v58^}kFg}8h;$!$YK7mi-Q}{GKgU{k~_&mOVFXBu1GQNVZ z;%oRizJYJzTlhA*EHvA#Q{l<0iN%ZiZRxi3PYh7UCAz3%A7HxE1!nBJ7L( zus;sKVjPHra4-(Rp*ReO;|Lsyqi|~+jbm^uZi6LQie*@i6PQW^> z#|CV~iP(hA*n*R=72B{KCu0Y0i&Jnr+#YwpsW=UH#GPTY)gZttvoQ?b8{&)Z$hzH@pcnBVfhvDIP1RjYwoP%@mD4d5!<1u(F&d1~Mcsv15 z#FOx3JOvlvsdyTmj%VPRcov?G=is?`9-faE;DvY*F2qH6FZ@5TG@eq4eN;Dh)OK8%mxqxcv; zj!)o|_!K^k&)~E896paP;EVVYzKpNntN0qej&IY?1=@qITqp;*bBGB-nbR^!6NL7{jfg{z+xPTgK#ho!J#+|hvNtwiKB399F1de zEN+7(Sc+v>julvmRX7f-aXi*wEl$8Xtj7jy#EIC1&DesIuoc^|9VcT4Zi`cJJKP?3 zz^OP5cf_4=XPl0^;I6nE?v8ulp12pzz`b!M?t}Z{ES!z|;r@649*76w!FUKBiihFh zcmy7aIh=!Y@hF^!N8>SgEY8Q{@OV4{PsEe(WIP2I;Hh{To{neWnRphSjpyLGcpjdQ z7vP0>5iZ0P2Cv2I@Or!fZ^WDMX1oP&#oO?9yaVsV zyYOzj2k*uE@P1r^58#9N5I&5L;G_5$K8{b|llT-qjnCk-_#8fuFW`ɲSD;H&r= zzK(C;oA?&Kjql*Q_#VEGAK-`h5iZ4#@e}+MKf}-Q3;Ytl!msfg{1(5%@9_ux5r4v; z@fZ9Rf5YGL5BwAV!oTq!{1^Q*OI-i48!m(0u?H@T%i;340bM53 ziEH87xDKw1>*4yi0d9yJ;l{WLZi<^>7JFg=ZjObx1@^)%u{UmoeXt1oVn6JU1F#qe z;vgK1LvSb#!{ImrN8%{l8b{+89E;mv36^3RmSY80Vik_VY8;O>Sc?;|4(qW28*w5w zVKcViBy7btY{$vif!pE~+zz+L9dIg6!yR!a+!?3iF1Rc1hP&e)xF_y~GjMO5iTmKb zI16Xvez-p#fCu71crYGu9*gtwI6NLtz!UK#JQ+{H z1$Zi+hNt5hcqX2OXX80|E}n*7!)hFlHCT%iunz070UL25HeoZi;3RCtHf+bq*n!*P6xC)^pQ z<1V->?uNVL9=Ip&g)?w(oQeD3zBmhK<9@h59)JhpL3l78f`{T^csL$`M`8}=;9NWk z=i$+K3?7T~@i;slPrwuLBs>{U!3B6Ko`$F68F(h1g=gbAcrKoY=i>!jO zm*Az?iI?GGyd1BU0K z_%6PO@8bvfA%28Q@nif1KgG}RbNm9o#INvc{06_p@9=y40e{4w@Mru5f5qSMcl-nY z#J})w{0IL<|0R4}|FIh`gWa(QE{n_I^0)%7h%4dBxC*X{tKsUn2Cj)~;o7(ku8Zs8 z`nUmZh#TR?xCw5Gn_(7vVgYWBg}4Rw!Y#2kZiRiY2>W6`?2iMm7zg4Y9E?M7C=SEn zI08rFDBK!H;}{%^+h7TnVi}fW1y*7ej>Bpkk2P3}6R-~Ju>l)#A~s<&w%{ae#Wrlm z$=HG0;uPEtx5piDDo(>4aVOjvr{gZTEAEE7;~uyt?u9dOZ=8wy;J!EuXXAdjKOTSw z;z4*Y9)gGBVR$$mfk$Ev=ippC3g_X`cnltk^YJ)59#6m%@gzJMPr(IvDxQX?;~97+ zo`q-QIe0Ffhv(x3cp+Yd3vm%%jF;f0*ol|nV!Rx$z$@`8yc(~;Ywk@N@hEzr?TbYy1Yk z#qaQY`~iQ&pYUh=1%Jig@OS(J|HQxWZ~O=UMgRA6as9_`xD0m39=I$nhs)y%xFW8E zE8{A-Dz1jB;~Kaou7zvkI=C*bhwI}8xFK$Y8{;OpDQ<>Y?1=@qITqp;*bBGB-nbR^ z!6NL7{jfg{z+xPTgK#ho!J#+|hvNtwiKB399F1deEN+7(Sc+v>julvmRX7f-aXi*w zEl$8Xtj7jy#EIC1&DesIuoc^|9VcT4Zi`cJJKP?3z^OP5cf_4=XPl0^;I6nE?v8ul zp12pzz`b!M?t}Z{ES!z|;r@649*76w!FUKBiihFhcmy7aIh=!Y@hF^!N8>SgEY8Q{ z@OV4{PsEe(WIP2I;Hh{To{neWnRphSjpyLGcpjdQ7vP0>5iZ0P2Cv2I@Or!fZ^WDMX1oP&#oO?9yaVsVyYOzj2k*uE@P1r^58#9N5I&5L z;G_5$K8{b|llT-qjnCk-_#8fuFW`ɲSD;H&r=zK(C;oA?&Kjql*Q_#VEGAK-`h z5iZ4#@e}+MKf}-Q3;Ytl!msfg{1(5%@9_ux5r4v;@fZ9Rf5YGL5BwAV!oTq!{1-FJ zas9_`xD0m39=I$nhs)y%xFW8EE8{A-Dz1jB;~Kaou7zvkI=C*bhwI}8xFK$Y8{;Op zDQ<>Y?1=@qITqp;*bBGB-nbR^!6NL7{jfg{z+xPTgK#ho!J#+|hvNtwiKB399F1de zEN+7(Sc+v>julvmRX7f-aXi*wEl$8Xtj7jy#EIC1&DesIuoc^|9VcT4Zi`cJJKP?3 zz^OP5cf_4=XPl0^;I6nE?v8ulp12pzz`b!M?t}Z{ES!z|;r@649*76w!FUKBiihFh zcmy7aIh=!Y@hF^!N8>SgEY8Q{@OV4{PsEe(WIP2I;Hh{To{neWnRphSjpyLGcpjdQ z7vP0>5iZ0P2Cv2I@Or!fZ^WDMX1oP&#oO?9yaVsV zyYOzj2k*uE@P1r^58#9N5I&5L;G_5$K8{b|llT-qjnCk-_#8fuFW`ɲSD;H&r= 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 rzTL5Aq!}IlqSMbgbszHomHC$_>v8@ literal 0 HcmV?d00001 diff --git a/.vs/Ruyi-GUI/v17/.suo b/.vs/Ruyi-GUI/v17/.suo new file mode 100644 index 0000000000000000000000000000000000000000..625b87594b869e0a57ce8b2669633fc2927c9db2 GIT binary patch literal 80896 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 literal 0 HcmV?d00001 diff --git a/Ruyi-GUI/App.config b/Ruyi-GUI/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/Ruyi-GUI/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Ruyi-GUI/Form1.Designer.cs b/Ruyi-GUI/Form1.Designer.cs new file mode 100644 index 0000000..658c494 --- /dev/null +++ b/Ruyi-GUI/Form1.Designer.cs @@ -0,0 +1,629 @@ +namespace Ruyi_GUI +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.Img1lbl = new System.Windows.Forms.Label(); + this.Img2lbl = new System.Windows.Forms.Label(); + this.Img1 = new System.Windows.Forms.TextBox(); + this.Img2 = new System.Windows.Forms.TextBox(); + this.SelectImg1 = new System.Windows.Forms.Button(); + this.SelectImg2 = new System.Windows.Forms.Button(); + this.SelectVideoOut = new System.Windows.Forms.Button(); + this.VideoOut = new System.Windows.Forms.TextBox(); + this.Videolbl = new System.Windows.Forms.Label(); + this.FrameRate = new System.Windows.Forms.ComboBox(); + this.Frameslbl = new System.Windows.Forms.Label(); + this.Resolutionlbl = new System.Windows.Forms.Label(); + this.Resolution = new System.Windows.Forms.ComboBox(); + this.Aspectlbl = new System.Windows.Forms.Label(); + this.AspectRatio = new System.Windows.Forms.ComboBox(); + this.Motionlbl = new System.Windows.Forms.Label(); + this.Motion = new System.Windows.Forms.ComboBox(); + this.Directionlbl = new System.Windows.Forms.Label(); + this.Direction = new System.Windows.Forms.ComboBox(); + this.LowMemoryMode = new System.Windows.Forms.CheckBox(); + this.Offloadlbl = new System.Windows.Forms.Label(); + this.GPUOffload = new System.Windows.Forms.TextBox(); + this.Samplerlbl = new System.Windows.Forms.Label(); + this.Steps = new System.Windows.Forms.TextBox(); + this.Stepslbl = new System.Windows.Forms.Label(); + this.Cfg = new System.Windows.Forms.TextBox(); + this.Cfglbl = new System.Windows.Forms.Label(); + this.Seed = new System.Windows.Forms.TextBox(); + this.Seedlbl = new System.Windows.Forms.Label(); + this.Schedulerlbl = new System.Windows.Forms.Label(); + this.Scheduler = new System.Windows.Forms.ComboBox(); + this.GenerateButton = new System.Windows.Forms.Button(); + this.PlayVideo = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.AddJob = new System.Windows.Forms.Button(); + this.JobList = new System.Windows.Forms.ListBox(); + this.RemoveJob = new System.Windows.Forms.Button(); + this.RunJobs = new System.Windows.Forms.Button(); + this.timer2 = new System.Windows.Forms.Timer(this.components); + this.Batch = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox1.Location = new System.Drawing.Point(6, 6); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(2); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(257, 267); + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // pictureBox2 + // + this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.pictureBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox2.Location = new System.Drawing.Point(276, 6); + this.pictureBox2.Margin = new System.Windows.Forms.Padding(2); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(257, 267); + this.pictureBox2.TabIndex = 1; + this.pictureBox2.TabStop = false; + // + // Img1lbl + // + this.Img1lbl.AutoSize = true; + this.Img1lbl.Location = new System.Drawing.Point(3, 280); + this.Img1lbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Img1lbl.Name = "Img1lbl"; + this.Img1lbl.Size = new System.Drawing.Size(78, 13); + this.Img1lbl.TabIndex = 2; + this.Img1lbl.Text = "Starting Image:"; + // + // Img2lbl + // + this.Img2lbl.AutoSize = true; + this.Img2lbl.Location = new System.Drawing.Point(273, 280); + this.Img2lbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Img2lbl.Name = "Img2lbl"; + this.Img2lbl.Size = new System.Drawing.Size(61, 13); + this.Img2lbl.TabIndex = 3; + this.Img2lbl.Text = "End Image:"; + // + // Img1 + // + this.Img1.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.Img1.Location = new System.Drawing.Point(85, 277); + this.Img1.Margin = new System.Windows.Forms.Padding(2); + this.Img1.Name = "Img1"; + this.Img1.ReadOnly = true; + this.Img1.Size = new System.Drawing.Size(178, 20); + this.Img1.TabIndex = 4; + // + // Img2 + // + this.Img2.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.Img2.Location = new System.Drawing.Point(335, 277); + this.Img2.Margin = new System.Windows.Forms.Padding(2); + this.Img2.Name = "Img2"; + this.Img2.ReadOnly = true; + this.Img2.Size = new System.Drawing.Size(198, 20); + this.Img2.TabIndex = 5; + // + // SelectImg1 + // + this.SelectImg1.Location = new System.Drawing.Point(6, 298); + this.SelectImg1.Margin = new System.Windows.Forms.Padding(2); + this.SelectImg1.Name = "SelectImg1"; + this.SelectImg1.Size = new System.Drawing.Size(257, 22); + this.SelectImg1.TabIndex = 6; + this.SelectImg1.Text = "Select"; + this.SelectImg1.UseVisualStyleBackColor = true; + this.SelectImg1.Click += new System.EventHandler(this.SelectImg1_Click); + // + // SelectImg2 + // + this.SelectImg2.Location = new System.Drawing.Point(276, 298); + this.SelectImg2.Margin = new System.Windows.Forms.Padding(2); + this.SelectImg2.Name = "SelectImg2"; + this.SelectImg2.Size = new System.Drawing.Size(257, 22); + this.SelectImg2.TabIndex = 7; + this.SelectImg2.Text = "Select"; + this.SelectImg2.UseVisualStyleBackColor = true; + this.SelectImg2.Click += new System.EventHandler(this.SelectImg2_Click); + // + // SelectVideoOut + // + this.SelectVideoOut.Location = new System.Drawing.Point(445, 324); + this.SelectVideoOut.Margin = new System.Windows.Forms.Padding(2); + this.SelectVideoOut.Name = "SelectVideoOut"; + this.SelectVideoOut.Size = new System.Drawing.Size(87, 22); + this.SelectVideoOut.TabIndex = 10; + this.SelectVideoOut.Text = "Select"; + this.SelectVideoOut.UseVisualStyleBackColor = true; + this.SelectVideoOut.Click += new System.EventHandler(this.SelectVideoOut_Click); + // + // VideoOut + // + this.VideoOut.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.VideoOut.Location = new System.Drawing.Point(78, 326); + this.VideoOut.Margin = new System.Windows.Forms.Padding(2); + this.VideoOut.Name = "VideoOut"; + this.VideoOut.ReadOnly = true; + this.VideoOut.Size = new System.Drawing.Size(363, 20); + this.VideoOut.TabIndex = 9; + // + // Videolbl + // + this.Videolbl.AutoSize = true; + this.Videolbl.Location = new System.Drawing.Point(3, 329); + this.Videolbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Videolbl.Name = "Videolbl"; + this.Videolbl.Size = new System.Drawing.Size(72, 13); + this.Videolbl.TabIndex = 8; + this.Videolbl.Text = "Output Video:"; + // + // FrameRate + // + this.FrameRate.FormattingEnabled = true; + this.FrameRate.Items.AddRange(new object[] { + "24", + "48", + "72", + "96", + "120"}); + this.FrameRate.Location = new System.Drawing.Point(6, 372); + this.FrameRate.Margin = new System.Windows.Forms.Padding(2); + this.FrameRate.Name = "FrameRate"; + this.FrameRate.Size = new System.Drawing.Size(80, 21); + this.FrameRate.TabIndex = 11; + // + // Frameslbl + // + this.Frameslbl.AutoSize = true; + this.Frameslbl.Location = new System.Drawing.Point(3, 357); + this.Frameslbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Frameslbl.Name = "Frameslbl"; + this.Frameslbl.Size = new System.Drawing.Size(74, 13); + this.Frameslbl.TabIndex = 12; + this.Frameslbl.Text = "Video Frames:"; + // + // Resolutionlbl + // + this.Resolutionlbl.AutoSize = true; + this.Resolutionlbl.Location = new System.Drawing.Point(164, 358); + this.Resolutionlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Resolutionlbl.Name = "Resolutionlbl"; + this.Resolutionlbl.Size = new System.Drawing.Size(115, 13); + this.Resolutionlbl.TabIndex = 14; + this.Resolutionlbl.Text = "Generation Resolution:"; + // + // Resolution + // + this.Resolution.FormattingEnabled = true; + this.Resolution.Items.AddRange(new object[] { + "384", + "480", + "512", + "720", + "768", + "896"}); + this.Resolution.Location = new System.Drawing.Point(166, 372); + this.Resolution.Margin = new System.Windows.Forms.Padding(2); + this.Resolution.Name = "Resolution"; + this.Resolution.Size = new System.Drawing.Size(116, 21); + this.Resolution.TabIndex = 13; + // + // Aspectlbl + // + this.Aspectlbl.AutoSize = true; + this.Aspectlbl.Location = new System.Drawing.Point(90, 358); + this.Aspectlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Aspectlbl.Name = "Aspectlbl"; + this.Aspectlbl.Size = new System.Drawing.Size(71, 13); + this.Aspectlbl.TabIndex = 16; + this.Aspectlbl.Text = "Aspect Ratio:"; + // + // AspectRatio + // + this.AspectRatio.FormattingEnabled = true; + this.AspectRatio.Items.AddRange(new object[] { + "16:9", + "9:16"}); + this.AspectRatio.Location = new System.Drawing.Point(93, 372); + this.AspectRatio.Margin = new System.Windows.Forms.Padding(2); + this.AspectRatio.Name = "AspectRatio"; + this.AspectRatio.Size = new System.Drawing.Size(70, 21); + this.AspectRatio.TabIndex = 15; + // + // Motionlbl + // + this.Motionlbl.AutoSize = true; + this.Motionlbl.Location = new System.Drawing.Point(378, 358); + this.Motionlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Motionlbl.Name = "Motionlbl"; + this.Motionlbl.Size = new System.Drawing.Size(42, 13); + this.Motionlbl.TabIndex = 18; + this.Motionlbl.Text = "Motion:"; + // + // Motion + // + this.Motion.FormattingEnabled = true; + this.Motion.Items.AddRange(new object[] { + "auto", + "1", + "2", + "3", + "4"}); + this.Motion.Location = new System.Drawing.Point(380, 372); + this.Motion.Margin = new System.Windows.Forms.Padding(2); + this.Motion.Name = "Motion"; + this.Motion.Size = new System.Drawing.Size(76, 21); + this.Motion.TabIndex = 17; + // + // Directionlbl + // + this.Directionlbl.AutoSize = true; + this.Directionlbl.Location = new System.Drawing.Point(282, 358); + this.Directionlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Directionlbl.Name = "Directionlbl"; + this.Directionlbl.Size = new System.Drawing.Size(91, 13); + this.Directionlbl.TabIndex = 20; + this.Directionlbl.Text = "Camera Direction:"; + // + // Direction + // + this.Direction.FormattingEnabled = true; + this.Direction.Items.AddRange(new object[] { + "auto", + "static", + "left", + "right", + "up", + "down"}); + this.Direction.Location = new System.Drawing.Point(285, 372); + this.Direction.Margin = new System.Windows.Forms.Padding(2); + this.Direction.Name = "Direction"; + this.Direction.Size = new System.Drawing.Size(92, 21); + this.Direction.TabIndex = 19; + // + // LowMemoryMode + // + this.LowMemoryMode.AutoSize = true; + this.LowMemoryMode.Location = new System.Drawing.Point(119, 418); + this.LowMemoryMode.Margin = new System.Windows.Forms.Padding(2); + this.LowMemoryMode.Name = "LowMemoryMode"; + this.LowMemoryMode.Size = new System.Drawing.Size(142, 17); + this.LowMemoryMode.TabIndex = 21; + this.LowMemoryMode.Text = "Low GPU Memory Mode"; + this.LowMemoryMode.UseVisualStyleBackColor = true; + // + // Offloadlbl + // + this.Offloadlbl.AutoSize = true; + this.Offloadlbl.Location = new System.Drawing.Point(3, 400); + this.Offloadlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Offloadlbl.Name = "Offloadlbl"; + this.Offloadlbl.Size = new System.Drawing.Size(100, 13); + this.Offloadlbl.TabIndex = 23; + this.Offloadlbl.Text = "GPU Offload Steps:"; + // + // GPUOffload + // + this.GPUOffload.Location = new System.Drawing.Point(6, 415); + this.GPUOffload.Margin = new System.Windows.Forms.Padding(2); + this.GPUOffload.Name = "GPUOffload"; + this.GPUOffload.Size = new System.Drawing.Size(95, 20); + this.GPUOffload.TabIndex = 24; + this.GPUOffload.Text = "0"; + // + // Samplerlbl + // + this.Samplerlbl.AutoSize = true; + this.Samplerlbl.Location = new System.Drawing.Point(3, 439); + this.Samplerlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Samplerlbl.Name = "Samplerlbl"; + this.Samplerlbl.Size = new System.Drawing.Size(89, 13); + this.Samplerlbl.TabIndex = 25; + this.Samplerlbl.Text = "Sampler Settings:"; + // + // Steps + // + this.Steps.Location = new System.Drawing.Point(11, 470); + this.Steps.Margin = new System.Windows.Forms.Padding(2); + this.Steps.Name = "Steps"; + this.Steps.Size = new System.Drawing.Size(95, 20); + this.Steps.TabIndex = 27; + this.Steps.Text = "25"; + // + // Stepslbl + // + this.Stepslbl.AutoSize = true; + this.Stepslbl.Location = new System.Drawing.Point(5, 455); + this.Stepslbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Stepslbl.Name = "Stepslbl"; + this.Stepslbl.Size = new System.Drawing.Size(37, 13); + this.Stepslbl.TabIndex = 26; + this.Stepslbl.Text = "Steps:"; + // + // Cfg + // + this.Cfg.Location = new System.Drawing.Point(113, 470); + this.Cfg.Margin = new System.Windows.Forms.Padding(2); + this.Cfg.Name = "Cfg"; + this.Cfg.Size = new System.Drawing.Size(95, 20); + this.Cfg.TabIndex = 29; + this.Cfg.Text = "7.0"; + // + // Cfglbl + // + this.Cfglbl.AutoSize = true; + this.Cfglbl.Location = new System.Drawing.Point(110, 455); + this.Cfglbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Cfglbl.Name = "Cfglbl"; + this.Cfglbl.Size = new System.Drawing.Size(26, 13); + this.Cfglbl.TabIndex = 28; + this.Cfglbl.Text = "Cfg:"; + // + // Seed + // + this.Seed.Location = new System.Drawing.Point(215, 470); + this.Seed.Margin = new System.Windows.Forms.Padding(2); + this.Seed.Name = "Seed"; + this.Seed.Size = new System.Drawing.Size(95, 20); + this.Seed.TabIndex = 31; + this.Seed.Text = "17"; + // + // Seedlbl + // + this.Seedlbl.AutoSize = true; + this.Seedlbl.Location = new System.Drawing.Point(212, 455); + this.Seedlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Seedlbl.Name = "Seedlbl"; + this.Seedlbl.Size = new System.Drawing.Size(35, 13); + this.Seedlbl.TabIndex = 30; + this.Seedlbl.Text = "Seed:"; + // + // Schedulerlbl + // + this.Schedulerlbl.AutoSize = true; + this.Schedulerlbl.Location = new System.Drawing.Point(315, 455); + this.Schedulerlbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.Schedulerlbl.Name = "Schedulerlbl"; + this.Schedulerlbl.Size = new System.Drawing.Size(58, 13); + this.Schedulerlbl.TabIndex = 33; + this.Schedulerlbl.Text = "Scheduler:"; + // + // Scheduler + // + this.Scheduler.FormattingEnabled = true; + this.Scheduler.Items.AddRange(new object[] { + "DDIM", + "Euler", + "Euler A", + "DPM++", + "PNDM", + "DDIM"}); + this.Scheduler.Location = new System.Drawing.Point(318, 470); + this.Scheduler.Margin = new System.Windows.Forms.Padding(2); + this.Scheduler.Name = "Scheduler"; + this.Scheduler.Size = new System.Drawing.Size(138, 21); + this.Scheduler.TabIndex = 32; + // + // GenerateButton + // + this.GenerateButton.Location = new System.Drawing.Point(6, 495); + this.GenerateButton.Margin = new System.Windows.Forms.Padding(2); + this.GenerateButton.Name = "GenerateButton"; + this.GenerateButton.Size = new System.Drawing.Size(527, 30); + this.GenerateButton.TabIndex = 34; + this.GenerateButton.Text = "Generate Video"; + this.GenerateButton.UseVisualStyleBackColor = true; + this.GenerateButton.Click += new System.EventHandler(this.GenerateButton_Click); + // + // PlayVideo + // + this.PlayVideo.Enabled = false; + this.PlayVideo.Location = new System.Drawing.Point(8, 527); + this.PlayVideo.Name = "PlayVideo"; + this.PlayVideo.Size = new System.Drawing.Size(524, 24); + this.PlayVideo.TabIndex = 35; + this.PlayVideo.Text = "Play Video"; + this.PlayVideo.UseVisualStyleBackColor = true; + this.PlayVideo.Click += new System.EventHandler(this.PlayVideo_Click); + // + // timer1 + // + this.timer1.Enabled = true; + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // AddJob + // + this.AddJob.Location = new System.Drawing.Point(540, 458); + this.AddJob.Name = "AddJob"; + this.AddJob.Size = new System.Drawing.Size(101, 24); + this.AddJob.TabIndex = 36; + this.AddJob.Text = "Add As Job"; + this.AddJob.UseVisualStyleBackColor = true; + this.AddJob.Click += new System.EventHandler(this.AddJob_Click); + // + // JobList + // + this.JobList.FormattingEnabled = true; + this.JobList.Location = new System.Drawing.Point(540, 6); + this.JobList.Name = "JobList"; + this.JobList.Size = new System.Drawing.Size(235, 446); + this.JobList.TabIndex = 37; + this.JobList.SelectedIndexChanged += new System.EventHandler(this.JobList_SelectedIndexChanged); + // + // RemoveJob + // + this.RemoveJob.Location = new System.Drawing.Point(674, 458); + this.RemoveJob.Name = "RemoveJob"; + this.RemoveJob.Size = new System.Drawing.Size(101, 24); + this.RemoveJob.TabIndex = 38; + this.RemoveJob.Text = "Remove Job"; + this.RemoveJob.UseVisualStyleBackColor = true; + this.RemoveJob.Click += new System.EventHandler(this.RemoveJob_Click); + // + // RunJobs + // + this.RunJobs.Location = new System.Drawing.Point(540, 488); + this.RunJobs.Name = "RunJobs"; + this.RunJobs.Size = new System.Drawing.Size(234, 63); + this.RunJobs.TabIndex = 39; + this.RunJobs.Text = "Run Jobs"; + this.RunJobs.UseVisualStyleBackColor = true; + this.RunJobs.Click += new System.EventHandler(this.RunJobs_Click); + // + // timer2 + // + this.timer2.Interval = 1000; + this.timer2.Tick += new System.EventHandler(this.timer2_Tick); + // + // Batch + // + this.Batch.Location = new System.Drawing.Point(465, 470); + this.Batch.Name = "Batch"; + this.Batch.Size = new System.Drawing.Size(67, 21); + this.Batch.TabIndex = 40; + this.Batch.Text = "Batch"; + this.Batch.UseVisualStyleBackColor = true; + this.Batch.Click += new System.EventHandler(this.Batch_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(540, 557); + this.Controls.Add(this.Batch); + this.Controls.Add(this.RunJobs); + this.Controls.Add(this.RemoveJob); + this.Controls.Add(this.JobList); + this.Controls.Add(this.AddJob); + this.Controls.Add(this.PlayVideo); + this.Controls.Add(this.GenerateButton); + this.Controls.Add(this.Schedulerlbl); + this.Controls.Add(this.Scheduler); + this.Controls.Add(this.Seed); + this.Controls.Add(this.Seedlbl); + this.Controls.Add(this.Cfg); + this.Controls.Add(this.Cfglbl); + this.Controls.Add(this.Steps); + this.Controls.Add(this.Stepslbl); + this.Controls.Add(this.Samplerlbl); + this.Controls.Add(this.GPUOffload); + this.Controls.Add(this.Offloadlbl); + this.Controls.Add(this.LowMemoryMode); + this.Controls.Add(this.Directionlbl); + this.Controls.Add(this.Direction); + this.Controls.Add(this.Motionlbl); + this.Controls.Add(this.Motion); + this.Controls.Add(this.Aspectlbl); + this.Controls.Add(this.AspectRatio); + this.Controls.Add(this.Resolutionlbl); + this.Controls.Add(this.Resolution); + this.Controls.Add(this.Frameslbl); + this.Controls.Add(this.FrameRate); + this.Controls.Add(this.SelectVideoOut); + this.Controls.Add(this.VideoOut); + this.Controls.Add(this.Videolbl); + this.Controls.Add(this.SelectImg2); + this.Controls.Add(this.SelectImg1); + this.Controls.Add(this.Img2); + this.Controls.Add(this.Img1); + this.Controls.Add(this.Img2lbl); + this.Controls.Add(this.Img1lbl); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.pictureBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(2); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Form1"; + this.Text = "Ruyi-GUI"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.Label Img1lbl; + private System.Windows.Forms.Label Img2lbl; + private System.Windows.Forms.TextBox Img1; + private System.Windows.Forms.TextBox Img2; + private System.Windows.Forms.Button SelectImg1; + private System.Windows.Forms.Button SelectImg2; + private System.Windows.Forms.Button SelectVideoOut; + private System.Windows.Forms.TextBox VideoOut; + private System.Windows.Forms.Label Videolbl; + private System.Windows.Forms.ComboBox FrameRate; + private System.Windows.Forms.Label Frameslbl; + private System.Windows.Forms.Label Resolutionlbl; + private System.Windows.Forms.ComboBox Resolution; + private System.Windows.Forms.Label Aspectlbl; + private System.Windows.Forms.ComboBox AspectRatio; + private System.Windows.Forms.Label Motionlbl; + private System.Windows.Forms.ComboBox Motion; + private System.Windows.Forms.Label Directionlbl; + private System.Windows.Forms.ComboBox Direction; + private System.Windows.Forms.CheckBox LowMemoryMode; + private System.Windows.Forms.Label Offloadlbl; + private System.Windows.Forms.TextBox GPUOffload; + private System.Windows.Forms.Label Samplerlbl; + private System.Windows.Forms.TextBox Steps; + private System.Windows.Forms.Label Stepslbl; + private System.Windows.Forms.TextBox Cfg; + private System.Windows.Forms.Label Cfglbl; + private System.Windows.Forms.TextBox Seed; + private System.Windows.Forms.Label Seedlbl; + private System.Windows.Forms.Label Schedulerlbl; + private System.Windows.Forms.ComboBox Scheduler; + private System.Windows.Forms.Button GenerateButton; + private System.Windows.Forms.Button PlayVideo; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Button AddJob; + private System.Windows.Forms.ListBox JobList; + private System.Windows.Forms.Button RemoveJob; + private System.Windows.Forms.Button RunJobs; + private System.Windows.Forms.Timer timer2; + private System.Windows.Forms.Button Batch; + } +} + diff --git a/Ruyi-GUI/Form1.cs b/Ruyi-GUI/Form1.cs new file mode 100644 index 0000000..8e7fe05 --- /dev/null +++ b/Ruyi-GUI/Form1.cs @@ -0,0 +1,288 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.IO.Compression; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Ruyi_GUI +{ + public partial class Form1 : Form + { + public string PythonCode = Encoding.UTF8.GetString(Convert.FromBase64String(Decompress(Convert.FromBase64String("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")))); + public string StartBat; + public bool DoingJobs = false; + + private void SaveSettings() { File.WriteAllText("Config.cfg", Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text + "|" + FrameRate.SelectedIndex + "|" + AspectRatio.SelectedIndex + "|" + Resolution.SelectedIndex + "|" + Direction.SelectedIndex + "|" + Motion.SelectedIndex + "|" + GPUOffload.Text + "|" + LowMemoryMode.Checked + "|" + Steps.Text + "|" + Cfg.Text + "|" + Seed.Text + "|" + Scheduler.SelectedIndex); } + private void LogFiltered(string message) + { + if (message.Contains("%")) + { + AppendTextBox(message); + } + if(DoingJobs && message.Contains("100%")) + { + AppendTextBox("Loading Next Job.."); + while (!File.Exists(VideoOut.Text)){Thread.Sleep(5000);} + DoingJobs = false; + JobList.Items.RemoveAt(0); + return; + } + if (message.Contains("100%")) + { + GenerateButton.BeginInvoke(new Action(() => { GenerateButton.Enabled = true; })); + AppendTextBox(""); + } + } + + public static string Decompress(byte[] data) + { + MemoryStream input = new MemoryStream(data); + MemoryStream output = new MemoryStream(); + using (DeflateStream dstream = new DeflateStream(input, CompressionMode.Decompress)) + { + dstream.CopyTo(output); + } + return Convert.ToBase64String(output.ToArray()); + } + + public Form1() + { + InitializeComponent(); + StartBat = Path.Combine(AssemblyDirectory, "Run_Ruyi.bat"); + if (File.Exists("Config.cfg")) + { + string Settings = File.ReadAllText("Config.cfg"); + string[] SSettings = Settings.Split('|'); + Img1.Text = SSettings[0]; + Img2.Text = SSettings[1]; + VideoOut.Text = SSettings[2]; + FrameRate.SelectedIndex = int.Parse(SSettings[3]); + AspectRatio.SelectedIndex = int.Parse(SSettings[4]); + Resolution.SelectedIndex = int.Parse(SSettings[5]); + Direction.SelectedIndex = int.Parse(SSettings[6]); + Motion.SelectedIndex = int.Parse(SSettings[7]); + GPUOffload.Text = SSettings[8]; + LowMemoryMode.Checked = bool.Parse(SSettings[9]); + Steps.Text = SSettings[10]; + Cfg.Text = SSettings[11]; + Seed.Text = SSettings[12]; + Scheduler.SelectedIndex = int.Parse(SSettings[13]); + if (File.Exists(Img1.Text)) { pictureBox1.BackgroundImage = new Bitmap(Img1.Text); } + if (File.Exists(Img2.Text)) { pictureBox2.BackgroundImage = new Bitmap(Img2.Text); } + } + else + { + FrameRate.SelectedIndex = 0; + AspectRatio.SelectedIndex = 0; + Resolution.SelectedIndex = 0; + Direction.SelectedIndex = 0; + Motion.SelectedIndex = 0; + Scheduler.SelectedIndex = 0; + SaveSettings(); + } + } + + private void GenerateButton_Click(object sender, EventArgs e) + { + string Image2 = string.IsNullOrEmpty(Img2.Text) ? "None" : @""""+ Img2.Text.Replace(@"\", @"\\")+@""""; + string CallCode = PythonCode.Replace("{$IMAGE1}", Img1.Text.Replace(@"\", @"\\")).Replace("{$IMAGE2}", Image2).Replace("{$VIDEO}", VideoOut.Text.Replace(@"\", @"\\")).Replace("{$FRAMES}", FrameRate.Text).Replace("{$RES}", Resolution.Text).Replace("{$ASPECT}", AspectRatio.Text).Replace("{$MOTION}", Motion.Text).Replace("{$DIRECTION}", Direction.Text).Replace("{$STEPS}", Steps.Text).Replace("{$CFG}", Cfg.Text).Replace("{$SCHEDULER}", Scheduler.Text).Replace("{$LOWMEM}", LowMemoryMode.Checked.ToString()).Replace("{$OFFLOAD}", GPUOffload.Text).Replace("{$SEED}", Seed.Text); + File.WriteAllText(Path.Combine("Ruyi-Models", "i2v.py"), CallCode); + ExecuteCommand(); + } + + private string GetTimestamp() + { + DateTime currentTime = DateTime.UtcNow; + long unixTime = ((DateTimeOffset)currentTime).ToUnixTimeSeconds(); + return unixTime.ToString(); + } + + + private void AppendTextBox(string value) + { + if (InvokeRequired) + { + this.Invoke(new Action(AppendTextBox), new object[] { value }); + return; + } + this.Text = "Ruyi-GUI " + value; + } + + private string AssemblyDirectory + { + get + { + string codeBase = Assembly.GetExecutingAssembly().CodeBase; + UriBuilder uri = new UriBuilder(codeBase); + string path = Uri.UnescapeDataString(uri.Path); + return Path.GetDirectoryName(path); + } + } + + private void ExecuteCommand() + { + if(File.Exists(VideoOut.Text)){File.Move(VideoOut.Text, VideoOut.Text.Replace(".mp4", "-"+ GetTimestamp() +".mp4"));} + File.WriteAllText(StartBat, +@"@echo off +call environment.bat +cd %~dp0Ruyi-Models +if not defined PYTHON (set PYTHON=python) +%PYTHON% i2v.py %* +pause +exit /b"); + + Task.Run(() => + { + GenerateButton.BeginInvoke(new Action(() => { GenerateButton.Enabled = false; })); + AppendTextBox("Loading AI Please Wait..."); + var processInfo = new ProcessStartInfo("cmd.exe", "/c " + StartBat); + processInfo.CreateNoWindow = true; + processInfo.UseShellExecute = false; + processInfo.RedirectStandardError = true; + processInfo.RedirectStandardOutput = true; + var process = Process.Start(processInfo); + process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => LogFiltered(e.Data); + process.BeginOutputReadLine(); + process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => LogFiltered(e.Data); + process.BeginErrorReadLine(); + process.WaitForExit(); + process.Close(); + }); + } + + private string SelectImageButton() + { + string path = ""; + var dialog = new OpenFileDialog(); + dialog.Title = "Open Image"; + dialog.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG"; + if (dialog.ShowDialog() == DialogResult.OK) { path = dialog.FileName; } + dialog.Dispose(); + return path; + } + + private void SelectImg1_Click(object sender, EventArgs e) + { + Img1.Text = SelectImageButton(); + if (string.IsNullOrEmpty(Img1.Text)) + { + pictureBox1.BackgroundImage = null; + return; + } + pictureBox1.BackgroundImage = new Bitmap(Img1.Text); + } + + private void SelectImg2_Click(object sender, EventArgs e) + { + Img2.Text = SelectImageButton(); + if (string.IsNullOrEmpty(Img2.Text)) + { + pictureBox2.BackgroundImage = null; + return; + } + pictureBox2.BackgroundImage = new Bitmap(Img2.Text); + } + + private void SelectVideoOut_Click(object sender, EventArgs e) + { + SaveFileDialog saveFileDialog1 = new SaveFileDialog(); + saveFileDialog1.Filter = "Video Output|*.mp4"; + saveFileDialog1.Title = "Save an Video File"; + saveFileDialog1.ShowDialog(); + if (saveFileDialog1.FileName != "") + { + VideoOut.Text = saveFileDialog1.FileName; + } + } + + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + SaveSettings(); + if (File.Exists(StartBat)) { File.Delete(StartBat); } + } + + private void PlayVideo_Click(object sender, EventArgs e) + { + if (File.Exists(VideoOut.Text)) + { + System.Diagnostics.Process.Start(VideoOut.Text); + } + } + + private void timer1_Tick(object sender, EventArgs e) + { + if (File.Exists(VideoOut.Text)){PlayVideo.Enabled = true;} + else { PlayVideo.Enabled = false; } + } + + private void AddJob_Click(object sender, EventArgs e) + { + string Job = Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text; + if (JobList.Items.Contains(Job)) { return; } + JobList.Items.Add(Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text); + } + + private void RemoveJob_Click(object sender, EventArgs e) + { + if (JobList.SelectedIndex == -1) return; + JobList.Items.RemoveAt(JobList.SelectedIndex); + } + + private void RunJobs_Click(object sender, EventArgs e) + { + timer2.Enabled = true; + RunJobs.Enabled = false; + } + + private void timer2_Tick(object sender, EventArgs e) + { + if (DoingJobs) { return; } + if (JobList.Items.Count > 0) + { + DoingJobs = true; + UpdateJobList(); + string Image2 = string.IsNullOrEmpty(Img2.Text) ? "None" : @"""" + Img2.Text.Replace(@"\", @"\\") + @""""; + string CallCode = PythonCode.Replace("{$IMAGE1}", Img1.Text.Replace(@"\", @"\\")).Replace("{$IMAGE2}", Image2).Replace("{$VIDEO}", VideoOut.Text.Replace(@"\", @"\\")).Replace("{$FRAMES}", FrameRate.Text).Replace("{$RES}", Resolution.Text).Replace("{$ASPECT}", AspectRatio.Text).Replace("{$MOTION}", Motion.Text).Replace("{$DIRECTION}", Direction.Text).Replace("{$STEPS}", Steps.Text).Replace("{$CFG}", Cfg.Text).Replace("{$SCHEDULER}", Scheduler.Text).Replace("{$LOWMEM}", LowMemoryMode.Checked.ToString()).Replace("{$OFFLOAD}", GPUOffload.Text).Replace("{$SEED}", Seed.Text); + File.WriteAllText(Path.Combine("Ruyi-Models", "i2v.py"), CallCode); + ExecuteCommand(); + } + else + { + AppendTextBox(""); + RunJobs.Enabled = true; + timer2.Enabled = false; + DoingJobs = false; + return; + } + } + + private void UpdateJobList() + { + if(JobList.SelectedIndex == -1) { return; } + string[] JobSplit = JobList.Items[JobList.SelectedIndex].ToString().Split('|'); + Img1.Text = JobSplit[0]; + Img2.Text = JobSplit[1]; + VideoOut.Text = JobSplit[2]; + if (string.IsNullOrEmpty(Img1.Text)) { pictureBox1.BackgroundImage = null; } + else { pictureBox1.BackgroundImage = new Bitmap(Img1.Text); } + if (string.IsNullOrEmpty(Img2.Text)) { pictureBox2.BackgroundImage = null; } + else { pictureBox2.BackgroundImage = new Bitmap(Img2.Text); } + } + + private void JobList_SelectedIndexChanged(object sender, EventArgs e) + { + UpdateJobList(); + } + + private void Batch_Click(object sender, EventArgs e) + { + if (this.Width == 800){this.Width = 560; } + else{this.Width = 800;} + } + } +} \ No newline at end of file diff --git a/Ruyi-GUI/Form1.resx b/Ruyi-GUI/Form1.resx new file mode 100644 index 0000000..d041476 --- /dev/null +++ b/Ruyi-GUI/Form1.resx @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 105, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEgwAaVVVADEp + JQg2LSoXNi4sGjQtKxozKykbMSknHC4nJR4tJSMfLCQhHi0kIB0tJCAeLCMgHywjHx0qIh4dJx8bFyAb + FwZCNjMACAcDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtKSIAQzc1ADsy + LRg+NDFrQDYytj41MtY7MzDaOjEw2zkwLts5Ly3cNy0r3TUrKd4zKSfeMygl3TMoJN4yJyTfMick3jEn + JN0xJyTWMikmsjQrJ2w0LCcYNywpACspIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMysnAEY6 + NwA+NDA1QTczw0E2M/1IOzr/VEpI/1RLSf9LQkH/Qzo5/zwzMf88MjD/OjAt/zkuLP85Liv/OCwp/zcr + Kf83Kyn/PDEv/z80Mf85Ly3/OjAt/TsxLsI6MC00PzQyADEsJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJ + BwBANTIAPzQwJkE3NM5BNzT/YVdU/pyUk/6spqf+raiq/oV+gP5eU1L+Wk5N/l9SUf5oWln+XE5N/k9B + QP5BNTL+PDAu/kg7Ov5hU1D9cWNf/WRWUv5IPDn+PjMx/z0zMM07MS0kOzIuABghFAAAAAAAAAAAAAAA + AAAAAAAAOjAsADMpJgNBNjKXQTYz/2hdXP6gmZj+bGVm/mZfY/5+d3v9f3R1/m1fXf6Kenb+mImI/p2Q + kv6HeHf+eWdh/m9fWf5NQD7+XlBN/lhMS/5VTE3+eXBw/H5ycPtNQT3+PTMw/z0zL5I2LScCOzEtAAAA + AAAAAAAAAAAAAAAAAABAMi8APzEvKkE1MuRPREL/m5SU/oF7gP1sZGn+g3l+/piNj/6DdG/+d2hl/qeb + mv6mm5v+p5ye/pOGhv6Le3f+kH93/nVlYP5/bmn+YFBL/kg+P/5lXGH9l5KZ+ntvbv1CNjP/PDIv3zsx + LSQ7MS4AAAAAAAAAAAAAAAAAAAAAAEEyMAA/Mi9ZPzIw/HRqaf16dHf4YFlg/XVsdP6XkJj+rKSr/oR3 + eP5wZmf+u7a6/sbCx/63sbb+rKSo/qacnf6UhoX+dmpr/pmMiv16Z17+W0xK/llQVf6XlJ77npmg/FpN + TP48MS76PDEuUDwxLwAAAAAAAAAAAAAAAAAAAAAAPTIvAD4yMHM9MTD/hHp792ljZvFXTlP+aWJo/rKw + uv7Cvsj+n5ef/omCiP6tqKz+pKGk/oiDiP5+d3v+h31//oJ2dv56bnD+qaGn/Ip5c/xlU0z9XVRZ/ndw + d/ydm6X5dm1w/DwxLv88MS5rPTIvAAAAAAAAAAAAAAAAAAAAAAA5LywAPTIwdjswLv9ZUFDwa2Vo721l + av59eID+u7rH/sC/y/6uqbT+qaOq/mpjZ/5JQkf+QztA/jIqLf43MDP+VkxM/oBwa/6QgH79hXNt/GhV + TfxZTU79bGVq/I2Kk/l8dnv7PTIv/zwxLnI+Mi8AAAAAAAAAAAAAAAAAAAAAADctKwA7MS51OS8s/0xD + ROdzbXHme3R6+5KRm/vMztv+u7nF/qGZof5nX2T+V1BY/n11fP55b3P+ZFdV/VpOTv04LzH+UUI+/oVz + bP2Bb2n8c2BX/FNGRP1PRkn+bGVq+3dvc/o+Mi//PDEucj4yMAAAAAAAAAAAAAAAAAAAAAAANy0rADow + LnQ4Ly3/TUVF3GplaOJ8d336WlZd866vuP2inqn+g3p+/ldPVv5/d379hX2A/oyDg/6JfXv+ZldV/kU2 + Nf43Kyr+dGRg/mVXVf1iUkr9QDY2/lBHSv5tZ2v7gnyB9T4yMP87MC1zPTEvAAAAAAAAAAAAAAAAAAAA + AAA4KysAOy8udDgtLf9MRETXamVp142MmvtSTVn1l5ag/IiDi/5nXmP+f3mA+5+Xmf1zZ2b+X1NQ/nFm + Y/6ajoz+Xk5K/jUrKv5rX17+ZVla/lVGQv5IP0L+XVVb/lxSU/1dU1T8PDEv/zkvLXM7MS4AAAAAAAAA + AAAAAAAAAAAAADcrKwA6Ly50Ny0t/1BJS9dsZ23XlJOh+WBaZvnCwsr9yMbL/mJXXP6Lho38d21s/jsv + K/4uIx7+Myci/mxgXf5vYVz+RDc1/nx1eP6wp6n9bl9a/ltRVf5sYWf+UkZF/lxSUf47Mi//OTAtczox + LgAAAAAAAAAAAAAAAAAAAAAANisrADovL3Q1Kyv/Ylpd8ZOQmfWWlKH5Y15p+sTEzf3Y1tv+cmlv/peU + mv57cXH+VEpJ/iofHP4kGRX+Qjcz/nBjX/5QQkD+iIGE/raur/1vYFv+YVhc/nFlav5XSEf+VUlI/Tsx + L/85MC10OTAtAAAAAAAAAAAAAAAAAAAAAAA2KisAOi4vdDUrK/9mYGTtnpyr7qqpuPhcWWz5mZej/b66 + wf6JgYj+ioaM/rKsrf7Cvbz+RTs5/iAVEv5WTEr+aVpW/ks/P/6gmZz+fHFu/lBCPf5qY2r+iICL/lpO + Uv5KPz/9OjEu/zkvLXU5MC0AAAAAAAAAAAAAAAAAAAAAADUoKgA5LS50NSkr/1BKTvOMiZPvgoGQ7EpH + VfilpK7+4+Hm/qOdov5oYmf+p6Cj/pWLif5uY1/+cGVj/o2Cgv5jU0/+XFNU/q2kpP6KenT+UkQ//kxG + TP5mYGz+Z1xg/FFGRvg5Lyz/OS8sdTguLAAAAAAAAAAAAAAAAAAAAAAANScpADotL3Q1KCv/Vk5R9pKP + mPWAeoH2gXqD+bi4xv309vr+z8vQ/oqEiv6zrrH+raao/qegoP6poaL+pZyc/nFmZf6YkZP9rKGf/pGA + ef5qWlf+U0VD/U5APf5YTEr+UEZH/DguLP83LSt2NywqAAAAAAAAAAAAAAAAAAAAAAA0JykAOS4vczIn + KP9uZ2r1wcDF9srJzfbAvsPksrG79ODh5/6xrbL8lI+T/ODf4PzOysr839zc/cXAv/yaj477d2xt/JWP + k/2tpKT8lIV//XhpZviJfHjqdGNc+Hhsavx1bW76Nywr/zYsKnY2KyoAAAAAAAAAAAAAAAAAAAAAADQo + KQA7MDB0MSYn/0xERvucmZz4vLm7+sLAw+zNy83v4+Pm/dHO0v6po6f9q6ep/be0tfySjY38gXp5/G1l + ZPuAd3r7q6Om/Ly0tPykmZb9jYF/75SKiOeIe3j3mI+O+WBXV/s0Kin/NSsqdjYrKwAAAAAAAAAAAAAA + AAAAAAAAPjI0AEI3OHAzJyn/PTQ2/Y2Iivaln6H7ramr9JWQkPjCwML+6Obo/uro6f7V0tT+trO2/oeC + hv1xaWv9kYeH/b+4t/zQycj8y8TE/qSbmv6MgoD4oZeW+IyDgvdyamv3QTc3/DQpKf8zKSluNSoqAAAA + AAAAAAAAAAAAAAAAAABLQUMASkBBUjkvMfouJCb+ZF1f97Gtr/aVkJH3lJCP7aWhofOkn6H82tfZ/uzq + 6v7V09b+kouP/ntwcP6jmJX+xLy6/bWtrP2lnZz+o5qY/o6Dgf6BeHf9YFZV/EI4OPwzKCn+NCgp+DMo + KE0zKCgAAAAAAAAAAAAAAAAAAAAAAEtDRABPR0gcSD5A1TAnKP80Kyz9f3l79ZCMj9t7dnbKkYyM67+8 + vfXU0NL+9/X1/vHv8P7Lx8j7xsHB++Le3v7EvLr8rKKi/bWtrf6gl5b8bWRj/VlQUPxNQkL9Ny0t/jIn + Kf8zKCnONSoqGDUpKgAAAAAAAAAAAAAAAAAAAAAAUEhKAHdvbQBcVVZuSkFC+i8lJf8zKCr9RDw86kM8 + O9ZeV1fwgXt66aumpvHW1NP+2dfW/aynpt6no6Ld0M3M/qylovyIfXv5joWE+JKKie5fVlX5Qjg4/Tcs + Lf4xJij/NSor9jcsLWI0KCkAOjAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAeXJzAHx1dw10bW2XXFNT+z0y + M/8wJSb/MSYn/zQqKf0zKCf7OC4t+0I5OP9COTj/OS8u+zcuLPtBODf/PjU0/zctLP42Kyr+OzEw/DQq + Kf8xJyf/Niss/0A0NfREODmCPTIyCD80NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlY+PAJ6X + lw6LhYVwfXV0zmphYPFeU1L3WU9N91dNSvVVSkjzU0hG8FJHRO5TSEXsU0hF7FNIRetTSUbrVElG7FRJ + RuxUSUbuVUpH8FVKSedWSUm4U0hHVU5EQgdQRUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzsvKAPLz8gGpo6EVmJGPOIuCf0Z9dXFFcmpmQmhgXD5eVVI5WlBNM1tRTTBeVE8uYFVRLmJX + Ui1iV1MuYldSL2JYUzFjWVU0YVdUKFpRTgtuXl8AREY9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/////////////////wAA//wAAD/4AAAf8AAAD+AAAAfgAAAH4AAAB+AA + AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB/AA + AA/wAAAP+AAAH/wAAH////////////////8= + + + \ No newline at end of file diff --git a/Ruyi-GUI/Program.cs b/Ruyi-GUI/Program.cs new file mode 100644 index 0000000..ac61007 --- /dev/null +++ b/Ruyi-GUI/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Ruyi_GUI +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Ruyi-GUI/Properties/AssemblyInfo.cs b/Ruyi-GUI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ff70e51 --- /dev/null +++ b/Ruyi-GUI/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Ruyi-GUI")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("bmgjet")] +[assembly: AssemblyProduct("Ruyi-GUI")] +[assembly: AssemblyCopyright("Copyright © bmgjet 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("69020be2-e87c-4ecd-8e8f-a1591ec00174")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Ruyi-GUI/Properties/Resources.Designer.cs b/Ruyi-GUI/Properties/Resources.Designer.cs new file mode 100644 index 0000000..88c67cd --- /dev/null +++ b/Ruyi-GUI/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Ruyi_GUI.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Ruyi_GUI.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Ruyi-GUI/Properties/Resources.resx b/Ruyi-GUI/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Ruyi-GUI/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Ruyi-GUI/Properties/Settings.Designer.cs b/Ruyi-GUI/Properties/Settings.Designer.cs new file mode 100644 index 0000000..cbd4d55 --- /dev/null +++ b/Ruyi-GUI/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Ruyi_GUI.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Ruyi-GUI/Properties/Settings.settings b/Ruyi-GUI/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Ruyi-GUI/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Ruyi-GUI/Ruyi-GUI.csproj b/Ruyi-GUI/Ruyi-GUI.csproj new file mode 100644 index 0000000..0f60167 --- /dev/null +++ b/Ruyi-GUI/Ruyi-GUI.csproj @@ -0,0 +1,90 @@ + + + + + Debug + AnyCPU + {69020BE2-E87C-4ECD-8E8F-A1591EC00174} + WinExe + Ruyi_GUI + Ruyi-GUI + v4.8 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + Off + + + AIIcon.ico + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + \ No newline at end of file diff --git a/Ruyi-GUI/bin/Release/Ruyi-GUI.exe b/Ruyi-GUI/bin/Release/Ruyi-GUI.exe new file mode 100644 index 0000000000000000000000000000000000000000..7c2b2f9dea2484d07a7d7c5577a297250d490419 GIT binary patch literal 41472 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 HEb#vU3%{zV literal 0 HcmV?d00001