From d204efffc75b98646e8afd98331e1b7d518224f3 Mon Sep 17 00:00:00 2001 From: Anas RAR Date: Sun, 20 Dec 2020 22:28:42 +0700 Subject: [PATCH] remove v1 file --- Data/BLEND.blend | Bin 3498036 -> 0 bytes Data/assetsList.json | 0 Data/exportProfile.json | 199 - Data/importAssets.json | 0 Data/skeletonPreset-1.4.json | 3040 --------- Data/skeletonPreset.json | 5777 ----------------- Data/unrealenginesetting.json | 0 PyScript/Animation.py | 92 - PyScript/Character.py | 107 - PyScript/GetAllImportableAssets.py | 19 - PyScript/GetAllSkeleton.py | 10 - PyScript/Groom.py | 69 - PyScript/ImportAssets.py | 62 - PyScript/StaticMesh.py | 113 - UE4WS_Animation.py | 590 -- UE4WS_AnimationFBXOption.py | 57 - UE4WS_AnimationUnrealEngine.py | 101 - UE4WS_Character.py | 1379 ---- UE4WS_CharacterBoneManipulation.py | 2323 ------- UE4WS_CharacterFBXOption.py | 57 - UE4WS_CharacterUnrealEngine.py | 72 - UE4WS_Credit.py | 38 - UE4WS_ExportOption.py | 121 - UE4WS_ExportOptionImportAssets.py | 341 - UE4WS_ExportOptionImportAssetsFBXOption.py | 97 - UE4WS_ExportOptionImportAssetsUnrealEngine.py | 87 - UE4WS_Object.py | 58 - UE4WS_ObjectCharacterPart.py | 79 - UE4WS_ObjectControlRig.py | 169 - UE4WS_ObjectCustomCollision.py | 235 - UE4WS_ObjectLOD.py | 272 - UE4WS_ObjectRetargetAnimation.py | 828 --- UE4WS_ObjectSkeletonPreset.py | 2192 ------- UE4WS_ObjectSocket.py | 335 - UE4WS_Preferences.py | 2616 -------- UE4WS_StaticMesh.py | 643 -- UE4WS_StaticMeshFBXOption.py | 43 - UE4WS_StaticMeshUnrealEngine.py | 109 - __init__.py | 341 - boneShape.py | 235 - misc.py | 23 - remote_execute.py | 632 -- 42 files changed, 23561 deletions(-) delete mode 100644 Data/BLEND.blend delete mode 100644 Data/assetsList.json delete mode 100644 Data/exportProfile.json delete mode 100644 Data/importAssets.json delete mode 100644 Data/skeletonPreset-1.4.json delete mode 100644 Data/skeletonPreset.json delete mode 100644 Data/unrealenginesetting.json delete mode 100644 PyScript/Animation.py delete mode 100644 PyScript/Character.py delete mode 100644 PyScript/GetAllImportableAssets.py delete mode 100644 PyScript/GetAllSkeleton.py delete mode 100644 PyScript/Groom.py delete mode 100644 PyScript/ImportAssets.py delete mode 100644 PyScript/StaticMesh.py delete mode 100644 UE4WS_Animation.py delete mode 100644 UE4WS_AnimationFBXOption.py delete mode 100644 UE4WS_AnimationUnrealEngine.py delete mode 100644 UE4WS_Character.py delete mode 100644 UE4WS_CharacterBoneManipulation.py delete mode 100644 UE4WS_CharacterFBXOption.py delete mode 100644 UE4WS_CharacterUnrealEngine.py delete mode 100644 UE4WS_Credit.py delete mode 100644 UE4WS_ExportOption.py delete mode 100644 UE4WS_ExportOptionImportAssets.py delete mode 100644 UE4WS_ExportOptionImportAssetsFBXOption.py delete mode 100644 UE4WS_ExportOptionImportAssetsUnrealEngine.py delete mode 100644 UE4WS_Object.py delete mode 100644 UE4WS_ObjectCharacterPart.py delete mode 100644 UE4WS_ObjectControlRig.py delete mode 100644 UE4WS_ObjectCustomCollision.py delete mode 100644 UE4WS_ObjectLOD.py delete mode 100644 UE4WS_ObjectRetargetAnimation.py delete mode 100644 UE4WS_ObjectSkeletonPreset.py delete mode 100644 UE4WS_ObjectSocket.py delete mode 100644 UE4WS_Preferences.py delete mode 100644 UE4WS_StaticMesh.py delete mode 100644 UE4WS_StaticMeshFBXOption.py delete mode 100644 UE4WS_StaticMeshUnrealEngine.py delete mode 100644 __init__.py delete mode 100644 boneShape.py delete mode 100644 misc.py delete mode 100644 remote_execute.py diff --git a/Data/BLEND.blend b/Data/BLEND.blend deleted file mode 100644 index 67594a2e82b89d1e5e8e2c610649de571b684f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3498036 zcmeFa37B0~l{S1cQp`z!Pz-^Dv6w<2K*E$c5FiW^AQ7=sw~~ScGC&4MkfE5vJgAs3 z&qQ$m2Z**ZsBOn??biNn&F2(tr`YQM_upUl*J&HM-}~;f-d*eLd+x1D)l~s=9yWVe z?|RqTd+oi?cq@~pPd#hO)N_xx^60TgpNrzOQmORfPahw*5;>1PmVS?X#+>#=?QHDf zao*G!=QV+G?FY_0_+}F0VAf#?S!< zQkmL_O=YSx{=%`1Sk;qqkV&ry%Ql-AWt0oozvd0(VSW-PthM>|QMmSq6AyDGv`1a7 ze=jrsV3&QQ%-YJxnF5#fKa|;))QMxt@yL#NjXQ@;*T1mFRYtw;m>H-1ihYHCoBXld z%jjp2n|=<<__JN97M60218uNQtmUbVGGtYKA(lz~HrvdDHipd52|}zmT8kRl~rf1M0rt} zZGQhJhp@ivb*(*&6Z^_K<=)(Uj^YnYtLf&j)OE5l z%F$mhOL>X&SZ_16lVTNr;=~I~D5qG|qkqJ*&RogMy$t0X*4I^LE*>9$wm}x{uxvVP zk89Jl<*?M}cp&i{63<^&Cs#BhOr zI(>GsLSD&>u(U@xa?g|2bG%yr)V1VwBUUoz@&VZ?nt&-+T#v&<<^= zO?Ipv#~$@Ell(zB`fmDFSYUz;ai+Sa7kP;nug9uf6o1(uhIUj(US^Um%7y--oi@wR z&0(cii`VpO-v3dLyiDRkIXBj>&QU|Kt6Cz;1~T(5dUM`5_K5%0&LR@rc=Ke6uhy23(U(|)SEh4C+Y?t*?t zf6Y$xV@t4I#6KO+)Mi@mkq@cAY5aXWQmmI1j6?9p_6Ck;+{;Xl`$cQPJ`%B%BgOrP zSn4u2y@<7Xl%;jQ|9f8Im}>C~Yk5s9<>W!meupyawRkDh`JZKBrHj05DacUH@v<&G z=3Xut@-B6S6&K^LvUn|zv5;K4vXk^R`U`oPNqQbvV515PUD|H#3JXkbOk{_;KK|ly zoay+LA&dT^9Qxw$(GGD;##uE+^1reDmb<1n=+8ihY7uSgS5#|lr;~vQ}aZIKc=8v@pymYNCU|BXi{h&_7T6QX+luyokM%y0(^B9f z50c6`{|#5u2l1MInRwaVd9Rii@cxglUt5`oC5~m{gtdC?8!1MRJ`bIF)J{L#f9Qa(L*CB* zM_rVy-o~8zQARGbp&tE9>k%v6zI~&AIc&z0`A00$_DxO8iu{c}7%tSw%ewc;>Nc0l zqjuSS?U6`n?%PxrhIOB6wF^UeiYcgnbkr`*k=N^ZtS^hdUM{?HVaMz};wzI6J@VV9 zjvT#V+Nfi`Kk3ks-yS<`zrPW#W$1Q)fBiYTZhX(tJN~d`&@P`~JJP4dAAH!iP8oUh z_s%$a%nzBLxc|Z5X1jQca&c1T%PE#JFZX3(kJ_dAV?{hEwqD)KFhAm6X64-e$^Alm zr0q9l&M7O0J%xIz3u{~vYjVy<>IfhAqgwkv^`z^{k=OWgyz;^H0@iTR-yL_{@!?aa zP1|_(Ip>6Q>a^1~?$Nx*XMiJ~HdpSq=b&$FGobHdvfHm;zvUAqPW+B^&X|7Y#(nqQ z_cgNPr=X)A|`Ra9Dxr$dZ=869S3qM*ZLmqrUK7aHv$Ncm3Gtb<3+UaL( zJpP0eH)3qppuLO~u<7+5;=k;qlTP~nnP;7~@$@s!*m%MTCvDtryX~J4FLNbu)a4zK>?^u%j9WjQ%*SX2k(>@c&rR9)AzINtWXJgKs zzH#J{qc#rQW}6!%W3H5rA=)D^$~k`v>JgjrSp3V-QHt1lJjB#AeQ4+V*xmcAtIr`E0iSPv1Cp?C~3MPI%E{8Gm2r`ak}J z6TUb7%(FI5J>}Gmha7UqMzpOk8}-JarVllAYxXUTzxU7gE$w$&m!9npWy)E$dfb0l zC)V1zhcpBWp12>e%(c%XJLX^5w^EeL@|&zLxI(#GK^q8Z)=5s^pP;T6z%r;*)j?h*MOC8EAXPGHJ+eG~1_doJUHdLpMY*ANo&m*jG zsyp3ibNAhM|1_`t7=Nz+p+kp$$#dEMAAR0wr=4!cz8~U0e!|3!d+f2tSIBEA;$*YP zhZL*2u&P_$hCKSqHpZX1!$-Tss@?Lao7Tn4c>!6O$;~VBv%R%o-UO^<$OG1Ra_a!H zDy*{+=A(GD{#mz_^8syP&6uo=oGJK+Jm&+)$N57XQ^d*##B&wy0e{TMJh{wX z^p6-Mo+onWQ?pAMQ#`M*tU57PXWv6AkQMT#x_tkee*X(D@+(#OK$&=CKdl2()8D41 zrVlXwyat>+dCJC?mP7nAfVS-X-!Ixd=%9l>uV+6eojeZLi$h*Ed-O5(v%rU(ydJhd zH+K%__rK7u8gI7M<4xtnvJLh)7s^bUM<}bEvN%_4?i6DEymCA>v4)THQTspbNv5*u z%&lC-D;ab3%VWhwnXs^VWfuRlH%^{1b>k6-AHn!vM=X=pzwk$l9Qn75Kd%{2Jn5v3 zg9i=H?f=4=ezaqL#5&}$Tp$bM?YLqr*jBXuX-_<6JJfw&*`Cy+50I5Dbw@8?X^#nd z!9QPj<+@lOC&k}5BQN+{t*y#mVST^Y=IhX}@_`s8JiA#s^^{Y7eAd}#Z=5pql#L@t z9=Q>F!h@3g_=D$)V~;)dpA~;R2jcUB5P$lJ6vshz@u<$6ZNA^BjB>PjuF!Ak7RBG$ z@ne)52l0BW*)G!_#-bl&75LV-UJh7)FGqcVulMiYf1s~-mv{T^w;!75r95dp=SLmC zbNx#FyW{S=-=y6;@4CCfym|NL`}2PE5BUQ|b0e@j(Z;-zc)0n4)S4j@L{ z7}H>fb;h5`VGDgQ-6|i*%Y$@uG zuyWvJxfWKsDKFzMnQ;wJomiEbOV`^`nen#RbH6Fm733u*`pO&}p$=K7v(5A&%4EVy zw;mR<{?aq9$cxzThHIN$Jx?txjpOK7ghe}jjJyGe2DYa*xu$PN{2xL5@44^(%ChBG zR`we);tRwPAL5TuWPQ8sw;#FcjyvAu`oH)72P&6bGOx1tUVGv117u@Ho77QCeCUIE z=sV@Yrn*)SSeAtqjyaw|9OCK`%Qo>A`2cwz#43(I{lOe)WrB#;e%$+mO~#aEax#(E zl~K*+iu{wF>cXPVagXzgHYF1;b(o6c@3HcUSlXu(lA{>?6R%{z2Q2j@W0?t@`(Lqi z>A!RDUvc%-mAP~0Rz{5)^*Lb~f370x4H`7)__^)v|8wKbH&<4yyt>kU@g)^J|5+n! zkq?p~uZj~nCHJ~TSmK1W^{;vruW-yYW@alFf5zKl-v;a)V7Vu8pB#YlHYzj65$nVW zi@XY(=#ta(#&T*0&ti7R9N1lU6Q0yg^daS`QIB>L-rX*G|NH;r&b#lf+yuDSNQ$^{pkUl}}T(AC}am;P7zfVRT% zF2c$VqX>Y{cBD_7WXo?vCfE{S{A&MLn)*%7i7JNj^~~tYpNpopsFX1F`OZ^880XR(bUCCn~qxdRyg; z)6e*K=pRIk-~UfK`Q(QmfAYx+u@8Lc!<8jVmsNJ%W!KxxM({zr%;l5G<2v;+`cP00 zShiE{{bgP2-*j`l>NjOfz7D>KrHtzzd8_RKWys?`O+8|~53Do6A07cqIm$V#bcOZ2 zz{dESJkBe{-`R;WVdW1wafEX^@;F8;7h&me5ign#xN619fBp1lKUZ1%u@@@$+x{qpf;<;fk0nODEJHV9jhE-O7=N1&ar~&GBwp$v#dA9A-Uji+N{?6^$YNY_ z=YOy3<4=5IGuFvXLL;v7SGtDFVZBT~&Mue#@tNnJuRQbI^OZa9ysL8dS!Y-93}77P zia+!Q&u(q~SFZmjo_Z==|FvH{uQFuFE;GaXPd{W&YTIhBDToiTI)aM zVcn0f=cUZz-HP@$q;UQxp2?r@=_}f{kqmh__quvKrx5FPg=Kpx^L29J{NK!L0AbOV z<7J&VOEu5`CJ(wP*2`q)ybCT^$Jjsr(T|3EfVQ?d6^!vMllI*Y!Jdd!aBaiEeWzQ=t zbPM-?%JDtVN1uB3*~&*>cmenIAF^ivdw+~Fo&RxNa^!8d-~Q&4Pd`(6_>o5|x30Rq za_)O(RN(JP#4#oQMW0L_*EH+C-_n)u$isEI=|vvOnf(19v9KG*l)S`Hm$~-|Z2>De z*FRD#6GUZTtIq%AVe&lCM>X5i3v5IzWyB)+YlV3Jr(EMe8$SM&d7JWq?JOhbQ5Ap6 zn38b_4ojBuPMA3H3C8tfAOA$T4=TAAR(Xz`2X9{{f?pI_lvMf8-;Tr=NYU^5E(B~C;tq6KR7s$8HxU}Eg2X3%lW~6RrO6WlSi!8bG&x`r-(-tmi#(WAAFtb-(nx) z54{jq5(3A2)p%f@(+AZd4s$Nlg{7Q{byu!>{wrCE#kn**|8+)kK8V-kDR0D*SN^h$ z1FFT(erN zd1b?6#VZ-}J@(vl3ZCb`$@oA1P{thK5#}T@EZe+^^N4NW32Rz%k0qXVn44}~ z|0c^l|M6I^f28pI*X-2v0rIf_%LnqPOgr?+`4G<)=0lXRj(5O^t+@IFzv2Bqp8?+c zzypyh0?q*+{P2T#w!0kff%p3Y z^rT<@45f}%7-v7 zZoB=C%B{EEUOE5#3o7^yYYchGAs&@gr!Ooc?{fX8SaErOiP8G^yu$i1VjFeEi+Y?_ zY=cbezYTSr|HFM1&%NOCN2pT=htA;vi#pG9p=|O{H{}$|b5#|VZHT{~|3)7?Rz8^x zUZX@V?}OR(K0q~m!xQ}_M%?7Z_uMZ&^~^Kj**>4~vmBoF;XM!U_wKrizyFIzIA6E6zRk_eGk4fw`>RqJ>liM- z2k9h~Tc`4aSbWR-D6j4KZBG{eXG8q?JmABKKd<>1e?A*ruwY?j(!@!>hTg&KocWVm zYwDY9Adl-`GV0;E;`#gRGYt0_{fDw{T)BN3CVXFV@BhRrU1G`4#5U<#J$#|ziiS5b(1*8IY>Fz zKhOQZ%tyKuP1cRDdBE@y!ykg~2rVcnkdXc8Cr2-FDmU;@yVs){goJynEhw{sl9? z`e*#J{h!}^GX5*C{y=5+?AFQ=haLVi=p8~{avFCW zqk=kp2y*<+^uwb^AM*m9JKu8E$`$`TeE5i~C8Hiv#F9Ia4aNL9!f-ikfz4Dm@)FB< zGxppAuph+xf9?%_A4%(w<@R*$F~lgTZhKdNONL6_^FRFRa{sq|G3>qj?YG~;1q&Cw zb=YBty|QTW6`P@dWa=;Qai2Dya{Dy>#qYr9ue$yAu=n#DpBF#<>B^^Ge5t~F!iVs_ z_kj;R81DP{-Ct{YPUX-;4hipv*g4m?94|zET;l$Z-;F$T%Bj=-0pFASe8zbf`~*G? z@mSO&R{qKcbHD$i9hdNBY&N6w?*LeN~HeCNJ{+tiQ73jtDzwzYa?|ql9<4Li( z`+xaMJolqC{^~~oFGS(}$l&uYxZo#@3$D-J+HJR?r>EEegduS;-Yh5e!R;4c{Oc!h z&j0u)KUw+GtFKkQ^xEr{PrdX~c;?4U|e#~5y_+9rUA}{X44#l^azu-4HlO|65 z)ow$FE`|@0$9(LvZ}?sR#~;VJpYH*_`0A?`|4)Z^Lc9jxGXXp&tV}!gv`W)9;oeX8 zUh1nKqcAS;QDZg$&l!&&Ir4~gxX$2jP2L(YV!u1#Tky;Gtt)>K|3isU(m0r2l@G$D za@u6<)Ai4JM8BCcan7mEGTJ~DmUWb|U5R$2n_?l0`wubXHO{#H+0Hich*wy{0~XeQ z@NvY55i4=7e(M9*T!-g2ZIzKn9R7XiA1o}&Rr|E;sBcG)9=+xxYaYTgppRAl`b%G` zy!!eZSpS{zzwP!r!~Ne$C!YLk&>e^r&nxm*zLH!1qC5nDXX=i{S6uN2{MIPELmD%7 z?5Ba{5!Wqs%%`}fDTkdfo-8wQ{i}>T-P8Tp=XAjx*FWuO{VV=x;}K)3GHuZZ*+e_4 z`S=%M*(R)Xp%>$y@^b%2s(Jp`cv26%xv__A_ZjD(|1%Ip*RKYjBl@pIY{+B!N zywg=4i*l|nKRyrU-ok6YnKNfq4nFXp_2B7Ki~-w_;%o5?z-omw?6seiUfc^*3C;2BE%oTsc>X42bZ~O!A`51pb z1K>OV4}SQ=G5&lnyzf5y@NdH9=Ae8KFYPq%vB&N6F1_?EemC-&&%KQKw6;=ioBPW_ zg9fjFzx?(h7k}v@&&6NkAbC;zCG%sH_7(NGuMp4m&$W+o8xqg|I*;YfU2I2+-?pMW zkSF;t=1yifiUQW^;rXv*)Ri7{kHxv4_h{j~O}v+xemu8XJ#Z&HL-F?+@9enYMvVJo z_@4Xj%HqqfsEj%8*k55UXcG@}`5`;F_Z)-YcKzWI#QaIF{}}&l{qwo+`|-^$ejoT5 z>4L}iFZ3IHEys-+vkr6Vt>@ORt$gm4b$D<1R0VVM7o20>2j@o|GvkhZ112Z4=fB?n zDj&>78aIw<Hv!`qraQ zJQ4Q(XYoz=V<_|aKd=3-z3%$T-1dtrhaYy>k6>d6bTkmbCV7z#z~6`c>4U3RhieC} z`v-9TIOUXSA@&*v`O7+OtIjgo3fI4M_5F|O=GL@$Ocr^C)%ep6*FV}@EtS!hd;dp_ zQo@UB{{0{M%|@^(J>)62>ikbEb!*-KNlqUeFN)dqA9W>@AB^cDL&#+`IB zzYRPzIKY80|M?pMoa=wi???E1f{%alQE>57+i>acGrqn`5W{9gu!_W}I=hXG^aSjPi(en%J%l=&+2Pz}$Lf*9o-uY5vG4u0SJ-~Th-(=nd>w(s2coXy{D z@^^dTFzk@`UU=cJRzLJmh&g}b$NK=j6Jq@N{O_ilZwbHon=*L{-~CR7a`XXv>A@2w zO!yhT6A9l3@^=LDF1>8io_p?f6+t+1V~V=(OHM|oAdme?v5bFk-2PV&D;e^DR-F}F z|BQWzKgJ=%3YhTyEOQ+Y@!T5@j+e)x%yW7?JQj^PEYCR+h=RxR+>bO=@-BEG4(IRy zPqE$(=Rj+@{PRzI>QmvJ&W$(SR5@$<8E@?}WbhqSCKl)A!>(Mh;tzcP$C&dwAf_kr zJm@3X6BvKIYY2ZIfWHsJw_$6b8hn8MA>$Bx&aDSN^r3*gY{4STvB6gZ5d1T2>^s`y zcoHE04UepIOi|8Z8Gn%$@ft^fh=*-Ryr}X%Y|;52^CaxkW;;wFwvm=OrxX+G%-JTa z(~Wx|F_6c7udC~S*)dyT@i{xuCgmv>^Xf!=M3vSwBwEo zh#fq5@Z?)=yX{R~`}4OzTK{||a38)2<98ptubg?oEdJe(kHh!A7|#~`F8CMx?f3&& z^IZ4W;5uQiz4qp_o!B?{8PC%;E?yS>wf?00bgplH{}-HLqp71%QS zBOX6~Y)krrYA2R5#i77v*m%SXY|ZOG#ouA$7!~*s;-6yWhxZ?C0gLOqTX8M-7UuwC zdi4iBP&sz==wIVz<`BF;c;e1`?g{sMeD|mLXY2o=u%`K&uN5ot{^ze+D~Glm@-OJi zL1T|U{%1Gca!ZIizY8a3+_(upgUR?z-+ZbYQ;wnfg1l<37)MxBKK{Z=H;sjOi+sQs z>HOaYxxW9=eMP+2A_t(cjxzTUrhvs7h_WKA;l&&8KT<6Be?I>OUf7zvw4d+pMyQAZx}i%F9we}j8Bf7{9DJ|BJI<8J@w`u||Ke&jvi?AhhY z31i0o5B~Q1x@)ex?k&DIBp07Owc_2-w%cyU?*emUX7xB`@F)12_SMy^u;gI!_kXo` zg_Rw{1)pTY)<3WNs@6a8e$G)xb>z7? z$$ZVl-`h0apvy8+iVf#~%8V=8(f;pcDtj#3kYY?zSz1rAcox4L?{ePaz4^2F-k*QZ zW#!c?`J9i}e{bUZAEc-7H^H8Gi`Rl5{>U1}`47-}v*U)F-o$(6H>aO*ChiAr4$lVe z$Ma_18;%?~>I<+1^YJ>#k3$@L`3Gzm1J$L6yb9}Nx%)rbvpB}_>@KgxJH{V8@%+!2 z(x$jnx3)B4edOt-s#9^@d8sgS6W(H?&Pyw z-VC=CSdx*p3yB`N@>oQLC)%*`w)in;{PS-!=@tWFWsn5FfP!D^M;|=G3)Z384`JdxP z9pqK#CnxjI8{;{}$>X^gZ4paeyZ?}ls7sli|B}a2c_zob8{}Z@od>G$>-XFdJn0dj>%7b_( zeASApE5{sj>`!;vY3EA{{EI%(2c+n)u-2X%2ajc$SmD?=o&VWpeGS(N!fL!U4$`$e z#)IphvB&&qMan(@BbM_9@-Qb^XW0^{JJ0D}MjhH^Zu;q75$7u9(q$Rv{_y@!HWQwd z7qH^>PcG_;Cjc{tgHPh6eA478pUU1Bt*P+a53YG$7cl3!;i+ey!@j`vpT+;4`yQxV zhi^A#oO@ol9&BxGdkgD+tZXt@k{#Azt8h)z2kEkG^{Tx>oXq|DN4*N`c;Yx%TZ#?q zAM>CUG`aVG-gnwm-FQ&V?ddVzMOf(g^Gb|AxqSSK_J8sz5vwveapd-Y%Fq_aQ}qCZ z!_rk>Og;qv2G9pi9yk68{087z{4Kaw@O}4h`OJ^;=l5SM^O^4DS1hfZcm4(I@ht!4 z!wxEUOJ3$Re28N&tn)99ulZPrmH+vEAztL64j;T7!mF^Rn)Wqdk3IIdr+Ht`>jHlBed?4cZ{a!e z5fDaR0&#fWFh+HFy>1*&a1{Aag%vO2&+or<(1)5>FM~qv`LC`2c>agn@6((owf0_3 z#vq4{fE6A*exD9l%rouFVgD(@`u(4B&qIA*hn(w++~N&3(>nEPVdazjHyd2nyS?{) z@B0+ z&lMPpR!i~xPk$4=Tpenhj7Qir_KB^JL)7?1aO;cq?h+K_+iVFBLf4Buy;FLpQn^2zy76;sKCl@F*F zVku{;b^iA};`08Im+>c#iR&M!6=m)Lb0FeA!u>4VkEmQw=RHKXu*7v2i`eV;pMN$V z(AR;7A92J-xbC0C?|&HoYp=Tj@BOc+oOr^CzrcCL|Luit_bnYmj7hvVOl4_3#oGQK z#;7Z7s_W}4TkJUp!ur=7gDkEI$l`Un$>aXdI(;BUNxCM3ICox&&wr%LoVwiqwf<8X z<+Q_gONHxSa_H{5hnct$*N{KU<;1~`m3 z!$;oKKh>FAifdXvh{t2CEn+2OyYPPhM_a^F?#GC_>YIE(J?_7D{%?hhDct|dhV)eT zV}>%1c *@)w7{sb(`OtMd`)#KRf{4XpNtLBw#0K=p3{Ezn7ZM6GF{lD}I{EO#w*h;`ImdzHd7Jvt2gjLyAQ^kKFlR z_R*f>4L}%@+}mWE<}dY#g&!y4?>oN9XMjwrA9|#6#ggTfVZ-)$TH`4!xT<(5lfNpX z9^=n8`ru?~J&jXbBh*p+Sw_m8)6>2sc5=Kr|AV6qiRb@#PQg46=O?x?`8vws86vrv zAdlxVVVRpOV%dh2tCQE-`TV!={ja#>gYl+Zk%xF;#f`eRo5KQ=s}nn6;=~vEEytRN z9}Um^XU=-xAMnlBN#vD3#+~DJV-m(iSU(nQE8xkEH!$J)%45Z)=fBQY!~&E0SH&wH z8M^VD-UScD8J7NOtYwF~Y-c?H zY1n)~z2^S!um4Op@~F<7+(){?k2te5E@3rZTb6 zjabUaCwYS1qBub}UMGuJ+}i)mPUNLrHih+l13qG@OB=`;dnVogqZn}PODHopUdd3! z1VFoF!lt?bn8&hTfk#+Xc>d=cklbP@arA+5B-*d?!Ru1du#A7O%R0)jZ^U>zkOwT= zd06}--o`V>n<49u88FcY;^~9*3Vez_6v+D6`mgH)^?1l%meEGuV3%^+@5>OiF;RvD zm2mK!!iT9Lp@ruW)pea9Sq{r{o8zgA^}Kfe=ks6jMjp0_*SJ$&?;kth>pT~SzL{>6 z5$Jg#&tXISvw#0B_*4&@*d%psTztJZSf2mc52Yerv}p|M`4GPU)&9@zN0Gtm| zRtrl`%KZM%w(jy4_{23|cpi}tvWa?KY|;KtU2jud8Z+8Rd2Ri-qMfM>EYva{-%sj# z9$*5H?Mxm^{S+%+Rc3)?iZAd(7#x(JP`(D68C+8peyq!R5SjrfG z{rhjMv#;bZKdN}0EN2JpA*PbkCOMRnF{~MX>eq@txl-Pwp862Z|G2MNinNUL0e{!x zAST*SxuD*Hwu2?_0(&sz-NNGA$x%#Oz)L^6<1c;a5%$0-?Q3@4W%pXTDR0EluVh?O zY`yWVi`{e2Jx@@-k*C;h`@ncJ_Q+c?ciJ$w!u1r&oF|;0;XpgDBY3ZDROt8YcT zw*I3Z;-wz&B+gw|T6?fdJF+P(O*TZ)mZ0BLT ztrmY>|A+n6`dPR?K`-wAuod@zmO-1_gNVh!ftM_||3gOKgRHCl-})A?u*D;{|D!Hh zxA*DP-#`kdv6Qnf!lk^ZGsdy+U11>)_kZFMFLR53=qq`NB~CuDtR#Oa zLyA7IjwAQ`U+}~@Nw0_(x`5`fbK`fc_E9OsVuFhSj0d6`)^%g3w(%n8E?#)`1}{; zn(H4tevQCv=lZ7)oO_&8OvI{AAdbk3a$HNqq8@qu`lr5^71YsGy#LDw=F|&7kg@J< zQkK>|mU27)N1qd)vW+maQRuI1AdhR0ZJsCf0rh~DF0m>z_xnHURao*V`Bv>g39xomkYv{_pKbx9I#Y8FT1{aiA^|4_=4F7^*BRbG9KB z?*GD*S9Va2Sju(&7njG@;&oh+7i}^Al&dc+(~fvqMyearTJfhY$DTQPWk+T5LLTQb z*FRD#{IT2 zATJZ!d4MYQANg$%~S z8L>R~BUL^Bm2T=o!W(&r-x93%mz+FgGpv92{MTcF;Wz_9TY(v(WV{YW?u-VVcQ5{gP4*eXj_|lyFKY7&N4c?p|wfqKO&VI^^ zF-!f=@$&hf@1N{+#hcney^u$I%E7C5GccQ7llyVu`uF~bH|u8S_&L77gL>c;*`)H>XajuEd@Esfd_f0dtEHMOPNw0)`_RCla*2D zGmBP}M_F1YPFUo*z7Q)POct?}4IX~v^L@}i%Ifi^vU+v-K#UUFqW`Jf%ZRsUwK-kt zP$sN##5!eO?#tA{7|cOFhhyRDp`6x*WxHh3Q$3N9J7QJ#Sn4D83y?08-0T$k01SQY zlGnI;jJ5dZ?6|&m$tx^#q#Td>$=u7*dMZQwm)FuwvGwYb*<2`tlPS&|-&rjmQ z+9L)j%7nFc%F0Y^XF@q(k;l5qe*LqJSj$4WFBaupW-=lms~$GUnM<>+sSf1ke5 zXN?2##0hKl=x>ovzyu!3#3LWPOuFRsW!1Uz>!RVqfZEC8G|@s=IQT+^TE;R~@oohx)`Zc^TV% zU1jEwMITir-cpE@;R2TJ(o>mr?f+hv?ZR4~tFw*C$JLj?Rkl>92buRhV9AH}T)$Eq z##y-bQfyKD$xj>;%7s3pGS$sD>Xn(;E}6>AwMI-9u)v4D`So85D=z577z*oTxv?i! zGUjPru`xd)FY8+W()YS56Gypt%tp?R!?qEp#CDX!xr%LRoo#COGM3Z2u)-sc=fD(; z-&XM7q3Q1VKiKj%Wh3P^AG*A@k-qnl@%MFKF0fOxZyrlK^>{osEwhgMq(8~|U-Qf6 zPMojsq0A&X`-6IGQ9Z??9(lwo-JX15A!?E&x4|7fqmir2VfzflkVlFJhN67-R`u`kT6T=!fioX1k%Qq*;AUGnnW z&uaj2LpSnxJ5Jthf9Z$Q>o#wQzw@KOr$S!qcTGD5Jl)13{tZ3R4 zz?Yd^J<8YyS*&|3%0b55a5=2@f6puImhcjr`ipwb-|q6J>p$fMPmb65p6eU!A^CCP zylHj#s=Al4EPS&5Bd@n1Ed5p4I0}6LrfjK|IN#5-o?=lCHjoD&S*H$@u&y3uCXe-^ z_)9Ov7V*-)@V?(3OAJyR6V`oSJ(gT){Hbfc6!wjL@*%+nyIxj=b=+}W$m6lyJ^xdO zy3S_WSM`PbT|Ubs7Zb*-+gS2iin`(vm+FZB7Cry%F7KB3n_|1z|GPa7;B6zf`s&N+ zIHdIy%l#j1VLa<$iAi;RU1ghdWpFWZ&V+fx+|3=$70Sv?rWfZF@s|9Y3s|-j51aH` zxLn<@|CGn;n%%%_<>0R?N1tk8Qy+*+v8-$T6VH0$fAB#v)a@kAKReI_$P~ z#Y>FmrLRoXGu<#I#Hr4*r80CQR`Dl}sTQy423}#&7VBQlvgaY*V|`tE%*ET?{a-xN zW$x{w?)@vH9{WuhQncyo#4#Cv@E!FqezNIg0ZX}LDzi?1R9F02w-o%79C=-TWmCM& zt*s2*nte;gBw&FLx@r8;-lY%DZp4}&v9IKj4auBdj1w`5&D{F;y26T=x$m3Dsw^Fg z1APh!^?0sgTUr-RGRUiR*`_2s>ft%8+F6$j@$b?7pK(PV`6OPet6y#2rm*A?-j^AF zkN0KID;{xlRWIO){?opfv&=Se^Zc)JYDap)t1i5+t88oPXxOWl4$r_guPEkhpXia5Q$t{kzZTa#Duce-IbVTTEMy+^>igj(HKUNo z(=EhOj#Rc3ZHg!5B@RADe^Jlz(tosxr%b$Y#QopNqb_m6%BFCtGgpGl>&EhyV9Bre z*W)G5Qk5Mq69!`t_g1vEvCdq{*L}GwEacth)&5^(vnxB^CzRWKJ=LuzOR-`7yRq=P zD7Pi`nq!voCVDxZdRWS8?f=pPcVXNlXYR{3|H^2KYs5HOHOE*tTwHrz2Hl7yw`AmG za`h-uZNXPSmd#R$8iKKFo9DxShp1Wf_jcgTpNKH9Y14uRM7a#+t* zU^8Ng>jE2nXW!~!@f+Ez)PKW8JKY$gh=pz_+q@}bo>Z+7H+TGeEyNm6Tzk|dCsUCu zov&K|)T7L=OVyb(iI-SQVJ@pq-6E{%2CS89`b)Xizqq_lMLq~uzbCU&mT2AXJuhoN%Q>ULj=^Xqr^}ZiIK5iuxckNRu;lI-G;lsylQ)*^0 z9P9u2cO!2`t!4ZPhcjRO^EVG-9*;q#zAVrE%KX1#K6=ctbH>b_bIhFb#mBHd^@NMg zS+e-j_RB7sw4i;_-1a3G9X)dF(dCOKO`m$!l#y+0BW&xjbp*DKz`Jk+W}b;X2K&XV zSJoZEeWNdS3%`BT>hjDpXU<=AW_eL9d3V}x2BJlE=HmW2JTR^HFR&HsK|z%^fd z$FQ(3o_0^BXZftL4}|)xe;#uz<-?)JjWTSO#!-~b`lk%9JjHA{VMVald`y$<^Cq5ycJ;eojX2%6+nQj1(83!-E*_m9RKH+; z`&GlImshqgQOlO)%{%=njN6uJl}b8aQSXTX3;ShV?T2}gMNVDc@JtrBl)q)+q+nNh z)A`x>Ogn$y(7wJspQrk3XTKiCGi{&tn_Z9KxO1F`L#Y1UZsWXa(Wk@tb=s@HDeO1( znxH5C&!DWnpjetYqg47gFB<^1G{e$*&kMi%*Q#71{b)Rb!paoPkYn@$zM*OL`V7j?d7sj@&eZ0cv+ED}FMs8~ z;-h|<|09>SFKC~$Yx!{A=KYty@?S2gUvCHhcZ5@$ zu7B$o&ik=fb^70dcJ*s}l>PY@)o}3KbJfDLFK=H`Ubc7%Zgo*wHou*JU%N-gtdZF` zDi?`tb6#|yQSy3zU2xjenWLx7KKs1cJ)Rvh-(@bpG>-NBYUFrrxFU<2aygogm*n;Q z`csZqJfGP4Bc4x=xATdeXVf3%GiRK+cy9Xwp8R`!Y{~gVM%LMNsq&^F+4)4daP@M< zL^-jXH@sdGZ>{r5^CkC&eY;WT6ZzfM`9yxjcv*a6yw0?ESsc^;&zx~?c; zC-K_+#q4@b`6|1CBI_4EIu(_r(3)%j#&>o|BrahE6?ruy(^h|vc6`0CX1KyrrqrPWqGHEU6=TW zLv<)#;;j|06+dZgyySmZ@seLLUKXDiuPGKUi=+CbeCCYv+E*-FzNCHlIpz6_diI>8 zC-G`oXZxY$n{0h4mw)y0K_=|)K#G_6YsG8c|I^rb$?vY>CBI_4EIx{ty0XgRsJil* zGtR$Y_|&=Cq@!&tC#D#P|w(jRlLMoD_*OA-`IG`@2=t{ zzh+Fv^VjCi_oUy3@9IyzKF^puV@~^`_R_NQCG91wuzJ{9vZ8pc|4t>`&!##}>-P%J zhtl>9w;rE+FObUX*E_~{SFSN(uCmu{IqaL^y+!i_+4FMAzWI%BoczsiOh5UMi*^oa z^yty!Sbu2E9w8sxcX;W-o&A|qn)&>!#Te{f9H-1*uyFpIUJwM;>hW57?x~Y{%UY!W zIvP9v+P`fD)s5BZ8h|Lf{j4a1BZt1 z!d84Z%QY~(8>&8Z|5KgwOE&D~lQW%;@&CL3v9B@xhoue2XWt!GbN(f^=w30+tH)x> z$Jy2~{^I9ez}R+-?|hP=7*y+|Eg}A{aZBq?wW`>B+FfD(G=KBq@O-2S5F0weeKGz; z!`M<(_{x9o{YG}4&r8uZoGti9E95MP1M}QUxSQYdBb@)|3_oJ{r1H}C;gc6HTDGLT zbPFCQH|n{|toyR>kky0UK6mM@zWh+G-&ZJ~^&iRaEd;dugm3OLUWw1h*orfpY~Z&QY{Pm*D$%cTsAC-upP1>cpTs3R0ZG16S8F`eTR(~G-6zA6 z4_x1(I`?!Q*>lsrDD`M34;%&mn=oO!@9lpQ-`8|Ns`n4|zPBnM>2Xuj_ps{v@uiDa4v@D@qIAS2E=Fc_z7a45xg?lr?e|o!kooB zobf(&&f~4Pcj~xkKKQ(IFT^{cg|ox&NH^b{zaI1WEh(@2*1|9^SC7i>fAmC492;KD z+rhPY2j{cap>WE7h>e;1EH}x%rE~ZKjXP$Kk8Q9Bu$)Rqm-x0VzHu9$uXiN%Qm^Zs z4u|tg?5{eb-)*ga{-*rzda-`FpX<$GztW%%j7QaQ@&0vxq;LGqN}em>Z>hA)gC7d# zvTPlrq2L%1+TJ&%^!g4{3dB`S-w4;VRn4wp+N913&xPVvo=N+J9@v>MoHIMMK30B& zePEbMKiK&+mc#j*Dqmjr>66*^gPp&QblL>U{ITI@Q^Wgn?wj)<&_4NPl&Qb2qu-JI zzI?^**>^|j-Pwx&wPo}3`S## zeq{Q8>Hp{W6{YHNVSM<$TjTdx1Vd}F6D_Xn`xoLhZ@z#s=g!*uPB@0;? zFKJ%gRn0$*U$^ID9?PD8hO0m4-sX+T{x^4S z2j?htv+tRG-%6zon15V19atQG{*_7-CU(+Jn1B`H>TZ6Ty+79c+}wljN<002x0QVC ze7U-xnx7iK?#$08K%;rZ`RV7D=G}^qXY;T5$}Hb}Z2xdRUfY!A>-Ws^)s<{NZGI)o zSN)$X-|!y0zI-*yH(i+Jt3H?IV^?LlderiIrq}ezEZ_W0mTx*dv%`MQ0$BG;Z=lS1 zy!NULx5|EBo9@$NKb2o6vPa#bcUu)MlMZWyywfVX3%he;Hd9U&7 z&b$xT5jIb>FKhm+8=TFvSwG0;Q;fgecPai``u>U23A^s(tOwQapEkXoeYc&-|I+{O zWA4k<{{GVF z(c{&A@^&-F3(xCQ+~_i_jE3F^)7POaa-R-GFI8)j-QefvqF3bp*DKz}6AiIs#iqVCx9Hdq-gS#1`EIqm#Vv zS&dxZWq%rF-hZUuXD?{Kco~{|e9WHSW7V9Z{FQ(5S0MFc$^1*^^~T}Z=Zdj+x$gV* zy{+#1`MgojGL#oRXUMGcJM7M<14SNfKDc}L{ax`iAJQ0}rY-WP_H)#Ehj!1O{FtQo z`>N+rtm(dAP`DU5}w7SdFA@pCwm?TG8`>G zE&kgMZhMR0o&Iaf&L({YI%Ce+S4kPPM+NAt)Z~7&9J--_H4XXU8l}Ep9p1h~VdYC?cQTvSco}XQ~K7F6(qONxw-nZue zIX8YwH30&xiyLbARs9=@;HJ&e z;8dKisS#J{E1y0i%)n(U7qqLXM|pQ*-8C`KtrI2~*Z96I*&Jd$I}h=je0NOP`;_?A zr!^Cs>65GYF#clUJFIned-lz^a?YE1=!5DDYs`Zg<%O5`<}aRR=i!d=o!1A$Cvxb{ zMub*FsCoP(+Bn{tr^FN;XHS|uue_u@2V2283(9la7q<8852K~AT{krQ+rO#J^*irV z_&1wUT*{Zq|6KJ=_f~%s&XO`37`eUr??Q}iYYWGeQ>3BKI9^=cYOnND%9&Ssp;#W@HhUj+~BXgv{$+C_P z*M@R9kQdoD>6T~x`(!h--*=(g2UoaR%m*O+>ZfLb>dLp=Sdqr6OS8YpSR{KVv}ttK z|NhF{HwL}+o#%@VkZ7Ou*OHz){q2XB^`yLhuWVm#*)hLAYyXm8!pW}`PrqiLd)CC+ z=bzRSH>z|t?UMPUTmX%~{E}RL38$QX&1uLPEn}QEAoFYew)yc=T;!K<@@v}ec|7~E zuxEb~QC-`jJo;sR$gf#_GQZ?+@TEer*&HfV& zn*5R<@@uTcUH*3Z^~V{sTH_@@0=BSbSAO?TKIZny$C_SwH8M7tQT$ z-xvvvr}$-Wm5rnPST=9@!Zu9M-rAHs@yp)&d$Rt?53_f4qwI-a_U74ommg+tbffHv zU-p{r&iW@m=HuTPUeUnu6u<0^U6t9BA7-y%<0*dGo3_T{XZ zpF0=3ORp!W=BM~&Z}aV0|Kx}4^>#pIPyDhs?~cr#{E)rg4yf#jU-njCm)VmaOYqNM z^nNru_ZRWY-n2V2d-5Z**W1zTv?qSqTW9v}|66$&YwF(My|} zFXETI6=q-kjMozlvL}Aoo7Itxr~HW56AiK_e%V`Z_T)#ro@kIg@yp)W8?ye%k9a-N zAbaAMz4cFL_T)#ro@kIg@ylM*Q<**aq4VugvwLSy^Hcn?x5Dhn57|4qLH5Kid+VOh z`X@hRZ*+s~iC^|MJ)GH-AG)6C-Dq~6Z^bWrW1q?F$q!vmG|Ha%Wp9(kPk!inqEYt5 zFMBO(ZGKum*Zu|@e{x7t@voxKlu^j*L!m@e&UxseJ3D4Li`$NPyDi{ zt7!QV;@2R1n?SDj#ZRLgo`JvKB$F=h{X1&@{XYKP(e1wX^hu7mTg6klh3YQoi3vpN z`yG9+^Ca5*I{BrZzT*esJAuuAo#h(0-sY=MekA+udR&%o{eFid%6%X`YV8fRur>8NOu`%~ z=(DV&!?mFt4&+64OuFUSpa1)vG4Jf}cl2FL%lLn(TK8KXj!q3;4|kxdeKLKQETp~@ zQN6c$%eC3QJob|O{;Yn=FX7}@il<+V{C=n9vdkal>Zi^t(J#ZvFX5EauSULmUw^sz z)s`PG#YKJzC%@KSoX4{tf1*!O!cfRB`60j7S^VX1@avEBDN67|@e39FPkzY{`L*ea zY`o+z_5K{+@5m4NwfV}-FZtW)*B@ulYK@otkY6n}ALTE{w-Mj(%(CkP@)aHQkBM>Q z_d6aRe0SgP$Vd4sKJ|t8Kgahw+RIYEwCB;UM(!c%xAHJfsvzfB^7|cKqfwM%*rqXW zb}qp&ht@v>MI`?dzz6Tj@OzCN=jKN|i0j`(G7gROV@5#P5psDI*@ zy%qP^cv?T>`?dzz6Tj>=-Dcxy{fzJ18e~uW(OySpPkzMrZH=;L{IWOe!OWigi0|7P zWKaCEx5>t{$^3}#+Ztp~{Ia+H-mHJ}L+_({`+=Fxx8j$*W;^f6583PO2NJR;e%V`Z z@sl62*V_*yWKaCEx54&l`Jwl1y$oNtw&C@Q_+@Y1by@u6hu*g}%AWXTZ0>^>xl;06Tj@Odd}vj^|R66?}%Ua z#y*zWlOOSVqCx!=zw9+Xp4pQh@p_^`_QWrHD=dEUBVJE5$e#FRZ|xgd|Kvx!o@kIg z@yp)2FJ<=RN4%bBkUjCsUdyYQJ^2x@CmLi={Ia*=walLU(D}Ae-|vWD_L{$(*^?i# z*V_*yw4aGz_SS#i;%EJoy+(b%BmQXbA2NILL)R0%3}3vSSa1BYxB45IJ^7*QiALEI zzwB*VXZFkwT~9R1p7>?2>1&xi`4O)tdTCJeMf|e2%I2s1h}RPhvL}AoTW#xIe#GmE z2H6w8?5+B2HlFgM(ckZgU-nl2jm6LU+3@doj9>PeY@N%GMt{E}e%agfP3xce(dh4Y z#4md-uVnV*N29;r5r4F2{gNMz{(h$=iQl@v&-y1n8vXr__|?BnHecjNBfsC_{h#<{ zZ|oPc{>hJv@i%5BE?ZWf!#|eOi$nXF_+@Xc*^?jV&Te1X-U~ZYl|Avx-fEkl@?&~~ z?TKIZHrswJKPJz_x8riC^|+y>9E>`Z;;_g87%v4tFj1X@1Xt8Y+9@m%R;t zm)Vma)1AG=%kfu=de}$V6Tj@OdpWZwKhABiJ@L!l=C5b=RkubKk>_6vt2LAk8>MrPyDjiWY-h&WAf}p zi~Zd)>c?j^n1x79!K%ih}c*?f^7VZX+j$B(4>%j_PnLD>_(?5(nSB0s|UsDbvx zFMHGMdP075_OEw)jQS^j*<1g&*?7v2&i*yVp7>>N>}N82@?$cl%Hpef9JY8iQUAm* zd-J|x`-}B+dV}qWU-mYbJ^68NgYAi5_Ga1h0{LP6>&>Ylw||OX_L}T|T7Fpn8fH)Y zvN!FkS^VV3viA06^Ja&+8Drm*g650(Wl!Jz%8$%m*jsvHChEwZ_+?K3`LS&AqDz+d zX5%zM+6&*~+xMS;Y2V||I17Jk1|R2adii(ZyU}e>=C?Xc|CQA>?rA>b+=+|kFD!?@ zr+Z8)+=9Bk3+k@Qx=XXavA$wnmTx#G`}YbrT$tt4zP2FrW9&a>c|Bfz8(9yN$~a$! zqfvhFZxXW)(=My^x8HY--=R@YIO(mj{)i8da7@}JuP2=JHqFiKiBEc^(wD-YOqHL) zMZI#SCqC&-+9uI6ob;yIc#BVZrGfObPk4?w9F4+BZ$o=#Zd{`Oo^aA@ZnOTG z-A=vTb9%x>J+mi1=}p>(dfB&W!;v=|PI^uAGkfAAHaqqUQ&i(Aob;v{kNBij8c4m) z{s||&wX$z^qh2Zdhwx-C;%uHZU2NlG`cZEn^*ZedCwrSsPkhoF(QnUCls)03x9O71 zp7=WTp2&?$#F?L3pW>6=@V@!+6i)Vp6QAnC`*zOH7Bp(zZ)^6N&&~h4rJ8T)`d~k) zFTC_uzt8p&+fOvlHJ{~&^o5W5vod}0%6>WzqrTy#KWlcTFJ9@@vM;>!S4&@h*!odF zs{A*+^k>=liC62O*7yl8{S9VUen?;aNbL(R{pR;({THv+Q@T%S{DhbO2J>IM8aJ)i zD*J|y`tP^+nIE!WQ{V8?pJjUTL+d@=*X6(P(r=!T+20^PY<-I-^;iW&z{1&hDYV}`u z={L*1<=U5O&OgINeT~2Qq4_7Cbo`nPFZ~Txmml)KmcH=P7r%HFzoPlK4q#m;4c7ko zxB2TO>1+LJJ*WFYA6!ID!aoSH8#ssJ4BH!O2hhA`&e z>T@LP^ZqT%J+?b#&W9JtXFR*0jQ>iTep|#hcyh-1t%+IwWKyqhaUzLv?7{za+ydS8 z6Js9#&NTmR<$nG8mv-pC9Y$i$kf@M9ipGWrjprZmLnn@BdXSMlG*?pbJGLI~nzwdmdv$L$9@YT+G{nFkh{*``AmWT7VmJ>QKr~8z)={E#ZdSGc-X;WXO zJdm||aU6!V!FBOwfnLV8E&kmJ{-WaDb106Ao8qV*=GJA$1CvV~|I!&p)-8@_VS>-J zNj}Wh0q;$D=wFIC!0Pqlcw-jFQWnPp`)umVl=1lg*NWplZhtF^V=0o(=vK&B?J(FUg*7Sl+Tt-*EnH`S+spovhT(wO+-e^;*c+ zanIz8sR8HD(im{z{2BAk-?KO3{P{G-k>i;j@AmVj;-)yN|B7#@cf5hIZ~3xhr4p}$ zw*Lz2ze9Qp3HxQ~Q6wI^?%6i0#`+yr&u3X2AHvu(jwM_N4aAJTGo(C{wW2xBcE2v3 z0!w<3@!fcEJ)VP&R_pwS=wx^H-GU){XAaNO_Te+;EMIVW&;QA~T)&5xcINo)92y6l zdai`p$F*;3A7A~=Y#-PDuIB){57hmb?$5->d|zBw>G<&P#m)P5@Ah%=X#KDKr=Iaud;E56*`Zr&jTim`B-`3{p|3*dtz2+PmD8N{l93AOGZ1j z&c_*B{(iPQ`<=MouDRlXs{hme=q%*G-N3KPkr)tNsf2qIQS>H`@RNNFtjhN!A`r9S16-WA~I2PUKWY-?P z7jN$i_x@$9R&eB&UlvyRHN6UOh``pCGcCk!)e$I;J?Z6E*W?|(Lq^8Xmo=Zm-g zY#iy<>cB2`qV+aMBXXjdL+{?ZGX*gChYRWk6yp(V~2O%v{X?!@umzhl^V_%I&*8$D;$wiA{w{`sr$;ne{zf9Z=i zU9-!$>n0vG5k5@p*kSRw|6X(Lxcm41z-Pbp4Jd1Aug0ZYdJ+o$?X*!0PbC;eph zHm^{SW_q7_XW{zbW3Wx1XHM{(m;UahiM+q@2luIq#*G<2_6t9G^>=^&p;!C;_FrF3AOX(xyS_i} zZ|%P4duT1fd2W_FF==0iPvqY>?d#5gJUBKA)W6i!v}+)lHi@y} z-(W43uC{A)WAB59BmD*p8WjEo-A;e{X8(?934J>Gp*4Gq;}ev@N8#!U=j|zf#D7E1 zyn0(_7cXAYzI55h_7zLs)^7gMoEtT_JZDtfsAJ3R#~d?v)ZDSh9XEQ;sAGeO#8*h9((-kqh=pFYSap(k(XY6$sf&~KL;_^()5@*9q3#?)@J)5+qwRx z^KT%BlJwMdXA*$O7s39 zd#!pEs7Qs|?)Vpq`9e!`d@vJ%mTmE@O73Lk-5aVcZQye!nWzUrq->hrXCS!!YY~37# zuSHOw^_5!P{#z61{ebE`w^tvGVaNC;2(tGBeer%^eQ85T)#!S0q#dpcy%+Y{WDFL3 z#W7on`R5UDgYNX&1;tTuQyfLC_?Ak8-YAuB zbn8*|Y&{-{@f(Z87aUq|V^HUjz4X8vR;x=+*-t9hpH`_{fBkmf+y5l2?@6b#5esHe zsV_d^8asfir|75^$Mpc$i(_rZA}jBlHpa0P=MkN6r=eVQT1k7v)A&2_Xc>RP;rw3j zk9Fvoc8>p?e*OAhpKA%fH{f-auB&vNrQdz%`b*zG>UvApSNguuvvU6Od##a3*>zTS zWl=QeH~lob&Qjj;qwIQU)6ndE>Uq0U)_x!!?FVcBv*0?bg{`-rSYs9gLnCL zmg1&3w)}S%N5wZAkKA<@nt0uOk*>R{hAdncqgB^gsvlQ{WJA$))}Ey?C8p}5XpVan zi|f(irZ{SSE52{HKGce%uCwaL@!fl!rMM}MiksGD z?dz=UUBMzeAGiuh*HqNM5_KMGQ$1_V{$Kw(>#BjZPNlWtDDL`kBnl4<-$jS6vvj`Q zdY#p~;OaUnH~-EVSo1nd*HyaCl675w>3b-BAEobJ^;}E%5tx?Ti~M&|8~gD)sp98Z z>(;*!zLQeEdPMe})Y`8WTo=hmom~66c(fn1{HAAobxggDMDO13q!hOp$Msnp72gnq zj`{iP<=3yu*Sm<+kNahS?tdq>5x=Tssy=G%>slAJzLUz>^3Nr6Yq#3eJEBGFvBl!1 zIIjJF?Rq)4E?Xy+N^9J6NY;mcl^yNQcT&3Uy*}(VRl~z)%M&G#Fz5H%kk2=39j#>eVuj+4?ysLdx*Bhz7 zy7uU7e|tx<<(Vz}PD*%vC$;zAz7*b}b@sPZ`orY@6MUWJy9egKliL2DriX8Idi!0_ zDfq5v8onj^G`=5#nT})ejnRGhu4pa3C1U*x_}=IMd}DNY_FYlO_}Nn?{$KXK1h9^( z>VJ}S31tVRVNaz%K$euYG;L^JHrjw?YYRk0OWLHQ&^9$qC4iqiH>~inek>^hWl;@(Kj)tNdoy$2owp>ZHtC)A<<6No=iGbGxyzX| z_nw*DdQW%D&t58Lp9Zfh`slLxp>;*azVUQuT~XuXn`2SyivD!S4P_@56vcjZ;eL;v z|L4!&_x>)kI~#xBHS^KOURCRu9$K+#ef!UPD}Hgy==B@_v9|lUW1A~?|KO!{lV8oN z+=q0-VZSb4a0QX)+#OtK++{5o~G8vhC9JBn}<~k|a{hVT*6mN;l8$CXobyBJ1x;@-;>!jQ|sjan6 ziu+G?>!j2;#B)1-stY3S9OBF&?p)7H5_b;q=oE6`&%C)+P0Lm^tz6QwWcgs0w)x{^ zfO(43qF+cHti~54ZJ#|`?bmBRNz#&koU8m)tNSF4V#WDtw{aAT^*YZ7g>(ny;Pp$) ztL-@{51krEIDQ=PKv&W$bl?YKGwvMlKv%2f0DhqJyjPW%1my%C=sKQ}{J;-%m1Dzn zzyn?F&x8*AKxf9C10Lx5UKBd;^XWK0KTaC(K-Zz`2Yx=?q!1nOK-d1PO5BxyqdEM$1@&q2}T3?p@zz=klW5RU616{%MLI-}J^NhH2zyn>4rUSnO zoe_5qc%Van0lx&DcckiqiTde&1v=n?A7F0`(~15#jvM+R;vf~BDE$%m(7)MUIbWs+ zKIr>S*8N)dZ?prm{ed3%pl{dtgD>(o+Xd)>5Bj1LB!BQl{!#S6PtYH)%dg9Ua+~c7 z`4?$?(DzjfJ@`UyQS`u1(0@wPYrZIVB)!H5ebFpkf0RS_N3-1}%CGT3-w63>zL3A! z{y-0W&=;Me%dh!@E;4_O5BkPALJz*k-yCNX`D=X8x9jqw9MHcxZh{{833}wOQ}myx z^0yoL_h}e>K_8Vr@R5HJ`j6&=@?#u8zeM?g4|>d};0yUj(E}g!;19kizm1;P4`JTM zd##$^hv#qT&uqu&7swCsD)_x@F^%{V2W`JR9^`DksiM0j4jR(74{lWZ-}-O)c1HW) zkS|h}C&xhpANcM1Z?N&(t4ipwPWv_k23LDpp+@e1PaHIk+RE}YkC7h71$s;9QMU`| zSLD%GkrW3lUasDUnDVm0`{|207WvXGw%3#5pylT6?*;c-fv>HN^F8hth=XQ}XD8f7 zZX7i9XXp{~f_@dO;-0;`0rxx=7ftlIAN93^b$^50u}&KA@DT?sl^z4{wP?Nl!4#p9 ze~BCuCsBF~#zC{`(atTwcG#ZqxXKS&7^g>W95hjpZfXgArHg}x`4aPI$;Z!=xHkHE z81p9VfGB$u^XD(;{hAN@ ztCim{ii5U6%hRm*NS{BUH|P=dhkg}ojf1xP2ELa~9JH&zJe0EED;_iBpj}O^8u40! z=(aY__k;anJ?YXs?A%PO;Rkbn*;=%(2NM&^Tll$s6hXCZQ|FkE zp*QHU<5Ar{bUTqkyL}Yfl=1?FfgYi^gdTPOhJFJi+r(+qe2jHrsn_3!*M)5p6&hqA z5_;5ngC4;a`ip2s&7g zXOkg?`L>46GqJ1OepP!TfDa}l!xZ}{U{}G;!uw*_U+`DM-;U>I(|^sS;j!o_%9x** zDUcAoSpI*ivD(^v!Gj%#@xEQ8CEt;GwEqVdyU1SE&{d2F;Dhm?|GO4`@nenk_S^1$ z)u`uXi82yie;*RaFa@AT=nZ;oy-V~6{Yv#{-L_Y}!LKU8<-^3Tr^XSO!Z_vTQaK)MH67+!uJSIP~->g89Jyalmq4{8gU!_gVbgd|JoMaWC&#PBE6~ z$m2iMW#){&E|-4{hL2Qwie+qb9^1g1S?J#1REZ3e-N2g2>8 zXt^27G9Ej7_HC7i{P7do4u~#3R`)eEpWIa6Fu%E>AsTlm?y#PC9RTbw*k#}idkuas z*k`cE;0FUfr#$}@Q+fm`T;hoQOWn5hk(#mM|3cb&iOjpLuih}IbpYUl@uOt5#V#90 z@!Gf^EYGB4gvSwq-k`_+r=(p#zakIze|-k?IZe+DF9Mt-GQ?-YJOKE2Ntk>=<^?le z+v^ms?R5*jt&IZ>@!IyV=uxJF2*t1M3g; zNK83}sX44Zeg7i%lNIUjp7-eQrq}B4Ti2d0-zhHA-}`G^7yfQ;GWVR&evghHeS2y! ze%{76wzU53;$$jrr-gJG<-of5cKu!NWD1GS1v=n?u19}o9{fPRc668yc%Um;qb_n?cAM|bdd+6W`{YTLQAN0Li zf8dLL5hZ`%gC65G_(JdClO#VqzJnh3!54J4^0OZS^8)+`?XQLB2jq`-1U*2n$nSgP zZCguz1b#nxJdG&4pWs7p5{*gnMzZLVJN60ABl)k$egdTQT%qQf{+9531O6S8uTbkW z^ADF4*D+7BK6yU@_`u$6oo(S4f22z2)qVnc{=6UvgLP!uukWb%N*R4u{X>dk$-m?y z%HD-Mk04pHJk5i-@p#Ym4|4ALZG+e+-yW~tpXEO(sY#zL-2c!kO8!0b4h-1?QGALf z%f6zh`%%}SN9YZDM7w}~g?=M_&%Sp9cx~D8W`);1`f4$ivOwRS$A*|DEWu{bA7`($>4~m-S~lO;<@V!1cJ1GDmrLq=t&V8Z1-Kr#BrE92ZWVd&;TD&z*n5@$(j(I)B0Px-Tv{r>oWR^%E<|e!ph7jf~Ar3Q$E_Vh1G(9o_0K8wbk zj}q;dV(C_){k}*DuV^B)PjepyukGgp_XSG)HQ!ItK8jbUwegRhCy!sF`ty#2PR)}Z zyc2YxlgH^M#&ui!Wp2=`a2E3XUrPJ!`H8gOo?9ht?U43c(l2Q!GXi?PIz_%KyF^m+ zes71g-6)AE*v)|LfL3(sv> z)MD0SYr?N=*|LS(&P4hl4d%CJ5HQZU{cfads3+=OaH}47v^?4mimG=@bKUZl6w+gv z!8tWJe?U}WoS1)WkKq^LJw)Z1X;^?W?4-t`SjTj~~MTl;FJ zDjZzxQEx6Q*BgiG*8n2YM7_0sQSZM05&57UlpGyZ@8*W3YJ^@Hk%Rs6+yPOAdEKM+ z%~x&p<~cX&K)q4VM7?jBlU(ndN)VayMD>a6-(=~ zsx)PN#*&8fS2Q)Z6jl$2Torz5ntI!wBOwFS8}&rJ8y}K-LmsPt8ddK_t5&u&EnBdn zxoJff?Yv4+6`o2|4b3e}8nPfo(Y^iC)O+6qX7UN@je4Tq9S=&qA&^O0Rp1(Jubn|xc^>05c%)j(jC!MU6BkH}P@q(307G+(9+0FET zncYxml-%W%lwAtDW+-l!+)-QOkkhCKQgM%24*RsE7C8|T#5Dh5UtVtP!P zdZ$`LhkB!)sQ2o2sW;@&b5lgUo0pukq<+D|ruqvOoZr;Ev_4d_Xkadr6;={i;h9;G zg&6LWrry?fv6=(wje4TqHIGQWA&=HmBkDb{Y0Mjnc`P?gz4r)7DGZ?As3+>3|E$y- z^601t&)-bP)7Y}6`X!5(G&E;Bu$?qOx?t(k`5oBT6m_89s3+>Z`X#A12|)FF7o`%sT>qUhYt7!WzA$-fgezcCPi_c8a~;D;w)pG%TRWEX#&I zkLe0&Hp`MOSo+7coq9H1XJhwcdLc*z3LOiwoGR zxT-lzTlMra3Qwxbs)ZzqoH+SGq+&P!k>pFrQJC+gk%GpRS^Q9H|CZ{5zx>C%+d z*rwY#xm~iO3)bM;H1&r45~RU7>WzA$-t8|+y&;d)XV~k#xNcFyf@RrjZWhrER^wkv zQ*V0R8+oAKs3+>(_H(H>mjxL6uOQfC4U!kb& zmHHq>y#b@%LH>N+u{dSD7u2n4XX46>(;TO)!9N#Pt!>IQ}I_G+G%FiX4 z9H=++i+cC|M&yHbP;!C2-g;15uyO@8+)OgmIP+yNES#4mT`-F|Y1;YNAhL0edZV7G zcjL=aZ^&cyMfQ3(Hw?^TnL9wbVDYDa0loU#k;m33)K(BbIGX4 zdP@tJy>qBZIOTfx&?UT|-I)$~powE@06yvMzx2&g0|mhxL$H4+p(r-PUY+ z2sn)lVvY;=p|_*@tP1y+_Wug6gX_JmS+zf;C8x@IwUVWlb!$Z5_DNa)Rx=^ZIylV- z>rbrw!f^oyw+_ymRz;&jg_lUNKUaNiId7D=)2MN3rCM;c8l)Dz?*sBIAvv-<%_C|Z zT%TTl()X0CJ3(sFXA2iRBI{53K9|}0llDQZpHk}?bvu9_QC_qYf!j#-SFFc9SHn#X~3hebr`NdBYu+jn?Rjblg~vF>Us z#08{^$}5u5v*)hf_a?O-lE-oOqa)v`BxIKJ8vR?L%fonAQNss3g^(Dhh<;3g{o#iY z^oihu9>IAA%>4Tf{MeCLzsPXS=(%eB8l5KX4dwei-yM^{H+9VSTOU0jvA&j9_qJY8 ztK`c381B3B?a=*_zn+%JPvJi&F!K)5vyUPSGvxChMRB9TaGnA4oEpR*ZNOs;c&q{E z8}JSWJkEf3G+_QFa4`R!4R{v=-qnD2GvM6~cn<^K(|~0^5A-pLR`iC;vzGynH{b#T z-rIm>J-5$)U*rCM2E4xkA7H=-8gQWjPcYz581O*`Jkfv;HsC`H_)r5bGT_4u_;3UM zqyZmcz(*SJQ3iap0T&zaBm+LifG3Aw)&Iuicx~VNT4MbG>%ae`O`-l-^S|N#*!G0L zJlAsn20cG(1!448+(&=)Vb0CZAN|$8Fa6brrN8>H^j9C2{_4ZhUwv5ms}D90O4{ndx1zxuHBS09%C>ci4seOUUd4@-abVd<|vEdAAorN8>H^j9C2{_4Zh zUwv5ms}De-;|zGF0hbwY%z(=cxWa%d4Ys z6Ak!N20X`rPcq<>4fqs-{qYgc<#-Oqb2;`e<9XfO--rEf*tbS36UTRHP~|nj^XSKM zZtfh#GM8u1o{PiJ&b^&AGxuMXz95esg94r_bGY_J(qj*Tz==MebkSyhL2R9Db9yK zAj|SJ59TN{7R%XRvAFtKy|3wcd7f*$OHz|QTe##=c`h%?@VUIPbl}f({9F#bL605( zC3=K@rTiS%=E1;oIm1%|aJZIFXb{ikfR6~HX~-Vu=17WjbEE}7or974#dHfD>rk~6 zm5R;6XpPT_9xWup;u4Q9tVifAp-0`nq2Fz-GEx1J`y$4-Xg&I#QPwISZ8H}SC~lWf z|L6ZE^r-a)J)&gLuOH`Th3@3(-u(N;#`wQ^{5Dx+GL11qIpHptXr&G%Q zdVcY7=cs?>@^xM>Qu58Pot6K{-_`Ro(t_QlD}R<5cZTWtSbeD2SF1lEY2)e#O4$E~ zdSW~PAB+bSe=gxS6HfFuo>ML7Lttm!$~GF=SxAT2&Wd{fA$Ar&YlrQu_Mgjm&~e$) z=`0_liMkK)q~~jwNPK~XnZ5t$8-(AS=V#~*dh9<<^a%Y*HFh34J)V7y=n-j>9{D}i z!0qJ&s8875f7tA0)@l1QT8}MSk2)Qo`VwUA7l&WbbZkbkRRvFowu*D?+vCDg2r_KRg4YAer7k8OW{Ao1RW zGwM0{=SSc@YO0J`j~fXA<%}AK`rZ!LlcUO1%s*u=k3`K4^;z!(t6JJn*IYQKX_1O` z;L&#ORHd}v>!WpEx9VF+864$hJ`SP1qWx-i9@;hFZ6%HJS8(|-4%zLY*AsDN?i}?x z&CuL>sh#{PtXFk$2>$e({YiNaDYL{KC;mlC!}Dw7)bKpo`^4JBdqFM^+X!4gK7#fI zx8HUe|AGGk-RGLsZ`^~&h0tNU*0e|7BN{1Ass4#CFmRnu<2BX0J(%OgyYzL+Cm!Q# z3|H=TX4&+bJG*v0^SZ|fmGb7FI^y(K{bmvFM_VpVT&MFczQ$Npd!5;NFwst{xl_?v z${PQ_OTYWTiaqj58J~{^s$=`Z|8q2-H$VHgnZJFetn1sG3rJM)*y(%!2Kn%9KH?Xz zyy(Gsay`x$KHBnO)enC6-z9vH%HMfNAb;i|KgRUD1$SH!`>^Ys$F7=DQO59luP!Y6 z{%%~uCJ_FUQRs9 zIgjn>`1+5{ZzyR*%0H!B<}vQweagY>^t~4x$L*ck>&y~r^KxCr z6X5VTbynH5Sjod1JKuTg+RnVqZ*_(-1e5!35A|#KD_*9{Haze}>fQPOv|ws+aV!0f zI(Nl6BT5d`m*ymXe$D*;qpztsN%|G{zd1AU!?kdq6{_-Bu_t}i)AW3udE-}ZTvvE} zEpZ)j&k^SwanCz`{f@Ga5D#5)^#9JAOFPILmS!0h%BRPftzNiiOILqV;$i0(OIlm1 z<0tF1=V@8T-|rilnl!s1@<6{a29qo%0}pi2FZlU%<3n`710C?d4{+t!@d>%`+F!IA#8GZLM%oeZp%1g% zTu-J4KIm(Y6MFE4UZUuM5Bj!ag&usNAG7|6{53x4do>Kc&{GsW@IhZNP3N!qKz>o> z2R`WAbpHcip}LS z9>Q_FD|2$GkJq~M!r%I!hD_tAXd=V-m$#&7p3;j7=@dAAvG z>Rc=IWV1J;WfaG|GG`x>#y%FdQGO1{liz@{Jk3M6iMP(YH=N;w9<|;QderTrRqI#k z*jM3sKi}Zjm*E+Y`*7;B{q*fONye6gZJY8qwP|{;$`il&{$3x&@$R$Wr_$s8)Hk?a z{L?}w+$4^-r3}ONQbLbfZ_pzu6z-STQ2*O)J??F}_?oIMTc#^LPN%+Bsrwsy^Y}31 zSx?mWQ|U46H$OP1FPDG9FZee~j|T+CH=7>q+=85k=Q-<<4O5KMBX|GrIPysF-h}XB z?*GMImJ83Hm@hGZ;&}n{D&|eh!%_AK#`^*q>mQ{b`#&mkzN^Y(Ym*%}H>>BWM0&5x za~*4J^BqbZoua>XXg=t#R(|3Azr=J9^Jik;FZKcBnG@@bdELao=g&K|Jk6Sq^!XEd zgC0?T=vTqK{d=VD|BcklR@nbb;@nl`NBe(~FUE0<+Ze}jALG0E z9ER~6&qu)Ll)oLy_8yPpypGWu(;oR8)b~SK$B4Ax484x=n!%0Z;Di3(T0Ss-T%T?K zkadjPemOHQA?9P~4SMYOp6C(!RUEso((hRCJlk!+sq^Lb%7=QM#rj302_JB9KKA%) z)ar}WLh1jF8pj!f^NE^|gnWp&aU*j%LC7^1jiRC z_zFT;tE;_HKew3c7%32oIxe@&lXOEp&jy}@=zEkVppCxtL&g79#Z#jpa1Dc@0`#OJACFQwayECFWPkF zIv%fQ5q%BO+)sFPFFuucT}AZmM8ojI#CIa`Izs5<@$a5j@vFmr*1horuY&1+{N(Pj zV;axxYQF2VE-FLU&J%8r?e^hs%Wj_f5SO9s^3B&jT6AS@d2h|8PAY>c6PIDi+$$=m z3>Eo@-cYu>peT0SMf*Lv`Q{t$d+^IsIuG~moq6@HPpb0XUG+cfU)(FVa%OGe`nUeE zw)=zcU0pfxZg2euHylv8&!}6=xeW4Su7j7yVCy5L*na+Ix`xe$7u4IpBo>dEYtpz) zf!9^*SMd_?(4n4F16NXwQvoy;mz>wN;rZ3AYjf+`g6$*Kxm(xf*0l|nb!}M3hIMVN zf01=-dxuPJka%OIe;JNJnvOyN3-2o zNEd+zy2jTeKkx%x<=8MC@IY7dy3m0i=y+WlAIJ}QpzGCi;OEnY^8+5}pkMGy(0OMm zPXO`*9_WAvet^9(J{_-1L%YGcqN3Bn`&J-Vv)r67(*qy$jb{lx_(D!*`9TkS(6@g^ zw_{xn{5E>Eu1$|~c%RcgEcvAl}Pw<#lZvNR}*5^BC#x<)Js| z5$yu{6?s_JwZ+d1ycaN~7KX8|?H-GK36uR7N$c9~&D-C**McAQ9LW6w>)O^^=!DzI zUDpP^L66V?^sC@FuWNgE1MYbYYd!8qefnT++(A!K>)LQX!ADM%9s}=l$bWor&b@j3 zGcXB^(qnL4n@x{)Zpr+I+Z7&H*%6L$dgQKa6V2$RmQYi=b#0h0F@JXG=LI}JnDz(e zVa%(EjOYY@?a$IV$ItY}%vQH;ZL%X@;%6c)7%%f&ZHaBZQ*2WH!Tbq6=&uDwSopwCn(f?zW7{ZJbdenM@9+3s~>&MT`*ZmRkGbNtw2fX%(Y)M|2cZ4Qpneriv^+d)D z<369Kj-Tm`vBk1wx+p!Wdz5cfe~jkHl*9L6J)TX*0p{BpI;a0>4;MevE+WL_3d!)) z==hnit6*n=E9@`$IpC*(zXJ9a@Hypv^EpcSxq1vcZ^y*dlYp(wxBlf4<^M(6dx*@V zy#*G#h?%E3Fdl#p#)ICX|-8OQ2rqK@+|U86a@TB41Zd|FOs5p?*ShT7QX^t=Vxa=BJP`h z3YzX;@fPRtPw0YwZDSSRpGadH#y6XvLb$P=}f4dYp!SrBdfs zdEO5K&piZ}pR4rvTS9nC*PPc|*^WP?zHiavTi#uH{7dE*rAJ`$JZ00PJooVWVPAXx z8K{R}n$V-x8}x{ppkE67UbUp(tiEy0n$E?G?~Hw={^rh$cDRRikp9pwZe{jQkDdx6 zl^)R_ZGL>%9;tW_$9t^D#=~eothS#vQ6(~IpIRke|K4Lm@x*h9zCI)f8@D}20i{lz zyjQ^qwT-fx-(DDFdOqj$Yx{hyto`z1V_%7Tp`YraHrC8&J3B5fpL^U{mwbKZzVU+T zYsTkJ|MI`~p(Pse*q2T|Y}$_14@|3@Qd#ol1Aj5C=;$Y=t-ayal0!bfPf6XB_0wkU z^Xq9Zlyyuayb?ZtZrNoDhjBl@=sE@eWa9JF-aG8+X)o>CFzt}f->A-+mT@^{+(o0C zrtSRkjS6P`suS*2xD~BmNu+$vG+#RTu4(Vou2s0quc9@lgzs^Fe2?iLe*a(U{tb=0 zm8_Zm*tAc2f1P&IxVNS;Ty?@xRQAe}#W|~|pSWcHjMwj8KjUM6+O_nrH7Ar_|M2Y6 zd0lf#i)J5RS~UKI(#L;WUi#eks?~4*(~d8F?a_+T@z<1>-ny}>^zkPvOON<+dFf71 zA6NRNCu&M}+BBoI;KIt%k1nYyy>UXUwDS|kmHwr@qV%1d($Y^~e@f}x_~O#r?^{ti z>3bKJ#{YUr={t9Py>!ycUo72YzXhe|_s%XQnU>D`#-63SzOYB>Jv;4H`tpN&m)`T& z@ug3m`H9kZY7Z=}yt=6LwLK3hee13xOMid+QKftRxukUd8&gUbe)jOv&A0Ad`rOT9 zOMiIC8#8|LKM%~9SF&`*qS1fkW$^BB5=bin*Z*DrPuoZw!ibfC>;JC*kJ!fTDwb9P zuK&CKpSF=W1SbI}0VjbGB>~fEGa%6{~;#7I_UB;_j59E zZNRkw*9Kf0aBaY~0oMjx8*pvFwE@=#TpMt0U}U!eiB*MIV=i^_aBX1wYXj^I%-Wx5 ztYy`U6X`=cd@!W1C>Ve6ok7H3LOiCP^%9Q>ahiaSbl%)~i<+0LXyJHFlW=hWsjW<@ z*fi?z3l>e&@qzUBy=qUB@06{6Qogs<`)c^RTP9D=7i&n(d#PYvuUbe5Cn#;J@B^J0k12sif?`?qP8B-v z1D*MuLEs_3{NscU{Cv7s!`}o@1q) z;OEnY<68j_bRD|AfFI~Q@4Qesfd{&Nogestt}r)D2RzWBe}W(AJnu*96mkI`=zs@) zfD3bdI*y0cYka4$K!4{E_~;jAyW@PB9{7ld)TZgd7wz0^f1n3G=nE?JcM`!z>lf`G zlf2YoN-HDAmR=6Hepfe-rHIa+?259rX2 z%>025`ZmZ<)1&<0W6}dZK@a)qa-jU?xP|h!8S-n>bl{6|D>8qLkNj&-koto!=%exn zKInUqzfPfla~wqZfe-rHleGSIIgoD@J@7%_dxp@1FUpVc*_1!*@Nt zBVUjdd^1g1pXxiSnh*A|m7HMXH+VX#gsQrk+cyyC3bi!@q#-oGYphxHe`c<$k9-Y=> zFdiNB6cvvS_mPKAl^)G_bO+LRRGH~qWV8$vOHOq{4)=U z%ff#%=^ZBZwhJfbW34yn5haFx72G{m>+OXqxu37$!m9BkyF#s}wIDW9*unPuGLAEg z9I{F%rSG0|i{@YQkxq~37bc~hn~632VAf+X6&wBhS9G39OQm5$9iw#0eAwQ^xP)=4 z<0U;#>G2DG8rYpR5${JZubx5*-Jd26u{WPnx!H7B+aUHP(vk~hd}{snAjc`q2kqO= zkH2rp2ga$}3|Q_){l)j-)i@RZ8qv}?h15Duv2`dGqRG=H8^(b=N0BU9p5`&q?M>(n zdPM!vP86){%^No0p69V1rz&_lb&5**?Lap%&O>i}jSs-MFIVwb#;Hq*2gk9dh~5-; zzB1=W>IWP@O{Yih7tF;xnBz!1U~i&-Z+G_Q5G%FN8_VOogbE%#doI{x9LKngalEHX z#&L}Auq*N21pWi~0hUUA?;|?_U1){ z8^^&1{l8!bOMKP%udAfodK~XQU)w1d*HJ5b`kL;KVsB;=m-9Dy`;auUu{R;l4V0HH zew=U{Y1XEE2aMmJKyT1v$MMoGpkKRYhU?WGX|5Pq2ahkTN9YZD?AQGp`rX!QZ5yk& zjNBjj$K#vL|06wdRS)JyJEu|tMvE^ zDtn4?)%HD~aW5ZqoabGr_|WqoGoa_c-{jq!$G>ELsq~0>%BDvnCG1nJH|VkTF3}_OE7)gOdfu81ew_%8->u*)=py{p8%d6Q z+#-pGZ=Foj@ELZ&nd?GmA47?EW)A-}VIZ-MRe{@Te6!g#qQQ|HHy(O}9x+a%Uy6*T zRC#CL^0+Urg9MIWvEdH72!Gy7G(YfhyCexc0>*uP8;R26IMP`T`CNFL&KTnOi@ZDN z2NXYz(j)gp%u~^N3_oXBnu(v$FgZhigx;V>6d(Epyse~BdgSs!k2e1eY!AO4+qM=9 z9$$M1`|HvjtVjNS2Jl}X0w&wB@Dy-*6Vu*AUJ9gh%(|Q;FAAMBh#{3_nbKClaqCgg$=TISVS*pY?e6i&ySj!Sp|V za`)JC*Ujx}zU#CuDnr-K6K;>~o%>YT%~K!ZGL&7u`T9qDn6w`Nl(m7(+Xg34px zzWRdh$#bu$pfXf^?$8^`zFbfgdu7#rk6yFaACFn~hnmjbd)Ljp_SxU4@=m__vh_b$ z_I|~4%PZG!{>R$xeR3|XTz%c2*PZag^2)tO-CE9Nke{ku_VN%iZ^8>rN*-LFY3D2r z)#tw7zaFYj&)s?DsE;Q14!nD51@R!6Y+uLMe|)cMcfnd`dM&88AbsZN@z_~q(_$qL zZ|r>MscSp)How(*5w$7M*IamH>4&dY#lG?Uqn$S&{i`m%Za$Hx8mGXAQ|`Y#^iYrI zo|ly3<>lvJrI^%IvTmMv z`stbQEd_Yz<>ieYzneFXF8Srj)t*|a)65&!>|K^e_1b+BSywb~Z|}$Arsjr~Ek`x9 zHgBJjD6X$tRJ^cwYF)#WDfPwmCC45+c~S9{>5J;?8>Sa8JZ4ct{j`R~Q>RW}FloWm z;^J2N9d+)Cb4HY`s4vY){QR2v{YPKZV+3F4{x@ePe$v+@{-#eaXXUYCPx`7C7-NKo z(3Kn46&_zpT<7tP*RQ~j1iupUg1-s-mEd23KMCvYfX^x0c|WG~TuS#K!=LuHsv*ZV z<~H6m=18`qkhY#I&zr5+4$Kb(yBU07H{1Drrb@~U|HB~s5m;Y`G+>|j-|uGc!NB|x zr;#jKp5|fmN0>On5l-k)w*%-Ab%A~roLFbKT*k@uswohs{T-==em*b>*;*LEvEGiuEA zWPW+U>!9a*tps4~*c`zdypXalf{$G!N&1VjA}uQ`D@;P#jxMaYprx^Cd31%>kU;r| zSSyIFf>5}q&Og*I_Kj49`<7Yw#etv#oI^cn>_hq32KhSZk6+Vz3@IY6j^8-JhE}S3mKnMMT zpHDYFR6pQ>4tU@PxN@vd$737X4fc8$&5`y4eCWw6H`kNtfuEo+*X>ZZN65)6e}Z1) zgTC=Zp$A`-KPrFVgTB35(`&wKB3%Q{D?MC^FY9xQ~h5VxEfuG2K zmZmq#A4T7;@j>4RI$aL*C$pWS{J;l&k=7gdLhe!W13u{cF#hOrAm1o@;Da9W1z+Tk zdf+~npKX7PbFlqe|8#C>4hB8i0ptk1fFIUc^O~T&sAoy6fn17bWREq_(s;G1d6_2D&E-~*enc9V_Y(n{eA+y6FgI|5FfE7m;A+VyV`Ew5eIX_D>F z?;;1jcKu&uFS0z%W2CQLhu)w^vl{+;ilk%Oewq)~@gG^--*WJ_~-7?a%#UfBJF1_@{+VxQ*Oc1JE1vs73BUzY6A9 z1LYHZy{Xs(qQ_vY0q7|z)&TA!51lGKnz07@DAqtWdJM)Iu<6mx%_zw*1bJNL2Q-Y+ zBRAH-F7!;eOX67+s@k$F$Ga6kAjSNN`4aOdo)<8$V&2639c2$;{w$!e{!#j|FTFD7 zyQ)04v8Cj3+53gG_EnkZ+TOFxcY%UOoF?W^%?JI}%5NCO8n{Et)2#MLpFg2D=n?ft zJ5jJT*1(P%_+B=#1}+8jP%6GNGuFUm)T%EF;R#@C<9sLBFK#DYnund6i8cIS?vEU6 z0R4Nr+xzuzjx~UB8{;@y490gnKbg;Ccs>F?r&v?Z`I zZM3Yd?R|f6<2d-B{};S7Fn(O_ZT}d#Yipr5=&|=*JEZ_s1GUqz45uLzRY*3R^wgFIeayGX&= ztgXG=GEWkJ^EpVZt-T_z#Jj?RpGuFshL@jbZS%2kQrK z`4;*W`IS`BuFZ9jrRNnA+^ygbw)m2z(=9%Zf3{Yij`uGG&y*g&N*zV7ktYArtzLop z1<~Z(o&(v3ben%s{ZaIoPpiy!PB0xw{SkVD9#Ki?7x1={M(L5uhyKWRW745*NdNk_ zt;NQxzoGp3etGR@Jg%~J4Ez@ejcaCGBi;Pk?&T(zs5R2P4}31x_q9=-Z_WBZttqB1 zTK2bZG?e}E;4`|I$6sS-KJfOe^J8y+?d$6PO~pGL^Zx65PG0(hH@kWL6w@;eoj*Y6 z@i&PV(=!dj%=bOwwOQ!n-+E#}`T0+;>%Ok{k90pCd*b~yv5veOIGJ0|w6_Q^jv?YHGrhVt@T4~+fu zw2rcUuPJ=s_0N9t$cwIOeC!jAPtKhG&)%}XA9~^glYV*Gx-U)tbHxp>e|+8FX^r&E zyww%=U;FmDgPz#E;&96v>A}i_>+`_<-wM@dT>Ra#V13TMzzfyq{vWJK)Q4oYT^*UO zhqmEy`x%_D;<0Owtd5<%datg-&z#VCTGiZ6Zd2fS)%sO4C=YJeQ|K4x>w{e*jpx^q zxkh@Ye3p^trClSvTPACycbk-})<{=3EUsI%v_)8Nhkv*CHPQ>~RxVkzV3K$Ka?3!WbRYRJD7EC zCH z=z4X2;0L;-b!{3Cbd6e1;OEo5s-6PaJ}#t-zyn=tgOn5b`gD^*bie~$qi!GI2fE6! zVLIS}u3yuEALwYcKba2xH^hJky4CekPVfU=<(M7SY6#R1c%bXhdH_Gr?VA&BFTev` z{vyc_{Cv8wJb?$gHmwKn^XbC%10Lvr2Y!IPF+Wyam+Qyt{Ll}vPOI&7>5ssN{>}CZ zdfQrK zb^-m0JS^)( zWEg@x&$8nluJ@Y;b@IimI@*76$L^o)8nl&Hk z^C$EMJ)-{5uY#@XM0el7_p(_hDse`T15)w*nd?NargfrM10|5!+Bn}1_KWqTOY^XE zGqHvr%>9wqiK2hIb)tjQVWE5;Ao3dl7`HKw*S;*zK^Wih{EO#6JXe{|m0ZewNN@Zc z#1S&akh68)oZILu$FsHZl33lbyiOEp+aF5Qe&zPk+@tw=wg<*>@In9Ye_&wqLbmz; zXYfbvI#K8idMtTJ^a%YbdB>lt61nT=+4$vQIE_-cz49UZ9)Cf!J+$vpr%C%BIVSnO z^vxdrB_Fmn4lK^+Ci+R_7+jT9xXG#}+!;Xg2kADGqCY}!&|}|p>EF=rHdA0-kSIN} z4l%yjqML{YNACJU=nZH&;r|G^$n{gL^iKibFDp~!u(r5}2F9#n6%qM{EPMrjt1e^q%1e^q%1e^q%1e^q%1e^q% z1e^q%1e^q%1e^q%1hy*)u$R&K3%4tkyUIEVI0-ljI0-ljI0-ljI0-ljI0-ljI0-lj zI0-ljI0-lj3`zpo`4i2UOnTkp9_6YG4CyPOGV%ILjvs)1GT1j$)GPaDu%8C|W3XQa zaR?As08DwGFXCkKI#vp}=4~1!YgcV+U;D4_IE?qlAZ?r}>*5{PH}+fH6oyf$i1hVQazpL6*w{w2wBG`$b-%@?QTvcIve|C|c}DHG5N_f977@iA zR+q8g0(yfUi%LX~(63bL`?Rk6`y2cUP9gaH0PNqfopGQ=KK@|qAc)JI$Ngulj_3TK z_f`)7gf95k*2ejMFrIVtI{ol|iy+_OdJa88ZwWo>{tf*~{TeC0dR{ zu5Vvr(F@%&;|Eauv>DzvbNH9cH%gD(ANjYv?zh0W3_U_}(68qeR?yD(D$iR+db_^r zb8C)#{D(VTS^eW%FW&IkQ`c7gn#Rmc^xJ_5p(l)^e2ovla$oizd*0t?@o)2K9W%$h zyl441g_*~H6~}MpY#NoV9x+eZ`lFqj%5+%&;r@6PwO`D)Z&7UsOnW2(DWt{RHV|q? z&sFNOX+x>ZtGiv*M(>mWJjfbxY-H_J28lwhLhg z!Y)KyO4y6oM~(PkQE|Sw1iZiLC-mdE7^5lv=e{|Is2GE`v9_mw%M`W?k@g*<=lz{5 zc3cM4!#o5&7{3~iweahnM7A6sunPyV4|n4qi5J_2IQsFULbmeex;Txs4pD-xL;#};HK^oaZVwoXKk-1S(Gl+yQF z_RaZK4*$ZK45iZ}&r?^CF3rQv&BPjhFzd0EijDd9bvn0*EvaHO{DqF%T|ZLucIaXj z0DaSg4(g#)o&t*M4}QNR9$cPzbzf{KtXNrCxwK(98DxdCmMk4oYpiOm%&e7h=qqC@(Lv<2x64)Lj(A0e1$`y5s z8de^)kVlQ}p~|j~P69(G0Wtu(*b3kST+8Vs-^t8M7k$c_I7y+MzSqeYL zz~4tk`JHUgH{T9L3 z2$DBZ3+5IL@2*q+elH*L1r|9E{1v}b==-uI-cGsv3t;I}e*_KR!+R_q-|T)TE?n5} zG@|sV^#(m+oQ8fyTJ#?I>|2!H1U^XM_!S%OpbHPmMeik^km$Hw5)XO=jQjdF5~as+ zBvjvj_@MWTygTRz6hDp9Bi<{g)?@g+@<`Gn^aedbVvSnAfVY)2N{^iu;-O^kJWi z-SwH8vLD^}PA9|H=S-biwCTLq4uAMx74vPy|6bF1OzrJmoefv7BL{Pg>7OK;kG907 z5_W4v4*W=Q~`6vULp?P2F+jjPhxJ`QJ_|L+4L^^;Bo=Y4PsMUc9n`%24s` z_J_)TaNL2hLmu5>>cWpN_CigQfCZU=DS`?A|*{fq1C78Nfno?6#1 zWlDW<{dW0%S^7pSe=k=3q{;j5V*_14kB4$Elkdyc(3muo-Rm&UvK*!&g<<;594|t&KeO~edKcDU~ z`sSWb2RzXAza(_v=hKZ3(E$&1tIfGClA?-(Dm1;0rmK`T;%g6Z9twJ@`WY zQTexPe9-sJ()sIhAb;>dy^uffLEkuA(`&wvdsO*>pP;YM<=5qa{J_V|zft3ZzVAe# z2VaysiXQl&Z#+fQqa3>3nf(g&2R`WAt91EwIUv7C`D=X8_noBk*X2NaHpda<4}8$K z>vE$UppVSokY7=yF261Z`bAXzfsgz#UZWhSKlmi+Pmk}Q$9?cc`EB(4-URak-kTJ> zA@cAoL|`4aPI z&mQu8g?Sb8CgyS2ai%?m@xFk@`bX)PN59IP@2c|H#+H)zE-zBOO zd4l;9e9&L5{D#r@L+{Y?G%G&R=TGPjdPM!9UjAue z@g2{Pc#gyK6rQhwrF)y~6t?$x9Ov(cZq99wd=BdS%ZDZW+=H|?Pu7pM9yqvh9DLCK zJEjkeU$9==?)k`FKL)))kNwj`kI=8^B(GXhJkORIaB9tQd*wqt&vx%ewDdfSH0gPk zzaP3ecOUf=y5Qfaah!2DpQ!nmIr55_p#2p*59TqP&S6(UZ_s1M{-Q_dSL$?DmFKNk z@7Isu@^jSl?2B}f=Kwx#vdn{goo#bIBJQi_*}!uU?HPW>yE%`4LKplSrAO8w#y8u1 zEE*iS>yDr|=n>;I^eZytb$<&t`0^w;zDVhjw+@x)8<$(;&bP1*Fyg*Nk0ss}dHmCi z14)z~kq^&PHa!YAUI*wOBdI?^Z_p!Z3H=HjukzE|x;*bClKq{OjxPs(s&q5;6+U>K z(_oKOdPIL@d&4}~_AsxF1enKF{(dOzrcG3-OxkDEyUkHVUmp^Tjhp*^Xh=j3a1wA5 za1wA5a1wA5a1wA5a1wA5a1wA5a1wA5a1wA5a1wA5NGSpKGKT$*Dbd|cCjln`Cjln` zCjln`Cjln`Cjln`Cjln`Cjln`Cjln`Cjlpc?OXzx`4ih{oq4=F7;{WkJnD6idz33F zGNi947=L*ECC3lIJ{jzr!F}wf!TuQRm%%A~M>4Oi}1@}HRFn*cl`=7-dx%+0Iw}c)yiXNd~ zCHMG&)gphrZ>GCC45v}f9(rZ9+BbuE%Se;<&2Zf1J@fWazhuU?HqKb+7g76WnBz#^ zH`A;220ga@TJ#A0iX@}=TU#=QX zvHk9EWMsdx9@#nuKH_Iz)ASOnqy|3+@^wV9+p89a2lEJI1=d9oV-Ulo0dEm8mAN%Lp?qAJ0 zq4Mq*?pt@jQNOOJa`CgJG5iPrW*RHohR5w^a7B;D&MKQ0D|vWh=Q~eb+nKldtxj%J z;5qfqCuiUs>0sk$|I9jkn+s<+0eoE zmImTyZ*Nss^>y*Hy+rJ6j-l;0f~4_J-&4;~OfwTd>1*+r%^DiY_}Pe;jriFpE8=Pc zMmlfq>1PxkU%#Yf$?`#k#<$fAdDznSMv1H3|8+?VK6{OdlU*=D()^z-RdCO1;rOT~ zFU~h=kGY8(gxQ`eqzfnq;wbm(as_ea+=#!d@j%!1WvK`Ff!>Ut4Lr~leO2g^^L>@9 zO+QXF@Icq2gX8+f2weSxl@&ex}# z6ruwj=<>fJbl?ZN%CVC|aseLb(4N2#boqH<{Q(bj2|S%|0?za0$?>nzP7(jN_bh3z zz=s}9IdOYqdf-G=1oB9Dg@Il}9NudW{$SW#;;Df%PSm&?Hf&9S-^-AQg z@j+iZQRu-Ja*rxM@Il{pl+IuCh5W$B%pdrm@73c4_<}B~{J>Ape?pgEmjnIR>{qCN zuf|W%L;kuPkYAMido@1j+YXid!58_XT_@FF z?-v<2ZuKUKpN+J!NWLrCxX-}86Uyz0<7a~p{6c-Z+W6H~Nx2bk>^1{Nt?cQ)Gk!LI z-GJq39wR;eC-eqAqFq40A`eUa?0EU(rmUi1#Lv#L$d_o?_DqVOotwA6muta~^6zoK zK>Tc59CYC}a^q)1Z_p!j0sSgi#mjze1MYbYYd!vrE^g5`IF>vgQSq}==`j#Dj{NNh z=j7(`PxuA@M(HsaKij59JGUU`;d##ED!(|uI6ZRXXLHQIQAzJe(#6lle2Mw9|5cek zF|T6Y#5@i=4)Z8l1?JCVs7<~?Kk^q*q~W_&d2DU6_3mc%JcqP>cRhc8Am8-`-%L}? zpWuW3+Gyi9jN)f+(DF3pFw*Bw=nZ;A{h?n4TjOW%zJc#$6F>VZFb}2TvoYgmUrnw0 z>JXj)wl>apg8gDW>C!yx+)S+D2XlYq_}S>+E`IjlbeJxFHpXp?}R?B^KA!3X`nanFJA zv*)s{T^+gW0HHVNvB(oWLcdBA<&DO=ze)p6tuJn`e8~5pP9|E4pB>j}(mFtnpPf&u z_V|~4M2+K&$@xUh$HFbVmWjH>us_frp*QHU{XlK6h59AO&;I^;ztRN9FUt6N7V)#+ z(faiHs5A9E8+Z;<@w4Bh_}TAT@T2s|I>h*9n~z8O`Z4GYdc-&l{ff+aJ?EtxeEDr?G5u_+rzvz5?~%zIes?mrcG3- zOy-NIcbn{5st*aq#?8gg4vEMCP6AE>P6AE>P6AE>P6AE>P6AE>P6AE>P6AE>P6AE> zP6AE>DJ8&O#<1TpCAz!mB;X|AB;X|AB;X|AB;X|AB;X|AB;X|AB;X|AB;X|AB;X{l zol77)f1)3AM;40eb&naw&&EC(?3;n;v7ZL}V-SA;`ydfl0Qfsl=7^uo>sUE1*$26@ zcGb4_wdVwhpN+Kk?UF-zA5GtDgWLZIK3Esr_er;J209uJDfU}HZwWoFmv#aDs=9Pv zRV{Tw{Op-wI8BBBruU;~9zXko+ZP<5z6BgD$3v zpMAR~e2L_2In=(HaWqHhxXZNv=|S%od3Vq+8QV7JFjg>rwr$_cNZhuMZ7ECQJ zZl&K*=dKu36yI&GrET+Zm(M(f;vJHy)q9D=LAi%Sn2F_e<|$`3H80K1^JUXcCVAQD zqOLVBI&~&~{ygK)H-#a>Tgz4K4Rx)M<_{mwN0Sm3O}Ob;6*s14ii!i~-#XOERAAJrN$VN)LwWLR%71j`#eh8Tz1yqf zei(*7@n{?V?Wdi}fm#_(I6^N4EaJ)0g@DR2g! zUSH*T{M(6sJ(ZqUM8Dy8u-?xmT|++0wcbrRI-v^79e92(~PzY@a5^ zL#+?!2l+v7t7nDvGmmV`<>$0C0x#Qiu=IX@G9DJ(Z0cv$(x$o=A1%wX_HX~2^pnUZ zXt(O;hKVgFKtC8qO#Pr*`88qv40gO5EIrD_cEXljbN^#@0?LtX%5pCuBG?&U(Ds?h z2lE-`FX#z&M6M=ae&uwI=RW@SudU~^O(pN3G+~;gaxU4B`P9#^nlYW9Cp&dHdu|sv zio9}eMSZ>3cvNxmq$reh*HzU}zjVkc?knGI#~(Tl z-+sO8ljT4XY&^dMCmE*iS(OP*5NELG%+bsX*T7qH4cCFcr)6tZz#VwX@=NB7vPfCC z9r>YLrp$01sqOy2W#lNG1e^r6FA3y$J8^|$2hkt?W)dICctw{Bscuc;|7Q9ArUOVo$elL-*)Evqw@z(QEn3f?f9?CX>&hevDMT5Eg>Wemq z%Ex6UoWvn8$5u`C6LhwFR#T>!-+xT!^gmG!S~umfaWCIN?Sl{8 zr*EBTI}~;&?9lvs^Nwb_4)&?g`G3g{{bECN-8qABt*Is?_L|Rk0B5RxCD(}^x?7@! z4uDe%lHqAbne8Y&?BthTM$&(x@KQ7)cgsn@Nx(@UBmuTVdTAA zWImEp(+=IZ<>Ia*7HoN#)A4m%9_~BU*`Xpk$j>&v`4~8Z9SZqH*`Y7ru|n&nJa*;! zRgrcm>`vIBJ>L>L6!t0dMOrzxa%s~-ZxHTKPc>V#UGN=1s_Iwr3ulL>wvTM>D*2kT zLz88aom>adf*pyIfRn&>DgmAW2Wy9VhW!}r59Rl$mV@cl5B^Z!wo}-Oe+oM^o!|pFl`j;2OV3N#p?ZF|*`dBKi^pz0lGAi{X!~hmhnBo?m0F)Ce74uWEI->X zSst)MA-}=ep|Cq)hZg)q>`>UJW(n91UDfQ-d-*BmtxREMg8FSJQ?evH)%FV3x%cvZ z+hG|6`=WUc7CpDuw)~(vXU=tysgK2HutSTq{G#m8OyA4H?t~rM{~hfQ z)qc@%?)*N#YH8gC+m1i9_j>0K_3cnw8_MjO^M__8r)XK5J;lLJ0!{)>0#Oq1{h>SQ z1)?@Xk^ME%@8vz%kvfxTe<*DQ2^?{(1tt1&=8;$*YLr3o|4;fuF~8gFP~VruV>chk zscDCr@8#Ri5<9f#&(0s3&D;h%6!MF*Lo(d~!(WoAEThh`?HXn78#2|F4m0Vjd&Qvv}ybfQSW zumRP@G4wae4!v>B-rD|x1f%WHJ%AEUY0c*UGLM8EYRt=uf0P}1>-i_E`=Hqx@8vPS z+w4%WF}Xs?_NP=c9!qD3_RSYNwBV)Jj^KSU+xHPQ2PR7eb|~aGSUVJUC+yIoZm~mQ zpPD6LJG5ze!(beus@bCLn*6hXRUhbBzxChCCpXWazC3T++3(HL3-(F#95C?wdbs!U zzAU5-24V9&S$;y}{yGUb2{;L4A_0y{_3zy;@B0rEZ?NIZ*e7k!uFQQAx&z$QZ(*PQs!VZP}qU_L2-^;`9gdN&? zme`@NPs6#Z_wvmRbt?yBhz_Y8+S=y)q0v4%Tbr_9bN*1fTr!uf*;5?sB;X|ABoHM5 zo(AbHCHp(l#%;p;b)8AHKU7)0$wguNP5oep8f8%SU8Z*E*6@d7ez)17qZ9Sv zv73+N)U-p*_wq%b5r1g=Z=F9hdae`c2LHkih5VxI&`jUU!|sF~+7TB!6!vK_Z$7V_ zTV20;wc0+Qkp8qA}L;6REMC!|_8gzuW9kU%tuqr`$_^FK_xo`#$UT zDTU=|&UKKjkHu%OLm|H?J2X>&DC|zyp{pCj4uyRh&RyA|&2{JVe)+-0vFGQM0?Ug6 zGryX@9#9mqZbR9j{T*B14o$Y1gSv8dsHw9c?Cj8>G~Bt9fRlie087B%FYk@=)Hb5z zc_yttRQmxT(P)3DjWCf^KOze95pa1wA5P@e{h$F3(yj7qUzp5xdT z(T{C9dUqcBUXhGTK~dW6P{v4ShX%Qr=PBOHD^xY1)7enOv0r_|;p%&_utPDw+w4%k zPCRz=k(}D>&|n<p8kUM^}ODf#h$GFnoe()6f}u;sqxS*?eTe0uH-Z~P)qO* zrum!RoEqVO4Wex)=Rq9>&y%aq`YE8xkRP{8j88r`c=&OOq3^Aw&%RfjK9l7SJs|Zl za0Y!sei`di_uH+d&!XQueL_dk&qqE6&Y(}oFP%Q|y*>CP;HRiPQT!C}Uw}VS?WZ_l z`9QrCdf4#iB5=++Rr6QJkDQ+(x}Bi^r%#=qBE5`K%Q@@z>j<0#oCLOC3D6W6j~z$# zcYX@L5%jf%{S=trVQ<22;Aan<%ec%ucnlAx>HHLpbKSZvks0J>n+JUioUy&h-+hMs z2J5GQ-r=WUpB(*2pU^3C_EU+y5$&h&->3RC!Lx%ceu}n-#h&c{sZMXP`ze5jcA2f8 zB2TqmeAg!)`^%`QUHtp2{uR0PgaK9A+N8Z*aJ!sHl#m~{OS2u+Ec*ntt8Tsb3cP)v z1#~}9-KO(Fb^Ovj@mau^VdkWL7ANtBvu5*VX7G@%t!TT%`7EN_iLLF}uQ{KE zT`rl+HnYa>u$%;(1e^p&0%T3aW2e%I^I7=qp>0jrXMy=0_9pxkL*=vRbFsI4;Vb`u zZ5|Au=u@^g*=GUy4c2D?y$5|3{@ly^s7_G+i+8`&m5B3^&S$~#lT#fB^Gol596A6=B`C zUK;jOV19?aIn;iNqR+dv6}|?d=0G0K<`n03gjEy6C%(0%AB-5v&y;} zP$s8VKgAnjPqzJ5(%R=E{1h4w?J`?GMY^>Wjjmk=6qa4P1$*!d}Zq14=H_$l=K4tsN`{Sn6C+>HHLED}f4zPHldQ+C9Xc?EOgm69u~p3_?8D0uSwSsQnbR zE*>L9PHB{F7C_Ob@KZp3>7Ik2Pw0DV>9gZE&hO-FD|>xHewpeM{dQ~Vv%u}?@zpti z{t5Y|(G4w-w*CEFI+Se!o#Uqn=nvjo%XdK3RpJ?sahWwv0JeXB4!n@!`2q7g>`jz|^F+Qf z9y2A6;o(#y>&G$NxaH!m;CDb8&yYPJ{g1qMg!}G7)Ep>M4gO{Qu%80*8>pWGb|~yl z*r7Eq$huzGr@_4WymIdGOY2s)ELl`o-LSZ+d6{`X19(X7(B6xj9cs6WqS}=Gy0b&= za>-n_8MJ(d;w0cC;3S|Vz|)}Ep%4gcEWn)d_vnVg4*htLsejIP8-D64%D|uE1iQ{ZQe(BbQFg|~i2KwGw`s{J~go-E) z>M(d7K+&hrC*+r@KGAQtmOk5@J_E`M>M(d7Kr!?Q`K8k*-j~5I0Y63KCh=3ie_`g7 z@Kc=Hv}AdUc{d|i8B0kPQ%0mABxPImf9U)a(fvNyW>TL!KSgT!q?d81Z92e7z)8SK zAe98jI(B{vQ$RIWhW!+n-(hd!*_7=EoXgnEoOlcmr)m8Zhr8IlA~VR%HV^t3IOFFB zwZBZuZ?Jv}=zVMXDZ=fA{S<{22dl~i>+5+X?}GTOd1^g25Q?$M#ehT<60)mpI#eeCCxPu<0?toi@l*5|`#vzg!`_75FjRhu_Cn{U@H=AE z9Oz@<41Nm8Z?Jv}=zS>t6ufsI2e%jBR}sCQqPIZ&68(Eh+OeD6PXRo%%c1sDtaj@u zpgKykYnQz51M*Av90WfF^u4w8+2Qm#D1AbHnd%e$c5CUg?M=5Y%U5Xj{S)#_r%(7P z;Fo}(qGR__M|0dd_%Hmj$XVswSxc4<@Pk5{mzpm8Im65$V_5kq`Zqg2Me;b#GK^|F zd_DQT^HT)nl`NmIJZ<-tP~9IV0Ve?`fea+D8{z19y`$uO3!vyz_$eU2f%++6hr;fJ9lH8&^1clA zsaXQCLklaK8|utknZiSAht`f3e}=Q8%(jyq?Bti7yfW#lnRW<==Oo}Hu-!?3%&557 zhiUB4A`%VTbQC{V*?HlyCnz_&9m*JDv-y^rrh@&6G{`J*o~a!w-;EfY9ol|Xc>gix z_pN1zHoA4a2|b6~Rd7BGpy*TBp^)D|?NH{!anhi7ye|v4_2m5dO7Q!ZjGw2`(8|XK z$Z#!i$+PW0ZhKe!n!P*f_hotZ_hrCCyBzBGWwq}*f4r}&U|S5H`xrRm_QdbYAis3} zc*f^AY0&r9(r5oWPM^?Gw&M)z6Y|ScpB=j2ZY_QGyyf&c7=1#1>GTOd1^g25Q?zXn zKLz|3ep%#9{1iu5H#DqhSnd@UPcjkG!$az)Xv=qgis*hH9Me;uJ3mEg`J|U|`iAc? zoCKT%oCHJyJPpeGvN03ot&Z(kil4Ox8_%8Jmqo<3X8(lx;Tu9m8I=Dbg`YxwcSud> z#0Y*0N@tFH`Jm%;{C4uMgkU3{d+-}Wc(3Jocz(eA4to>j<2>g!C2M1JNbS&)an25nZaP6AO9@a@o1Y2KGb+o8&a z3}j$`U&eN5@ZCXxV4Jr?F~4s$JM<8-LrdOucBp+`<9RXpNZ6rTeuK3`VRym~?Vqam z4`{!rS%S*BvzzM{W^H>0*$k;2+PmW`MZDj^*-?YDqn!K(C%<3=cjrz5P6AE>sU^VP zym*XlOdS88z3+gEB744W6j3n)Dh31t5(LE@nC`+HG3T5`F-LSo1~3Oy%mKwUW5SFu z4TuTXoO4bX(KVqWepUVY%>cr#Zup-)-)}f)n3>D1SJn4bSJ%Am9{5@xe^1YUbpHTf z!!+jjP)A>5ANp7NP_EzK?L&Fr$@|dw zqO1?){b}l?rPp;@Hy+v_S48{asd?r3=UdW$v=5Eg)1$1h5BgnI7?>p1KXEE~g^8EPzZ}p*$6<8m7 z^;csb`d9i;uHWD7LwVoH`_QYUSs%*#)AX5Jr**Sly&&_CLT`ph);p_%8; zkM~x_KJ>@6%2;nhf*W5M6)-AbRN#*l_`mH#%`y(=Ki`M)=JVgw@B6tyvh#GWt7V#vh{sMg@!t{J8?ALT(~KY5b*L z9-8WV>J0XObY7m-BmV#|*Dtd^)OL!unqwYdeq}9w9}xZU`Jwac_+9b%4-I+W$@@@8zai!6 zJU8!8nVsQxoz|YcMtK|F|AkjdADZLv3&)DjsPTq8>M{Gp7IZp}a${}1|5#YQ=x<14nd z;(<2o!TQeh@BgR=<^7`JetCX;&!`XOehqz%R*5(D`}BQi`tO(Cq~7n{Xt8lUH1qyJ zndUUVcpu93%d8K*vUa#SCmt|2ZcL_qDDOLYAKJ0pP^Ay${b?HK_y+sXfj)v)diZDF z|D)@n*0YW4p@#gSX-K^!G}t{5#La_0Wv=zn{VWEbWbdH!5IMz^DLMfDVI(^-wxLm~JgnA<`OVX5ZUXxpHN- z|5B*!I58-xr$xeY)P0kCOIT z--oKl_l){b?w1|+$e#C1hUfHsX!`X~uU725e8ddndMMK`qhns$xuJLZK2+5&vp)1k z*F$;V$@|cy(X0>U{b~9La6Oduq2ts4<%i$@qkU-7JmY$(A%AEN4Ex~sule6N&yaJ* z^-zNrER$2ePyhOR{g{pMw^0G30!9V?T!E~{>qFD^qkL_YX~+9eetgfU4>hPv^_hOY ze@@?rezzW~es2@A|6l)|{y4|qf3J(a4^{QctPlOs^-$h-@;=mhEbBvgf0{mmI<1?J z={um`f98Jqt2>PAp@u$`=grSQ8`ndBUbD2ir{7bI?~Mu=6)-B0nF49oLy48qTI3(! zrzGgtF`1W)*F)((rCb?@LH5dn-=~x=24#H1dZ=M7l-5M?C&T}z^pAdjsCsVWe>6g*tdsTQJ%Js{v5B<^gP~La)J~ZJu z>qB{enm&R$ty>Np+Q+McXRiT62lgNTSNc(9J=CzKp5DU`zgKcE>9Da6%{X^5%BRdR zV;`EiHb18C59h6sXjH(c!2i4g|F?app=V1YJRL)o$A7gC<;VAbtq*l%=jFY27|+XR zew<5_Gs+u%AFAs2cl%J@ck({8#&p()^8Pe^1lWfT8}-wdgr*rqX+i&ij~+@N8ZpY) zhi0BXKi*pz`_LcPDr3FV3pl{jz#Y_Ef{uKL6Qzs8=`EhhFtIu7_rP zT;rNDW%+O3hjRV?ZXe3~PTq%JZN>Uf-k);6{JBo+*26~Qzf%(2Dst#&pOy46-nq?J!tGhGtZwN@2!k|=#OiavEKT;G`=t@U{t`Uz@I2UM?k}UN<_}62mIqcG<}bd z`FZ)g8AqeS63df9BZ6`%tdm-|a(r-^u&X z94V|1<^5^;+@(Hr%;4dp>y7L+F8$wr@V(N98a~VXpw;&@wjR3N*oS7GKR@1E8T-&5 z*D7PZzfVvjVpPDWfKh>r6)^Onrs_Xb%BTHF0|6g7`zGu{j8ormGYB&9S|NLj`p_|n256$6f>_am?u5nG7!u&Vy zL%Du`w-4ogC+|Z$E@yox?@zg3{)~O-z#+p2(=AGW^+!qDO!kYP8B@tUpPj}&H1qtS z9Qv_`u@C(*oif++XHwV5H7a0K;D1|z|GPevbk3Kt*mMl#4~3D@ahZBKj+eyO{Gk}& zue5!r2ad-cKlcBW_$X!BU98~f0oIkxdW zlXp&o2{Zl}6)-AbRNzMx$WNp{{r~cG-teC| zFHe1B2FF~rZxjBr|6iUT-!tk%NkI0)k89sQr|(14e}AZBN!Ew*k^Z-zQy&9Uzy4ko zeIKgomsubBqu(FO`%d16PT$M=P~M-WkAV8nVZ%my{f$QSAMHbHL>bpZ)AmTI^XJE3 z8`ndBT&s-rPQRxZ-y0P$DqvI~GX>}{$nR5P9KPn5+Tx%1e@gWIp&9g`HE;{zCTnwFTb>=aXmES;~LkLDa?QKJ~TnqFS9=M zN54Om_no{Cjc>&IP~M+%zx)~d(4oD&``I-bHq84k_M-o2A8Nh9*oS7GKa@j1_AvIL zKc-XWdh$KQ_-s_bsDM#{KT?2dP3k_BbxRrbp?`dRD2et!~wX2J3E^8EPzul1o0Y(3Pmfw2$$nPZ#24^{R1yL~9{J9!_v=@{!nd4Fn1 zS@sJ1&|&>Y_Z#|O`QD})YmDdR4f#WJ#A_2hr+>}ga~|ht!FXQYpaskH)bG>3{$4+3 zWBhGYz^H&xfge%e$Ii?DQ++7)xEb`hypR3Qo|osx_l){bgUVE&>F4|B^y{JN&&zKz zo|k9R>Gey0tmB%dqTx&4hjRTg>qCF^ygctac^?{ami3{$KTYdh`QD~6y+@Di)n|12 zzx?ofWj!>5ed31)P>D+Jb@cl8`_S(LOFdVDa3kMw56)rd3i#Zm8^8S?j<t9$5HxF!?hiJWGs%)QgU{jrRsDEe zv_1TFM$Z}jJ#!6=e=#axRKTb}S_RUqhvuNaeSe%0gnx29G_8N-o%)&j-@8xAYWp#X z9#l`&?-R|S_e|Z7vM6~U%8&0E^`V9yf@(DVeE*z&Jv9CGp^oK^eJIn8>zCQ_&cLEq zybtC2W!8uO==Gtz@8o?b_s08E{+>T$AL=z`NbkRRX{a*FKYD#=#{lE?p?};nWt3On zW5(-4zt`mFbme=9@!6<=Q30a@f2IJtK9uf-=RZH+hYGxpRENm?`q13mN!n+!S04Y> z>qGhR{om?C6Kq)@8qwN#eQ4&#yR=C|?|2`|_4})RsAqjaur?Efgt^bFPR1R8P7>38 zkmUKWJiSk_wQ{BB^go{U>yGK&ue_U^Tl&BJ-1`iM&TxR~xl1@^6bC0avW-^a{O}d}yJ=yl8j-M#0-~X3hQ*5L;Ju<1WMEU>b$7|U4^Yd@b2Z{D~ z$EGp`}wnYDewP`^GAOtKeYZr4{Lgp?x$pNL0DML0J;>zsy-O&s(OQn z&w`bjdBp}n@L4yQ8tE*VdJKZBf?ZEMmjYOZQLHTZJ>Vxr!w6|#d70V%VLeLA{^#G( zafep$QrBCW-x}{)DRt2240|TtS>mbn@eqrN@e?^ScYNk+xP6@rv$y)c6tVOtu{3@$vE2^;o6EM{`8B zj;j6(5h;GHh_YLQv~NfUddce0_YjQ*tX<3&ePQgpGW=M?*XwAK4N{ zyhm#O@$ohdnXQkHk4G4fkB`SNLo75NvwfuGpX2H*;^BES#O{etU`v?`9@buhu~a@8I+tv}3irYBJ0^-w`LfHQ^B%&;o<1jZwFM#ni#pPmkf*vm z{sP=>XBW2giXen#X(07-GLaqQ%)r01-+C$=R>=E|yro(4C_FDmK{&UjoPs%CvH&kf zyRf_M1i>uSLa{x&+!8;>`K|ZwEC>@dZ$+{t-qI_Km$dP)g3)+(VRm6O-r)(+BKPaJ zp7|x-CpA9eQG7HW#oVa-dx^%g3uAtJV$8|s-(t(otSLUuqxgtN<87=UM>%6GG#bTB zetX6()lkgjm0~7ddoMSU@w^;~N7(lGsUnN{ZaW_Ho%gdv(u!>@)9-FOuJc{=%XIedOfjFu?Ipi#J{Zpu=Z!En zZ!Bh--+OAz%u*1DN885ofW^$mqgY4*t~2>%IOyX7E0A)T1ds^X@$YN%>K{03Xc&li| z^O^Hl%q%zfcoYlIXR;-~6f^my2k|IA#$$7t4fP|x6f;Fkxk1}&f_|CKEGuby6I32W zOgx%j!q~jAn0w*;@|bx(6OVkbJYX^N@tA%rPlM2JR`knsX4ygWLAJ!BjHJAxeBt`t zZO8N@zg%b1m>x?0sq=BS9h(o1(Re(c`>3|$m+VL@?t}4IKIil3A(>woB(9FqDRp-l z){?-dy(Dn$DRv(cqp#2Tk(U#BHnws4`uw{~Q^i)h<}gq`-$VV9S5;MPw|+RRug}>E z*y(wc&%{gknoGfGJf6>E+ve2!<@x+rA zkLNS_jh!1J`eDp88pT3>w{M9TDQ2=Gy@3mPkXMgm&P1Tt+rU&_@`Jip%`OGo$%k!CXl5EK@&u8v~{L+?@R`(j6 zkxB*a5ywTZR`Qg#V|V?t(w*huV(sWP`g|sy9rDbh*DAaLs7vF^#}sVW^7Tr-kj|yA z#7KA1_R+QV`g~5gvS0BLjyztU`}GT#N~+`Wd|u$SL+_X8bAOdb@$vdh{&!?@G)(pDDiUjyWZY*%tc) zs&!c z6}OkhqnIgQC>Gk@ZRq!jqBG0NM!3DiqnIgT;?cb2QDY{A=4}_wFWIvBrR-ol9y9T1 zALQdvEVO@+e)g(grZdZDijRD-`Cz=e=$G`Pm`N$hjh*PXn5r|+XNqq!ZZE}rPp!`! zqwy#b^1Da1CBHnM@1yMv^uc&6p9g&|1P}Hu({=ZrqtE9{?Fxfi>Gir_ZUyP{nRxe+ zx2(lHg-3H~(%4GDJU7kP=kt-i1)w6@X1P3HpU<~aW;&u! z%rtLg%jS*kgEYSb)tGsG<~)j-@|o%yjYqZ=3n@S`livYo%XDV>%;O^-9Y2Uil^ObLpp$%dKV6?V}j4t6N`j&-4V?>oT@NnW6akW8pH* z9$k<)(JlenS)8iZZ4krOMp|gDKYR-33N(6s#8(h{9-OTi6uVJwV0s!(RJt;2&@03i ze-?uZZ|MfdV$o_#lSdG>@M24l*BWz*)M`Gflt@6X&Q{aB> zec@&HFf8Y;!y?0)v>+_>MVvS%+cJ6k2CVmWvg|c&$*=c_yw!R%lMFNQ6@v{Pi*XNj=0JHLvh zb_dJJ$@@U`s2%qC0K*mpTS*LyX-C-TJdeclD`v|!W}D%Sv}<>*Rt&rO?yAVJ=FJFe zq&+9zx;0gPdpQIe*4%nvCu&95qiPpKhP7=#Sh&wu(P7A3S#xq9_`$9{QD{rp;WpVM zhBa>*iI`C9h4@>q8FGzco1wFNi37jjwh>mac@~Lb_Ztv4{opw<`cfHr<<$Hz|N7)z zwbuxOoB3KXcb`t;D#XmACR8S@Z8JA%W%d=~>y4K1wpMg&hh4Z%x~ZX5w#_`E|z(3&PT2g{7Dp-$XCV!cyG5P2Jn>5QMdxyGZ6^j*EAT7M8xWpY0ZkSX6H} zX-hLf-t_W~a<2urKD2d@OjS$JRrSUgcWWe1_BEeq72vDMFlunA^y%zYRcaboUC< zs=-af>*FK9d3DP6Tm>=z29%Ndt;{byZyy0KgMO*ugbT(;<_(d2FBOrN9*lvFNiFJk z_7;Q}(|jb$R>QvaetTZa!PQG2rW?@YEnZ9v>K;)c8Zp`)<2Za3XKtWAUko1YR( zE7;n)gcUOZv1MTCS_gKY1>erT>$jv}ZZrZ>8@0CPq5>Boq;B@8FKrkv!Xs9En{XDU zboTB1EBYYb;fFEey#^QIYTXHSPGF41^DHK`Q#v}zR7!AM3!idVYI>+Y`gnU>sy2SEXzsigx*ke7 z_ZYFBXLo3h&KxgJGLME+b3YWWeGJzL$95L0yjmXRi`ei}rppN1b0a`Z%5kn{T%BWZ zAzj7& zh*j=vdXuowx9*ZvpAjMqJq#a*7J1yHmLL?~QcMci{#C4lSVOlO0|-0SVW8x9V7)9v zMY#8`etG-XZ8+YP>+Q|3yH_p6<>#v`o$D?Lb3|r)H`-dvSs`S3 z4@nR@t!*wHIBX-`4L1?nHXYZ0?i)ea5Z^{}bIC4wlsv8Z>UG`5LB{>}*IZJ|4%sB_ z<=-^z7ndr$AW9HA3;Crx7i^@SNrI@|wXN@D)V`=`Zt0ilkzymkT$;6b*VAmc|JE9m zU)mI(DAtIxlmzE6do#@p-5US>BA$1K)6g$4Ql#VqE zYvhc)o1dPG#Ydl)h3zgHo48|JQ}CFwef@K>W|&UyGsjsoc>A1hJwvcw1z1V7RBT}@ zhIQ;{B^6U`ABfC$n96f_mPaIBXm3I2zbWJ_4M?F;csgM!h* z&2aZ=hx=|S8iBpzmgi#beaW)d$1wMi+lPMZg4?^>&r0H0P%DNFt8XQ7+X?Q>mh)OT zzR?hGJ#NPkmFKY|Q8ONSj~g0%5RZHiZ>t&$@up%d#B(|RTh67bdYO5B6)~@tsf|~f>uUVhe=zZ1F9-*R*+}yjZjc4fhMLB@ z7i}Bs@K{!+vL4%CmtjRZSJvD5b!N7lXSXqjNWA@Z1%dO{P0T40&#$u}#Hl`rM?Q$x zTaATy6btb_jJA>X#TAMc>WpzeF2`&-j{DY3+sb;ZdL4$%;@H;{8p5jA!F3C6ix}Aw zX4k?-s?=48K6KLC-EV#2Z`99wYiy+F)>mY~Zh-rKxon61=)i`-Om zDeBCYOISDF9{1E^ax8w*wmD9YG(QH|TH_Zf~%%e#Lzdk9-i1VxjSfN3qcMdKYacy$?Jj3teh! zPDfqeavHTibFiQEyNXq+$FSonrcHRHsZ{UUmP)AKAhabOVPs2~)vLBr&EPKUiFh|sJ1?xnJwpexF=|c zcN}X(X_eQl=@Sj{d~iD~(Fcu3Jn})jf*1>pM?8v!ctPdcNe*FoqJ?}j-J3*z-Pkx9 z>;1NVdTd|quN#{nwqC_zCvMOXwhzx4&Q@&+YmBypIsV>O`Z)HbJU1W!=l8gh&$)}W zlcoe8mW9>R+z-b%cRq~sYmfSIOyj|@0?+#CZT&kl+tMm8)_S9ccp99y{3`Eek4-qg z$CW(Iqxv8o`5+#Tg?JPT&2NXDL!{caCecFw8SbN^V>gb%Z5tCXM7rMXw0vl0AjVuw z$;sOTC+RW&&J4@qK1pvor#7?YyfZcwOED#fa&X?p4Vob2%|Ttb58{!JG_fF$Vj9GQ}88%DBJWg!T5LN(fkEphUk*$Jl$PbN91FHg-n;99&J|?T#v8OT6Bz@P^mz(Y*m7%E0`m4QDgd|NpON#pO@>m3r_W!3Joj7qp~NYztm!uu>g=i1 zca^mucwQ(7R&#%m*Y}+Yx7>dj+6l3Gc7>pMz7To-i)j#AccAGa{A}gsTmWubh02aE zr@={GcZQ_pD=VFCmzIU=* ztgIG_HrT%8EXE?OfF;0Iju4Odfu1URttd2T^B^nMXh>77l7=yPsq)XH(!_V^$7B| z9xMRMsyvW)AkS@MtNmM$SNM1-Ful1+UenDF&K_NK<<>&{yfxS!4wsszU@uBsk_a1C z+!2cS{wjCbp#|B;?e`0~4%cA3J#?)WC3i+F)b906!a5wWgW~O1$Xh=9LxmaMuZ~^7 zaIQ{}yuZ?97(6X0&vHjW_+@%YFp2P%BM^f-_eK+TVpwVL>lmQehNl$sA=^C_ z%7Fc+Y4WoQQ{Z3?U&jvKcwBHO3kx4Dl)ropfYD$20r^tJAchN!O zy`NYbsyx^xe@5P0q3U$v`Tbr7yjSm$=cJ5-d3$#}Hd!GEy2cLhrSNJ6i_2Tv(+n|( z8&0s~L%1B2Z#?W6?vQl$kRUt_bb#!Wjw;xI!U6M-BbNN7G)(xqO%64g2t5Oby{q;J z``!GdA-Bgy`PZykaGTp9#{+k)_g(G5)jC+-VycBRPx=fksu6@WZOej3zol|WmWkl} zIgf99v|V(^0jdYDl`GBDLdnJ{MUM4D?6D(+H4Kwi6!C?Y6Hn(VR$LHPEwG1zkrA@f zTrE_7y?ggecp5mhRpDIC(kl)4opd z`qd6O46(y`YkCT}z1F+RLB~chva|hg*gU*U(h=OY9y^@C>*zTJ^C~=jel%huo0Wy0 zts>>yrA9+=V4ZgZ9ty(c&i3%+x7~9296oR+sC*7L+}_|G4q#V#jhxNg2NIqf8#)NF zm{yJuw|}F2rSxd%{`tYgnP|Isp%Z)w3YWWl^MO5$-xTSI+tGNsGZZYbUp{Cx27D*3 z&(#yR}vj`NCSK3wIAmd}zuBi5(V z^m&9$@UVxNYCYtG9{!Lx$LnUv^LVUXUkUZQ@=B*n7=c&i86EIJzCJxEAyD>TqXpwXH9Qv*C7g*5XL z5X&YwL2%+Exvl90xD@#G{hIrNu>Yy>wg+=uGR4-jkh z^y)Ce9GjPe4-ebP?a=l@^2~{3o3z{o=CARRXUy}1LXD3WxrOt#HOdvDPx;6#O8x>K z6SJA;wZWwuPiM$^cDg(bd1YTM-b1|UL&|~6i+KvKcGkXu#9RB`1x}V(DkrZTf;D^7 z%@0cjq1X2E(C*R{xx?}y@H($`<8Mm@;r1Cfa9kBEKioJJ-i~Vd_11B`Ub1in2z|Lu zo)I<_s+J0!m-Phh`)kTU|B$(IvF9V;$&|6rYTU)V_i_gJz-jUWVJtM9T>uvu@t9ZK z1)SdvlHYwE117gy4y#>N5Sn*&1u=w!s&BsC6Hv{)~_rf)v!>+Jy=t|k< z(@0pEd+3yPr3B$RIKu6)ymFr9SYIyZj^Bp48}Y^oTAQrX5%wxi`+9`EspJX^=bqQ~ ziJAnVKI^RlFn6u|%R%xRdzmnc+Fh0s7NW6-msY>)rWNpqj|&`6Jw7K070#7{$=6To zdbbFKQPTpSpR*T)0h7wWuJx`8c01a40AW*KmWB1^BXv{J_R_6^BguB}J_qo-H(6J* z+hl0!^t}3b%+tp%&QNjuM%|K<0TAvjRF*MMC*~{*Hcyik-n}=kqllOCizD={mtS6r zyz?bv<`A#*LT4zwq_|vc{b+cudw10xb9YWR7r1-M zH|ykdc-arvZLhh)Vw(@TLW3rNna})^4w$De6P%&fOk0_FR$qVJ^#XZ9J{K7N*jXmt z+oG+f5^v^Z7x<-X1$n>E5LhL5yZUVz_6$AC!<-^!3N|>ai>; z^UfT%?L<8nurKjQ*B!AZ7pe}-h1f96=N{LRbYy${;kNN)8?~W4JZzIwJ~wv^#MEBy zFr+`$zY`T;@)k>Z_MH*1Y+Q25z9sN8lf5h83X6Oec`cIL?j)D&AKF4#(!etCU`>2f_!xgM+u*-@<7w;0W);x-MUb7tFnU|T4c+=hU zFDKp?*$HAV<<;$M;sf{3y*zXd>(zu_&LB)3;2w@xo|kPJ6Sk+hD+rH5YPpOU4>JaS zst}9ys?ru02>o0|=ZaYO<_p3IJL=~M?w^vQ4lelxELT*Fh`S>Q^U6EG?xxqGKHB)f zti_IJ1F>EmKkEP+zV2~PLTuyChV3RJW?tF}E<9M^PPUa|<_;uVy9m^DS!;KTl3KX$ z`q{lB)~hO*r=z{|xu2IO!oI%O8=l2_^`xLP)R|*hVv1N9$f+QmEICr-fT21 z9ISQQd=`7rr1J3kU=1B%McTX$BP^R+Ik0(XuJg7W3oBQR*f;VTZbvR>(B4XlIzQJ3 zMlJ|CGqM7%GfZ=az-C3=345~Dq}?dQN^C0!Cx^w?BHL-P;6=8H7hRxu4~JUAwv2}$ z`>&$kKtaf!;tI{2njhHgHVzv1TG%+gEPjs1W9ai));i)9%{?=Mc!^q9h;(+)5wANO zT|&Hm+e*Tw76avH_W~ijTGn#Gn7geHmH=_)dv&OzACE@ytzEMjM>;Bv? zhOkL}%fRL#AEQQYoD6wey27-<4 zO?Ue2(!6(RaIJVzXV)qaHa_VP8-|#vU0INef6uK1%Aef#9rmpG+m3O zlOc=mP>Yb~xbHtK10mUR$VYtx;gVxmwS8!NBB&I!JkU@+hFG14VFw9oIME))xb~3? z=bZx0YKe1K<2jblbJ)X;FRfsACW)qm_3v#7Tb5VTJsmw8K41Rkvn4yO{hJm8t6K%+ zguBzAQ_fq1+sk-fEt@q|u<%r{UzRxECCt2eet4hnlI|JW7WaRWmu!p7DGH}A4v|-e z%z!N)TLurq&+(t0Sir36xn(yg2-Y31aJme;mt3&-J><~%C9K|or(?B zyy`F;4n!smJZXV7@o{m`m96jIv;TBx^W^s-O%CDbE%#!OrH!PUJzzRy3watp_%L2` z_rwa?FD?}Mx#Mhj7GU{uq$TzORwbbF!fCpbx*3pMWc2*p*tb8rS{NGMI}oKgFbDka zwL0XBez(NfLXPgqk)csDph@4rY6&%Q?LW8(6j@kQ;}$Uox)(VN=E$4gqY#)hH?LKA z!E8uAB8<@G!{gDW;xM9ZKi$b+r^BgtKEsN{2|{hDD0q(fpkNJ_HNQYu*h@?7Dg1SX z&^Dj{fG=blRNn?(g%*~dc+7-ixlQIB#?MjDQc#2NNL@g+Aeeb2BEAIrowUOiPK@26 zBi@<;We|yIZquL06P>YCx=JG}Ry$G{6Pp_{+^Yg{Lc^=>6L zw006NpFaZ!+KH|Mw+h0F0CRDFzVl+fftO%T)u29~Fkh}0Y$-O}8X!ArFTkg+jW*YM zgL6J=sOWcMjBI)H3Os6Oza}UP_HZrQXjUaok)6Y@L99pb<(DoB!t=vx#Lgo;#G(zZ zz+|5(HjD2HLj65k#jsJ~?iGh#h02pWJ`cuP;y5N$O!CMtXVYDSa%1nFOMHbrlJf*n z*F9eRVsZ;A^sL=>dp2AntL7($6h9;$O1utBd!KGO@g1&NF4l@sfl=bM64zj3?@693 z9^;x@;xzH?ozb$F&rP^BpzGc%rudn&+)Q!AxX$u;-#f5yU{cgtYdlT|P8Da@t}fSa zcppCXzZ+Kx*9F!s`YcWv?WsH8a|En-edo)!N!at-y%tl-wbnT1841r{w@S|Ahkl3O z6L0k@Dqck1@YnN`iMKN3n0T$hI^7ee5zzH@?=No=d$Ik17&q{Yd-rQ2!1Z;hti810_Cd|c0~VmQ zJZ!oIu~s%Er1ACeS_R}~wV0fpc*h&y_2@&L62& z^!Yd+vwu$%IWOrV<2Bh^ULqdd6Efem-*n6t<-V9FJDV#QUKxg4hPDM?inc0m*m=f_ zSN-}}3yR+)%u~9jhQ`}E{+mR8hvDaQ?sqKm$S?6mcMKCZo_-TWF%v>DKODA3xwnO4 zCJz)d@v0?P6B#c@IpQTCZ_t^1I*OTjz~jQcC1NkU=YlX6G2^-K(LDQ5CZ zvCw$E(UxK+zZ5h1t&V;vW>SiHv>g?#*C??hU0gn#>l`hFiA?7e<0xj*rIO0aQI7GZ zqkb{SqxgoMUonm}C9O(F?p83ovlaIQ{H%-f!Flst8ISzZcoZ}FAYeb#Y}lX z@lnj=mv|Q~TS_%l{U{QOx!Cl!5@|&-lLv~Kcw5!^AWP2EsQR%j!@i_%C*{5v+71>m z<}QvmSe*|R2^){*jbbLh6btuDF_T}4nfz`;zZ5h1B_3@DX>W~d@f7j$;Y=%v#YIyX z^O-3_x)84@@+e~Bk$$vo#G~yZKcq9=%hPF;HQF+zDW7T1iAQk|kLHaupz$bT?w4|n z`DHUle#2BAMNB-3ney4|w^tI`_MglAl5M?tFK}OAdkxucR(WJgJc^lOAs)p{Imlyv zQSuquvb~UErfnl0#Y{YknRI4;Y42yYl=sXp+pD=QYU=P;+PbT02xO~RED7&EH} zbMPLM&eu+8TAJD^`!B`w?nYrfkJpXh1NEe?#KZfPc-H0bZ-ldH}Bm8k=Kp)==Z$J)7Oo#4`TCQ`->DauN&6g@cI?Jmxp53 z*A3*&+Wni#V|h=!6|Z}V6f>_Iv->^~JCQA7ylxP$Z|+knj}*Xqfa7_hUy7O64epm> z*4GWyFXOSiC;hZ{O(cq$*A3FD{IqNm)0ypEq>G=*<8@;i>ZkB9K3+HI{-e=>IVFmj z*Np`@ADqYQ2KlA&C>CBfNN3_Po!Q>X{j&LBb>psOPl@Zt>&BeOK9Zsp>dfl~@%Vi3 zx)Fptt{<-(m-Y={wiq+78*`BtqRt1e8~1R$nK*A03$Gi*qxq$ndEFphGj%?A-JtED zm_xg}V?MKbKsqb2WCPTSDMPxD590BAaG*P4UZSj`EpeW_}ru+X^1ra9?2cfc&mP+tA4pr0glZo|Qpt;gW*Vj+NImOD}zt&VM}lq7h;p?|l>Vcg-)xpZ_4OeN#WN zAYz}#l#;sUZW{U8{hgHa%gRUgzSt{69_fQcth>+0chcbZ`yQJirm6G0__3#tCce}= zDfqSg)Ecq8bE-+9d3uW4<`&XUvknD6W8ZYx++H&O;3L*}olh#3qnFiV#NK|jlzy!{ zON?)5Asx$E!isqIZ6)bYfnYJdxTQ40Y`f)7#J1OUk*?cgzp@9fv&&x9G90nkr$waa zhqsHv3t37RbI2CE5DQJl+z|JO`SIFU-)xO7h9g$8a%E{#m&2k^7x(S#W)>3>n=z!M zWH;fA*s_tev?zyVff0zET+&QBJ5CgRn#C#o6&;i5o++>5<;C}-;_z6;x|(tuN+`T> z$m8{S_XSUBAoA#5GG3p__G?EQ1>^O(-XI%=*A02RK6AfygLH~ts?TIQ2**3pU#Iw` zJR-m6Fh1h(`doA)eqBc7awTS7pS7W%M7k&L9mdS-Gx3^-d=M#SI`YuA5l>TRsYtQ# z`g~G)qu3J0>of6e3Vss1Dm+%7X}sL%mtx`dnfs-fd3`2cGxW=NtUkNocI@{oB9YF# zKGQvM^UK&s6f<=PMv3q=I3F;+}wOkvJd3qnLSp zCchCl9@CH2UD7!ic}!x=ipT%mHQS6`-rLUuWrhE3PB9GT+vZcIgk>?oNvLhko zGigBM@%l`DNdp>>W}NypvZZaSqWER?nfy}BofN;H6dt$jbvi<^rM`*VPHhu`e%W3_ zw&a6&ygpOR6yFr&@%qeT9&~EI5_1+Ut|wy5#G~l$ARgIL%)D+8uMqlWJXSYIzo+BulvsG(Af4S>m6n*! zE0wyDfVw&7|c@%i9&V+8Uhs`~M|G2Z90a^E7w%OtBQox>4B|R$}EP zU5NJ*dAx2=KGXfH1(C<=2IVASi~Ex;Q=0ObFdC274f0DGFu$xGkS*mJjYs=F#ZCE4 zF%$2T`gxFS30rh=rM_-Z%yrOq$oQ3tE#(%)OuU82<8_0_OgvsUc+AfWk}cZ{dCY^6 z$Lj{yYO&&%)dRAnyk~ydUQIERRumuqJlMslkF?EVy=Z+CDGHrM5NC zi4o6ahz@`Gu{>h!&ALlp%YGGihRZM^ymOL(SnsK=q#0FlKQEz!I^m^09_S+oBW#;X zFQ%RpcUROw`S4o`Hluhm$;$SNm^F_M3WqOF+KaqH_dTSsLsyDx8b-qP9j!hNLaet= zBQ+@&FP`*>gpeJ_Kh{A^j&YZc2D}q%RF8y%JDMeVBUZZqUTM+1(_%;eHBih`%yJXY z>rQC1M}i4&M4wh`plj1fIlnB$^8uB1OP$M`OOD8sntsSnytlqO$*jp)vHjU!;eG4F zCbL%IHAT@;(#4wZ#h2l~LjKn6&08ZDltLY_if5&yu zq2tD^qu1gZe1|ycYfzGyt;ISR*s)A5+jWAlBrsN5G%F9@$GZ-GY2V9Y6!LbAw}O=3 zzv&VO%+uFrx~J9Y_H~_|?>wAeR-JCQ$P3?89(lg^5`B^UZ2S}{Kg9f+^QiZ}v8G^!1tU@ucxCi*ppelt<+EEBYlKug{T<&EdAjQi+-BWOnS=?j6Yq z_whbWika7E;x(&2PD9(q`#RzkzGS1Dh%xi}{H|(FxQDj19lSmh@6Z#ihA>{AX}nwL z*9>Ff^_lynn0b9Bo+tWcJXW7?;dWH%nXJUZ>$9TO5HpeK%&HjaQcdOY`b_$TBadR{ z^_jF9Jvg68@$vecALoO3Y(A(OF#TverXQ=j+%MCaRYmTXVkW;-$Its&E89W(@%p?q zYZ1N9ygn1}raB+IJ`?XS>PIp2`n+^O5xAr3%oeu^ZS?UHc~t9& zN49kT?}K+_%ao@1c&zd$M~O%JQEt$9bVQ-Pj%;b$XgsRV#G`yBtth@v7a5OYrhIBDX&6?r0J(1_7nA7jX639Ck_N5l_E;l zN2F2xUWlSD1YU-Yt4ZGgQ0B;QQW+Cd>CM3qII(V#)DL+%-E+al1~c3x{~*A7RpPdV zqb~S8TIH6E)YR=B1d(lHPCnU==ja#bg-)d}YEEf`V0xEdFK`6u(jgN3e|><8vTOqZ$g)`*qto*%Y9*{@lDVlMRPz3ZYsVjb({1))iu zC@+kxL+1`r@rUu=+{*c3YT_&Rk%)!&dUeyqpU#9s`V?M<6zjx*!@?PYy zm!536DXuVygN8$L*RlJE$AuJE$-0Fst}Pk|??#@fzAp){uRB~t3cIpG;rWg;btT^R z_obwW<2Ob3Lowjy{h-dY=XgzE6BnuC#wf9h90Th{xKtm6*s2+oC5_)wg?D4@4QJx5 zK5r}4Uvfo!I#-5A1HC-*+{N=&T1V;jr~TpuZy5>?ORU=QHeUM{R6#P2Uo0jduh{6G z<%oCI`Gcm$+$y5^#8`MS!{)3_Zb5k6wvf1Lzyr+ zSv^K;B9V7;LH0P}#XOdzE^bzmM~|_%R<&Y$q61zJ;!{C-vdl^f?KDD<$p!7C4b`or zo@NH#h(#bxT5K+PY}%{m^_*8hG96?t+3nw_$7U_CmAZ$ROFbtUcqfa3WYX3|ip~8> z&&wTNLHe*vkYdOGuE&0BY$rAAVj{J?`%;g2WNpLl`}E9-813bFuZ(>S1?zbCHQ*vrwe`U4`rr4Tl$E2{BId78*<5A3nQ7pQYtXkR(^2;%tq`M_ za}dv@hN3ggFX`-s@ez;w5|3;jOtFe4?98_;+K0#^+l5*1eptmei&l#m<;FvmS5aU* zig^+7Fun-1#o-j&oiiDhT4&B{gto*Zzce0cMShE`w!~vvp6^Ax`eQ5WvlqezhA_c>z8+%NLTFY(CM)aJ6RMeJ3IsrD7-F4+>sY_n)r zA&+9_JPQ-XqnH&8V_Bu@Ofhqe>r63othcJO-Y;rJel0KoxnHfKRTgb;)P-VJY>`KP ziAT0I)?Agf!&htKP%BV%zPj;>9J_msvb|GPoolK*3Aa~Lbtay6{UFVRR62(&K@AW~ zt@AaNH#L>c%6J0{DSqQn7mAs9!h-^e-wB9O%$!GliAOOvDP1U9i?&I)y-BLh$*b}H zP{r0%8-y6?%y~I*dx=Ln6OZDXgSNOC0_j}Xv9N-r*7>W-8-=#S)B8oO$ZrnRk7B0r zm{z9RQHW8@ieKcBU*e6w2vY0rcpv1YB&2-xqgbYJTg14|WnCNVdDbS3_lxQ`_P}h#?<&+l@At?|#cu*) zL8@Qkkze9b%xxB8eMYPs=2|!OOSXgwifvYHH#KI?TZ_3%Jc?Q2VSL@xx=S&0jO$D> zb8M|z$0=sQNGtNY7Ux{=SJ5h~cC8vS=aFCHQOpO1V*c4K)SN?2E2y>|$6S&Ene*DGFdoIM@G$0J6H_e?r{u=v zyqM#NVMnZBq;n*VhuF{*Qw5`#mGMw3^4lIYC7p@Kv@+EWRdwb(@=LtU9Xd%#tvATA zDTg$ZQa<|yV05}^2aUXh`XWX#a~`BH9>uKigvOecCdqy{ zoIo-6oN!pyB9>a`6*L}VeNz~ZVopZC+GW`lzXx$HDQ4mcg-jK{D-olZKdU_QOFW8s zi&dUzvJFfz(*~+Bcb$*-cPqAL+63(NDCRJg=WD`v6mvJ^Q7j2x&9ppbpCWk`EVa&@ zXPt%dC}#3YT9IF0HD>b5v@+8c!5)rcCcnfZzr>5UGeUA6ze&;A1bg6bI3F$_#z;r~ z@HIT$m{uu%E71q{OFZ&RJc{|{SV7Ub6y{YaHRe@s1y$#)+7Q&9Y&q{X<`wZM zX5vwNA!^;Fm?M8NNux8x%z1s(I!-aaK)<9P`Ms^itnd`AvTFNafZQ+f$S?60zApfA zcpc;Y&NJcW*W`hb4e>htrk3z%os&GNw*ecr#tJsgcTB_Ucn7bgoM0o@J2gXZyRM-n zj5JG&z1(31ujUs|!@Kgb0F?NpfV>V2wsZ0N%KHQI%Qyfzh2u(p6a zA7{wje5XR0ET)SaM4`~O>cX0geC0O z&6Sf=VTG?-flokMUW}~;yn4Mz4q0ljy*I`ZKIB>~*9bLW%T8E9yMRUV%2d3&T`gd% z=Mp(~`ZOr9*!Ck<@bS_jc`Wj5RNl&(7BDn+uDssKzzdpW z3H!bT$#YU+vv7OoRSA+iBF1e4s$0PB;?w0pzfINqeK5!pW`3F~S36?BJVUL(Wc^gx z4td-**9Hp+y0BkvohuL?WE-`!#0tD7>zXAL+rCfEVipMZRqRUMf^e(LJ~;>SIOe*^ z0$z-ckw*?P*gD~L@cXt!%NoQuuXv?`kmIQ=mq~>UJYfO-O^?Z2jvH(*3081!$5DCV zX@hO`Dg{BFeMIhsJU-t2;}%ft^I1$h`eT(0Xu)s3bxKW zEZ0xP^V(+t0ezz7EnN(}n6s8p*fmI^R#k+}M#IA8$MfE~;4Z zWGe{0k|6Iz9>-2xw}5TO6Xgn@4YscDE#b(5METPv18;i1g3zW%qWm-!R^gQeM6~`O zPhR7v_dDXVB?OQEAh!%NV5Q6o!s(aq<$9@jmce*$+JZ&$^2EvT=}fX?`(b#Gm{bbP z&d!zJ{%*itUn>P)=FdpOD}Ub(nvIw*x7;}yl2qI0K_wx{W|rIvF+SdU_foL#x5)~R zV-M@v!H3PWWwTKR-nH9y@Z5W_7JpneHu(_TNX5( zR?CG_@m`Lx2g_37a*rVf+e@X&!s6~>a>Q^0c3j5q1F&0{hL>ZCJD&D9Dcn^{-u!tJC{%vjx^maA4L6lEIYmN`xJ7A z$=w#re{npNq%SESPT&w=SI>CVCc)4zZ!M3}-Gc1q~%T1meVu@SkjQ5Sj zDm-p$*V7(0+BcJzhE0aX@!_Q&48eQ4673;ZDUdC;8!!v+vM{Mr#WcLfp=Dt7p8E2& zfd<|zS9@?+Ts;j|A<`b=$2q0JOkbCV*z=-X)X8AG!n+K(n!CxN_6F?3=Q6OwtaKXQ zukKE;F?gh`z3U76tGB#m6D$bT_d9|0Z++!i*9_Q#2F~Dnv_l$RzzZknFnWTV+-s8F z)^R-EH`{)&{52JJDqA_&SiO51Oy1%Q$3|-9Umh52t=;jv3GR)Ohdnc3JNA`>entAH z;dQC+49o8L%7YvDL4$iC#q2SkmtA*;C4Qsjf=vwAtsdpza?L?$cqyBlU}mnda@8yb z-Zjw~7VY$wtEIxWpGT}iuQa^##hjqC(-8TaJW21j;2I~G{-C$qF4BOtt>z5V13RVR z`7|g8)g7nG-j&BfWQjfxZ{R{#)QNJ?GMm4Auz~^m($fVthxw%8t-DYTS}&U^uNi0H zP4seswu7gn!PNKx30RtlI+vvbw>?YsJkniniwd{2MH^t@J`;rIUh7b)=V~F z?k!y4)WMs(X+{}{pP+esv8QMWC2wJ~hizmKe6+HDiNWelst6N&4>ZrjbHn&4M@ zTi9D60;DcoRcgR_BUn}odPklS3Y5BSZ`NtSMCE<|<2>(czz3_#LYsTxU2VVHYC^v! z+5fX`IiU%|1Y3pU{^9<}Yryf85@E>h?zYP|Xn=(IVPVgNZks%QM<3FTacr&r zA2*{)A7=3t$hVI^Fi^ei?P;7hvh)qW*JmKHf7fkGIcflw^LYQ`F03&CJGWt^?`Yqy zw$q;*fMBZh|7?$D8RB=Leg0=_9bpKSV>O71Uw7N@`>=M0#t?ETu-i7h)ey2h#s9}` zdS?J~z9UGGgD#$C!7A^EN2?Pstqb+FV+?6 zZ2Rl90ZbhxP4@j`JELF-npgV%&(`mvK8P=tC#N3xbhW*#XaFZC4vW{o<$6c$<;{llqWPy@RK3B^aMuwFrj-^WkXVAzmhR_2$e zP1JUrq&irADzo|@H(Cc)8Xhd!FBb}p<0pN;n27JRIp{!;+Tr4g!QHmsn{~kAw5-*? zoXl4pFgks*w@15p4Gp$pwqgL{IaCvO@Bd`-^We5aH+3s z$xLyqt1*6}C>Ak2s0`1re2v`mj`)&7bfI~7c8ToIPy?Fk$-S0t z+nnpVuq{N-l5!tv3^{JWRUK$fNGch8qMLL3hP7>4pBDdXo34U2wq_Jq{%f11qyweX zBTM?Pq-{n09W~d1U9r20?Ur`;C%0S&ls#Wsia1exj`@1vu>5k#+r9oEV_5TZ2d-r) zSM{K!c}9s=Vz*8Dj~+$p;3Ion< zz~^PX4Zzh@P_lMOw=GK905TFU75~eHIOv0S#HEsyq21iywOAYI%cB3;f_C71zdWe; zUvB*+J#e{RP!jmizsv7A+)w)WPb|58x7%jH(}(YWO^W~J{1+KQ^YyPKZ%1!{v!>-g zCdTo2WdVk8O_*9T&ZOIBooonR)&?c-{^24&8A6zim{8Kco9iuM1nw;-OQim>Z8kE3 zz(;J!zuc7&BN+FlkI-D$-F8x%5j2~Yl{B31wrwvqf++iiC1(F{`8F~z)GRlWx zF1lp7*%iN;-y{v+%d>>5n!0W8E2ZE_bLIcIWq6@j#t{C9 zNJyH*uL#Y;e>X^~fxN^HlA+aYd+j;`w&d+5R{wD7hIpUmO*nZ{jCE5w+B$3)0p;>r z$>V=)!RJ&V);8gPwsUyzrcEFq0_X0w?)Ow-!?0)~Kcm}LYN!f5)V7n*f4Dcra-fxW zjUO~M4kAuv4w;AV7lVr&{H@L5XHD$3sr8eCD+6QsoBrXBZ9W!O^lIdwN+tMzwsUR@uy1BDKdZId$H4&#;1#=%A0)P|E0!baqy6pESBLtnC&iH+9JM`^Q-_L2FRcu7yW8%;V{W{{-Kr*|+m^Fd z4c0#GQ~WPC`l~!-ODporPsM@a>HcbV3vlfYk;j^fC00w1ciZ^G<-7OW*40*yQGjx#omR>J*k<04htjV@EuZ~kYnrVHYhFIJ`r+B#w&IThNFAPL zb!S1h?PIh8%rSp*&Ua3?&1k5*B5W=YHM*^9*XCf3IDa(50-}@v7rCiru9{X zPcx;2QrEiM4hz8V_P;p^Q>(jeviIa+!iCuXaRcz0>3gdIX-kWMds8%OpC7^6K<_l6 zbR(bi#``p#HWz12c+J}XkBhIs+~;YMj}y8%a}!O7*l$Wc{bPH4Km#5}P57Tp0qd5j zeIHI5UWRx1sKLG2bfFP>fOV)k{Vu}uXoM;IKkmVE7slWCr;wFg2)^xs+>_nUUJIG} zUTXZzWs_M;O*f2J~%y}X>2I7qBdM6I3JYLcxcOr zxb>Xv?1>2s7??Bn-tL6c?a`bMhZzpcXKYJtr5%1LC-%J$5pePDv&XhnFXd#n{}GC~qnzJ;lHSaSJwC#@T18;WtK#%7mkMRXyyY4Benmjv zW1@McTt%-ljEEcCW&5*!9dll;3LJQqoR7}7awDr?W`|$eR^jq`zKFBr{H`msXCiFQ z3R4Fkh9B+nTz?IjE{t@+K7RP8L!jE>mvYW`e3&$jd&|XF&AKpI2^$!PCs|;^Gv)kB zmM>r=v28$07GNnO&PF+t@-xC29CwZLd*az5CcHLQ_`ob1R`8;^{``lpW6FJg^2aM> z15U$SER+j7euxoq0h~=S+KaQ<78Jr#ULfZqW^y1?hHWeHKS?-^a5l!xz zX4>``wq0=<|BurVGv&h$~n4eFoNoFVC^H8OH%_JM}9tGP<>Jkyp{$ zf;P(Sjorqq)Sw)LZ%m17hwXRZf17T=u^z8`$_hknmu<6U`klN1=3-W21JOp?9=Ki2 z_Y~fM{2p<<-e@apJ;;~ZzKC&Aegknb3Zt}rFv##D{FlqMm>(r?AWE)Hxo?n&i&eY9 zf7td0cF9QgUKD~h-&p>Rh*Y9&a}5OS%EFdhd>7*HA^z4AOGwg-s}RGAf0NmXbxwSD z@q=%Qk;=PQ;iIvKm|HB~=W35(wDvWUDJvr3z4E9dv+#vXYCAEg4=b|WoJ(zAlT_Jz zuY(wB6PrETV8(PF&uN7L`vT{PQC^Yo7oRJpqm6Qlu@G;fHk0SdFecZ!2%*O-2=RzCh zob)BR{?{py~K0VtBS8>A9=-_OZD{=jaIUKB`oX&|rX7$kqVs{efwPEhb6(>cu zsM24I$d);u+SYuNW*4_F;B0T^*y`^%&Eqwe4rQO9kKALCV6_bYU5hr#8B~qr`g=2n z)Kc!jh*^yBxGO|A`w%Q1-hQObL1gn>^??!Ddd#IZ{?is_x%E8GcFSX#wmKdodHi?q zNu0w{au0zkPDCHjMmeeX@?3wnJoZ1JoTQ&UliN^4%y zP}#Byn#3nx7?00GsqMwwn~ca-#8BJ7yCc|btFgp0a+=fHjE>}VwN)NaWBuYT zG1S)2{e_{!3H){^&WP=abN02Lh0r_?YbWA4L%G@&XN4k8rG|2sy#tw@JSj}$_bq95>f30B+H_`@==Gn0wbAwsWupErJSPl5{92%L<;X50tw}T*^(I|+lclatjPAmh1wQQ?89bNMljTt?x3n= zhUZL_h9pbZfPm^lAm@hPrr_j8xzNIALJ`;SkaBrRTbSW0SIBOhcV`dPPBXxmsm)qn zjZNfi4`)-`okePFCCO(fx7EW#*AK^<(nKTnBF@<#(Y6z>AH2{;xqaeSg|zKfkBobi z^U>VQ@B_=qSjB8mQ)$gygX4hOrh5!yMYf)9)V5=}0{eSe4nu99W=d;Wqqe)zYAjtB z%;oUEczA5xaQsouvrs4$aUUO2?pJ6Y6F9F>IOT%`j41nkZ6GcplCSnKZWjkzO-h!4 zf&%3a<@mmUY)b-D?DCF36*=eQCnYK8u&avsWS79qmz9D^wZo=IVqPStw=iY>vzVDx zQZV61#cVH(@ANJOHg8`pV{ug))+tuajmpP$O4gPg9lx5H{zV3M%yJsbJB>Ay`cG%a z9_+`s;kyZo7TGH*p29D-9?W2ivmRSHAUAty(s#?y9ij zaV&8|ztyTovZ-I|@*eEl>IsC#XWbf=LF427?ZJq*DwAnz*22o1vP$}Gm1@#a{@^#G zg*(@;1(HNw$xOpQ4KmfoKff#=bsue%w$ zQOV57d+TA$)3GkaIA%U8)i9D)smz=tZ^#wf=uT@T{+c(0UDL;b(R_jb{DZHfTk$-U zovX?2IabcUXXS(E>Lcj|i?NA*qd&NIO;~V$YkZtk)%=iD*kGlGoJ%8yS zHW}y6)4!Q>t16l0A0*geXI>hv?pUH5}TR7d3Qy3Auo zhomz7ZppBt=T4P4gZ;J4na$Sb`7@t?NU*D1>_6JzdAa3*1DjMcnkjP;XWb`EuHKFD zHM~|}Lq19oLEkT|)ZZHknKtyCX=SGWZV^`B{mf?HPe1StZIXYgnYTl>3*+B@W{Zld z@@Jqe?L#(my4M|kL+Us7_dc6%Pp4pia;KT&PScqAAAhiUDWB!-FsH)nHyI0$1g7j- zGrRp%p;^5PekXiMhK)Bq%T(w7W*4^vIDf)9aL+(PcE|dBX7!9e?Eay~Q|U|jk;b;{ zjnV|>?B(C=IVNbV-F#eA3SHQp^>6r|62Dk)&)(n9;F`H$mm|9?ga^`Ry%3 ztc6)%H=f-d9VZmL`o=yVmw4hFZmg$x<+42nU1nqxlR>g2?$PE*j88wCHNEqWF`b$W zgTD-Fdx`rYH??fG*s~w|epfO$eO^Ce19CZUPq1Tk)LGk|N1#9|-eVe`GwDLCLm;8U z`u0wR#RkV0sSvE6eYuqVm8HezM5V#NiOhnuT6||Q;|jZXmn3T*kpXjjjYdWO#A7aV zo$bG|l~FpM0e3>aODt`{bL-1BRv7SrS%REK$eQM(+1V?R@me$#C&a%P}kbNfQp=Gj5!Fvb_6y(Z5O<6G&b#wwa`V-i;tfy0*RHyirm z{~=B(v+-HynT3Ok;HN@wL>FsheuEyCj)ZyU%yyxyB_ ztuF(oK{i^E_}psi6akyB@Q~q8EC(mq^F1AK?|5ESz^;0c#aU7TCM>$0^A7+xz5r+0x=2|s^a+74jnLOOfU-)zbR^nbwfa8yHdrh18w7)Xf zu}>(c_1A|vm3D-oe$)Jd3~7J9{^1P0hPYsJ73eh{E(;vjwBZF`#6{LnE@jkhenaot z5~uP?7^!BTIStQgY8xo_nwiPj&bU$AavNVJH2(-gxifAf)u?T1swlqA=PSW~E}o~^ zBCg2c1z*J7dQ7?UXVrXz`%{IhbE_f1aBhre8y+{U+kA^{Glg&Q`a@5xXT}_7++$Vw zFr{V%{NJV3aMUlXMz0KbN95F(wrjau{DuN=hwn3x96&2Xru8B zQGdi7{e=GtH9YF~1N)=#4SQI}Fb=gaOD)w^h@9k^YQD~%iNe!|Z@?k7X<6$~uf=g6 zX5O9Ce4BzBFxb8Bi8bn-*4>QDtsC&e?U%Ye?!#z* zUke^FP0w#YxSG9(QXY@DLD&~wh^z89JH`S0eShy>6uu|p-5(qu5WZXAI9MxAn*Rv! z?dy{R!Rxpr^S~hvj;P7XS0dL!Bth#UFf%u9hX}Xjrm?stH(~AQKXT^G!a?y+?RD9> zwg%tVbC87>}Z}UM9ygNK&)AQTzDXNC)`!O5Z;LW>HO*kH)@iF z&EoN3-fwY?(H)$dg8IUR`Ll$#{kFrjmW+MZF}`%E5_a0}2h9C~1Mo50bZGh$tYv0= zo(-DxmvQzy0E_opLH|0e?=4@!N~MdlqmWy9jCgK9PW|_7_I{2E8^87t)W2B2DSHs! zL!Nw}Ju_B`-4v7z(Z4SH1sPyXvHp+PB}9t-6?_CD`vxrgIR*bwwWyBOfANY@;HN=C zuTwhXao+eKbB~oCT*1gCrGewOD}7b*yz!b>%{nKhGbPALKbiT)0l8^G7um{~Xl4O^ z2VRkR{>n(4?^pgNtbSu0^JP;qEKXQ?>n8fOUtP?WEIP#eTz3dGB6mI+B#wIq?Z^D< zqsKCur9#+nV19E#0gjD@5==l=JwJ1X5cX&7yn77C!MYEo%%Pu(e9EmX-g1U=Ixl^h z_@2(fCu(KjUw1qD?`y2Z8XL~EZd)&G&$@uMt(QfNM<2pVQOr4IEn$^G1xPggh%+0B z=jAdlCdWODziH=X_)+V1A!QlH@_h5S+SHODuZf5L>uzk#n!V2(MJf-hYy#8>uGGfKH5JpR*5@V%UEbY%pJ=>r5XO=3-_Wje3O+~*-Dx)@0ze)onSYO9p>;sH1 zR&n(P8lSBHQRcwIn@sWPQb?;vUH-cU_q!hH%o)`OjKR2a*m-&G2KwD%!|G#9T4pVi zbmJo2uIaz_5ssI<6E~TNqZ!Q0v3M=nx^LufUtB*fJYyW2H#4`htKhG+d4Dzp-`%hJ z%8WT+!Erg7c~2>48PbDY^m#v@_BY+CW^Wz#XD7~MKWDArQ@?X9tcDlK?N6?o@6N#^Pm{MePEhtJ>>6s1(}s{33$ud%IcH(Z}vzQ z<@~`tdZmaft9{E?$bX)(3m1^#%R0X0-mA_eetHwXioyS(E$R5y{H_i&oVQ}fQ$AjY zI*Q_(Z?DDtmb|y~4a?)rd$UpW4f*tDe!;BfoCrP4!Kon5CV+hY;MMC&_O;@Fhnq#5 z;KEeC#ca0l)^)t~wcM6%-#>^Id{yQzXJ#nfNx+IUM~zvcH<;yVZ?V$h{Z_CG!?F8P znGM-DkmWfk@(*1&BHy+X=hJ#?*5;ZTYyBgJ-)h3HGQsip%fgtgj?`dzCmDWLdyH2V zL0j5Tc4RGHcPhv5D{qWhIpzj_FPYbaJ?8j}Ny)Nj;v)1FmcPPplHUGh`t5nnSg%cG zd^XETujqr{r#$PyddFU8PCRd5NW_|+)70=kPDlH(FUHHUJo6RIisLp5Z6&bQz@VV@nQMVb% zkI$GXf#w5cHE=C+S->{#e8r^1r7>?e?NtiwhyOBtJBR)D`!8dCej3v&&}(?`8(gQC zxUe6G@>o@`AB@_JCbuD|V@0wXJ9_H?miOTd(=>JXg3-7R8tS>Qu4Cj_0dFO9W!l2U zzc4TL+gcdQR3UMl+GJJxa9{gf+~3o0zO9mkWJB9|E3D?p-M4kyF3xsx23jIcrL=|l zl3PP~v))=6HHPPyri3`?+qIgKKhU ze8|!GDA$kQ$k4X5KlSV?XWHK-_Xb7}+fu&+j)?qHj{2qXQI5t}xU+>hk@S~DOnq;8 z^PoeIB~X)*#u;jps8Rd7&K53+3i_=n&-hW~h##t~jq@uBcyu;{a@Hmp;h@ z_fj2sp&ZQ%b5Rvr#j@-8W@^qs#i=vD|g_%f)0-6g>p16DhZ8To~e$C z+)r6l$JtX2OqbqNkzUmfj)!@vM2_YqCar}DTZ!M5TYt5*YBX@aiN}b>oHG<{CKh;% zPI%c|!KJ71dS`GkiP<|?8iKFZPfD5t94$i*zc{`TiSb)o%5@EaH| zX7oEVRpeKtlf(EZN8`IXR*il3{4U|KQheLT@wwA*4?=4R3|GEKc_A{1$$~`{U_A!1#o?yXnd5b8LT9V1^b(p5uZ!@>n%2<%kQuwBEOv+ zjgN9PKC9VkY;+)==kD@+{U;M$ig4spzrpiyzH0A{dcoBl=PT>6MqS+95hCsnqsFFQ z7LpoyX?{S>=N^k=L~Z9i5|Z<4dSKi4J$ei9zjH1|U0k%Gi2E_xjO))@Y%71Vo1KgP z6Wn``HRt@&TxHJT9-;F(IlLtiQlJU z4pPPV_j30<)Vs{tsEZq=F5=uLtFZ%@@=9|)$XhP0QEp$+F`gUN@=Dw0H)5`aa%-8I zy%9U8gF9d-;zk9Sv9r;yKx_bixXUZon;6TBNOO^2%$4)(d^}U}A9%=d@uj76+$hwR zHph(ftGjmqf3Kf%`%*k^f?vmr8r;3(ApS1X#FNy&jYgV;Cyu{axz=c z!I`OvxO8s^uB|mMhHvBcF#9Ube|udVMQyPjis2l<)eY}KAxGPm+17EK8P2D)Kk8R- zw;x0Mv%z^IqQkHCl0kId$TGxvV+zJc+ft6kN4bR#7F=7}UuovUY}()Y)#hD(?;I8R zU5p%UOXH&)jqmqpU{4;$xwxk)Kl_}>dYHoFiSL-)#RaH| zI0F-4?bs4>GH5v8uO_K|A&zHSH)ZpT5@KUa+aBS@^OJZ9|UwrFo$o&C4AdU56!-FBW6I?uxd>QMkXVO&x_}+*&Z1mF(b()kNIIWe%dY;o|()PB+r+FqSNPN3Jcc zCv(%SHkFQN%F(uEdHXo77`4&k9v|_( zHyzIva%hX#je5V#{!aH?J~$>jxLP$4_s$5|cQ(I?-StMxMKy6eIzQ8xcRBthj|vuI z+i0Gc0Po!-PG;YCaEA;n&M$4-78*^Pavb&Bcj|tQJB;H1I&_rvy~U?G zr17~1jhWLce-HEgW%eK(yHy=|p&ZQ%<){v-cgx7z{KKeYPsezsdf&J`z_y}y2WeiY zU&<}Syim^9562qKAL{s+E9OCUWbQWa()&F_q<3uxNAp5CnwPPoEI7YZ$I6&E9@XJ6 z&Adymm_Vf05;^LZ=4AzP3o$RM&)itk60GHON||5uxFGu-j$I|JPvi9!Z3+??bMLGH zI4YI?EMP}=aFf+U+!U4NqPCU6d^xv*>>`Y%-^=CfN^DE(`~39m&CSo0qiuPosyJ>k zYE!}fIKNo?lJ-a6386K0Xj{R6cFyllPxOoNaek4b@lo!}`I%f>+TXj(f^6EK*-ytV zzXMW5eksSb#rP;kzqG)s^g|dw_a7*9t_nxWj@a19eJS~ z%?stI4yxB>!*6~J>PWzGN{Y#?IvYQXOkz!v0bn>x7P7dc_4Iy_BPVXLM<>=W^DC+M0O$ zA+x4ry4T})zP_AmOY8esdRSmfJd2Uz+HQ~GDiSRCcw$y%H=0R{hqIy^T!t*U|E6%YEo*(g?_Wiwp4d~z=s)@L?t8T1h><6-u z_rP*~O=bJaj`6H<@B`^}coDX(;PxB4q!zML9bAf`h)c(Fn)(%3@%Xk*Wgc31+@xPE zXT8ub&6TuUgD1_^(GHH+7{hUObUaUA&JM=@%o19y_V`t`&&T7oRcQsQj(%y|w$KW0 zzoCH~^*bUdmQT4990z`=gY*0S9KQ~A*y8%urFT*p<{2yY;2cqgd7*j*$Z26-C`WZr zzgq+)e5!-ayYv`Qy`_!i*tUY(Z=_;gs9(y_yijf*&Lv!)Q3uH@^PoD0|8VTm`yo@L z_h2W7c_~GX=0$${OwKRWu`;HT({a4qu}iO*K%|#))Gy5o)A8odzA9tw^**Jm&{bgwc7~W zYOO@ua=Lc6r1i$N`$Aw~7nh(e;*^%+I~eGH#tjYuEBA7I$yx~rEUMXx8N1sKU{hY$0gvn@6>U|1fSTV zjzrA8UWeYQczTS6aqmvg>BtM^XkI8+*{NgUIX>0VgfnWVUh5os4z{HI!L>WFGcU-| zyijhK>MBkz)v-E8q+_V_$}YWP0+HTMj^>4OG%qdgt3-NHhjOlDCe`sher1>5J{cmt ze>*wM3*~5DRMxI%2WH{g!)vz8uRr8o)Nzb9dZNub0gqAP?6Y``EQ14C@ea;OUBoF) z6>v7e4jzB9^C9Flt0%cn#vJHk zp1HR5G*^YQCt-a(VS4PT6^t$cFtDIN8{r) zNkNOUfb7Hnkf%O@w{xO!En6xBzn27)UjC6V7yr8Kycw^5-^yZrhETE>Idiq7ca$q@ zmWLTjVo2l4DER4q_eP)7IIdU)ST$T!18ng8ZN+D9;d|FS1yKI9o5<%zL$Sw?%%1OY zrD~G}zd6ZdVOR`UY5a)J9m34%$EUn_fMf48w0_uew)TW$MGkWg?g*s!gSKY`K4ycb z;yL|Z9`w(;5XaPLQ1lzE5>too?2J}`poxn~)%Y0r8TwpoG#<(i-{oOwZ*QXiG6shG z^WQXR;`?FMvaq7riafL43KK>s$sY*7_X%gpfZPR^77S1Zk84^&a6I z_w!$HUP99?+-P3< z*GPcS$%oU?6tnaN)seA90+yC9<@ELy6tz;lW3FI-ecZXcJdU2LK=b0MEe$VECX&X{ z5#WFAo_p{adM{iCrY=k%&r~D8`PcbHx+m~jyh#?W_1#5QB4?tNKHmqdZ zxh4$0)w>QRk$5f?$v~z`Hffz526k<~WY6QdV4^4o3Kz4aRL0BD zc#b+vp0|ZTsK*X`NeWA^k zZOBawl7ol=HAHq<1Ps+567%#M&h2VAcHL`9Wk3Yv_CFyIZ^l))TpC_?p;9-mr#dxs3a8JE+dmyg@a%E$BXW$cSwdLc*~z9Y3*S! zCR^`m9p=UQEB^Cfr5|}>7zItWZ~P<&VXh|2K+bJ%Vxt@dEpS zyGhQjXvlWyF~S1(FECIJ7HJ#D~H|~_8*V+ zMXe-3+cAb{l}3TXk+qW&F+P_vX|Q?ugp8aL4BsBd4-UeyCi_YT)Ym;G)_TDZ*uF|8 z7{}x}tV{QJ;}h~~axjb>p(?o^x$9~2u=Uw1@?l&EsJkD1c@Fb8{;@n*OMW7OSm!Qu zp7C{8%yT_{8_8h(I{8zf5acne;1M2=Y+X6<)a8|)pCy1j8m}T*vs=nZn=>C&*6cZsOx3&643%X2ZF(<-$% zUxi#Ctw{nn+$y$M2haVyUUCo>cabO|H&%c9TsP#-3*@2K^g^-qD>LOLX~Mkhh`y~_jCoP%p$?OBQ^*Xg z$uaTP@YeiT9?y2aI(#3vpJ=y+K+dzqAq#MCG1glH259f%IO9JFCX`#aObfQ&iYISx zheC+$LaP^P_|B}YHayBs*THnJj1zUsy66OD$d0_W4cBS3lfRw8{BZMmx_*_Gp(yg?1-Es5kf z;1mgtCel4OZNzhWp*nac?j@1)BB5>QvX>ROw@`{xgA+>*k$uR;_quV5a@ij>AzA+r ziB=1Tu+^iUuCv0t;J4B-Pt!=b5!#%e6>S52mKC4@Rd;hp6mq^Jc?Z@a7jQ@wR-Q>F zk*Fg?*r$T(Sa)eSe1CP2%)nZh_D5gep?Wp-hQoxLyRp6_e)qmZ{+%-B#XJ@sN+k@2ymR1O;(^@l6UPe)%!?n1mq4*CH|Nf$;7**G%s00F$ZJwiOd5( z_$c%fui1t1VU4ZW&s6x(1jlj+2q)5e;BoN`q1LD7|aP>i1Iv3 z`kMuSa79b?j4P;3Ul#)9&yyE60Z{CE>eQyIc+OzGmaGw2#}zp%=Jp|b4)7C@r$?0b{f;xl@jHw=~(5((ti$;~YL zyc*~65*^4ragtoI4u*3Z4&Q&Kf#ca!2VSo^OD;?chNjsvC+2G7Qx$J*2o5ELMQ*Ug z--O%9^**iv3(gmjMQa66d1b=6dK}NY8`Z(H`4kzAHAhLl`PDW@eC|9$9afG!MpV=V z5U@X>Q3dm2lcot?^`&Id!%ZMtvp9AZ>QJrK0JXoxWc0R8@H{src{}P2=4(K+>=|;; zdJ|;CPr7gm^HQFy4P&K+Qyz@pW&CvJ=xeFJ4OfUcirIp8r|KM*^GXN7ihzSu*>8&#<#xA zwA>xzn<3DIH!JcJves1f7OKCgPEkc&JW*551P7q3|^b!Idc|LNuO7K zV0dBf!c)jKuGa#)Pp8PN9zLKO7o>CW5ne;Q&;oJQV`RyIqYGbs za!60Cv0Bagz!@9|FO+oQ(4H(( zriq;-K2LmrS$mziAWrXZ=)%WOg(PxB0L-+J{dNY&sqbGMP%jmdodyBW$E5l0w>9{b z&>3w?Nkz5_;3sRmRk7sM~ zc&{evV%^#*B841daX(=Qaz87zVB?evB(uUF&RjWjb`k0@#JYo*n@fox%pW52g;#t~ zuVexqj~C}iH28z&{^5-wn3oIZv|;9h%Vf-BAF!>licLfvF@3b*=H?2r?w}9IwD|DdXiYp2DxCzEL zT#(s=d*ykWx^Vv8WR4s1Q_hIv2I<3ePiwO1W-ugLy|;Bq$9wg^^r7;_1k#2zN4L7d zSgS&uijNzB<_QO~_eTh{tk&05xQzFUu|DSdG3$t|Fcb#(8$b4Xfwou!&|WVfVRu7e z>&jfL!-4C}b$u8yAM5)dXW^WY%5g7sp-wxF?8E+qgR8gE{>*>tK=Ptk&hPkdM*FDW z6dN6!i^IA2+#bj0(fBSDVx6MvqsiQ|a2OWTq^65|i#a;#z;0A0?@oooj@{#JiiY4` zuR$FI&*V7na;~AL4s!7`H6drpbds&K83gh7C5$iPcQI9(P_~^RE#jNO=O}C0REm2L z%=3aYV~$HKlbS<0Z=wl75ratlhzR)o`ThF&7WiFYnidp(k|GbV&aBg*eap0Q-?VR&{CW3)Z)S8y<4RNGY4xCgOJToJ#=oM=^Ol?oSQBbCg~H~%bQ`LZOv*t zM7&RuShH}Q8L^WNgQ4>k93Lv+b!eJ4XwSDI&N7i;V0d`oNWAY@g!6Oz8GBMSJQ84d z-1|L&Jf349)+f1ax%|0$ux5Y@x#}AR&1*tFKV|Sb^sO#LS1cvl!@{8V z9ED0P8$1UMvHs)7SlIn}(!uLoky-sIS6UwC_am2QuCe3rUNA1}xH_&qoxhJhcntS1u}08j7)azQ zHbT>~WlEB`I5sC5!N_0uv4^1_JX*2%=8J1QUapi8=+D_n5-t5;fos4?`X0Q2Gu9&; zzK7%X^7|xF&S}3s ziJXOzE{r|9jyTo_z^ZMvx|TQ>yB6p|+@nQgz^wrIoc_fj_8!)!S*Hhf6FtaGYp{q}PN%Xfr-&C;9qklqX0YzV`Lt|Ipu z0-^6ZBYxCid8wKBchx-luXcF!x zM{!)5Ohp;xR%|l_-LP;HGdT#dy_N25#JQO1kH`0OEa~eS1R5S~$8>dZk2J*qjuda_ zxW}g636v}L(uDzK(WDpZsHi$pOm*00>45mRa54sK6@ShBa*gVB!8(C&*KQ(9F)su5 zMK#g9?AfLVZFM_19rD$tTd0nARk+R!jN|lf%DI$6^`0NA3uk6Tk)D_r@%ZwKdYG52 zK^Wi21hQnK7yKyS*;5(E?z&ZmkhVLH{9f(_3u=yy7`F|tow4@kI-?l!)yE4yzui4H zV+YLgufC0Vty}|f z%RZ~l7UDgRvnFtN=RUIO<{AiIt9?)IHa7Jz0V~79!o8nFEvk#LLPI|-)@Vf*hR#71KccOe>%|xZn7jDJt=(!uC-^Y4@qnG@><_l#hUX#`u;`-)= zHDwdlk|+0kA>y3!{9Gga2IibT9L|g-?HAX>(yd9u+H3K86>E;R^p7AdXVyb%O3cJ% z7@t@!)+`(sO2(G2hZz?}Ec$fgD80;STH(>>`?Ot8?8G3sUPvYEHeTPRzOCs z_Qr4eRhK?*!@3LOjN#$I2r{zJ8@{fPx66~j@4JT^!P4*1WR|`kyk_qF{j(OwOSvIz z3EW0}$NE8nVfB+Y-gqoW8p4t4on)7hA1KOwsXVj}&yQus@JT$Lj8onK^L=(dJFky_ zpVH%)hvn^7A<_Za`OoFm>dPt${2Z{o;%W+NQg7yNYCc-#vNFob&LByv*d z4UrFLMQ@PC_rtJO_DH||L}!CH94Q!lpsokbC0IkUV90JVSl1iw>{cq4{(|4d7~pk< z-5;Uxv`sLg*5~6O+;6CC(gDHS`@*o%o1pyh42cw++&>M`1?w+oIj-i@Vgt$*zSDz3 zpF_e7xnL+88ENm8j(gxnebDkx-a1h-{ev? z@X*N@&e08r1rZ~qOO<)N8-vuL#Bhr+McY1c4V0q(Y9Df$tuyK%+uyuF@+>oE?dJ)&@ zYcI9oA#aJ$a>iy56XyrFzDDke4w&}YAk5mo86?Mi@R^QN$)bE+c<^$ou&r@3*gMag zlZxx~!7JL3x+_Dd6&?XG`Uj+>aUY=&qz%)yUlBgs5doh^-2EIFi2rAQq6ND~z2>-g z5_j%U?h5F^xb;_rUnYiu_PP`8$8aC9=CdvgIs0B%;T#4UipCtb+8-J5(y zuAhB+9_4hUHQ~j{9;6L*Xx^+mO?4bm(E#rae>uGaPR5i_y^(l5SZ?~3%gfOHf!AqX z4&pxM2R6-UHXhZl!v~gqrZ6rVkm5d6|=Y`6$hc${syP z_$5w;1pB~dGKZI%fbZ;l!TR^J+Jz-+ePHd?p{f&c&X$VThm1R~gp_k{2(&zk+_iC7 zAN}M5;kqUt$kY8goz`l4s$v9%VvRytCwkf>u-$PCuNSUk?c-@bg@*;caDM&=!`J6< z4`O5tYf|LN&)2>H>ysMea32web&gFwY7nQNzL2sw@8bRIXd7b$n#WDZ59F3l56Pz7 zoiGC!Zf!x5u|L_~eRtFTN;7c{RT$0HoxbpLOA7T{*sKTY-nxXwCw6mSA&sw2MF)Pf z?}gu#gW<{cr78t@?Kjd-2Oibl66OyM2ET)L{AIYe7%qqRUxLmGzay7+a+wR|R^$H- zZVc){v^4`@YP5@tWF6k$#eYGpS=c0etPlWAdsnhc?&E$OYxXBs-4N;^Ctc{VfO2my z>cPbg*}^^H!Eo>Q-Idevx+mh0K71)S#nty7GQ@RW3eHz^rW!zeeWmc+&=9yWvSIQI zoS%K(=wt2oQsJF#0T8HIvx(q5%h(xQiSHkCE22e=A}(n zA2tW*6RKnWs|n#$hwOAckeQ-IsNSKa;}fV}=R;*%w?HPV^2VM&uH-r%VK^)iC(BG1BS2c~HU`KCq z_oNqC>6J`(qvPedF&zKXpR31xf6`Ffk2tQb1e$>J6lrqMY7LBEP;a=q7{|*k6PVOX zkHEe)P_cezV+(*hHivDl2Lq^-ewM+p}P-^4k#*%)MYS##WfWW9M@P2cxFp3EwW z(x6l#Q6$RHJ^L#K=rl3iuZf3 zdZ`{mdM8`;0I8=vFGl;$)m1zAGNEY-h`MemF0V?PLX+C)9aCx(ECW z?K{&VAQi%TJmOKb~AstuUBwpk#Yfy18;msSb!e{P)w{LN8uAjFx zgv46$+SaQea-s3Hgzh-!|I`!UUS9>zcZBf~;swpacSqay=3lWN=?@;Ap?)NuvIN(s zJ@^6a?~n_NcsTY~SJx6!u6E)5(Jw!ug9^znZ*a`4ozE2gnEZ0?)+5-DZda_J=4XFJ zf4j-0`>4Mj7FKWqYh4rcOJLOM6!MGeCv(``a!*F@p_?H0@xkYqEvBHcckpGKSz95;uhD0He3ljOG=-;Y zT_j}_w!+G-y>(V={|@o0&w83mNky8I3$^b2u^AaXke97fS4OIcb-n!bBK44>Vm7VxJhHQmonTRiCmG}yy%QDbeBba?6WKoO z#~Q6uTdS}iEgyA(ErUDBsK1+D6>XvZMz_HC;HGQH$S;#_dWMi+R<6f&==%#9y-e4^ z@f$;HXXD)Bp1iq4&mH*}Qaqn}T!E3@aFyI#;r+=Xxj~(_~Z}t_P)|J>ahT z&&#JH*TVuYzg9c*aUS8{1MCi@WCSFv2hBCzYT6WHy&up6+E%E`l9Bhwy?GAtoL}L$ zLykDgmZLn0rSai-lvko-30LDCWbaY$P_x9}mj?>)C0v}jo_q3;4jeQD|DFb>bu&AY>y@HEMr`ppp2R&UB1 zd`|m6?*>=3G9(-D9LM_I<&E#(<6P=OcUY}`N%Et+53JB%xe?2nN)+xv4PU%hGSu4# zTnF7+8l#DN>$-!}UbO)y?R-Jk{zCh#75KdTgzvvMcgff-_`;0-JHAX=g|+<{?)A-m zkdcVI{Z_M!i03=e3Q}^HUmo|;2WEMVZSRQd!MYJR*K4{bqu*B_c<8e(1d4lR*8**lGbU8+VaWe{biGIZ6Gsy3!Q}jna}? zqhGAfbU#OanTg+zy56n7Y#8?Akk)uV>W6U&?k#oiC!_wlR!90#e@C_L22GsJWaO6> z^1-3xm%*#7ppE6rjAvI@!GzpD)t3TsUboH)iu(j)_@=LdqP$)$Z{pg|{k#=?wk*6% zyrvHWx)E;??*W6{GVEt|Uyb)*yqqUvzTBMG6IPDNu&4L)m)MPR9-W45Rji?QoQnPR z8>`{Sgu0Oe>3)PYWXnr4V(>kDW7lcaJ}Ad$Bd)RU zpVgH~k#~IQt(+Igi=N#RuFM}HyN2@m+dMu*^59YrFmxNC_-YBCUFz)XF z*$lK#?d#MNWS?14H#nnyBBONSIykc<cawq4Jd_<9Xk1s!_%7w0~G>bpbivN0KT6>GpD_>9idTevTU z&zbXujV@0>Uccxs1Bth%qa}<#KV71qzYebDYR=1(V$5$?!i!VWCG`D;gtx!lvPa|i zz;*mWiLs>XlJ)rBrGqXq%ma;KR&cMzTw*lI3x2(28$nE(TeXNO#fOLtaAhRl?R$Y z^>@58X0sjkwQ9EAWFWZjK#yO^7H~zSUx7!Ns->EiRv<2tI7Wj<^ zw@&uNvwN9YMLefmQ+T_sG~-arRv7U2>rs;gy#E~D2_~*?C8O^agz9t(`-IPmG5CF) zVX>OBWz+BukoA~-$FOFrcIpDA6AxsJE7=Aw7u8;z@)h5&7vBY*9B6iVxkbY z;8VLoN7QRsjNc`D+gr9Fax2JT(a;F&uRY#>SsmV%FBrBJuD5z%at-^NY-I+0FLdIe zy|=>RZ_!ORVt=EOI>Eywb_!lp&E9I_`Bim-o3EVt=F+Wr&gFa5I1%-RnL+O2Ig0o5 zhpU!_9K3?h1-w7x|8_o~b#@yB8_e^6QG)aFW#(}FkPBZod^;?fx+ZS$ADkcb=?YK1 z9r?(q+hOT)$ILT01`E%21(t2c*CQ{)`|{%<$g9QuCMQR2J`?46dEV+o@;clxhoLzw z6?$QAYg^K5`m75a8rD={U-XD-3E9Vf>qBm$0iSeqC+w=2@2rhJ=%J<$f#bUIwfOyH zA6b0gzp<#;MGyUf=W56sAD7;ScsItkh3vc2WQ%PB;pDlG3vZ$CUrf`2clfQhM;!y< z>EQw6etyBt9o3OORK#TdfcAhFIyr$@|lJ+OS>FHmd7+yT|C4OM1{G#GN~3 z?t)(_hKCp88NvKueemPU`J?{+u<%~XJ^M{?j=n|{9&Y(6+xsXGmT%YlFwhj=8PZG( zZWlG<^lg~XP-(?ld-T;)Eof<}!FLr0!NHUF3tvsZy^OF9Fr(RgZvV(1)|=f|{Jfy?os3f`INKJSSa`J)}mYs`~31;giB?P@n~`o^X< zY?Rcsa zja*6n4RA+W?)H|2pkJDN>+MZ``TfQKuDFE@eZzKw>V;K~xo7dt=R5-_?7B#Z*tQeq z9bI4?l#J)F-3*|0BO?V*Cvw0i;<& zI^desLZENbge8AHzYfnUX7<2)xdT;&L(PNW`mL8|y{6zAY)nTe)!rpp?dlJ9Bh4=y z8HqL*cZ9)7Ed}GH{*X7*wz6t0p7G)Hs49Q5unKvm3ukE%FS|w;g8z;ZdISbRw zgoPSG-K>iO^>=i)F6*hkJ~4)HEHXnNzw~VC=@X28$*$Lhu#fK){fJgwJcIg?-CY;# z>i#PFtM_`w66&vapZ3tkxDnflehJI(v-~jnWs9*P#C*LoAQtZ&U${~*dSfcS-)C0` zxIJw~#%J?g;F$2*eC#O|l`D1~V7SxIjA8wD!Q4YHf3?P9@)^J1W1TZd@G%dB1yPH} zpKFS>6a8GMsVa199|)ZTy4vni#oy-QH@$aMFOq0@KAo%WGofp|1F^%?c2IqRCTL!_h<3BP755nin`}Q!UxGZDWq991Pl6?6mj=}v8 zJHk$3o^1ace+U~GapnomY2sEHgJhezY)qX$s801O)tZQFzZ=Fdf7!K+53l{<)%+bz zMkBA&2|aLMJ2)fdRS+EcWA~^6~DzY`^P#$g8LLnp{74r*)8^*^B33lIYtmYe~Tpe z>@IL^duc;VCEmsEq7So{juUL$gWze)x)~F(AD5QuLBBVvgbK`EmoFceZ5oI*d$%rr zpJ9`5^h6+>Dc4?|+YRrarF4K_J9o(f+;_q5JDwA#<5-P)YJhiQPRdLt?*d4fWSx$+ z*l30U{5+Vi-~~nfZ9=@7xjGQHw{^z5DS?o2Jl(Yk#?HN0XmkfKy`#fxR{F!`%<+3yVSFD+ z4PoM11FrYnAMRBi-Z`ivo|8Ce!{p|%vTmO+z5!<+1>szNi;51MR=c41woXyhm^*)@ z7`HDvP`mz$%%da-qRy|lPHzN=mv)3+XVkf!_ik{tYnHSf*I=L2j3K%44_Qj^ZipM- zHQyTj7Z73$v&R?6`XXoqxBB6;A}d#z*!(6leprRSCyAQ96LU9p zLW;2MQ6gjVYVg**I`PE}vF(tuzWhi3m%zH-lGiK{+fKSxBKxzm26lCH%$v4KY&*G4 zQ`ywTwJ@iB!Q;^NcxP<3KRdD4eWd=J`+1>k9;IewS#$!8? zSJZnO`+oO1q%X1WwZ{g3@6vlEtBTVQ=K8#Z7t`(joD*GFfx z*L4$l^+C(o?hP-Yi{qPKm$1JfHdVq<8#lJ8Di;=7jvrJOi8&e5n9V(z$~J5&ggw2} zoI|kw?UQT}Ok-2{4b380Ir_=rSv8m&oo$5tnxp)tVJWnjY^z?hqQvmLF6@gwc- z!>|=bw}LU2PDggLCLcm%xkC!!x~J*e_Idcc+_9aFKISW2>`?$Wm&???T~SeaRuaY* zbur`d8YNJ)a^>xXs3UjoQFbkNZpMj%2hhWN{}=NoxW@T$kcE}EW(I*pFmcWG_SQJ} zUg)pRR(*NN3g?wV$9}h$wR?nn!+X`3!=rcXZ@Y4+?|X6OjMrHIa$B%5n?JMf{T{(Y zJ6F&BD)>9_4Q<$m6^VTDzzXoPytnfr*5XbsZCJCR$M|V!C74@}53ImvPp@Y!*lv$7 z?(hB_q&8g+j_;4_oY936-*Eg%F zu56BHK;MqBldIRVpq7uIZap`D{}=1f;25@Ne5kDT)TdCo?)URu#+Wa4r`S#-nE?4u zpzEgcrUkf1OT4bn{n$!}$IyM9S@*ZiUL$sXOpV(~+(##Djy#r&nBHN+e9Hc?tG+|H_9Hpm8k!ij1)sl!&F=k!iJ0?T z!VVYgW_{iEaZTi%Hk5>FF%dhoSX(M$HWEcg-;C**jJ&^%I>Hl#rR2~(nPeG{>y`;Da{c5)73b&Yqh z{6RN(`T7({Ht(|IF|MNs)0dh^MeN~v!W`-irTq<(7-6kFLu@a6#^0{{SSY^Nk%ZU? zv?U0A<%qm#o3G16p2r>HWvzU~0=Mku&7+UOy>VVqYB=X7EUdhkiP-MBgqawuWPj~s zTm^aZF7LMc;yQq^tqx73jTBhh4TQCpXh?Hz?_k8!SiQ$?I_{g@*{iGgKFRN>V{l>< z?p?hVd4F!!%BZcz>Xo;N=M*nzzc=pVE8d2K+NAa|ZN7?_dBS-nVy|WqmhU%?9k_jk z&qH1t3$>k(upfk7`%=Y3?CUzh0v*1vG2L7gSnDDnyVMnV z)6>m4wG~#W-67tW>cgz>v$4El3|>K!Ki>Ba^SN^QBz8N03?uA#XyRbP4u9w%ou3@R z2B!~(CWA*V`_=;QH#yo#J(7xLg#B5%i4$h=%bktXQsKvoq);1v^1`rpI8XdO0Bho* zj4!98(0KcYrvk<(b+-+BwDg7$kG$c2-86}3m9m#L`o4#~X*Up>U);Lr4Ek^B?rgSg z#R+z?(I9y9)XitdAAByfYb0&9<`i>%KM3;L{M$(&f0c%bIq{r%6WZ- zbvn_~tBKc+%|xEwp4)7${#fQ179&mdEm1X~JZ)UWG*^W&#|=lNuKwq&gMVRe%zwjj zR&jRGElzqQc7^k&MmXMXb(9KPl`KZ(gw&>y^=9YRIDe_P!}rq^v(%XuvN5_c71Be ze1~rpzMaf(^)MEHE7+=)G$vuE;9<;}kT|E%c_NPe0W+k>%cBGn9NUr3X=R4aw9XqT zePuj|siejJWH+n!fN`w5LD8qGfm&4jdjsiKF{k|ey3ES(j$T$ z+O7UB!y4mz-%z?P(?ytFUC4Zk`^w|zV;-FCBR%|elrYYvoSjy=dU4WX9B(^DN(b7m z6ngRdEW7)Kt78}9^DWz5I(W`qA!PO;Hg?U+??JtBZ|T%h>57a-%%pra>%F;1V+Z;) zImKN%OKQw~ozz(4HJ&=z`FO8t`c~--kL_%@V-k4W^^Mld#QOrVKGHk$bfhx-B!KgQ z<9+0~KiMf-+IE?dwCHgfoPs}dolwWV9>=6_e8bqRH))VRIVa z!C~7YET$?Fyk=P2jB&)@DUJIq)tj3uB)p7-IrUiw9wOFZP_fuV!XrRTrcf!cmuzo7Y!FRl+ zzLkFXaz;40C;|pO4Bb8044(ltHBysZS;CmZ;gEJ!5@Lb%?_k0U>9h6q!m->ic$sP% z_ZjW8?x)Js&#d67e@g&&HmrO4ibrOkpr&E#V@mx8pXk4sGo){@o+3LSTCN@0;C%vwJJ-!_MJOj3T4Yt;uVosj`oSXCHcf7d1N2S`!iZS{wMl?^!7vh zNbhDH55I7%<38VYL|f2458G>=WMBO`bA>Hrv(I!N7s4#6Z4|Z;R_GOml?m6J_w85; z`iijn&4h?NvPI-A!Ac^^(?eSbYduXJqbBN=kS!!n&%=)}vd165bFxKseYqls^u~#~(E?+%<7T-chhE~Em~x10;ZJdG zg?5x;oG6FN&=!%mB%gRBk8B}%ltX_;i+Ts5Eu@!nXfxI@8Vh8Lr9nALyXNU(D`I4e zaSUNTF5c5cjBGjjldv%BLN5^`TiWP9L=0oGS;WW|k+&pY$ZJjpKs@1F=tzg#QuaUs9V%`6g>ehJSCv!?#W;I~7SexbZ2 zzYtI9m+&mnFCzZ~rUOkoSf?Lgr*Ps$gQ{x=l1P`=cp__$EM zK*Qwm!sUucX|oQS8)7ySq^Ur3%ZUmB;0`9gY?`LgAem@hZq zJ`$+rP(Fv;5y#O*j|_oo4q@AliQ{O2X1u}{!g~6Pn2j+MZ_L9wR;UT zZFytZTb!E_w)9kM;pXRBXx=jPeH5-IkA7<-^c-@M->$m{J=%r&8NbJS^>xug*6Pp9 zefbkut2=N*wvmWA9^1kV!e4-%ZsQXgQ*jP5>y+?#aS78O`2e;VoLHiPzUd}AAnAEI zmB08}1{cOnh#7-1w^tb?q-o7#J$lr_)|OU%-eYyoDRK~^f0(m%d9~1?)p)~2J|gc; zw_M?h<}29Q(xXWT)`*;Nb>Zdkc>c@q4ulv=Qnh06j?&pig5{(YynNklIHtezi^*1; zpU(O#DQne|57~1Y*0c|A)*UPP-0pjYbB@ng#Pny-xm}jWssVT}?fzzA=)7BOZGIK3 zYF*-%JqGWUzIG8LbxAB!Rt<5jmQ21pQ*4{K8#s)73Cr60WdxxAsO=z?7c!> zh}{SkdbByqo%&V4Q^WOJJ)7Y^+>dynTjx{!z?4d8XEbF;rw(FU%{P&}pWkzE?a*`Y zOZ1gSGhg;;UK;aDErI59H;wpSj_a)pTUqQEAKt0cL-3xuDsl4@{Jp(~It#3O%&s>s zfpdMEE?Sa@bKnzyggt6WJoe#3_+T+)|KuFpv%GPXox0V67bKQL<~mt%-B-K=WRSu< zzO)utco|ICe5}qH$ExkMW9)|h1m@;j3WwIuH#vcQyZvdN&|5p5cgT7OzLvtC=MQM^ zeOkD=u8M7aQ4B3R#H~!mG4r_Io~d;&7Ho&+!s0P?ol9|TWtG;CE&INmuWVTW^Je%Y z&UlM=Q=D!K12=0j>)H1ptjl8CRXC>CE%OtCvrhAx`S&5wrfcBUTHH_UH<$GpKZXBT zR{*)oZrz?jdlybStTY%K zfp>-O9}rR-t;;y0a|g=Jni|gBh5LUweOOYh4{s#Tg+~id!Zw0)uZ0;NZ*D_++v^>BY{&Z%NqTJ6 zxc$6wWIh;9OgmEc5pC{qN|@<)imP5PfR}wc2Y1lMGuN0`lJ@UY`Pr6*;Mu1C)(^PX zveGqJXw@Ns4{^_jwJq}UCt}SZ%(LGKUf(Mp_8Hk^7cR#FRrO0!6>ysCN%P^1=Fco= z4_wz;{*^Wj0$RrmJn#Y3H@qJa{zKStZ$F!UE+60BVLLh{ z5cqaDkLh|B22S1cUXFeqm-Jg0n!AU;Q@IDJvu(0$Z{T?Q_(o`(5XbVwlm-dRbE2U zpo`hluoh2lqQ-7rOOzG6*1!VW>>{6~cz>t6L^<*zE4@s3AeH(FysIG!7*rb*Zm+ed8d;&K=?w!ND* zJ})g_2&|dy19sqADJ&SfV^*i9be`5O5^@8G*nRJE!@(5K^7S=O>Bo;{=hemTh_ZsW5;|6nQBrf8lxHXoig(<=YGoz7TF zh4Rf&{GMq(NV;6U!*NV&wC>7Iw>`jhu0MdnftUCCHo-eFW4f|k-?y`Ry#i=Gyl_bS z(|FF_C|T%R70TNbmx1HC=8=D1V?V~95vDG|-#Z^KgGo>8)7D4hnS)z^P*J^u?_5|0 z8;=3xLx9erWnOE>@xTqt#Dwr3m zKg8b-nBS6PzK{;p`e3fn@*(JV3cqc)Le%l+oj*_TD#zc>7d-fib&c#x!m)6v??aGP zxc|__I!QWeG1Ktmh}!$)dch$J_bUJ`Z75rx`zukViJV8*Ss>LAXA5o%h{$ zswi*e^9}sF$wLUN_}(sVy(llx!k4S=EQcdU!Wx@T66MXA?9H<~K7@8=@j5+_NAf=6 zPssM6eYdA?YUPi<@~9fgT>AR)9xKZ5p6c?7dMotHNGI0O*pGMhEQ2VIS)aE^@P5vh z(X8g>X6~}O41$+$Q1KmzScad_y>x z?9Lj&>b@V}=w1d|ffv7MU`=$&OB1d=*~bk}l!2xG%$h6P@OoqPbcHPW2( zd=z2>a$gCuhY|ep_cF-PVqb1;!Q4n~%ig9(@@K!xK=NtIw~mN)Sk{B>a~5;F{%u`l zCmiP<)dQLTdO!YlY#B`b)+0a3AD;m;Y*@;wecbI+DLfx}DEc|>n`L*iW(iyO@nrQf zSliY6qW@g{O@H(d*2mnBe;rf?$H%X|{Ad{7ac~)|z#NC*8qs#pt;Y-SY{y=kMURf; z$7Q8($0&cB**pAR(ayGv#&6S?rJ$+S=19o|eE#;T79u-G@+0R;A^nN%_D5J_`>WLo z(q9q0@<}O_zkdaiC_px%mh z0m8wHJ9rz1GPs+1@)Yljd*R;$|6#))t<8*Z$2;Yzwru!^y?j|#DX3389DNF>FG2Og z6#W{t>%_O6PN2Z4qOm*)U*la zW8aoQlK$tL&iJe#9ZubYx!%VT(0yijXWAazGlyv5g!XP;J--wr#}^gf#kx!OIUnB6 z`&}!6xB4AEPsDXulT-a!h1w3jy-z7POsaSjj`ft}Ex)s!Ti+;wu}{B#5iobB4~iD% zS#9H!$CSeK6D8m2`u0xKgYuRR8o+4$dJZdvrBf1`#2yvpHEZF` zYYR&tx>C^m-5~GNH6Q*4?;1Re>)0~#INo*M=O@Hm-oc$Q58edzduEf1?|-@LD-6fn zxPaJ?pda5tZ{i(?koCg5Y(IW{Od0qG@2J0-g?ni#BNXvCEWtcj2?ci^;T(O*AO(`n>w1-zGeh^BSaR zdv<6U=zQ0Hb!#K;B!AUnG=6C;M0~yT+jleO(3D!CXY&ZYtFjc_S`GT)jF`dWvjUA@ z%JErRac?GK+deJ#{EKh4`n~5iIM<^&b;61;{<=**XkYkv^*z=)ne{sMVQ3^<_o@hH z&zdr@7S}E3w;B1DQ16ssLiGFX zJn?=hOdYIxw0(cP3pO*F8GW&2Q}l|#aIJ-bNg3{~`zEkC7jx}rJCs1KkNfuzRXC53 zA7ZS#KCkvJg&v*{@9{Ty2g5v3azZ7YFGwqe%X8PA*TDJ`r;;Gtt;%8jKHP_U`d0IQ zoWnt=W5@=DZ0EzU9{9Cy9OTyr&kZ{EWdU)iEX=V8LPlwf|CEXE>{_AA3is{hooD1h z@`RbODfm3^AOBH^Y#GK!pS}k}C+5c1BNj6zKu~Lv$j4o{3u=9n0>|K*^R;GcVTEZj zKQQwy9Mj(J=Z$Nj-YI5mUcxSZyICIWp0@3z#|wO)Wm0q2%{QDc8k7%eCKaJR*KzD8 zsIxMDfcwnNht&?l4i2uxdC8a{yh-FI411c;`0< zcX9k3^YQkAlh*}aJiY+-=vZ%mf^)*Oxb{MOxWJt(3gC~9b3pfejE7$}$sCr-k!gHF#P7||gR=fFf^~7NoA>IFFx@GM zHw(|hJ2n;jTAAaSNU)KxsVbdE&B=q$Mr(Hr$G%OwWFY+hlg>5vD@(KBW^N?RID2pJ!?B~K$wVi7#qR=;=0lOO(TcXSc_@h z=sEca*Tr??)o*#j2P_uXjT7JFJMwVdSoWzvI(V;`;{oNtiglyP;SB?}<={Cn&SO&+ zgevB-YDK)?X4FCR*hBgI6!X~F7ww@Bt|4fAq;%S&7$2@jz6hrWh_*mg2;V3xfQ*ti z1II-Cht+J#g*zp|!{5&p?VFUmpGP_6!i~3uBfc&`zu>x-u$*@VFyfP=RSa#**gQ-;8(jJJSlFiTqXXM>q#2`v{Au%!LV=cl(W>^W9}&JzUd~eT0#H=YDLs z`639%!e@0x7}>WVr1U{-foLCLWZ#kOF9nwli1rai_N8XODj2oszqVxGnvnblK4{;) zv4O&(M+aqN`eWRF&E2{A!GG9>#`(a1&EC1bJI*)GeUcE5Fwei*J6>b134cB)Fly`d zxBZURSWEf}p9SAd=M?gm9Y2^9jC)XP0*n9Y2*_U>QdNv~(n-WfUY`P&kX<-uRkkJU z2)2FMkbmx51Gsv>e9$kjm!#mjmi)q8_9`&5H+Lr+AH%-IlndhmHYu=8uDc)CC5e8P zs08pF?*h1+lHu0zuh@3D&Rzv(@I2Wk3bE+D6^gdRo4+otXn&p9HaOsbLf%-r&B>op z9_e+PeOQ4t*M1p4;lzKu57@T#@aOy6*8j&N>}H47_!JcFbJ3lzXj|@r>j$*i@YqQ~ ziMbs2s87IWDA__7*;0$oj+wtPukM}rhqdtST_62Nl=sbO!2eI465DYc?_oE{BkX_W zDX~_*Xh(y*i#1PV%;_RP+_ur^G7a%BFrq zdDJ&$JO-c9*QR&Lr?nR`YOA{KlJPS1J&g~Fuko{72uhtiuR}wOD87W5K2Pz0-L*_*I6a+TaXKHU6TtX^>2Tg`-*K}Wx4Q=9r8g|Z`%BBgASpy3wQGU zzd9UW+j7^Nxq!FCOU-tOZ3iB+;gwDE5j(G0y-Bq1ux4+*Vc!33TVSQdQ!J?MwltGS zvF*3bjkp~?_fM$Yv6gv>ZHL=8=gBSqZ`;R{ugTsWxr=Q##%;s#O8pHw9W9%GDHkM- z)(zXVL~NVa=(Oyv{N6vmbUNiGw14TvpQBH;dg(Qq<1g|?we{rPqR*Ws{dMW>!oyMTbgwIaCZk@`(Qdp8 z-*Gh$F0QFk?bcgttIPxAUT2#v#{QB#Wz2K>-Fq@0=Oxs(u1z04#5505*Xe(w_v;bn zvCoEYOThWs8kgpI=s#+!%njb_dK;$(`;>XmQd%z?hq0u#t@gCyvg^4}<6Zf#0_W6( z?RRU!V<+apsx{u)q4@k&^sOOZUfQ&_nz&5lwM;rMYioTE485j2dRHOxl=-6Dr{EMz z7O~*4qcR(g`O<#?w3;op?HLy@yEHr(OuSdLYiC4$j+IQx-pD)RSS_oEhA|i`QH|cH z$b;MU^HqOt7I~e$gA`-ygnp!-IJROXO5Z=Jzwy&TF}7kQN}t}Xf6^?kp{>%V|Ba(q ziPBffaYVK#ef8g%K^+Y~z+a?V-@_OYPubu9#z(9~IX>_dbyy0H58{!{lz+*(LjyA~ z?+Mdhy;G5=yyejRILsF%k8KfnBJju$Y|9%kViDF2<(JcySAKr|?wn|KCpHg1jtZ0RO6eDU&ItU~C$d)q= z@YPLZJ%lX%}+LF^xl8=8E;otU}F(e+DF)`&*=j3l=e|u!iYybqufx+ zOIQ~8&pxF*!j$$Y<%!sTwvarrEosJkT1QlQR){~F`TiwLet3VN9hs)=5Ys4+CHG|FZo8zfoX(R6!@(!wMD0uD`_|BDBO9f`}pe-CMF-fePjQ2`o z+A7-SN4CS~@8EBY7vRc}91%rE>DY60(`}&c1d~ zAe+fv`XipRdoL#P+%1SlSaQw|ydO(8S58*i{N!sOBVTQqMlD5N3i8OO#3P%P^2lat zNwz5UlFihTY$jej+9&eJYO%kmC{OesNfi5AiF!ppi<_Sa$K>RVu2YKiB54ZPA#M%Y%&zxK9+6>aqn^pZw2Qq+s2*WtGucaj#B*k8DxqGqokXWHad`PZN*q6M14Ro1*_nFWF3%P;O9v8=+p&&!T4P zZ%qS_dPY2oFJWTbM4RVee3dpU^O<<0L(BuwW~DsQe`1~nqu$1-SM;+OC5i{NB_3ri za!yM8scG+D8@sHkvwHSyEU{Wz0{WelsZJ7n9pqn&XTvn zJ5)z9WQw{Qfwg37?HoDun9XJ`%lucLHIdg6c}B+9{?+GCR-+VcePgqL^7$$HuP)k7 z(KhK@*1!7PRLkTakMfy#HGk9;7|B!Sv)81S|MV*Jxw?Tz_7RWlQ_8a+a9L6B$$v_{ z>Q$E%da1uk`y|Ly<}>NNvL}jdMw=<0$rjR^d@6^L&E#YHBi_O6&y4z3IeDQ4@yM3i zZyHk3W-&KBvF-F2O)2?Gna|Yr74k%zNsHJv0_Bm-%6wMpC7YG`thA48rmUjAQGZD< z*+Q8?w){dr&p^GW6@C^qQ-5DK@Ra#XaZ}n%PeyvC_+fmNHY@X)@<3@b@#vXC@(3fF zmGznYOl?I!i&0YAM>Z?-ne;|tf633r4f(tU^`36x|LnINx~{Fs8b5dAWu zI9q|GMaC=gh5T$*k}0pmwlB)!|K;=Fk_!qQsmN2-=lSzf<)#htl=&R$p7KwxGM^VT z@W?*mk$ohO+7>*GLV3oDc?9WwjC!MvM*YiYvQNpQ@kY5Z59MulDP&|bMU840={21E zNnx`xpUJ**inRsL$@t!v1^B?Rl$s?P|60(K*dm8n=RQOrc?1=p(9@$JiBOb*~qrqm% zQ;J&}#+TZP@g>b7PiZspXbdXlku5Yn$bVfL^oo8KqeS+R4ly1guM+i=|Hx*_HOh@M zsJBCdpOyJc_HD!dlFh~q^;wCLJj!v>o8Hit^eXfD8Mb|hIz*mWpBMjXpZWY;gly)L zpnv)NV6tvzFSB@=cSZ2Od?wyA6x%u>PnpkVd1?xbjdX@Ry33;S<2HL00XQjN8Z37kZsJ}N+uQlrZ zQWfwopOy9zk18F#FNpLW&}uFlgSIH^^99sf^~FI#HY@X)^fpyrB9P5bF$*X+2-81% zMWuYWDB(Py6ERkiqTNXHL1 zHsT%OtAVn`S5ENZO>)8RUP-{>cZePM#e;QE^SSf4!^o>0&Qy=V`iEG~!3RvlUW_3u z^=1Wc8^52=Et><7v-@H!&Lh$hb28^_wgU5VAnZ%cZEnyvoX>u=7YedfGgR?RfUy1( zQkaPS9ZJ~#VK4amuq0k}c00Zk?0jlxJf9(~Wm*;!v5{j5i+OX62Q`i0$;YwY%T>=c z!Lts+E?ILXVt+>xHdN;_AGbDuyEonkTdyZxZh>c6g!#m#FcEVeM%cKGbv)nDRo1Ux zHastFc6Exoh($g)!$j}`*>a5dAOcADDl@N5ewa?EfulM$%J`oyx@h0 z0=ZGMlhEdB+FASYBKGJ@DHE|VPJ}u77VwIS9sF}~6kNKQbm3hu4#gU+>Xk|;%^n0Bj&MsGM^Q-j9-?ofVcMJPQM+E?|_*8P^MCC z&j?#St!GcdmZvn42iJzM^!}^iaQU*)`7`nN@i86c15=xE!a8K^xl5R(*&z9&{Y}}G zA!^d&#pSYIhcIr1KlvELmCQv@lctX{d;K;Ne^awUSDx9wp1HTvl}bA%%$$^h?;bnp zDsQ#s7OOPSl{P&Y*eeFHjJdt!r<_!H!rPD1%@vI!`wqi97z567%~&-_>BW!IwX??E z3mS_1FKOTS&toYpX5vrjJFBqKQ}JA_v+)G^z(LN;W7kjV@5I3dDwwCE9;e9Xoj%2y z&Wr)OFO&J4P~0C%IwcPot0z4-BL==TnLK0&VgW60$e&;6C}r945F2edZon%Hhvb&L z`KF630I~d_>9-dm<~h?^9=&uVzVG286wm&ftfqtcx3IH({$Wk&Yv+s5Zl!nsZrXUC zHDsB5;{$!^!K;}twfWd#({OM2&CYf5cH>vDpsGyB`i5uWc!%I{S;T5%?=lf9A50jv?fUI5`kvZunMQ5bO$45>@}Z>5 z^_wt5HbeFWYZGDnTHRx23hdYr!a6hpK5na-{iU<{ur+>T{Hec~8;-zzGmZ@i(<%Zt zS@VqF6Gh&|fmhh)ntbq%-#G0k>L6ZLRVI5nya+608wTIO8XHq7<-T*)+h-=+16A1) zz6f;?_V>;e_Mze)bde1lwi3^*yZ>sI>D!29s8|HSA@$63Ap(DwW!F0Ma$p~pV;%%% z*N^vThgf^LcIKU*HNy5rq0nJVZPSx&Q1Moc%;L;2*#*^52)Lae*h~}a>GVtT;!PLW zZrLFy+f@8h;{(2{GyRS{(o0XeAOnBHYbUHe_a2`gBOl3cu5Kc&u{Z|JKldJWeF5tD zd`sSU{T|k;`!R?U{uWdtHakB>c60Z7wyBjI`gnZP9h8mxgkICQ?Yqc~jfjQxZW2LQ z`a?hdqea1hYlE|)OUHLdcTK?hV$qm84cp1CB9`s?#FQ|DpPKS#qdv2XV>4h=Ri_y- z=!2t!Y~=T&rn3u(-HUJXh_IN?61le9N(Rfbpygiu>XG*Nj`LF; zgVgY`}agi@c8BRuGrtRo3-UiY*n&|tr(^)SGL`e zCAL-a##($7h!>CjSk}NBnDSoOiM(ou|8x+KbPzA8!4~3eKwF4sb?Y^se&Ie>@kx?| zN!CwkhV~_UXv>w@k}MHBrNpv72!#Fm|F%Vp+7foy#z-EY_<;K^9wOKb+k86jGJdaU zZl8Zx-enQ1YQU}>X~_t)!Mr-y(3UW2OPHIzk-YYtj1T@kMA-cQs5AtOr{1ZTz+PE4OBQtsULu zA6}!*mRa&2%^y-N>*-#7x;czU1s_Hu+wx!3S}GMa{~m3tY=aU+TZ!||$dMt}2Yg7} zQP&(9a`>BJ4*0F)R?pvkZSJu=N zQ_E$jxxzVKvPBJTQEU3T3$N?0q%C~=f{&d-e?Jy=;mfWcp^CJ=vUlAp2U~y-%O}27 znuSu-ieLIx*#;$uwi1_KSS~~E9r%#Ag_af2-&=$4-UUcDo+Lh7KiIFhAQNsPs zKyxpip3J9OsvTZg-qS{Tfsc(zzEzqR6E*h&U*2178|?Y2_XuB$ag z(OcPV<>TZwkiS`AiyUfbi<-%op?v2(=jnkRa#_IWS><6cpN(>d@+CZs?**CcdJn~* zj%jeM*KivDL#=g8Q)^$Q@}1PSVF{wG#Cdxa$&kAaHNsZSjqUeNhFk#j!x(&Ed&r>= zLW7LQs9|k zgxVIhRIo+O>HARr_p;A)%er+izSo8M+_2d&etlFX)jF`jOXlq|Iupj%9`Yw?nM~9S zKTNH%4N4GgZPi@5d7=zC8H}5OntM9_D2(rQVV*Wp`#=tTAScCw9L9pz@*?>_4t>;!1vrcaxvR(L^6@{Qw%-r)GVJ<$WHH1SP6Dg6VqVlX zsWtDLM`WlOf^C-C7B#dLv?B(rcTO<1D_l=pe3m~SwhQ+DbTeZqMe77DT-pBBaM1E) zX3X*UUV7g%jA*5`-EmqMzQ2%Sz|L&lCunh9mqwu`k2GL^mif{^%MB!CjAv^C*9Uik z4Op$Ib?CU{Fmk`g*IE01!@7>YrflNDT68REoA~6pdqKP0!i=>{>L=K4I`Xg`+AeEg z#?B?SqfW&eNiF)M<%#KV58l&^742L@zswFNLGg3%xWIME(d`DT*PIRl=iA+?1#**M z_oItbf@m>t%SUD1L~dGdL-r>8G#zqe9m({0@iz#53)$%#vPXHlX*>9~``Pi=$enAj z*R!!1i@Fv=N6ii)&dEc3CxPY-&-d>uPEb|CI+Co?uR92AV<(!i5yMmHmOtys*n`v3 z*K~sG&TVGw&Zk>+sb>i3eE$C43GX0R{)TMN#7lHm*?Mw!=(Dp$z+Kp3$e#baLmRb% z@3DA=ZQBc+*E0iVm7}1tsiB1L*JjFob9fK_o+&fgvWg~52_?3ftLBXYt-G}u8=xOc zw|&|`Ca7lC-T}X@TDcgqrzQuf)8`GOoll>#Y|v`oHe}&Buj%SzYshw=pA{H0t7pdY zv|rQGqie_}mASSTXl2dJ*tXf_w3&l~6ka;HGZ$jvUK_IR9V_Tq(A>JNjs67M` zvUWB-_)I};{o}juz6R&FV}`6{hcgtuu}3=hteD=_0>-1jlntDCnp#{~N51oYXZHrJ zeJ!|0*7_Qa23s!ib?>!cYg%f`-0I(?SF}S&qRK}50mNM29OmDI*Yt3QbtLETcI6hx z)p*{J)q8%E_6KghPf1J~rb4Xge1D2*E%L|S#;@$gwR z{N9>l&oXVc3Yy8Q`*PIgH+NzdYYx#drxe6zL#yxi;J$Lt752=(gOZL0ZNiJM8&MmP zWzCuo-%FF>`!jc!&Hi%j9-Q~TSh2g^B57)y5E30w+Gvjxyz3j*l4)Or{oz2%uzs}! zwVU&8S3iVxTkOa{?&oS-)~?_LEdvhrVhckq=(`=8ec(LZT)CVq=zFSAdoQe6 z>Ep=$HaQ?@@^4*z>w@O^pEKL}>okqjUqJ?KaV*Wf0{g)SJFAlY^`0mvndw*SiL`tf6-zJyc6Uau)*e@U>w%CWyF<6Yb3YMxLf){soZ!Dc>w6KtK9~ zxiC|!RGIzEADnI%-!?)E^O`cu7dWY=u}tK+UUEp@}cADpZP&Vwf;}7kxw9} zuU(jY&n8+1T5L|(R@7E{+cVZ-Jk9W4OAHsyc-k@#&b0|PY~A4Q^w8U2(rjh-^0p4J z@BURgmcP3ZJq%h{n@;mldpggNeRFaYY^NC+E<@Ym3y$o&VK;FSg%2VE^`Ldp134qQK2;lE)*rteX=nb6Z3A184uG$42B@GbYpAHrV5(Xm)`wQdwSV}wI~dxzIB$9#gPMlzR!aD8v$-? zj_)o(>-%1|wFtC2TFxx0IFJsly^^@De*ZJ>HGCK4r6Y^Zm`7hP4kQN`ChGm@4EOas zTv)>^J!k=Fr_3JBN6l$~EBp0k7##+-?zJ|qM%&UoZfslJ3>v;QhV9Qk`J-CiuV@tSo z`9AorpwH2#zjnboxsx7j*!}f%#Gbjt;G21$e>-8HjytWG)BY&>CUG8V6yaC#>^iIm zYvRccevYT%N%P3fX9u^|x(UaAoGY6ayM;FUxR6+^T=t>UOPKdFT$oqz23nxCj9gl5 z2satwoY&lqxs=SJC1p#=zm|UUyS9h#iTJxSE^;N+EnGbaIy-wqz^f!R8` zx%P5Wq1t9^HXYW^1$nY@<{PPA$s%GCsxl3?hHw3@b7NZ8(R8)ma`L3{%+zr+;2uw= zJBy#Uk6Qj&M5g?hw?5tm-nS=C?0HgS+Gr2d7w3lACt&Vg{N~ICYsaflGx|QfJ8IwB zxU=Xjd8*0EKr&%Ng2_6VyC!R0S@}16irN=`%r4YoW%lf|$#>NT!?mRT9H*SZyYOb} zT^kniqqMTSb&FYTa6SvWMEb z^hf$qk{CI#!Qm|UUd(iN7M|Qu(6;5Di9v09XJ=NNs!!d0R}lAr(C6a|;GShOCw4u) zHa+dLhHwkBN_KaFd&sYx+2=h;D%2Lcy3Ir_sJ1JMPG>3)u(fEGwE}JRPPwrb(_X6f zj}0Vtw7%o#sc_%+u{(>g{G~FRwG#G}-`3I*=IQ4m7dCNY3yRz)okM3o0jH(!#ugO1 zP~;lD9UO|>#s_X}mA@xV4VX(NbsPKW-)^{OnBc)SThtY_=yJI)YEikZnBgQ#dTGf# z;t<)VLF`q?K~GOsE1{>L{kk_Z2DPj_SGIh=J^fm+fanJFd~O6Wx4z=Sl8TzrvAdU$ zjSIh(=t19Zc6Vd;R&Q0~K(labKeGX7^I<-Ze_X0U+m6jntUz1k5fAoeNPT*D%Tm&n z-{UxU8q~j=o-8EUm`1!CT9`Y?CXo;$J`^&fb(0nPaz-yOBae_WW;k|?izz6$a; zGO@J>99zl}F6_+>TNP?o60RhpRyxy;6~tvLPcL0d%0{g{mv|el4{o(&!A&I7(%Q+ zSa+?2dFt-r#5OLy>$N#>9cgxCUH^dA@UF~TJ9a%fSBcyktpQ5pW^8g~A7<25As3Ko zum`!n)S0E&1gH-K1qe7eb4LE=((Qy4PvYei#kugWCB4?o8`#Y!|nME6DPg zKc4AOui7NLv4dspRPLZ1I|DRc%HNhj zWa&(&++e6z*K-}&k&5$PrJ#)(&}&!-XnMBJ>|VikFSNbwy=5laT3>{m?jG!A)KWpL z^2)qMLcMAS^K{8bJe%^i^wtiKN(wN;G73@W3b8N&fh`vXc*pW8)*CzPo{61oaRw?37NB9 z(dt+(T#J@^u&)`NRH(f>{xu1;I;~up#})kE6NU*OP4zT5s41 zzu)@X+cEFMA%fO^?Xj<@CC1sX+@(EbF++mMw)cf(3jEec>D!V$**itK6SPAnK@7FP zDR%7G+~3MYi6P|sY5o0|i{QD7(w@D1TT6!8%k|5wGC=EIVaM8Lc2#xt3nm3GpL*eM zmjRP(nS1MemGz)tGRk~JdJ<^0tsNL`{#WI(JA_P0n;p~h6a2 z`S3gb&pRWwsbfRhN*+o4JG9I14aaKECQEkqKpPqh+|rm@Esz^gZpwm>?^hug^s=8E zx&B>E*~%8bWp}=AA~^#_O&V_o-zz%XjNLweT4r=@1LK0^IOT<}B^*J%OA5;iUIq;5_2Y*r;anWcZDdUOh@@ z-ZFxkSlFDY9C~<7m=;D(n17$!_X_;p@@mF(hR9VB)5FN$N$<1gWWu|C?@ZY67_+pp zkrBjfjq&G2#&9iQV#V4-M*gny_B4E-7V~Hj^N$L08s*-(=Q; z>5eN;JE#mNDSLxE6m^Ds|4|mqBD$%p)y2)^P+=y~11@a58Pgu1*QLpJ_;ykkt%WLm zI3FEt&K3@xs=9S3jI?bKFyG=beDhD9aBG=e$;B2DaY69QoN0$O z@m}4^ipY!XmhZbPgzNUu7@9rLPSx~A0htnETC@<(DXTZe(b9tjvW#`FN!du`b_W%ooq2K{uCD?-qZ7Yb2MIR5dP}`>Xwo+&$2B=*c>8 zkE}xwjctB~yHfmw%!s}1x4H!GS;i=+GFZtywu1d+Vgr5m7Q#KZ;tll2izReMz*Azo z%m2c|+VGpxbt7H4d^BCL<^`D(Q>r{{4(I9MP#V#-Bkj@aHL17z<>fYTUm$)*8C}1` zSCuzmA(^WG;_tsexaPP1N-JFl%bXf5BBuI-${PiN-vzJWThUFqeBid~Z!1S`U+gvd zxM#fTo%2ExuRrPU570iHyhJb0yyG?Q@j`M>-=@3-w02e}XvxvKToG_O2CvJJ8yOKz zTLs-v1)iBtObyQeEduT6-Vmy&cPb^Z=K`|Lpyclp&=fh#=#9!;*&5)w8cZuku4LFx z+B2oSD&&G8ne@GbmP!G~;LUgR(aWx~2s18cutFY7;wnt{V=bK-0AB^ z{D0pcD@}?FNv~o@t)^>Xop5DCepsC-S%;p6#Qp2@S`9&49aWeAFTssNuF1FPddM}s z;LPi48FudEV@x)GI;_1Gw3ub~{PyP=vVE6~h~iUb?VX?vvb5q?beD6;ReTPqhurm^ z@ILxHXZmP%BT||_ZHum}xaPu&c+r4sjR>4k!?wYAM0_u%5~u4ba(yp&@W|nskokF2 z!(g@u>tf!W86arVzS9w=pDBE~O3=2si(IzaZ-BX$;I|a!DXyu(_KvUkCr7{Y;rF@Z zcNuW#7r7-PlW5}YZ%T}L&w|o?jQP#{IALuI#=Lhq?0W|>BiEt411EC2uE-SuH|vhR z3S-{896i8!A!R3>2x~4-lhzI+=anK8*1POoj;(3@V$A3lV?k~b*ka7+7h6QX9l=SC0pdki^N<`4eXlT$fB4C9I3VerPMO7ch6By*cXf5Jy~W562B-M!y(~<8xFyoDL`1A8py3S)7THG%moW)Sm&TvOn%XUJjxuy4p=`_2iiZkPjX4z zZHwp^ZM$#%1jmASbfN7rHHWsyVayl{au_q_MvD1U%MV~H9)%b)_6<3V899s@^DO$s zqf4~Kc`y1Ek5(yH$YHLKbKLC1-);O}R`k#cVixPcW>{k~`tePfUu|pQ_(eY@|23)N zq`DDxsXOnF9IR84>IT|6|4tS(scwXwGULanIjL@--(2v!z_*Y?zc}W&wgubUT2jDC zb>k=a%~Nw#btCB)9dKwGhcQca!+dNp#kDOMGmaz1yac#S=WeJuao!`h_v=Jqy^vHl zBBs2fqtF)mA=M4!rZmh^bJ&{Lo-g>tn5DWQ`Nf#guTVGCenn24_n1G$OKmyEEY%In zmB)rUaxu?h-N3vAsX3``Y=Ha;9KXS*jbzN#h~ajY#06{7H4=e#&&w7Gjp_ z#ungW)#D-6jaSg#Mi@7YMXDRf;rL?AQr$qVzj{2Rx`F+`m=BKgg83}g1I)7!OC18a z5;KT-K_AFTbpz+KFo%GX>IT}PwoBVbI0kWk;Cz-ioEbRo=ofP!`W5Q|=6N6XP4Fv@ z2+n7WS@bJ%lC75a2{;zSdVqfSgYCiZ32-ckM;FFC5Nwf?>IRNE#)6zwH_#Tx$e=71 zY{jDxV@3@*j2Uw%l|F!ExuHoh1a{mSfCHTF{FKb-+MQ%G~tv>&f z|IwcK!49S$eUD|k?*Ep1=-&F&8?=$H{!s&e11>x7mwasF9>u1hl`Xa5{Tud6 z`|4F9|6P0ETl+O|txOv6zl_qo0)CgsqxDh>>w+fh_MQHo5FpF8DUr|9r|-={YrMGw zf3VR6PBFkpKJd>7(=xbj%G9&x^?n6#oxbYJ-~OIxQV80Q3S<6|&n7Ormyx{lFDnz| z?1#$vD~3^Ac5`F-mOm$r&wzH)$BlntAID8NZy+C8+TQpyXzA}Q_>Y+o;1}yN+RlRZvZkp7zc}B}?_G!wIjKH3 zP1NEWrNLfx5Q|iw6$k%NToYFUF-!FsxdE}iIE)#ukg#va$-3?0Fczsk-;#e5Y*CZy zGjf)ue>i`E6YDd!*AV<-EK+@z{9?>feMYW7_!T*^KD$9bQhhDt7_(HLaZTJdJ4-pn zj7K?o$${~>1RTaJ)n^~bA97;;(2JO>dBa)?8q82Q65w7Wj0bWUvs9na??q@&%%50y zG0#!JiFp>Yfa8IFy9?tXa?fLC3HigArTTnv?mYgKI?qylMh^3WF-!IN5^z?KKa5$b z&r$mq3F{V7lj<|J$H91D%u;>E_I%a(lj^hN7h{&{^E2RZ9$??3`i%X+F(1?LD&$YB z&)8p#rR|2RkY}+zoX@ysuRU;5eMVcHR|6Ye16%P-i1Qh9fbB{3 z8U11ous!Lz4sEe-?F7H#h@fALd6eMyk8oWl*-pHDQLx49CdoE*$VKog9$jdQK9G~@ zGscYZtp`r3&r-~@a#Dqubrf(v5n@IT+mq@u`o%m?5d4aD7i}?D*dFEzb1mgc^eb}j z{ImJ#X@|LUFAhV@I7+ad3D%}Pt+$`6EI$mk;;4@wlqzs%fs^WnMP9bR;rchJZrFis z=AE6wnn$T_xIIm&;-tEPey4%o+W+#2f! z!rDIR_uw*UuQB+=n5DXb9NJ>cQr$q#4E&0mST`_#@0VK(u}F0T^W18Xtz69WKA~FEEKdEjk`jB6hXQ^)71x^|dsctL;ZnZjpQr%b)@IY9%h%rlb1Kaaf zkB3w@us!sPv7p~SFgGN>7_(G2kdwwksvFo3%>AdtBQUSTx`BDdSj=iA3dh1esJxgL zz)dwA^Q{J{B) zF(X$`{d*8?QQMKfuc~ff%-z6t?uvbaE%q5>MlKpSscuLyBPZ1jDdvx+Xe%CtQp|IJ zlj??)s~EwrSP#$^=e_7xJX$ek%oWCmM-kSwG0v0u6GjP~c?KoZ2QKPT1D~(J`=R?=KXn-7Js=~ja20Qz?jktz+HLm%`cm`kBjS-2HzeX^m`U) zlT1@z!r(NK8Y`x8mTpLH;p5=6& z!gJk~L(cPLEiOPD-Rv2IL=z2b|G5e?Hr24EMZ^E2_!!@Wl6r7Xd6iY4 zy@qv~7_(HLk?Y@axeWUzUDqMk#pQi%(IvU$uGu?ezA_{1(^%|!2C(| z`FJghsys{e8M&wG@sR2>a+#1nj9IGByS7`f7wSAq^%*%F4~$u=&-c`RF=q6Ou_Occ z5^OPMsXj}7F=nYg<9x>4YtN1%e_&?d{V?n=#`5KO6y$1~JJx3$51bo1z)AHP=ks&$ z@fkRrd&r?JuKz74L0d7?I39&+4r?89m_M8w*j{PASf9}r`-bgdeMS!FGv*58s|RNu zj1ObR`TTR>Ca@KMccZO2*w$~1>&nHW3u8tfCBWfX3+tp5GjdXWM%!l)pV8HgLd=+J zj2Ux}oK&ANX3Q0~hq=P`&=zwg`W25>jClZX7+*cO21d^P%XQv(a~c;rIF39RW7^8N zAH0|0aGTF={)kfs#SyEKJ=@pq5AXJ*R6 z-N^v%lde7g?#NSaul8kfDXL*N>)&u*sC4Je2U6~E)61mc<~tozO5y#w%yxXz!@U9* z99G*MxsyL__>0${a$Z*$$&D`Pw&5eZ6WG^{Z=I;*+EGUQBi%aA0&RbITV58lOW^Fo z|8qg^Kwb;J$Ige``z@3-i<#lw=p{V2QaJI?|DfNhYjOLL&*9y-NKalbJBBL) z?(L=tuE^!O{8Dw=(vH(xolZ=aS>{?cgm1JAHG}U|6v(bmN{4S>_-4P*gL@RUy3n%A z{bcolJ2vk@I&!+sS~PTs7uPE7GTE{8`rS|ycwRf$k{)aQK~~BxllX=C*)gDH2Xv#Y z%lgWY)0^8meFJC*zv$DIC*_>-b0#^kc);D4@E+}>{%&-=s#LbqFpIpMf8x4_6+AzG zI)K*lULs2auHBq^myu(Ia(+xJ6S?>JWpJ-*?+SQird1r^$-moeB0o54VU~mYPf|v2p<@uC-**jp^BTZ)swG1OHXc{no^~0+TMa67po_q5UAm9H6^_EP;Gg7 z!!K1_!_%JpuiaYm^cCN$v>Sb_`Tk?H<$f(vOvF{{k6RtL> z(vpoVMecFkD((A~p@NqFAOoJ9i?#+mMO&?Nm#VaZk3E_HZ8Q+xpKUr^;gc=sc)p{M~D z^iSlp-j)frip>{gmH)&uwPcH$bRN9=TC_z?NBB}GJm*yVO?LG|j%wFee60{|1x>K6tyo$q#w>9oD@6`tMh#=>F6?xwu@z$$ zbB{4goT{>x0z#?si@8F-1`r^|jGUH`tJ;c9+G5P8A%}jE!nCk(j^<%T_71&}d==Zii_ytY6kAyMTRdX%W_m(8T z3Uf~IJ4kJ-i=1{RAZIKgm1%5%pm|v+m z^oyLLt}U;e25ZxHy^+mm;3^Uevw1l+LjNf0yHD-+KMkQ zchMF#(N;&XA2^Iz;=WXh9L6kY5X&TWo-t-glk$u)OWJ;Qo~!&quF$U$OhC!6Ldcbl zViM#9V-{?IL%+zOZKt?LRI%WIOb)ps>O4P6d`Q#J#R>flRp+_0n!61Bm8cGnO-rz?r5LM@S>ndR+(iy! z7C4CSu)6MI%#tR}XN+0W#;WT$#*7-~3jH32F|YC~{ z^ZZv4OwAXx>Uoy99qM_H zF$?X*nhAdIs&gf9=ZyrvJ3zxcOC0(|4rA8UGvyUvJG`=O4za zlD5cU%mN27&#SDhfaZj`@t`rxanQss5o>8-p3|^B(4w?O4r3PDgIuBC;gD0zGjd|C zYAfcc^DJ@b7rA32M)9SCkI?kWE3$RkWkKs8KC5|S1OPE)!Fy@enRa{`D$SrOm z+G_PXENi8n&&}1gs7ZOgsuFEc%T>?kB(-0~&UJ#{K#0XsZJT~yA^6P&ZHwA3a_AR1 zjJYHa)e{W0o{&K4Z+1W}&X* z7&B^^EA;ycd|=F|iMi5Iyn|RUW{E?;$YIPC!B?qPyY(_sSsFy39~krQjagLj6R)qz zgQkFnF-u&Aw#Z@30;knSHl?yW2%6Kvm?x~vqzcfg=Xo!-2iiVuk;9nF!LMR>J;84V zj3vg5oR(Q_!S6oMFy=BfhklX6n3GK!@o2k7yRITw9kc&7Sl=z!)>Rb2wI0Ttq~?Mv zMGj*g3mnE`u2WYb#T;PKSkS8HS>lQ+L=Iy{znClZyG9)|`W16kS78Cya2PZCMGpNU zck#tS-etv6At8<7_-F1s_Qt${0aPG z{?PApb<6@MDOamur zwE1x+?C3V98r;YihV1=HOWHjryvjDdmoZyZx2E>_lnMK?t$7XZ;b%i;waSpj6OHW_ zA7l1{-4DEDKqwT(F!iKHeLHAYTUiurcaWuPfHkGG)rUa4DZ3GoZzVpG>L28#+2#4r_`>R zHuI(tn^yZ8O}?(Ny{~1$?w-0zqi<_$JGL`rG$M;m1Ws!2^>riGtSpn(KN(Ew=$sr- z40*PAV9YwV%%X8;HCo;)6Lx%SChbv;n~`F~)=lPV@)!-ra*bINcb-13rnUTN!p4?R z`k|V3g&8rYtW?^uzQ%UJO=FhOA(fWY)@WxQ!f`Yv6~3{q(VX8Hv8}TA^!MOE;#z5c zx&re2x)|ohsUmv4PattqYt73|*ujTI^a5~_cJql5J8`|3dX{Ny-G3UhtnJ10&mRpJ zrfWyUOO#V_iYq|t2ZnzGxUf70&NIO8Z-o3?!i z-BTPw>a{9&8a^M^h{j z?O8y-!k?ZW`^)NJn;T%&{8W{yPrrO6QBT z@dgcdZ<-^kb@OZuO|R0C_3%F-Xf4$~t}Jn6qr0f+{A`Ww#fDC7oNp@qelq~RX(q;U zWxEqQ@!<@e2b`o`U+2h1^hu-lXaMP9^}*s0*tIEV=y_hF zm6tfMipMF`GFYS8FLz|aUCz=i)wCIZ9GTs!6I3rm!);pPz%sv{rK@^tw7W$PEUVv1 zngRKfVmUJ#_ETt>M922gXtkjqb@ye^ZOi9Z^*(UzPg_8=cvYix&k> z8V>^#XEroEi+(tz;ikkmvy)HK>BnkXs<{hm;HDBZDOb}DIkV~I+0>^`~?g>9#q zwC_hvESGn?z`C(?fs<^lC)l$@`~GxSQV2=yc-p35F0AP)wr34&2sJvX(Trw0u)tBR zYjA}J?bwp@J?P_^8g7%jJ#&odSVQwnvuD}Mooi^dzuL0&JdQSX*4XZyZO7d8TG4~{ z8tqq^9ot#gwgz{|%b6ucEuxB-Ye=7Lzh{%__E;JB*U@l~ITyC$%xv1Bnszb|v=I|)aCyy~*=Xmv^dAkZ@@pFB%)$yL(P3#C zZDsG(^u04+F@K2mCIz3aHM(f7jXTBgxLHoCK= zr$gw&YFtzB@rR3``!ko3&vs2M8^W{CXOG<2&U#@q{;Ebh=;h9GRtHm>fm$g=jRdfo|+~P6$n1r?EZByD_8I3fg9^Mte2Ml_{-4=~*9*wm-|2*+#FWH{}{_ zdIvYwObOos^wwy(zueiyvoSQ{^<0wpWPCv>yc08Yln3kU5JeY1*Jux~d$74*Hq$<@ z=8~go?($*}Hn4IxwX~fl*!}_ApRYaGiSaw=Vw-tYT=T)6Y*EHmdab2KtN81|&fncf z_f6Jl;d4CM;@!LG!f6^!=Z+_v-6)!ln55BeAF^l5`Mat*O+rYq*Nvtxp>C`(abR`U zUr;HUYP9zY99XYryJ~R$5AE1zuWVJf2foEp$eNo$Cq+IH$C7Z(5hx9Vawt-{`w(dfsj z>ReZISGMcDKJ|7Btg`(Y?#k}mg6|`?)oA{OuIz_rp{hEU5%0pgvNHxNoRJ`@tx{Jm`0lh=b1qjxiz?f*Id~!Srhu>%M$YQY2}CW zP&bacy0N888qj_pHQK>LZmi3Ats30rd2X!dNGn>e?b0gS0k7SdqQ6lM?Z08}EZw_q z4XvW3JGjMV4vx4tU=(!;pt?-CDTl=UHU0sdqGT4pHUfi7Sgnfl1+tTxHtiP2J-BnGy(8QhD zU$0j~)4k%#8ci{y=N>JovduPkV`us_q^s|1v_*k#Y|S;D8r*?b?yO#d3%#E0 z_`!Gsd?&Y~2TR^)O=D9vnqI623)F2w^Q&=p7kIGg=UdT>zck#IdmgOMcn5l^nl_+= zCv(wjUPCj{^JHcz?diTY^Q!!&&-Y|++PcyF_8KiP%ad)eu&K#)vtum|>nUl^5K_?n zVgqhAyuY@@j&5jBC{!xn*H={eefHLwW!5uM4sHbdYAAb&vFNz4tHDRQ z6aicn9}4|5HWH0sJ{@-gZi-V*1Jw-$_IZm+SpspY;&MX7vzlH-34yq z4JY2kdQA@gl9dHlR7|u{H2)m+IQErcR6>uwGez7TSvK9qQ=Bwuf&| z>p4x+p6LuH*37@Ki^z%b4Lae%{AOe;KkN)3pY!s5ZGm&y!5c2@&+mashiHvv^w)(M zIPbdjz8W`vtSbvW{zCcXnT8u4>dLI!EUTdnIOWRn-P)y9=k^-9v4~Tjls{}&RQYYx z4fgZs5UEUY)M)bS8H?G?)TQ#D#> zGdFf5Iy0?07wG587KLOg4_a!t^7*hg(6`Aov{hT6-p^Q-R-Idz>B5HJI;&jyIH1b! zCAgkk63|O|_r6B!q~*#=%3GyX=K?0Xv){MAD?hYdOnTqQ_}ME$ODlbaJG-emtnAuK zqj?{2XLG&Xlpm{c>x zQPu3X8tv0nLl*b@Y7K5W+~>OYZI3Df_Q8;BJ?)K|>+?%BwBK+~aKnv9s?F87#la>l zJ@dHg7~Eor_DoByJ2T6M1NcQba( z$Xu3jE`k*Gt8deDBAmMe&0tSOrPs7m8ck+p#)hQS_Ud|GqvaoO!cNQU$wujJuCg`d zny`$f+q@1`(+205G5)({msi!aw`0uNyuue=Km9efS$~@_!~MQq_aupW6?4Ar7o0J5@EKmqwH4+q3qc^Hc%VIN2|Iw(Z4M z)$EesD%4mCmXfnr}UGRy^2HWq4C#Yqg>Y z)A}()bvRd}nLIFKJuZjW;Pl`(Q%Qvzt&9&LE*I?bU&q1TKp*WHzf4B!zj$L^f%y6rKQoojZv>t!*Ov~BCT)}D&z)Glp72`3geR=Ip3CS9usyIB_UQ#%d>ah8jLQw^ zNr6iip4fVO52K$B8q?GR>&cOSTLiz4&QG8PFVnqHI|k44&@Xa!k9|0iTPSE3Pxqk2 ztt0o~!#2`iYlGm!Z=fIj3bv?qQ~O0ur=%_wxfQ~b$*pJF&};wRsya50BE$cA!P7f< z*R-#Uo;_+H`&O}yG*MSzj%yd%;zCVTiMJ}uM z1y1BTS80D2F5sByHFEmjRl$d3Yufr6IjQ!GwoS4Z%0#Y<;CDevKN`~QqUvzt{iK1G znb6+L#Nn{Ocb6=<7`|Dj_KV!mdrP=@f%_oDmn$Dmk47!#{GJ~rx&PV=eho4vQUkDE z@#iQ>R{KS+RmKI?K!Lj{_&xn{_(_>_c+AnhJ zPQ`K}w?c@|e8XHp^EsPB_WWBZ_zml`lBR?0RrpTQB(-1ULcoW}g$jNZ?Nd}8zU<*% zrRR{{TGIus)jy^>kujQ+=jD)D>bZg3Q{R8Gmjbt2@PXQYphY~s3Ul&^5Hs4I1lyU} z@O>P0%*b^FADabkv=B3DA=j_V>NdzHoBj=|_#FiMNrP?w?}RgU&L`ZztP1=_J#st4 zH*>S>kmKNuBvISnZwtrY&mn^=i)xv`JV4v&n|(OlGdbjXg_lkP(9m|z-CUW!Du)cI zjL@nBT6)D^m0{#$Zg{izWXY!{Z5)?C2ZQ5Og)PSt);#;a!OGSk(HzBZxEy0(K;i;;Xc>DFzT?YfcBlao|wF86E|#-sGV+DS1xL|$D#IppEduWXcdQA zW&9YofdjO(hRk&1-$0FMGj~0y4bSKjKtpZ{?1d?E3HOjQ2wX%bcFm;C@+Oj>g@clM z#*5mn%b&QWf_7>cYJv8R`D^YIIpnsT9OU#g0iHR;nDei|#{;Ng5%B*)_(N`ptAWto zwv(qGBIopMEH#p4QKuK%$g09`$!7497iw)rKI249e<*4%8|mGVoE=g>>q^9URsptVkz?q~~RWCq_3J_9xEU~()u z77Kfof`**oCo`eF)(N{GA!o3>A5DIlN;_ypk!b}aX)@#wwTF67IZ?|PhFX637pgbU zPtf`$Z?Hd;2>aaC)8esC)`1$k=`h@L1P!^f7P>-v{gPKaK`x^HMjCzYg{oPXYoyut zK9{@0^H9{@jJwT=S}KQHgZnM{&2wOjXW;%jTj_CfG<=)rqC5X@p&3^pyGA_WS|ehx z$Q^Pumx-LtUF6!G-AJvv-K7P8Qi#i|j2(xVsOdjxD;G5~3$?3zZ2097nH*}RN8Y&m zorbkL5gvRksM$AvrI7juVedpZW{}IDc~K>D&GV4UUbK>K(`Hn^{xQe1yE)z?dKxl=4a?axWhvcYNPQ+M@Y&x&!KN!fVHPH;5TEZ&w?6w4gm6gWA2x zHvCn3f80au2uuqV;vgsho;v*$_>6|NR)b6W9CA9=eIZE zkMBz6I^8fLTi;z97kUD&2TXkUwp-_L1HKuPg-Js?Yn_KZlj;xPJMY!yMiv{B*nR!X z&CkJ#tw#g-w4=|w{D4c?y{`nhft%X%v)zp;wzr%2OvUzY-fzw~ijdQh;J4L_xMS$o zJ42iQklTY|eCax&M=(CEa&6kEq8as_H=o1|OTUV1tE~4OQZ;_xR<&*6eBv{izBBfP zwKrR%R3YDX%K8I0a@xQK$m!b3>7eEtxF#tJ$gr*tdxyYrl=*!J?b+r4cjm!Da?85& z@U)R|-PAOX8h9P%#_n50hE*&Zg?lBIj*$xhxLj>-ycD|Fh_;ETB|Z?ow)-a%Cs%MQz%YU(~ujcl3Ha zd6GpGuM01#K1kB#lgip~P9?hXf{r8Z!~>^@{Z0ek?B~1(G?G6XJguSp0MyR&W%SbQ ztK5vw`tsL(3*8G3!CIM|di=N*Mcme_#_|?jdiEQU1oilw3;)}umOR_eT+Yh3Om#gA z*MEoP{5Q0`tlve`hDpJ$K}RHe*C_?wp{w~M)Jh8KDj#}zL!N!_`olQ zurJ^@d2y|rs6@EvU1DEB2bBF$<=+1)AK{d+=Lcv8e{<;vi%8Yh4`1bddS5#+5VZKu z$LRUm_hc^*|B%<6-tEVWzR;fOd3tJyFE`=KPx;XCU(I?#PF1&V(@vwKxb&O9<%{~K zba*-()(K}C^IJVHa=FQ6@_ltz3@siHd;K+V=eI08!Oa=?S3doqA_F4e`YCuEOX0h{+RN>S_|`p|cYHa-H*2H~Z{Be;7d<q(d(F=0?cBeMfjnU2dai4y0n?|M*oxoP6i-3F8r!60^V=b>= zFO9Stz16SK8P==C^yFj99pvkbRAhkn(oqgwVV_j*G5pMi_VVc_Jjt`wACU^YExeYf1=4_PSz`focPFU`N6d#vsUo4-^6qOiqnbJNB5WQ zR>HSP2G8Vc?`+L&=*kn)cv^f{s1apnhVlP4n{w7ZDxz@yv@Fj_WFL@yn4j@34gSUJ}P)d)`N{wM4GBaWFj&*YcN(b4bh~IPPKoA-A*r zTN$?JeYEp))H~^cQ`96<8#TluyuJZ|KJ+QKbRf~>&m6x%7uQE|HI#K$OV^0bH-0|$>^|U z?vBup-tCssrC(3Uf?MPhpTsFo&0yc!i+h9Vf>3YnlV?7e9v4&D9&-xZ=uOdFf-Ij{ zB)+!R0S)7`u>FraR1Dt=%{#RGC$xw0Sv`KjaenzE`PtzSD&Pz*V9P<6hljq*h-`+!m>8^}!9N}|_UED%#Q_zqbwrK}9{7w#O zkXUNl53a+oz3*rLZwHMUvHtGuns4Ir%N@ z9sSp|BR8qxR?;de+cQ58-q-UpVQ;!ya#l&(NO{On>lNSO+@o*8-p2>YX8h08na5N0 z{D1t?s#5k{_I+2DxYvmGU1UooZ74)`;@T++Em{^oPaIEPo;b-na6AVYJg-mcf%L~Zys56-As)4?}*{*oihE=GaB&g#y9apSFI z8((5#14lZ)7@eGObBt;{tN~Xw^IdkAaB6^ir?#|z32+NzuJEs=r*T%pf8e(6uI$gZmQ>JmW_&k)g z&ii}r8R#26lW3Xeo~ zY|afd-XNg9a0B@AWga%QAJ6d;zKNu5oq9S0U_VDx8-G!E;luzZJl|m?<(l(Str=&97MYEM4z#^)Rk^{+In-H`hC{g(`X^^<#? z3nMQhopwjgVpzYN;HvOXuupO(@419Jt`WtaY*?=q>hjx7w=>-SYRjLL>j}2zPuFB~ z9<9Pib?=K?0ZovnO^(B#bHsvkq?4dASu<~r{|x6i&9mdrjGN8jFRw>#+tu&>k%fHv z?w0&hiTgOus~gaijGM#{a~f&)0Q`%1xoHda zPb%^#KJc)KbNL(}dD#^C{%nEuu4f58ulj&vIK2)9S*_ec|6Aed#Y8ssulw$% z9O_^9l{W0XUYWCbP7V4p__(PfgTG88Sawi zO;yTymGf}qhbtWWR}JWkypTJ`1MbzbA*?>`1KRD(jf`7h0NZOo`nq963+>d9UF+Dq&duIyU#C^%x+qdAJiF(CctL-dc%le63sQ3kI z^lJjHw)GXef9bPhyI=xQ*&wKoo2S9qB-Wq3kpt(UtrOVwzOT!9`p0kQ6E-}DItl#q zp0CXr{k|=y-;Tvv)gLbShkVg@_M(dK70LP#gR?QrH7=@Tf7-RVX5Vi(clf)2GpA#BmAnW@Q{z-Z@h{x`I#<347 z;$+52OZbh3|5Kg{@k26hb51?$<~YU#j##J;=Qtf5%YQyY+Ky%A$H`mb;Nv(6a!vY- z<|iB+XLl;&Jm=KnPb+&>pxwI0@?(ryc1y;7<>)$%bkj3ou_D$e@i#0v#Tl!vV5e>; z+f2{Fx}$5#4{537Ts)y-m;YzpHM)mDN*V9yHQ-<-1Llw&Sw= zIaX(U*8YIFbY=};n<5@|TkyixP`>?*J|C-z8^YE4-Vhh~K;3U(UEkz|C)!<4*&-jWZJ2 z&D&G|ENX-^EoLe(cA2~Z+*BA1V2%Qg+O=$Z$8cvXSgf?8a!h@--HGgmvg+eH?O;hl zfluwyvZaNGU_}G@S%*1$n|BQNP#2zOKnJz^wMUUdbr`@p`>) z@HlPwM~vNPyIsl5^(M3t_1W+P{3raX9@;3vEepo0sqv!xzg$?4fSZ0njz1R4)*ee_ zYm{GiSqt^~>MAg0sn6q%v@D}>rW`G6ANr2r^1(k^A1%vDRpik6tcGJn?b@5tI7hf` zSpjqMU;luk{!wl$y9d*n^mus~+80AIeg@-&P9jQjXfC{!xzlSDiC}PvsBd z9_v8-H@)nzt{MomFxX;|EST_xGVJ24@?i%z1i%dB|ee!1PYscT0Rkgu$?Js#gV;9PDi!w@S*=fTZ*W(Jq zE!Bhjd{_rBdo+jY(2f3|UMUXEL6X4q=kvpHp&X41<-CV=a4Sb~s19W}7}p?H)GpU) z9F(0^GRG6vQp0hf9E}U*PK@ed;!JgDhpziWb;zi9V;X0wSCF{__6mkM8W+mZxG3fJ zFma|jY+c@$Q5_f0cH@6~y##tyhdCC+#RfPUm-ONRoahh#mD_)^X;3osXo5DPK36Ei zHB)P7qf?%h&_+XvqWr&{ZI6IEcSVl5#(inR-hcdw>k+7Lw3ULOEcm>%XcjzS!@lER z?$Z^9TLu38txt9JXo!`ehxu@pKf;B+js1)s+gMSH9vIjCFtgqa5{*axD`T1inChXFaly)A~jU%m1_c zY^A{NUyk}mIqIM7a&>-MG~DMNGVJ?mvt2Jh&!={`dc%12XB6l~ZXPgR*-tb6#~C~p zaKAX}{GuB?+#(~vPBZ!-v^HH(cGV*uCV@gw_KnaeE}T2(YW$CjY7uZ>r&u!e*$Z!H zUnrgBYVa7=-qWlYyEIlFM-j9nd{aKmaXSFGHs(bkU;{ru7~47IT{zrrFbg{;s-kBy3cZ@I=VgO|LHAV zA<+Amqj8}ejmt_U1x7E`kst9vi0XJEF8@#OuXuspzZ{JV#h#td&zOjQNX(xf`9rWrM&~m|6oL@Q-rTKN)*<{>s~MuhxE>X0Gwl z?J4M>?b{p=*OrK1hSSSEPJrGGF2?`3rcMFpF;|^Gem#p{@m9v>fRW-Kzv2Ge9mL`f zdG|o9l$p6qeZDb&!Z5eKMZlRyS@M^IU9Rvr_S5p0ZcX6J^AszAU5M3*;!3zv;S4WBa8m{#g(0HhsMn{|VS#4rPV8%FJB$mpkE6!f*$mA5b0C zu6<)Ko9a**jx*I;Yw{lATTU$Ci;yy5;#?Orv12W6F+ zx$JLTC`aQ$xjBjoj9nJ!P;q_fMs@6)D9`An`C43-3-nUXYd9{Hqj71sRAB5<9eELo zf2fXW#`6F44#f-fQjW%%#)Wb;F7sg*?c7b6d(73?mg*17`7mCk)7%(BG=CG#=Yh)Z z!FY8wWiJ2BFxS{6;7UT4FlFso>1=-K!}3NL|MFa&1Z5!~%DtlqW;fV_0*;ogb?jg` zOBhdSebg@Z{#XvJ&jH4bn6}~qs$1#jd|c7ElWA-ALV?OSTkj5eGcvq%V~YV zo2>rXHCiFCyB0WFmik9I>fg^Ph=2MdjKw2V*-`4-T;{_amjrfw_rNti&Bt?a*~3B> zOLXVle_UFZfHO2j{8@H2_;id4JHsgdj}P=`nl~k3aSe7bp=FOS{rPe3T>i{qE}})i z?M+$2)K_~xjXnR^HkUN;rPt3%U>9Qbu<#(W7X8cF@91E-D9|>3#}dY_LtYx&Cq4g9 z1hiXoh!bO%=E@P~9%1@3<)~f$i4KO#fPOG>Sckou2#4x84|ffXGu6vIL*smKna-;J z#f5S-E|jA>s9q^Y5f0UH82TwKOZA$x(XvOF{!HUS?NW}$g>qXs){I`N{1%{^=cx7w8=Vj@qShp&X6NJqN^} zUi?CWFF?0w)~ zojSs{RbANg9qfD4{@fr9*OK>u-jB<_&^1>m^vPk)uuH(bHb(r{4nOg%+dVdij51kt ze5O9{a{7rMo$-OPX)Iwb?A`31%YQS>t!WW(yXQk+gZj7*6WQ;M3ws)ZFDs3l7`rr9 zUygl*Q4+?3VUD$MAH%hRwmaEN7`tsVCcwCx$yx*Lb}`I}u}jMebJJ*1hNE`JEZEO* zhoK*!VI8$&?y#v233#tTeP;B^v_YIdE}sB>_xf;LC`aQ$IjV!|-DY-|?E^aY4)qpL(AQ}EK!=2juqV|~y2t9D-U%K8y+OkqjSJ;yT&9^@ zGj^$ty%Cu#s$~~uT*2J4itM@SXUgff848e} zCg2lXlbr-Uk187ny;9-VYQEVpccDwb%~SFfl)bi<{krr_`33N0Y_BihAIj4FKI4i; zG2=7kXj#_T>kKy+v?)P-j9timN$Zn_zDslJ(6Zcde;B*pyudE_$Jhmq`bW8sWGPdY z)+gcp~ z$AVpFm+AsI160%JA2+E>z%9Sw&i5-jhoff7!TLFIFcA7PExWh+91e*Y4`uTPMY*tN zBaJz+<}}#F28L`HRhG}!4sT3_?-9!u8A=xZI?7ao434Q&0jvud2|Z6 zv=P31S9Vs}5}WFH0VC>Pz4jIK9vmqC z1#|cAzi|PM#)Wc|RW~wvsgB(d0v*aO{{Qq2#S8TQW!u~DEGbi8m8E2TQV zWc&Zq`_n_9cknL=bZv3%JZR?oJl_!tp~Ml~7;DDK4LurE$J^teROP{pD&erZb!~_-8d-Uv2g! z_KD7XkGT*7J%}??wv)!HdiflPl??bt?NZJ~L%=DzY!qCB`sTXid(isIw)y|FJICV! zWA`sd{i7W9kM%;F3@CE(J~)Sbg&KObA{FMc^^)Z0x~+I*WC}X^r{b+k0zCh|l7jpU z@i-5-n_c;@DOdYlhAdu}j(hx5(YRyx{~LV{`jwq5*{CAO0rsgN>+<snuXUlrlK}ue}~D3pszVgl6)gae7Y(Xg$j+BW4;%@!-Je> zyG3R)T+coG8I()7DnnLmortd)XCU?R|CU=y!FmJ!ll$JJh#evCn`BY!++b4}OW@zH zMf3G=-NtQbW!Y%Ui3{MKej`H+F1li;qBPW(K1C_L1HRdrB1>Xsuf^AAq@!`%XTnpU zDc^pPA+P_S*LLL1 zIxSHU2mj396DK#`v2izW8tPbza+>eqypE(qEJHGo(Opyiyfxq-6GT)7qWJMWkgC;W>vgIus+;Kc_m5ZJR{a*R5yt4#Z#hP4!N_3H6QkVB(?? zxl)$K#Y;zm^q$_0d!{6#^r>wgThG(Ia7nVjCl^0eO-3iikTrUz;92~I6uC8K7xo9P z`C*CoEZ{0vN|64I$MNaFL?o)=HW8=5y>LO2lq!|u-^&xxWuYHZ1nvb>IcXw$r5vvW z?$#4u$x`5gI%G&h!Xdo2AsP8^4>1hwfwiNdEQuQ`!P@32Xcf0iqyuKro{_TTRecp! zhku-Yrxd=Jrv&+AL}ZDV`8oV-C=n%;?1Ycx;JXY@S+cnpz6F4MZsmt;S|;%z=LNL+ z?^O+04f1N(9yxj;<}SS7nk!9|qG~YDEEOf)T5;^gJn$L*o88ff@%|a9$n!^dzQPj7 zrLs+eSZiQB)jSoMYG)S=0XI8Fnk0{F!BQLGzx-DD^e3NTY*&ZA>(Pp@MJ1zU-%fEw zzr!qCCqZ1#-oqP!OPBkSI0W3Xy<%iX`5A0mn1XhNUcUDbbX=PuMm&uxu*;MbR2-l1 zZ40!~(~V+8$@d73y_Sr|M`tLEd=72YEJhS&+{Dj8$D5^k6<0xrPP`a7bGH`H-I#MD6bZTYLoZaA`Ypn!v=zWaM=50ly>e&-x zpsz{2lq4GPU9`RaR+P%xD7h8-U*A@O4znr@j-Fd7k77X0&Vi~gi=}Y`}dK~IH zcC_~r#BWBI46zq`kE0>aT|%MBZ8wN>C;S`9f&6tcXX8;y$>cMSpgqd-WkbsE;>6oMh>Kz^1<-Z_0}6*Q3F%hK)Em-P?!r9OBR~w}fZy;Gb>21erFY z5_hB|q8iP2QGL+9U+X2wgB!>3((pv2Hez>tvk1KPhTMT2cTQl%)I>Dz>7JN=;F3xt z$XeD_tXj!MCrtvp*1|ol)C%KOTs{7s&qY4M!fSQm-aj!?nxtl4!3w}#Z{4xd9XP_3 zAtM)6;~Z8JT2_A8Nf^FKn0`ryY|6qo4e}FCF3Pu>3vJZDU4~S2U&WiNlMpJqq*MfL zX#sIwYWp8~@wFmU8jgV9EWY8TvA2=Je zd+&UK^HPETVb}EH`5O|^?B?2{|KOgk{~$@UdS2q)5s4`Ow{HFfxc8?(ADY(Qi=BW& z28WJ30&b3)I7$83fZNW)Kery?a@nBcN}m{6a)uANNt000stHr9LGNT4anio>0{#y7 z;11743%^01EK?OH0lHmyH|V$)e(T{5(9zN>Mh@5C$4fx(w|J%BnxJ=UNq+J6wbKJ=Y=al@&Po9v6x2l)fGH6vmPTIz(^b8Jzcoi^d-LT6G)zTewA= zj5EK8lYski`RKk#;56ejArHo7roP!DTC!+;?4ufF*2!wduD0^Jd}_CMlm_|9J;nGp z)^x-<>fc5!705x7ipNY!Mz=SAo-zn)n!FknGJ5e=tTZASJzqJnq#WXRAxD)Yoe0Kb zfg3;5W&`C$45^aLNxQH`TLOB#Nl9&e1B|D6YD97Qb}Z2d*IYKunNsb)qU7fE70-qk%!85G5P+fwlXoOW#D>E??V~|LcIV-gRVhgL*@oT*SX(G$ zs*_Xe4&i;kZT|J&9mx|*r@uwHE5WLHZ z(j?dKSKw6Owl}d31OXRyNR{}XFTg3FBhhhm1J$wlstWn?@*rLexiHVK=(|VtYU!(x znN52jza#wjzFFqABE-ci9{%&6Qi&Zw2Qi7*-T^v37OD}ah2_`}^g24_L} zCl=vIh|7nK_xUs~Wy%nPX_Z*=K?IU;j1XkjCV zuifRi>TV=z+P_Ho@$Xf;Iy^5-mgUbB8E2tL*IA*haW# zAYV(F8su>WuA%Gp1;f zN#|=A|MsG(b*sR?rM4R6-R}bI+Z~VE{j5x!En&>T8sx6ee%yL59{qHiu|U@XuElDS z2?4ut2IT&{#1Zic04@mfhK}BS44>t{pkC+Ltn9eZ&hP*)Jh$As}iC^w#H*@2i&LYgSmHs8+B5XtR@%mnjkK+v7C9S6Z-R>9u4C4 z{Vbj`mx~;iS~U(i!F%V$8pPkM3M*-FQQG>b9wms2L$MYK=;Y%y4`b0AqqP~!K!<9p zCQ%=}jHhJ9qRB4l1v^0RR< zlKMlRaMjK+`7u4KPFd1^RTgbP;><7MkspFk>;AdQr=kCi$uc0CMGe?$)@C#h`m-bS z(|!d5V(EViJ2=6$vg)&&p+6UH(I>OX9frGB-+l-I*WRm3#9uZu_1&9zZErc$XE#-s zbng0(vD>1*tMohARXL+W9wgqtcfr4%$fC{z{9DY`BK>}qcw}z`GV`BlvKRX9mrq*c z_`y>Ay(0p?M~_*sX(~LM!aZ{l72(k@BhWq0N}sd9^#p5^S?|x{WkR8-eM^k)!AI~6 z@m!mTs#f8^Z(ER%*VrXW(4T8Fb;xdbUU&qYwzYadC2(Q7x@6U)qxjkMNc8pNIltSp zU{B$ZE*a}ng2$#rqM!FgJQ|^Wy;kUvPoWif1msvXtqVoxp&vX~&?ATTmf;JYp-8jk zOt=NK+qfn@lK$tC(^q3~%O`ZyF_$-d307p40fdgR^vYMi1L zg{rXB=kw4{!v=MU2A_v>45QG`JKyhr4urRaE^tku4kxKbA^TU&WH)eEee_8M^wa&8 zVMr-6tX&`aY43YIvU1TC+&Dc9y)SxqvRs?RdO2GU^44C*;=os5NN zH}KT1P=t+aGj@ZH^wBz`DWL&xJ{XGLI}4QZKm|*2=52^ay!9m*HNDNE6@C_ZUOv`#I-d0*qum|X^1vNvGA z81iEVPu+~Ac=704nn_o{bGVjaNOXd^IPrcw3fprW@^HXBbK8KZc|(35;BFj0R>W|< zdZa@q6YqoiW_)bUqV-w*)FlOLG8ntO3C8=V-9iUl7>kn_|H{;}Pf-8rt07O(?J0O= zZ4!DG@j_h>))p&tHHclf27Y}u2?hJlaJV23YrSp_!hI^uaMmtHUb?_#FV!Ly^A_Q9 zg#^S6YM*3s1^$bR@>S7ay+XSn5%7tJp5|cauXR9Tn z(UaZ;dt1YQfyLUS`n@=Q0C{FBKkwV11MAN9kgHfXQ3AnWu{7M??k zb%>6)Eq0MiL9H!^$D6^v;{_O>|D2zXudAe>y6((3d!tz_r)bEBJkJ9=0~hzrt%Y)x zEA>g>I9J>lmWV`h;yyg#z;oy;J(AY29`8s@M8A&8Uek7fd(a5-Po4^8IOV#TMU*>o zNR!l;`Y<|9+UD`7j;+-iB!azy$(NhrHtjmqTP3VPL@Jiz9EeNjCd)@OF3vM`$cd0`{Cb<_P@eI)0@0hfU>Rnu@MQ%P1VB&Jj+wLTd%P6)!`CS{2N7aX+ z`}TOk>Rix9^oj8I5L|UG49OU8)Dy~vcd4-k|qpv zwDzuTdVUMe*c3M=1}k##Zkq^HP!@HXeg|*p0{O^P_A;E`mC^Z>bKY-2D(v!@`phTw z?4k8tZ`CI%;ky{S7vV!$YBy%KKDktv#rXHcuBMjycNgaA&P;E7b$%Rr>vzcP`xN-M zDp!|0JL`;B*u|khx7L6vD%PWeD=hnmc%3Bx&`PojB68&4av^Y?s(+PXe8Wx zDa_y_tZhFVk{3m*u*j}xLJ|=N-!cS${TT8cQhKGbW0cgBk&Im>5yPG!} zk>Wj>_@{3GDln>2o1O*F&XD_avvE596dHiUr1wlawiEUbd`*a-b}ANY4?wkzm9x@{ z;HHrP`~y+wz7ML)d9dek(UjcJ*@t7B0#Q=7 zPMh>yDC%iSY>f`%-baDRukgl&FD>wo>~#~u-F+0lyAz0}T>4f}37q!|W0IU-jPC{n zB0M5F_YQ_{63!Zt9Y2p?2hBjVOtrSK1NIqorx+1ba0qYd2tZ3MgDyUR{yaZkpPVg8 zz)Brq$Sg=#-@^p#cIgv66p06Kg(3S@0ds^Rah$Q2I^TBAvs`S|#z(3*Rkh5@lJf2n;j81dZHhj7V z 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 X95ckus?62!pN}zW7PRNPZ-(G=eV|I45Rxk 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

EE`un+y}+w<|9){LI3=PM7rxb>pHn_ef< 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


w8{2H=o11toKErJujXc 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�$ue7}irNf3wE_{rBk7|9EUlJhlO=FY|u?6&|bQ zcr3laW1$LPg^tp`HzX9r`nY&xd>g z;_cUYJvQi7fzJkPLcR(0Y`_xK*DLe&Rq&gDg^GN<4SpZ61n~mu0jvUcp+6O{4*WJ? z6|f8IXF~rb#sl^d1D^o;B)~dgAFu#?DqtP30Qx1sDqtJ13)ly&!+x`?@$2sbwrlc! zsVa}%H+gKzJodrw*WmqTbsh_E@z@8y1pF%SOR@a;>$QW|LoxkvzZvWIF^=hrV-@(+ zSpB$PI?P{hX@KpR{&>6&d@f)C>jO4HzYSOieJ<3O0Gn7J{65UbjqQiW{eV6l@+I)w zP|pUx4}KT=v!Oo$^!Ty!ZCsxZ`98!8z~=%MAYYH|w>ZBJegXUvU>Ew8K#vMofcfj- zH-X;-zXbU<#H--f0jsc{wh|tn@&3(3z;E+d2kh1Xe-e*X^aHkm&xiFgYw>(SZ63Rz zUjjY>@?Gdp1*`+VjTreNydD$#2R$xec^`kiv4PKrcpvmipih8!0rW`7ADdtNeoc+> z#jy$eD#W`GFU8h3p07iHQfz*4za7&T$9_y-91FnbLp>GvbjUZMUlaD95SwSbo&;D2 z>_R;k^xLpLD%OYj37}U3J{RU^gMJm_eZ=s3DL{P*upYzl^MMZi`hYFaXVwpohxk0z z20Zp*J#Fy2@9@Wys`6NG$n)utuhxV37>?_)-{t)()DvR*ANLPfs>|1RWA)?lCg?Rm zj~UY+j}KsedRBNo$Q^tCMcm7uAG{+x4l?+7Kc+9vFU0zd_iw_y+*rN%`%OB`!;bY6 z&$nTH1*qpjJs09#;8S6qKIju-dgAp>)CcP;!2Xaxj}LlGs4rlB&?~`u>)_Xc&j#!Q zmQXMBr-I)GzYkb|c}Rd=z&>CJ`mv$D1oLyj@5gX_|EVy4{R95^GaK_*jP39E{&$}l znf?Arp4jnVLcY`#j>i~&T)!F5uR}el5%0Hw-vz8Uf%x}%>;hJSUytdD?`QkHFh7n> z&}$<`K8>$0e8^+H1<&uc;{8$#Kd#@J_q!kQSZ~Q=vw4W)`8w2>AYK5hB0pdo`m zUmvLrkKMLBHb3LB1fM^s9{+k{e$2=F?E!;d0)7?h3!m`$2E5*>px+05Ce)XJPlfst z%tr;RALRR0fzJgjKz$Xk4gJ{Aj}H1Qs4u}hb*vA5za2kM7yAQ!I^^4cO{nLB-$p<5 zXG4Di=<(tB_F!H<#0$XZ0=ACw>!-thQ{nna0KIw)KR%vf^NM3VrYDZ2Lwr3S>bWp) z6Y81JpBCHS@z*~e;w8`{#OgiP1NBY7KCG7wegXE61Xu+u#O58>tApQ!ex%s_NIYJE z>tFEzKTi|*Y`_}uxv}FX&hN$e;#dW2Ks_7$V(k1E&llkOT!4Bq9KQiz7xb%eJZZ3> zgpU02EOZEQe7%J)c)tnx_LqFT6yuBMo4}`He9RwzeU)^c&xU*#{ANsFyq?>c&-Y{X z;`}bu^Wpf`A>Rb-f_@eB>41Hhhy6LP&j$TcC*H3@eG}^27!UP)(4)fqB&hEKp9y+> z@as^|1S~+j4SpA}iSf|CfO^2MLcR|D>d>zWSciN8_;r}S1b!Fze83Xu7l6+My%P8Z z@Y{e@;MW1WfPKVW`28nzc079z526 z;IRq(I@FgSUI45DzXaF@JwDWv5JNvI)RPQezYqK>=vN_L0BmAB=uvy}_5L4Y=K-cm zQda*J1d5!YR3wOKkp%>rgTTO^}Wk~2+Cq9q_% zXo84HC=d}b{98r+Pk;CO=6>~?q0ijsxzFy|^Pcmb_pR!lxpQal4d4s<8`OKu6R@9( z{+Ss4D))hYff(~T_!s0!sITC|cAnkynzsE8G3Kqvli{D>pP?_vYgiBeg#A?dp})iV zdEf$n13my}^e@1M=ZW`SdPIBQ{6kw@ehv6xEzaN*uz`PtzX5i@8T|tI3O+x$%@@!= zJiO&A&Zj`{p?AO;*gzj1()KH;ufPs^kNFDn8}JqV0(tra8=PMNU$FlK-k`q&PRxUT z3I3jX;0#=VGyEL-Ipi_euV+1Z;0m08GjM=^`X=0$^R+mfzs3GMEe^m5IKwZ4uixDI znezgp-XM>o{{>pTgI|H4XFYglTE7aufKSL*k*}hkN4|PS+b=+$fD8Nr{1R{l&N%;! z{0`^i(LbSoMtw%V0_?FrhyDeA1$hnf7}R^<0Gxn5`vX^C!#voB0}hxsfH&Y1a0Yhh z?|}nw1$Gx~?_0iTi_;}q94-ueu@gVc;rd!557WQ!3WHf=?CnP-yv@RZ*V>Zd<8bxhXYQ) zd5aG}U&p)#`3m$E*kC^yeja`m*kGRyevbP9cF=qD5AgHQC*S~mx@>#@)1_NnfX$^^ z-a#KO+49D=*j=v01~{PJz^@`tf!+hB%eVb9@(1M4@K5OPQEz}f{2g#c9&?#CpF{tE zc{2O4o*4ZC@;LMlzz*{l^iMc14}C)Zg#HJu&JX@}w)Y_pe^5#Ra^-a?AT~X>kT$(a(K*TVGIb zuGsPc{`Fg1-T(*sQ4gFjZ^pa{^#$0We}-R$pW*zdH{aII=UI>a7|iS77tr4$Z-9RS z&cF%z3UGjbfj)D8%#ZmzaAH0DD)Ln518_p#3|yHX{sr|3{u$Uo?|}ob!TC90gY)*p zs1M-HA7A?>`~QDu0xr*K`3ye1tmVUtT3lYzV)w!prx&z102}z3m$vl@d;!kLSN^Qk z2jp=tZ}~(X{r!tk4?bZ2iaZ(q8Tx{KROEM$N zD_Y(Io7aJdzPzgC4f}&nz+r^`HNfcSfGg?)c!xXz^A+^Zs82i}=o9t86*yp@=9TTd z4!j4>$m1}7LH>e$1oZRJ8_egBKS5uRC!t>jUy;wlKOm1oKM$Od*TcVnufQ381-Jqm z++PRmfdg>Dd=-2KUw{+lGuWSbOM9Q{>sxHz&|(Md-`w&Ze0o#MXYd*QGW-hk{;jQF zfnNZwn6IE;fnS0?ysho$;1`fL!LPzE;rTSsJKz96^G4(WPQV`XdgL#tuh_Rke-GY6 zAAl?Lh4aDBA#Vns=?`pB?|>8fSKxsCWSmzb4{UH>3VH4W{(?$ZoPi6l!~7oDVcv{<0rd&E0DJgV_$ADjQD4BOK73cAnjS0_yX2{vBUYUw}RGWb`Y@XE0wv{{p`R zT(Q3j|BC(wIKZ!fcgSbppEy6T!Tvn_9C_f%e3&;NkHh^+;1l`>^vmEAcn^OE{{nr$ zJ~HYn>J8=%=$9~m`MdVMS786QEnhy>;(+>$`U>nm-s(ND`TLd+(3elPykURv2{?Qj zddy?c&jDA|C-4q=0_H2|pHZK9UeG7%fh%ypKFufE`5kx_c*@_K2r}|fer4f1NOiHxB_R)mzcNWK778#`3o&B zpKEdWhZcM2&1YKPpfK9*2Eo)Cc4* zs4wsfn6G}e-H!qG#PAO|KZp4%>I?E$;6y+4Psks@XY|YPtI#LxFVPRUV!i^tz|Wvx z#d&!8A#a9XhF`$E2Kow|P#@4g0UPx9Uuy4*`{x#yFSoeeviBXyg@z#|BO5d^%;H%c@ubpJf8iqkBa^Q`z@#s@C(d~d>MSeJ`-?-zF@uz z?2$JCXW;Pf?fKRj81wo6Z21Jfz%QUa|3|AgUu$vt*A{2+hJNUuQ1390M?Q!809=4Q z{1W|u1L`y8tE~Tj?feP)0^UGhk=J0~4%h>`e{1^(V1xVtdXN5@`B7hi9nQD#e32({ zAHW6uJ@O~?_waY9cks{He?WZ!uD}`n46tWE;DY)}jCzB8OmBG9=I{I1eSK(Rf*ej;!OzZrfO^%3 z9&z5dKQs6q{0MA0@AtL-)2)DS(c%SlPmMxCpXW#+;BXGxl zz}>^p@4+n|fcruZRBx+_4|{0sM&hEasb0KgBlR z4E==sGjIq05x9Ry>mR`nz%%kh?8~CR1wW$S0KUh35q=Z&7WE_iI`AF*2H*+$h<*cb z2R!2ZX7CpGuLJIZBk%w`Bd*`t;B9LCCh#Nph<#1SH=$pLd=s9}9{LD8!Y{&a z1fGBg>~}zZi}UHwKcfGD`WgLt@E!JN(SJn!h`clS2;9*Rcmke*E#~WiXPnmzzQ=qK zcmTGTuLJIZC*bb!?R}kptHu2jT5KQJ;^B!cj=$65o_Z;_`%o(TUD`~>|3zQ;TR{eUg< zTjU+V&)_HWz?S;}9)L&Sh`ZGz(?Q_*y21o`1Qc{_uBi~ z|9*=*;7I)BwtfVjf4Ai=^ga0b4^aQq7SGfV;4%M%JR|%%;E4VM_A{XW0RM=2M%2$w zY4djQ?|}#8nbFSz_n2owe~W!h@b8engMWwoJ@^rR7WEPNBIcdYe*o^`H_(qfaEJLV z{72-8sGq=3=s%+041NM{v9AIBI`BR4i24clf5dz<@{fPm-befF7SGRY@x*@6PtR)W zXW)?-{rac1`VM>q?t$YoTD?U-3w}hu0ep}7BK#)kXY6NqdYflJ-VS~PaD+ah-vDfp zx5xQ);3M!1zkxik{iAk13w=k7`VsSWz&+{*;0Qe8{37NbQ9l9Cz!Ur|@=d@!@JtN9 z4!8%l$ln3?xGw|v5qJU~b9;XAPg^|xNsFiFw>Unx#S`v#4}An4;Ai320Z-3s`wh%-dt$ z8TtraH-MipuSMRG z_27H>PuRx{zK5R$Z=sKvcfh;@^doQwzX5&|{AS=0^)viB>|@0F&d^)n9{qaw_w)yz zfFthT2t2^wBJW5Z=hdOU2e#(Sq0KOOJ@{}Fx@aEJaq@QC~~@PK?H`Va7% zvA+@e8Tm%&d-(U5e+C}VZ^HX)22OwSfSc_9c~j;EEiNwtetwHH>K*tB-v24|@OQ|Q zP#<2{>I3{U_zb;yajP%6#R2&Z@)h(m&^zFYJPCYxN!vfYw8iD+E%vW$ae7&c3+Dsx zUe(qc_$TlQeigg}AK+(R-S+dZXmN(#VSbPOWc2scqrPBY75k{r8|VXYg`dN`9@sE1 z=1Z)HzlT16&zL76Z-##bHaL%hd`3;g;P``5KNys^a&IN|wA@K5NU!PhsyAN3yj@@r5JT#%=r zpMzfo@6q32-T;3CeL=kgpU}UcUk2}R9tr-5^Fv>eHv_P~bt zoo#)FUqF2UPQc}Dt)G8KivxJ`mX@#JGxk~F=b(3}uWxPrGx7%bRp0`B!G0>RNB{ix zwtr=R)O*a6z!%_v`br-89I(N@6XwnI2ln*CyahO+KEba5JLnDaIplZXJu&C5AaLCuC( zdjFTLp92o>Y59QuhW(J&fzR;InBOB`Kz&7hL48F(k31Fm6Z8hW!TcWn3Hb_ef1>-N4TEy4>m7IpKmVb&K7XLa4t#>XqF;G`tM}+{P+w7Bzz66n@_FU~PVZ~; z6zBuzV;=N3&^zRH;4}C{zrShoRqz3R2J?B`hXCGT{tVuL_rL+TU|$~jGV6gWG5iwz z4CeFLr@?tS)EoE*=o9!%Ki~lW1YCeU^}reZ!^hhDka0i!CtE&zyu}_kqu#^MOs(F0 zqQwb*1$_NTTc44?e6-~Y`X|(T-~|5wT#?6No`C+D^PpeAz8r93e)uQ!&)^OGJn9Sb zWz6e__Gu^xQ*a_eW{Xa1?>3-TFY2R{ct$LAUI6<`Cu1iuXI zYMZyBpND^ez5*BQ&%oaU2kaxEU&1^dI3aITE-_oE<>!8{Ir8Mp!$ zzoUyuAV^cM9K`t{%~{35VLp8n_B{S3en{v+m} zz|X|+vz!m}OvpC_cbI3o74rKQTj1{dTRsB!w{H32HZAUM+hY5DE$)DO;0V76enj30 z{DgcH{ATFm548Da_zl38_2@T)AE6&^*Y@kNuMv4i_*tCCi1Y2B?|}#S_3#^jN8pHg zBl6Fvx9H!af5drA(0AZ1_BX?SLj8ce7I}NtgCBt>;2F5Xd=v1@^TIqma0IrPrvn~= zyF0e`t-EuJ?HyV?vHngiKO;~4!Itmu0!+Uj0+0R?e0Te{-ok%Go)PsE{g8Jg&phbY zV;>Xx57=)+{Qy6UyaV!0;3M)`?6-%0#(WlediW3EN6a&V?=VlKAMi{JzX9`2m}evp zJOfAUX8<07d(1l_-;8?8e83TYGkA;hnNZ(@AAl|DXX3lH&rjF4c>duQcXw^E1@4J| zw5=b2C-~3k-+`Zgto57GZvyUqyse*bA4lXFun!B|qksI7)<2?ugny5D2GsZP>#>g! z^&{r#kavKe#Xfq}M_`Nm9WnM{(QiV1#5^Pw=0CE$e~%pKR~1{izoB_h|9-(=E1lZ*l(#Uqt-?JOfAgjqsa*2h>lP&te|~ z&Ub=-2H&Bdg?|VC2s{AyxPJq12mcZJ2!3XM)LYEc<9uhHFY=7gcfbSl0Qabm@b7>l z>MiD*P(K5AsPF%$tKWg#tv=)!gXmJFdp4##g{3rCE!FTYBs2`AT{)4t( z1h&NRi}35f55PV0jhMH`JocH$2Yy0-i+#`FBlrn3Xu zegf{0zXuBEu#W-r_uyyvS=J+8#CZ(BBj&TXPaW_8 zY#;N*=J}6LZ1Dg*0{2g9>*wEW@q~KIdh);3>W3$^czS$``_$qN`uVXfZ_zJ8A5q_- zUx)l7@^$dH&|CEDfCu!SG0zBo0v_OJaULD;i29y9@BrLnzUgu8zGwJ%;3x1s=C#;w z4}An4fFt~7^2k2`&%guxM&OQlfg|t?-2ZmFzxb3E&){e9_Q`F1{Jj=;s2|}Malbq0 z2jCul1NXW;PqH{N3Z^V{;)7U#FL zIK8gL1^Ntq1@>=i^#Rztq2)9C0asxE=2l;jzr3mC1NsH%4d!#0CqeH~@6oS&wf)CacM z+`q;3S6iH^|CN?E4{C9VEv~=@{^7xGy@S684!{YxKks>Nxc~fj7ie+3Sc}I?0AIMp z@q#V3)B|_$o8f0K()!K7@j@+cFW%zrqAi|)E&318kH8b~4E+p#S`AzUBR;T5K-U z;sETBC!>GDJPG|1@+b7q-~;-3_}5Fcc`ND-=1s_3*$;UN`X%hcqhCS4jQWK73|x@U zAWtU7ek=42c|7ts_!aOK`U*Z^KLvgj*dVWCUhoFzQ@~eXhkOS99@xP@VO|fu0DIJD zV1xZQ;B6T(QL!dIucP&wXpF5AgTEi5U3`uz`PuK732t-(0!H z4)Yn{fO-SJiaZs151g>CjQj=pGyD_#quu~}_y^#OJcj3o{(O{b-*4t0B7K`#pgNW)DOQs-yJUBgXiHoE%xMr(=|@j@BHfaymmNUz4bHKY;n16 zi`~|5_xI}>=*zX*dJi1nKYsLsn_u6YcRPOtF4sQgcbJ#+BTvA*8GMFc0bh~VA+LeI zK_0jD-|Z)F_qWUM;aAb$qdslxcY3!y-yP26x94%lZ}aVNMZSvjEy(9_z5)6KY;gZ7 z{0#RCoYAjfzXA0g{S)TNs87I#dgOQL?|}>QR`3RS9B?3}A8Dy@ELv%^%;2r=CA0ViQ#8(UKP9tUziX6 zg?aEiSMY)U@Jpz#x5EAQE%xWOxZb+O=@u>a!0DDPAHZkytK0|r71W#WYyC6)>o))4 zeaAe3e$)e}??*rEub|$sA8>|WfnNeHs5jWJ=f1F?3cUjk=$DW;z&``kULg z_u1X4#r2LY_P1%V`+*kw+W~L+UB3*!0=>CIs}Hw5g?IY8?Z3kbc>??@=F8-P3-USm zmu;Tiuh$dz1>Rwv#QlJ;TYfiR{zUun*JB@Ht3RyAegbgX&U;vokM9$(-_EzIcia8! zum{e_pOCKryY2ZL`T-Z@H=G~&3i>X!|^-zQrCm{cy`0=pFd-Lv4KqAAYdq6Z|Ul74zr2wEBR& z4t^OpL7&hs02la&A8Gq%@CNf`_&M+i*xb4GFUarU=bpc-wvmbxAQsh4t@cA+3xSq5BVH$ zMZH1(0PLa9zy-Jh`|W+&6~2k;L2ukbVIAArlf+UKqQT#M6BpTfKOD)eEi-|-1J!_RH~ zcK5*p*Pm(o=XCy#!v^~<+x_f#$N8am$XkE|{4)A^%#(lv`{TSl<_%kX zct0?IMgN3(^0xm@pOL>{-xYj7KM(&3-oVdbUbFSzJ z-sayuKNb1&)_=!m^bcGA9dEY!L;QDbzkq#t%x8Fhm@jYlv-^B7p?`sYKz_IN-{q_5 zm$9!3?0MgS%>z$8&pZF{D=n_~!}Cu3=~MgK%~yZ5tS93FlG3o2~z@zC(Yry{|hyUAX;xXGH#r{fzkaLkGVB^Eupq z_n>y4`2j5sc%BOOVQ@YkIB(B)cOMGQyWrQGW!ryO?|=jDmjPe5_hF|m+xd1lAYXt! z0ekeT;1hVm`xD!J8tl8``FGG)$+04F?ufjn>qPTPGQ_Cp>AzM@|SA8;QM z{0z>|puWJ*fe-M@#5k{vybk?6{44YxdJla7PQV`b$^6=>`?A}2c|?odLt1Pe+~V@k z7JJ|T{|uby_psJ4JiNsoc>-_(&hX3NEAl$zGpIMnUIATU;O2;shMvSAV0e z&*Xs%@;UeyD_plx~VcvxOB<$Z~ zK8O8y;Eenk`3kVv_CL%ET(EzG{RiYL+y1+cFSokIU2b6xzP2{M{ORAm{D1tnIr#U5 zyY}YmZI8V9j_+Q&&d)De=ew7!^H%V^;$O1vKL~z8{_9}=8S|6xgnoKOn~(Y#^O2tf z-@S6(e|q6MKVm-@!2AR52YD;_9`jQlU)<(9!ejm;yvX0)LYDVgvb8LcS1jid^7aR?>AiR ze;;=E{_C;7Q@tFb9{lq?Uw^>a%X@aI zi>N#I;J+xI{-e;3V*XLgHwnGPePaG7 z@=qdvC;W%Kdve^z>p}D%#rgDO`#$D;v*KSb^sigzt5s*Nc3k=x>GpDDq80 zA4R@d=qJ&?7xP8ITk!mRf5h`geiHgw@D}e!`gelw1s?@J2;Sm;Gv9>gll<_O_W34n z1>e1ST^|MCzj0kZymg)L-nP!$H?8xX;CsPGkuM7UDE2!E{Ur7`iF~u@AK$*dzggrP z1aFnUm~R&PQS=|)u|8jq`*q~k+t}|B9{I>yJRjsoJip{S(Z3h`AoBGh-yrx=@Db#*pd^7Y%zCMlqBGCUvj?t+`K#Z z=kjCs`ieQk??1wy{2=&A@Ez{qso#e`-QQw<@{`~P?3emk=qK!l`l#}Y{?lK# zABV1m``0V}ed~Jr{&jvte)f+-KZtzxL+ky!541dgAEZNn^7g$#ulNtH>n-ME|4I4d ze5jwXe}0{3!2INU?Dq(dd`EcfpM1ppM|h#{-qY@v`VRR|eV_K}=YPU}$dB+RKOrCa z9{VLf3VnzDP#?v75%+_7E9M(;fA{sv$Kheme|dN9_?vFtGkYJ0k(0mP?U950h&_^@ zlpcGeKH?sepG5x|=SaQX+tczf^8B0qoW6$<`N@w$KjNIIpM-u8{b$8vzwAF?zx@5A z8TrVMN{{oQeinL*^P_$cyv6>h?*$(PKM8&oy!~+dp1dyZ-yrx=@bTlq|D)@CFZeq^q<9kyJr`DWqYsq+!M75A$b zd=&e)Vm>SO-wAyb`DUdT`{~902f>emk7E8w;6{cpGE)vlfqx{{ioLTz36ZMeqC?>VV$3qUhFT5{ddBD5d0+k zt=LZ#`yT|~iTw>C->lA8%`fz$;0JMjo!DQe<`aAr^F`5r6#7w|UoXyYQvTxoI*IDDn^BFN9xzb$Gv#pD-W!S@0d^r+&cslJ77-`Cjm&m@f+bEb{lle*%AD>^};A z7QDstP5(~tQSgJ{EuQZq{Xf@!d?7#l<2v7cah-s2oi}^2#{YSx%@IRu*e#rN@KjdfOZ)-b0^*zpye8hgq z&uV_b&!Yc~{1?OiN8}?vV87%iq3^L@>Ick6eiC{s_(AZ!$lrj$5_}Z>N5M~mAOEF&e_j&%xBs-x$A4Yt`+r{NC!8<)4_{l?N8#U#e52?e zzq;Ok{PH^Ai~ZTJwE9b7|2_JXpKyNUE%rmcM}G2y(2qDD>PMlsI3Mb*$|v+Q&X@i( z@?9GH@6ez8g!3UEg?_~Spneki4)aq#2>mSh9_LH{N$pR}7r|c!`yT`!k&k+d^C8~} zeiHtZ$TtZ80nab<&7%J-^c~LUh(GdQ7W*HOpZqL%i+t4gc>j?f1m7uM^p8S63cgqV zf}h}jIqZKHyv6;Xz7za3w;z9~@BeF^kN>{Tcgp`ig#O>w`T75?^ON8$@?W0&M}P7W z`yoGIKJv5bkNr_^1wV^?qu{NW--`Jx_Rsts^cMRckdOQ*^!7j7`$2t&{gWRtKlxtp zQREwOe)OM&eir;B_BZ462mb#y1NK9{|L=Cc~9eBcVd5o@E^tV zI|+U`&oi1oACTwQogw)DTYvt0!P{?I_m4u~3H|W(^?b9Ke-i$qIv>%0RQ&~S&%3_A zLGa!GwEN-zZ`DChz88EHe2@D@{~7x~!sC9BA6DjDzE&6a`Y+$7e(vV;kM_@HTk5*K zb6l(I_s(mrZrsbY)a`QLc-w#X|EW#5U%R^9pDQ=)&Hs&jmi+Uc&r)~J!Osi*>RZlU z{GN8%*PONUv&g^H{o^I?yQ#axFWJqXXSaM0d)%vAzHfc;x!?SfjnBf5d%1S}tscAg z=kD#zzvFjb_uZV!9>3(h?ZMBFeBkbz9RKyPd^+z*&t>l(Eq>=7{9Jx4x%=ll{Pdp( zxaYUa_4E&&;y1bW_{GN`{QS%t&$IdS{yzKpM;-2G+RMN5dBG(gbeiAu+3~yim;KG) zuXXU>8Xo@St>XW;eeS961V7l`*Df~(je;L8 zwXW|jA^3~0^S$8hCD-*)=sTewF0$@Fi}@$vKjQs&WdEZ7sQL@uUV44LLGay0*Y%yy z_kxdt@5TL^#r|h;KL#;h6#YAKe!V!KQS_h0{Tal3v(Q_SFA9DX{d+NA6uedY73beW z&(FW3;3wpxeiHgw@xtFK9`A4F>jXdH{HV8r?}dL9{GfO|f6Nzg{^V!jZ-xH|o_~JH zB=}kI1M<^<6nuy0llsZF?{D(+<=6T6t?T@B*>%1byjA{}S@)lXK8pUsx2^m4-?GjR zV!xxvH;8;AK0fmNI?=xu{2=npV*ggN_ z{z2sH#ePSj@5FvPG2bNgR`9*zMgA!EH;LzK6#6Lgb>e(GalftL2hrbRKg;iF?En5n zhx>no7y3!?1M<^<#{S8VLf>P*)K5Y`3w{#&iK2gp=a2cU;0M8vf}gM0zJHJO7yKmn z{tD~<)0Niw;oH~wQS3Jg|4H~y!haV0Aoeq;{RqAn`J?FHi~Y>XU*zjVe=GF8(04*V z3w{*574r{bf1S`r!H;5otNIImRQ;9yGVSkA^Zn6(>pCAVzs_6XKY-`wzmwo2@=-q^ zANgMJgYcg&+s;q_S^0mXQA&z|5@y}v+Mb+;CsbiZry(nyv6?ceRUE2$#Wk5As&d`96v;r?^}PUPqq3{_b<%f)#}Ojn4f$n{CmL<*AV>$9|b=P-eP~8uNQn2e0R0=`6fL7>^}?M;(k!y zi~dpY9qz|<@%86H@cs4M`KgbBpKq|Px8J+YcY^P`b-g`vou6;K&JQ(}o`f7^9Fe*Zc@-FlrL1wV`av&cV)eEqFNKB4cvZ(TnN|4He^etN~L{9=Ejxc^b; z2a(VI!215W+pP1w=x@b-d%<_&{#h~Kto+6K%wqq8n7+OeBypsG2bBW?=1WWkuQq=li1%R^n+jc5od0~sb^Rdxr#r3dyW6evj2>nIy`xh4Xk9-IJBm7<3 z_Xqj@ZtMK;!|VKr^QC|M(RIE3v2}jF>pCAr{$BL&#eALM2a&%M`8%QS1s{>`qPRa3 z&WC)D`$2vZ{sZ<;{Ve=vk#E5H(ccQb`;qqkP#+a9@(=yGe~-t&vPfCyduz#<3k>6r}^dE8m$w#3dL_Yg7 z>-+2OA$ZZ>iv9M2?{NP(zr}p~dxd8Blkado}BW=Q=;$ zYn`8jz7zRI+<)dDg@1pa^?dQ?)_E)Z2f@#RkI2Wrw`o8=^1a{(;XmR0=szp}d$;?e zeiZ#@q3=Y0EAn@^-^^zP-z)xS*XJJu---ND^~e3<->WrY|Kw-*leah@@;#nk@)Mq4 z@+0t>=rlAKb4Md@s(o$Ncmf99J6---PVB3~5x5zi;{&BA{W{t^2< z^5-jHe)1EZ5Aw6pV?OFT;omDB_w$H9?g#lO{Aa;iJiqiGM7}8U4T2wq|0wc};(knu z7yUcM<9>60lgK{{-U|Odw(ocL?;p6%4}zZ_u&$pUw9a=zKRsk!Ka2S$!FRv5?myxE z!~Kn7Kf{C9{jK18F@OBkb^lJxA4UFNoR1a$lQ@4X^3S4w6#JRPe6#4^iSvnK{#oQ3 z1#iXtR?KI`{yU)`M7~+*d$GSx?0*#VN5OYu{!yG?FZ5CHR=i(k@qQV^etP(Ce*5%{ zM;`t?cO&%VBhH8XfceOeLO%+9ME>RPXxsn&-yZqNPv}p6!2KXU3I752gZf$Yw|IW2 zAH@8f(2ux3^pB5dKR%G3AKCKf#r}s!t@9K7skg$vf9Se@6nyvVt$z8t8u#zdfPCcV zhp+29%uoF!^rPU1M~nX0ANzM=zFzQF%r^>s5B)cD|2RMLGv+5h3I7q#5A~zyKdSzM zx43`oKM1~iSbP4|_d*}R@Bh8A%b!&>VL#-1+%NJo_J3oX?~MDg@ZGgvd-(UC4w!G@ zpMU3nIpibyZ|wIzeswrM@;%On{D}VKXY7akAo5v}&x(9e@T2J8V?Ms$qu?jxKcdI^ zlb?m&s{VqX1#j_wWxh`Ez2KwZ2fa^U;46`cd>B zertWc9`}p=N9^|qFY?*PuJ<4D@ss|Y=-&%|5cxWhuNV9%_$badV*l6Ld;mQC>&F@X z$TwiW^q+)&Qu&3x6MQdtE6#rq{3!Sd&)1Rt z2>mShPMmKi?%xFd+PMEc{K-eb&zPTji~B>q6Z|OnS>%hq)4m_szkl*N-#tn2zq`)& zPh97t(05N**ISW)6#E&4|D^JX{f^A4UF2_*>yW;ry9@7XFjS7sY;N zq3=Y#UYw6r{RQ6%-ae&$e;?W3@2~Ur4+Q_zbv{0AogajL8rJn4^7GH9iu^%h)ccOn(_e1c# zINx6FPvo;WzaxJ?0QBT7_D4Qq|3`S?KL~yj{ucXT{{j0aKMB4Q`x`{Q8RyIXqncmn zJJEj>=hun-&B8wl{UqiaguWB`XK{W}oL?{eN4!6Iem&kF+Z=JV-@1MP{pPsYM&(B)thi9zw5&f@&uitb}Z}sGR?1%h_{zrJ6FZqc1$amN; z`5F5oA4UFN^zX%do!|$Nzf<{zep34t`DUT-#r>Fs{~-213x6y4L7blzeD}=t`yUmr z@`>lK7w2!qerLg3k$+VAlwRz2fd0C8|4i855gz%-TftAbf7FjEpWv^SZu& z!8#wGzs^r;e!x+`mrEr}i)SS?qrh^Y>!EQOqC3{-ckK{bot&tzCZo{t@BCflhFJBT=%a+Z-mb%yZ>I-hyPmV%^5FTJ)a=@ zC*dE|e#QJ%^!K8FR=mjPM7}J}zX<;z&d;m<|GR#^N$k&wd_~Qt_ABxy!56`2F<%w? zO@cRKJ}>l6=!4jA6?!B3XTcZ22eE%6@_WG>aetlQz2Jl3li-WstKf}zzQS*;Kfn1m z*ZK08b>98@I&TE;)4JY2cAc*xUw+iO-iZAqmH*M}{!Zlc!aocDEc}z0&xrjLp|2ue z5a*l3`DW2SsQn2(iTfYKd|vHe@Lue{iutqHZxQonvHv3GFG8Qhd`aYYLT^MqC(hT1 z{6^@L=wH-);(UXczlwZb_*apyi2hFO&x!q1aX*cCeuC)l#eRbDuVVfx`Wvy|Ao3N# zJK;20U*7+>@SHTC7 zuZVnA%4o`I&Xx(d799p zKmYz?C-{nd)K{TT$VYt;`YiY)`237^KkVUEc$1)U%`7Zf5!98`Ge96-ih-mO0VV<{$A*V;)TBv_dDQx`S)ul_>(V! z&w{VWcf=p(PreF&Bj$60H=@56dMD;fLLY?QiF`@uz0g;|8@xYwK1uO^(!L+556@fY zlj5Jht`E;$=iMK#^GWdjIqUi&=FfRupVj<-D)eIhBJ@ej7esyo{YCKqUl`;g?{L24 zGxkf~2z?U$3+AJL#{D4g#Qas{E5g5ud_naW`*UhPipTxsehls(c`x=8#D21xU+9h4 zuMzu8LSIxq!F#cPFY;BPcjA1EIA14tFZe2WBhJr*zbM{68TX64!~Vzz!F%lQh+gnT z%`7UthY;d%>p{3H=M!`Sjv-J_tT5{)OxQRq#&a_o9FL zv-SS&W$U~b=jQ~UgufH{j5uE-?ne;$vd|Z?|04EZaK0Dg`v>!ruka`D1Rs!}`Xu;* z{ZQ|4KIFZaKjD0+H-h)LUq|$U4`Tm8!7sUlIB$ z_^kFP@>ey#@HgUoop^qXdVYmI3BDr##qs`e$WPv2f8?v+!^_)`FVyE(3jWpWynl`0 zN5Q{#oezR9uM&EZuL|CY`GerI*nbgx68o!SelPf><`;S+_$tmXiTx$vpA|3WGopVH z`YO&Zi1Tw|KSubQSFGQEgZ`J``$zCu@Kx{$`Pjb*y~F&}d%+i+FZBugC+~&6iutP0 zCy_skdkyc7E|BEJ{g$`<{nMM*`GEbpt2lq5uR@>2{*2<4zsP6A^O3~)Wx+drYJR~NvHvRg zB=%Ru{9f=`%`fyu@Ku~&68lTS-wS;a^A({tBEP}&%llWv`8nk;?uQfojp{G>DtL!{ zm%;ldA>R>R=)KTq!B?E`k^a~}`7C&c_b2s59{Dbd z_fP%nc0c4Z&Yyh1e#lqB8|0_Hh6Vm|YM^?XI>tH>9o zb^r7c!HfPu?N9LOqwD>Hn9qy-C&7EM|0?FsV!uVqpT+)*n7;^p67wbGzdYVQ4tnwi z`N%t*FZqo9k~c!1ME@e@E4Ux*AH@7skD>uk-ou*7@?u zbv}sxRq#&aDeSn?(K~_^f!bzbg13 z@)yxRsr#q)FV4>iJ_&y(@)>cyM%<4e@_CW3i2YaW|AKh`6r3;ljQPnM|GD<#2m6;Vtn=<4*7^LIbv`J6q4#y&zX*L5`uzEI|0?!pgnt$J%-^r~PojSo zd=>lmB3}@^`RscBBIYY%|6ce9F@F~G7vb;4{WpRS;(mBBe--(%*sl@$Ng{s|=kG+m zApEo9g?|zAIkg|L|041walT3TJHc1cKZyM#asQLhJF(v&@_VuWD)d?G*NFL?;Jx6T z=%2)VMd*Xj8}a;Ap-=y`{(d(9yv~O&t@Gup>wNz5I`6)?&R3DI2>&ed8PUI}{fYf# z!H0ibpFfNKPV6VB{fPOi&>OX1kv|B1Q2B)33%wWllF+-ate;;IdLz!?iTjhp{8jY# z!as}q<<$O!e-V5Yd=dGA$X5mL#D1MPKO^o(6}%Vyy_i3V=hut;UgQgcPvFnD_w}FU z|3%At{m*lNZ@S^nID>Wd1a;;>oA&CKzt3~uXW{coo`o+$Z?MmO|7D)C=fBKz?!nLH z2kXM#xqYL$C68O_xA0!@X|K<5`>6lXzQ6W!Zu$#8|G#y8`Pxzbf4=yzo8Rgdce%yl zpZ@(Qf5sV)-0;iqRg540;B|I?KkIo9@Hq!RKXrjmoVD!rCZD^+*-PGAz2z!rFMdmX z`oPipXTRWUoBG?|^U<67OTYdeoBHLv{9ga%9L_oT`SLSAvZ;Iivz~F*E~ne8J8qBR zm^pWIZ2Ii+yFU4z_ulk*QyBr_B`S)!0znp*gm(xBw-u&BxHu|Mc*qdXS z_qGQ=|NRbMKWmx$`q%rc?rm z2)*0e({Xx-dqID{H^*`My0?$x_zeH$-OF29r|KuIc zpM1go$XCoyJ_)`Gf1~m%9?vK9x$pYd8}2?YShyqn)zy9Cdw%6({I$x2W`O4LWUicf4uLyk+`f!c)d|v32;Dg}Pwb%PQ%y(^^zk{B9 z!F=Si&x-4^ zf1OX=I$wpp-f&%?zIUBBH(KYb&^wXeujF684&e6sFTXaq(Q^C;pZ}fudd#V>!)(5O zg|A1k?wkYFjh_AJn=D_qS$zH8xqKtvr7rEA|7zXdp4aO93Fg`4+uPeW@>}M1A8)@7 zcii0n@uG6(?(25_3F=>enK#~ax2L>!zTYUvk~f@iu5!XUbJBgT)P4GnPq^7`j&#EF z&L^x3Cpe#FFXe>$b0@4zC*9u({ptztciDT-t=@x`^Eg!gns6Pe(r>I z<%IXjop8_ogmvbG&u=)PUpnEu>4bjng!%Fb`}!05g%j5K6TXM?%};+Gw08f}%}!W% z=E>^93G2!^C-gh}WOe?eekZKUC!C|6@V$|4aFaCse z;e_+%lh&Pdj_3 zcL)Ez{5bRxeafB>`z$%!-g}AsavuWj!?_3l?Xvkso9`3&p8tB@+24PFukr9R4}bsM z?L7zdTl(d_Js-!{z5O1?8|2;XWw(!tc^AHWV!zQduPIc87kSr0$t9r$Ig3%&N58-6*ru*Waww)j8h1~1vn_3t;o?%`ZP z+>g4#FLMpY?E4}4p_@Jre);=0`~K<;9(mX=-RktmzvIr=-+G;|d*`+2&p!D1e^0vE zp?_Y{FMBEHp7vk%a?Zie`+w=(H(k!-3eUXu;l1#_ty}uM=-n?qYpH+I74EaCTb|$W zeW&Y=nd)dSN?|bV0Z0^}Hbq{#yQ#W-Lwu^X48b zxzgUg7Qf{^eXVOf`K+5A{PSo2`$nhh_Reot_tDSZ>+GfOp-(wy^L4T1p3k`FH#zuk z%a6tPj$i)MP5rYk^O=qBl@I<~_}J;sqrUk7cLzV8{Mx(Re9_(S#UI(!-{WS_IP=u| z`1IFj?FUcmmhZt?bg#SMJvX}Y#0PG4AAiAB4s%VPXzTZLJ>_q%bn|77$Ns?W4|C1$ zKV84%+U;+rTlV-jZ;hKizyIA|JKR&JzUQDoQ2%`K7_P) z&b-IVp3C0emif;)`1!u`-umow5B@nm^fsI4;;nbT8yy^3m2R{9}VJ?-{Wj_I?%pCWSl zy&OxVI_$>GMsn5RX zuJN239p0OSInFt#cmMRZ&AoZ*kG=iy{p#*`dJeu?{wN{S9jHS{`#iw%%`6EynnM_>}~h_E`DEo_-hXHyW1Z1Tkhjhcj*_u_pmNw z&c*LJ7k~9xOWjxF^AGctW9nY^rTJQ=KZ+0XP(!>=i8jlMShtt?df;t z^xN-v+$PVne<~d2$;Z^~_J7qkyl(S6Eq?i!++V-p^*4T(Jol=HexW~|Yu7hE>C8>t z?Jxe-!}Byhc(m?T5B%Ouo%^l-KD@W#E~o2`o3s4LX@1x5%o{y&80l$&R2fuXx%k_;F_DdJH6`qhjrnHkJdf&OL3Fy{P%y<;e6@N zr|XW(6^_}{?tI)we(-Rg?wEeNy3ha5`44lMmAbR*I}iQ*F?0UJZNFoa|4y&{-@|(m zj;Y)AeSA9g>&wmkIp$vM>V`)>>#%R$JMZ0j?&_ZS+h-rn;r8~ntGmu8@3+bKhzGpu zaKB;Y+?VIb@9kr^|0{mi-p9+m+&g~Bv->>7@8#I>m#z0a8wVZkK!0_n7DLy3c;hk@v1Urp`R{t(&^?&*$0X+nn>>bHqJv?&nXPehzo}&-&2& z&RV{1|Hyltp3~j+Xx;hWai6o7y6e63)YoekzjC*ub<2E9-Qz!T;lsV9yMN=lUw-G+ zH+9Re?;QUBx#i>EQ{M6Vvu<_p&*jJB`;(7(?_s^4PXBuKya(J;|J*`M&t-Hz3K6W$z{`u8o{Qf^}Umic#bp9XO#I?uTsaPWF z(;GXrj3o)NT_l!L#=di{K`cWpLBzF$s%`8$*S-~lASiC_+KQ=AYq|ARQq^{<+WyXS z=A1ic-gBMz=bzu_^-7+1&ig#i^M0Ol?zuB}KKXp|#uj?s@Qbe~;)Nykzc+1nJ@1=I zrxf!dPd}&3_uFEB1$*`Dvwc5&L}x!pKkM+kK>D-CiM#50qbY})eb)VclBi_eZQRd} zT0rZRxOvGs&6;#@&pI9SU}wJUlcc1dukLq*))8+#Ur~QpQrCqWUasd|`hK_msHC4( z=ao-AUGym|+3ycsGg-&`_Jd)?yr^WJjW^=d$Mrm^JD%0Q-`*atUgs%JzGQ#S`f&Ab z+>&}8Uv>w*?$dX8y_lDk%v)oxHTAr>x>?bmprnsh=b1adP{fN$=KVFub=^bOdb6k} zE!iIj{p|LhdZaG759srwWPhA6JL$xA=EWuJbJk0L)$?9BaG=;njgo#!J#IgTwD&H) z-!Lq>-faCB#6ycd#U=f;^Pah8!J=xZ(hWic=H%$qQ0L@_V%^rf0@U%cMQJn?4U)h^=;-ff%Hi+O3uzIk}&?)rXm{u^5t^MaB--!N>FzFtNy*(mlw?!2zC_qzo)U0BE4 zdg5puPp<1$$#ro2h=qFYBU8V9vm3W0f9tEMI=|Fq*Dolk=Zp8o>3RFTdSVeTE175e zGkKN8^gPkoc&GRLk@wBRmpE8IPrv=`YdY_T7j>S0mfTO?S?1Jn^1fTXM5n}!ocHx| zAKh5}+3k^GI^GtekJ6t%y*=rwZvVeyJ>9ta{hc$qf7Qp z+4DVpUvuh{c^j)gHy-q|&R;$2&|)7XP8~8&^hup=zecK&nsZ?<58vU8BYyU@w>iVUhp;MRiQ|3K((ox0h_`vCpq{Y?tjAi@=F*>E{C&Zfio5}w z(=zYkdH$uJD~(?9`C?vJGVi@)f{wS+?SClF!Kh^3v}JbI^FDrMmYz3K~_QfM3cNio4V)E-#$B5tb zvzvOo71Y=DNM%Fkb7iaRjQS26iQkl6&eVPfA2!dp&VKBk2LXJZCF{KK?oa4^Ck1Pa zm3(_oT2kwi>#*`>?{z5iKiK6WJwN^PxqAMDf1Fv=oj~30^Tw}++*-^_J@ZzW-1)f} zBUP?iNuBMF&(Zl;*mbzBbG02l>g!MDy#BELxo+(3x<4wcUbp?vd9BZ{<*BO0pY*rx_{sTW@o?5-RwM%6Tgb{eoFl8y4d>U+?i6jO6$8|@6P)h@e7>K<;wizdGLtY zmuSBwF6f-I+7J3KbA~WDU3L7VAENL1iL2`CX6@P2 zb)Ic%o#!&rzc$R5b$Vc{RrNY;_3ia~{=u~^it{>yeJA_*xFa^x>-o-}!;AeH!RsWM zC+DTC$9DJJQs}M0eM<7rx%MudKil#Noxk?-_C@|+|K8V|()VPyaeCfXn?IoQ%XuE` z*PUnYj~9NlPB+d$UEZG8EAG>|FD(5{=lPuUCjotu?}j;}b^lL(@F;yhYu?#;{;coY z2Y2Jzyi&K^XZ3x?(Qoe~$8UL8p*sQH(zlK3Hy3>5iLdWNj=$7p_owvz_)9)3;)JnZ zXX?bUI&W_7SNLZo{u_N+DfqU{;D9oV1$;ZY}RUh2r5I;9TT7xE=_T)yrl z#k|bXiSw?yq8>At;v?c-rxkPi>=`$tee`X^97@+pf?>dQ%gBG{LhKP2^M zL|;Psn-l+-)Rz!GAn{Y;pAkM`@yYrJtUusC5%zxs`H_!defxM=U*sdg$0UD1^vAIO zF@H$>Gomjid5%n{_!-nE{O50W zp6}?_Hzn~;SbYA%KPl0-P^+sihxM2EbJku~`^$Ylb^0gwbK%D>GeW;^oPFoP`hBJ7 z2uk|2TiX4;yTsvboSokNn|__R{t@dHuOFhry8W{AzSwDHop1CHy6?x65?zmPdY_JW zZgo@kcQL zysnUZ)BgK|VqJ1am*w}G(S2Q$m-x@w^X(#jRI;x5eZ!0Rk)zYbACs37q8pdS9-scTz3avKDO{rOZ-3DrSrZ={BvhN+5ETe z@b98OVF`cXM=KQZ`IZ`(NEf8yx2 zdC$0Jrp|ln^CNZrqAzmv+j$f2?R;PUr^7m*o5;MZWZwTKnfIq}URcBnob|BRmAnp@ z>*mmT?7yNcVb-ow}_5S1vi3l%jt9V>tW-IeUdmj?7UBZ`WwCeyIrq7uQt!8vyyp7-m#XBxAiMYF)xLA?s}cQ zU+4Q=WxW#6=g#|Vm5qx&hg;W+iarM=eO~DAo#za)j;WK!`mev(xWYd!S;xN~ z+Fi#G;;*Sw|m*^&ubDd;5=k4*HRgp#Ob5i60O?f%qe!{s{Wh z#~<5UAM!Er&!B$v4@mq7)(8D#*gweUQ2)|Uf692M5B+o4AIOJLAM!EdVSUj*B>FSx zkDSvB{kQx5c?ra~=eT{|nwR)D%+D>C`#|ihkG&s%HfpW0+bHhkZ;vhRD~VI5%p0%% z$QR~IoOp5`BcD5Q%FgQ)>cR6ofqIZnAwTjN^c(qr#V7g`*iRTgXZlF}AzY6bKO%fa z^asR0CVWcj&j=sD^@{c7@VXHB7yJ_*B1tPOhH}^5g4~2=XHz5{S)FJkorTyC#*lDzJ%zHSboB%gwF_{5`7`5 zFC_g5$o`F3eCAL19C&=ckPtp4d<^>g;?LE4z963s_4DyCKOfEQ=VQVrgindSl=$c0 z_v;J3M|cuHApHrM{(1cQL!vJu`XUye_=kaCUrzip;-8TI<)nW(sV^e^%ZK>ui%I^3 z@EOq;6MYHcbHb-^{p0)X6#9>R2-gqt5!8=-0`()GlK3gqhyEGiBiMiFACmerqAw%; z4M=|i53d(SuA z|LKB$J{j)kl^`eW#CUwl$u#QH<( zOBV3!3rKw#sV^n*GomkI`APo*)*r%0uzzuV5|Te8{fS6_5>`L)&q@BA_{U^@Ql^ja zA?bfe`WqAffLuQr`1d`ZCVT+<1N}q7Cnfy8Lr&A5hsyK#)ZyhhyL|uiJwp%e`}v&- zth1V?zPjIM9Y7zE&zwB+93J_c@B!?jPK<8;6!akh}*x{&*3;e^BY= z*MR!NCH;Ir_?W~GKp*DMp+CrHB!5Ksc`j31H`jJnde&iz(KOlTW z^oPLXbF38lgM6@fZ~u@Fp?>6JSRdq5s1Nyw#b-R!C;zvq=lX~KARj{g$j5{aVg1oR zgZhzA;QB&7BKZ^OKl&%6{?y~I@54@gayHud8|prH{y(IAe^Uf?;QOf@?h}2ylSl4B z$Oo{_$mh`KJ|5~sK7&3XpOX3#Sf?NA{&ZglL{J~{8Ptb-O5$gr5B)QeKP35c=nuvZ z;5x<6gEG*Md<6NC&lykRhtMC4pDf*b4kDi~=jSuxAC2_;M?duQDe=#tzMsJU3zzAQ zk9-F4kq?&j`^TUk{qv>#{sG}*rjO+(d;;r>`cqh6*q=nL5TllZ|1 z|N2ENKG{D3S>KT8i%I2FN*CxlN4pOF4#gpY~-jO0(*{$u?o>lYC|VeyH+ob)Fr z`D4N-q`xWQbJl;NKO^xIqCX{kNb*O7j|m@;>n|jHK(6nI@g#ms{DYfUUElrv^L^(# z;jF1L>{CrIKfanYE^~X<$e@6I}^e?;JpFbx33Ges& zC(NJJAKgvj6aSd3e@^<768$O3pOO8Mlm3TfeRGmOAoT@o{fNGl@Hy#UPU?#v@vndS zke|;9A3ossj|d+;O8iOw>{ovOfYnd@6T-($lK)}Cllns7mx1?RImAakCjKGxr_UeO z5BUu0M?NL-6S#iRKOy-OmY?uB;bYjJ%R>Ky2Yc5S`H=WWgioPAeeq%akPv{e9Q3UK{ZHWjiF^S0kq-$UgFf^RX7u(4`H=7l;UidI zj2}V&ka{Q5GYFD85r>lZ@*GpMhR2YtvVkRSQ@H@)>C9};~D^cVdTqAw@<61cuG zen9evgpWbrXy|_k*Dvxh;S<6~u)Y{Sg8n0)k@z|6Z}bmI{Som`S$@Vt{*|Er8LS`j zG3e{#p})wd#6KW>Ncf!ThxJ8$3E@-1XM|7T`dS(KAHez`pAtTR^9B7w!bgP9i2j`L z0qhUdmk>UEx%d1;|KJrrpFw^2|23jld;O6Q-|+JR=tKYDHNSuOlAn)=fAFH;KY!iN zC!{|KiJvlkq`wLA&q@A>tWOC01J@@d^~a=t5s4oYeL2fd`j@i)ko}btJ|y`wwtnRL z2#Nlf^fw{vlMw%atWU)B5k6x)(?`}PCF>It|Ag=<;WNUAWc?$;hh%+I(!Utu4~6@0 zLimjE5$MDCIp{+^f%QW^CGj(lzkHv1?(lP~e~;Jo_x{{9nHM|Pv2R}H=<&_VA)c+P z^LtLZ-ya`3^W^*6?L7N)O#{ehc{h&e4`y}mbE0b#^=H20p3*-j^~xo>zfU`Vvwz#z#H}eaMH< z2jrvQ`Qt|(qr_R18^Uq2AjPMcZPfF^`NdE$|ehH~R1AX}a%M!xp zu>a6M2mO6K)Q@~X_?YO+h<^zE>&s8{C$RqL9}zx){nzJD^o7iy@Hy)rS>KrSCxr70 z>r04#Lh6r6eJSxzh<`-%heUry^2cO-W$8 z=;vb+KPB;V!iR7B^GAdaKJfd;B!Bjf-#=jW6aR$p@%tn{S)YK^7ZN@v@e}aJ|5q16 ze~^!1{gBU~e&kaUKY{BD{S%TuVfhK46F!FhiTZ-sz3Y#BNcINqq^)ACmea!e=CZM6SP__@^vC;d8`<)!up$&^WhUepML7+vp@Oy_#;0bk^I4je*civmyrAkIsYQ44_`k8 zf9}Qdl3XFNFPpd`jZSr2iR-pAmgA ztRMdTllcnd`{LcBmNoD7m)gLxIVDHi0LE!O^Lpg=!?nv1|)w@_=LodN&N}o15$tV zng4tVzx4Cj=YBr_i=PkY`1y$Vr~l{oPY9op{Mi@&_%YEJlKv*dKOp_hNc@!flm3K^ z2mSbSkpk!+@(JAkk&lRf4EoSNhxJ81fc=epNb=_-e+d1@_yN(E!}_9s&f=5x$w>cW zQh)f@-s=PPMMPgj`X7=0#>77${R@cxl=LSd@l&ENA^lB=e?a;ZvHHmV$VvS%*}oZy z9}|5s>o4hFO8jH8KNG^|B!5QMFDHCN`kN3wC4BsM|Mi=<2~XB9`j_87A^sWB7nAtu zKm7TFuX=fW{h9pD&!@yc0DTxgh5C_CNc<4i2mK@HAMzoI9}_+!d_?pmOdsK65z#vN&bk`pR)dw z_&MQ2xPDQ82G=k03F%M5_6OlJQh!AHpOE?^qCX_@L!v(=`#&b}Gs5SDPf2|N;UiWb z;WH9HXFQ1?kp0nm{Pfk_pKFHuxAhp|pY-!J62JC@-@iigHy`!;*9hMx@#{oimDE=! ze4F&ILiE>({>D@O{xrZJ-@jF%e&pLwAMy?2Uz^dZ5B;m4ANe-)2l*z+Unl-m!Z%3$ zEmB{L=&Ocet3Z7GxzBZok9?Ex4d_4mw+LT{{-J+^9z&=MR3q-UffV`8vtpCh;pQKG9#_+^?^;CE+*q^L66iCVT_*sKM` z*Cz2>b$|cbB!7$azfJfm(cdI|?IgecI`MB1zD@d5C;O{H>aP(0CaJGM{A*O^0Q zp5^Cj)BJq(3_o8Ze4X$OqOU>xTcp2j;@>9yYZHAH!Z*(L z_pd_Mw@LI@S$yJON&Na+#J@@W>tuhmNdH=-zAEWoi`+kJB!8XoO`@+(^fd|JB7B4F z-v;S_g(N`t?ZIb@AiGPFi zuS)iBo#d~O{!~eS>O_B&__s*@7V)o<^=W`U{Jj-T!dIaG=wE^UBHtwbZQ|cz{)Df< z{y=?o!Z!%tBzzs#7xTAaeUWdG_!Z(`CH-v>eJ$|E-+NJk^AGtp#7DkL{Og2o621c0 zM_+!TuSWRFFMH2dj9TeMJbyy#a-z4$dm-zczCHiZGZ;<}9p}vvw zRW1$XB8NeLT@$h5n;|jrcc-z6yz7C;h9#`l7xT zslP$^8qwEa`oMqrA@bGTKMlfHVg1p+0{W3}LVu92llU#---7xvev{PKCjKqrUxEFF z`5UCZD)FxozDeS@;QU8@O|pJ%=>I6#Kg}z8&qw4d*ZcYQwSK+@^f}A>Stc6~Z@2{5t5z{0&%tShYO`@*~>x=Pgu)fH*N&YJ7 zU!CwZ*#DTnLHw(v|25$8_f}P4e`nNzo@{PNR|LuOheutm0 z-s$J-B!BxJzkl^EKVN71iGS-}fBYu#uafnt5`7Ku$KNZ~hV@0h0{un4$>J0L8tBLP zE!ZE(w~2p^=&KO_3dvuG^+kORSl>RLUOT z^T$Mg3jW`N{-=;1`QYx}{K#jipO2yc=pR7;kk6n#`CX0f_b&yIANi2*IrInp6XKuU z(_4R^|Gj=byWh`85BmA!K0lwq`k}sz_=mshjsJb@Kj=q3A^r*IL;sxkhr~Z7`hti2 z^+gZ(`IO`jVg0eb2=)*1Dbzm{`X51lt;6SDn5^aW&n zV&MDk&k!H^ocO1N&q@3Q>c{*M^bh%%@F|HOG<)w4eeoaZj58?Vi|AgpIVExfQBl&aE-<0q%sXrt2W|_2!}=4# z=R|)%{6oUWr2d5P0jw|nez=J6IrI$$VY^a$@*o4&j}yF`G)#}CrN$3_VW?p1I9n+kDr1*{QVFy#790Od_wr_ z>0W&pKYG^B$HYH)%I}{O{}lEo>dT0}kmL_Z{CuWge@glr6MZ@1Gm<|e`zI%SMCwnU z@zYkBGjM@By4JxV|yje}M=$sZ9uBYaNy;FaF<6@NcR0{urmC430`8~r1~r@!^<%U<>KIq^?f{lE9e z4~c(B^hLk($4}qz^C9t1NdBDEm%Z-KACdY45&N;->JLc%kn}es{weWKn7%iA`-i{(B?o`xW6+0u0PBZ*1m^?tG4T&!{n0-q{sHli z2pi{TZn*WY-_LK60WzBkLcL`~mYPd`{}m zNqsTX_pbl^O^AO=_<-mO$^MJT{t3wbNj~t`my!B&!lxhm_M}Gg1?2nM-4_SV~Cxj3FwleId!85k4n;Nb*+? zxw_})yWr=K)!5J12wyqW?_VeWb>iPR&>z2jn4fQv_{{_S{!Nm<$?_Av!T7_8zJvUH zmH5{P-zNR3k^R*s{cn@~(IWLVN&YHXzZ&U(o8+&M_$^XjjrdoHzB=J6q(8NT{rjgu z_&U+wBO-eQlDzzKy?sZKAJ1_zH_p>T47KCduEJ;IFSn z_E(eiw@LI>$o0`A*KZZ_UO>7TVH)U`uWPXe!d0q@%MXIx9{~wz773BzP^LszqS+MnZBPAf2hAt zAMvkF^vACd{Y}!JCW+r-`bdA9%%Am#)K??>qebd(!2a!99}>So^i@cI8>D|N;$J8I ztC0O$Bl+88{VJqCHKM;k{F`Kbn#8|K)~62o@b|Yj2;XKr=xX;`)(80}^Cx_p z@O9Wfn7={zCgE$az8Jqn`qw7$E3AKnuM>T3;$MO5r>{N|zefBUgs+hJZN~4`d;dZG z)taAg|IE)0NeffxNWEp`4-`;d-&tG z;C#gRP3RBu4cH&ZR|sDt_1Aay>#vjg>qLJI)(7=BNcj3@h}Lh5Ug_;s>AZPNcHslP`0+a~&2Bz}|BUm^Xg!~S1>hjNc%9lkipOPhWgeUjz0>pFgRuP4qQM{1(yQCVYj(Cwy(M-t!mh zuk7vTYy0~7)_#7zvX7sy?MZmz-`wBt-yr@K`24Z2KSW=h_&3S^Y!iJA62C>(r%LoU z$^K{&|0?Jk1?Nu->PNl_@sY2=`XXP4{`K)BeuMCB!qV z{xnJcD&ZTfKftd5=T8mdBVPyo$X5wpC-Ez=ei*++;D~j%l-A$314A6(N`z>s>HuR_!{Y7 zldNxztWV`y(m&$gBK23u{%(W+kKp{NgFo^u=uaOH>x+El>fZX1uM+<@^dJ43u)fGw zNc~l!uTAQ268{$AtEB%m;$J6xlf-WkzDCxkLHH`{e_Wp$$=@dH+aUF~N&G6=9}Tkp zHR9hU`YJ3w>0g~(9}U7c$@*2`e8Tms621Zaig5l^rvAC-{*Qcpx}R?lzDfAn1^)Q$ zv;BOF#ILaU%>O)p{>J%!zICpjuO)uIO7gd-`TZ-TzBOUz_=p{x=BUCVYeFYZAW7`b+pa;oF3-UFhF`^-KJG zoA|ehf8}C-{Q58be3is+5`A?zzj1$8N&W`mYeZjz=xY(aa#3%8ehlYN1^kh(LjU`C z79Z+I|2B!=B=Kv%@Yh!*d;|KA`dUPPi|DJ8{F3j@{Cx7LpU+7Cl;qC|A3g2Q9}_-!-0z>V`UsyBK6=uhKO_Cmp78s} zq`sKs56Jq3WPK8nKO*rXQeRH|bJD+%=!;4Ii1??3&j=q8{WfU`ec5k7$aqrQajDdBU%2XK90{*>?;;d8>ru>P1oA$$PWC;A7+_U;el^W*(|Fxk)N z$NBk`bC{Csmb z;pg}B^?7^wmEioTKz`(#gs*}=^lyVc}KS=i547xeQj!dFQB4U)e} z_!i;YB!8RuH`)Fm{cRKf+Q_8m`oQ(C6TU(Cc=Yi-Ki>x9C(HZ!V3eP4KmFlq?)8oF z)5>#RK3K%hXM~TJ^!vw4`1xotKOZyx2Y&x(Q9mCn-pj8H=TA)d5c-4uDb$aA0_)Sq zL;Za`^uLdX`jJnGe@yC&i2i)IzrQ(&AHe#e{)F^5XZ4Z(WTd`??2m}lmy!BX5kyNV0|%vMEoI(^bCN$Kd`#*Km-6S2iT;T23FArsGQtN$e@gPlKlIlhjP&y%S-*hrF^L}# zeL3k*PVz^DPssjCN&hp_|CH!YSp6h^K=_F0j|rcW{sip$BlX8@eFz_t{S`5u^gkl{ zBT|1%{1c)tB=J+ypM*<2%oIr_fJUvaKP^$k@~|Q`~6drKO*^Kl0PE(W5TCD^6QU@ zzKrkztDo>GS^tdi3F%)(>JJH@u=_D@3mQ=%_t{)7+6^&1jC zB798v6!@Xe^Pk}gXAVEN`uB#KA2I~zMb35nUGoBow?^;%!i^(*yqcenn7@aYdXkm8 z@kQr&^+'WpO>uDkD=Cwi07-FS0B9N~kN{d~5%pAQ|qrSVDrY!!d}sD%H|pHCUL z*(N(}qSwQtzoP1EzV+MU^PTUhe{Z7x{BfSyW2CR^|7rMG>FZ`sEk9P`$^5)z{`Gf! zrRPsP;0!%~vB&n+^Y#8)wX0v&LE_)P!7M%Rw(G7LV|6BM-+1~cd18mRdC~(8(RpTk za$k`rb>`uENSqY(+I_X2;^fQf%{+0W?|I3(xIY&s^sI~M2%Pv*kLWmbsY}LerR>;u zb}QC5DCyhp$E~6JFFHb}9$Rnl^$FTv*X!(G$+M06^Y?AP9V7YHTJv8;-y)A*U9Y3p z=CSoko(S@cS7Y)ec~)F>w$3B-5+{%7ap$@5Lg$?D%}WOx&$$l0@tl5t*F4=1=({RK zeRY2>QttFa`qlaB@|mN%jE@|>WqeHXCxj22{+7khL7$u*ZhZmlf8;~Lr%)gIXU;l^ zKICH(KZ5$vKY{g;wRY=EAwKd6;RDFu=MViyK7{&_j|iVZf6+fD{sHMvNcfoXOdsJ> z=wD|KJJ;8`-TRVo$cO9s`LycigEjqpM);WMi`VhTkAC9kW5$#EqqY3;gSGv9O!yG` zvj$#&P(ShstWO^g_4o16|2`h-M?NL~F{v*i`g7Rdm_H}+16W`5Pe^}rRv+n4M(Rso zf2;}XA3=S{XHXyVDT$wu_$lEt=pW_}pg+i`jEDV;{yE7Xk^V%aKOxbV5&xXz&%u8! zSpOLI5Aqr4Lp~>b0R2V(5c=E46aN6NAN0?Ne@^(2^e-U#Bf^J7e*)`^^+m)#1^=aB z{R3EkfgtWVkduL$(_`9uB4$HYG+`a%*vh5q#Ahy8$jPU=q? zPxJ+F{o(VC9Q=`wh<^tCL;n!;BcDNkkk8@%-S>O~{E?4AKk^yqLp~w#^UZqCck~Y< zKOc?v^ZDj}KH0?2M}$u{_4~)*|9yQxbkCm@>O($<{egT4^&y{;_`w#v`q4l2=-21I z(|=hz>u=A0d!GrMd2$Wgd6tivPLB@#oS5**mc4bl_Z9I^VILx&L44tV9d~ zTt65;hyL{Okl#H&a@Jnx!biD7Uz3PbY@N* zS zHrGFgbwxe}e>@L!!e`J=sm0A7f_~&Pr(aSZ@(Juail^&_=LltW|KqM~1KX$8Am%@|_>2vUJ~{j2yL3pOLT8`)=0$^?mkwgxC2!(c zpZB*re9fO>g4RXDM!S2UFu17Y={)K~_mkzRj!64(sgPa!( zvfg-*>yZp{UOLEm`5^m}4KiLZ$m=5<XIWPIy;Nk^?)E5piUiQ<$l+TTj%bkjvO(^bXpr;bLDriNcHUs?7{vJ^uam2P@V`IUOwAcF z{Av9`dHEpf(f6gn#vA1NWrK((@0SCoFY;c_eSfZb=Q>AT_Z8~1 z&zGwzmVC*5Qpa)50gNMj?&vM!1E+4}Wj`cu_wI-BYHW#gUHyDujc;z!pTDkj>ITJg zjnETM^n^rjO#Cxvzl&bm7u$~n`YL?&!3o{xJ0<)%(`Oa>bBOP*o2*L!>r(a{OXkIc zm?!;+K#!YG_>}M&;d8=A&bf-~uj_Dlc^xb3|LrZ0>h=H4qE8n8{~+D9_Z*jb_pJD` zp7*P7*D3m&?A4uz`SkwS!_P;1em5`swF&!Go_h`5aRsg8zk94WR{kHzO^4sv)$Qby z`ec6iepSyOdQQF29qitp_x$+eVqfLE_4A89-Qo4Q`cCh4Bt*ZsbV%+ZZ~lyysBJ*2J)J07f`|Gl|Mr+(>o4soPE^F6Y%)}hzm zsayIZI;Z~R9^Ie6k6XRyPgqjF`}`|_JnlZ1{xsmeBYICtPu6)(y#F=5ZgYMzrO21< z)8Fr&e4c$Gb!X7uacb;;7i?6-5BL7=_@Xz4^^|j__40}ve%E;rz1$Ul_HFFwmvs^ScfEA?7@2>;(uWq`4-=Cza}5i*}tMMb^2uU9((U)dfr*nZz}3cVBbl+ z_7`3KDfCPDp_{L*bsaK!(Lz@W>$kp|Ctsp#;u1R+`!I3(ChH^nYxjLO*SzS?A&&5? zta9;~G0N`$?{$lLG4w&^z4h^dV`bjSmu#%}pX}>4T!$N|G5M1D+kJkko`3z~AL_Ux z)mYtmo-Ch9Rn?!1AK7V~_#J)sEIohUjjq|CbG>(;Lq~t?JrBk2(RmNhe%bWnwcp!! zEZ^1jr{4Llu1nrrZk*IHZJUXOuH>Wce9>j+OCC8Vq@J^mx@djdcl-JwfPF0U?71>h zp_Zdt;#z+jU)JxjqERb{>lE3FPlGc_O-0HT+cSYoLiBzj(EN5 za}D&{JQ82_O9=aXyo5KO6a0DFvRbd~gKFOGpL`Z0I$rzU=3`}k^W?4c^*?i;O^f<+ z=XIUbC-Z+Y`YAo{zhkd2uAj`wU#34Vsc-(1JNG?(ojTWpwO{d6NoST>cieD__)M>;tz%v=Va*Ump*i^$8JCD zb(0gFffJ{!&Y1Aof#3alK z&i$)&M$thwrG_3`z(LN7}0a!35^ZqJ~bnFSKpt0z5A8=zP!>6 z>lXVabLzDH2>+CZ-Z;$r>^t@}Ae61VL+0S;~=kwg&7cYc;Df(I~Ptbi? z{okj>>-UbkdP@3W`@h2D zkLv45;zcFv{_Q$z>3EBbU!jPXl+3GNuz{X8ap5_|dd4OF+U)qX^}O)Be;4~Ub@mbV zLF+2nKO3w&MaP*oWQ(Gou`{nUj?+)O&KvHss@{jKd&d{`fQ z>rq<&_K*CxyDv)Ww0X}>I`7YAo$``+c3$K3>x#UAr;h0tjxFj4O7_oc?;Nf5op$Vt zMSlaQUhJ=2N0Af9^2-i%@0X!xee`u$!Y`2@P~6WF&%V>wxwD^ae(8&Sos^a6bNP_f zNBF>5Kg=)d7COA$S2uoozV7oW6V55tBQBX|*LR0io+#EgIkf+LUg(X*Hjs1N)}^oO z!}{l~e*M(Gb2mAne_n9%Og%6Aa&E0p`W#H^&MT`kI=su-F(wK1ECssp=qCWrLT z8}{s>V`bi&&vl-6iT1Xn8e?Rv)aaUb$H04mU&pPk(_4!q@Z*APqj#@zLl(=>0d4uiytVsv=tkXdc zcIHdmxTLOE_d7!Ch_{}vs6QxKp9?pepp#l*Nb^UN#EDlYfU{b zu5MQJCoQSR)_vyAFBI{zl6w9ccJ@u%vi|?hxa2&r^Jc96STQg1%xf+FWic=H z%$qQ0L@_TZSr?nPnr&aa-pM@kX5Q5<;zgc%AK3G~VqWIaw{3HJF)uE;ULKyQ-j}Pr zb^aS$7xTiB^}S)(Bz?V%T(VK@gRo@3EU@XqI^Nb3N9%a{Jo~u+oIHNSLOu79so%a? z#7#=_x4u&EALU|k-fxB_^?dQ(I6ZH_S5GYB<(_^|US%;oPjog)o;MF);$Z!G!0m5e z(|JFCXY*o^+M&m%PqM zopmpJosoaXdb@db9H(v@XJGWy0gv_CwA(zaqK$i*F}yV znOLcBb9IJ?C0;Re+xf$*vzq2W#!BLT;MOW zFV%XbPYLv~6Sw>PB!jwz|Iz5rblv+uI<(jyv7=M^E%P2b>8RrMe(2O|dAnZvb%?`D zo#Ma6lCSE0zQF>g75z;ey)w_OYrd_zuV-`5ypg}`)Gv7>xF5)Rtu<{f{W;Fx7ksJ6 z8<)(xc%Fah=U1awe7@*saD4Z5n$#)rzJK{~MIYj0`uU5O>Hhzu{OB$(^@;y`$po!u zrQ82doYzUoylKnqtml3F$}Bx^r1DMP@9uNEFVwJp9w%1%H)X4#y3cRUIK8MhKdx7Y z%sZ($uby}3@s}6#(#gH^WZiBW`p_8JcMHzAu9%mV%sY4LS$f{;Z+)xhjZ{9lb1qrE zkBr zi2j9le?sRwDOh8yzyCG$Vnui5~j?TZruETYmtL^YnUw>L9=fiblZ`b`%Vf8-P z|D4zQ{4&TV{g5x&m#a*>SMUGBu3KE6&zm05se7d20;f-+vvUqjG54V<`t#LU7pFb> zq`y^I5A^FiZ|$yo;M^Z2kE?HJK2%>16W8qQm${pr=a8YAm(1V$eA@bbS3bLLa{nBu z{F|`fq#xPkdym^l*?(-hy6%fu(L3{iXhbLzquJ`MgCv;v%EH~-F;`LF(SwDH5 zF8ZFIxT?PX*PcCH=h>##c@8G)7CP6h%$I&Vu+^%%4_keEy`Fz?ZHw-G?S%ew z)BEV1J%<<9MS5)iJh^X3U$?vGmO^jr)M@k2x%MudKil#Noxk?-_C@{-t~a@kCp~w# zj=R*;w-xvO0M0?FYw^>k>3Ap1*r|vY!8}>VWVdm8-d3AGpzD$QZR(uca(|FIF8pYn zB2MP;at?^D75C}fZeQ-aJ{Ul!! z=kj$gDdvUs-hJ=RyXune>zBakn|-}tTG{vz2= zxs%tf*N2}w-*@2XxBN<{bnbWJAC>TvznW3>F#~>r6y@yK#L+47k&l@_;ZwpV&VDS* zA3=XmUr79OQeR5^W9J+x)0Yr^0bH-BKOpflqAw)=G0~SY9wpOXHDr2dHL&q@A> z?u(|3wr zUwo>ck4S%F!Y71JiN2Kh=cK0dzN2c$nC(I1ig5%JGR{+#V^!pEe48R<_9`sL@z zJUYBuyk1L6_;>c6tKjnze*gaj1)o6wB>oc7H{JVh34hlk|0wtz^o##1hj;ab&|l$K zI%NGKe+<``@WYQ9Q}Dr*-s?yB&)@7kkJYaqO5$HM{~LwAq=Y|V@%fARaY_7Ev&)Ai z`W9+A^_TQ#&f3cs@$-`Wj~_l$>yy`ksl&_bHmPsyG9&c+kJ)z~+@z#>t?hrL z=l$i|tMxqTM*#ax;_a4pzwb9FiL=wYf79ZoE~0{Y~2v)q@Y z-qogd)?e%M%-iva_ltNb=yT)Ee&@(yUR*No=Kr3e^FDdTGR3^m*;i7B#5-o2&b;yC zJI}-P{&nWb{Z;f&`|l5m{gagNd(G&+zD`T{IeWgXbx8cIgwO9AUc`@_^|SfMq-zy? z4zGVj-$>{B%}V^oufJZ`zl0z0x6KPaJ-h$W_b8rF%Z7CH@zFv_jXv zgr9G{{}uVOlK!3i=+^}wmgwLAfJzZRE9uX(!-f=mlJx7}c#Y2aDA!l+_}lAsi|Qx( zdX2t)r1*I>p|ehQ-tak{b8gvXCUnoasoi{b-h1D4p4a|uo9_4ZMJ4ghxMrr#d+PHe zb^TgjNxTX7cK*NEr^7m*N6Wm>snh2D-z4)K>dgy_coEd=o)d@8dq*)Z27T_l31@b` zk42wP&iY7RnfJ+Fll6IW%RjFv;zcF%?0L7=w#VpsdcT(Jmz&S%u6I(hABXI}KzF?z z-S#|KWRdQ95IKFa{8umjvB)2m?8nnLcg~v<{;&zNiaOJh^}24&<@9~x>tW-IeUdsl z?RtIs)8FXz-|hOKh?kYjJMxaTbiA!!Ns4)a(-*rAw!dfZ*ZKbgvR;vA-e;?9T=XGx z*30(k*7c&I&w;a#EWgm-JJ0`Q9pjQdufN#1!asBRWc~koXlET`<)6HJ@93$Dcvk%p zUY>>i|NN@#v)KBQPo5*rxnS-g_TQVRq?fGQ`8kEFX#t~#h+W-av1=IIvGR{mdZhEa zFh&g#+xfi%qqO~rW=9PXE49gdv1=PFw)1mbMro_ktFKW*#CER3QQFEgKN%O>dEP%t z+s-rfQTo}sJY%=1W`b=WwI+^KE(7FLT7o-VrQTp2Z6mJJw*a@{Cr-#SSxA z?8XL*mA=UwvEvOEYxPU~P0hI2%?uX1xxr#P>pn``&i5dW8X{KyKdZzS8yPHi9)rco z|6PzdVz)L}tb8Ue<6^CT$}dvzono-q(+w6Yx@G@J{4)#|d#1r+ry4AFQG>;vWw6+3 z28%u0V6jUYEH*J%>^TODJ=b8dR=>nQ&y0&b-(a!R4HmnY!D25kSnP!ci~WVcVt-(; z*ozDn`%8nxUTm;ft6$<@V#dW@YOvVL3>ItGSNeLn85i3ySnL%Bi?w=|R`^OYF7_&e z#a?Z&*owhouQ6EcwFZm5&S0@WG+6BQ28+GHV6itEEOr@##olDF*qaR&dyBzhMYrr9 ziGQoXVsA58Y-+IBr3@B(yTM}bFj(xJ28&(RV6k@@EcR}L#olAESgT*+-)qLj-e<7b z`wbR5!eFrv7%cWdgT?;JV6n>?EcPLT#XfAX*hdT&YxPU~rWqIesKH_%Ggz!$U+L@P zW?bwHgT+2!uvn|-M+!e_#>GBmu-KUfiydjO*ryE^`;5V2pEX$Q@&=3jwZUSaGg$2N z28&(MV6iV4EH*P(>~9PfE4pR>Nc?ni9zGAT0R}B{Xn!#cR3>N#k z!D8PqSnO{N7HjoO{NI^zvA;K1?3)IQUBO_nvkVsdmce3M28;c%!D9blu-LZ^7CYNu zu~xstf5(iAeb->Ie>7O^NQ0%X?-?xieS^h*V6a%LXSBi}nsKoo87%f=gT;mhPg`Kf zkUtrGw!-2stCJ}Fslk=G)cK?S$oNvqjxcy>WrdS*8C%BSWtCmd;E~EMZ}2E(g_HR! zC@Y-cpUk6P+Z()=!mAp*royWkyoSQ78(dX(eS-WdvukKiX179YVIE4zuo_mgNRdzdrw^w!tgMX^*jt0xzoech&vf?9gc2-t=1n;7(_z2!Z**y*3OWC~* z-bdMe4c<@L{SB@uD?Z{Yb9XgZ=I&;&%-!AKSlL4iK2+Jm3_e`hBMd%L*+~W;pse^v ze3^To!7}$CgJtf)1|O^JaRwi+>}JK5kV z%ARiU8Ook%@Kj~bGI*M@XB&L7vf?B0W$q~k%iL29mbs@He7>^N4Zc9x3l08-vKJZr zOJy%MI8j!7B)-f&$6%RzuE8?*JcAp`USaT+%3fvg)yiID@U_ZbXYeJ;ijTyXxtAI& zb1ySk=3Z{_^~&C0@QupeWbn<(-eT~r%HC$M%uNlxU0LywTz4odK7#L5R(u5Cr|kU( zKcMV`2LDRghYWsL*+&e%OIh&|UzvNi!7}$AgJtf$1~-*`)ZoXIeca#~%06N6lgd72 zu*{ul@YBkQkK}qrS@9A4tg_-GI8*jF2EVB6O9sEJ>?;Pps_bh9|5{n`5nq}6oWU~p zd4px{3kLsQ**6WIrR-YAe=|5& zR(vGB%>A>$GWRosW$ynO+*bBq27jaMzYYFY+5Z^)UuFMi@Yl+UkHnX`e>Yg>{=;CI z`%i9aG>nG2G6JL{07TI9PyF)GIuV6W$xSt%iQl7JY3mD3|>^( z#SC6t*(D5KQrRCEynwReBk^VKf(Fang$$Ot3md$&vdb8}tg_1)JW|=^4IZWJ3IC%w5W0nLEPZP}$K2ucYkC2Ct&*ss^v7?CJ*pNLlfb_%e4zgJtf3!7}&9 z2CuE`ItH(+?0N=Qm0jQ94V2x`;5C#LABit>*ECq>u4S;y{fWUFE4zuo+><$M1RM{O3j+7N2i7#`v zGFawrZLrMU#^9Q=yBfTkvb!6+hq8MbyqB_j8@!XU;v?~8?#~RCxjP#yb9XWLC}oc} z_!wm;8+@#?#~FOQvL_fUbN4ZLUuDHda_y(A_z2!#S@98ESN24MPg3^h2A{0#DF&aa z>}dwe+ye|gP+9SjI0q>!K7tQcR(u3cQTB9$&rtSEgQqHcmci4MJ=p{)2woFkPLAHkE96(7O! z+WZ#=i@nHTvA;A}>?$%{%|A!IR=?PcpR4eyW?by0W?bxL28+GiV6pZ!zszr#aj{nz zEcQx+#oD|JEvR05nDJ9o-m48hPvMn}hJzKp){LL3@O1_+tbA8CbIw=e*PC(iyTM?w zHySMVCWFOV-&NH7o6We`TMQO^tHFD!_*Tze3g2eN#ij;}z1?83(hKSBmFj)L_sxCb zDuw4V_-cjcHuxHazi03r3NK*roeIxu@LdYeXYkz$&u{RH3NLQ(OA0Sy@XHD>YVa!x zFJ|!D3Wo;IR(M5&-%)tL;CB`NvBAeHoSRyXQ~3W3zF6VU4ZcL-FAY9l;W-9RSNLxR zpP=y92G zJ1*88zt7B(@%s%H{sDu9x8q{%_=5`n%FGe_kijzkurvOM!NNBU7T%7Fb;lnyb7cH6 zgN1+GVBzh!SUWyL;U~--u}>N-<4-x`GYuC0X@iCDj1Oqr86VJo&zL#FKWnh?zcyHS zJ1*9auc_8ea?7=_mipUj`-#F<+u9CZM`4?HU4?C&^&DJP*ydVaVXJL52d}Phr``em zxu4bWoYL~V(IfT+gJnE(#(!h5@GlxHd}n+>+s^oa_It_95&mU^g@46h;qACsJHCO^ zDY>OT8>+vpwv80F+Qv9|tim?$IE8JTjUBv+!Zz1@w){bwgbV_dN&t~dx zt8H_It+p*3yrsf6Z=|q|vz3FlR@mm+Mq#T>`f0KBxl`|e{#?~+cuQ$%89ieEV6cq8 z?TpVhSon7g7QQn+plxS-K>NLG<_P~sgN1+3VBzh!SUWyJ>6F~kpNZ;kt8H6_t+q8B zEZ2q2E7yySvz>#tSJ>v-L1C*+`f0KBxl`|e{+!opcwcGxz~~YCp}{i#ku(0W!NUK^ zVBzh!SaN;c z1`BV;#oBQ>KP9*HN6uBNP0m}ZZM=i!Y_WMaR@lao>&RlczHBbJ?yNT1OBTx>v-Qf} zvl_lqTK;DAi2d4N8UMR8{tttN|EIyicg6>_?Tim-zqXkp{J#tq{u_gZx8q{%_|KF! z$u0faS^aIb?V_;NR&(&K3fsK9DQx5H?%+KXwz>9H*lPQ!gLhQ8Q}2NOz5}b_-%883 zMvvJ47%b!eb;kc^u;#y~f+_vNcg6=gR*w(p@wv<#;paA3zM12D1`BV;#oF<`RAk95 z@%L7LTW$L&Y_;v{;QbWV-z1_w(b!+0iGP5D4^-IZI!IxwP5NoE^tn^-fc}08tKs`9 z-cS=$>@b66d>&^!Fj)9`4HmvLKA>%9d_eonXXXe$zrn&UV6gCZT&x{GSm~79(w|uU zZM7Yuu+?^`gAY^K<~>|t8|MfIAE~g-HA!KsZGQ(#pF8yq43Yj@4GStQ3mH9P7dBYN zhdbko7%cpv1`FRAAJDclKA`;;GjoJr++g9CFj#myF4m48rL;+I>Ce&XZ>#MXg{`)o z94yy`%`4Z7jWgN7$0}@d9jCC>CjGQn`rN5^K!3l9)v%<}@<sY{g(1|DiL!l)=J} zFj#myF4i4i+RTyhWegU6S%ZbQ<6`Z&>=Vgt_m9;k`^swD$H8(9+PrdY+BkAvSuE$6 z%_ZlX)h0c+Sk}VUD{EvmET^=LGiFMSoj|qEW8~T>yEEz=E(Sf!NUL8 zVBzh!SUWD~r{tFY$hm5@$$4wF$r)m?oGmu5oH;g*Tt^nm^<{I(b!WB7Ub0yBn5|d# zp4AX4Eu)Pdu`3xY<10Jks~9Z&ss;;h$HltitC=}6zPiD}uVJw8c3i9-UsK_=%p9>l zF<8decE;B+Son1f7T%7Fb;s8;b7Z_~u<+{}EW8~TYsWWGctbNs>_!I5_!wt=ti}VH zA7{pe?~ISq)*av2%n^PQjR%GZKi-TB-x*im>*$Q1sMbz$%l@wM|vnYCFrp(-gLO&sNyRNgRBR z!Zz2r3R`W`Pm86`wqEJK)i6P6nP~Kg-PT|k-_9A|UgH7H?_kD-?~ISq)*b(;nIrs; z8V?K+ekU_7d}n-=ws!nHrA=~6f6iBbceD-Y?@hDXE>PnZU#PIn`wN9_oQoX%ONFh5 zixsxoq@NZ`pKZO;f2-kVO3ThhkJw!dmhqZ1zN^8)?`E*@c3iAGzPp(t<9iq^{GJ92 zZ^y;j@k^98$u0f4RQ+wWU8b8s~8CRcoDC~|OVdlvAks1$Zev%m%zB8^q*HGAw%lRp} zr9V^D-yLlO`g>ZfHaSBqmb1m?l{3f2k?Y7}xxTChx$dks*-IA79<%kz-m@BxQd*8S zdc+=Mu#8W3#*Z~v_~Q%~zB4|cZD)Ky`yFrQ2!DdX!q*KJ-j0j4w*qrx`MO%A?UVVmm~g{`(L9ekC-oq7lK_oZ45Cn_x`89icuZm^7> z?2Mmcu<)lEEPQ8tK-6F~kpWD>mR$HpD)poms z?@-w0y;ETu=Pn1|t+35?kHS`)^wVPLbEn>cA=fKxHJqWeoN4rkoocX*pXH2CGg$bu z4HmvLKA>%9d_empW{&XZ7%cp`1`BV;#oFk);mHtDCu(&tXS1N!@at%mcImh+7svC|Ef@e7>s3k??j7X}O886VKL zGd`gGE;4h3|E0mgUu>}Oc3i9-Zz`RVTl({;`rB%IOku0-Y6r`8Ve`uMV&gpS;28?r zTu&%$wMjoMmOgjt9njy8Y&Be>v|MWRh`r2U8Nb{aZx}566$T4$$HltiSDHC8ewD$( zUv04Pc3i9-mwh6+?f$XaWM5fra;;e`*PzWS*QSjl=at2Bj@evtzFBS3bBkpyY`wBZ zR>L()%e6+2*y{|I@#~%O8w?iyMuUa7<6_SeF8GlgYQA33P zl^GY_j*IP#kJ5e*nK?54u*Rb_|A-kEzB4{jTRYxVkat`?Z6gQ`qKxUSS*O z1qWve+g!g<*lK&y!A~jNsaJg#tgzMaw9@j7)uZgQ2Fv)bo$==k7XEpIh3||HXxkYd z(0(tNIl^ZK3;!E~g}38k?f8pIo8*@MyrllN+Fn-JYJ0`OuPSWwzNWB^^SXoIP}t`B zt-@BD^wVPLbEjUVUtz1^|8aHZ@&Am~`=7?XQ+CSq>eIBSXqAv8m88;MlB9*SP)dam z(k5h2c0wgdl2jClRI(*mvr|Z+B>6qB`?}8iJCENV@6UODu5<2lpL=HR*E09aynaJ1 zmsCC2--f0CZleD_EdQlp`K^!5S|3}xKO{!}%fj+s9+tm!+0w6|HubITb0z;)ZCAln z+aD)r;=wP|}6Ydd?q)DKq;S5V89RS)*6u=GDp^sB@2|0yiL z^|4v&V{3O!V&wmGSpI9n@|P}K`gPQ%zO{X>=ijRB2DoZFZ^D`v)vxAD<+*XfH^J4{ zU*M`u+p}2P+2f^txN5kLTCT5pus4LI-#F243d{eOu>7UVPW77;BmI`J{I`bXFI~2D z9VhC$j-RSc$5qv)xmK(>Sp8~lR-W@Gtk<#XORsNLo3?qe_C<|X`>1NTjaqI`J+gO% zrQbQx?+VL*cUb3aQC-`YNUU9H;mdRw*WHKbUtE!D4H zb1IMKQL*M%^`&`Nwdq(Yz6q}J>e#Cq?xmLdQjhH4!_x1c=>G`I|Ie`erOQtB2NEOw z!La-fh2<|@w)B6&|4xkT!(r+Fndpy%<^OM3{?cWq`lE@F{=cyNkA>wgUAFXYe%28A z)Bcj}!_w!Q=<|o=Umz@h>9SLO!Nf>kC@lZNVfjm!EqxJq(Zt9u7M8yFL|-B-|B_+( zOP8JMOC?77(qZ|R3Cmx)Z0V1OpU`54W|s|1Uv8o=AC`ZGu>7UVPW2TNBYmZ?{40m$ zFI~3uRp3<VJ_#K^7@mcHghe{NX*=Y{1jU3RKJKQYo@ z5SIUiVfjm!E&WCCS}lfa>9H>kOJ94Uza%XGI$`-sm!0bCCPw;tVfkMgmcMk_($|My zmKfO$!qQ(p(Kigs|BA5urOQtBjS?gMm0|f`6_&qr+0tJPZ`@*rW?vJQzR5&?ZCL(I z!}6CdJJny880oJM%m0S3{H4p5z8U<+#K^uWEd9+B{Vien-x`*`blIu?w!}z(dszN= zgyk7UVmcBLozQoAB zKP>$N6a9l>`L_wnU%Kp6-!?JQKNOaKyRiJF%a;CO_#-W5X!fIF=^vZu+lS@fAuNCC zvQz!ziIM(^u>3oQ7UVPW8PKBYp3%{9g#mU%G7R`@mmJjO>@f(!V^> zzY>=Jt6}*|m!0bSCPw<#!t(DImcMk_()WiCXfZ>xUk^(^aH1a+mjB?e{H4oI^+OUP z{m`)dhlS-YUAFYY;cp~H_K2|bZ%*_h!}1>$mcMk_seW`~q#qNO|JbnnrOTFn9DIC> znKgStSo(<*{aa!APYTOly6jXxIWf{t3CsWOu>7UVmi`_1yNQuKH7xym6aBQX{NE4D zU%Kp6KRq$he-M`cjIjKr%a;B__{_w}{wOT{tcm{Pu>5C-{LHLG14yx%m1se{H4p5ej)tp7Be(^QCRxL z6a6<~`7a5}U%Kp6|7~KV|1K>5@5Az!E?fGg@E;N*ds$fe4ns3?(q&8k6MRi#Wd9tNe(glRE-e4`Vfjm!o$5CvM*59m`ELr#U%G7Re}QjK zjO;C8>9{H4p5emDHr#K`_FEd8E|es5U*`@-^< zE<4r#o*3!(hvolASpL#wOaCYQKw@Mc3`>7#qW>!_|G&fXmo7WiA5M()|Agg#BrJdF zvZenQel#(%{|ifhY@&Ay=sW(<{ErJae^~yh-cR)T!t&1_mcMk_(ieaiOpNS8Vd)D` z^hLt*FB+D=blIuCSYo6v9+rQJu>7UVmcAssRAOY84ohEVqCY+?{}aOUmo7WimracH z<-+nWAC|v#+0s{lS4@oTN@3|MPxMv7@~;|}zjWED{=~#ce^OZf)xz?ZE?fElKRGe7 zv#|81O!RqS`JWn=zjWEDJ|;%`)57vUJuH9evZX%*er951R}V{n)1&4Ne{NX*(q&739{l{o$i5&f{e=_#MPd2Z3d>)*>{NeoVx+Gfmj5MT`Ae5A zeI0n+#K^WE8e(2cZx3OGrMCyI!t%e2Kh1slOP8JM8ze^h%fs?-7?!_u+0tJDZ zSB9m(YNEe7EdRz~`Ae6b>aR(R^i9I@zcws?>9VD73coHfvab(If5SxIEG+*U!}6Cd zJJsKm80l{g%m0?J{H4p5{#N*HiIIJKSo%9A`a8q&ZyuJvblIu?uEa>+A}s&A!}6Cd zTl$vpdlDnNRap9aC;HZ5`QI0ozjWED{{F;B|3Fy&4~FG0UAFXX;B6Bl`=PM(?I!w% z!}5P5EPv^;Q~jffk^Zr;{M(1+FI~3u9pH~AM)nh7={rvJPlo0HR9ODfWvBX1iIM*4 zu>7A1%U`-|>7RvnPK@j>Vd=Y0^v{Lm-z_YE>9SLO_ryrwBP{>t!}6CdTl${xUWt+2 zJ1qSR6Mdhs{9g>qU%Kp6|59S4e>p7wSHkj_E?fFn;e8V$`?aw2{U-YUVfhaT%U`Bmm=7UVmi~SC^u);iAT0fiiT=Z|{AY&cFI{%3|0pri&kD=` z3y{%U`<^N4s{?cVjzXbkmVq||8mj3&RerZ_#KZNBkU3RKp zmKf=mhvmN_EPv^;rC$kOl^EGShNWLU(f<^d|C+G;rOQtBKPN`|wPE?M3(H@+Z0Xm- zHzY>(#<298Ci-8(^4}bmzjWEDeoJDc-x`+xwy^xA%a(pSd`Dtr?+i=7YogyBmjAC| z`Ae6b>VHd&^n1ec-y4>{blKAHga4iw+55xN|1r`38J7Qnu>7UVPW1;9BmJSU{QnBe zU%G7R|Arq5H(jS@V{|(FkXjuNzWvBZ85+nVwaPu#i^8gdQ`J+D$+lOW6o9OdT z^aaB5FBq1;blIuCP-3Jn9F~8Pu>7UVmcA&wSYl)s4@+NSqAwYif2pwirOQtBr4u84 znXvqi56fS=Z0S#cmrac9a$)JqPxKYS@~;?{zjWEDzEWbOuN;{GFAw zPiLL@iTvrip0w{aeO}Ydv&K(KjI>h|BhAb+>)`J-eP}$i_*v6VYx>wpGtU}7IWf|{ zpBQQ8p_{>{C#U!+Eq-X)51Kx&Y38Bvyu?U5BQes|&HuE- zNc&M@q?w2A>F`-i=ec3GL{i=ArSk6C>@XiIHX=y63<@OHT0`iI?{CrjJcC&l<0p7-{DwMw)r(o(rGXbbk8- zeqM{8HSHHopVu@q&o9FN{KQE6Wn!e6XWa|n^OIBj!o*9vpy^}N%=~T${ud=i+OHBL z&CGQa@P$n`zqrK@P5X7?rI~q-2fTJ-q+OI4X=Z*~1irZGL*sQ4FYPypmuBYKMDV(a zk#u|-tk#>J^e6QDM{a^1FdY!gDuRY(+`qpfBb*S^zxrS+k^2c=@(jlN~#W#1E4ynO0Q@28F# zI@REqq4itw%IWyAKbUQ@Rcp)V3by|pt%h0C%ww<51?G9}bAscC?q2ek$9|ygovrQI z9YW6cCZ{y>*xyHdu|6l5hxU2FZRd4|(st{#Jq&(d_;C3BVfn3(y{z@IS3SkEIo+RC z96xmP(4Bv1&ww= zcRxzSY=gdS;$=S+R=j-bOP?_uGjyuKF+=OO;+50!WB)a_$#$(RpBvf!e{D5zFEg5X z?Dbj6JgtoYKr=|4-tJpNZc*w9im(JFnZHwjW8` z1K^K_zYc#aEWh=!m$g3js;BtrbNbLezd3&B)UWdo?Kz$1vELs39@pRNvyJ|*?WxZ= z*5|cnd0OWHpey`b=eg=pIC=n2)1>BJr|2h7~WL-fNzRbqv4n06S*Z z`mK27bo|(VhHdi6v|WMie_yL%)-?0j>$9SHUi&=h_@R40gS|5AWQ~aDceQ2L)9Y1vH z*ZGI`ELHQ^e-{0I*Wa%V>;Kw!`rK!IUVGlEb&eDComocbQuYI=`n)RW37^Px% zLEkm;vY!hpUOx5pVyt6^_BqrsL+iKVmDBNKzYp7Fx7L>50b%?9v(>=$duZmd*XL*R zy!IK}@k93?@|eedRoXt#+K$~9$+>%SN;8lBBg7ZK2)}t~pS9g~UiT&1?vb`%hCd(v z3cP1ne(Pf|YkllhPw@-p^r3yucl^*k?>qm{o_A{=`@M*N(DnE0!}`Crr#=f?pVyv= zYn|f+eeV`C_WF#i|7+i^hh}}~9!05`FQD&}c-b$86)&IqdMVa1L;Gy*n4$Gs@yhA= zvEQ9-@}<_6-+p5I|Etx&Go{hYW3TTN=6UVAhU2+5gFNQ3UzxW5Zf(bI4|0AvIi;D$ z{xRZ<*Truh+V>B)o!5PywqHrxJ>jp0_k#Bg%Wr+`Wv!3B>M4H7oX%SFTs&*du=5Y? znZ#z^JJ9#zkI%-v?EYar@45KQzLlJ%?EBl~XmC$NnI+gOf-0kg%RVU3@k<&9nB5VaLzfGltb(IaPys><>jd zEO}%P4{I#N8l!pEo{Q{w?x{ytd*xIO=CS_<+7Zbk`_1t8iI-3Dr^Alno?qB8{N^Tk zDqhdtcKp~MNxP$xNA~Ej+RCS#r@@YywP#B^hTm}@PsJ<0sZUgL?S*P(M7&UL_!=XX?LwO3BnU>^I^(7vBMvZseNmST<3 z%sCv`@tkjg)m}MOgL&+KfObam$o??=9OC6u{2H)hX6<=wj+u2!kf-AHtarzc{h74; zQS!*16<(7(@+s%DVaLqcv*jE!>y{)>#Vfz#$NtB(J3Dz~e-eHsdE`^hXTXl(93bqN zS+^83}j%UuoYOnXNrHMC>{V&jdnLM)RhxJ_i;u0d%l6=d7VdB zd*xIO=CS_`+9k;&``hq$iI-3N=v3G-oa=@iGwYTkPsQuE1sp&2zoXsnlSlT_u-eL} zoZo>RGi%S5a17@$$W!sk@A$F*1MMzL9@)#oCzD4$i#7 z;{Qy{wJp!s%U&0jetqLv^WPAb|HiQV)`w=TyI-}}7&pK=zsK(Ud?uuZ>T5-~+Nw79 zJG9>fbe^%li9C;b?7hy%nul&fbon&iRcUMHGaE5~Y5Led5xsaLH1p8T(JD@DZ$`f* z@v^sum9toVnTK|6*zrTBoNBK;>dQR#+Mljx*7kqu@3g<%@7VT(>)|;Ab9rWMdpiHD zZ5#JH>mH-+ZRtzwA50yac6-xjO*3=OfqE)_HMsOw5^EkhotJi=p}Pb9&g7T9D=hu) z#LS?k~Xch>s!ewnr09y^~E$>VK1b`Q|!gRS4OmwhO#--jvI zz4_)@yQkmrv+iH$YOn1!k9afZNzneCJhBgm^*b}gx-Z{6Yxnm%e%787p!UkC8q9pZ zMtdZAWd9r1@6{CR-hVUCJck|6oPyO}IaPys>>ow@U-HO47S>pbHAXXY9CrMyQ(tPY zoT|Y*_T55kTmJNYP__@Z=O{GhoEU8#Gi%RFa17_@$W!s{w|dfcKJ5Hq*#*LS)`EOG zX7o%3$8bErj^SJ%IV)cI9Y6L9(r%&TkzF{fw(=>bo+IIyS$8k&7}j>lQ}N30__1Gv zc8eyD>|$ZHl}|bKtO>_(P7ihr>(S(?c;$Ee*e_1IC6Y&W$?&s@DPD~GKg@johaJ!N z3s~*7kDf)mdF+=$TRM4UmkB?InBrwgi<})_zcs|3!YOkEC!OVG1w3U)a zcIEJb#LK7ng8ex4Owzjv&@l}GWVE5|dUOY^bHcQm+;XSJ*2T>X#yDUWhi+cja;BwaPAR!;?3jth@#*7l+6VSNqV+h=UYl(#wO zkkLJMJ`cm%*4n2!mc5T=?U?m8^l_pwC`RL``J&ou9%)Q9zclYOe#Prp)wUMv7}NF= zzX1Ef#$zx0qVSVBmgLiRo57CZvjOZF&J~lV;$Hwee(cwx-HVe)cI~j*%BP$I>=-_y z!j9pbGkGdr`5iy@FQMH!$s@aNSZ(D~&Q)Q@4BaZQV}@=m@>IO?JAUlfquooBM|Srl+T>8q?V;f6qQ8Ekzo9YDQO9l; zUH<63to5;fDScI*_2JT2q#iThd11F5+B1IK7uO3BZ}xaqpXz)g_Dx~gH&67pO!T*g z<$qgPe(Pf|Yu)>+@@PMnuKjBs+Ov+_mhbH7?u#`M;>{kf>QkLRXMLfLfpcLWt7CT_ zT*ufi;M)GbgzGptAFlm-0bFDM73_U9b{E36ZGR0{zZb!^eJ+M;TyLkYceL7uX5Sf> zzIo$W)8Ey2?Bw4fy8O|5S?go}a>ibHHiS!GgY9GHIz8BJS#yWo7v~CyH;?@WuM?+Rhx897?Ue@~9zk>XgXCt`u7gCRz_ea=mSyzSK7v~v> zH+#IQPj$Wz`~I-(2PXOl8}nRu>^5Qfw++j0ee7kekNqp@tMa@GF8%q`W9Ib`c3a*T zVE4tj2;$8iuj*5sAHr@Imi_QV|43u5XTW|mEdR&C@>}Oxf;rv$tMX_+I-buw)MMr| z0PMDWHh|sN&}m#|k5~1n&h4=~G#-1|kB6U0Tlo~TI_wy(<$xVCbQ_bi;$ICre(XO% zyB(89_LE_?l}|aJ0Xt@B&+c*z-`UAi@yhS`vHuk9c1j-EPlreH$ful7g&o7^H`p;l zw+VSFUilr*wFjYalzVd=Xyo;7{<#$)sE5ncZ1y{z@Ie;wnkJg8^~XIHiJul74=lxSHP81 z^;cgSm)YZ0eX8?|*e``;zdX^u(wH@O>{r9`?;DoiI_uqY`q;mbzADd~V8@UBM$}Vn zUkO)E)n9#STxO3~^{LLUVfPEm?my8FXgq8FuZQJ7Ff70Iv6r>({Z)CiA4}K%t+p?R zE2rwOzBDeg$E*5O=Rw$m8;{K%5?+_K^65Q&J=if^s|-74*1d(C75`?~@nd%=?G8&G z*~7zXE1z<%13QMbOV}~|wjg;bUilqAcHf}g5y>O_&9K_ar<`lSj$w@zb_~~xlBeR8 z-|=I2B<+q$9@(SAYAc^|t_?e8)@hqKX4YxE6|ek`AKNzYoZ@$0$e}sUx5BoaJZEQZ zOg^4xZ5w#r&Dyv;#y&w6_3*vpe&01YPPG;RP=*PN- zUiP@~JE*z%O^nMtv}fQse&{wsS9={NZztZ&x;)wm$s>DW_?^TQzk{~sp*;`J@k4vA zp4uy?YA~}dk9Jb>$etYDoS5Rbk<&~)u;a-CtG#ln1~cpOXx~mA+3$okmST<3JhbQh zIezHWm)a|*YA~}dk9KPE$bK&@{j|ocCt|;Ez4=d%F28lwZDH#}_d5Dgd-e5t*!hR{ zY(nSf^C2}|<rs2vxe2v7zmEs!_dcz@w6C3W=v1@&^;n#TYdpwzOv}mj zFj&v!u^lg-WXWiE5YOmMf_YrUAIsvqcl1KL9@CS$~ z-j23res2_ZJl{=VwO3BnVCFgjv`dml_P5~=5>vb_ZOyaxOiIV|Jpx_rl~XmCxlRD> z_sJuBX;@<^))>vSg&jZZ)R)>Tr)n^BodDWp&eQDWVd+;iW}O{-Wpw$kiY~u()`I7B zj&u4_d-b&y?EL(;7wr6uml~?C?O^8|x@}5y~<+naGYn}H>>QQ^uxdrU}vvxcy&8 z`>^!+8ndp4oj)x90%7^B56xP4J!-EyKSFKJ&+7^7{2Y_iQ+@3WS6kKWemxfFVSSu@ z3$>hMFS~G9`XY^4C&exrmVdFZ{MLtNt-BtzSDhcDHs|;8;QZdF)tB~lwN=gT*JE)W zuC-wQc%E`?2AsLyju+2yu2n$yyyLnE*mINXB4E#1);+1q^N8z1V9zzyZDG$r*3)6n z3)b0T&mGppVb3Ynpy4I>)BcrRGQ2DG7k`Pdn`iAA$&R0O`=G16UY~a%-pqPE+S17* zyG;0V#1!vGTQk4M3Ok;2Be2>lr)n^>UXS*K)CF8>pw z%Ws{vyg7a7_M$JfS6_R>&Od9e3^XE$aYAN!oJ{A+~ex6ZoEoIbRA)LwP&L2b^@HiVrY zof@hy?Q7>8I@Roc*)Op3jO|!hJUMlYc`lFbc&RzA{ZMmI`?=<(_EpVUZG)Oq+Qv24 zw4G`Ws{fiJ8duF7)mU?CP58O|>GenUdEqZnbMX<3*F3amkUM_p4o6pej;QX7#GA+d z`Dial9@!U$zf4T=v9vW0?Rn&mAKG)x)m}MOgL&*L*9mJZ#Tuh|XwO-9{LrZ{wO3BnU}jAgZN21?eQ8+w`i(hX zihY^&=HDQ?{MK0qgsl(VA@rs8>g!P0`G@vwc<1MQGBs3R`@z-rtFZeWx_x2iVa<+w z8@8NdFZ+tH^o<(Nn*Wty`Ck>5-#XW(&grg4?N#T&)am>~_jTC$hi-prsJ;$>opb0^ zv-|Z}oQG>-$+vOKIrg%z2}|FkG1rb_UmKQx)3E&3hi0w29<^7U2T+^yQyc93#86N5 zbs$`ARkQo`Se%D72=cwY?0D|Gfz@6)RfBo#--EW5 z^ECV3u=K4Pa}EdlzUcD5Kf3(ZS;wE#hwfzhQhW7v3heycqX#=b>k-sYeH{TiC$9;x z`{n%tcAl~O0Qo-Ha*oYz6PCVhW6o<~KNOaKyRiJ$Iaf2M53L@xSDhzOoAdKL7TEb& zAEAco>qyu+dEbHEFYj@%^YGj23oO<+slHfjNC>^{Bn- zJf7N|f7TrbJ3s3+)KGmL4Lj%1sb=@f`w{FstY4Gw6D=ptFv0E^mj21ctZQRG6_$Ue zu>98f?m4Fqtsb>kohMS8^K-uv?EI`rQA72meeImQKf>;p_jlNN#&#^cIXQKVc`lFb zc&RzA{ZMmI`?uz%_EpVUZG)Oq+O{>j1lJborzAvew7`IL2Ffj)zM>m+e+lotAV}C5HI#k=| zu)Bq2cc18cH0HB3_VZ!+_YBK#oqO=-^szsI{FUcK*zuf)r=Dv2OSp2X{_0EPGJCwL zPj&8v-8(G%g^9jTW4=RSzZjPPOJVt~kG-sQ*8b?L@|*;hem?b7+Y8{zsrsugjmzxu zsy@~EW$ahNvR|F(`!=36|JTCu?-!QeI`^~B>E2(JNBhz7JWqpqs_l7jDWA1auem(pX+RCT7c@FFt)?#4C@LEmIia!~4{Ma8zyMvNP_TaGE%BP%X z!;WDM2zCsw`Q)j1<#+tpA40oBlSlTju-eL}oM*z0;l6&@F}#nHr{b00@ne5D?Y@yb zvPXo~RzBrC3w8|m;KPpLHHthHul$Z5du;>Hsae}*n%jK#XxqticGkw^e)mT0l~XmCnd4~3 zCy(q2;nRpIzKT5Nq5Y*T()JEdLo{`K{CMobGzmUUgnV zozBlQZD8l;-fe2AzRrZ5bLdpF`}J6yhv$Ql@648y`|hzn3QIq$G4mSxW9!X-c69lz z56xP4J!-Eye@$)9KXezu&d+rP)Kh((1y@_u?0!8K=iymckpO}^z$3Dj*q<{EdQ^<@>}PA|2ds~!PqO$Ik4l${uZ{Onfr@jw;j5_!0wCV zgm^R8d%&tgwOxq)by)VIiGFe8S@ZuUEdM28`K_~#Kc|oVPsv|-eg-?9bwKJdvmOe& z?a+Sn%6$!;#%1<+RiEnoE%tX|+22p}OB>Ic{|}A%{d(+W(dCcc%Ub8!68fq<=fb7m zL2c%t{YIAC4(&Ix+}F@)TxO3~^{LLwu~&p;ubk*tHJ&y9AH(ur9hToZ_xsQ3-d~kR z`_b`Zul;Kt+HZxq?a--y_ce4Hm)YZ0eX8?M*lQY(z3iXEH_%o-#oP!xhIMw>F&xk2 ztoZX_$8%pl?XF86+3Uk9&o_X5JkQ!T@Vw(X2XxOD?#G9HEO9?R>|=gx%|f=>CbW_Sy~?5N{s)JJ9Y-9@)FX7ZOwa z2yM-*HN%eQUSnA8l~XmCdF~?GUz11nZ{c4PQ~WS(%|rW5HpdU`H`&x)IaPys?C(Ll zH+f|53u`RJ8l!n=za!`Pp;KRKubisEJobM_yFYnk{}Gn{&&J&Ij(s33|AS%qOP4KO zzj>$j>g#^k`G@w~cg{a_zoCZe>k_!yUIbUa7sJlOGug=Zua=WFS?s^V(jRWj{qorV zgynxEEPv^;)?JUoYY}U%!K^t!l1*H5TU?`~Q;f(Uz0@-?9G- zOMk2}>&3E*sNb>qAJ>@m;yHb2e(SDB?N#Srsnhv~?rzxm`7B2b)z_tPwN=gT*JE*> zvG3_~KG)F8&L5V(Kx5Xdu?vRfUnnfU^`Tkou1D=v=RMTs{6nYX!TEdLD5vGc{&zw(aCO z$XYzQ=LPpB!=5`_hX8v{&ANr*MflU}kL;r1%c#G2A$}9V%=UpDKXePgYOn3{2jb0R zzZlx$$s@Z&_;O;3m!PegYaU?751sl_d*xIO=CNNAZK>puT{?UPF~y6~);zS|Jaqif ze)CZ6l~XmC$9@^K$0v{M6T%uxvBqc~+V3UZ0 zN!S&`@~;$@-}=z3^`YzOOYPOye6aI#O$+S&eBY#o>g#H_+Fl8}U%oTK&ckyQ$+t?& z$^H1)Rm0Ms*qHmHu}=!izgk#+>)f9^r@J1tSDlZeHs|LWA?Azo^S)0F)z>w!bMhS- zcE28r^Y9E7@;$lblnPK@?56f?zd${Iw*Q55T^D%03 zejg9c?|oW*X#;b`*y~tWxaH*DcC6oH)@ zS)MZkdmiyD7dUgXZ70t`?%7B8yxTr)n^d z{fp7oP9E8pgr%?3n0t1x>xSiDFD$?Hp;_xgw=8|Bz4}@XcK)ILcB}LAeU=)kuUp`1 zdlT$_`JM|q5BEfqZ~c~&HCgP-!qPWr%zb&-mxtxwFf70Ip;_y$N9|ST6R6YqhxXgH z&d>KRYN)<$gR8A-cE28r^Kj2B`8H}fx!(=@%CPiTnVbLBjae_oZXA~1`p~R(*Q55T zb1CX{{-IkEcK)HeoqDRTJK$=on%%F*;ygSDfP9;@oMSKh+OYIZ8?$DOeO*}o*N5e| z&b<|Ly6aJU)wv9{Ilqqw=l4FXzO=8Mlkc{$`}J6yXY6$>Jgep8ele`)GS`H_p5r{X z0rtF`wf*b4$@LiMp0ljQ!^2oj=d^a)0&!w$-Xurqn_@Vu- zui7i8YB2L$0<^a!kL=sSety|8qmwjJY`uiJme+~8nVfjB8mf!l& ztaaC;_Nw!#)aLv{`|W7w=eq+nRA2YQ)mAmTUysFkcn$#hwrx4bUiL#_>D!r`|HF;B z4+Z;?u>97!mUvEgJ!-EypG=+3KXe1^{Ct+HYH{y|&K-#GA){C$vu|kL+i{ z4-r$mA$iPPYX>`iXupfC_R6Um%=}&e+Rn)%yG!_A#1wBp9y9ODu;YhLeW|^2ss{7e z?~3-h+4&(}(WG^riOdYi-#1hxXg!&d>QSYN);*ft{0cYq0y}oE7XmJO_Y$`?Q>6FZ;!? z^e;8$`gZJ>!}5P6EWdTu@#l2cqxPzEE$Vdsq5U?y^Yfj88mg~HVdvx=9qfKR7U$tP z0OZ@Z+4&(_N3+tIp?Br}Gcp^I+%aI~w&=Uys4g z$@ewb{dz3U!*c-0cVNrO`abrcu=Il)v#yOjBrN}-Vfn2O&02RoYOgw9NNvvVuRf--LJ>uJY%n8VaN2VW6X1zYeHbpaqdBYJ@2^YANJhjdJNcemU{}|%%iq# zJ=a*%NB10Ly&m?wV7(sp++n>Q_MBq99zL8uz5d94Bm6j?6<_>%#%|{GA?)~}+Z0xN zZJ&;K^VlDO_RZvxJu=)AQ~Va%nuqp#@{S+c@6xNia;gUN*dK*0)LwONL~YJL zbgzJ&pL3GbQ++K4JLk};X7}r{IM3Msh~s$ z-Sw!w>UgXg}^`-X8sT#~&XNY!T^2q)=tg#epjAridh8;h2>PzjF zQ#F{!{vx!ClSlS9Vd}CHLmVULl`Tx{-*8JCm<+skc zV%WOtQG3<-HfnSJp?fRr{G7|8p6Y7_xZ0{__v^7Z56>hg-?c3#>-*U2!qTsA%(^!A zhOqoMhUK@;`N=um^{Bn-d~$>swB?+&W6X1z zYeLXG$9X;j?0Gk9``2@m>oL$hXL&XPoO#r?t>+qR`skj6tk=Vy7p&LAo;$49!=6*K z?k4yz{OR>a_U7U^sV}uxPSs%MH!IQZNFLcc!>bTeyc2EBL-%Re@k6J+)LuDNgPH4m(C$ti*}sN0 zmST<3Jajw4jvqSprS{6H8q8z=H?(__NA}*Z^!pmmn*Z-%`R@g$zmS}OMkF2&%nn%6qf&A zVfn4|eRfWFJ!-EyKSFKJ&pjHj^AFuX4b|6^VdrFx0Cv9~i}Q^AzsdJ-%Q^P4{|QTf zq%rHo*#BB@{zs$BZ=LT-uyxm?_NsGRYIFXf+Xi-i&Jj^h_4O3E+Nx&v>#;Zwzpp{Q z$68K)e@%8#<+uL0#;jSR_hI?x3(Iev&*yWx>rr0SxgE7RzmEs!_dcz@w6C3$^F^@x z^;n#T-$Esy=PA#Gq>M!1#v70$B0Xu%^_Jq}5+h-o}W}ZKQ zws7*uE)wQx3UmAw+FBpFFT#!=I`yUY%BdR6W4|ccV#y=Bc=&0=6n}}fX3k5%jvqSp zrS{6H8qD19kG5p;$SxJuSc)}9Gxrh0jvqSprS{6H8q8zAG}t#kU&?M`26ufFzxoqy;)4?92W0@P4_tqwaU=Y(PR%X$IqJY&B+`BrE- zS(C-C7?!?LV}7>?yK-3mRl@RH=kv7eFeDJ|#N%gzf+e`;gatg&NQ{-=fIx6bi7r@J1tSDm|3oAdj4 zaDMO8>P!3DIawcp-LJ>uJY%n8Vg8nr-;lz3E^|!?>^aU_JnVVLbLnBvO|Hj)J!e^q zhcl1bw)I@&S_pK{L7qzhdtUIodf0P^>kweisaf}Q_!<1M1$xGv~)( z#}D1Xu-a?;tVz6i>{my7R`SR`JN!IiijSnNdFZ|YJAUZYm)a|*YA}!ebI{gE9@#a+ z&nKq%2-=#5?whdVhfaN|y>hAsGxz(WJui7=pC8s(iZw>_&>aRle(2Pf+AF7OFpvEU z&|a84vM<U#sz~`ClBCf996JCqJjV9<^7U2T+^y58c;b z=Vx5hP<^cpJ16I>VfX8?I1kVBC*KAwC(oD0zC0{_Lv!=LqA}~m*p0&STjyNLobGzm zUUlwEZO%V*Uxl5YbLrGmeXRpKC+GiR_v^7Z56`S7->X{Av6p>ySo+3|S+mBzCM^FZ zVfn2O&02RoYOgx?qc-RF@!tPgxh4em9A_;a z_PpbHwy@_W*JHq*v#iC#nMZBgdaiNrJi6x~Yw@t>#jK6XbBF5?&^@QPcOKr9KfV6Q zzAn5T^%tMQ*v*_5g&jY1C&6m3?XxcNW}ZKQ_J-t<-7Nf4Vv0|rt(kkBV8;)g`cix4 zR1IdH35@ophAsGxz(Wy)}7c-xk(biZw>_(0v^IoqrD?}WZxN}OS{+vE^C(xJLtFIGb=O4On z!OlN)FQ8?lZRp;^4=KMo<4D9^84p2k&wGr%`tWm=5*JE*>v40==-rsVLz3d0V(m&Xk^Bm432#?)VY4r4cSejaxG(47sdy|&M*i8u560%$uXkL)MI zuOX)R7qm4G-Opjib6*v#_R6Um%>2Fp+D^$M`|0o|#1x-PTQm2+z>Xg}^`-X8sT$1u zz5v>1lSg*vu*OoXF`9?&r?BI>UkO%w_BL-#srsJ>ngJ11*Wu={1b5_TS*13g9g#e;-weNvnBvQ5 zYi3;rc0Bh-z-q6Ys=>_t{%A)fkL=N5jip#)G;<#f?0D`Cfz@6)RfBo#k3l;&d1Q|Z zOFzExtocs}%YR~6e(Su)&FMpT5q+t>`nni){-OH~?EFLbPHL#WHiw;)wI100vW5aX z56`$D-$^YeYqHpr!_rS_%rktj-ww`Z5npJ9*gtv+YsbCsO99jOjyrlt_guX$61SqJ@001 z|9Wn6JqEhxENk(w=Mm5Ef-^VUcJdr#Egs$Tf@he(o;zHJ0DDex?>u}qe|r6q{Ym&1 z#w(x3ek<&lp}P%s3~S|#vEttYJD%qc(C(+nBm1+k+RCS#H^YwM{sq`Ee4Zyy#Vfz# zxhI--=O&Nrd11AcPdRUZ9mBmFuw#a9Yw}dQ@;iR)e?hxnCXej-VYQV{Id6g;Gj!S} zj^R24@>IO?JD%qN(C$~sBYR=^LE6fvoDac{;o3#mF|6s6r{doSJD%tH)9#|=k-a#q zw(=?G1F&PbMi+Jr*CCLn;+5a=JO_Ywmn4tuZ^LRUpK|^kb`1BE!j9p32J%$A@;jdA z`P1(A$s>DdSZ(D~&VRs;;rde8FDJSZ(D~&IMt|aD5l-7}n0nQ}N30c%B15yQ`B&_D^B8 zl}|Z)*fCt&20MneE%H>n@;jdU{b~2-k!tz^Z-F!|T`;U{q@_Yhz zJjWRG#XNLZ!EQTrSHkX#HE80^e4m9?hsJd;_P(&}-zWP0jc3jOkFfmz49jnwb@MrW z>~|!8<@qG+c#bjZF%R7}u-guu>UUpU=RmyK<5hjC^8xIGVcCZ!`o9{pK8yW#;#woXX-Hz-LuE&FY zta3db>|>1U@nCO%uE&FYobdb{*!!2~=fEC2&(DFqkNDkE*xQ!p0cL z7~;(yuj*5s^RQ11%Z?NMX^mMo$3DIB*!<6kE`Ri1);jm{&{yTz2QK}8)MFmH$6&V| zIC!{DpylLx8{*9#uj*5s&%~}CmVMSle|BT;qsKlcEdLr|`K_~VKBs$sRUYj}$8(Jt zwV8+R5!h|HZv}Q=L#J_>JzmwPI{(12>SKWGHenyDT(=4P7~{H4*xP^BK2!TRnYGW+ z-oIQoON__PwVkl{(bzs0d)sntC%XIPc}=jl57)KA9@nf}le(Up+GL*>mj3+4v*v$6 zSpFA=<+si{{+vGcUuNu;=PR(|$9{44qj~5SgWY!M7KPmx*H#g4=KL+JI<(zhgk38v z`{Iedc4L086Z?{|{Og3}x6V5LoX)*k@bW6c*%Xu=`@Y zo_MpztNK*u%ds1VWnVGTH)_n9HTIQZ`Ck>5-#Y8~bGr9e<e{%~#`A(!=B0^0Ud@{Jn&{FNihdyD zQX5`%yOUPp^HuZ{;EK5oZ?!#e@&Dt4;OgsOxbiGajzyAZ6LP;c`K2uyUD~G6Po^)m zQJn`-kJ_l7L&#ZtC|r3CgRAZBL>8Y&p346^a=boyWZw{$zS%^7V_5z-h2<|@cB;QQ zG1A`>mjA6``Ae5A{V>L*zBR7H;i~N$aMkwp2_FDgzx%_L=T0P~_om;a*fvYI z?K3uQ>*&&!iM}Ous*R4NL($Ymb4T;HVl=O-?UBS69|c!mM^ExRo*YkTdHC&7a=$+6ST^hNd>E;XUM08}Ts{J{GP#$HCQBbG%q{-}(971afSXJhIz{rGIFmZx@#T z!(sVLm!0Y#NsRQ5hUNcQSpL#wOW%r`)wjm=Ubt%88m`*D#aN0@gsa~Z;L4*pUaYxa zed#r!YCC1ZC&M+~li;f1C~El{?@6lXXn4QyG4TH3W8nkB$H8B3Ja)&!2Sz^uJ}7)5 zd~o<%@FC%o;6uYF!-s`Wfe#OV5B^s8H29?O_u-Snr^Ba&e*k|wd~R%;e`3Jme#!z-aou8 zd_ed^@Ylo2?HI1@fvpcMwsgffr(;~h(E2Y{JLl&+3+#G0r$_w<@_&ux9{xQj{4Q!Z zID8xRua>dg4i6d27Q`Hqn0Ld6hPQ+d3%>_GJgnS~8Csv#hZbA9Vw}@4u3>2X7ptA~ z4=vX944lMctvr1#03Q)v5dLO(A^6DfH>geTof`WQ@X_IK!pDS7JNqd$M6rsXTxVU9=o5w zKZ<@1d{+3U@Q=ekgU=4DF2``a4Q!pYm5Hu#xUZp&!}+-maH4D6u9<7jVb{s^coSXu zJ@%n(Cy#e%+n{vy?>f0&1@^dxme1RP>uu1z-MD9gZTl1cukHUr_?+;I;Gc%qf`1l% z0l)M6^NNShZ9H}_g3qgX_!r?9!@mr#4WA!=34B3#9r#y`$8KHt!szS4zYf0?z9_st zd~sNHRgA__x?)S$II1tjSAO+by2f2KE57Pf?WHS!ja~6IUTuTY)qmBgempMLx!~Fk zYUk}X>y~EQ{)Yc+`!5Gy5?&tuZFmLvcj4b~?EOA`34Cezx9}grzk@Fe{~o?Pd?|cI z_z&=v;mhEw!k5E;3||3X9ljF&Q)7OQ9=;~J>T(R%n8DVE7F)W;;l8+r5O#jnsVBO| z?V5)+Zr3@q+Dlh{k9}y{$>SZ`HYi>FyH3`WVULUJ3}J5v&P&7IZk+RH+y0sVYx_R~ zzBc?!_`2}w@b%%2WABFW^J$zGmKKL);`Qe+x3&6L87ldyOF9hEfUKqYTya;?p zHPJP0*UWiH*mZI()e-F#vAC~<`SoWV` z*#{$>|^0(Igg;24*R&UY(L?ux%D4iZ9T@Zjl1%zui7RWm+DY{ z<*RYc2hX28vI~S|7YxfT6qa2$EW1cpc3Nk}w04P6oz6M7ex`L+4XUT=Tohg`ZDkh^ z%PtX?T{0}YR9JTDiC*=qf43c5z8bIkufEi;>d>~*xGIlw*0`2|AD?|z%l(6i)uhM&Wq+RCmGmR&O}``obX^TM*v53A2&=~ch_thUPI@s4d9RA1_MIu_NWdR~Bi zVOaJ>VcE69vM&zHt{s+rNmy-bjLNON$}j)4=4z`v)0*8EpJUOh=5^q8`BNU*^};X3 zt{;}I+LS{+eb-Yx6|c5ckF?vN z<<~Jb)$2IXKAh^cJ+*&J*LJJpLHoJ3r?zt)S1&`?dZhZ=0KQ!aza0Kn^bKLHe@K4? ztThJlM(~m0SHj;;%&XvQ!>@*~3vUcxAASvdLwFPT#_((5o5GvIUNhyHSJd{Ez7;XrzT)@7+P>ngVQpWr z*1oiT#abiN_7!U_OWRj0>utsL@UY{#HwSji(6nl++}_UII{>=|?m2?pFZV{lu4m|$ zV{Ngv`CjN%|3~1At6QEJ?<3BCqI>LIrwx0Xa6cXF{mwneu(#*Xwxze>&@^vb?rkK- z#|-yb!`?^S=Lmbh3{CU?8oE`fq4u@*bM0SgwcmAIR1M1Q!ueN?aQn)h0>RJ@MW_ax?cc&qSn@O#6@!dr*6jkW*OR@+kh zMr$9k)tCI0Uv*Vm*~%$feaTkMswMgRmfbEat2o7+h}||Ut6b8*g{^*d&4Buot~tAXSg(uUZT*gI zKkwM|p_8qckHMcvyzIxrvO9#8!)>`P1x;<#*Qc;Mg-^!n|I(%XAmcp+{&ds12MX=8 z;hnKRac#Y{&qPkje*7SF6%z0q=b78%P>=xGRw62ZNai!M~UDKc%^g6wJVm62O z2)_&de0U3Z&#>m`USZ9}y&HR;R$ua0e&wrrRAc3lt^Bgp?|0y;N4EOw1;1g>@aveqkL0 z`-gQ591zyA@b$2+fjKa&Yhw-y>zbK^!@9oZkg%?MIW(;6VGavx{~jLJJo-jh`}&Bm zuG9EtSnK#lhPA$bR9LS+M~AgWe@s|w_s52{rhi;mb6sTe!m_5e_Wk&n8euAg|k`PRyMnvwQbwBZQHhO+qP}n zw(ak{w@%HM=l91v=bck^>sD}kdOF={&I^t=Ih;EjW0>s=*6aV`%o$$CGsjY&KFH@7 zMsK>tBzDhbJMvhweYst1cWy7axgXd!v9Fq;S;n>b!g*`_#-O*NLr(l?LE9Opc5IsSRvIWO{jU_0_W;oOOHsVN%gn6635&$U3m zd5&>D=J|={d5h-p8b|%)dCNH-=X_H%)`H&mC_nma$~>_an(A8l*XW01fnI0EzdpD| z)4x%CL-<8=EcwJ#r@mQwlXK9_Cr*rx0K)Ed!+mh-z(*Jm~pvXY)6h|T=q;~IhOfzEd5Z6I`>KMH$Ncdcl-yX{0=`P z<#+gDDZi(mHK|7opK;kg^XFLR$?c`zoa<5XBl=(N$;|VLedc}DOgw!w{nx~=I|qKljJ|0` z-!h|b_k7j>J+NMKEID2mWzABT9L9Mql=YhPzAOJ7=b-PI@!t=w(eytQe-M7r97{ei z%~gLa{m40J<`XAI&Zp8(f{SK8abo0rCjHzwaOM-YUwb1wSLxqcP@q94ZoCgpedcPYQ8pLLj@7(Th#CpEI>AL2iq^Ouz0$^To* z?^&PUVZ5A+-0XoG+1tP3fAm8>`k%R|{yt^>%8Z|Lk)J(KCwpT%2I-Bh&D0pwOq~5o zed3uxhPM~UGNDILl@w3OfRhmrC-Jgk)8;o+qGo;hA4 zWj*!ty)G)&TGnJ8FrKl@=`~wTDQ5)xJZ~J)%>SOeXPW;Jcy7#lrWwosp1h|S=6_P& z(+poApZ5^M{2$7Dh++Oe-^Tg7O1Cgy zF1^Ie>x=977*UhwcJ$BdW8<0^l+SA%_-sr5KTdAu;N@7n%ty2Sl;WxMLmjj+qZ64? z^2lkW6PwY@A)gpIo2mCr-9MW7#EFqJxp)faquba=w>G2Xk>5!tGov|{I5BdjmQG_v zGoLsyawd>YXhw6}**;?AOd_4sjAl)05X(B5gO@eo{yC67$2aHVT*|S`8RwP0-&TBu z@~F>#-QCQ2lE;O8xtD#;rQGM7W4UkH=kc0D>=Vu*YF;VLZDHT$>)4!2xu1FMB98_8 zcu$XIA9DUtXAgO~Z)cJ}t$yU!d#dL2<{6}W>34j*>FkqB41Y!`<6+`6n`ikSCXXC) zbN{e!V&0}ApM9#FvM(dQEBh(tYRdfd&0`e%!E;sg%r-NYZH@k$vj5zFHJ577>iP#O ze|Ga6(nDe!i#MBna*0uMPATJI;&Yql`5z{a9L9Qomi?4`5z{a z9LD8#(O1-O%Glh8^p$m(H@BC0a=X}9*)#ir`KV9->@SWr`y=MmYl9SUGc@8 zzl8LRlHV0?G5h2aBZq!D~S1>K3A8nQMjq`8H3Nb%voN%l6`8pezl6c%RSf1Vt!{XH0Ete55&}eO>T^B z>eb|3<$hKb^E>mRu2V6N7(Th4tMt5P@te~7T4ucLlb+c&`dM4LPT{8Ty1~U;ug9?; z+M0Udw-vcDSL`clQFDFi20h-;jJHvbV_v;p_y2xHZuFq*J7Q{46W?Pi`j7qA)@)Pm zhfTyA>xX^9u`<`>2RAjE+rlwr4Ebp6EB#Fu-|hXsshHo%*;0Cc`1KZIey2B>JaWjj zUu`bl%0A<=<~H&kcKxlz{La|N>;G(zEwfeU)Gsjn%xLBxCqBOTP0{RuIf*gX3DOgtgJvCS5+mm< z>Dgv9YU-Y`Vq)Z+BR#jUt`SJ1X4EH^b2PwoZw(F@IJ)Ys=F#TVH}FE*oD zld+fBM=v#_S(CAs+ea@mqgj)&SK3FfFr!(M{lHq{{NX&$eZuigpMAy}BZqaG$AayS z^%83>_Z!=qYlk%$$FwQOBr2<9hs z>4$yGnuPIk|I_X*{`g5a@e1&bC|VzyP0FfTE)i;*5^UQk+08{h@-wf8zPSS@wgiOG^NMr zN7s^+6a6=3o1*`w?2p*q_`49>8*{}ziJY7lFZzu9?CoCppX-O7(J##CmuB=%Gy0Vo z{o0IvV@B^Xqu-j*@671;X7oNY`hyw$(Tx6NM(LZLssFPX{l$#_YDVuiqraKa-_7VB zX7qkD`llKF%Z&bQMzeqF|6?Eh*NpyWM(;5f9U-=*k`7`eAm zIUgOxK02xy9nFkB=6rN?`{)>EbWAf!-}FQMvFxK`o6&L1=)=xO$F+}+XGX_2qmMfu zoxnaip&4z=X!cM2iR`1T8J*aSKH~c5B=*rs&1h#vpKv}pnSFF}GdhJC&HkxBrG0cN zGdi^y&Ev~{oyI;otr?xpjAlR2Dt~(W=nQ6bMl<@P@;F}TO!m>4&FCy<^eN|~v)V^z zGo!Pc(dV3x&S4*&(~Qn#M(LY=s6V%TbRIK0uNi&X`RIK1(fQ5j0%r7i=c5bSM;9`q z3!BmGpZbf~M;A4tieUbQv?6{ZoHg`{;6Jba^wH z$Cv%Of_-#FGrE!)&3;~0{>t{zRm|wBX7oknalFvg?4zrj(KXEIOU_5vw2!W3M%Ol@ zuQ?xG$3D8Q8C}ne(l`B3e|`Jt24-|aGy1ag(T(h*8=KKh%;@XRM>n;PZe~U|H>24< z^|!E(ZfQohGNZ4!KDxDibQ?3etr>m8`RI1`(e2IX4rVm_r~Z!i(Vfib&So@^FZ*>D z`{=G_bT>1a{k*IE-R+}$n9)7W=$p#pc%ggQNB1_P`NZ%;=$J^lj&(huKFDH={?G(f6H?9%&yv%8VXuMzeqFA7dXq z){Gu!M&EIL^mzN|31;*}Gx~w^(Ua_>C!5hz%xLyc{Zs9urGcx-o5zukYaUNJ zzIhZWV;D>BsAh6UGm|^Ixs^_Ao*b8s88;MW^x-dxf7YEl}=}# zUOIz$M(IrEnWeLsr<5{=`s7Y!CU=1`K1e(XO%LB`sB`L zCUoxr>-rl&)l6S-OgORq1Nx z)un5gmz6Sx`s6NWCUBcdKDnov z$vxdn?iuDwrI(p6mtJAMQhJs7YUwrR3#E*qKDif}$-UT2?j`0Mr8k*xmfm8%ReGEG zcIh4FYo&~#KDpPK$-Ul8?hWR9rT3Zdmp)*AQ2LPhVd*30JEe@FKDl?9$-Uc5?mgxw zrB9ikmOf*CR{EUzdFc!0N2QFRKDm#X$$i{R?i1!$rLUP^m%d?sQ~H+qZRtDa7p07$ zKDjTM$$i;O?knaGr5~9;mVRRXRQj3ubLki6ccqM>KDqCi$$j5U?g!>?rQeyqm;PY> zQTmhlXX!8IFQts3KDl3+$^F_)?l9FSEq{EwQDPyQl?x1FJ2Q!m9xOo)msOHh6qnpQ&j%glC zI<|QPDPyQl?uce`M>3N;vUy7BROYFr)0n4~PG_E8I)jzUE@%_sNz zIYqpIeRM-Jx{(>peYmpzFSysw;a3sgWnNW$w|O=3J?4$YkD50TKV;ri{IGd5@gwGg z#m|}#5kF-Wl#CI_hPajQx zSMhGnL3cOf@6q%3G!x&;Og#LqX!u;h<+@+?u%CL_-~FHmnDGzn`3ISa zA8aNbepfX7u8cdxIm8b&6Fu? zT+7S3{uXC%?9XKOb8K%{u4iTshpU$(+z)!B8ULuBf3%tSF=pc7cSXbR%D7{lL;N^1 z@#D?J(?`?)M}0Ck`{!SA_Qo~G?5)ycL-HWvoVONdok4p%m^kMeT%5hJKa<(dvAw#V zl{kAiLA{*le$bQ5_$T-LQ_RFqH4_iND;mDOUqJq8&LMufnfMuI;_0L5525~7#xBeCOa_U?zT{nRxnW`kW`so##*X#(9;!vDT7VgE=p2GwbkpmCWN< z&c)+f_QpO>=2+zRa*VQvi`2`-?gzcZjDKm*zsyYhax?Mt(Y}9$bMUV;6Tiw#Jbg5M z9zU6z{lnvG_QvCF_QqpKGLJ1eFONA{hjo<9`pUUjci9`~QZnaQZZGFv_Hea&xyJpV z*P8LK>-pE4iQix*9)4Fe{H~0<(K*C#G84bqOgw!w{Snn0bF+U&5@&BCi?g>;dOWH) z=N(O)bw=;;7~-63OmX%$T#ttr$M)*`)Wq4tE$Zb~_k-SM#=pJi-(eF%y5(Ogw!w{fX2k zbF+V1arQQ`ID4C<$CHY4-cFo#ChPI!;+$&=arVakOlCjF_IBm{9ofTU>g93wgFa!# zf3oL4WhVZ#nRxhJ(eS%6?iuG0f7VR=IWzI}(e$TOpUlnvnM$0!O)bveIRBGb7dbEM zCF@Mn<7ve?*L33Sjs2O-eva+!%KJ^Shv(JH3+@Mf(Tx96&wtrW{1r3t^wGZms&nvP zGZTN^Ogw!wea;i+&hsaG1#dt;v`b1ZUuIY!yT z8|vjv_k+G=#(%r#zhfr;u9^!!iF#6L3=Pap03 zpF0Qt3p4RA&BW73)Bj5RwR6yK%=q8-{O`=fzc&+4AMN`;I0yenGx49y#M4L9|5^Nt zbI@PS_`mi1-wW%zccp*WCmy~&+x|cPpU%Pmt8iDw{cWFk_`2RIPJbpHJLcy6nOPjY z>As8N>}}Q_&nC`(W*29jIeI*&ID42&oV`uo;~B)cy)%llhkw+|zwQV9&x~J<9DU*s zVkTajiKmbD{Xw0BKbV>L;AZ0Kqv_AB-pbtCKl6yQw|T|c+k8EqU!3zUAkI1q_IM$2 z&b6>Odt-klv!8Q&+5g$Y5bAA6_lyo@#vi)p4^y}+@nP)~4_}|h7x(?)oP$4n;jY9- zuunXE-J?&O{vzs)xjBCp6-RIS44^oBTfE0hh;!a0#aU;m9xpA<9+nYjZ|u)x_H%A8 z`#*aaQN4`he$bK4_@ngvQO(3hGZRlA?fauU2Y(DR@iEQB(?`=^R=qJd`)4_E_O`q@ zd*l31W?kgGte32_LXTGz=Ugj^vp4o2g}V}O>=O@P-%%@0pYw#d^Zbe4y7HdK?2WaS%o@yjS({mh$E#!> z$Fc_=-?BIMc{0Z$x0hp-JxrutTK9uaY{s9Y=TBO=EAh@g@$hxML)`Z#a}NIGh4sC+ z(kbi{4`0_cdOnYz%+3DcaW#7D%6nR~Hy%Thd2GpfdCbZBtfOSsSN6cV%icJbk~zn6 zdpY;Ahbh&|RPG0z+KfL<&!5&zd^$7n@VlbncV*o4&LKX7nfQ!m;_0L5ucqFZoBgx8 zID1<|oV~5tSZ4HgU)NlpRec7ZzjHgnRxhJ(eS%6Zb9b| zU&u^+VKedc(e$@apUlnv*;1UnZ6(g$w(jvZ;+%I|an{+c$J>i@t{ueL8~Zbv{T$od zmG}Q<4~wXmMcog&m>GZZp1*{d_>yMg;p@9)2Yh{IU%Zra@Rv3-ZW%N2^wIQpRG-Yv z{@F>Kz3nW{-d61~>mvH;%KNyp&MxwkcNOPcyNRF#mCVG`NBjQD&cR>BOng-{@$}L3IZv27&!6m#^D28|ttGPtb6(bF*5UCg zna8o5i^sR@jeVZXvB>S^7-bKush8E=54wgKf6bo1mYMk4X5#6ieSaP2;IC^YzMh$Q z`e^z*elj=vhsV|IjmO*UjmMB=9$Ru=9&@q|>nNG^m2G~;j7^EWmV-^5HjeYEdy>Ky#d%)~c06Hgyae+%)JC8sI6l^K8Qp1)1uwj#c* zed6h(;kRYncFw`yzOX(EFWtdD@$j3X>F+3ir;?-fF5TITze~^G)l7UhGx6}dqTzRC z-0sdHzK5Cko@V0dqv`LZW5?W_KYNR_w|&If+rB;CPn`4aFU~p#^!Pw=&UKJDd)vLo zdx&FubuCz&J?y1k_RfB!`ga;+*$H zan?Dh$0v((u2aO>8~Zbv{T$n?{>9nDG3w>m>_>W>8UOg6e}b9#iDu&AcSXbR%D9u9 zL;Pej@l(vi(?`=kRlPAc`{y)q_IA2Bd*l31W?kgGte32FMvu=F=Uiurvp4or++NPT?BR0ta)tXruQcOd)$^}56TikxJbkq9U+WzF>&(QjHxo}EP5%b*jm|-D zGUMOe^KUT|ztv1UeYEf2<{bRn&BX686Hgya|4#8;&Oz@szilS|j+uD+X!`Gp-*XQ7z8U|6p8uhl_(x{q>7#xBW9Q(1VkZ8nnRxnW`k#qE zcMkf68UM?k|CO2e*Jk4BqkaDy=iq;9CjOn7c=~Ai--~}JIeIU>^hY!PPd)!&mYT7d~7rE^wGXQj&tzG zH4`7tOgw!w{qe;UI0v23jNkP9iOj@XGx7A%zCW>Z@Fy`7pVUk|eKh?}JXy(UicW6E zpQ7haX(m3EnRxnW-=Eq!_|uq)PirQgKAQe?;_01(&S1u$vFFcZCO)&7c=~AHpT#-& zvzm#|W+t9Kn*QwKIZ94jbWSt=Ts?noGx2%M#M4Ln{=Ck?pU+Huelzj((exJ(FX$X} zAv6BMJ%151@kPzV(?|RMV$Q)|+)R84Gx7A%^p_MbRdSl5OPleR>G{i=i7#g+o<7?5 zmv;{S3TEOfnu({6roWPSW#^!)nDJNb`Ky_UuWlxuKHB%!a1Q>OX5wp^iKmaIzqWXt zlG7Gl*Nnej&tKn6d;>G_^wGY*p>yyzG85m}Ogw!w{Y}K1ItSg%jK6u$-@;6MOEdBG z(Z0WxbMUt|6W_*6Jbg6%ZN=L;2i@L`zeCU8(M)_NGx7A%zQ40`@OLp2-_=Y!eKh^u z#Jf8O-NTH(XV2fuOnh%M@$}KYzmIe9_casW&rCdhH2wX>2b7$q=z(VZgL?kKX5xpK ziKmbD{X?CDf0&v0;b!9Lqv;Vhar;qmi7OV*$vNoBX8con{;6i-r7(giEWX4!=%r@-%XBGzScSDb!PnQd;Se(;y0R!r;qmio1BAxvzhoUX5#6i>E9~8%{l1pX8b#P{+(vx zcbSQ&kM{k$or8amnfSeC;_0L5-zUD`Ip_ms{0DpfLuTR+n~A57_Wehkga4?R_+w_` z>7(gCE`Gu}=#ysrr+WU=X5!D7iKmbD{b!wn|D2il^Je1dqv^jOe$hGTOJ@9+d;TkC z;;)*Cr;qmi*PMg@x|#SJX5#6i>Axv{%Q@)VX8d=0{<~)4@0p3GkM{ldorC{@nfQlh z;_0L5e7(g?E&j$i=(lG4?|T0C zX5v4XiKmbD{U4o!|C5>c&t~H3qv`)5{?$3?Z)W`8d;TA0;(wZnr;qmiznp{rx0(1q zX5#6i>HjPK&pAa$<$wRC!XLzpUz;oGpl0IfqkVrc=im=+CO(9jc=~AiLyCuT4mz|M zf0&*>teN<5X5#6ieSdi8;E!M?KBAd;`e^ziiAQ!0I*J*8)Sf?@nfT~t;_0J(e+=i~ zk7*`8mYI0^X!>J|$8ioit{H#4o7#vrLg(N&X5tf>iKmaI--;)84myb$ zf6|`cnTbzkCZ0ap_a}D_{uE~7Q<{mVkETDBcxvaM)0pw6?fKK0iBE4Po<7?5XK)Vw zjAr69nTe;5ra!ZI7U!U|n(=4r`Lmme&tWE>KHB%^bPoPpX5w?3iKmaIKaY4`=b-bM z@#pXP3z&&7XeORM+V>Z74*tSs;)|Gxr;nz;sCY5wpo^RFm+1LRnu#xECZ0ap_m_4K z{xW9b%bJO&kEXwzczNfbE12eruVW^jKHB%!bq@Y|X5#CciKmaIzkzr|=b#&z@i*@Io0y4jY9^jO+V?ke z4*uq5;#-)Br;nz;rFbjnpj(^qx9R!Ynu%{`CZ0ap_qTTr{tjm1JDQ27kEXwqcxUIJ zyO{BJ?fJWziSKSEo<7?5_izsWo@U~EnTe;5roXp%ALpR^n(_DR`TLuRA7Cb)KHB#W zbPoPOX5t5%iKmaIe~9={=b(p~@el9$N0^BpX(paN+V_ug4*t<*;>VbYr;nz8toS(R zpvRl>Pw4q4nu(ueCZ0ap_fK{X{wZeSr<#eUkEVZ`_;lx>XPEKN?D=PziJxsIo<7?5 z&v6d^xn|<$nTe;5rhmTp0_UI?n(;5{`4^jsUt%VnKHB#$bq@YzX5yEdiKmaIe}(u; z=b%@a@vrXr*O-Z4YbKsP+V`(>4*vCK;y0Lyr;nz8qxdH0pf{WGZ|V8Bnu*_LCZ0ap z_iuL&{vBrGcbbW(kEVZ@_-^N*_n7hT?fLhaiQjJ~o<7?5A8-!-gJ$9nnTe;5rvI?` z5$B+fn(-g&`H!24KVc@GKHB%6bPoPgX5vqqiKmaI|BU!q=b+D-@t^PcFPMqHXeORM z+V@{_4*tt#;;)#Ar;n!ps`x714~X~Mz_00t|G&_y?ZdCzN3XH}hWOgTO$EPMa&!-5 z>2=P5-?EQh@BFvLH}v?OlG9Y^jrQSp?V~r@e@}dKkKcC=dW(Jd1N-Q$_CFNgR#^A- z5`R>3+M>7H$NShmdWZc_#CN(5{AtN)ir!@(?=$=8-S$5h-_zqSoP*w5e0}GL_)Gif zea`<%e7|$xuS<^Z|08|CKKzY+^g;XIiXZCncg{f{whw=AAAQ9B58_9A{A0;!D)ce? z@K5&9$L;?texh(w!M`{MebPDbulCWWod28n=^p>?9P}BFh5xXRKI{BH#m_kh{;TBZ zGpf?(?ZbcDM_;i2kNCwN|LYv|CHwGy_R*K^zk=$X$gCrD5c8|@lhNA#Yx0v{7Y}M5 z9nAcO{A6@+`)|rm9zx!b_R*ot=jlCc#OUXIar)2derw6kiF54p;>;gfSE;wcl9)i zkK+7~2e_**QBL?>&0}M5Q%$X$QJp`Pcr^2r;?d2-!|!S|{H|u+Wcmq?$K=Rw%Hwg= zZ^}L7g1dSQ)%iqou+Mqi<9GJYrK%a+)t@RpX7Rh4$I{@Yx=cCgkEQt7&OyiNrZ<<;oB4>g5$5&-tGZa93ZUobbDv zzYD=lwSscScm9gv3Ct^rCo~fezpK&kyPA2E=_fe;9z}jr{uV|3rre(|xT_o0`9gEB z&w0$}clOVfsu|qXUn)LP@w=M89l=d?m2%Q=6`$BS=p?;-V$|gCOXM`=?@Z*xT$xYJ z$nWaKHSeTltUg03{mOmvw=evrx?1_cUA=_jo%6pQ;I6(#IpKFTe-ne7YDwix=KQ6^ zlbe?oPhln=epjR6cQx}S(@$_y{uW1mQ~nM|{ifXeFu1FyRGn`$2m74Acl^%&xmGoU zyZT$jrz(C|^LI12sjgE_`co@DjdRdxd-=q8tmAKMc;sT$xYJ$nWZzH1BjC zi+<-mc@7YMQ(dq8;I5uo@#&ra{Q!6M4ax~$=a0q)H`Of4nZfz9if1&>CZ5SmJp8Uk z!|!V5O{SmVrabqE{H8nyiTX{suVk?LRGl9*2m74A_5990zfm=VyZT4PXDNPH^ZX&W zscuqE`m-uNn{&|Fd-=qu$@7ZHY0C49$cec!pPG^1)eC6eIm%eQPf7Zd`{emg_)T@Q z@`Jm2LB;2E{?7y4)wd`o{I2G?P;gT%q@1~&zp!|2^CIGT%*4a*YBc<=X5M7_32rK$ zcSU|vo_|ICrrfhLxU1(?onJHu`<&-F{LcQlRW*aV`d7v0D}Gn=+$p%JZc|SB^DDl9 zbI=8Q`NXKnbE?Q`%5$s8iMcYLnvvhtb86m&%GkE(Z|;-ld*L_L?aB}C>bVqO*!jN? za97`N=g%Wv)I6_vF*EV-yBZC@tC=^MeuA6wJT&r~^4v4(H|2h) z!FtS8oh3?rJswJzG~cC~$=m5ZA;J0_oH+7zKYTIcdEB^D`N3Vil)R-~2VKT|w{ntq z(b(X&+`BaL+j0+7##56Xg1dTIdCR#Dy1e-w*W& zoy@;i9Qj?nn#Qf}I_Mf^#uB6E7UIZh%YAJlr>*W+oy@0x3~plh2qRUKl~ z+(aBX`aT75_1dpdzO&_kxNXeP562Wd5V#$nWay zG;Vv>L3c27A1PwgMMNV5it~!}d{mAd?9W`zz*FkqSbI&Vc)Z`vnk)zi) z#F3-#4^o}Xr+(yj^)4E>tLvbc;seYG>6`jOw&yKCGYu7mDr zeo8sXTj{<1!A<#`a^!2x%4a-(kDgS1a98goZ*SK@_c1@Moa7xeHn=IDO^*Edj5Fh@ zNe{tYy|29eTnF9X{ETvvw^PmF_*`@3x8-xsjHf0&1b6iT@(y$z^dK|alFT*+H|4X{ zk*~*j`HZI~Jp_04!SW7q9rRH1rphPAG1^QVIc@nYc;vLzbE=d1&x#|zs}Iw-!(9hG z!o0ca5ToWM;>c;s=h`Eut)5q%%%^_jclD7Pca-a(N1HcP9b(knKpZ)3wZ1rV^m>Bo zWIpvHzpIbYxMN)hJ1N_*n2Cqq6b(P-Wjy`!dRNqs?TY&PZb9{sbFqy%mfm9Crt}vbM;l_2Y2BJiV3`tk-rl zSLVDSPQMz+Z>kH#7nZSl-AQ_p8UNzKZSgNL6Tj3~ClUIIl^iLmb<7Lu8v~9_k7r(90y7*B)e7&BgI>FHo;~6`sa<3@d z)q_ieo9b=lr+=mVtDJ*gZ6==>bq140PFr3FjU2u9qB@yR&B)hl5y~ITeGV$-cj}NI ztk;O-#qny(xY+i#%oE3`Ewy9cwq;ywm;SHU*y~Eou12pnzo+`iH|cRExGkT@jr_K{ zK|bSIcke1cSpUn*yU}&fo6PSkC;1MI4Q|V4b0fbkpYdfpHR&N(|5wVp#dXkI%^xTy z`8L%I)_0DJBfl-5-(@^C=^?nQZ!5d-*_LFsF}N+CIgb3cVlKv0lOBS*`c8Rw zxej`_`C8=@e~S=cyw{=YTkJ z^qP|DWIpvHzpL-pxCdMZebCHUV${4s964Gq;>c;LPgE!KsUP`W{gB2z>^kTpX2ueu z=2haz(YYs%oThxQNaj;N^1J#`jeE>>(8tZ6DJS_6)d|+~XL01~`MH?!9HUQ_AKcYX z$a~Ut(5K9wD<}CWjSbdwRB`0%xwM$^)TD>tu6|nHGp>U^YyLtx$xmo(u)e!l9Qpd* zWHIBZNe{tY{hYk#T?c)^%(f)6jlp`3Dvo?T2NpA)n)DFd)i26>$#u||&G##x82Nn0 zJaY7ZlQ?qp|CH)v{+Hs&@9I}H?p4=8Uo$h77&Y$`M~?mn7e|i%UsIjTr+(z?FNS^Dc4Z==BG2q#zlAq@)K6$K*cct%{KahTC{#wcya=wvfKJ$EP z|0^kTlS6*`)cD9gUYx7?A4i<$Gvo3+Xa4u~Lmg`7*e}KOls(WZjGy`JoABGR|6*J8 zoxB4%x>hcZI{M#Doaa1!dhL{Wt`W|Q*siu5!{|rf6DL3RPgl;V*ys8lSoyK-dj2Vn z{if%B;y6Znek+cB80QJwz;S0ga=p-dt|PW7*B9%KV?aLVD*GDd9AkgM-%7tL+|}s! zX6^|$PQ#`_XmKpUjLUM$I?Hk)!8|;>gi!t*Vpx z)Q|kG{#oOGaUJwmGh>NSlY1saPE&Eugve>CA5cOCQ(Gh>NSllv+} zj-G3YBd00fk(>F{kNmFwQ{(i#Yvf z)labgCl$w7{m(0ox%67S@`H6iI+W{9y{~9>~&R?Gv|O zqv3b;@0u&?{2@-C`*H;9e@StS)&E)In5!w@nH(J3OMmn^oOF0IIzrDMvFDFuCO)#6 zc=%n7h9Ac(>u?;?=lBLU?6+OyRSI6eLry=qpsRtocs0wan5_7IQP#%;@qxL)Yqt`x2EW5X8h3$ zx5Xc$a90r@(>`(gH5z_b|E+D$I{%2%|3dpGxGDD$iLts?D?jGa|K`dM)@ul2`rvV3 zEa}*0bex_)Zee{Vh;%$N@$t>X!|!S|eEmPJ`dQ~car)d}Bv^kR#W7ab0mU&_Q@&?A zIJTGm=yL+;gl4qq`4bh^J(;DgnfSzJ;^B8S8h%$-`mWBbGl)2S?u!zv$3t<9)!zki z%%#@^v|Yimz4S+)lSn5uqg~IRtgx<$OD8uIpTbN$d|k61@Z)%89gbt<>p7453D$D} zag5dT6LHL?|I@Wy!LhycN1szlrz+gl=+tKJQA3Oz?okstdJlj&a`ZpAYG!^dj(oje zMdPM*9dtS~V~J6d`{6{6-pe759Q{A8I+;)X$nWauHEssiL1#2GmKZg;hfn0_`I|U$ znrd*>$$aWZzOI#P+{~_n&SGXPF=}$3pUBbkNpa*f72BKn)Q^0=)66DzQX#>0_pr_;tQCGhu_s`_+34W>Svu{#pw^C&-CS3 z?(>s1=|AUUyMkkT>5o1alrCgO7w-9s6xQ`<>7r)hiho6 z?mLuYEA^Z;=|AUUyMkkT>5o1amo8yOm+bjV71sC5OP4kiU&c&4{H{jBkK>hfIF9La zd~+=KS<0I9pL4NY!LhycN1w||mn+;AUEa(+posA|{Wo#s=(|G1k<(Tqs%GYoAddX5 zT0!GhbRBdhGh>NSllx6Yj;{TQBS+s0raGBV{mAdCl{Ib^*Fje`GnN=Nxkpyy=o+Os za`YZQ)yaJ7M}AkWrg5vg4!VY!vBap!eY7G+-#smkoVH?nGoSjA-<5q3Yf9hIpc<@s z{q-sPDb{RTwkgi%w(NsgcWv43STAkqG0vs7Y*U=`ZP|`ESKBgY97o-+Uh~BH)|S5F zJZY;n<*yYz)acsgQPp$u@H(G^n{xlE$Zx7)$WCRnO?n8{b!~YYyAHaE znQcjC8-ts2kFLmXD&}H5HR&N(*R|zs<~r!+X8bJ*>w27Y%kWElEBnO5*L6>E_)RsG z=3+c^4K0rPO}VdF)YtPv^^kLoEzYrHh-2QS8dDr~bX{BZwkb8c8r{~6zg=OyUq!mT znfMN7;^FJM=YSvmFrGe#RG(2_&l$u~zp2Ji4>{Mk;;7kF^c?fXwnQCW*H*oqO3kiD zcQ)hiQdsXTk?v|HzMGkN_)XF9qaVi8=b-8>>gzd!IO;dmcxVGTJFmE5^G%7n&rp3(|dTtu{L#GTO4av?-3HmI%>!1gj8|5TVswgn5eDuoaBi$HdxcmmMtvdCPb4@1BvGg4C>VHFV z)aj~IRqwP?vnzVK8UKvJx{fS8(@gvm}}}n@kRRK@dv%wJeB%So0rain$n1O?n9K>TBg)=Q`;1X8aop zwND!={1-=k?L+mDbIl}{ zm^Zd1>gf8o>fKdpb~Spp8ULQbx~?a^*G&9AGx6}7qTxqBjHl1Z)LYcozq_S zIoB-W981qJZ){7{(e-iFd!W?pYV<)f{zHXzomBd;nfN1S;^8+%!;gL#PoGn$x2PZI zL)4FBnsafib1Xf_ys<4&NAI;zy$d}r=UA-euADEi#`RtW`LXWwz6f!wO}#Hd9BWqB zJ;kw(^j=(XtTkP?6~`LX^>lHp3teXy$J)^~adE6EU4s@srXL=E(8tZQssH4KwC%xd zxxZ=Tx77mj8PDVMtjZ78^?G?vx(@o3d3NO_FQKu)`YuIrh1NC5}2>^}6c4QEGNY-!$XDRan<;rEi;wzhfpIzOIc9_)Y1D@$@;5 z`i%PeExFLL(VmyIBGT(J;%Iytxp_vy6Rokd#}{&ioS2g|DdqmcO?DLO#CA= z@$j3X;cK6$AI6tsCyx3$H^fn2`&K>VTnmVEEIr4(Ixga<(^Vg<-Y2DISM*ae{%3`C z9bfvnnfMoG;^FJM%z)pNei%=mbE&teuYD+v`tsF7&c(5gnoUK|F|Uq`IO=reTzJ$q zImcoxcjbJ^HO_I!HOTSJwaKx{HOoH8HN`&8wZ?wRHOTzAM%b=gJM@@q>Pzug`r+{h z{o1^cdQM(N+Z)`J`v*sUQ>`SQ@jN~+sQh4k=1$(Xu7iGOURXKFYiVq7Q|=`k`AxYe zG2^L855fApmAoHZ2mR5!h;owGP|e_`+;2GYn{vNl##56Xf^~gU-p{Us{$gfZlG(=K zrraYr@|%je7*9=l2-Y=OdB3?1`nwtbkHUJrRQhN5CH|Lv;^FH$pg8=dT3&N8p1D>K zNBySU*E#Cz^_m{ia%49QB)ON%fF(EhWye^c?fXwnQDh*HpC!E%mz^9n6eB zcwxOSR62y2_>gAe;WtIYkA4_WpG&E?sIT6{QC~UgC+Av5oMY)Z=8bKMI=Tj-dPA3* zU5yT7#vitDTjIl+i4Sik9=={*9q^+c#?$9A>MiQW`4IKvnC4s@>!_)Gam*Xr5_R-B zK^>o1r)@dMy!Ola5^G%Vc~(xWJH1as^T*oM`!vL{X4|q4Vjbx{67plMwPioW8f?q_ zu`cxf1m(oq(RVtFV@>IGa`A}z;qeC@$-JEUPu@)19<2B9iz8p3K@c;Z^K)6{2Y25%1PcvV}td%DsklNwOKLasYwsPT|Jt-(Om}}!@PoWlDE>>V0}(a9Qk@3 zRm^y5(nD}pk11~~*FncNvn|PNW3WEEA&z`~Zbi&^YSKe+SC1oa+^AD@JTw0Ih4mVa zbOQUtC$vvId|k&M@SAEw&Bb`;+DIJr^%*yD)YtV0^^kL|B95ARj1tGZ`g$@PuQD4_b)I-j-nmB6e z?~XX;)!#UA)Y11QtKMX#W><7_GyW8X+u~1YCO(y!c=&pKV8CxmKa8i(b<|tbZ>zP% zQD4_<)I-j-hB#_A6+Oqi`g(5nPjVEY@;Y&X-){ z9EV(k9N%1<9IITj?1NlW?Au&x?5A9V%%5w7?aH-7kGZC16wjm|9%Ip&&G@qv)^&X8 ztcAN0pUpmT`!yPVSFf$@%{uFd)89k;EywOIjQsr=xsUQ0|L^ftS64l_Du z&!4NX{tuGQZ6-dCnRxj6?D>G-)$6K$)>%&+`Fb5*{p8ra#aWa7b1t?kIJTGm=yP7_ zd}eh1p1(k0{SPHw&`f+GGx6~C8TSZ);S=T|AGw-T8#HhKG zIC69iNE|tO%vYVvr+(z?ek>Zdg6p6wni)%sn%jvZN1uxqM~?oEt4`)qKk~bJC5>Cz zbv(*0mmSGtWd^0og@U=e&{H8iob1|N|4iiWHrhM;5 z)YoTq)kDs;jW}xRI=(pOZK|!rQKzdnSG_GtOb?I@HOv% zAN??%J`Yi!QNO7U6i0o1_E|mTT-%AGW>e8~%p2Phb-H?6)!VMr)aTZv+ne!sD6DlY z-7)+U-^o7l@SCFHM?Z|G&jZw3)NiW&#Zh1HD^Nc<*AC(wOV2THY)jPX>YY_@mr}E< z(Ou2>yA{^sq;z*P@jcAM!*7a)AN??%J`YlFQ9sUys2|5P=i*rBSbC0mV_Tw5S930` z>UlZGVlC_c4son;J+~Lfy3_v=;#iydKSCU9R*!q)SVy`ah}dhh?59|RdR`$v)`i}8 zEsnLL_aTU5O|{jY;=T04Hlll*@%JgL>-f@r&BXUJ6AxdXmmlzTEVS)eXBTngcl9~i zhr#-suQk3Nr<9%Dw2?fJ(QZcF@l zGw~D5#KYHT&CK6Z9Qj>+ipHJlI_PO;#uB6EY2wJydkn;pqxa{iPUcfT z^1J$UjXT42&@;`9B}UDY#F3-z5=Tx`?V~!GPyNW(e$%+KT?akK%vfU7JVhKiO~pQm zoTg%XGoSjAuX_<_T&yX57GBKS=6MwRDb}p+Cm@dVxh?x3)}7wxAV1cNJ})nhb4j0< z7sol@mF6C; z$Y(tJVPEA3cl8DGE_5CABJ=*rNxns6gLSQ09QpdJv6%7Hq=#VLcTwIYu7h4`K0rCi zH)(9J?k6UW{HA=L662{!55Zl1nY_zg2ff0~wj{HS!A!4Sg@vkYY&$&ylH50$iOgw!w{VO#WRPTmTQ`cmrH=6NpDy+}TOK&z4zr{>EeKh>&hw=1zh5C&8P5EB0sISLo^^kKN zCeE?+ob$3RQKzeKRlVCvO@01ddb=6_j>5WLEWI=Q62Hqn@$j3X;YUA=r_W2&XVh=1 zi^Wl2&*juZ&UJ)1$I^4m8`~0fy83R_yQkFD=ijCGn(^-|tZUZN`_053FcS~IDH?wC z!+83gfIqs&}sEGRs+hxEha z5BjkADD|KGfVMYS`$ru4O?97`@$8=?l^@*IkH~w}b~tKA-Jm_m-mG0pii2QQBLwBsuSFl?<g)ea^^kL&AkMMJiep~=&nS*MUH!7^y;5p+HTtR<|Fy#Ue6;j+Gx0af#KYI; za|itBhw=1zmwJo(dXJDe>g(^mddRs>5=Tw_k1URPV_Tw*?x~`BZZ9MhbOV;wd1yht4L z#-efhC2bPqRitR1}%K^$vJ_t_ACrXL=E(9g}MssH4cwC%xK7vjiosu#qJXaAh4 z{NS$sLf)6IgMMW`T{+2bXl!s(zUwdYoARB3jHf0&1b6k<^1g8$^jq^8%1M4rHG{P- z#F5{W?*n8!HR&N(pZAydz3ZSqnAw(OwlP?rgBC}AQ!y9gsYwsPy2q@%pIit1*^K{7 zVSQ#t`m34vZ)W1*H$}s5s%JG9%I-* zSa)qXzOgp-ehm4sW_2xIeR&;~eH&{{?}d;bYf#tX#j!5hvR$!u^gaanv8LK;81b=yh~|rxll+y&1~=uqG$X$$ z-^s~%YSKfn?n@wVWYqclOBS*dQ^F%xehwInQcjC z8-ttj9ifrmRLsSAYSKe+SC1iYOxHojGUJb3Sns8mj${_w&UJ-2$6hLqdG#D#9CdUb0M#46)a+_>0yF-Eh4uLwX=5fnk(qe- zP0{e9AI8(?d+IIf>phC%sIUJW)I-j7l{m-JbIcpt5_NPR0M(ng)a+_>5;Oj!!6n`m z*5^>9lbMN!-xLi$`e8hMzNOxxzU~Plj{5pvQvKvy*NAg0J;%JUEm24J0Z_duO3kiD zr!?bFRk$tjsm;WvF%u78?`c{yI_2Zc4Tpa7Dsnh>3)ah!@ zg<(ofeU3vKYgz9J5yu+W=bpr|?(~@>ajZ?fA442#R-b7SdmWX18*5GPg^(X>P@k_C z$GT|CcE#G!`w-;En$qX%#nb7B#~*Zh^L6S!`8REQu>LNKBfqJB5i_3sbFK1&yLtwB zGrA5sllgk(B>$ta!FsQqIP#nFowtmqCOrh}{`T@_aUFD4^9{;L{!4X&^>;3K0h0VklF%u78*YOAZ=!fz2`Gfk5`c3&><*2X!Dbz#Gb(=V9 z>NPrX%p2Phb#xy9)myC8>}qszGyW36CB9@~z3*MRl$m(=x{g2KM?Z|G&u`Rc)Nd-j z_c`k8e>C-zbKN11n)-iD9P`GuL>=7+K=qa>HFbSox~v(0xx%`xEnVJBd<8S{@SCFH zM?Z|G&+pV*)Q|Ha>c=t7xj5E2mY!qY*p{f%)tn2{dS1@4Sj&1(h&a}`K7$~Rb*K0I zi(_r-{TSj{v-(Vd*z2h5+gNM5rY}F%psv@8V_oQay*Sp6uGfoWP3d~QcqRSt_=B!& zzDxZl53PI52J88uIP#lnNHOEtKX)oWxT{x@x2o%)tC{asPV$Hv8{Cxdf{y&Ae5W+y zsYwsPUA?-zHCzW>(|nI|l80B#;HG?EbmTYX`=S|7O?n8{`&Hzv?KX0|1nZ47S8 zcU(t)Q!y9gsYwsPdXJ5~^;`#C-;BROVZE13x}ll)MrPvSH$}tO=e0E#@jOSdx<4`0{H2mI)V@$~th)^*fx%J-^AeZ3~BesZoy#8I=U=sD(%ZHYQvy}jz~ zP-=EHx}zC?r^32sE#28nd>1qE@SCFHM?Z|G&q1^gqkfzZQ9q7p&c(6LvGg4C#rU^v7024t`!U3^W_2xI>~&Q3ZLBrD7eaolLA{4c z9P2{wO%li2(fbg@v8MEXE%9#p;qeFE-TavPPaap>9<2Wh#F5`rV~ZKj{&`gS!Mgu| zyggk9-OK#Aa*`*~*kHZaR~-3G`ObF6Qtu0BxSL9T-yY{oyNa9iSs znu#A~CLX@7tqk~0HHPM5JadgHj`~gc-utNER8Omioa-5J)YNMo;+R*jA&8?+S0Ao= zN0gdfjUH*nKdNwB;zyf_A7dsSzFyBC@S`8b)92{wGwL_hDB`HE*DlmU&h?x)YU=eO zam*Xr5_P)zSk*hO)a+{Xcr*S9!6klT;kLw2G7}G9uN8~KkA4_WpChZcsNYm0iKD(= z%Thl%*9+ntOV2THY)jPX>XTLPlu}dI_ob(r@lPwP>)O)O&BV_z6AxdnPY(Fe598@` zRP`41<9vwvaZGbAj&;=3YqR2*H?}3}bT#L~uBB#M&aqg_dQXVFSmU}sgE-b*TaIt6 zO}!sOeymyD8$s-KRQ7GGHC@w}A8W8J^T)c-^?LcSc67a79BZnr&J>@eA0B_uv&}E5 z|Kw@3?ZNv0R2=zDHIBW)XRLsSAYSKe+ zSD!EM0@pz=G{2&pukDLtUcF{6jyn2&J=MFW)YLUu>9uD3>k8|>_tNXl#BVSY4`2V!4*1az zgYSgRPT;bQ{P!8 zz0-_;S7BYVmfme9evg@W_6vR)PM4P+V)_*E+LNmrkY30c=pe`$`984 z2jo5II_N{@_mz{ph{gst)q>*4Zz|?uJT>VdxT_zQ_lWDDkD5PFPVzz;8?4tQ#F5`r z%*A+W(nGL5?=SCh*Fm2!vn|PNW3WC)EROu9VlKv0lOBS*`bl|DxeofY8ULBWx_`d( zSu^qH%*4aj-_`-YspiyNjAyR7#8JPg<`zeNT^CRfIoBuRsHxY4#WAn07l@-yS3j?M zFO-_PCM$i>jQ>($eeaL-Wi#FQTi@3m4>-&rGl-HiW6aEZTJ`2Prd6L=fT?*D%~BtvGUMC}e8Gf@h; z_hp_*NJuh8relg6=ag9`^HV|+q1lirA)&cMb0Qj~B1uRQ_5ZAEt?PV0&$EC0yzc3o-uu4yKDb{DyVqEbs~>wswqNTb@lwy4sGH`G$8G>?e%up5eL`7>z?w52 zlR9g;+7``|mhv_7?ejU)QpD~z7XLS%anBm|TVpx?ov|EOKjvq)U+W|BQqP-EH_fl} zLG$aFhO%U=H7D+mfVEt0i{?p7k-4zN=fvM&g4MN*XF|Zb#&Itmtm_WHOApqyiRUrE zx@K`N9&GE#_pPoqJPQH8u0i}R0a(`sey<*^YX{FEfOSpb@1TJX;J@rYVt+9H1@#Yn zE84D%&&R;3kH>BSOT6^YVd$0dH+$@mB~fp15way-@ntonFN%941=DRodz zOZgeTLzYMEVdGz+349x3mE*CFVAaQCQkKL^PN{=3zV8p;5z8a?S7T{QU}>XrJk}1Z z`glyrl6c7}bx_9N)rIdj%Om!fvG{-Yoa&DsH~?_kY|&sxD+E?vdM|LGaOK??hqu^c~b zEXUQ4&*ZcHS|5p*dbUK}G=DtS46OOlF4Q5Ebpot8@p&~^%hk4M9{ip^^8M{|;`gOt z&l-#WoU%Xuk7wL3hW*!Aj;kM^rDXfHJ`ykWY>K*R{&=hjSo7nvbkrx5^#@pU;`4v7 zmaA>iJowG(%W+>G|79JCO)(aKPS3b!4V%kYj$dRf$JLL|cC!6iABmTGHb>nwzs?8E zuVWg@lCjpDxHkmWa)OQg7+_tq zxEBw$b>#b2*BZV%55KNK+>1xubzP+TcIn!|a|rP3n!c?kd*?z5$#7jNzMBOxhJk|xQ`LPe64xy}n!I~5ID8X8;wng)#rCf!4SNoi4DPrTs z;=jf-?ia(Rs^1?kV}3cVe!Q0ft6%FQ@lwyusGH`G$2x&Ee;flH82br0#7dpDTy2Zy zNlPh+pqPJc&XPUlf^BX3e$q9Fd-3q=y1?&Af_3fSIRvn-snl3Sa3%bgeOqj0_~Rx{28P2fz#D#v4^z^cdhs=yL2Ii(KD`1=CzRku81 zYZzYyP2dc~D&zYvVAaQCQkKL^PN{=3{=NWwH&`CAHI1b$fu)Vg@z_YP>hXOgu*6GF zse^J_%8l^dWO>BaG8TVr&-h(6*gD2?{AOc0u6|r&XZ!K}L6jx&Qr1wg=EryCz?wfE z%Y!yr-#9-?g%klcga$Nm*Pnzx5 z`bfOgb1>?r`SE>Hu;#}-MARXal^?7*ao-cHNMXWTD_ zZK8gEys7!+xcYG|0am}(N8+WP15h{3kMHV&H9zjjqCTOl0^krUb=GpVEt&_v1Au(Z zeNOycc-R)k;&160_pD)C8O!n3#&TT!xVFjmYkeeM>NyB?)BHLgG{25%C`-m#bK?Fi zSj*M6Xr8nbnF|$tPW&z$tgdA|69U#Xj(hQ7U3d5$Hn6TuJdXj^HH&-kU|mP}{Xnp- zP2W$t25~PQeq9%-zFoR@@EijCx~A~`dhjjyFZ++!w#J1}|G*ET?aH_>16F-JHVG{8 z(mw^ESH|C|hp(OG5!>FlFf@UuAyygR-2kgT9+R>pUUEtul<{}!;k(W9i0x=x1e(B) zAXXXoWx%S(_and(FFBvZvMvQ{ zPTcDOYq_|G0@ghEjSJ-K;dA1iENo9>@%QqK-|&I$Z7j#{HkRY+$2DQLU+W|BQqOUy zo92(l9sp~8T-Tuvp{x>M&58SEU@ceMqIvLp{>azY=S)ixdyldB`+3IwV%Yxb_s0jA zUyiFEYZ; zHU#pu@j3CkOt89^@k|I<*EsIQgLU2E_eQ|FHt{?LSl2A>#e;Pn;rF}1wl;k~=^Dhn zc=&Z);5SUbx_0m!0$A4+zB>;dj{ma%h`rbNNwimvN!u5KRTGar1y&92m7|S8UlOc( z{QdyqMp_=R_Zds99Fv?2z^cLb7r?5)^*r(fz2sLtz7vhO49g>Sw6Vm>G08a>tQvfG z1FV{OtTgfjz2sMYT1qD3vMi6-`;8@5j!Dk>VAaH9(kH6Ha|p;2^paoo_#FVmjj=pp z#~QChtQ?b^tH7$kvx{KW;GRD61pQTD)#La45jWoQh@D_8v2sjut^lhB-%$mtCLW6; zPtZ$#)#G;n5I4#4h@EUKv2sjuz5rGYzE28P4W4H}o}icfs>kp7Bkm!~BlclqiIroL z^Chrq@O&v)HFyRCd4gW@s~*4SkGMxHkJzck+Yl?qBl1&X6bQCBN$NI{=8AWqHKTHkMd9COJ2QRfA{S zz^cK$E#wJ$$*+2R-yd<0S{|{F8B44jlblLV9U`!5@O~3{ zf?o2gJ}qSd;-0iTViy`qtQ?b^JHe{K^BZ8*;2tsZ1ij=}J-%O$xJ8yn>|$eym1C0g zBd}_4{~fHFcud+G^paooX(>-5Zi&T;U1}`;Wu8<0@n?+X__M}xT>ZFjp6yRdsf_#~ zPZhB0F~?9J<#=ocSYzX{>0m7j_n@Iy#`{^Y)I-|!9PIPPVqYNti=I>c@t2I{_;O=8 zu72D%&-SOKR7L)fry5xGm}97qay<4Qu*Sw?QhzNA&pAM^tnHQhNj+DF~7T+ZVYgzG_v`bmrEA^9l zu7zD^EOtHlU-684#IPHT<@l?{a$NnmZ=UVf@d|ll9955JkWe4xcx)C}WAVLCu$G1A zF`!r0_DcPvp2J{u4&Zq_u+CLHj|bK{hUf9X+W&YS53KV9zn=rv@x|}wfVJ)T{T#54 z5&mu|So;>glLOXr@%L`P+CTVvH(+fSzN-%2g#S`Ev73#>|C(pqH;3I~EXQ9rmgDMA zOA)Jnd^Z7Y4|!^Wga2vtk8(V=7_71J*dnl&h390TSH|ZdV5x`HZ7b|HW3k)G|AuFL zj~@0-V>$kou^d-F?we=(@!1IShdeidRgb@If%+)NW6QuA8;?o-wXAqd+NG@RmHJ6N z--dn1SnRvxf6sHOKmNYwG=Ka9^UHDbr-)U5T1qXH74p;u2mdpuk8(WrELdZ)w}7=Q z+$V)zS=%f1lX~ue{m@wKPV(>aoa&E%WGu%&HkRY+$9?l`zm8YPBjc!gJS&CzD92+< zz#1EmN&U4f+#iQtS=%f1lX^Y?t8*aLU!&<+!kOVDWlr}}FyohNv%5`G=u zRDVsRZBO;rP&!6w{<=x~7SFsvujQutYa;C*JogB{whQ0U27ikGQa7=m8H@jO&$wR< z`-QO_|I%2Fs~`9Av;Fw&3vCa1BCzW5H$l)p%JJA5u*Tv$EMP4QpUXk7oR)GkSn45l z+YS4bvDiK2-|HFotYN=4mgD=3<+%EBA3xilmXbjJkjH^lkG~0m`Y6X^uYffcdoozd z!m}~ZD{FhDep1iwR30<2}>c^l}JwY^e5spk){2aU!4NdBKZ<9qb5KO4*OL&kDk{kU(Q?bq=N zd1M?_k7vwKALV##9av-IF{!_n6^}`~l(oH5KdI*wSe*lSZWF9?70+#gb&lb=O|bTV zs=ubzd6Md{qjh}o+$=QOc0Ah&)-g)+*Tvemc(xOMEf>Gn1lIn+bFE-)S8D7q_!s<_ zx`{nvEdF0Tr+WWUV>$ktu^d-F?&D|s(^49t?IBNNuLGPI2K&3Q*yH3s;TeCg6ZWLB9RI^uj;kN{@w5H-t`_o#JWau>$KNhN zeU#&|_rMy9a|c+z~c>>1B#{`lYKm*eJ75vzWD zR*bSjp61}-e;@Txj>kR#Yb?$kU@Z&x>!DZH_DcPvo@Zgt8H@dg{Qr8!J!`S}+vm6| z=a1(w_QyTrK0d7ab-Y3z8OPw4@l}q;-T`aQcueZAW#N83^vc>^sh`wy4y?`rJf95K zxti+VSLqzX^U3gQ|Ks^&u+9_wo)}oi7r!S4*0$sK#K1a6Y5skW_HC+vkD}$K`u8;2 zKdJtGjJ7K^mV)-?w0;nq%eXb_FUO>>p2FYq4*t(d{vUr14zXW=gZ?7K<+fO{7aO-h zPB|tyzl1*UZg9|l1rGW}C^v8(#O1YEvH6U}pP&4f7|Zbj#&SIP#j?MkX~bX1SdJGq zmgB)MHu&42EmF3$r9C**tphmJtrc-ga45G0IOJJ~HU@qY9Lib%4t2W~`oL|$p}n_& zLmd{Q--=j$wt$Nox4ZKHcn|sal71<;nCZ8HiyMDU{(ajBEXRXiZ18tP+e4n)z`=hT>K3>oIK+ zsQ;D7U&_iATiSRI>LbTwtYuvU|9C~;4sc83uHaUl(_(jmTbsWdxQ+2$;9HElgWDSS0N-ld6Wq?Y7r4FgJ>c%f{lGnp z`-6KL4*>Tv9tiGjJP3TZaXPq<@nCRY&uOtC;CswJ6x`2v7`VUjaPR=*hrpwZ9|mU_ zPXUiMegvFpJQbW}JPmxm@pSM5#xuZUjAw$!8qWfcGoB3|?>Q~@AMgb8&jqhAo(EoO zJRiKu_zCdK#tXo!jh_UsFYy1>=o$(^@dgI05S3IZ1o(69){}S-4#+PBf;M zUsr^!WLyRIQXCWib>N_pUo@IiHCh(#!J%G(B~J6>eFwOd)%hjVvk6{H zonHhuHIAbW&5W-BH#bfNw=gaPZfRT=+{##Ts0PoLfYl%O+Ta(B=2VTAh5K=+S73?L z{J3TYUuAWE4)tt}*HY(a!EKB$Lmh50E&*<9d^z}5<14`Jj7x&s8%qw=#C>k{$GtZA zMWZ=Yqh;aV9O@NV;xvEUYvWeuji_e_E9-UeZN^){9gVkvZ#V9My2-gp+ISndvvEgo z7vtN(a;_3hC$OBWaQ2LK2H$D^F5qs)cYx(wCHk)5?#6e5dl+{E_cXo>+{;+%rJA^J zhx+4Q8~oA^Ei3NZq51J#DEXz`TIaZLx7IW6>mK~lPuljl?2Q6gwsVT z4bR4-Z|}ux>HpurBaDxMM;iYQzR&n5+CD1i!5N;@V#mOvgC3k|d>ou*d;)yG@k#Il z#(#jvcutF*0*^KSpWt!Ee}Tsvp9W7bmU;z^v?KUM8~oCaP?qRJekn8frQM;Gps3-?pNp&ukp`zHh=Z$Bcgf&oMp-e%yE?+CJBK6L_BS zX7GID*T7F0ZvihbejWUz@mBCc<89!ljJJaq8NUHu>^Uv=CirRdzXe`mEcH?i?k$4V zkNZ&Mmv(4bc*X{-`SDy3`K8@jXMElT)_UTZAM#6nZ9DG0g0;PI-v_}j~+Rss~d~0VJvy14KkOc4#6*)P_EQDf^2$`5*p)i$R2@EViDpSgvQ#h@R`IIn#VOT+dJksZXe9eQ*Q(mpY4WXe_povDn7O zVw)I?ZA$)7e<@#M(|o?rUMWA6CFM#zq+DrN$RjyJyPAQUn?`I4W3erb#kMjQ+uB%c z8)L~GSp1>>(v}b_dAQD@EGd`kEOnAP-vZm#SnRFFV%r&uZEq~LgR$7#j76huN%QRs zc_e3OyOb&ANx2foZ3#Ige`rfb@a?7-+sRmLXJfHljK$tzEViq$*icU?Cul?;+9mbZ zoN2xsu79Y5)F;&cPH;E;m$rz#%UEo8W3fGq#r8B7+sjz=pMJeeKYg7`5*r+=D+QK{2k3N zbC~nX{Fd>OImZ4lPhC`6<4mx8jxU-l@a@L;gI_Ss1K_>JW58b<0;_$_%C@LfxX0dDr_;;q)Y=BH~n;QA=Au&Eo?j! zwutd8*sDxG8+^6#f535Lx#uYTE9EYOPx@DQG5pfM!g4Q0`d9clXrzCIp9f3-3U`4< z`d2tNu63n0jZzu+qQ6`Cz4gg^NHh{VQA)Ed48709N`JoKg^0`d9o{LL>bvTna4xD_j~Z{VQA) zR{B@C7_9WKaB*1aUtzJ@SGbl2s~+#OvNdt<3$c=0`#Bz42-Z5_Jr`KZjeDQgCm!pB zdu^f5--0I8|2eR=E7lnr9V0x40Kc{!&zXa@Pw-w0tm7W{_0|52`@YmZ#Ct$!v~TfV z53F-0?(3^#g!gyw>$u>3C0NG`pDCdZVXS4G!}y9XjJwQ>PzTAa^C#}-j?S65_vu_h zPRzGQp_6_-SOD(SnM;#VnrvKA7PgoipNmUaAta*FH+2hA^QPS%q2`C?dEKf{$bo@UWEA|?FjQk=8n##xVJjT;(o4$wIKBkb4=!An4e<9ycHY9 zs~hSQ=B>Ljt zxxn&TG#A0jYhke=r{t4kAy25klpkWHoX}ohU(;U z95;VTMQ|n4RECw;h>cZ&mDj>mVdb@OHCTBqENu$0(vA=-aiPvquMjKchgiuYb&@>S z!B#h}0V}V?e?6?c7QO*iUJKWRmDj-^a*AK_ieKVF{iXa6EAX4BM#mDi$=VC8klFRz8g7s?WCsDtDPb#veZ z{)=90J!7%;jU``T@rSZRAL<}^Lfxbt4e&qIt)a2xXk;wMrGG^u$Aeyu2fg%bW79}| z14}tg%-!6V}AS~;J^|mfz zverUQSqBm?dMQ)Zs_+lE*1g48t{dAL%k^+OV|g#x-dNr<-exTCB|93+d(7L7r{Vn4 z$@md)XU}neP1MEwd*Hvr{9;2LifiatPS#P@_u|T23D^5 zB+pZ@FBrcE+Z8(Tzf8Oq{G4glz%DhGYv*u{EwSA!Rz9b?%Qyr6?#5E*9>$^#8u5i# z@ddruJMmxYGYodPvDn_mV(&H~8N1KZD7Y|w~aj)|rZY|x0Wula|-4mB1#$ao;E z9Fy2|*ulnPgIm}vUL4louQa!L+47V-p* z_(D!$9@F5Lu?uC%+z7E!rp^=XbA3;Q`yKGFLyVLqb0GA;^xp>a%RC8vD|M4OA$oZ~ z6zVMVA@rg2*(;`zK9PAN`t|UIzPca&k@ydP%4pb8#u>1g#^SrrShR9X^jWYHFD%C& zFdp+iEIQGMHndmTs^#MIF8HO7pz(d9`ZV8eEi3NJmwL;4C26mf<=dxq#^-g&G1l@- zgdJ}@0d|tH_{JHFR*p%zlVK%ZSdKqr{P6#<=tLv2)^EN)LLRA0C|6>oZK9VpX>6MB zGcL>e*0(8?I}7?L7CRkws_`_~8OGv!#8|X)Ov;)GEAhf|e75m_{)a^;8i@<_7k%g- zsY{5JvO>Egcc{PgL#U^;SIUr_(pJr%7JCBxsQ0JE=EBbLjPEGH&NILG9y7ma`Q@E`e87Q)JF;U%z3m19rC%4?~^OR&p5$5X^FG2)lFpjixF zX8vbkpHohG23B56ez96s+?OlIuwGJLfPGOlvFBmswd5CTu`$ugu~45Cp5wk=D~-h$ z>LB%zdP}*hU|;qe_qR^8&gvxpZZf{qSdmrA0(ILTnoF7c)hXsULn?UQ&S|L z`D3EhI^fxLu;h}Q;tv|BzxGdRinJ-T{Z;S={Fi=^aWGC1y>dK7Y-o#&m&Ax(to9Z5 zG4N*dZ-kZCqIn&5t8&T~Sa~gV6BeClL~H)oYv66>e*^YS@H%77mfHdPil(fP0% zG%^N=O_6rUYhme69gBF1k;fp#RzQCBeTKAAyy4ymOBohLw0Z7fYP#@qGd4fAxOcLj)f){vB50CH6O1 ziI-T3Q++)47x=XI?P(GTfkUs z$SJXf%rCZ}vDlDPVvCqxY++-uA*b|%%xReqG7m$a$e0Gd^qH;;+zSAQv5UfplCy;_#`iE2W*;?sJnKGdyI{SNhO<-l0}xU#}T*f;P$Ct84yIxhI{wvMfP z47s4sArs?4Hc#|Hz?yl1D z?qT=dJ?j5I^M5P;x^}ZKNBT2%*+sF?zE+TpMH7}xE)lKRxFsP`^Lm$#=FHjPx%!K3 zqm;F;dj8<`rqO4mwkByl9#K9TI%Bo>&zRFWx~}D#3&wKJum2hs4gPqe*N^*lRP^X> z&CeRn`Rz{=qfX1$dOgQ(UHES_=WF%P=#Y{aJ4kcBkpI`H{P0a)U-*xoqYoZg=b1Hs ztV#_cdDN?RoacHyEJ(?8Tzxc(8#ozwN`@3$uAj$>JKa98do_f-EO$JW>lfoLeCt_ny6mwXj|1Myk=>+s?nw0mU!m5#Ic-{$C}5H=kO(%&+8gK z=5yv~`du{pFCCY)TRw`?%ISD*th+thnt!6#bjbWVdn{P)AgZJVMF zHa|I*nKj!AJR60%&3(&#Ql&=M?Eab6?zZgp#eK!hnrTny&Z*po?~BnW^&Zl&I^l9JP~cObIRY79*l0b zb4}w%M?`h)Ji?k~u+dNZRocAnx`o@3>Q?}(nTeT>`1^NKa!o%u9sZ2K6u zi(^^S_k*vaX||7X+c}mskLNrXy=nVc(VxDLD%-xtvCOP#a^E-E`yTf#_sL@P&uZJp zj@6kRy>90??ki^2bbf16^rW3PYn2`sjk5D5_btb=CP$^=(M~&W^4M`KYyNn+NA!@L zH+cUryI(pPP5AIhzh};zpOQGbP|rIv_vTG>+_=d5 z9~^Z$do2D-Gc0f7ufci^)1zXsM9IF%v2A{TGAd#Im)k!Qb+DYBmSjXntgIE|rbH(# z4{NGb?3rEeTeCYwd4RLPlG zepJt!GpX$y%No8m`-+)0e2p>kQ0wSb>o@LOj%CfJ zFYb;$uzusQ<5<@Gb}Tb`-ujK#Ajh(X*CwxVo=Y6dIeDyk9C;4&-qLf+Pto_~9`|!* z!I*ENO#}5h`S9t(QNCWYy?<5wMD$dB9e38u`SHuB{G)okUG>xNqmdK!TJ(Ie?5}_C zspyW*di~j~z(3Ki)%E(5HJmf6=FzC;!fC!f9Lw{c_g-!n&w1AH-p=jfSk~~lgWJxr ztl@JLUl(yKGi&&|i~E6@HGEyieZ|ZgzHa3AEZnyo%Nl-9#AC;?tl{@uygzU(Yk1$_ z{fFlv$8t^{YaU0A<(#|MC8BR^{x_^uHQH$N|EJ20v*-VS(YHlU+Wcot&D>W<zZzw;apN8otKneqd$|U!QYdF|&rRG5Fep`<7!_!`C)Eb{xwZzINh$ zo?}_V`#+yYcph>r=j5^GapYLeIqk=hQIl6LjpXyUy&v|Eewlx+uJEbp6QW;xeeU`4 zZ>L0?ixf)IyjQMsbma?QdQJPe{i5IATbvYotkyI zr5RDl&Q+5%7iHZZ{XFRs@8`C2ENdQa)G~Ul-x=RVZac@aruw%on(+P)Uf=n{2GKS3 zwZLjCC<5<>g%-9w6xv_%R*XX!6I{Igcq*&JMS@TI$ z{9sA1k@++GhGN+q<`S37IeDyk9C;24KTzs=pL1NLiczoE-tqnXV*O&#$49^M+_Tj` zb(gn!*7F~e%0$=NSg@vP^H`MiWDcLF%j);*?(O`2QtZwqtFp)F$Yl$om!2Qy^()Fg z7tQJ1(es>nYoboWdU|F}`gOCS;$?61{?X4Zj3%#XloZQzY~S?i(M4;1_jTZQ@w{S9 znKSVy(LATm$?f7;)?E60k!Z_U-3Pes9Lt)_uX0C4Z5(G;_@!rS_E z=f34Wd7$1S(GVNQM4NfpYn=OvnKg5cEzaIIdUkp?YVpyHNqx()tT`N88EwC~q1W@+ z@tCrvQOj4N@%Od%dR~JZ%NkyryvBJhaV+QLvF35)Im~;@7t4;-4SVlX19D~W$*DJe zRJWk*)w3}cVcoH2U6ISO_vCVmFN#XpUd^#GMyu@H@${_O(KmKZS@G(k=zyJT+Ag0T z)w6RDYld}L9DQZyl+{z8kBZs3hGTh-z1q4!ly3VBw~OZ$YwmlkMD{+$?c!M0{Bg2O zRKxa3Zac@are)`9(GJ^V%MGj?4YB>1W0_g=&U59m_YLk_?vq5P)!F;f(O1_-SJ?T5 z`-+)0W3OAEeQxUTz^Z7So!7W;IhHkZd%h6;Xy;8HJC0?|`ije<1$JKMHOR57;kC(Y zoaYk9a!wv=9!H+TytkYy&^UYV{rJy2qNTPcw=6a!T5Wsv!)sbbXY4%7nwrPbqp7wh zryZLZm9o8>W1qhB&FnE6JMD{Tot;y*j@c1?W9OQ$^KHvM2eBsQ-UHEhc1}6|_vhK? z8jj^Tw)ll8d!ONU@w{S9XV)fr-}W(X7ss-u-^@FscD7G)+c}msd~L?(WsYTL4WFaA zZ@EwS+JLVCxUZO5!`B!ETYZ>)UgN&ySk_El@>bNq&YL`T9Lt)DonMR2t=980uR)Gw z4X;gJ<2;u*mUHr0^EmPx=Dp>;Yp#!0&5iuI>DIO7qSg26b@FQqZi*(BFXR1(er^yQ zDXiB^teI80bTobWRbDfzZRMzBJ-tplUo88tozyhy__baK{&GpX=-wsed>+cMZ}9%Z^N?dXCyzCcBgb;iHdEfop2O)) zwr9`(TJ1Jw&;K@my&jdaxy_o@Gd4%h+1iP}v^INug| zIA?0f<=Jb5V|gFr_fXs}-n&@C@6otj9LpMh56ErjSk~}$EMMPpEHi8P`kDKInKgWU z&V9wq8otKhYY*;Qj%5vB+wj-L>$g!N0$C}5HV>#zv`)Wmv zT7BjB)v7bEh)VYT(sRLTS4TgTe8+S5cU%-5elJP$`Qv}o?Q{H7@Bh5=xw_+8zInk| z&iTxTWuvEduJ`)Yvl>QC8g5LA<(w-__ZE{Wc(xc`E&oU`kh+0poYpLqSZgJwlJ z-*_u2mUI64=VQ^y_1}06$8LS)TK8V*CQd$c%k@*LJ8^d-&u!;j>x#Fn@45Awa&Asz z^6PgitTHB}F5a`PL`3g3D^5^ONTx z$8t^{YaU0A<(xelR&_uAtYfsaLKT;9MmJx#Tw^P_x4Pfyxz&owuG}j+cC0!0XC;?f zw!7E7errY7JKtRwjOCntzNp~F)zEUw=c(lSKdEEQ8qWE`=JIaYZmkc;@*ImDspht) zX#KfeJg->u=4Vx1k1bkfZWqV0=I3cuT-8oJd>gs#9Lt(3F^=gOJ-t3J#(nFK>eao?|X;P`YtC&;g z1CJfYvZm~?3hvH+x=->N*%dXv7GZF zoNJ2C*PL(Q98~9f9czx|oGoy!Ssrigb6$*d(4^g37SFMM*k^_}?d>((E}mDc*^NCa z!`jPj=h&Lq>yB7^mtvp%d6Kr5+s=K$n%}X<9(YCTnFIUt4f&NhmYFp&MrTg6@@?UM zU}nu=oL@>WZ|U{iSIn$gj&oC+tQKA`=dAhfD|6p+ENeF4oS3hLmc?VoW7;0)*17q0 zJ$A-$O56>lz<(xd$ zJdPa8IY(g*pZr4Kd$z*duAN)o^H#m|~2+t*s<(xd$JdPa8Ip-d1MsZKAg!^=Oa_rb5kz0~euaS;rC0vUv zT}PMKt?!;2tn>fHLiOB+=aMy7cd73l`ddFY=ySY*n>sf+_PJP7chzhy_tGaDyZ$wF z4RX6~Z{E~3IH;d*u%=axMs9vhec#RP;#k)FFtLHlaks8JZac@a=AKdY-H|c+zH-_J z&egj~nPZt*BmMTrRxOMBmiwgsvyI%M&vd_nXrtd?KVy^aoN8g{0M;!{) z)9Ve^NdHuNQ8jVQ)hf;Ox`<=DrZvkRqxE=yR^PP+JKt;KKC}03yaqXzHM}-? zjq_aMSkB2~&Ev>(nD>@un0vnr(Q)aBIXSkGj+e~CXLIU&?t(ddsf`6|?!%m{HeKh# zD9qJSY00rNMh_g)_50hQ)^7I@{ru$piY?u!`}OmX8*gvr`Zr3}Y`vtVTll-aAIZG8 zxtrhN{}D@bYzO-JyT1A!gxkgQiZzd69AECO_2+hRENf&Aw5+M?h1<@t|E0kkyQ`$` zEi(7=_fqCqX4Z5^zuo?o>bY;ZPZnYy8-KZ;mu26(x0`IyaqXzHM}-?jq_aMSkB2~&Ev>( znD-XR)8=12&r1E>+j{+Q9CP)%PxQJ-#^UBK$(k(8$*X@;&34Sy((UwmiDM_?+G(tf zQAJ!+6ZnHT`g{^~6m&MjU$|&9N%z=l9m@ zH3qkf=M`&YjABCGvxXvF0HltCv0izX5XOmiZxZ=lr^4V^?&$&b{?dH*wQ9>vcG5IOm?H8@liIX&pG0=Rfbg+%BH;tl_<# z+r_c0;d2MKonu+U*FSt+#Iek*;p;B$2WHmrbshH=Gi&&|k>9g$-*PN#_&pJi9mleU z-*fT)z_G01eS`NOo`)REIeDyk966SAeua7U+1+|>x(jpo>^{8?9E$lr>y%y}O1qYf z)BS-pGIpnM4I%fxWDblQaN$_aIT35BY$46L7W2R2gL*z?4d;}$w0=asKg0V(Zac@ahOcA!`j%svS;N=Q+z-sGk#!xe;kmDvS;N;D zeC@$~%dxDH`4g^xcsL>_4&bm^Xk1@-9taTo}?+ayp=1}oKi#_8`?v4(T5+}P5+-$#FMieqb+zQvW@zuVVg(^qZW+FJWO zpLnd5t1|3s&vj0>a*GdtnWQ;$R~z^2*zdf5RgG3|_33Xf7|S_pv}@rOzqr@y|N5YX zd%l;eh)b_xS_l2`?%+hvm3jY50vqIdR=|je(1GH znqk8myH8WD_WpZrY33$xOO7qzZg3OLe{NiLx5{!Zx~rP&W@VM=Ro#7Td04Y}S(WT^ zbN^o16}EbE?4xTE?#@M8?xI@t+&{;(KHRQCy%X*~BeadIsrYw&*YESIlG??wthwWf zhHm7;rM;fp&i%%kE4MXrhufF(`gU`gxWP-5IhL6t#SFv+5N_S%dxE4dAN$}Z~ew&$FZzAH>Fy3zx_3-hD*18 z;8@mdU3Fb{zpWcr(|u+Az;lUXIVX=bk0a0F#otG+oz3SDTQ+f5=Pv2TsC3T8Zqnl= zJP*m$%#|B)sb?9B$+upSq?uW!p}XW!)inCPkt?yGXj1ILnrUu%)w13{yjU6c#L#Oz zzg0ZVC2rBV+Tmn5x3-=7S+i@>HO@VzbKue)W!=(mb^dTH&#}!#8o6(FYFoHnJg-<& z{!{~Z+a<~E;#k(ye4)N8J5c+F+s^&Qn&uzhPZRfsXX3bk2)7!>9{o9aI@=? zOULWrW3^quoW->Nhed9%jRk8ySXfrbRxQ`o<|oH8v!>FVn(lzjZSGs{lbdT+ z$?l(BYbv|Sw!XNpm|4@JcV*Yh)@I_Hif+608}}{8vSwYW3a*p&8;>2wvSxBtIoI0y zjn^Q@vWC|tuW_DB9LqU*ta%(8(H!QzWysgH+#=gouer94yV>^S56j%-=GtCe8Dmk$ z_F>j6&sEp0v3>im#&z8Dw$F3y!H=(V#qGRMT~tpVsqWnH~vu^&7gsUG=DQ z-G^W4_r`q(BG=^^JwLK$UjbZiFV+3?u159U-Ssrj`C{3B#XI%fqB438?NQRX?e+CK zoHd+tY|jSns$aD}9Lw{c_g-!n&w1AH-p=jfSk~~lgWJxrtl@JLUl(yKGi&&|i~E6@ zHGEyieZ|ZgzHa3AEZnyo%Nl-9#AC;?tl{@uygzU(Yk1$_{fFlv$8t^{YaU0A<(y^P zRn4APudT1_p0+u;eL^MI!{&d^8>(c_ZPw(@SINC$^LE0g6i z2hLS;v1PiBSi?EHufz8*Y@Ko}?_>NPird9|7i;)E8n=sMS;OxEx$PXw8orL@>syXx zW({9Ib3ZV%hOf`Lub5fG*BE^5!F|iItl?`L9y^X@4PQI)KF_hN;r*Y_BRmf|mUHr0 z^Eh%W=j`!hOE+hP^PeN_E!@%-|EZ?uv?p4-v)A0?y{DNBu&k?Tey2FR#tz7 z)^6rs6)qUdIq$!=t()4lhSyibJ^53Y*G-DuOF2{K-QqTWSl(+mHoZj~SGRO`?{8GN zjoUG?ujfr=Te-Ql`gq=TUn`fG(k)4I?~AQnon7hP|J27V-3vbsx?n8ltX#W=D|)22 z*PnQ@h3mBV&ZJn*`R6~)U90v3y@q4gPb}sNzI3NQ&rTg#*wwj1?_qWRxsbc}D!o6I zdTlWm&Fqq-+1RCk+qqHo(_Xy9Eqh7z=Zj^3*)E0LGvDdGztj`g>TDzEQzC-UvymzLMYjua-kJvt-kh{HEzcw;a^=qv^w}tzGH7n1IPBeM>3Ljgi>A1w(g-Uql*xp4ZC+^vN zsrS#>F(vW#Hf63qw~IAJ7fw&~>7+R;r_D+f|F)#h!?D|MoSk@o-PPVdWzwv~?)S@j z=04>9>E3ikBKKL{H&UN`BvJ2i?H|^29@gYLIyt*;6CTr)0zDeO{Qx7 zhaT*aShQOC;oo~CruNkFEq1P7V*hGo);w0POCqhk>TmtLbK;?qsySaQ`%fR~k$88c zj@=a#`Xw%(q|6%5`C8L1iL)(L!?9fdB8!G6QWsw3`~Tl|^ z{-6KRBeDN=^}p7!OJZXeWo{QUYx<>jNF1-F`G38&ZDLCyEtl*3YtCB|75iQ3>(j7H z+r(wZFZaxCVP?&Q>Kzg*is;-s-LFex|DQTzQctqWb48>6dt*=4C!V_h*TZ z2PX!O(>#5j8=iPzY;vEUFP8OpoxL}aCnb44@Z4Yxj|Gp>%~kWb8_WITzjr^pQXbc( z&=Jr3iso@2olyVPCGxlxv1CoTv^;L@N!2eXn8%&^@xrm3v)P%8U6b9K^FRMy?2aEl zoK!C79Q)_RE`6)!=hzX03b_U4%J_b+JEV}Cx<>b|j~^=J+H6yvIkAx2Unf~JX+$CS zLp{|LnO4YcX?o#U&UyFZLhh1XsxP&mkXu_{^RtF?R#{reo$aD}jxAh0r`vGK`L_4H zF(*E+uJ3tE>6~uVY2^`D|I9?ri;?y*#NoUE6P!&lk)7%Pz|43RiF7 zb2d-O>8|Up`B}p`2jYdg69Q)mR*{z$Sr+P>)i3tLhicPl?%>9+m|J4 za*iwHx^LFDKQ$M;Tlsvk?EmMbLT>XZ&Huu)$iGeVvxal-SXs!ud#$#SW2+a=<@&rH z`T4V`Y%aI`CFO4AbGcPH^_q4`(Om9@qROlpT056J^R((qCUUv;Code!IZId0UHHVg>$%t`J8XptaC9py@WDrN?)DB<#|Q*Wy|DntIl0GmUBK{EQfphHqALV zM-F#mH)Ymv&idEpa4$4g4adG)>r7%wFZGYV;Y?!Ui^|6eo=J>as66u0Gl`DvlQn%R zpGj0auKxac&LkEdx^OJ#>~`pMB7K(XNBw>}@otOcSk8I*!PAL8U#W&;hy8UnakQEG zpNpMK?3|%|bkEtuKMRyQe0DZ5<Cw70W z`fu~@PYnDaIhJ!CZN5LzeWz+Tb`AEKqu18=_21Vdznfb{`S*tT-DN|Si(HSje|NHG zQ^))+URV7ecgXMF&bn|c=gd_|qDwbA% zvsfOtr>t_Da~Hd{_b7KdaQ;V*JN_CrrqXZ?u%2k zee8dB6mu*7Q9fTR`~S12m}}NXa~}Pon2S$OE|+sY{B<$cpnz&P_PW-2-Qg>>?O(Ue z>sH*M{IkpJCihkTy>4E&x=gZWSG&CKxdrOq-ypB+^5TVKIp^`Jd2#U7s4s zv7Ga%8hKsWHLBs*o6z>P$MttL8=#+SRVnVTX7l`{GVZ5ju!QP)}&zU#CU$J7>oxF<_m}T8)a^Zd`hu~X^WxuzxEjk& zdi@UthPwIvH9u=O=V$wexDzM-@_LT#nK{D!@#%c;uXE8zH|n-0JP$cC!hP}CQ=TVv z9pPpaRA$YzsUuzARtvnQYt~3t^@&9njOCoqemcU{>9Ex6+qW9wZo6|yQY_~jbLU9+ z+UKh0*guwza;wtyedVoJXSh$M>wD5yYG%06PyOa|KDK6*OK-3J!Efc8zkeayk~Q;hZzx&Tz9oIqvlw`@xP;?t!7&hohTk zxZ*!5Uv_oVNx7Z!UyUo88VmCA6BVo&QMn=ev#+d<%YTf2XcFUWBm}f z2-2CbvdOgSPn4ak#|Fxj+hu7z4y1^X_c+PcE zmRs_a@+-$P-RsQ?C21ah8UDBPdw+)#S?xZYdGiLY0zh?hGScQH`2A7s{Z$;jC8g4D*rZmq^mGM>vQ6Zk#1WhW!5aKG14u` zrE})cRU_TB7gTe;SoU8!V5BSdx3<038zbGykCj=&IcF6g>2kEte&*Q86SCZoi@N%K z?2lSm?zvTWdTv!I%k|vU$@7BIS+2%+wQ(Z#ot7i{p5VH>|atk z%k6)=z1Pp{m*qy+Qf3Y3Eb?il>-1#@ujkkSgRs-HdH-8=vs|qLe_t?`bME{m)6Lv{-0Q#pBGY};`A||U z=iGTL)4f#jtk-bt=bf|Ml_m9@d&$X6*Z8oWySwDha#iZ*^y_``kSy10iZW}inwjaY znW6e(3o_mBf2Mf-`C{4s?B!Xm*xVdm|7cd0i%uxBhI8&)o$2b|qZ*FA@$&xe(672z zw^-ZH6>6?~#hJzZ+=-`jZ>e`lf48ZlGHb@P>F2%~rTVou^>ft@spfpK?0;!SKlj}! zy*?TFM?aVM9c9*V&aIW8X{Y-h$9C&G%0(aRx;VRWlsi39x%K;_+{-`fdh9xMl>7Ty zUDvFsP&mW=(N*t)C1nJ!OlW!AhnE6c5&sMk@?V=Y`&Rj<3w7t8*B zS7*7RnV)I?4>H{YcHPAq&N=tqEO*%ls^{3o|7N;cA3x*QMb0K!uKZs88(7V2XSuDH zz3lx1f6H_m#;i=zjD94`ef#H4&MfKe(ibZ?dc3#mbxhws_HNzVJu*d^H3JXzcBSI_ z9x(o0Z+CS^eeZd`SoS|OrMGM7&iZnTHty}lZ2j9aYyKLA#^o;< z%Q^F|L;l@Wy}tNenQnJRwWL_iIVdmAr%S7N4aXk2G{e=qLhF2BK!$sFqw=7x8E$g~qAulYIlml;{^yZA#swlVhb zO6gNP-&rTiRm-KkplOynwcx=d%{wEr+|pH3y}xvoEH`9;^7&%fKOEP7wdX(VV}Cz~ z{rPsy&l=A8;SZT^%ukPaJ;&z6d)}Q>wa>pUh&}uV<-d{hYkL+VhHINWgS73eIom(W z6`rPjc)P=Dh(YIfJ(l43dMi56LIPgm7*?B11`Zq*+B zylzc_EVr+QeqQ(K*-W>#!9t&NH$De=b(4NB#G21=-FtG6>UVX^a+}^${rO_qfBctB zH?^I9zVyiqoPS@?&!bqwId?SAavSXPD2~lQxvQ>N=j&M**O@)Xzv8*rRp1lK#|ve- zF};#C%`&pwqo-c=`WiT&)|s&Jg0Y;l#EwkYwf6?E-@iT6l|82US;IMB+=pwJ4>do> zEdpRfNj-95WanKe0Dq`UW~Xl$MK>F(vWsySaQ z`#Y{lcTs)a^9RHRyJ>cQVGZZp)jQpFE~R>o<@!I;cd#2iM$Zw;Di3y@AJTKv!+X-* zrUH8XxvX5e8#7z|Tz_uY;0My(Yo=!n#|}6+$Q^n{%PR8bAa`Fk?S~(}ALPE9t=HjP zXKqVz=<^@dwy=g{-z}Z)&ONNx+Xn`xXMaZVe(GSicZ~YE-?&fy{ow!fIqx3q1`p8s z+%b8u`)*BgpL0&pG_~s%9(OK_^KhT@Sa2-oJUKhvohYK$Y3|c>cY7Ph;x( ziRo@{K4sQ)Ejrj`Zd3iPe1qMtH&k=JSoX&^r@LFm{^Qq6&im6{r2@*V;hg=>rn^@* ztA=Agg1_qH`WgF;`3Jk=Gj-3r?A>%X^N8|flr{U)WX(3zzyECAC!ayvXI`ZH;rU|O ze+qqaN%Nz={{2w@ElqSkXAS4<`k!=nvcBf$*dj|txtpKS_qiiWX1EV)DfhlE!&R@T z?}b~uJjxxIs?3@)k7l@o|LS|#`&VYTG5hpA_4#7ie`}Kr_n+$enfbH0M=++pGHW>J z`qwgCxi|HFJ;&ZxDZ_1Sdy(&l4{PC`#Tfle;N2A&Zf2f;{riji=V!Pb2XZHAV(l{A z*o8;ErYP<;WHmqL`FyeL-%@t8`~Ud5?(m$lubYUFB1NM2E{xtw-m}#pqDK#ch!#Y& zBx8&|(TUz-^lp@h4AINz4ABX~Xk&~~5~6+Qoc-RLMSebit>->#@3VF}`?fdNy^}WD z=M3ja^8G!l#>hdRd8$Oxu_3Ruf3(f(8A%s!bCjVbo$XVqONe;OWX#Um}5tJOe|Npf`pQ()^X!>?O*UypH_A|oSKXTCL zPTAX8-X&=NXxr�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ⅇijGJ7Q$L$zn4sq`&{_yCGw%__RIB1Le@u*xY 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 z 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 dNWbbbW{@~!&uHPm7%D8VNZGJLB\'\"|?*&]", "", preferences.ANIM_Subfolder).strip() - directory = os.path.join((preferences.TempFolder, preferences.ExportFBXFolder)[preferences.exportOption in ["FBX","BOTH"]], subFolder) - - arrAnimationObject = [] - - # Check Subfolder if exist, if not will make new folder - if not os.path.isdir(directory) and subFolder: - os.mkdir(directory) - - for action in actions: - # Remove invalid character for filename - filename = re.sub("[\\/:<>\'\"|?*&]", "", originalName + "_" + action.name).strip() - # Check duplicate from arrAnimationObject - checkDuplicate = len([obj for obj in arrAnimationObject if obj["name"].startswith(filename)]) - # Add number if have duplicate name - filename += ("", "_" + str(checkDuplicate) )[bool(checkDuplicate)] - - # Check if file alredy exist and overwrite - if not os.path.isfile(os.path.join(directory, filename + ".fbx")) or preferences.ANIM_OverwriteFile: - armature.animation_data.action = action - - # Export animation option - bpy.ops.export_scene.fbx( - filepath= os.path.join(directory, filename + ".fbx"), - check_existing=False, - filter_glob="*.fbx", - use_selection=True, - use_active_collection=False, - global_scale=preferences.ANIM_FBXGlobalScale, - apply_unit_scale=preferences.ANIM_FBXApplyUnitScale, - apply_scale_options=preferences.ANIM_FBXApplyScaleOptions, - bake_space_transform=preferences.ANIM_FBXBakeSpaceTransform, - object_types={"ARMATURE"}, - use_custom_props=True, - add_leaf_bones=preferences.ANIM_FBXAddLeafBones, - primary_bone_axis=preferences.ANIM_FBXPrimaryBoneAxis, - secondary_bone_axis=preferences.ANIM_FBXSecondaryBoneAxis, - use_armature_deform_only=preferences.ANIM_FBXOnlyDeformBones, - armature_nodetype=preferences.ANIM_FBXArmatureFBXNodeType, - bake_anim=True, - bake_anim_use_all_bones=preferences.ANIM_FBXKeyAllBones, - bake_anim_use_nla_strips=False, - bake_anim_use_all_actions=False, - bake_anim_force_startend_keying=preferences.ANIM_FBXForceStartEndKeying, - bake_anim_step=preferences.ANIM_FBXSamplingRate, - bake_anim_simplify_factor=preferences.ANIM_FBXSimplify, - path_mode="AUTO", - embed_textures=False, - batch_mode="OFF", - axis_forward=preferences.ANIM_FBXAxisUp, - axis_up=preferences.ANIM_FBXAxisForward - ) - - arrAnimationObject.append({ - "name": filename, - "skeleton": preferences.ANIM_CharacterSkeleton - }) - - # restore location - armature.location = originalLocation - - # restore "UE4RIGVERSION" if exist - if rigVersion is not None: - armature["UE4RIGVERSION"] = rigVersion - - if armature.get("UE4RIGGED"): - # change name to original name if armature is ue4 rigged - armature.name = originalName - else: - armature.name = originalName - - armature.animation_data.action = originalAction - - if preferences.exportOption in ["UNREAL", "BOTH"] and self.remote.remote_nodes: - # Unreal engine import option - unrealsetting = { - "folder": directory, - "files": arrAnimationObject, - "subfolder": subFolder, - "overwrite_file": preferences.ANIM_OverwriteFile, - "temporary": preferences.exportOption == "UNREAL", - - "animation_length": preferences.ANIM_AnimationLength, - "import_meshes_in_bone_hierarchy": preferences.ANIM_ImportMeshesInBoneHierarchy, - "frame_import_range": [preferences.ANIM_FrameImportRangeMin, preferences.ANIM_FrameImportRangeMax], - "use_default_sample_rate": preferences.ANIM_UseDefaultSampleRate, - "custom_sample_rate": preferences.ANIM_CustomSampleRate, - "import_custom_attribute": preferences.ANIM_ImportCustomAttribute, - "delete_existing_custom_attribute_curves": preferences.ANIM_DeleteExistingCustomAttributeCurves, - "import_bone_tracks": preferences.ANIM_ImportBoneTracks, - "set_material_drive_parameter_on_custom_attribute": preferences.ANIM_SetMaterialDriveParameterOnCustomAttribute, - "material_curve_suffixes": preferences.ANIM_MaterialCurveSuffixes.split("|") if preferences.ANIM_MaterialCurveSuffixes else [], - "remove_redundant_keys": preferences.ANIM_RemoveRedundantKeys, - "delete_existing_morph_target_curves": preferences.ANIM_DeleteExistingMorphTargetCurves, - "do_not_import_curve_with_zero": preferences.ANIM_DoNotImportCurveWithZero, - "preserve_local_transform": preferences.ANIM_PreserveLocalTransform, - - "import_translation": list(preferences.ANIM_ImportTranslation), - "import_rotation": list(preferences.ANIM_ImportRotation), - "import_uniform_scale": preferences.ANIM_ImportUniformScale, - - "convert_scene": preferences.ANIM_ConvertScene, - "force_front_x_axis": preferences.ANIM_ForceFrontXAxis, - "convert_scene_unit": preferences.ANIM_ConvertSceneUnit, - "override_full_name": preferences.ANIM_OverrideFullName, - } - - # Save unreal engine import option into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "unrealenginesetting.json"), "w+") - file.write(json.dumps(unrealsetting)) - file.close() - - for node_id in [user["node_id"] for user in self.remote.remote_nodes]: - # tell unreal engine tor run python script - self.remote.open_command_connection(node_id) - # self.remote.run_command(os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "Animation.py"), exec_mode="ExecuteFile") - # Fix Python PATH Script Issue #9 - self.remote.run_command("execfile(\"" + os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "Animation.py").replace(os.sep, "/") +"\")", exec_mode="ExecuteStatement") - self.remote.close_command_connection() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Export Animation Complete") - except Exception: - pass - - return {"FINISHED"} - -class OP_SelectAnimation(Operator): - bl_idname = "ue4workspace.selectanimation" - bl_label = "Select Animation To Export" - bl_description = "Select Animation To Export" - bl_options = {"UNDO"} - - type: bpy.props.StringProperty() - - @classmethod - def poll(self, context): - return context.mode == "OBJECT" and context.active_object is not None and context.active_object.type == "ARMATURE" - - def execute(self, context): - if context.active_object is not None and context.active_object.type == "ARMATURE" and True: - for action in bpy.data.actions: - if self.type == "SELECT": - action.isExport = True - elif self.type == "DESELECT": - action.isExport = False - elif self.type == "INVERT": - action.isExport = not action.isExport - - return {"FINISHED"} - -class OP_ANIM_AddSuffixe(Operator): - bl_idname = "ue4workspace.animaddsuffixe" - bl_label = "Add Suffixes" - bl_description = "Add Suffixes on Animation Export Setting" - bl_options = {"UNDO"} - - val: bpy.props.StringProperty() - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - arrSuffixs = preferences.ANIM_MaterialCurveSuffixes.split("|") if preferences.ANIM_MaterialCurveSuffixes else [] - arrSuffixs.append(self.val.replace("|", "")) - preferences.ANIM_MaterialCurveSuffixes = "|".join(arrSuffixs) - - return {"FINISHED"} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width = 250) - - def draw(self, context): - col = self.layout.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Value :") - split = split.split() - col = split.column() - col.prop(self, "val", text="") - -class OP_ANIM_ClearSuffixes(Operator): - bl_idname = "ue4workspace.animclearsuffixes" - bl_label = "Clear Suffixes" - bl_description = "Clear Suffixes on Animation Export Setting" - bl_options = {"UNDO"} - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - - preferences.ANIM_MaterialCurveSuffixes = "" - - return {"FINISHED"} - -class OP_ANIM_RemoveIndexSuffixe(Operator): - bl_idname = "ue4workspace.animremoveindexsuffixe" - bl_label = "Remove Index Suffixes" - bl_description = "Remove Suffixes Base on Index Animation Export Setting" - bl_options = {"UNDO"} - - idx: bpy.props.IntProperty() - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - arrSuffixs = preferences.ANIM_MaterialCurveSuffixes.split("|") - arrSuffixs.pop(self.idx) - preferences.ANIM_MaterialCurveSuffixes = "|".join(arrSuffixs) - - return {"FINISHED"} - -class OP_ANIM_EditValueSuffixe(Operator): - bl_idname = "ue4workspace.animeditvaluesuffixe" - bl_label = "Edit Value Suffixes" - bl_description = "Edit Value Suffixes on Animation Export Setting" - bl_options = {"UNDO"} - - val: bpy.props.StringProperty() - idx: bpy.props.IntProperty() - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - arrSuffixs = preferences.ANIM_MaterialCurveSuffixes.split("|") - arrSuffixs[self.idx] = self.val.replace("|", "") - preferences.ANIM_MaterialCurveSuffixes = "|".join(arrSuffixs) - - return {"FINISHED"} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width = 250) - - def draw(self, context): - col = self.layout.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Value :") - split = split.split() - col = split.column() - col.prop(self, "val", text="") - -class OP_ANIMUpdateExportProfile(Operator): - bl_idname = "ue4workspace.animupdateexportprofile" - bl_label = "Animatiion Update Export Profile" - bl_description = "Update Current Export Profile" - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return not preferences.ANIM_IsProfileLock - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key in ["ANIM_FBXGlobalScale", "ANIM_FBXApplyScaleOptions","ANIM_FBXAxisForward","ANIM_FBXAxisUp", "ANIM_FBXApplyUnitScale", "ANIM_FBXBakeSpaceTransform", "ANIM_FBXPrimaryBoneAxis", "ANIM_FBXSecondaryBoneAxis", "ANIM_FBXArmatureFBXNodeType", "ANIM_FBXOnlyDeformBones", "ANIM_FBXAddLeafBones", "ANIM_FBXKeyAllBones", "ANIM_FBXForceStartEndKeying", "ANIM_FBXSamplingRate", "ANIM_FBXSimplify"]: - jsonSetting["animation"][preferences.ANIM_ExportProfile]["FBX"][key] = getattr(preferences, key) - - for key in [ - "ANIM_AnimationLength", - "ANIM_ImportMeshesInBoneHierarchy", - "ANIM_FrameImportRangeMin", - "ANIM_FrameImportRangeMax", - "ANIM_UseDefaultSampleRate", - "ANIM_CustomSampleRate", - "ANIM_ImportCustomAttribute", - "ANIM_DeleteExistingCustomAttributeCurves", - "ANIM_ImportBoneTracks", - "ANIM_SetMaterialDriveParameterOnCustomAttribute", - "ANIM_MaterialCurveSuffixes", - "ANIM_RemoveRedundantKeys", - "ANIM_DeleteExistingMorphTargetCurves", - "ANIM_DoNotImportCurveWithZero", - "ANIM_PreserveLocalTransform", - "ANIM_ImportTranslation", - "ANIM_ImportRotation", - "ANIM_ImportUniformScale", - "ANIM_ConvertScene", - "ANIM_ForceFrontXAxis", - "ANIM_ConvertSceneUnit", - "ANIM_OverrideFullName" - ]: - jsonSetting["animation"][preferences.ANIM_ExportProfile]["UNREALENGINE"][key] = list(getattr(preferences, key)) if (key in ["ANIM_ImportTranslation", "ANIM_ImportRotation"]) else getattr(preferences, key) - - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Update Profile Success") - except Exception: - pass - return {"FINISHED"} - -class OP_ANIMCreateExportProfile(Operator): - bl_idname = "ue4workspace.animcreateexportprofile" - bl_label = "Animation Create Export Profile" - bl_description = "Create Export Profile Base On Current Setting" - - name: bpy.props.StringProperty( - name = "Name Profile", - description = "Name Profile", - default = "" - ) - - description: bpy.props.StringProperty( - name = "Description", - description = "Description Profile", - default = "" - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - if(self.name): - setting = { - "name": self.name, - "description": self.description, - "lock": False, - "FBX": {}, - "UNREALENGINE": {} - } - for key in ["ANIM_FBXGlobalScale", "ANIM_FBXApplyScaleOptions","ANIM_FBXAxisForward","ANIM_FBXAxisUp", "ANIM_FBXApplyUnitScale", "ANIM_FBXBakeSpaceTransform", "ANIM_FBXPrimaryBoneAxis", "ANIM_FBXSecondaryBoneAxis", "ANIM_FBXArmatureFBXNodeType", "ANIM_FBXOnlyDeformBones", "ANIM_FBXAddLeafBones", "ANIM_FBXKeyAllBones", "ANIM_FBXForceStartEndKeying", "ANIM_FBXSamplingRate", "ANIM_FBXSimplify"]: - setting["FBX"][key] = getattr(preferences, key) - - for key in [ - "ANIM_AnimationLength", - "ANIM_ImportMeshesInBoneHierarchy", - "ANIM_FrameImportRangeMin", - "ANIM_FrameImportRangeMax", - "ANIM_UseDefaultSampleRate", - "ANIM_CustomSampleRate", - "ANIM_ImportCustomAttribute", - "ANIM_DeleteExistingCustomAttributeCurves", - "ANIM_ImportBoneTracks", - "ANIM_SetMaterialDriveParameterOnCustomAttribute", - "ANIM_MaterialCurveSuffixes", - "ANIM_RemoveRedundantKeys", - "ANIM_DeleteExistingMorphTargetCurves", - "ANIM_DoNotImportCurveWithZero", - "ANIM_PreserveLocalTransform", - "ANIM_ImportTranslation", - "ANIM_ImportRotation", - "ANIM_ImportUniformScale", - "ANIM_ConvertScene", - "ANIM_ForceFrontXAxis", - "ANIM_ConvertSceneUnit", - "ANIM_OverrideFullName" - ]: - setting["UNREALENGINE"][key] = list(getattr(preferences, key)) if (key in ["ANIM_ImportTranslation", "ANIM_ImportRotation"]) else getattr(preferences, key) - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - timestamp = int(time.time()) - jsonSetting["animation"][timestamp] = setting - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - - preferences.ANIM_ExportProfile = str(timestamp) - - self.report({"INFO"}, "Create Profile Success") - return {"FINISHED"} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width = 250) - -class OP_ANIMRemoveExportProfile(Operator): - bl_idname = "ue4workspace.animremoveexportprofile" - bl_label = "Animation Remove Export Profile" - bl_description = "Remove Current Export Profile" - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return not preferences.ANIM_IsProfileLock - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - del jsonSetting["animation"][preferences.ANIM_ExportProfile] - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - preferences.ANIM_ExportProfile = "UNREAL_ENGINE" - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Remove Profile Success") - except Exception: - pass - return {"FINISHED"} - -# operator export - -Ops = [ - OP_ExportAnimation, - OP_SelectAnimation, - OP_ANIM_AddSuffixe, - OP_ANIM_ClearSuffixes, - OP_ANIM_RemoveIndexSuffixe, - OP_ANIM_EditValueSuffixe, - OP_ANIMUpdateExportProfile, - OP_ANIMCreateExportProfile, - OP_ANIMRemoveExportProfile -] \ No newline at end of file diff --git a/UE4WS_AnimationFBXOption.py b/UE4WS_AnimationFBXOption.py deleted file mode 100644 index d7eafcb..0000000 --- a/UE4WS_AnimationFBXOption.py +++ /dev/null @@ -1,57 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_AnimationFBXOption" - bl_parent_id = "UE4WORKSPACE_PT_AnimationPanel" - bl_label = "FBX Export Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "ANIM_FBXTabTransform", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.ANIM_FBXTabTransform], emboss=False) - if preferences.ANIM_FBXTabTransform: - box = layout.box() - for arr in [["ANIM_FBXGlobalScale", "Scale"], ["ANIM_FBXApplyScaleOptions", "Apply Scalings"], ["ANIM_FBXAxisForward", "Forward"], ["ANIM_FBXAxisUp", "Up"], ["ANIM_FBXApplyUnitScale", "Apply Unit"], ["ANIM_FBXBakeSpaceTransform", "!EXPERIMENTAL! Apply Transform"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "ANIM_FBXTabArmature", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.ANIM_FBXTabArmature], emboss=False) - if preferences.ANIM_FBXTabArmature: - box = layout.box() - for arr in [["ANIM_FBXPrimaryBoneAxis", "Primary Bone Axis"], ["ANIM_FBXSecondaryBoneAxis", "Secondary Bone Axis"], ["ANIM_FBXArmatureFBXNodeType", "Armature FBXNode Type"], ["ANIM_FBXOnlyDeformBones", "Only Deform Bones"], ["ANIM_FBXAddLeafBones", "Add Leaf Bones"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "ANIM_FBXTabBakeAnimation", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.ANIM_FBXTabBakeAnimation], emboss=False) - if preferences.ANIM_FBXTabBakeAnimation: - box = layout.box() - for arr in [["ANIM_FBXKeyAllBones", "Key All Bones"], ["ANIM_FBXForceStartEndKeying", "Force Start/End Keying"], ["ANIM_FBXSamplingRate", "Sampling Rate"], ["ANIM_FBXSimplify", "Simplify"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_AnimationUnrealEngine.py b/UE4WS_AnimationUnrealEngine.py deleted file mode 100644 index ce2f30c..0000000 --- a/UE4WS_AnimationUnrealEngine.py +++ /dev/null @@ -1,101 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_AnimationUnrealEnginePanel" - bl_parent_id = "UE4WORKSPACE_PT_AnimationPanel" - bl_label = "Unreal Engine Export Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "ANIM_TabAnimation", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.ANIM_TabAnimation], emboss=False) - if preferences.ANIM_TabAnimation: - box = layout.box() - for arr in [["ANIM_AnimationLength", "Animation Length"], ["ANIM_ImportMeshesInBoneHierarchy", "Import Meshes in Bone Hierarchy"], ["ANIM_FrameImportRangeMin", "Frame Import Range"], ["ANIM_UseDefaultSampleRate", "Use Default Sample Rate"], ["ANIM_CustomSampleRate", "Custom Sample Rate"], ["ANIM_ImportCustomAttribute", "Import Custom Attribute"], ["ANIM_DeleteExistingCustomAttributeCurves", "Delete Existing Custom Attribute Curves"], ["ANIM_ImportBoneTracks", "Import Bone Tracks"], ["ANIM_SetMaterialDriveParameterOnCustomAttribute", "Set Material Curve Type"], ["ANIM_MaterialCurveSuffixes", "Material Curve Suffixes"], ["ANIM_RemoveRedundantKeys", "Remove Redundant Keys"], ["ANIM_DeleteExistingMorphTargetCurves", "Delete Existing Morph Target Curves"], ["ANIM_DoNotImportCurveWithZero", "Do not Import Curve With 0 Values"], ["ANIM_PreserveLocalTransform", "Preserve Local Transform"]]: - if arr[0] == "ANIM_FrameImportRangeMin": - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column(align=True) - col.enabled = (preferences.ANIM_AnimationLength == "FBXALIT_SET_RANGE") - col.prop(preferences, arr[0], text="Min") - col.prop(preferences, "ANIM_FrameImportRangeMax", text="Max") - elif arr[0] == "ANIM_MaterialCurveSuffixes": - arrSuffixs = preferences.ANIM_MaterialCurveSuffixes.split("|") - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - row = split.row(align=True) - row.label(text=str(len(arrSuffixs)) + " Array" if preferences.ANIM_MaterialCurveSuffixes else "0 Array") - row.alignment = "RIGHT" - # operator location on UE4WS_Animation.py - row.operator("ue4workspace.animaddsuffixe",icon="PLUS", text="") - row.operator("ue4workspace.animclearsuffixes",icon="TRASH", text="") - if preferences.ANIM_MaterialCurveSuffixes: - for index, surffix in enumerate(arrSuffixs): - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=str(index)) - split = split.split() - row = split.row(align=True) - row.label(text=surffix) - # operator location on UE4WS_Animation.py - op = row.operator("ue4workspace.animeditvaluesuffixe",icon="GREASEPENCIL", text="") - op.idx = index - op.val = surffix - row.operator("ue4workspace.animremoveindexsuffixe",icon="TRASH", text="").idx = index - else: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "ANIM_TabTransform", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.ANIM_TabTransform], emboss=False) - if preferences.ANIM_TabTransform: - box = layout.box() - for arr in [["ANIM_ImportTranslation", "Import Translation"], ["ANIM_ImportRotation", "Import Translation"], ["ANIM_ImportUniformScale", "Import Uniform Scale"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "ANIM_TabMisc", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.ANIM_TabMisc], emboss=False) - if preferences.ANIM_TabMisc: - box = layout.box() - for arr in [["ANIM_ConvertScene", "Convert Scene"], ["ANIM_ForceFrontXAxis", "Force Front XAxis"], ["ANIM_ConvertSceneUnit", "Convert Scene Unit"], ["ANIM_OverrideFullName", "Override Full Name"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_Character.py b/UE4WS_Character.py deleted file mode 100644 index a4b6219..0000000 --- a/UE4WS_Character.py +++ /dev/null @@ -1,1379 +0,0 @@ -import os -import json -import time -import re -import bpy -from mathutils import Matrix -from bpy.types import (Panel, Operator, Menu) -from bpy.props import (EnumProperty, FloatProperty, FloatVectorProperty, StringProperty, BoolProperty) -from . UE4WS_CharacterBoneManipulation import (BoneManipulation) - -# Extend Armature Menu [Shift+A] - -class UE4WORKSPACE_MT_skeleton_preset_submenu(Menu): - bl_idname = "UE4WORKSPACE_MT_skeleton_preset_submenu" - bl_label = "Skeleton Preset" - bl_options = {"UNDO"} - - def draw(self, context): - layout = self.layout - - layout.operator("ue4workspace.importunrealenginerig", icon="GROUP_BONE", text="From Scratch") - layout.separator() - layout.label(icon="PRESET", text="Preset") - openFile = open(os.path.join(os.path.dirname(__file__), "Data", "skeletonPreset.json"), "r") - jsonSetting = openFile.read() - openFile.close() - jsonSetting = json.loads(jsonSetting) - - for key, setting in jsonSetting["skeleton"].items(): - layout.operator("ue4workspace.importunrealenginerig", icon="LAYER_ACTIVE", text=setting["name"]).presetKey = key - -def extendLayout(self, context): - self.layout.menu("UE4WORKSPACE_MT_skeleton_preset_submenu", text="Skeleton Preset", icon="BONE_DATA") - -# export append type -appendType = [ - ("VIEW3D_MT_armature_add", extendLayout) -] - -# PROPS - -Props = [ - { - "type": "armature", - "name": "UE4RIG", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "armature", - "name": "UE4RIGGED", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "armature", - "name": "UE4RIGTYPE", - "value": EnumProperty( - items=[ - ("HUMANOID", "HUMANOID", "Humanoid Skeleton Compatible With Unreal Engine Mannequin") - ], - default="HUMANOID" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "UE4RIGTYPE", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "rotateBone", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "rotationRadian", - "value": FloatProperty( - subtype="ANGLE", - default=0.0 - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "orientAxis", - "value": EnumProperty( - items=[ - ("X", "X", ""), - ("Y", "Y", ""), - ("Z", "Z", "") - ], - default="X" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "orientRoll", - "value": FloatProperty( - subtype="ANGLE", - default=0.0 - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "subtargetRotation", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "subtargetIK", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "subtargetPole", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "footBone", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "toeBone", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "handBone", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "boneHasFloor", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "armature", - "name": "hideFK", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "armature", - "name": "hideVis", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "stretchBoneTarget", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "controlFingerIK", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "controlIK", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "switchIK", - "value": EnumProperty( - items=[ - ("IK", "IK", "Inverse Kinematic Mode"), - ("FK", "FK", "Forward Kinematic Mode") - ], - default="IK" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "IKLastMatrix", - "value": FloatVectorProperty( - size=16, - subtype="MATRIX" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "pointABoneIK", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "pointBBoneIK", - "value": StringProperty( - default="" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "stretchBone", - "value": FloatProperty( - name="Stretch Bone", - default=0.0, - min=0.0, - max=1.0 - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "stretchBoneMode", - "value": EnumProperty( - items=[ - ("VOLUME_XZX", "XZ", ""), - ("VOLUME_X", "X", ""), - ("VOLUME_Z", "Z", ""), - ("NO_VOLUME", "None", "") - ], - default="NO_VOLUME" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "customShape", - "value": BoolProperty( - default=False - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "customShapeType", - "value": EnumProperty( - items=[ - ("block", "Block", ""), - ("sphere", "Sphere", ""), - ("circle", "Circle", "") - ], - default="block" - ), - "resetVariable": False - }, - { - "type": "bone", - "name": "customShapeParam", - "value": FloatVectorProperty( - size=10, - default=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - "resetVariable": False - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_CharacterPanel" - bl_label = "Character" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return (context.mode == "OBJECT") - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Skeleton Preset") - split = split.split() - col = split.column() - col.prop(preferences, "CHAR_SkeletonPreset", text="") - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.importunrealenginerig",icon="ARMATURE_DATA", text="Import Skeleton").presetKey = preferences.CHAR_SkeletonPreset - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Subfolder") - split = split.split() - col = split.column() - col.prop(preferences, "CHAR_Subfolder", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Overwrite File") - split = split.split() - col = split.column() - col.prop(preferences, "CHAR_OverwriteFile", text="") - - # UE4 Python still not support add socket using python for skeletal mesh - # col = layout.column() - # row = col.row() - # split = row.split(factor=0.6) - # col = split.column() - # col.alignment = "RIGHT" - # col.label(text="Socket") - # split = split.split() - # col = split.column() - # col.prop(preferences, "CHAR_Socket", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Export Character Option") - split = split.split() - col = split.column() - col.prop(preferences, "CHAR_ExportCharacterOption", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Character Option") - split = split.split() - col = split.column() - col.prop(preferences, "CHAR_CharacterOption", text="") - - if preferences.exportOption in ["BOTH", "UNREAL"]: - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Character Skeleton") - split = split.split() - col = split.column() - col.prop(preferences, "CHAR_CharacterSkeleton", text="") - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.updateskeletonlist",icon="ARMATURE_DATA") - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.exportcharacter",icon="MESH_CUBE", text="Export") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.prop(preferences, "CHAR_ExportProfile", text="") - split = split.split() - row = split.row(align=True) - row.alignment = "RIGHT" - row.operator("ue4workspace.charupdateexportprofile",icon="GREASEPENCIL", text="") - row.operator("ue4workspace.charcreateexportprofile",icon="FILE_NEW", text="") - row.operator("ue4workspace.charremoveexportprofile",icon="TRASH", text="") - -# OPERATOR - -class OP_CHARUpdateExportProfile(Operator): - bl_idname = "ue4workspace.charupdateexportprofile" - bl_label = "Character Update Export Profile" - bl_description = "Update Current Export Profile" - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return not preferences.CHAR_IsProfileLock - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key in ["CHAR_FBXGlobalScale", "CHAR_FBXApplyScaleOptions","CHAR_FBXAxisForward","CHAR_FBXAxisUp", "CHAR_FBXApplyUnitScale", "CHAR_FBXBakeSpaceTransform", "CHAR_FBXMeshSmoothType", "CHAR_FBXUseSubsurf", "CHAR_FBXUseMeshModifiers", "CHAR_FBXUseMeshEdges", "CHAR_FBXUseTSpace", "CHAR_FBXPrimaryBoneAxis", "CHAR_FBXSecondaryBoneAxis", "CHAR_FBXArmatureFBXNodeType", "CHAR_FBXOnlyDeformBones", "CHAR_FBXAddLeafBones"]: - jsonSetting["character"][preferences.CHAR_ExportProfile]["FBX"][key] = getattr(preferences, key) - - for key in [ - "CHAR_ImportContentType", - "CHAR_VertexColorImportOption", - "CHAR_VertexOverrideColor", - "CHAR_UpdateSkeletonReferencePose", - "CHAR_UseT0AsRefPose", - "CHAR_PreserveSmoothingGroups", - "CHAR_ImportMeshesInBoneHierarchy", - "CHAR_ImportMorphTargets", - "CHAR_ImportMeshLODs", - "CHAR_NormalImportMethod", - "CHAR_NormalGenerationMethod", - "CHAR_ComputeWeightedNormals", - "CHAR_ThresholdPosition", - "CHAR_ThresholdTangentNormal", - "CHAR_ThresholdUV", - "CHAR_PhysicsAsset", - "CHAR_ImportTranslation", - "CHAR_ImportRotation", - "CHAR_ImportUniformScale", - "CHAR_ConvertScene", - "CHAR_ForceFrontXAxis", - "CHAR_ConvertSceneUnit", - "CHAR_OverrideFullName", - "CHAR_MaterialSearchLocation", - "CHAR_ImportMaterial", - "CHAR_ImportTexture", - "CHAR_InvertNormalMaps", - "CHAR_ReorderMaterialToFBXOrder" - ]: - jsonSetting["character"][preferences.CHAR_ExportProfile]["UNREALENGINE"][key] = list(getattr(preferences, key)) if (key in ["CHAR_VertexOverrideColor", "CHAR_ImportTranslation", "CHAR_ImportRotation"]) else getattr(preferences, key) - - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Update Profile Success") - except Exception: - pass - return {"FINISHED"} - -class OP_CHARCreateExportProfile(Operator): - bl_idname = "ue4workspace.charcreateexportprofile" - bl_label = "Character Create Export Profile" - bl_description = "Create Export Profile Base On Current Setting" - - name: StringProperty( - name = "Name Profile", - description = "Name Profile", - default = "" - ) - - description: StringProperty( - name = "Description", - description = "Description Profile", - default = "" - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - if(self.name): - setting = { - "name": self.name, - "description": self.description, - "lock": False, - "FBX": {}, - "UNREALENGINE": {} - } - for key in ["CHAR_FBXGlobalScale", "CHAR_FBXApplyScaleOptions","CHAR_FBXAxisForward","CHAR_FBXAxisUp", "CHAR_FBXApplyUnitScale", "CHAR_FBXBakeSpaceTransform", "CHAR_FBXMeshSmoothType", "CHAR_FBXUseSubsurf", "CHAR_FBXUseMeshModifiers", "CHAR_FBXUseMeshEdges", "CHAR_FBXUseTSpace", "CHAR_FBXPrimaryBoneAxis", "CHAR_FBXSecondaryBoneAxis", "CHAR_FBXArmatureFBXNodeType", "CHAR_FBXOnlyDeformBones", "CHAR_FBXAddLeafBones"]: - setting["FBX"][key] = getattr(preferences, key) - - for key in [ - "CHAR_ImportContentType", - "CHAR_VertexColorImportOption", - "CHAR_VertexOverrideColor", - "CHAR_UpdateSkeletonReferencePose", - "CHAR_UseT0AsRefPose", - "CHAR_PreserveSmoothingGroups", - "CHAR_ImportMeshesInBoneHierarchy", - "CHAR_ImportMorphTargets", - "CHAR_ImportMeshLODs", - "CHAR_NormalImportMethod", - "CHAR_NormalGenerationMethod", - "CHAR_ComputeWeightedNormals", - "CHAR_ThresholdPosition", - "CHAR_ThresholdTangentNormal", - "CHAR_ThresholdUV", - "CHAR_PhysicsAsset", - "CHAR_ImportTranslation", - "CHAR_ImportRotation", - "CHAR_ImportUniformScale", - "CHAR_ConvertScene", - "CHAR_ForceFrontXAxis", - "CHAR_ConvertSceneUnit", - "CHAR_OverrideFullName", - "CHAR_MaterialSearchLocation", - "CHAR_ImportMaterial", - "CHAR_ImportTexture", - "CHAR_InvertNormalMaps", - "CHAR_ReorderMaterialToFBXOrder" - ]: - setting["UNREALENGINE"][key] = list(getattr(preferences, key)) if (key in ["CHAR_VertexOverrideColor", "CHAR_ImportTranslation", "CHAR_ImportRotation"]) else getattr(preferences, key) - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - timestamp = int(time.time()) - jsonSetting["character"][timestamp] = setting - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - - preferences.CHAR_ExportProfile = str(timestamp) - - self.report({"INFO"}, "Create Profile Success") - return {"FINISHED"} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width = 250) - -class OP_CHARRemoveExportProfile(Operator): - bl_idname = "ue4workspace.charremoveexportprofile" - bl_label = "Character Remove Export Profile" - bl_description = "Remove Current Export Profile" - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return not preferences.CHAR_IsProfileLock - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - del jsonSetting["character"][preferences.CHAR_ExportProfile] - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - preferences.CHAR_ExportProfile = "UNREAL_ENGINE" - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Remove Profile Success") - except Exception: - pass - return {"FINISHED"} - -class OP_IMPORTARMATURE(Operator): - bl_idname = "ue4workspace.importunrealenginerig" - bl_label = "Import Skeleton Preset" - bl_description = "Import Skeleton Preset" - bl_options = {"UNDO", "REGISTER"} - - isImportCharacterPlacement: bpy.props.BoolProperty( - name="Import Character Placement", - default=True - ) - - presetKey: StringProperty( - name="Preset", - default="HUMANOID", - options={"HIDDEN"} - ) - - addonVersion = None - - @classmethod - def poll(self, context): - return context.mode == "OBJECT" - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "skeletonPreset.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - skeleton = jsonSetting["skeleton"].get(self.presetKey, False) - if skeleton: - # if skeleton.get("characterPlacement", False) and self.isImportCharacterPlacement: - # path = os.path.dirname(os.path.realpath(__file__)) - # directory = os.path.join(path, "Data","BLEND.blend", "Object") - # bpy.ops.wm.append(filename=skeleton["characterPlacement"], directory=directory, active_collection=True, autoselect=False) - - oldMode = context.mode - armature = bpy.data.armatures.new(skeleton["name"]) - armature_object = bpy.data.objects.new(skeleton["name"], armature) - armature_object.show_in_front = True - for key, val in skeleton["prop"].items(): - if hasattr(armature, key): - setattr(armature, key, val) - armature_object.data.layers[31] = True - # armature_object["UE4RIGVERSION"] = self.addonVersion - context.view_layer.active_layer_collection.collection.objects.link(armature_object) - - context.view_layer.objects.active = armature_object - bpy.ops.object.select_all(action="DESELECT") - bpy.ops.object.mode_set(mode="EDIT") - - parentList = {} - editBones = armature_object.data.edit_bones - boneLists = skeleton["bones"] - for (boneName, value) in boneLists.items(): - newBone = editBones.new(boneName) - parentList[boneName] = newBone - newBone.head = value["head"] - newBone.tail = value["tail"] - newBone.roll = value["roll"] - newBone.use_connect = value["use_connect"] - newBone.parent = parentList[value["parent"]] if value["parent"] is not None else None - newBone.use_deform = value.get("use_deform", True) - - bpy.ops.armature.select_all(action="DESELECT") - bpy.ops.object.mode_set(mode="OBJECT") - - for (boneName, value) in boneLists.items(): - boneData = armature.bones[boneName] - boneData.UE4RIGTYPE = value["UE4RIGTYPE"] - boneData.rotateBone = value["rotateBone"] - boneData.rotationRadian = value["rotationRadian"] - boneData.orientAxis = value["orientAxis"] - boneData.orientRoll = value["orientRoll"] - - boneData.customShape = value["customShape"] - boneData.customShapeType = value["customShapeType"] - boneData.customShapeParam = value["customShapeParam"] - - bpy.ops.object.mode_set(mode=oldMode) - - # try: - # bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Import Skeleton Success") - # except Exception: - # pass - - return {"FINISHED"} - -class OP_UpdateSkeletonList(Operator): - bl_idname = "ue4workspace.updateskeletonlist" - bl_label = "Update Skeleton List" - bl_description = "Update Skeleton List From Unreal Engine" - - remote = None - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - - return preferences.exportOption in ["UNREAL", "BOTH"] and self.remote.remote_nodes - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - - # clear all skeleton list - preferences.skeleton.clear() - skeletonList = [] - - for node_id in [user["node_id"] for user in self.remote.remote_nodes]: - self.remote.open_command_connection(node_id) - # output = self.remote.run_command(os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "GetAllSkeleton.py"), exec_mode="ExecuteFile") - # Fix Python PATH Script Issue #9 - output = self.remote.run_command("execfile(\"" + os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "GetAllSkeleton.py").replace(os.sep, "/") +"\")", exec_mode="ExecuteStatement") - self.remote.close_command_connection() - skeletonList += json.loads(output["output"][0]["output"]) - - # add skeleton - for enum in skeletonList: - preferences.skeleton.append((enum[0], enum[1], enum[0])) - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Update List Skeleton Done") - except Exception: - pass - - return {"FINISHED"} - -class OP_CharacterGenerateRig(Operator): - bl_idname = "ue4workspace.generaterig" - bl_label = "Generate Rig" - bl_description = "Generate Rig" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type == "ARMATURE" and context.active_object.data.UE4RIG and context.mode == "OBJECT" - - def execute(self, context): - armature = context.active_object - bpy.ops.object.select_all(action="DESELECT") - armature.select_set(True) - bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":"TRANSLATION"}, TRANSFORM_OT_translate={"value":(0, 0, 0), "orient_type":"GLOBAL", "orient_matrix":((0, 0, 0), (0, 0, 0), (0, 0, 0)), "orient_matrix_type":"GLOBAL", "constraint_axis":(False, False, False), "mirror":False, "use_proportional_edit":False, "proportional_edit_falloff":"SMOOTH", "proportional_size":1, "use_proportional_connected":False, "use_proportional_projected":False, "snap":False, "snap_target":"CLOSEST", "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "cursor_transform":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False, "use_accurate":False}) - rig = context.active_object - rig.name = "RIGGED_" + armature.name - bone = BoneManipulation(context) - bone.rotateBone() - bone.generateRig() - # move socket - socketObjects = [obj for obj in armature.children if obj.type == "EMPTY" and obj.get("isSocket")] - for socketObj in socketObjects: - parentType = socketObj.parent_type - parentBone = socketObj.parent_bone - socketObj.parent = rig - socketObj.parent_type = parentType - if parentType == "BONE": - socketObj.parent_bone = parentBone - bone = rig.pose.bones.get(parentBone) - if bone: - socketObj.matrix_parent_inverse = (rig.matrix_world @ Matrix.Translation(bone.tail - bone.head) @ bone.matrix).inverted() - else: - socketObj.matrix_parent_inverse = rig.matrix_world.inverted() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Generate Rig Complete") - except Exception: - pass - return {"FINISHED"} - -class OP_CharacterRotateBone(Operator): - bl_idname = "ue4workspace.rotatebone" - bl_label = "UE4Workspace Operator" - bl_description = "Character Rotate Bone" - bl_options = {"UNDO"} - - remote = None - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type == "ARMATURE" and context.active_object.data.UE4RIG - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - - bone = BoneManipulation(context) - bone.rotateBone() - context.active_object["UE4RIGHASTEMPBONE"] = 1 - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Calculate Bone Done") - except Exception: - pass - - return {"FINISHED"} - -class OP_CharacterRemoveTemporaryBone(Operator): - bl_idname = "ue4workspace.characterremovetemporarybone" - bl_label = "UE4Workspace Operator" - bl_description = "Characte Remove Temporary Bone" - bl_options = {"UNDO"} - - remote = None - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type == "ARMATURE" and context.active_object.data.UE4RIG and context.active_object.get("UE4RIGHASTEMPBONE", False) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - - bone = BoneManipulation(context) - bone.removeTemporaryBone() - context.active_object.pop("UE4RIGHASTEMPBONE") - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Remove Temporary Bone Done") - except Exception: - pass - - return {"FINISHED"} - -class OP_CharacterAddTwistBone(Operator): - bl_idname = "ue4workspace.addtwistbone" - bl_label = "Add Twist Bone" - bl_description = "Add Twist Bone" - bl_options = {"UNDO", "REGISTER"} - - numberBone: bpy.props.IntProperty( - name="Number Bone", - min=1, - default=1 - ) - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type == "ARMATURE" and context.active_object.data.UE4RIG and context.mode == "EDIT_ARMATURE" and context.active_bone is not None and (context.active_bone.get("UE4RIGTYPE") in ["LEG_HUMAN", "ARM_HUMAN"] or context.active_bone.get("UE4RIGTYPE") == "" and context.active_bone.parent is not None and context.active_bone.parent.get("UE4RIGTYPE") in ["LEG_HUMAN", "ARM_HUMAN"]) - - def execute(self, context): - editBones = context.active_object.data.edit_bones - activeBone = context.active_bone - bpy.ops.armature.select_all(action="DESELECT") - for bone in [child for child in activeBone.children if child.get("UE4RIGTYPE") == "TWIST_BONE" or "_twist_" in child.name]: - editBones.remove(bone) - if activeBone.parent is not None and activeBone.use_connect: - activeBone.parent.select_tail = True - else: - activeBone.select_head = True - activeBone.select = True - activeBone.select_tail = True - bpy.ops.armature.duplicate_move(ARMATURE_OT_duplicate={"do_flip_names":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "orient_type":"GLOBAL", "orient_matrix":((0, 0, 0), (0, 0, 0), (0, 0, 0)), "orient_matrix_type":"GLOBAL", "constraint_axis":(False, False, False), "mirror":False, "use_proportional_edit":False, "proportional_edit_falloff":"SMOOTH", "proportional_size":1, "use_proportional_connected":False, "use_proportional_projected":False, "snap":False, "snap_target":"CLOSEST", "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "cursor_transform":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False, "use_accurate":False}) - if self.numberBone == 1: - selectedBones = context.selected_bones - bpy.ops.armature.select_all(action="DESELECT") - editBones.active = activeBone - for bone in selectedBones: - parent = editBones.get(bone.name.split(".")[0]) - bone.parent = parent - bone.length = activeBone.length / 2 - arrBoneName = bone.name.split(".")[0].split("_") - bone.name = arrBoneName[0] + "_twist_01_" + arrBoneName[-1] - bone.select = True - bone.select_head = True - bone.select_tail = True - for key in parent.keys(): - bone[key] = parent[key] - bone["UE4RIGTYPE"] = "TWIST_BONE" - bone["customShape"] = 1 - bone["customShapeType"] = 2 - bone["customShapeParam"] = [16.0, 11.0, 5.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - if not activeBone.get("UE4RIGTYPE") == "ARM_HUMAN": - bpy.ops.transform.translate(value=(0, parent.length/2, 0), orient_type="NORMAL", orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type="GLOBAL", mirror=True, use_proportional_edit=False, proportional_edit_falloff="SMOOTH", proportional_size=1, use_proportional_connected=False, use_proportional_projected=False) - bpy.ops.armature.select_all(action="DESELECT") - else: - isReverse = activeBone.parent.get("UE4RIGTYPE") in ["LEG_HUMAN", "ARM_HUMAN"] - bpy.ops.armature.subdivide(number_cuts=(self.numberBone-1, self.numberBone)[isReverse]) - selectedBones = context.selected_bones - bpy.ops.armature.select_all(action="DESELECT") - arrBoneSide = { - "l": [bone for bone in selectedBones if bone.name.split(".")[1] == "001" and bone.name.split(".")[0].split("_")[-1] == "l"], - "r": [bone for bone in selectedBones if bone.name.split(".")[1] == "001" and bone.name.split(".")[0].split("_")[-1] == "r"] - } - for side in arrBoneSide: - for bone in arrBoneSide[side]: - arrBoneName = bone.name.split(".")[0].split("_") - parent = editBones.get(arrBoneName[0] + "_" + side) - bone.use_connect = False - bone.name = (arrBoneName[0] + "_twist_01_" + side, arrBoneName[0] + "_twist_temp_" + side)[isReverse] - bone.parent = parent - for key in parent.keys(): - bone[key] = parent[key] - bone["UE4RIGTYPE"] = "TWIST_BONE" - bone["customShape"] = 1 - bone["customShapeType"] = 2 - bone["customShapeParam"] = [16.0, 11.0, 5.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - for index, bn in enumerate((bone.children_recursive, bone.children_recursive[::-1])[isReverse], start=2): - if isReverse: - index -= 1 - bn.use_connect = False - bn.name = arrBoneName[0] + "_twist_" + ("", "0")[index < 10] + str(index) + "_" + side - bn.parent = parent - for key in activeBone.keys(): - bn[key] = activeBone[key] - bn["UE4RIGTYPE"] = "TWIST_BONE" - bn["customShape"] = 1 - bn["customShapeType"] = 2 - bn["customShapeParam"] = [16.0, 11.0, 5.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - editBones.active = activeBone - bpy.ops.armature.select_all(action="DESELECT") - if isReverse: - editBones.remove(bone) - - return {"FINISHED"} - -class OP_CharacterRemoveTwistBone(Operator): - bl_idname = "ue4workspace.removetwistbone" - bl_label = "Remove Twist Bone" - bl_description = "Remove Twist Bone" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type == "ARMATURE" and context.active_object.data.UE4RIG and context.mode == "EDIT_ARMATURE" and context.active_bone is not None and (context.active_bone.get("UE4RIGTYPE") in ["LEG_HUMAN", "ARM_HUMAN"] or context.active_bone.get("UE4RIGTYPE") == "" and context.active_bone.parent is not None and context.active_bone.parent.get("UE4RIGTYPE") in ["LEG_HUMAN", "ARM_HUMAN"]) - - def execute(self, context): - editBones = context.active_object.data.edit_bones - activeBone = context.active_bone - bpy.ops.armature.select_all(action="DESELECT") - for bone in [child for child in activeBone.children if child.get("UE4RIGTYPE") == "TWIST_BONE" or child.name.split("_")[1] == "twist"]: - editBones.remove(bone) - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Remove Twist Complete") - except Exception: - pass - return {"FINISHED"} - -class OP_ExportCharacter(Operator): - bl_idname = "ue4workspace.exportcharacter" - bl_label = "UE4Workspace Operator" - bl_description = "Export Character" - - remote = None - - @classmethod - def description(self, context, properties): - preferences = context.preferences.addons[__package__].preferences - description = "Export Character" - - # Check folder for validation - if preferences.exportOption in ["FBX", "BOTH"]: - return ("FBX folder not valid", description)[bool(preferences.ExportFBXFolder.strip())] - return ("Temporary folder not valid", description)[bool(preferences.TempFolder.strip())] - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - - # Check folder for validation - if preferences.exportOption in ["FBX", "BOTH"]: - return bool(preferences.ExportFBXFolder.strip()) - return bool(preferences.TempFolder.strip()) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - oldActiveObject = context.active_object - selectedObjects = context.selected_objects - objects = (selectedObjects, context.scene.objects)[preferences.CHAR_ExportCharacterOption == "ALL"] - # Filter object for armture - objects = [obj for obj in objects if obj.type == "ARMATURE"] - - # Deselect all object - bpy.ops.object.select_all(action="DESELECT") - - subFolder = re.sub("[\\/:<>\'\"|?*&]", "", preferences.CHAR_Subfolder).strip() - directory = os.path.join((preferences.TempFolder, preferences.ExportFBXFolder)[preferences.exportOption in ["FBX","BOTH"]], subFolder) - - arrCharacterObject = [] - - # Check Subfolder if exist, if not will make new folder - if not os.path.isdir(directory) and subFolder: - os.mkdir(directory) - - # Socket Collection - socketCollection = bpy.data.collections.get("UE4Socket", False) - socketHideProp = { - "render": None, - "select": None, - "viewport": None - } - # Unhide socket collection - if (socketCollection and preferences.CHAR_Socket): - for key in socketHideProp: - socketHideProp[key] = getattr(socketCollection, "hide_" + key) - setattr(socketCollection, "hide_" + key, False) - - for obj in objects: - if preferences.CHAR_CharacterOption == "COMBINE": - # Remove invalid character for filename - filename = re.sub("[\\/:<>\'\"|?*&]", "", obj.name).strip() - # Check duplicate from arrCharacterObject - checkDuplicate = len([obj for obj in arrCharacterObject if obj["name"].startswith(filename)]) - # Add number if have duplicate name - filename += ("", "_" + str(checkDuplicate) )[bool(checkDuplicate)] - - # Check if file alredy exist and overwrite - if not os.path.isfile(os.path.join(directory, filename + ".fbx")) or preferences.CHAR_OverwriteFile: - # set armature as active object - context.view_layer.objects.active = obj - # original name - originalName = obj.name - # copy location - originalLocation = obj.location.copy() - # reset location - obj.location = [0, 0, 0] - # check root bone - isHaveRootBone = obj.data.bones.get("root", False) - if obj.get("UE4RIG"): - bone = BoneManipulation(context) - bone.rotateBone() - bone.beforeExport() - elif obj.get("UE4RIGGED"): - # change name to "Armature" - obj.name = "Armature" - else: - # change name to "Armature" if have root bone or "root" if doesn't have root bone - if isHaveRootBone: - obj.name = "Armature" - else: - obj.name = "root" - - # pop "UE4RIGVERSION" - # its because blender do not support array in custom property to export - rigVersion = obj.pop("UE4RIGVERSION", None) - - # Socket filter from children objects - socketObjects = [obj for obj in obj.children if obj.type == "EMPTY" and obj.get("isSocket")] - # Socket array for information [disable select, hide_viewport] - socketArrInfo = [] - - if preferences.CHAR_Socket and socketObjects: - for index, socketObj in enumerate(socketObjects, start=1): - socketArrInfo.append([socketObj.hide_select, socketObj.hide_viewport]) - # Select object - socketObj.hide_select = False - socketObj.hide_viewport = False - socketObj.select_set(state=True) - # Scale - for index, val in enumerate(socketObj.scale): - socketObj.scale[index] = val / 100 - # Rotate - socketObj.rotation_euler[0] = abs(socketObj.rotation_euler[0]) if (socketObj.rotation_euler[0] < 0) else -abs(socketObj.rotation_euler[0]) - socketObj.rotation_euler[1] = abs(socketObj.rotation_euler[1]) if (socketObj.rotation_euler[1] < 0) else -abs(socketObj.rotation_euler[1]) - socketObj.rotation_euler[2] -= 3.14159 - # Rename object - socketObj.name = "SOCKET_" + socketObj.name - - # attach constraint - constraint = obj.constraints.get("AttachTo") - constraintMute = False - if constraint: - constraintMute = constraint.mute - constraint.mute = True - - obj.select_set(state=True) - # filter (part) children mesh to export - # (obj, disable select, hide_viewport, hide) - characterParts = [(mesh, mesh.hide_select, mesh.hide_viewport, mesh.hide_get()) for mesh in obj.children if mesh.type == "MESH" and mesh.data.isExportCharacterPart] - for mesh, select, viewport, hide in characterParts: - # Select object - mesh.hide_set(False) - mesh.hide_select = False - mesh.hide_viewport = False - mesh.select_set(state=True) - - # Export character option - bpy.ops.export_scene.fbx( - filepath= os.path.join(directory, filename + ".fbx"), - check_existing=False, - filter_glob="*.fbx", - use_selection=True, - use_active_collection=False, - global_scale=preferences.CHAR_FBXGlobalScale, - apply_unit_scale=preferences.CHAR_FBXApplyUnitScale, - apply_scale_options=preferences.CHAR_FBXApplyScaleOptions, - bake_space_transform=preferences.CHAR_FBXBakeSpaceTransform, - object_types={"MESH", "ARMATURE"}, - use_mesh_modifiers=preferences.CHAR_FBXUseMeshModifiers, - mesh_smooth_type=preferences.CHAR_FBXMeshSmoothType, - use_subsurf=preferences.CHAR_FBXUseSubsurf, - use_mesh_edges=preferences.CHAR_FBXUseMeshEdges, - use_tspace=preferences.CHAR_FBXUseTSpace, - use_custom_props=False, - add_leaf_bones=preferences.CHAR_FBXAddLeafBones, - primary_bone_axis=preferences.CHAR_FBXPrimaryBoneAxis, - secondary_bone_axis=preferences.CHAR_FBXSecondaryBoneAxis, - use_armature_deform_only=preferences.CHAR_FBXOnlyDeformBones, - armature_nodetype=preferences.CHAR_FBXArmatureFBXNodeType, - bake_anim=False, - path_mode="AUTO", - embed_textures=False, - batch_mode="OFF", - axis_forward=preferences.CHAR_FBXAxisUp, - axis_up=preferences.CHAR_FBXAxisForward - ) - - arrCharacterObject.append({ - "name": filename, - "skeleton": preferences.CHAR_CharacterSkeleton - }) - - obj.select_set(state=False) - # deselect characterParts - for mesh, select, viewport, hide in characterParts: - # Select object - mesh.hide_set(hide) - mesh.hide_select = select - mesh.hide_viewport = viewport - mesh.select_set(state=False) - - # restore location - obj.location = originalLocation - - if obj.get("UE4RIG"): - bone.afterExport() - if not obj.get("UE4RIGHASTEMPBONE"): - bone.removeTemporaryBone() - elif obj.get("UE4RIGGED"): - # change name to original name - obj.name = originalName - else: - obj.name = originalName - - # restore "UE4RIGVERSION" if exist - if rigVersion is not None: - obj["UE4RIGVERSION"] = rigVersion - - # restore socket - if preferences.CHAR_Socket and socketObjects: - for index, socketObj in enumerate(socketObjects, start=0): - # deselect object - socketObj.select_set(state=False) - socketObj.hide_select = socketArrInfo[index][0] - socketObj.hide_viewport = socketArrInfo[index][1] - # Scale - for index, val in enumerate(socketObj.scale): - socketObj.scale[index] = val * 100 - # Rotate - socketObj.rotation_euler[0] = abs(socketObj.rotation_euler[0]) if (socketObj.rotation_euler[0] < 0) else -abs(socketObj.rotation_euler[0]) - socketObj.rotation_euler[1] = abs(socketObj.rotation_euler[1]) if (socketObj.rotation_euler[1] < 0) else -abs(socketObj.rotation_euler[1]) - socketObj.rotation_euler[2] += 3.14159 - # Rename object - socketObj.name = socketObj.name[7:] - - # restore attach constraint - if constraint: - constraint.mute = constraintMute - else: - context.view_layer.objects.active = obj - armatureName = obj.name - # copy location - originalLocation = obj.location.copy() - # reset location - obj.location = [0, 0, 0] - # check root bone - isHaveRootBone = obj.data.bones.get("root", False) - if obj.get("UE4RIG"): - bone = BoneManipulation(context) - bone.rotateBone() - bone.beforeExport() - elif obj.get("UE4RIGGED"): - # change name to "Armature" - obj.name = "Armature" - else: - # change name to "Armature" if have root bone or "root" if doesn't have root bone - if isHaveRootBone: - obj.name = "Armature" - else: - obj.name = "root" - - # pop "UE4RIGVERSION" - # its because blender do not support array in custom property to export - rigVersion = obj.pop("UE4RIGVERSION", None) - - # Socket filter from children objects - socketObjects = [obj for obj in obj.children if obj.type == "EMPTY" and obj.get("isSocket")] - # Socket array for information [disable select, hide_viewport] - socketArrInfo = [] - - if preferences.CHAR_Socket and socketObjects: - for index, socketObj in enumerate(socketObjects, start=1): - socketArrInfo.append([socketObj.hide_select, socketObj.hide_viewport]) - # Select object - socketObj.hide_select = False - socketObj.hide_viewport = False - socketObj.select_set(state=True) - # Scale - for index, val in enumerate(socketObj.scale): - socketObj.scale[index] = val / 100 - # Rotate - socketObj.rotation_euler[0] = abs(socketObj.rotation_euler[0]) if (socketObj.rotation_euler[0] < 0) else -abs(socketObj.rotation_euler[0]) - socketObj.rotation_euler[1] = abs(socketObj.rotation_euler[1]) if (socketObj.rotation_euler[1] < 0) else -abs(socketObj.rotation_euler[1]) - socketObj.rotation_euler[2] -= 3.14159 - # Rename object - socketObj.name = "SOCKET_" + socketObj.name - - # attach constraint - constraint = obj.constraints.get("AttachTo") - constraintMute = False - if constraint: - constraintMute = constraint.mute - constraint.mute = True - - for mesh, select, viewport, hide in [(mesh, mesh.hide_select, mesh.hide_viewport, mesh.hide_get()) for mesh in obj.children if mesh.type == "MESH" and mesh.data.isExportCharacterPart]: - # Remove invalid character for filename - filename = re.sub("[\\/:<>\'\"|?*&]", "", armatureName + "_" + mesh.name).strip() - # Check duplicate from arrCharacterObject - checkDuplicate = len([obj for obj in arrCharacterObject if obj["name"].startswith(filename)]) - # Add number if have duplicate name - filename += ("", "_" + str(checkDuplicate) )[bool(checkDuplicate)] - - # Check if file alredy exist and overwrite - if not os.path.isfile(os.path.join(directory, filename + ".fbx")) or preferences.CHAR_OverwriteFile: - obj.select_set(state=True) - # select children mesh - mesh.hide_set(False) - mesh.hide_select = False - mesh.hide_viewport = False - mesh.select_set(state=True) - - # Export character option - bpy.ops.export_scene.fbx( - filepath= os.path.join(directory, filename + ".fbx"), - check_existing=False, - filter_glob="*.fbx", - use_selection=True, - use_active_collection=False, - global_scale=preferences.CHAR_FBXGlobalScale, - apply_unit_scale=preferences.CHAR_FBXApplyUnitScale, - apply_scale_options=preferences.CHAR_FBXApplyScaleOptions, - bake_space_transform=preferences.CHAR_FBXBakeSpaceTransform, - object_types={"MESH", "ARMATURE"}, - use_mesh_modifiers=preferences.CHAR_FBXUseMeshModifiers, - mesh_smooth_type=preferences.CHAR_FBXMeshSmoothType, - use_subsurf=preferences.CHAR_FBXUseSubsurf, - use_mesh_edges=preferences.CHAR_FBXUseMeshEdges, - use_tspace=preferences.CHAR_FBXUseTSpace, - use_custom_props=False, - add_leaf_bones=preferences.CHAR_FBXAddLeafBones, - primary_bone_axis=preferences.CHAR_FBXPrimaryBoneAxis, - secondary_bone_axis=preferences.CHAR_FBXSecondaryBoneAxis, - use_armature_deform_only=preferences.CHAR_FBXOnlyDeformBones, - armature_nodetype=preferences.CHAR_FBXArmatureFBXNodeType, - bake_anim=False, - path_mode="AUTO", - embed_textures=False, - batch_mode="OFF", - axis_forward=preferences.CHAR_FBXAxisUp, - axis_up=preferences.CHAR_FBXAxisForward - ) - - arrCharacterObject.append({ - "name": filename, - "skeleton": preferences.CHAR_CharacterSkeleton - }) - - obj.select_set(state=False) - # deselect children mesh - mesh.hide_set(hide) - mesh.hide_select = select - mesh.hide_viewport = viewport - mesh.select_set(state=False) - - # restore location - obj.location = originalLocation - - if obj.get("UE4RIG"): - bone.afterExport() - if not obj.get("UE4RIGHASTEMPBONE"): - bone.removeTemporaryBone() - elif obj.get("UE4RIGGED"): - # change name to original name - obj.name = armatureName - else: - obj.name = armatureName - - # restore "UE4RIGVERSION" if exist - if rigVersion is not None: - obj["UE4RIGVERSION"] = rigVersion - - # restore socket - if preferences.CHAR_Socket and socketObjects: - for index, socketObj in enumerate(socketObjects, start=0): - # deselect object - socketObj.select_set(state=False) - socketObj.hide_select = socketArrInfo[index][0] - socketObj.hide_viewport = socketArrInfo[index][1] - # Scale - for index, val in enumerate(socketObj.scale): - socketObj.scale[index] = val * 100 - # Rotate - socketObj.rotation_euler[0] = abs(socketObj.rotation_euler[0]) if (socketObj.rotation_euler[0] < 0) else -abs(socketObj.rotation_euler[0]) - socketObj.rotation_euler[1] = abs(socketObj.rotation_euler[1]) if (socketObj.rotation_euler[1] < 0) else -abs(socketObj.rotation_euler[1]) - socketObj.rotation_euler[2] += 3.14159 - # Rename object - socketObj.name = socketObj.name[7:] - - # restore attach constraint - if constraint: - constraint.mute = constraintMute - - # Restore hide attribute of socket collection - if (socketCollection and preferences.CHAR_Socket): - for key, val in socketHideProp.items(): - setattr(socketCollection, "hide_" + key, val) - - # Select all object after export - for obj in selectedObjects: - obj.select_set(state=True) - context.view_layer.objects.active = oldActiveObject - - if preferences.exportOption in ["UNREAL", "BOTH"] and self.remote.remote_nodes: - # Unreal engine import option - unrealsetting = { - "folder": directory, - "files": arrCharacterObject, - "subfolder": subFolder, - "overwrite_file": preferences.CHAR_OverwriteFile, - "temporary": preferences.exportOption == "UNREAL", - - "import_content_type": preferences.CHAR_ImportContentType, - "vertex_color_import_option": preferences.CHAR_VertexColorImportOption, - "vertex_override_color": list(preferences.CHAR_VertexOverrideColor), - "update_skeleton_reference_pose": preferences.CHAR_UpdateSkeletonReferencePose, - "use_t0_as_ref_pose": preferences.CHAR_UseT0AsRefPose, - "preserve_smoothing_groups": preferences.CHAR_PreserveSmoothingGroups, - "import_meshes_in_bone_hierarchy": preferences.CHAR_ImportMeshesInBoneHierarchy, - "import_morph_targets": preferences.CHAR_ImportMorphTargets, - "import_mesh_lo_ds": preferences.CHAR_ImportMeshLODs, - "normal_import_method": preferences.CHAR_NormalImportMethod, - "normal_generation_method": preferences.CHAR_NormalGenerationMethod, - "compute_weighted_normals": preferences.CHAR_ComputeWeightedNormals, - "threshold_position": preferences.CHAR_ThresholdPosition, - "threshold_tangent_normal": preferences.CHAR_ThresholdTangentNormal, - "threshold_uv": preferences.CHAR_ThresholdUV, - "physics_asset": preferences.CHAR_PhysicsAsset, - - "import_translation": list(preferences.CHAR_ImportTranslation), - "import_rotation": list(preferences.CHAR_ImportRotation), - "import_uniform_scale": preferences.CHAR_ImportUniformScale, - - "convert_scene": preferences.CHAR_ConvertScene, - "force_front_x_axis": preferences.CHAR_ForceFrontXAxis, - "convert_scene_unit": preferences.CHAR_ConvertSceneUnit, - "override_full_name": preferences.CHAR_OverrideFullName, - - "material_search_location": preferences.CHAR_MaterialSearchLocation, - "import_material": preferences.CHAR_ImportMaterial, - "import_texture": preferences.CHAR_ImportTexture, - "invert_normal_maps": preferences.CHAR_InvertNormalMaps, - "reorder_material_to_fbx_order": preferences.CHAR_ReorderMaterialToFBXOrder - } - - # Save unreal engine import option into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "unrealenginesetting.json"), "w+") - file.write(json.dumps(unrealsetting)) - file.close() - - for node_id in [user["node_id"] for user in self.remote.remote_nodes]: - # tell unreal engine tor run python script - self.remote.open_command_connection(node_id) - # self.remote.run_command(os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "Character.py"), exec_mode="ExecuteFile") - # Fix Python PATH Script Issue #9 - self.remote.run_command("execfile(\"" + os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "Character.py").replace(os.sep, "/") +"\")", exec_mode="ExecuteStatement") - self.remote.close_command_connection() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Export Character Done") - except Exception: - pass - - return {"FINISHED"} - -# operator export - -Ops = [ - OP_IMPORTARMATURE, - OP_UpdateSkeletonList, - OP_CharacterRotateBone, - OP_CharacterGenerateRig, - OP_CharacterRemoveTemporaryBone, - OP_CharacterAddTwistBone, - OP_CharacterRemoveTwistBone, - OP_CHARUpdateExportProfile, - OP_CHARCreateExportProfile, - OP_CHARRemoveExportProfile, - OP_ExportCharacter -] \ No newline at end of file diff --git a/UE4WS_CharacterBoneManipulation.py b/UE4WS_CharacterBoneManipulation.py deleted file mode 100644 index 4e978be..0000000 --- a/UE4WS_CharacterBoneManipulation.py +++ /dev/null @@ -1,2323 +0,0 @@ -import bpy, math -from mathutils import (Matrix, Vector) -from . import boneShape -import inspect - -class BoneManipulation: - """ - Class for bone manipulation - - ... - - Attributes - ---------- - context : bpy.context - blender context data - objectActive : bpy.types.Object - object data-block defining an object in a scene - armatureName : str - original armature name - - Methods - ------- - getBone(name : str) - get data bone in edit mode - poseBone(name : str) - get data bone in pose mode - addIKBone() - add ik bone - removeTemporaryBone() - remove temporary bone (bone that have "TWEAK_" in name) - rotateBone() - make bone orient same as unreal engine mannequin - beforeExport() - do something before export character - - unparent socket - - uncheck deform bone and change bone name - - rename temporary bone - - rename vertex group (children mesh) - - add IK bone - - scale to unreal engine mannequin - - restore socket - - rename armature to root - afterExport(): - do something after export character - - unparent socket - - remove IK bone - - rename temporary bone - - check deform bone and change bone name - - rename vertex group (children mesh) - - scale original - - restore socket - - rename armature to original name - spineRecursiveBone(children : bpy.types.PoseBone, collection : bpy.types.Collection, vertices : list tuple, edges : list tuple, group : bpy.types.BoneGroup): - recursive function to make custom shape to spine - neckRecursiveBone(children : bpy.types.PoseBone, collection : bpy.types.Collection, vertices : list tuple, edges : list tuple, group : bpy.types.BoneGroup): - recursive function to make custom shape to neck - generateRig(): - generate rig - - uncheck deform bone and change bone name - - rename temporary bone and make copy bone - - rename vertex group (children mesh) - - add IK bone if humanoid - - create bone control and custom shape - - scale to unreal engine mannequin - """ - - def __init__(self, context): - self.context = context - self.activeObject = context.active_object - self.armatureName = context.active_object.name - - def getBone(self, name): - """get data bone in edit mode - - :param name: bone name - :type name: str - :returns: Editmode bone in an Armature data-block - :rtype: bpy.types.EditBone - """ - - return self.activeObject.data.edit_bones.get(name) - - def poseBone(self, name): - """get data bone in pose mode - - :param name: bone name - :type name: str - :returns: Channel defining pose data for a bone in a Pose - :rtype: bpy.types.PoseBone - """ - - return self.activeObject.pose.bones.get(name) - - # https://blender.stackexchange.com/questions/19754/how-to-set-calculate-pole-angle-of-ik-constraint-so-the-chain-does-not-move - def signed_angle(self, vector_u, vector_v, normal): - # Normal specifies orientation - angle = vector_u.angle(vector_v) - if vector_u.cross(vector_v).angle(normal) < 1: - angle = -angle - return angle - - def get_pole_angle(self, base_bone, ik_bone, pole_location): - pole_normal = (ik_bone.tail - base_bone.head).cross(pole_location - base_bone.head) - projected_pole_axis = pole_normal.cross(base_bone.tail - base_bone.head) - return self.signed_angle(base_bone.x_axis, projected_pole_axis, base_bone.tail - base_bone.head) - - def moveBoneLayer(self, boneList, layerList): - """move bone layer in edit mode - - :param name: boneList - :type name: list[(editBones)] - :param name: layerList - :type name: list[(int)] - :returns: None - :rtype: None - """ - - for bone in boneList: - bone.select = True - bone.select_head = True - bone.select_tail = True - bpy.ops.armature.bone_layers(layers=tuple([(i in layerList) for i in range(32)])) - bpy.ops.armature.select_all(action="DESELECT") - - def generateCustomBoneShape(self, poseBone, collection, boneShape, boneGroup, scaleBone = False): - """generate custom bone - - :param name: poseBone - :type name: poseBone - :param name: collection - :type name: collection - :param name: boneShape - :type name: [[vertices], [edges], [face]] - :param name: boneGroup - :type name: boneGroup - :param name: scaleBone - :type name: boolean - :returns: None - :rtype: None - """ - mesh = bpy.data.meshes.new("UE4WSBS_" + poseBone.name) - objShape = bpy.data.objects.new("UE4WSBS_" + poseBone.name,mesh) - collection.objects.link(objShape) - mesh.from_pydata(*boneShape) - - poseBone.custom_shape = objShape - poseBone.use_custom_shape_bone_size = scaleBone - poseBone.bone_group = boneGroup - - def addFloorConstraint(self, poseBone, floorBoneName, offset): - """create floor constraint to poseBone - - :param name: poseBone - :type name: poseBone - :param name: floorBoneName - :type name: string - :param name: offset - :type name: int - :returns: None - :rtype: None - """ - - floorConstarint = poseBone.constraints.new("FLOOR") - floorConstarint.name = "FLOOR" - floorConstarint.show_expanded = False - floorConstarint.target = self.activeObject - floorConstarint.subtarget = floorBoneName - floorConstarint.offset = offset - floorConstarint.use_rotation = True - floorConstarint.target_space = "POSE" - floorConstarint.owner_space = "POSE" - - def addIKBone(self): - """add ik bone - - :returns: None - :rtype: None - """ - - oldMode = self.activeObject.mode - bpy.ops.object.mode_set(mode="EDIT") - - editBones = self.activeObject.data.edit_bones - rootBones = ["foot", "hand"] - sides = ["l", "r"] - handGun = None - - oldMirror = self.activeObject.data.use_mirror_x - self.activeObject.data.use_mirror_x = False - - for rootBone in rootBones: - root = editBones.new("ik_" + rootBone +"_root") - root.head = (0,0,0) - root.tail = (0,1.2,0) - root.roll = 0.0 - self.moveBoneLayer([root], [31]) - - if rootBone == "hand" and self.getBone("hand_r") is not None: - if self.getBone("ik_hand_gun") is None: - rightHand = self.getBone("hand_r") - gun = editBones.new("ik_hand_gun") - handGun = gun - gun.head = rightHand.head - gun.tail = rightHand.tail - gun.roll = rightHand.roll - gun.parent = self.getBone("ik_" + rootBone +"_root") - self.moveBoneLayer([gun], [31]) - - for side in sides: - bone = self.getBone(rootBone + "_" + side) - if bone is not None: - if self.getBone("ik_" + rootBone + "_" + side) is None: - ik = editBones.new("ik_" + rootBone + "_" + side) - ik.head = bone.head - ik.tail = bone.tail - ik.roll = bone.roll - ik.parent = (self.getBone("ik_" + rootBone +"_root"), handGun)[handGun is not None] - self.moveBoneLayer([ik], [31]) - - bpy.ops.armature.select_all(action="DESELECT") - - self.activeObject.data.use_mirror_x = oldMirror - bpy.ops.object.mode_set(mode=oldMode) - - def removeTemporaryBone(self): - """remove temporary bone (bone that have "ORIENT_" in name) - - :returns: None - :rtype: None - """ - - oldMode = self.activeObject.mode - bpy.ops.object.mode_set(mode="EDIT") - - bpy.ops.armature.select_all(action="DESELECT") - - editBones = self.activeObject.data.edit_bones - - # remove temporary bone - for bone in [bone for bone in editBones if bone.name.startswith("ORIENT_")]: - for chidlBone in [chidlBone for chidlBone in bone.children if not chidlBone.name.startswith("ORIENT_")]: - chidlBone.parent = editBones.get(bone.name.replace("ORIENT_", "")) - editBones.remove(bone) - - bpy.ops.object.mode_set(mode=oldMode) - - def rotateBone(self): - """make bone orient same as unreal engine mannequin - - :returns: None - :rtype: None - """ - - oldMode = self.activeObject.mode - bpy.ops.object.mode_set(mode="EDIT") - - bpy.ops.armature.select_all(action="DESELECT") - - editBones = self.activeObject.data.edit_bones - oldPivot = self.context.scene.tool_settings.transform_pivot_point - oldMirror = self.activeObject.data.use_mirror_x - - self.activeObject.data.use_mirror_x = False - self.context.scene.tool_settings.transform_pivot_point = "ACTIVE_ELEMENT" - - # remove temporary bone - for bone in [bone for bone in editBones if bone.name.startswith("ORIENT_")]: - for chidlBone in [chidlBone for chidlBone in bone.children if not chidlBone.name.startswith("ORIENT_")]: - chidlBone.parent = editBones.get(bone.name.replace("ORIENT_", "")) - editBones.remove(bone) - - # filter bone and parent for custom bone, tuple: (bone: editBones, parentName: str) - customBones = [(editBone, editBone.parent.name) for editBone in editBones if editBone.get("rotateBone", None) is None and editBone.parent is not None and editBone.parent.get("rotateBone", False)] - - for bone in [editBone for editBone in editBones if self.activeObject.data.bones[editBone.name].rotateBone]: - if self.getBone("ORIENT_" + bone.name) is None: - # create new temporary bone - newBone = editBones.new("ORIENT_" + bone.name) - newBone.head = bone.head - newBone.tail = bone.tail - newBone.roll = bone.roll - newBone.use_deform = bone.use_deform - - # rotate active bone - bpy.ops.armature.select_all(action="DESELECT") - editBones.active = newBone - editBones.active.select = True - editBones.active.select_head = True - editBones.active.select_tail = True - - dataBone = self.activeObject.data.bones[bone.name] - - # bug on blender version 2.83 - # https://github.com/anasrar/Blender-UE4-Workspace/issues/5 - # https://blenderartists.org/t/why-i-got-difference-rotate-bone-result-in-version-2-82-and-2-83/1234794 - # I assume this bug wrong rotation bone only in 2.83 LTS version, so i decide to reverse the bone rotation only on 2.83 LTS - rotationRadian = dataBone.rotationRadian if bpy.app.version[0:2] in [(2, 83)] else -dataBone.rotationRadian - bpy.ops.transform.rotate(value=rotationRadian, orient_axis=dataBone.orientAxis, orient_type="NORMAL", mirror=False) - # add roll - newBone.roll += dataBone.orientRoll - - # move orient bone to last layer - bpy.ops.armature.bone_layers(layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True)) - - parentLists = bone.parent_recursive - - # FOOT - if len(parentLists) > 1 and parentLists[1].get("UE4RIGTYPE") == "LEG_HUMAN": - newBone.tail[2] += (newBone.head[2]-newBone.tail[2])*0.95 - bpy.ops.armature.select_all(action="DESELECT") - newBone.select = True - newBone.select_head = True - newBone.select_tail = True - bpy.ops.armature.calculate_roll(type="GLOBAL_NEG_X") - # BALL - elif len(parentLists) > 2 and parentLists[2].get("UE4RIGTYPE") == "LEG_HUMAN": - newBone.tail[1] = newBone.head[1] - newBone.tail[0] = newBone.head[0] - # FACE JAW HUMANOID - elif bone.get("UE4RIGTYPE") == "JAW": - newBone.tail[0] = newBone.head[0] - newBone.tail[1] = newBone.head[1] + bone.length - newBone.tail[2] = newBone.head[2] - newBone.roll = 0 - - # set length bone - newBone.length = 0.1 if newBone.length >= 0.1 else newBone.length - - # set parent - if bone.parent: - orientBone = self.getBone("ORIENT_" + bone.parent.name) - newBone.parent = orientBone if orientBone else bone.parent - - # restore custom bone parent - for editBone, parentName in customBones: - editBone.parent = editBones.get("ORIENT_" + parentName) - - bpy.ops.armature.select_all(action="DESELECT") - self.activeObject.data.layers[31] = True - - self.context.scene.tool_settings.transform_pivot_point = oldPivot - self.activeObject.data.use_mirror_x = oldMirror - bpy.ops.object.mode_set(mode=oldMode) - - def beforeExport(self): - """do something before export character - - unparent socket - - uncheck deform bone and change bone name - - rename temporary bone - - rename vertex group (children mesh) - - add IK bone - - scale to unreal engine mannequin - - restore socket - - rename armature to root - - :returns: None - :rtype: None - """ - - oldMode = self.activeObject.mode - bpy.ops.object.mode_set(mode="EDIT") - - bpy.ops.armature.select_all(action="DESELECT") - oldMirror = self.activeObject.data.use_mirror_x - self.activeObject.data.use_mirror_x = False - - # unparent socket - socketObjects = [obj for obj in self.activeObject.children if obj.type == "EMPTY" and obj.get("isSocket")] - # socket info for restore (dict {socketObj, parent_type, parent_bone}) - socketArrInfo = [] - for socketObj in socketObjects: - socketArrInfo.append({ - "socketObj": socketObj, - "parent_type": socketObj.parent_type, - "parent_bone": socketObj.parent_bone - }) - socketObj.parent = None - - # uncheck deform bone and change bone name - for bone in [bone for bone in self.activeObject.data.edit_bones if bone.get("boneOrient", False)]: - bone.use_deform = False - bone.name = "TWEAK_" + bone.name - # rename temporary bone - for bone in [bone for bone in self.activeObject.data.edit_bones if bone.name.startswith("ORIENT_")]: - bone.name = bone.name.replace("ORIENT_", "") - # rename vertex group (children mesh) because rename bone also affect vertex group name - for mesh in [mesh for mesh in self.activeObject.children if mesh.type == "MESH"]: - for group in [group for group in mesh.vertex_groups if group.name.startswith("TWEAK_")]: - group.name = group.name.replace("TWEAK_", "") - - self.activeObject.data.use_mirror_x = oldMirror - bpy.ops.object.mode_set(mode="OBJECT") - # add IK bone - if self.activeObject.get("UE4RIGTYPE") == "HUMANOID": - self.addIKBone() - # Deselect all object - bpy.ops.object.select_all(action="DESELECT") - # scale to unreal engine mannequin - self.activeObject.select_set(state=True) - self.activeObject.scale = (100, 100, 100) - bpy.ops.object.transform_apply(location = False, scale = True, rotation = False) - self.activeObject.scale = (0.01, 0.01, 0.01) - self.activeObject.select_set(state=False) - - # restore socket - for socketDict in socketArrInfo: - socketObj = socketDict["socketObj"] - socketObj.parent = self.activeObject - socketObj.parent_type = socketDict["parent_type"] - if socketDict["parent_type"] == "BONE": - socketObj.parent_bone = socketDict["parent_bone"] - bone = self.poseBone(socketDict["parent_bone"]) - if bone: - socketObj.matrix_parent_inverse = (self.activeObject.matrix_world @ Matrix.Translation(bone.tail - bone.head) @ bone.matrix).inverted() @ Matrix.Scale(100, 4) - else: - socketObj.matrix_parent_inverse = self.activeObject.matrix_world.inverted() - - # rename armature to root - self.activeObject.name = "root" - bpy.ops.object.mode_set(mode=oldMode) - - def afterExport(self): - """do something after export character - - unparent socket - - remove IK bone - - rename temporary bone - - check deform bone and change bone name - - rename vertex group (children mesh) - - scale original - - restore socket - - rename armature to original name - """ - - oldMode = self.activeObject.mode - bpy.ops.object.mode_set(mode="EDIT") - - # unparent socket - socketObjects = [obj for obj in self.activeObject.children if obj.type == "EMPTY" and obj.get("isSocket")] - # socket info for restore (dict {socketObj, parent_type, parent_bone}) - socketArrInfo = [] - for socketObj in socketObjects: - socketArrInfo.append({ - "socketObj": socketObj, - "parent_type": socketObj.parent_type, - "parent_bone": socketObj.parent_bone - }) - socketObj.parent = None - - editBones = self.activeObject.data.edit_bones - oldMirror = self.activeObject.data.use_mirror_x - self.activeObject.data.use_mirror_x = False - - # remove IK bone - if self.activeObject.get("UE4RIGTYPE") == "HUMANOID": - IKBonesName = ["ik_hand_l", "ik_hand_r", "ik_foot_l", "ik_foot_r", "ik_hand_gun", "ik_hand_root", "ik_foot_root"] - for boneName in IKBonesName: - bone = self.getBone(boneName) - if bone is not None: - editBones.remove(bone) - # rename temporary bone check deform bone - for bone in [bone for bone in editBones if bone.name.startswith("TWEAK_") and bone.get("boneOrient", False)]: - orientBone = self.getBone(bone.name.replace("TWEAK_", "")) - orientBone.name = "ORIENT_" + orientBone.name - bone.use_deform = True - bone.name = bone.name.replace("TWEAK_", "") - # rename vertex group (children mesh) because rename bone also affect vertex group name - for mesh in [mesh for mesh in self.activeObject.children if mesh.type == "MESH"]: - for group in [group for group in mesh.vertex_groups if group.name.startswith("ORIENT_")]: - group.name = group.name.replace("ORIENT_", "") - - self.activeObject.data.use_mirror_x = oldMirror - - bpy.ops.object.mode_set(mode="OBJECT") - # Deselect all object - bpy.ops.object.select_all(action="DESELECT") - # scale original - self.activeObject.select_set(state=True) - bpy.ops.object.transform_apply(location = False, scale = True, rotation = False) - self.activeObject.select_set(state=False) - - # restore socket - for socketDict in socketArrInfo: - socketObj = socketDict["socketObj"] - socketObj.parent = self.activeObject - socketObj.parent_type = socketDict["parent_type"] - if socketDict["parent_type"] == "BONE": - socketObj.parent_bone = socketDict["parent_bone"] - bone = self.poseBone(socketDict["parent_bone"]) - if bone: - socketObj.matrix_parent_inverse = (self.activeObject.matrix_world @ Matrix.Translation(bone.tail - bone.head) @ bone.matrix).inverted() - else: - socketObj.matrix_parent_inverse = self.activeObject.matrix_world.inverted() - - # rename armature to original name - self.activeObject.name = self.armatureName - - bpy.ops.object.mode_set(mode=oldMode) - - def generateRig(self): - """generate rig - - uncheck deform bone and change bone name - - rename temporary bone and make copy bone - - rename vertex group (children mesh) - - add IK bone if humanoid - - create bone control and custom shape - - scale to unreal engine mannequin - - set inverse for eyelid - - :returns: None - :rtype: None - """ - - oldMode = self.activeObject.mode - bpy.ops.object.mode_set(mode="EDIT") - editBones = self.activeObject.data.edit_bones - - bpy.ops.armature.select_all(action="DESELECT") - oldMirror = self.activeObject.data.use_mirror_x - self.activeObject.data.use_mirror_x = False - - # uncheck deform bone and change bone name - for bone in [bone for bone in editBones if bone.get("rotateBone", False)]: - bone.use_deform = False - bone.name = "TWEAK_" + bone.name - # rename temporary bone and make copy bone - for bone in [bone for bone in editBones if bone.name.startswith("ORIENT_")]: - bone.name = bone.name.replace("ORIENT_", "") - copyBone = editBones.new("TARGET_" + bone.name) - copyBone.use_deform = False - copyBone.head = bone.head - copyBone.tail = bone.tail - copyBone.roll = bone.roll - copyBone.parent = editBones.get("TWEAK_" + bone.name) - copyBone.select = True - copyBone.select_head = True - copyBone.select_tail = True - bpy.ops.armature.bone_layers(layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False)) - copyBone.select = False - copyBone.select_head = False - copyBone.select_tail = False - # rename vertex group (children mesh) because rename bone also affect vertex group name - for mesh in [mesh for mesh in self.activeObject.children if mesh.type == "MESH"]: - for group in [group for group in mesh.vertex_groups if group.name.startswith("TWEAK_")]: - group.name = group.name.replace("TWEAK_", "") - - self.activeObject.data.use_mirror_x = oldMirror - bpy.ops.object.mode_set(mode="OBJECT") - # add IK bone if humanoid - if self.activeObject.data.UE4RIGTYPE == "HUMANOID": - self.addIKBone() - # create group bone - boneGroups = self.activeObject.pose.bone_groups - redGroup = boneGroups.new(name="red") - redGroup.color_set = "CUSTOM" - redGroup.colors.select = [0.9, 0.0, 0.0] - redGroup.colors.normal = [0.8, 0.0, 0.0] - redGroup.colors.active = [1, 0.0, 0.0] - - greenGroup = boneGroups.new(name="green") - greenGroup.color_set = "CUSTOM" - greenGroup.colors.select = [0.0, 0.9, 0.0] - greenGroup.colors.normal = [0.0, 0.8, 0.0] - greenGroup.colors.active = [0.0, 1, 0.0] - - yellowGroup = boneGroups.new(name="yellow") - yellowGroup.color_set = "CUSTOM" - yellowGroup.colors.select = [0.8, 0.8, 0.0] - yellowGroup.colors.normal = [0.7, 0.7, 0.0] - yellowGroup.colors.active = [1.0, 1.0, 0.0] - - blueGroup = boneGroups.new(name="blue") - blueGroup.color_set = "CUSTOM" - blueGroup.colors.select = [0.0, 0.3, 0.7] - blueGroup.colors.normal = [0.0, 0.3, 0.5] - blueGroup.colors.active = [0.0, 0.5, 1] - - leftSideGroup = boneGroups.new(name="leftSide") - leftSideGroup.color_set = "CUSTOM" - leftSideGroup.colors.select = [0.0, 0.4, 0.9] - leftSideGroup.colors.normal = [0.0, 0.55, 0.9] - leftSideGroup.colors.active = [0.0, 0.5, 1.0] - - rightSideGroup = boneGroups.new(name="rightSide") - rightSideGroup.color_set = "CUSTOM" - rightSideGroup.colors.select = [0.95, 0.57, 0.0] - rightSideGroup.colors.normal = [0.93, 0.56, 0.0] - rightSideGroup.colors.active = [1.0, 0.6, 0.0] - - propGroup = boneGroups.new(name="prop") - propGroup.color_set = "CUSTOM" - propGroup.colors.select = [1.0, 0.1, 0.95] - propGroup.colors.normal = [0.95, 0.0, 1.0] - propGroup.colors.active = [1.0, 0.0, 0.925] - - # add control bone - bpy.ops.object.mode_set(mode="EDIT") - # collection - collection = bpy.data.collections.get("UE4WSBoneShape", False) - if (not collection): - collection = bpy.data.collections.new("UE4WSBoneShape") - self.context.scene.collection.children.link(collection) - # exclude bone shape collection and hide - collection.hide_viewport = True - self.context.view_layer.layer_collection.children.get(collection.name).exclude = True - - self.activeObject.data.use_mirror_x = False - oldPivot = self.context.scene.tool_settings.transform_pivot_point - self.context.scene.tool_settings.transform_pivot_point = "MEDIAN_POINT" - - # ROOT BONE - if not editBones.get("root"): - root = editBones.new("root") - root.head = [0, 0, 0] - root.tail = [0, 0.05, 0] - root.roll = 0 - for bone in [bone for bone in editBones if bone.parent is None and bone.name != "root"]: - bone.parent = root - - mesh = bpy.data.meshes.new("UE4WSBS_root") - objRootShape = bpy.data.objects.new(mesh.name,mesh) - collection.objects.link(objRootShape) - mesh.from_pydata(*boneShape.root()) - bpy.ops.object.mode_set(mode="POSE") - poseBone = self.poseBone("root") - if poseBone is None: - poseBone = self.poseBone("root") - poseBone.custom_shape = objRootShape - poseBone.use_custom_shape_bone_size = False - poseBone.bone_group = redGroup - bpy.ops.object.mode_set(mode="EDIT") - - # FINGER - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "FINGER"]: - bpy.ops.armature.select_all(action="DESELECT") - boneName = bone.name - # CONTROL BONE - control = editBones.new(boneName.replace("TWEAK_", "CONTROL_")) - control.use_deform = False - control.head = bone.head + (bone.z_axis * 0.025) - control.tail = bone.tail + (bone.z_axis * 0.025) - control.roll = bone.roll - control.length = 0.05 - control.parent = bone.parent - bone["subtargetRotation"] = control.name - # CONTROL IK BONE - # filter children with starts string "TWEAK_" - filterChildren = [bone for bone in bone.children_recursive if bone.name.startswith("TWEAK_") and not bone.get("UE4RIGTYPE")] - # get index bone that have RIGTYPE - endIndex = next((index for (index, bn) in enumerate(filterChildren) if bn.get("UE4RIGTYPE")), None) - if endIndex is not None: - filterChildren = filterChildren[:endIndex:] - for bn in filterChildren: - bn.use_connect = False - lastChildBone = filterChildren[-1] - ikControl = editBones.new(boneName.replace("TWEAK_", "IKTARGET_")) - ikControl.use_deform = False - ikControl.head = lastChildBone.tail - ikControl.tail = lastChildBone.tail + (lastChildBone.y_axis * 0.05) - ikControl.roll = lastChildBone.roll - ikControl.length = 0.05 - ikControl.parent = bone.parent - self.moveBoneLayer([control, ikControl], [0]) - bone["subtargetIK"] = ikControl.name - - # LEG_HUMAN - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "LEG_HUMAN"]: - bone.use_connect = False - bpy.ops.armature.select_all(action="DESELECT") - boneName = bone.name - # POLE BONE - canCreatePole = [bn for bn in bone.children if bn.name.startswith("TWEAK_") and not bn.get("UE4RIGTYPE") and not "_twist_" in bn.name] - if canCreatePole: - calfBone = canCreatePole[0] - calfBone.use_connect = False - - # CHECK IF FOOT AND TOE EXIST - footBone = [bn for bn in calfBone.children if bn.name.startswith("TWEAK_") and not bn.get("UE4RIGTYPE") and not "_twist_" in bn.name] - footBone = footBone[0] if footBone else None - toeBone = [bn for bn in footBone.children if bn.name.startswith("TWEAK_") and not bn.get("UE4RIGTYPE") and not "_twist_" in bn.name] if footBone else None - toeBone = toeBone[0] if toeBone else None - - vA = calfBone.vector - vB = calfBone.tail - bone.head - - vElbow = (vA.project(vB) - vA).normalized() * vB.length - - pole = editBones.new(boneName.replace("TWEAK_", "IKPOLE_")) - pole.use_deform = False - pole.head = bone.tail + vElbow - pole.tail = pole.head - vElbow/8 - pole.roll = 0 - pole.length = 0.25 - - # VIS POLE - visPole = editBones.new(calfBone.name.replace("TWEAK_", "VISPOLE_")) - visPole.use_deform = False - visPole.head = pole.head - visPole.tail = calfBone.head - visPole.roll = 0 - - # IK TARGET BONE - ikTarget = editBones.new(calfBone.name.replace("TWEAK_", "IKTARGET_")) - ikTarget.use_deform = False - ikTarget.head = calfBone.tail if not footBone else footBone.head - ikTarget.tail = (calfBone.tail + Vector((0, 0.15, 0))) if not footBone else footBone.tail - ikTarget.roll = 0 if not footBone else footBone.roll - # CONTROLLER BONE - control = editBones.new((calfBone.name.replace("TWEAK_", "CONTROL_") if not footBone else footBone.name.replace("TWEAK_", "CONTROL_"))) - control.use_deform = False - control.head = calfBone.tail if not footBone else footBone.head - control.tail = control.head + Vector((0, 0.2, 0)) if not footBone else footBone.tail - control.roll = 0 if not footBone else footBone.roll - ikTarget.parent = control - - # IK BONE - ikBone1 = editBones.new(boneName.replace("TWEAK_", "IK_")) - ikBone1.use_deform = False - ikBone1.head = bone.head - ikBone1.tail = bone.tail - ikBone1.roll = bone.roll - ikBone1.parent = bone.parent - ikBone2 = editBones.new(calfBone.name.replace("TWEAK_", "IK_")) - ikBone2.use_deform = False - ikBone2.head = calfBone.head - ikBone2.tail = calfBone.tail - ikBone2.roll = calfBone.roll - ikBone2.parent = ikBone1 - ikBone2.use_connect = False - - # FK BONE - fkBone1 = editBones.new(boneName.replace("TWEAK_", "FK_")) - fkBone1.use_deform = False - fkBone1.head = bone.head - fkBone1.tail = bone.tail - fkBone1.roll = bone.roll - fkBone1.parent = bone.parent - fkBone2 = editBones.new(calfBone.name.replace("TWEAK_", "FK_")) - fkBone2.use_deform = False - fkBone2.head = calfBone.head - fkBone2.tail = calfBone.tail - fkBone2.roll = calfBone.roll - fkBone2.parent = fkBone1 - fkBone2.use_connect = False - if footBone: - footBone.use_connect = False - fkBone3 = editBones.new(footBone.name.replace("TWEAK_", "FK_")) - fkBone3.use_deform = False - fkBone3.head = footBone.head - fkBone3.tail = footBone.tail - fkBone3.roll = footBone.roll - fkBone3.parent = fkBone2 - fkBone3.use_connect = False - - # STRETCH BONE - stretchBone1 = editBones.new(boneName.replace("TWEAK_", "STRETCH_")) - stretchBone1.use_deform = False - stretchBone1.head = bone.head - stretchBone1.tail = bone.tail - stretchBone1.roll = bone.roll - stretchBone1.parent = ikBone1 - stretchBone2 = editBones.new(calfBone.name.replace("TWEAK_", "STRETCH_")) - stretchBone2.use_deform = False - stretchBone2.head = calfBone.head - stretchBone2.tail = calfBone.tail - stretchBone2.roll = calfBone.roll - stretchBone2.parent = stretchBone1 - stretchBone2.use_connect = False - - bone["subtargetIK"] = ikTarget.name - bone["subtargetPole"] = pole.name - bone["footBone"] = bool(footBone) - bone["toeBone"] = bool(toeBone) - - # move to 29 layer - self.moveBoneLayer([bone, calfBone, ikTarget, ikBone1, ikBone2, stretchBone1, stretchBone2], [29]) - - if footBone: - # PIVOT HEEL, FOOT AND CONTROL - pivotHeel = editBones.new(footBone.name.replace("TWEAK_", "PIVOTHEEL_")) - pivotHeel.use_deform = False - pivotHeel.head = footBone.head - Vector((0, -0.075, footBone.head[2])) - pivotHeel.tail = pivotHeel.head + Vector((0, 0.1, 0)) - pivotHeel.roll = 0 - pivotHeel.parent = control - - heelControl = editBones.new(footBone.name.replace("TWEAK_", "HEELCONTROL_")) - heelControl.use_deform = False - heelControl.head = pivotHeel.head - heelControl.tail = pivotHeel.tail - heelControl.roll = 0 - heelControl.parent = control - - pivotFoot = editBones.new(footBone.name.replace("TWEAK_", "PIVOTFOOT_")) - pivotFoot.use_deform = False - pivotFoot.head = footBone.tail - pivotFoot.tail = footBone.tail + Vector((0, 0.1, 0)) - pivotFoot.roll = 0 - pivotFoot.parent = pivotHeel - - ikTarget.parent = pivotFoot - - # FLOOR FOOT - floorFoot = editBones.new(footBone.name.replace("TWEAK_", "FLOOR_")) - floorFoot.use_deform = False - floorFoot.head = footBone.head - Vector((0, 0, footBone.head[2])) - floorFoot.tail = floorFoot.head + Vector((0, 0.1, 0)) - floorFoot.roll = 0 - footBone["boneHasFloor"] = True - - # move to 29 layer - self.moveBoneLayer([pivotHeel, pivotFoot, footBone], [29]) - - if toeBone: - # TOE PIVOT AND CONTROL - pivotToe = editBones.new(toeBone.name.replace("TWEAK_", "PIVOTTOE_")) - pivotToe.use_deform = False - pivotToe.head = toeBone.tail - pivotToe.tail = toeBone.tail + Vector((0, 0.1, 0)) - pivotToe.roll = 0 - pivotToe.parent = pivotHeel - - toeControl = editBones.new(toeBone.name.replace("TWEAK_", "TOECONTROL_")) - toeControl.use_deform = False - toeControl.head = toeBone.tail - toeControl.tail = toeBone.tail + Vector((0, 0.1, 0)) - toeControl.roll = 0 - toeControl.parent = control - - pivotFoot.parent = pivotToe - - ballControl = editBones.new(toeBone.name.replace("TWEAK_", "CONTROL_")) - ballControl.use_deform = False - ballControl.head = toeBone.head - ballControl.tail = toeBone.tail - ballControl.roll = toeBone.roll - ballControl.parent = control - - # move to 29 layer - self.moveBoneLayer([pivotToe, toeBone], [29]) - - # ARM_HUMAN - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "ARM_HUMAN"]: - bone.use_connect = False - bpy.ops.armature.select_all(action="DESELECT") - boneName = bone.name - # POLE BONE - canCreatePole = [bn for bn in bone.children if bn.name.startswith("TWEAK_") and not bn.get("UE4RIGTYPE") and not "_twist_" in bn.name] - if canCreatePole: - lowerarmBone = canCreatePole[0] - lowerarmBone.use_connect = False - # CHECK IF HAND EXIST - handBone = [bn for bn in lowerarmBone.children if bn.name.startswith("TWEAK_") and not bn.get("UE4RIGTYPE") and not "_twist_" in bn.name] - handBone = handBone[0] if handBone else None - - vA = lowerarmBone.vector - vB = lowerarmBone.tail - bone.head - - vKnee = (vA.project(vB) - vA).normalized() * vB.length - - # IK POLE - - pole = editBones.new(boneName.replace("TWEAK_", "IKPOLE_")) - pole.use_deform = False - pole.head = bone.tail + vKnee - pole.tail = pole.head - vKnee/8 - pole.roll = 0 - pole.length = 0.25 - - # VIS POLE - visPole = editBones.new(lowerarmBone.name.replace("TWEAK_", "VISPOLE_")) - visPole.use_deform = False - visPole.head = pole.head - visPole.tail = lowerarmBone.head - visPole.roll = 0 - - # IK TARGET BONE - ikTarget = editBones.new((lowerarmBone.name.replace("TWEAK_", "CONTROL_") if not handBone else handBone.name.replace("TWEAK_", "CONTROL_"))) - ikTarget.use_deform = False - ikTarget.head = lowerarmBone.head if not handBone else handBone.head - ikTarget.tail = lowerarmBone.tail if not handBone else handBone.tail - ikTarget.roll = lowerarmBone.roll if not handBone else handBone.roll - if not handBone: - tailLoc = (lowerarmBone.y_axis * 0.1) + lowerarmBone.tail - ikTarget.head = lowerarmBone.tail - ikTarget.tail = tailLoc - - # IK BONE - ikBone1 = editBones.new(boneName.replace("TWEAK_", "IK_")) - ikBone1.use_deform = False - ikBone1.head = bone.head - ikBone1.tail = bone.tail - ikBone1.roll = bone.roll - ikBone1.parent = bone.parent - ikBone2 = editBones.new(lowerarmBone.name.replace("TWEAK_", "IK_")) - ikBone2.use_deform = False - ikBone2.head = lowerarmBone.head - ikBone2.tail = lowerarmBone.tail - ikBone2.roll = lowerarmBone.roll - ikBone2.parent = ikBone1 - ikBone2.use_connect = False - - # FK BONE - fkBone1 = editBones.new(boneName.replace("TWEAK_", "FK_")) - fkBone1.use_deform = False - fkBone1.head = bone.head - fkBone1.tail = bone.tail - fkBone1.roll = bone.roll - fkBone1.parent = bone.parent - fkBone2 = editBones.new(lowerarmBone.name.replace("TWEAK_", "FK_")) - fkBone2.use_deform = False - fkBone2.head = lowerarmBone.head - fkBone2.tail = lowerarmBone.tail - fkBone2.roll = lowerarmBone.roll - fkBone2.parent = fkBone1 - fkBone2.use_connect = False - if handBone: - handBone.use_connect = False - fkBone3 = editBones.new(handBone.name.replace("TWEAK_", "FK_")) - fkBone3.use_deform = False - fkBone3.head = handBone.head - fkBone3.tail = handBone.tail - fkBone3.roll = handBone.roll - fkBone3.parent = fkBone2 - fkBone3.use_connect = False - - # STRETCH BONE - stretchBone1 = editBones.new(boneName.replace("TWEAK_", "STRETCH_")) - stretchBone1.use_deform = False - stretchBone1.head = bone.head - stretchBone1.tail = bone.tail - stretchBone1.roll = bone.roll - stretchBone1.parent = ikBone1 - stretchBone2 = editBones.new(lowerarmBone.name.replace("TWEAK_", "STRETCH_")) - stretchBone2.use_deform = False - stretchBone2.head = lowerarmBone.head - stretchBone2.tail = lowerarmBone.tail - stretchBone2.roll = lowerarmBone.roll - stretchBone2.parent = stretchBone1 - stretchBone2.use_connect = False - - bone["subtargetIK"] = ikTarget.name - bone["subtargetPole"] = pole.name - bone["handBone"] = bool(handBone) - - if handBone: - # FLOOR HAND - floorFoot = editBones.new(handBone.name.replace("TWEAK_", "FLOOR_")) - floorFoot.use_deform = False - floorFoot.head = handBone.head - Vector((0, 0, handBone.head[2])) - floorFoot.tail = floorFoot.head + Vector((0, 0.1, 0)) - floorFoot.roll = 0 - handBone["boneHasFloor"] = True - - # move to 29 layer - boneToMove = [bone, lowerarmBone, ikBone1, ikBone2, stretchBone1, stretchBone2] - if handBone: - boneToMove.append(handBone) - self.moveBoneLayer(boneToMove, [29]) - - # PELVIS - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "PELVIS"]: - bone.use_connect = False - - # CONTROL BONE - control = editBones.new(bone.name.replace("TWEAK_", "CONTROL_")) - control.use_deform = False - control.head = bone.head - control.tail = bone.tail - control.roll = bone.roll - - # SPINE - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "SPINE"]: - bone.use_connect = False - - targetBone = editBones.get(bone.name.replace("TWEAK_", "TARGET_")) - - childBone = next(iter([x for x in bone.children if x is not targetBone]), None) - - if childBone: - # STRETCH BONE - stretchBone = editBones.new(bone.name.replace("TWEAK_", "STRETCH_")) - stretchBone.use_deform = False - stretchBone.head = bone.head - stretchBone.tail = bone.tail - stretchBone.roll = bone.roll - stretchBone.parent = bone - - targetBone.parent = stretchBone - - bone["stretchBoneTarget"] = childBone.name - - # NECK - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "NECK"]: - bone.use_connect = False - - targetBone = editBones.get(bone.name.replace("TWEAK_", "TARGET_")) - - childBone = next(iter([x for x in bone.children if x is not targetBone]), None) - - if childBone: - # STRETCH BONE - stretchBone = editBones.new(bone.name.replace("TWEAK_", "STRETCH_")) - stretchBone.use_deform = False - stretchBone.head = bone.head - stretchBone.tail = bone.tail - stretchBone.roll = bone.roll - stretchBone.parent = bone - - targetBone.parent = stretchBone - - bone["stretchBoneTarget"] = childBone.name - - # HEAD - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "HEAD"]: - bone.use_connect = False - - # CONTROL BONE - control = editBones.new("CONTROL_" + bone.name.replace("TWEAK_", "")) - control.use_deform = False - control.head = (bone.z_axis * 0.2) + bone.head - control.tail = control.head + Vector((0, 0.25, 0)) - control.roll = 0 - control.length = 0.01 - - # VIS CONTROL - visControl = editBones.new("VISCONTROL_" + bone.name.replace("TWEAK_", "")) - visControl.use_deform = False - visControl.head = control.head - visControl.tail = bone.head - visControl.roll = 0 - - # switch case function for face bone - def SC_Jaw(bone, faceAttach): - """JAW CONTROL""" - bone.name = bone.name.replace("TWEAK_", "") + "_TWEAK" - # move to 0 layer - self.moveBoneLayer([bone], [0]) - # CONTROL BONE - control = editBones.new(bone.name.replace("_TWEAK", "_CONTROL")) - control.use_deform = False - control.head = [bone.tail[0], bone.tail[1] - 0.025, bone.tail[2]] - control.tail = bone.tail - control.roll = bone.roll - control.length = 0.05 - control.parent = bone.parent - - bone["subtargetIK"] = control.name - - def SC_Landmark(bone, faceAttach): - """LANDMARK CONTROL""" - bone.name = bone.name.replace("TWEAK_", "") + "_TWEAK" - # move to 29 layer - self.moveBoneLayer([bone], [29]) - # CONTROL BONE - control = editBones.new(bone.name.replace("_TWEAK", "_CONTROL")) - control.use_deform = False - control.head = bone.head - control.tail = bone.tail - control.roll = bone.roll - control.length = 0.05 - control.parent = bone.parent - - bone["subtargetIK"] = control.name - - def SC_Eye(bone, faceAttach): - """EYE CONTROL""" - bone.name = bone.name.replace("TWEAK_", "") + "_TWEAK" - headBone = faceAttach.parent - controlHeadBone = editBones.get(headBone.name.replace("TWEAK_", "CONTROL_")) - # CONTROL BONE - control = editBones.new(bone.name.replace("_TWEAK", "_CONTROL")) - control.use_deform = False - control.head = (bone.y_axis * abs(controlHeadBone.head.y - bone.head.y)) + bone.head - control.tail = bone.tail - control.roll = bone.roll - control.length = 0.05 - control.parent = controlHeadBone - - bone["subtargetIK"] = control.name - - # EYE MECHANISM - eyeMCH = editBones.new(bone.name.replace("_TWEAK", "_MCH")) - eyeMCH.use_deform = False - eyeMCH.head = bone.head - eyeMCH.tail = bone.tail - eyeMCH.roll = bone.roll - eyeMCH.parent = bone.parent - # move to 29 layer - self.moveBoneLayer([eyeMCH], [29]) - - # EYELID OPEN<>CLOSE MECHANISM - for part in ["UPPER", "LOWER"]: - eyelidMCH = editBones.new(bone.name.replace("_TWEAK", "_EYELID_" + part + "_ROTATION")) - eyelidMCH.use_deform = False - eyelidMCH.head = bone.head - eyelidMCH.tail = bone.tail - eyelidMCH.roll = bone.roll - eyelidMCH.parent = eyeMCH - - eyelidBones = [bn for bn in bone.children if bn.get("UE4RIGTYPE") == "EYELID_" + part] - - if eyelidBones: - zLoc = (max if part == "UPPER" else min)([lid.head.z for lid in eyelidBones]) - eyelidPivotMCH = editBones.new(bone.name.replace("_TWEAK", "_EYELID_" + part + "_PIVOT_ROTATION")) - eyelidPivotMCH.use_deform = False - eyelidPivotMCH.head = (bone.head.x, (bone.head.y - bone.length) - 0.005, zLoc) - eyelidPivotMCH.tail = (bone.tail.x, (bone.tail.y - bone.length) - 0.005, zLoc) - eyelidPivotMCH.roll = bone.roll - eyelidPivotMCH.parent = eyelidMCH - # move to 29 layer - self.moveBoneLayer([eyelidPivotMCH], [29]) - - for eyelidBone in eyelidBones: - """EYELID CONTROL""" - eyelidBone.name = eyelidBone.name.replace("TWEAK_", "") + "_TWEAK" - # move to 29 layer - self.moveBoneLayer([eyelidBone], [29]) - # CONTROL BONE - control = editBones.new(eyelidBone.name.replace("_TWEAK", "_CONTROL")) - control.use_deform = False - control.head = eyelidBone.head - control.tail = eyelidBone.tail - control.roll = eyelidBone.roll - control.length = 0.01 - control.parent = eyelidMCH - - # COPY BONE - eyelidBoneCopy = editBones.new(eyelidBone.name.replace("_TWEAK", "_COPY")) - eyelidBoneCopy.use_deform = False - eyelidBoneCopy.head = eyelidBone.head - eyelidBoneCopy.tail = eyelidBone.tail - eyelidBoneCopy.roll = eyelidBone.roll - eyelidBoneCopy.parent = control - # move to 29 layer - self.moveBoneLayer([eyelidBoneCopy], [29]) - - eyelidBone["subtargetIK"] = eyelidBoneCopy.name - - # FACE_ATTACH - for bone in [bone for bone in editBones if bone.get("UE4RIGTYPE") == "FACE_ATTACH"]: - # move to 29 layer - self.moveBoneLayer([bone], [29]) - # filter bone - arrFaceBones = [bone for bone in bone.children_recursive if bone.get("UE4RIGTYPE") in ["JAW", "LANDMARK", "EYE"]] - # switch case with dict - switchCaseRigType = { - "JAW": SC_Jaw, - "LANDMARK": SC_Landmark, - "EYE": SC_Eye - } - for faceBone in arrFaceBones: - doSwitch = switchCaseRigType.get(faceBone.get("UE4RIGTYPE"), None) - if doSwitch is not None: - doSwitch(faceBone, bone) - - self.moveBoneLayer([eB for eB in editBones if eB.layers[0]], [0]) - - bpy.ops.armature.select_all(action="DESELECT") - self.context.scene.tool_settings.transform_pivot_point = oldPivot - self.activeObject.data.use_mirror_x = oldMirror - - bpy.ops.object.mode_set(mode="POSE") - poseBones = self.activeObject.pose.bones - # copy transform from target bone - for bone in [bone for bone in poseBones if bone.name.startswith("TARGET_")]: - constraints = poseBones.get(bone.name.replace("TARGET_","")).constraints.new(type="COPY_TRANSFORMS") - constraints.name = "TRANSFORM" - constraints.show_expanded = False - constraints.target = self.activeObject - constraints.subtarget = bone.name - constraints.mix_mode = "REPLACE" - constraints.target_space = "POSE" - constraints.owner_space = "POSE" - - # IK BONE - for bone in [poseBones.get("ik_foot_root"), poseBones.get("ik_hand_root")]: - if bone is not None: - for bn in bone.children_recursive: - if poseBones.get(bn.name.replace("ik_", "")): - constraints = bn.constraints.new(type="COPY_TRANSFORMS") - constraints.name = "TRANSFORM" - constraints.show_expanded = False - constraints.target = self.activeObject - constraints.subtarget = bn.name.replace("ik_", "") - constraints.mix_mode = "REPLACE" - constraints.target_space = "POSE" - constraints.owner_space = "POSE" - elif bn.name == "ik_hand_gun" and poseBones.get("hand_r"): - constraints = bn.constraints.new(type="COPY_TRANSFORMS") - constraints.name = "TRANSFORM" - constraints.show_expanded = False - constraints.target = self.activeObject - constraints.subtarget = "hand_r" - constraints.mix_mode = "REPLACE" - constraints.target_space = "POSE" - constraints.owner_space = "POSE" - - # FINGER - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "FINGER"]: - constraint = bone.constraints.new(type="COPY_ROTATION") - constraint.name = "fingerROTATION" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetRotation - constraint.mix_mode = "ADD" - constraint.target_space = "LOCAL" - constraint.owner_space = "LOCAL" - - # generate tweak finger block shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if bone.bone.head_local.x >= 0 else rightSideGroup, False) - - # CONTROL bone - controlBone = poseBones.get(constraint.subtarget) - # lock location controller - controlBone.lock_location = [True, True, True] - - # generate control rotation custom shape - self.generateCustomBoneShape(controlBone, collection, boneShape.controlRotationFinger(), redGroup, False) - - # filter children with starts string "TWEAK_" - filterChildren = [bone for bone in bone.children_recursive if bone.name.startswith("TWEAK_") and not bone.bone.UE4RIGTYPE] - # get index bone that have RIGTYPE - endIndex = next((index for (index, bn) in enumerate(filterChildren) if bn.bone.UE4RIGTYPE), None) - if endIndex is not None: - filterChildren = filterChildren[:endIndex:] - for bn in filterChildren[::-1]: - constraint = bn.constraints.new(type="COPY_ROTATION") - constraint.name = "fingerROTATION" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetRotation - constraint.mix_mode = "ADD" - constraint.target_space = "LOCAL" - constraint.owner_space = "LOCAL" - constraint.use_y = False - constraint.use_z = False - - # generate tweak finger block shape - getBoneShape = getattr(boneShape, bn.bone.customShapeType) - getBoneShapeParam = bn.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bn, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if bone.bone.head_local.x >= 0 else rightSideGroup, False) - - controlBone.custom_shape_transform = filterChildren[-1] - constraint = filterChildren[-1].constraints.new(type="IK") - constraint.name = "fingerIK" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetIK - constraint.chain_count = len(filterChildren) + 1 - - ikControl = poseBones.get(bone.bone.subtargetIK) - ikControl.bone.controlFingerIK = True - - # IK INFLUENCE DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikControl.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - # generate control ik custom shape - self.generateCustomBoneShape(ikControl, collection, boneShape.circle(16, 1, 0.25), redGroup, False) - - if ikControl.parent is not None and ikControl.parent.bone.boneHasFloor: - # FLOOR FINGERTIP - self.addFloorConstraint(ikControl, "FLOOR_" + ikControl.parent.name.replace("TWEAK_", ""), 0) - - # LEG_HUMAN - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "LEG_HUMAN"]: - boneChildren = [bn for bn in bone.children_recursive if bn.name.startswith("TWEAK_") and not "_twist_" in bn.name and not bn.bone.UE4RIGTYPE] - if boneChildren: - calf = None - foot = None - toe = None - if len(boneChildren) != 0: - calf = boneChildren.pop(0) - if len(boneChildren) != 0: - foot = boneChildren.pop(0) - if len(boneChildren) != 0: - toe = boneChildren.pop(0) - - customPropertyName = None - - if calf is not None: - ikTargetBone = poseBones.get(bone.bone.subtargetIK) - ikPoleBone = poseBones.get(bone.bone.subtargetPole) - - ikBone1 = poseBones.get("IK_" + bone.name.replace("TWEAK_", "")) - ikBone1.ik_stretch = 0.1 - ikBone2 = poseBones.get("IK_" + calf.name.replace("TWEAK_", "")) - ikBone2.ik_stretch = 0.1 - - poleAngle = self.get_pole_angle(bone, calf, ikPoleBone.matrix.translation) - - constraint = ikBone2.constraints.new(type="IK") - constraint.name = "IK" - constraint.show_expanded = False - constraint.chain_count = 2 - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetIK - constraint.pole_target = self.activeObject - constraint.pole_subtarget = bone.bone.subtargetPole - constraint.pole_angle = poleAngle - - # generate ik pole custom shape - self.generateCustomBoneShape(ikPoleBone, collection, boneShape.sphere(8, 4, 4), redGroup, False) - - # CONTROL FOOT - controlBone = poseBones.get("CONTROL_" + foot.name.replace("TWEAK_", "")) if bone.bone.footBone and foot else poseBones.get("CONTROL_" + calf.name.replace("TWEAK_", "")) - - # STRETCH IK DRIVER - for ikBoneStretch in [ikBone1, ikBone2]: - influenceIKStretch = ikBoneStretch.driver_add("ik_stretch").driver - influenceIKStretch.type = "SCRIPTED" - var = influenceIKStretch.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("stretchBone") - influenceIKStretch.expression = "0 if " + var.name + " == 0 else 0.05" - - # COPY TRASFORM STRETCH AND FK + DIRVER - # poseBone and target bone - for pB in [bone, calf]: - constraint = pB.constraints.new(type="COPY_TRANSFORMS") - constraint.name = "TRANSFORM" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = "STRETCH_" + pB.name.replace("TWEAK_", "") - constraint.mix_mode = "REPLACE" - constraint.target_space = "POSE" - constraint.owner_space = "POSE" - # IK DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - constraint = pB.constraints.new(type="COPY_TRANSFORMS") - constraint.name = "TRANSFORM_STRETCH" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = "FK_" + pB.name.replace("TWEAK_", "") - constraint.mix_mode = "REPLACE" - constraint.target_space = "POSE" - constraint.owner_space = "POSE" - - # FK DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 1" - - stretchBone1 = poseBones.get("STRETCH_" + bone.name.replace("TWEAK_", "")) - stretchBone2 = poseBones.get("STRETCH_" + calf.name.replace("TWEAK_", "")) - - # LIMIT SCALE FROM PARENT - for pB in [stretchBone1, stretchBone2]: - constraint = pB.constraints.new(type="LIMIT_SCALE") - constraint.name = "LIMIT_SCALE" - constraint.show_expanded = False - constraint.use_transform_limit = True - constraint.owner_space = "LOCAL_WITH_PARENT" - for axis in ["x", "y", "z"]: - setattr(constraint, "use_max_"+ axis, True) - setattr(constraint, "max_"+ axis, 1) - - # DAMPED_TRACK stretchBone2 TO IK TARGET - constraint = stretchBone2.constraints.new(type="DAMPED_TRACK") - constraint.name = "DAMPED_TRACK" - constraint.show_expanded = False - constraint.head_tail = 1 - constraint.target = self.activeObject - constraint.subtarget = ikBone2.name - constraint.track_axis = "TRACK_Y" - - # STRETCH TO + DRIVER - for pB, tB in [(stretchBone1, ikBone1.name), (stretchBone2, ikBone2.name)]: - constraint = pB.constraints.new(type="STRETCH_TO") - constraint.show_expanded = False - constraint.head_tail = 1 - constraint.target = self.activeObject - constraint.subtarget = tB - constraint.rest_length = pB.length * 100 - - # STRETCH INFLUENCE DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("stretchBone") - influenceDriver.expression = var.name - - # STRETCH VOLUME DRIVER - influenceDriver = constraint.driver_add("volume").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("stretchBoneMode") - influenceDriver.expression = var.name - - # VIS POLE - visPole = poseBones.get("VISPOLE_" + calf.name.replace("TWEAK_", "")) - visPole.bone.hide_select = True - - visPoleLocation = visPole.constraints.new(type="COPY_LOCATION") - visPoleLocation.name = "GET_POLE_LOCATION" - visPoleLocation.show_expanded = False - visPoleLocation.target = self.activeObject - visPoleLocation.subtarget = bone.bone.subtargetPole - visPoleLocation.target_space = "POSE" - visPoleLocation.owner_space = "POSE" - - visPoleStretch = visPole.constraints.new(type="STRETCH_TO") - visPoleStretch.name = "STRETCH_TO_CALF" - visPoleStretch.show_expanded = False - visPoleStretch.target = self.activeObject - visPoleStretch.subtarget = "STRETCH_" + calf.name.replace("TWEAK_", "") - visPoleStretch.rest_length = visPole.length * 100 - visPoleStretch.volume = "NO_VOLUME" - - # Vis Hide Driver - VisHideDriver = visPole.bone.driver_add("hide").driver - VisHideDriver.type = "SCRIPTED" - var = VisHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideVis" - VisHideDriver.expression = var.name - - # generate line custom shape - self.generateCustomBoneShape(visPole, collection, boneShape.line, redGroup, True) - - # FK THIGH - - FKBone = poseBones.get("FK_" + bone.name.replace("TWEAK_", "")) - - # generate fk custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(FKBone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if FKBone.bone.head_local.x >= 0 else rightSideGroup, False) - - # FK Hide Driver - FKHideDriver = FKBone.bone.driver_add("hide").driver - FKHideDriver.type = "SCRIPTED" - var = FKHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideFK" - FKHideDriver.expression = var.name - - # FK CALF - - FKBone = poseBones.get("FK_" + calf.name.replace("TWEAK_", "")) - - # generate fk custom shape - getBoneShape = getattr(boneShape, calf.bone.customShapeType) - getBoneShapeParam = calf.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(FKBone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if FKBone.bone.head_local.x >= 0 else rightSideGroup, False) - - # FK Hide Driver - FKHideDriver = FKBone.bone.driver_add("hide").driver - FKHideDriver.type = "SCRIPTED" - var = FKHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideFK" - FKHideDriver.expression = var.name - - if foot: - # FK FOOT - - FKBone = poseBones.get("FK_" + foot.name.replace("TWEAK_", "")) - - # generate fk custom shape - getBoneShape = getattr(boneShape, foot.bone.customShapeType) - getBoneShapeParam = foot.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(FKBone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if FKBone.bone.head_local.x >= 0 else rightSideGroup, False) - - # FK Hide Driver - FKHideDriver = FKBone.bone.driver_add("hide").driver - FKHideDriver.type = "SCRIPTED" - var = FKHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideFK" - FKHideDriver.expression = var.name - - # register control ik to bone - controlBone.bone.controlIK = True - controlBone.bone.pointABoneIK = bone.name.replace("TWEAK_", "") - controlBone.bone.pointBBoneIK = calf.name.replace("TWEAK_", "") - - if bone.bone.footBone and foot: - controlRotationFootIK = foot.constraints.new(type="COPY_TRANSFORMS") - controlRotationFootIK.name = "FOOT_CONTROL" - controlRotationFootIK.show_expanded = False - controlRotationFootIK.target = self.activeObject - controlRotationFootIK.subtarget = bone.bone.subtargetIK - controlRotationFootIK.mix_mode = "REPLACE" - controlRotationFootIK.target_space = "POSE" - controlRotationFootIK.owner_space = "POSE" - # IK DRIVER - influenceDriver = controlRotationFootIK.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - # LIMIT LOCATION IN IK MODE - limitLocationIK = foot.constraints.new(type="LIMIT_LOCATION") - limitLocationIK.name = "LIMIT_LOCATION_IK" - limitLocationIK.show_expanded = False - limitLocationIK.owner_space = "LOCAL" - limitLocationIK.min_x = 0 - limitLocationIK.min_y = 0 - limitLocationIK.min_z = 0 - limitLocationIK.max_x = 0 - limitLocationIK.max_y = 0 - limitLocationIK.max_z = 0 - limitLocationIK.use_min_x = True - limitLocationIK.use_min_y = True - limitLocationIK.use_min_z = True - limitLocationIK.use_max_x = True - limitLocationIK.use_max_y = True - limitLocationIK.use_max_z = True - # IK DRIVER - influenceDriver = limitLocationIK.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - controlRotationFootFK = foot.constraints.new(type="COPY_TRANSFORMS") - controlRotationFootFK.name = "FOOT_CONTROL_FK" - controlRotationFootFK.show_expanded = False - controlRotationFootFK.target = self.activeObject - controlRotationFootFK.subtarget = "FK_" + foot.name.replace("TWEAK_", "") - controlRotationFootFK.mix_mode = "REPLACE" - controlRotationFootFK.target_space = "POSE" - controlRotationFootFK.owner_space = "POSE" - # FK DRIVER - influenceDriver = controlRotationFootFK.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = controlBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 1" - - # Generate Custom Shape - mesh = bpy.data.meshes.new("UE4WSBS_" + controlBone.name) - objCustomShape = bpy.data.objects.new(mesh.name,mesh) - collection.objects.link(objCustomShape) - mesh.from_pydata(*boneShape.block(11, 3, 0, 15)) - - controlBone.custom_shape = objCustomShape - controlBone.use_custom_shape_bone_size = False - controlBone.bone_group = redGroup - - # PIVOTHEEL - pivotHeel = poseBones.get("PIVOTHEEL_" + foot.name.replace("TWEAK_", "")) - pivotHeel.lock_location = [True, True, True] - pivotHeel.lock_rotation = [True, True, True] - pivotHeel.rotation_mode = "XYZ" - for index, rotAxis, expr in [(0, "ROT_X", "max(min(ROT_X, 0), -0.5)"), (1, "ROT_Y", "ROT_Y"), (2, "ROT_Z", "ROT_Z")]: - axisDriver = pivotHeel.driver_add("rotation_euler", index).driver - axisDriver.type = "SCRIPTED" - var = axisDriver.variables.new() - var.name = rotAxis - var.type = "TRANSFORMS" - target = var.targets[0] - target.id = self.activeObject - target.bone_target = "HEELCONTROL_" + foot.name.replace("TWEAK_", "") - target.transform_type = rotAxis - target.transform_space = "TRANSFORM_SPACE" - axisDriver.expression = expr - - # HEEL CONTROL - heelControl = poseBones.get("HEELCONTROL_" + foot.name.replace("TWEAK_", "")) - - # generate hell control custom shape - self.generateCustomBoneShape(heelControl, collection, boneShape.controlRotation(8, 2.5 , 0, False), redGroup, False) - - # PIVOTFOOT - pivotHeel = poseBones.get("PIVOTFOOT_" + foot.name.replace("TWEAK_", "")) - pivotHeel.lock_location = [True, True, True] - pivotHeel.lock_rotation = [True, True, True] - pivotHeel.rotation_mode = "XYZ" - for index, rotAxis, expr in [(0, "ROT_X", "min(max(ROT_X, 0), 0.9)")]: - axisDriver = pivotHeel.driver_add("rotation_euler", index).driver - axisDriver.type = "SCRIPTED" - var = axisDriver.variables.new() - var.name = rotAxis - var.type = "TRANSFORMS" - target = var.targets[0] - target.id = self.activeObject - target.bone_target = "HEELCONTROL_" + foot.name.replace("TWEAK_", "") - target.transform_type = rotAxis - target.transform_space = "TRANSFORM_SPACE" - axisDriver.expression = expr - - # FLOOR FOOT - floorFoot = poseBones.get("FLOOR_" + foot.name.replace("TWEAK_", "")) - - # ADD FLOOR CONSTRAINT - self.addFloorConstraint(controlBone, floorFoot.name, foot.bone.head_local[2] * 100) - - # generate floor custom shape - self.generateCustomBoneShape(floorFoot, collection, boneShape.floor(1, 1), yellowGroup, False) - - if bone.bone.toeBone and toe: - controlToe = poseBones.get("CONTROL_" + toe.name.replace("TWEAK_", "")) - - # generate control toe custom shape - getBoneShape = getattr(boneShape, toe.bone.customShapeType) - getBoneShapeParam = toe.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(controlToe, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if controlToe.bone.head_local.x >= 0 else rightSideGroup, False) - - controlToe.custom_shape_transform = toe - - # PIVOTTOE - pivotToe = poseBones.get("PIVOTTOE_" + toe.name.replace("TWEAK_", "")) - pivotToe.lock_location = [True, True, True] - pivotToe.lock_rotation = [True, True, True] - pivotToe.rotation_mode = "XYZ" - - for index, rotAxis, expr in [(0, "ROT_X", "min(max(ROT_X, 0), 1)"), (1, "ROT_Y", "ROT_Y"), (2, "ROT_Z", "ROT_Z")]: - axisDriver = pivotToe.driver_add("rotation_euler", index).driver - axisDriver.type = "SCRIPTED" - var = axisDriver.variables.new() - var.name = rotAxis - var.type = "TRANSFORMS" - target = var.targets[0] - target.id = self.activeObject - target.bone_target = "TOECONTROL_" + toe.name.replace("TWEAK_", "") - target.transform_type = rotAxis - target.transform_space = "TRANSFORM_SPACE" - axisDriver.expression = expr - - # TOE CONTROL - toeControl = poseBones.get("TOECONTROL_" + toe.name.replace("TWEAK_", "")) - - # generate control toe custom shape - self.generateCustomBoneShape(toeControl, collection, boneShape.controlRotation(8, 2.5 , 0, True), redGroup, False) - - # TWEAK BALL DRIVER LOCATION AND ROTATION - for index, transformAxis, expr in [(0, "LOC_X", "LOC_X"), (1, "LOC_Y", "LOC_Y"), (2, "LOC_Z", "LOC_Z")]: - axisDriver = toe.driver_add("location", index).driver - axisDriver.type = "SCRIPTED" - - var = axisDriver.variables.new() - var.name = transformAxis - var.type = "TRANSFORMS" - target = var.targets[0] - target.id = self.activeObject - target.bone_target = "CONTROL_" + toe.name.replace("TWEAK_", "") - target.transform_type = transformAxis - target.transform_space = "TRANSFORM_SPACE" - axisDriver.expression = expr - - toe.rotation_mode = "XYZ" - for index, transformAxis, expr in [(0, "ROT_X", "ROT_X"), (1, "ROT_Y", "ROT_Y"), (2, "ROT_Z", "ROT_Z")]: - axisDriver = toe.driver_add("rotation_euler", index).driver - axisDriver.type = "SCRIPTED" - - var = axisDriver.variables.new() - var.name = transformAxis - var.type = "TRANSFORMS" - target = var.targets[0] - target.id = self.activeObject - target.bone_target = "CONTROL_" + toe.name.replace("TWEAK_", "") - target.transform_type = transformAxis - target.transform_space = "TRANSFORM_SPACE" - - if transformAxis == "ROT_X": - var = axisDriver.variables.new() - var.name = "COPY_X" - var.type = "TRANSFORMS" - target = var.targets[0] - target.id = self.activeObject - target.bone_target = "HEELCONTROL_" + foot.name.replace("TWEAK_", "") - target.transform_type = transformAxis - target.transform_space = "TRANSFORM_SPACE" - - axisDriver.expression = expr if not (transformAxis == "ROT_X") else "-min(max(COPY_X, 0), 0.9) + ROT_X" - - # CALF CONTROL - else: - # generate control toe custom shape - self.generateCustomBoneShape(controlBone, collection, boneShape.block(10, 10, -5, 5), redGroup, False) - - # ARM_HUMAN - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "ARM_HUMAN"]: - boneChildren = [bn for bn in bone.children_recursive if bn.name.startswith("TWEAK_") and not "_twist_" in bn.name and not bn.bone.UE4RIGTYPE] - if boneChildren: - lowerarm = None - hand = None - if len(boneChildren) != 0: - lowerarm = boneChildren.pop(0) - if len(boneChildren) != 0: - hand = boneChildren.pop(0) - - customPropertyName = None - - if lowerarm is not None: - ikBone = poseBones.get(bone.bone.subtargetIK) - poleBone = poseBones.get(bone.bone.subtargetPole) - - ikBone1 = poseBones.get("IK_" + bone.name.replace("TWEAK_", "")) - ikBone1.ik_stretch = 0.1 - ikBone2 = poseBones.get("IK_" + lowerarm.name.replace("TWEAK_", "")) - ikBone2.ik_stretch = 0.1 - - poleAngle = self.get_pole_angle(bone, lowerarm, poleBone.matrix.translation) - - constraint = ikBone2.constraints.new(type="IK") - constraint.name = "IK" - constraint.show_expanded = False - constraint.chain_count = 2 - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetIK - constraint.pole_target = self.activeObject - constraint.pole_subtarget = bone.bone.subtargetPole - constraint.pole_angle = poleAngle - - # generate ik bone custom shape - self.generateCustomBoneShape(ikBone, collection, boneShape.block(9, 3, 0, 9), redGroup, False) - - # generate pole bone custom shape - self.generateCustomBoneShape(poleBone, collection, boneShape.sphere(8, 4, 4), redGroup, False) - - # STRETCH IK DRIVER - for ikBoneStretch in [ikBone1, ikBone2]: - influenceIKStretch = ikBoneStretch.driver_add("ik_stretch").driver - influenceIKStretch.type = "SCRIPTED" - var = influenceIKStretch.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("stretchBone") - influenceIKStretch.expression = "0 if " + var.name + " == 0 else 0.05" - - # COPY TRASFORM STRETCH AND FK + DIRVER - # poseBone and target bone - for pB in [bone, lowerarm]: - constraint = pB.constraints.new(type="COPY_TRANSFORMS") - constraint.name = "TRANSFORM_STRETCH" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = "STRETCH_" + pB.name.replace("TWEAK_", "") - constraint.mix_mode = "REPLACE" - constraint.target_space = "POSE" - constraint.owner_space = "POSE" - # IK DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - constraint = pB.constraints.new(type="COPY_TRANSFORMS") - constraint.name = "TRANSFORM_STRETCH" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = "FK_" + pB.name.replace("TWEAK_", "") - constraint.mix_mode = "REPLACE" - constraint.target_space = "POSE" - constraint.owner_space = "POSE" - - # FK DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 1" - - stretchBone1 = poseBones.get("STRETCH_" + bone.name.replace("TWEAK_", "")) - stretchBone2 = poseBones.get("STRETCH_" + lowerarm.name.replace("TWEAK_", "")) - - # LIMIT SCALE FROM PARENT - for pB in [stretchBone1, stretchBone2]: - constraint = pB.constraints.new(type="LIMIT_SCALE") - constraint.name = "LIMIT_SCALE" - constraint.show_expanded = False - constraint.use_transform_limit = True - constraint.owner_space = "LOCAL_WITH_PARENT" - for axis in ["x", "y", "z"]: - setattr(constraint, "use_max_"+ axis, True) - setattr(constraint, "max_"+ axis, 1) - - # DAMPED_TRACK stretchBone2 TO IK TARGET - constraint = stretchBone2.constraints.new(type="DAMPED_TRACK") - constraint.name = "DAMPED_TRACK" - constraint.show_expanded = False - constraint.head_tail = 1 - constraint.target = self.activeObject - constraint.subtarget = ikBone2.name - constraint.track_axis = "TRACK_Y" - - # STRETCH TO + DRIVER - for pB, tB in [(stretchBone1, ikBone1.name), (stretchBone2, ikBone2.name)]: - constraint = pB.constraints.new(type="STRETCH_TO") - constraint.show_expanded = False - constraint.head_tail = 1 - constraint.target = self.activeObject - constraint.subtarget = tB - constraint.rest_length = pB.length * 100 - - # STRETCH INFLUENCE DRIVER - influenceDriver = constraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("stretchBone") - influenceDriver.expression = var.name - - # STRETCH VOLUME DRIVER - influenceDriver = constraint.driver_add("volume").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("stretchBoneMode") - influenceDriver.expression = var.name - - # VIS POLE - visPole = poseBones.get("VISPOLE_" + lowerarm.name.replace("TWEAK_", "")) - visPole.bone.hide_select = True - - visPoleLocation = visPole.constraints.new(type="COPY_LOCATION") - visPoleLocation.name = "GET_POLE_LOCATION" - visPoleLocation.show_expanded = False - visPoleLocation.target = self.activeObject - visPoleLocation.subtarget = bone.bone.subtargetPole - visPoleLocation.target_space = "POSE" - visPoleLocation.owner_space = "POSE" - - visPoleStretch = visPole.constraints.new(type="STRETCH_TO") - visPoleStretch.name = "STRETCH_TO_LOWERARM" - visPoleStretch.show_expanded = False - visPoleStretch.target = self.activeObject - visPoleStretch.subtarget = "STRETCH_" + lowerarm.name.replace("TWEAK_", "") - visPoleStretch.rest_length = visPole.length * 100 - visPoleStretch.volume = "NO_VOLUME" - - # Vis Hide Driver - VisHideDriver = visPole.bone.driver_add("hide").driver - VisHideDriver.type = "SCRIPTED" - var = VisHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideVis" - VisHideDriver.expression = var.name - - # generate line custom shape - self.generateCustomBoneShape(visPole, collection, boneShape.line, redGroup, True) - - # FK UPPERARM - - FKBone = poseBones.get("FK_" + bone.name.replace("TWEAK_", "")) - - # generate fk custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(FKBone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if FKBone.bone.head_local.x >= 0 else rightSideGroup, False) - - # FK Hide Driver - FKHideDriver = FKBone.bone.driver_add("hide").driver - FKHideDriver.type = "SCRIPTED" - var = FKHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideFK" - FKHideDriver.expression = var.name - - # FK LOWERARM - - FKBone = poseBones.get("FK_" + lowerarm.name.replace("TWEAK_", "")) - - # generate fk custom shape - getBoneShape = getattr(boneShape, lowerarm.bone.customShapeType) - getBoneShapeParam = lowerarm.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(FKBone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if FKBone.bone.head_local.x >= 0 else rightSideGroup, False) - - # FK Hide Driver - FKHideDriver = FKBone.bone.driver_add("hide").driver - FKHideDriver.type = "SCRIPTED" - var = FKHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideFK" - FKHideDriver.expression = var.name - - if hand: - # FK HAND - - FKBone = poseBones.get("FK_" + hand.name.replace("TWEAK_", "")) - - # generate fk custom shape - getBoneShape = getattr(boneShape, hand.bone.customShapeType) - getBoneShapeParam = hand.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(FKBone, collection, getBoneShape(*getBoneShapeParam), leftSideGroup if FKBone.bone.head_local.x >= 0 else rightSideGroup, False) - - # FK Hide Driver - FKHideDriver = FKBone.bone.driver_add("hide").driver - FKHideDriver.type = "SCRIPTED" - var = FKHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideFK" - FKHideDriver.expression = var.name - - # register control ik to bone - ikBone.bone.controlIK = True - ikBone.bone.pointABoneIK = bone.name.replace("TWEAK_", "") - ikBone.bone.pointBBoneIK = lowerarm.name.replace("TWEAK_", "") - - if bone.bone.handBone and hand: - controlRotationHandIK = hand.constraints.new(type="COPY_TRANSFORMS") - controlRotationHandIK.name = "HAND_CONTROL_IK" - controlRotationHandIK.show_expanded = False - controlRotationHandIK.target = self.activeObject - controlRotationHandIK.subtarget = bone.bone.subtargetIK - controlRotationHandIK.mix_mode = "REPLACE" - controlRotationHandIK.target_space = "POSE" - controlRotationHandIK.owner_space = "POSE" - # IK DRIVER - influenceDriver = controlRotationHandIK.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - # LIMIT LOCATION IN IK MODE - limitLocationIK = hand.constraints.new(type="LIMIT_LOCATION") - limitLocationIK.name = "LIMIT_LOCATION_IK" - limitLocationIK.show_expanded = False - limitLocationIK.owner_space = "LOCAL" - limitLocationIK.min_x = 0 - limitLocationIK.min_y = 0 - limitLocationIK.min_z = 0 - limitLocationIK.max_x = 0 - limitLocationIK.max_y = 0 - limitLocationIK.max_z = 0 - limitLocationIK.use_min_x = True - limitLocationIK.use_min_y = True - limitLocationIK.use_min_z = True - limitLocationIK.use_max_x = True - limitLocationIK.use_max_y = True - limitLocationIK.use_max_z = True - # IK DRIVER - influenceDriver = limitLocationIK.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 0" - - controlRotationHandFK = hand.constraints.new(type="COPY_TRANSFORMS") - controlRotationHandFK.name = "HAND_CONTROL_FK" - controlRotationHandFK.show_expanded = False - controlRotationHandFK.target = self.activeObject - controlRotationHandFK.subtarget = "FK_" + hand.name.replace("TWEAK_", "") - controlRotationHandFK.mix_mode = "REPLACE" - controlRotationHandFK.target_space = "POSE" - controlRotationHandFK.owner_space = "POSE" - # FK DRIVER - influenceDriver = controlRotationHandFK.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = ikBone.bone.path_from_id("switchIK") - influenceDriver.expression = var.name + " == 1" - - # FLOOR HAND - floorHand = poseBones.get("FLOOR_" + hand.name.replace("TWEAK_", "")) - - # ADD FLOOR CONSTRAINT - self.addFloorConstraint(ikBone, floorHand.name, 3) - - # generate floor custom shape - self.generateCustomBoneShape(floorHand, collection, boneShape.floor(1, 1), yellowGroup, False) - - # TWIST BONE CUSTOM SHAPE - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "TWIST_BONE" and bone.custom_shape is None]: - # generate twist custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup if bone.bone.head_local.x == 0 else leftSideGroup if bone.bone.head_local.x > 0 else rightSideGroup, False) - - # PELVIS - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "PELVIS" and bone.custom_shape is None]: - bone.lock_location = [True, True, True] - control = poseBones.get("CONTROL_" + bone.name.replace("TWEAK_", "")) - control.rotation_mode = "XYZ" - control.lock_rotation =[True, True, True] - - # generate pelvis custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - - locConstraint = bone.constraints.new("COPY_LOCATION") - locConstraint.name = "LOCATION" - locConstraint.show_expanded = False - locConstraint.target = self.activeObject - locConstraint.subtarget = control.name - locConstraint.target_space = "POSE" - locConstraint.owner_space = "POSE" - - # generate pelvis control custom shape - diameterBlock = (bone.bone.customShapeParam[1] * 2) + 2.5 - self.generateCustomBoneShape(control, collection, boneShape.block(diameterBlock, diameterBlock, -1, 1), redGroup, False) - - # SPINE - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "SPINE" and bone.custom_shape is None]: - # generate spine custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - - # STRETCH BONE + DRIVER - if bone.bone.stretchBoneTarget: - stretchBone = poseBones.get("STRETCH_" + bone.name.replace("TWEAK_", "")) - stretchBoneConstraint = stretchBone.constraints.new("STRETCH_TO") - stretchBoneConstraint.name = "STRETCH_TO_BONE" - stretchBoneConstraint.show_expanded = False - stretchBoneConstraint.target = self.activeObject - stretchBoneConstraint.subtarget = bone.bone.stretchBoneTarget - stretchBoneConstraint.rest_length = stretchBone.length * 100 - stretchBoneConstraint.influence = 0.5 - - # generate stretch box custom shape - self.generateCustomBoneShape(stretchBone, collection, boneShape.block(4, 4, 0, 4), redGroup, False) - - # STRETCH INFLUENCE DRIVER - influenceDriver = stretchBoneConstraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = bone.bone.path_from_id("stretchBone") - influenceDriver.expression = var.name - - # STRETCH VOLUME DRIVER - influenceDriver = stretchBoneConstraint.driver_add("volume").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = bone.bone.path_from_id("stretchBoneMode") - influenceDriver.expression = var.name - - # NECK - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "NECK" and bone.custom_shape is None]: - # generate neck custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - - # STRETCH BONE - if bone.bone.stretchBoneTarget: - stretchBone = poseBones.get("STRETCH_" + bone.name.replace("TWEAK_", "")) - stretchBoneConstraint = stretchBone.constraints.new("STRETCH_TO") - stretchBoneConstraint.name = "STRETCH_TO_BONE" - stretchBoneConstraint.show_expanded = False - stretchBoneConstraint.target = self.activeObject - stretchBoneConstraint.subtarget = bone.bone.stretchBoneTarget - stretchBoneConstraint.rest_length = stretchBone.length * 100 - stretchBoneConstraint.influence = 1 - - # generate stretch box custom shape - self.generateCustomBoneShape(stretchBone, collection, boneShape.block(4, 4, 0, 4), redGroup, False) - # STRETCH INFLUENCE DRIVER - influenceDriver = stretchBoneConstraint.driver_add("influence").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = bone.bone.path_from_id("stretchBone") - influenceDriver.expression = var.name - - # STRETCH VOLUME DRIVER - influenceDriver = stretchBoneConstraint.driver_add("volume").driver - influenceDriver.type = "SCRIPTED" - var = influenceDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = bone.bone.path_from_id("stretchBoneMode") - influenceDriver.expression = var.name - - # HEAD - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "HEAD" and bone.custom_shape is None]: - # generate head custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - - lookConstraint = bone.constraints.new("DAMPED_TRACK") - lookConstraint.name = "LOOK_CONTROL" - lookConstraint.show_expanded = False - lookConstraint.target = self.activeObject - lookConstraint.subtarget = "CONTROL_" + bone.name.replace("TWEAK_", "") - lookConstraint.track_axis = "TRACK_Z" - - controlBone = poseBones.get(lookConstraint.subtarget) - - # generate head control custom shape - self.generateCustomBoneShape(controlBone, collection, boneShape.circle(16, 2.5, 0), redGroup, False) - - # VIS CONTROL - visControl = poseBones.get("VISCONTROL_" + bone.name.replace("TWEAK_", "")) - visControl.bone.hide_select = True - - visControlLocation = visControl.constraints.new(type="COPY_LOCATION") - visControlLocation.name = "GET_CONTROL_LOCATION" - visControlLocation.show_expanded = False - visControlLocation.target = self.activeObject - visControlLocation.subtarget = lookConstraint.subtarget - visControlLocation.target_space = "POSE" - visControlLocation.owner_space = "POSE" - - visControlStretch = visControl.constraints.new(type="STRETCH_TO") - visControlStretch.name = "STRETCH_TO_LOWERARM" - visControlStretch.show_expanded = False - visControlStretch.target = self.activeObject - visControlStretch.subtarget = bone.name - visControlStretch.rest_length = visControl.length*100 - visControlStretch.volume = "NO_VOLUME" - - # generate line custom shape - self.generateCustomBoneShape(visControl, collection, boneShape.line, redGroup, True) - - # Vis Hide Driver - VisHideDriver = visControl.bone.driver_add("hide").driver - VisHideDriver.type = "SCRIPTED" - var = VisHideDriver.variables.new() - var.type = "SINGLE_PROP" - target = var.targets[0] - target.id_type = "ARMATURE" - target.id = self.activeObject.data - target.data_path = "hideVis" - VisHideDriver.expression = var.name - - # COPY_BONE - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "COPY_BONE" and bone.custom_shape is None]: - # generate copy_bone custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup if bone.bone.head_local.x == 0 else leftSideGroup if bone.bone.head_local.x > 0 else rightSideGroup, False) - - # LANDMARK - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "LANDMARK"]: - boneControl = self.poseBone(bone.bone.subtargetIK) - # constraint - constraint = bone.constraints.new(type="COPY_TRANSFORMS") - constraint.name = "TRANSFORM" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetIK - constraint.mix_mode = "REPLACE" - constraint.target_space = "LOCAL" - constraint.owner_space = "LOCAL" - # generate landmark control custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(boneControl, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - - # JAW - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "JAW"]: - boneControl = self.poseBone(bone.bone.subtargetIK) - # generate jaw custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - # constraint - constraint = bone.constraints.new(type="DAMPED_TRACK") - constraint.name = "TRACK" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = bone.bone.subtargetIK - constraint.track_axis = "TRACK_Y" - constraint.head_tail = 0.5 - # generate jaw control custom shape - self.generateCustomBoneShape(boneControl, collection, boneShape.rectangle(2.5, 2.5, 0), redGroup, False) - - # EYE - for bone in [bone for bone in poseBones if bone.bone.UE4RIGTYPE == "EYE"]: - boneControl = self.poseBone(bone.bone.subtargetIK) - # generate eye custom shape - getBoneShape = getattr(boneShape, bone.bone.customShapeType) - getBoneShapeParam = bone.bone.customShapeParam[:len(inspect.getfullargspec(getBoneShape)[0])] - self.generateCustomBoneShape(bone, collection, getBoneShape(*getBoneShapeParam), greenGroup, False) - # generate eye control custom shape - self.generateCustomBoneShape(boneControl, collection, boneShape.circle(16, 1, 0), redGroup, False) - - lookConstraint = bone.constraints.new("DAMPED_TRACK") - lookConstraint.name = "LOOK_CONTROL" - lookConstraint.show_expanded = False - lookConstraint.target = self.activeObject - lookConstraint.subtarget = bone.bone.subtargetIK - lookConstraint.track_axis = "TRACK_Y" - - for part in ["UPPER", "LOWER"]: - eyelidRotation = self.poseBone(bone.name.replace("_TWEAK", "_EYELID_" + part + "_ROTATION")) - eyelidRotation.lock_location = (True, True, True) - # generate eyelid rotation control custom shape - self.generateCustomBoneShape(eyelidRotation, collection, boneShape.rectangle(0.5, 0.5, 0), redGroup, False) - eyelidRotation.custom_shape_transform = self.poseBone(bone.name.replace("_TWEAK", "_EYELID_" + part + "_PIVOT_ROTATION")) - - for eyelid in [eyelid for eyelid in bone.children if eyelid.bone.UE4RIGTYPE in ["EYELID_UPPER", "EYELID_LOWER"]]: - eyelidControl = self.poseBone(eyelid.name.replace("_TWEAK", "_CONTROL")) - constraint = eyelid.constraints.new(type="COPY_TRANSFORMS") - constraint.name = "TRANSFORM" - constraint.show_expanded = False - constraint.target = self.activeObject - constraint.subtarget = eyelid.bone.subtargetIK - constraint.mix_mode = "REPLACE" - constraint.target_space = "POSE" - constraint.owner_space = "POSE" - # generate eyelid control custom shape - self.generateCustomBoneShape(eyelidControl, collection, boneShape.block(0.5, 0.5, -0.25, 0.25), greenGroup, False) - - bpy.ops.armature.armature_layers(layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)) - bpy.ops.pose.select_all(action="DESELECT") - bpy.ops.object.mode_set(mode="OBJECT") - # Deselect all object - bpy.ops.object.select_all(action="DESELECT") - # scale to unreal engine mannequin - self.activeObject.select_set(state=True) - self.activeObject.scale = (100, 100, 100) - bpy.ops.object.transform_apply(location = False, scale = True, rotation = False) - self.activeObject.scale = (0.01, 0.01, 0.01) - self.activeObject.select_set(state=False) - self.activeObject.lock_scale = [True, True, True] - - self.activeObject.show_in_front = False - self.activeObject.data.UE4RIG = False - self.activeObject.data.UE4RIGGED = True - - bpy.ops.object.mode_set(mode=oldMode) \ No newline at end of file diff --git a/UE4WS_CharacterFBXOption.py b/UE4WS_CharacterFBXOption.py deleted file mode 100644 index a2761a1..0000000 --- a/UE4WS_CharacterFBXOption.py +++ /dev/null @@ -1,57 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_CharacterFBXOption" - bl_parent_id = "UE4WORKSPACE_PT_CharacterPanel" - bl_label = "FBX Export Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "CHAR_FBXTabTransform", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_FBXTabTransform], emboss=False) - if preferences.CHAR_FBXTabTransform: - box = layout.box() - for arr in [["CHAR_FBXGlobalScale", "Scale"], ["CHAR_FBXApplyScaleOptions", "Apply Scalings"], ["CHAR_FBXAxisForward", "Forward"], ["CHAR_FBXAxisUp", "Up"], ["CHAR_FBXApplyUnitScale", "Apply Unit"], ["CHAR_FBXBakeSpaceTransform", "!EXPERIMENTAL! Apply Transform"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "CHAR_FBXTabGeometry", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_FBXTabGeometry], emboss=False) - if preferences.CHAR_FBXTabGeometry: - box = layout.box() - for arr in [["CHAR_FBXMeshSmoothType", "Smoothing"], ["CHAR_FBXUseSubsurf", "Export Subdivision Surface"], ["CHAR_FBXUseMeshModifiers", "Apply Modifiers"], ["CHAR_FBXUseMeshEdges", "Loose Edges"], ["CHAR_FBXUseTSpace", "Tangent Space"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "CHAR_FBXTabArmature", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_FBXTabArmature], emboss=False) - if preferences.CHAR_FBXTabArmature: - box = layout.box() - for arr in [["CHAR_FBXPrimaryBoneAxis", "Primary Bone Axis"], ["CHAR_FBXSecondaryBoneAxis", "Secondary Bone Axis"], ["CHAR_FBXArmatureFBXNodeType", "Armature FBXNode Type"], ["CHAR_FBXOnlyDeformBones", "Only Deform Bones"], ["CHAR_FBXAddLeafBones", "Add Leaf Bones"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_CharacterUnrealEngine.py b/UE4WS_CharacterUnrealEngine.py deleted file mode 100644 index b262a2f..0000000 --- a/UE4WS_CharacterUnrealEngine.py +++ /dev/null @@ -1,72 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_CharacterUnrealEnginePanel" - bl_parent_id = "UE4WORKSPACE_PT_CharacterPanel" - bl_label = "Unreal Engine Export Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "CHAR_TabMesh", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_TabMesh], emboss=False) - if preferences.CHAR_TabMesh: - box = layout.box() - for arr in [["CHAR_ImportContentType", "Import Content Type"], ["CHAR_VertexColorImportOption", "Vertex Color Import Option"], ["CHAR_VertexOverrideColor", "Vertex Override Color"], ["CHAR_UpdateSkeletonReferencePose", "Update Skeleton Reference Pose"], ["CHAR_UseT0AsRefPose", "Use T0 As Ref Pose"], ["CHAR_PreserveSmoothingGroups", "Preserve Smoothing Groups"], ["CHAR_ImportMeshesInBoneHierarchy", "Import Meshes In Bone Hierarchy"], ["CHAR_ImportMorphTargets", "Import Morph Targets"], ["CHAR_ImportMeshLODs", "Import Mesh LODs"], ["CHAR_NormalImportMethod", "Normal Import Method"], ["CHAR_NormalGenerationMethod", "Normal Generation Method"], ["CHAR_ComputeWeightedNormals", "Compute Weighted Normals"], ["CHAR_ThresholdPosition", "Threshold Position"], ["CHAR_ThresholdTangentNormal", "Threshold Tangent Normal"], ["CHAR_ThresholdUV", "Threshold UV"], ["CHAR_PhysicsAsset", "Physics Asset"]]: - if not arr[0] in ["CHAR_ImportMeshLODs"]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "CHAR_TabTransform", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_TabTransform], emboss=False) - if preferences.CHAR_TabTransform: - box = layout.box() - for arr in [["CHAR_ImportTranslation", "Import Translation"], ["CHAR_ImportRotation", "Import Translation"], ["CHAR_ImportUniformScale", "Import Uniform Scale"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "CHAR_TabMisc", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_TabMisc], emboss=False) - if preferences.CHAR_TabMisc: - box = layout.box() - for arr in [["CHAR_ConvertScene", "Convert Scene"], ["CHAR_ForceFrontXAxis", "Force Front XAxis"], ["CHAR_ConvertSceneUnit", "Convert Scene Unit"], ["CHAR_OverrideFullName", "Override Full Name"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "CHAR_TabMaterial", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.CHAR_TabMaterial], emboss=False) - if preferences.CHAR_TabMaterial: - box = layout.box() - for arr in [["CHAR_MaterialSearchLocation", "Search Location"], ["CHAR_ImportMaterial", "Import Material"], ["CHAR_ImportTexture", "Import Texture"], ["CHAR_InvertNormalMaps", "Invert Normal Maps"], ["CHAR_ReorderMaterialToFBXOrder", "Reorder Material To FBX Order"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_Credit.py b/UE4WS_Credit.py deleted file mode 100644 index 2d962ee..0000000 --- a/UE4WS_Credit.py +++ /dev/null @@ -1,38 +0,0 @@ -import bpy -from bpy.types import (Panel) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_CreditPanel" - bl_label = "Credit" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - - addonVersion = None - - def draw(self, context): - layout = self.layout - - box = layout.box() - col = box.column(align=True) - # Credit Box - row = col.row() - row.alignment = "CENTER" - row.label(text="Unreal Engine 4") - row = col.row() - row.alignment = "CENTER" - row.label(text="Workspace") - row = col.row() - row.alignment = "CENTER" - row.label(text= "Version : " + (".".join(str(x) for x in self.addonVersion))) - # Big Button Documentation - row = layout.row(align=True) - row.scale_y = 1.5 - row.operator("wm.url_open",icon="INFO", text="DOCUMENTATION").url="https://anasrar.github.io/Blender-UE4-Workspace/" - # My Link - # col = layout.column(align=True) - # row = col.row(align=True) - # row.scale_y = 1.2 - # row.operator("wm.url_open",icon="LINKED", text="Youtube").url="https://www.youtube.com/channel/UCSPcMosP3pxsP8a9t9AGwaQ/" - # row.operator("wm.url_open",icon="LINKED", text="Github").url="https://github.com/anasrar" - # row.operator("wm.url_open",icon="LINKED", text="Blog").url="https://anasrar.github.io/blog/" \ No newline at end of file diff --git a/UE4WS_ExportOption.py b/UE4WS_ExportOption.py deleted file mode 100644 index 4cd965b..0000000 --- a/UE4WS_ExportOption.py +++ /dev/null @@ -1,121 +0,0 @@ -import bpy -from bpy.props import (EnumProperty, StringProperty) -from bpy.types import (Panel, Operator) - -class RemoteExecutionConfig(object): - ''' - Configuration data for establishing a remote connection with a UE4 instance running Python. - ''' - def __init__(self, DEFAULT_MULTICAST_TTL=0, DEFAULT_MULTICAST_GROUP_ENDPOINT=("239.0.0.1", 6766), DEFAULT_MULTICAST_BIND_ADDRESS="0.0.0.0", DEFAULT_COMMAND_ENDPOINT=("127.0.0.1", 6776)): - self.multicast_ttl = DEFAULT_MULTICAST_TTL - self.multicast_group_endpoint = DEFAULT_MULTICAST_GROUP_ENDPOINT - self.multicast_bind_address = DEFAULT_MULTICAST_BIND_ADDRESS - self.command_endpoint = DEFAULT_COMMAND_ENDPOINT - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ExportOptionPanel" - bl_label = "Export Option" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - - remote = None - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Export Type") - split = split.split() - col = split.column() - col.prop(preferences, "exportOption", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=("Temporary Folder", "Export Folder")[preferences.exportOption in ["BOTH", "FBX"]]) - split = split.split() - col = split.column() - col.prop(preferences, ("TempFolder", "ExportFBXFolder")[preferences.exportOption in ["BOTH", "FBX"]], text="") - - if preferences.exportOption in ["BOTH", "UNREAL"]: - row = layout.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.connecttounrealengine",icon="PLUGIN", text=("Disconnect Unreal Engine", "Connect Unreal Engine")[self.remote._broadcast_connection is None]) - row = layout.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.checkconnection",icon="FILE_REFRESH", text="Refresh Project") - - if self.remote.remote_nodes: - layout.prop(preferences, "SM_TabListProject", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_TabListProject], emboss=False) - if preferences.SM_TabListProject: - for X in self.remote.remote_nodes: - box = layout.box() - - col = box.column() - row = col.row() - split = row.split(factor=0.4) - col = split.column() - col.label(text="Project", icon="TEXT") - split = split.split() - col = split.column() - col.label(text=X.get("project_name", "Project")) - - col = box.column() - row = col.row() - split = row.split(factor=0.4) - col = split.column() - col.label(text="Engine", icon="TOOL_SETTINGS") - split = split.split() - col = split.column() - col.label(text=X.get("engine_version", "XX.XX.XX").split("-")[0]) - -# OPERATOR - -class OP_ConnectToUnrealEngine(Operator): - bl_idname = "ue4workspace.connecttounrealengine" - bl_label = "UE4Workspace Operator" - bl_description = "Connect / Disconnect Unreal Engine" - - remote = None - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - - if self.remote._broadcast_connection is None: - config = RemoteExecutionConfig(DEFAULT_MULTICAST_TTL=preferences.multicastTTL, DEFAULT_MULTICAST_GROUP_ENDPOINT=(preferences.multicastGroupEndPoint.split(":")[0], int(preferences.multicastGroupEndPoint.split(":")[1])), DEFAULT_MULTICAST_BIND_ADDRESS=preferences.multicastBindAddress, DEFAULT_COMMAND_ENDPOINT=("127.0.0.1", 6776)) - self.remote.start(config=config) - else: - # clear all skeleton list - preferences.skeleton.clear() - preferences.CHAR_CharacterSkeleton = "NEW" - preferences.ANIM_CharacterSkeleton = "NONE" - self.remote.stop() - return {"FINISHED"} - -class OP_CheckConnection(Operator): - bl_idname = "ue4workspace.checkconnection" - bl_label = "UE4Workspace Operator" - bl_description = "Refresh Project List" - - remote = None - - def execute(self, context): - print(self.remote.remote_nodes) - return {"FINISHED"} - -# operator export - -Ops = [ - OP_ConnectToUnrealEngine, - OP_CheckConnection -] \ No newline at end of file diff --git a/UE4WS_ExportOptionImportAssets.py b/UE4WS_ExportOptionImportAssets.py deleted file mode 100644 index 292ee53..0000000 --- a/UE4WS_ExportOptionImportAssets.py +++ /dev/null @@ -1,341 +0,0 @@ -import os -import json -import bpy -from mathutils import Matrix -from bpy.props import (EnumProperty, IntProperty, StringProperty, BoolProperty, PointerProperty, CollectionProperty) -from bpy.types import (Panel, Operator, PropertyGroup, UIList) - -# PROPERTY GROUP - -class IMPORTASSETS_Struct(PropertyGroup): - name: StringProperty(default="asset") - path: StringProperty(default="path") - isImport: BoolProperty(default=False) - -# group export - -Groups = [ - IMPORTASSETS_Struct -] - -# PROPS - -Props = [ - { - "type": "scene", - "name": "ImportAssetsTab", - "value": EnumProperty( - name="Preferences Tab", - items=[ - ("MESH", "Mesh", "Static Mesh Tab"), - ("CHARACTER", "Character", "Skeletal Mesh Tab"), - ("ANIMATION", "Animation", "Animation Tab") - ], - default="MESH" - ), - "resetVariable": True - }, - { - "type": "scene", - "name": "ImportAssetsMeshCollections", - "value": CollectionProperty(type=IMPORTASSETS_Struct), - "resetVariable": True - }, - { - "type": "scene", - "name": "indexAssetsMesh", - "value": IntProperty(default=-1), - "resetVariable": True - }, - { - "type": "scene", - "name": "ImportAssetsCharacterCollections", - "value": CollectionProperty(type=IMPORTASSETS_Struct), - "resetVariable": True - }, - { - "type": "scene", - "name": "indexAssetsCharacter", - "value": IntProperty(default=-1), - "resetVariable": True - }, - { - "type": "scene", - "name": "ImportAssetsAnimationCollections", - "value": CollectionProperty(type=IMPORTASSETS_Struct), - "resetVariable": True - }, - { - "type": "scene", - "name": "indexAssetsAnimation", - "value": IntProperty(default=-1), - "resetVariable": True - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ExportOptionImportAssetsPanel" - bl_parent_id = "UE4WORKSPACE_PT_ExportOptionPanel" - bl_label = "Import Assets" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - remote = None - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return preferences.exportOption in ["BOTH", "UNREAL"] - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - row = layout.row() - row.scale_y = 1.25 - row.operator("ue4workspace.updateassetslist", icon="FILE_REFRESH", text="Update Assets List") - - row = layout.row() - row.scale_y = 1.25 - row.prop(context.scene, "ImportAssetsTab", expand=True) - - layout.template_list("IMPORTASSETS_UL_AssetsList", "", context.scene, "ImportAssets" + context.scene.ImportAssetsTab.capitalize() + "Collections", context.scene, "indexAssets" + context.scene.ImportAssetsTab.capitalize(), rows=4) - - row = layout.row(align=True) - row.scale_y = 1.25 - row.operator("ue4workspace.selectimportasset", text="SELECT").type = "SELECT" - row.operator("ue4workspace.selectimportasset", text="DESELECT").type = "DESELECT" - row.operator("ue4workspace.selectimportasset", text="INVERT").type = "INVERT" - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.importassets", icon="IMPORT", text="Import Assets") - -# UIList - -class IMPORTASSETS_UL_AssetsList(UIList): - def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index): - row = layout.row() - row.label(text=item.name) - row.prop(item, "isImport", text="") - -# OPERATOR - -class OP_UpdateAssetsList(Operator): - bl_idname = "ue4workspace.updateassetslist" - bl_label = "Update Assets List" - bl_description = "Update Assets List From Unreal Engine Project" - bl_options = {"UNDO"} - - remote = None - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return preferences.exportOption in ["BOTH", "UNREAL"] and self.remote.remote_nodes - - def execute(self, context): - collection = { - "MESH": context.scene.ImportAssetsMeshCollections, - "ARMATURE": context.scene.ImportAssetsCharacterCollections, - "ACTION": context.scene.ImportAssetsAnimationCollections - } - # clear all assets - for coll in list(collection.values()): - coll.clear() - AssetsList = [] - - for node_id in [user["node_id"] for user in self.remote.remote_nodes]: - self.remote.open_command_connection(node_id) - # output = self.remote.run_command(os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "GetAllImportableAssets.py"), exec_mode="ExecuteFile") - # Fix Python PATH Script Issue #9 - output = self.remote.run_command("execfile(\"" + os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "GetAllImportableAssets.py").replace(os.sep, "/") +"\")", exec_mode="ExecuteStatement") - self.remote.close_command_connection() - openAssetsList = open(os.path.normpath(os.path.join(os.path.dirname(__file__), "Data", "assetsList.json")), "r") - readAssetsList = openAssetsList.read() - openAssetsList.close() - AssetsList += json.loads(readAssetsList) - - # add asset - for path, name, typeAsset in [tuple(asset) for asset in AssetsList]: - assetStruct = collection[typeAsset].add() - assetStruct.name = name - assetStruct.path = path - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Update Assets List Success") - except Exception: - pass - - return {"FINISHED"} - -class OP_SelectImportAsset(Operator): - bl_idname = "ue4workspace.selectimportasset" - bl_label = "Select Asset To Import" - bl_description = "Select Asset To Import" - bl_options = {"UNDO"} - - type: bpy.props.StringProperty(default="") - - @classmethod - def poll(self, context): - return True - - def execute(self, context): - collection = { - "MESH": context.scene.ImportAssetsMeshCollections, - "CHARACTER": context.scene.ImportAssetsCharacterCollections, - "ANIMATION": context.scene.ImportAssetsAnimationCollections - } - if self.type: - for assetStruct in collection[context.scene.ImportAssetsTab]: - assetStruct.isImport = {"SELECT": True, "DESELECT": False, "INVERT": not assetStruct.isImport}[self.type] - return {"FINISHED"} - -class OP_ImportAssets(Operator): - bl_idname = "ue4workspace.importassets" - bl_label = "Import Assets" - bl_description = "Import Assets From Unreal Engine Project" - bl_options = {"UNDO"} - - remote = None - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - if preferences.exportOption in ["FBX", "BOTH"] and context.mode == "OBJECT": - return bool(preferences.ExportFBXFolder.strip()) and self.remote.remote_nodes - return bool(preferences.TempFolder.strip()) and self.remote.remote_nodes - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - collection = { - "MESH": context.scene.ImportAssetsMeshCollections, - "CHARACTER": context.scene.ImportAssetsCharacterCollections, - "ANIMATION": context.scene.ImportAssetsAnimationCollections - }[context.scene.ImportAssetsTab] - - unrealsetting = { - "folder": preferences.ExportFBXFolder.strip() if preferences.exportOption in ["FBX", "BOTH"] else preferences.TempFolder.strip(), - "assets": [[asset.name, asset.path] for asset in collection if asset.isImport], - "setting": { - "fbx_export_compatibility": preferences.IMPORTASSETS_FBXExportCompatibility, - "ascii": preferences.IMPORTASSETS_ASCII, - "force_front_x_axis": preferences.IMPORTASSETS_ForceFrontXAxis, - "vertex_color": preferences.IMPORTASSETS_VertexColor, - "level_of_detail": preferences.IMPORTASSETS_LevelOfDetail, - "collision": preferences.IMPORTASSETS_Collision, - "export_morph_targets": preferences.IMPORTASSETS_ExportMorphTargets, - "export_preview_mesh": preferences.IMPORTASSETS_ExportPreviewMesh, - "map_skeletal_motion_to_root": preferences.IMPORTASSETS_MapSkeletalMotionToRoot, - "export_local_time": preferences.IMPORTASSETS_ExportLocalTime - } - } - - # Save unreal engine export option into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "importAssets.json"), "w+") - file.write(json.dumps(unrealsetting)) - file.close() - - arrFBXPath = [] - - for node_id in [user["node_id"] for user in self.remote.remote_nodes]: - self.remote.open_command_connection(node_id) - # output = self.remote.run_command(os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "ImportAssets.py"), exec_mode="ExecuteFile") - # Fix Python PATH Script Issue #9 - output = self.remote.run_command("execfile(\"" + os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "ImportAssets.py").replace(os.sep, "/") +"\")", exec_mode="ExecuteStatement") - self.remote.close_command_connection() - arrFBXPath += json.loads(output["output"][0]["output"]) - - oldMode = context.mode - if oldMode != "OBJECT": - bpy.ops.object.mode_set(mode="OBJECT") - - for filePath, fbxType in [tuple(arr) for arr in arrFBXPath]: - filePath += ".fbx" - if os.path.isfile(filePath): - bpy.ops.object.select_all(action="DESELECT") - bpy.ops.import_scene.fbx( - filepath=filePath, - directory="", - filter_glob="*.fbx", - ui_tab="MAIN", - use_manual_orientation=preferences.IMPORTASSETS_FBXManualOrientation, - global_scale=preferences.IMPORTASSETS_FBXScale, - bake_space_transform=preferences.IMPORTASSETS_FBXApplyTransform, - use_custom_normals=preferences.IMPORTASSETS_FBXCustomNormals, - use_image_search=preferences.IMPORTASSETS_FBXImageSearch, - use_alpha_decals=False, - decal_offset=preferences.IMPORTASSETS_FBXDecalOffset, - use_anim=preferences.IMPORTASSETS_FBXImportAnimation, - anim_offset=preferences.IMPORTASSETS_FBXAnimationOffset, - use_subsurf=preferences.IMPORTASSETS_FBXSubdivisionData, - use_custom_props=preferences.IMPORTASSETS_FBXCustomProperties, - use_custom_props_enum_as_string=preferences.IMPORTASSETS_FBXImportEnums, - ignore_leaf_bones=preferences.IMPORTASSETS_FBXIgnoreLeafBones, - force_connect_children=preferences.IMPORTASSETS_FBXForceConnectChildren, - automatic_bone_orientation=preferences.IMPORTASSETS_FBXAutomaticBoneOrientation, - primary_bone_axis=preferences.IMPORTASSETS_FBXPrimaryBoneAxis, - secondary_bone_axis=preferences.IMPORTASSETS_FBXSecondaryBoneAxis, - use_prepost_rot=preferences.IMPORTASSETS_FBXUsePrePostRotation, - axis_forward=preferences.IMPORTASSETS_FBXAxisForward, - axis_up=preferences.IMPORTASSETS_FBXAxisUp - ) - selectedObjects = context.selected_objects - if fbxType == "MESH": - # set custom collision - if preferences.IMPORTASSETS_Collision and len(selectedObjects) > 1: - mainObj = selectedObjects[0] - context.view_layer.objects.active = mainObj - for collisionObj in [obj for obj in selectedObjects if obj.name.startswith("UCX_")]: - context.scene.SM_CollsionPicker= collisionObj - bpy.ops.ue4workspace.smcollisionpicker() - lodEmpty = next(iter([obj for obj in selectedObjects if obj.type == "EMPTY"]), None) - if preferences.IMPORTASSETS_LevelOfDetail and lodEmpty: - mainObj = next(iter([obj for obj in selectedObjects if obj.type == "MESH" and obj.name.endswith("LOD0")]), None) - for lod in [obj for obj in selectedObjects if obj != mainObj and obj.type == "MESH" and "LOD" in obj.name and not obj.name.startswith("UCX")]: - lod.data.objectAsLOD = True - lodStruct = mainObj.data.LODs.add() - lodStruct.obj = lod - bpy.ops.object.parent_clear(type="CLEAR_KEEP_TRANSFORM") - mainObj.name = mainObj.name.replace("_LOD0", "") - bpy.data.objects.remove(lodEmpty, do_unlink=True) - elif fbxType == "ARMATURE": - emptyObj = next(iter([obj for obj in selectedObjects if obj.type == "EMPTY"]), None) - # scale object - for child in emptyObj.children: - child.scale = child.scale / 100.0 - child.parent = None - child.location = [0, 0, 0] - bpy.data.objects.remove(emptyObj, do_unlink=True) - elif fbxType == "ACTION": - # rename action - mainObj = next(iter([obj for obj in selectedObjects if obj.type == "ARMATURE"]), None) - action = mainObj.animation_data.action - action.name = os.path.splitext(os.path.basename(filePath))[0] - bpy.ops.object.delete(use_global=False) - os.remove(filePath) - - bpy.ops.object.select_all(action="DESELECT") - if oldMode != "OBJECT": - bpy.ops.object.mode_set(mode=oldMode) - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Import Assets Success") - except Exception: - pass - - return {"FINISHED"} - -# operator export - -Ops = [ - OP_UpdateAssetsList, - OP_SelectImportAsset, - OP_ImportAssets -] \ No newline at end of file diff --git a/UE4WS_ExportOptionImportAssetsFBXOption.py b/UE4WS_ExportOptionImportAssetsFBXOption.py deleted file mode 100644 index 8493b1f..0000000 --- a/UE4WS_ExportOptionImportAssetsFBXOption.py +++ /dev/null @@ -1,97 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ExportOptionImportAssetsFBXOptionPanel" - bl_parent_id = "UE4WORKSPACE_PT_ExportOptionImportAssetsPanel" - bl_label = "FBX Import Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "IMPORTASSETS_TabFBXInclude", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabFBXInclude], emboss=False) - if preferences.IMPORTASSETS_TabFBXInclude: - box = layout.box() - for arr in [["IMPORTASSETS_FBXCustomNormals", "Custom Normals"], ["IMPORTASSETS_FBXSubdivisionData", "Subdivision Data"], ["IMPORTASSETS_FBXCustomProperties", "Custom Properties"], ["IMPORTASSETS_FBXImportEnums", "Import Enums As Strings"], ["IMPORTASSETS_FBXImageSearch", "Image Search"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabFBXOrientation", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabFBXOrientation], emboss=False) - if preferences.IMPORTASSETS_TabFBXOrientation: - box = layout.box() - for arr in [["IMPORTASSETS_FBXManualOrientation", "Manual Orientation"], ["IMPORTASSETS_FBXAxisForward", "Forward"], ["IMPORTASSETS_FBXAxisUp", "Up"]]: - if arr[0] == "IMPORTASSETS_FBXManualOrientation": - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - else: - col = box.column() - col.enabled = preferences.IMPORTASSETS_FBXManualOrientation - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabFBXAnimation", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabFBXAnimation], emboss=False) - if preferences.IMPORTASSETS_TabFBXAnimation: - box = layout.box() - for arr in [["IMPORTASSETS_FBXImportAnimation", "Import Animation"], ["IMPORTASSETS_FBXAnimationOffset", "Animation Offset"]]: - if arr[0] == "IMPORTASSETS_FBXImportAnimation": - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - else: - col = box.column() - col.enabled = preferences.IMPORTASSETS_FBXImportAnimation - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabFBXArmature", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabFBXArmature], emboss=False) - if preferences.IMPORTASSETS_TabFBXArmature: - box = layout.box() - for arr in [["IMPORTASSETS_FBXIgnoreLeafBones", "Ignore Leaf Bones"], ["IMPORTASSETS_FBXForceConnectChildren", "Force Connect Children"], ["IMPORTASSETS_FBXAutomaticBoneOrientation", "Automatic Bone Orientation"], ["IMPORTASSETS_FBXPrimaryBoneAxis", "Primary Bone Axis"], ["IMPORTASSETS_FBXSecondaryBoneAxis", "Secondary Bone Axis"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_ExportOptionImportAssetsUnrealEngine.py b/UE4WS_ExportOptionImportAssetsUnrealEngine.py deleted file mode 100644 index eb89f02..0000000 --- a/UE4WS_ExportOptionImportAssetsUnrealEngine.py +++ /dev/null @@ -1,87 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ExportOptionImportAssetsUnrealEnginePanel" - bl_parent_id = "UE4WORKSPACE_PT_ExportOptionImportAssetsPanel" - bl_label = "Unreal Engine Import Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "IMPORTASSETS_TabExporter", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabExporter], emboss=False) - if preferences.IMPORTASSETS_TabExporter: - box = layout.box() - for arr in [["IMPORTASSETS_FBXExportCompatibility", "FBX Export Compatibility"], ["IMPORTASSETS_ASCII", "ASCII"], ["IMPORTASSETS_ForceFrontXAxis", "Force Front X Axis"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabMesh", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabMesh], emboss=False) - if preferences.IMPORTASSETS_TabMesh: - box = layout.box() - for arr in [["IMPORTASSETS_VertexColor", "Vertex Color"], ["IMPORTASSETS_LevelOfDetail", "Level Of Detail"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabStaticMesh", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabStaticMesh], emboss=False) - if preferences.IMPORTASSETS_TabStaticMesh: - box = layout.box() - for arr in [["IMPORTASSETS_Collision", "Collision"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabSkeletalMesh", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabSkeletalMesh], emboss=False) - if preferences.IMPORTASSETS_TabSkeletalMesh: - box = layout.box() - for arr in [["IMPORTASSETS_ExportMorphTargets", "Export Morph Targets"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "IMPORTASSETS_TabAnimation", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.IMPORTASSETS_TabAnimation], emboss=False) - if preferences.IMPORTASSETS_TabAnimation: - box = layout.box() - for arr in [["IMPORTASSETS_ExportPreviewMesh", "Export Preview Mesh"], ["IMPORTASSETS_MapSkeletalMotionToRoot", "Map Skeletal Motion To Root"], ["IMPORTASSETS_ExportLocalTime", "Export Local Time"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_Object.py b/UE4WS_Object.py deleted file mode 100644 index 671915e..0000000 --- a/UE4WS_Object.py +++ /dev/null @@ -1,58 +0,0 @@ -import bpy -from mathutils import Matrix -from bpy.props import (EnumProperty, StringProperty, PointerProperty) -from bpy.types import (Panel, Operator) - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Object" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - - remote = None - - @classmethod - def poll(self, context): - return True - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - -# OPERATOR - -class OP_ToggleVisibilityObject(Operator): - bl_idname = "ue4workspace.togglevisibilityobject" - bl_label = "UE4Workspace Operator" - bl_description = "Toggle Visibility Object" - bl_options = {"UNDO"} - - objName: StringProperty(name="Object name") - - def execute(self, context): - obj = context.scene.objects[self.objName] - obj.hide_set(not obj.hide_get()) - return {"FINISHED"} - -class OP_RemoveObject(Operator): - bl_idname = "ue4workspace.removeobject" - bl_label = "UE4Workspace Operator" - bl_description = "Remove Object" - bl_options = {"UNDO"} - - objName: StringProperty(name="Object name") - - def execute(self, context): - obj = context.scene.objects[self.objName] - bpy.data.objects.remove(obj, do_unlink=True) - return {"FINISHED"} - -# operator export - -Ops = [ - OP_ToggleVisibilityObject, - OP_RemoveObject -] \ No newline at end of file diff --git a/UE4WS_ObjectCharacterPart.py b/UE4WS_ObjectCharacterPart.py deleted file mode 100644 index 5f77d68..0000000 --- a/UE4WS_ObjectCharacterPart.py +++ /dev/null @@ -1,79 +0,0 @@ -import bpy -from mathutils import Matrix -from bpy.props import (EnumProperty, BoolProperty, FloatVectorProperty, StringProperty, PointerProperty) -from bpy.types import (Panel, Operator) - -# PROPS - -Props = [ - { - "type": "mesh", - "name": "isExportCharacterPart", - "value": BoolProperty( - name="Export Character Part", - description="If true, it will export the mesh", - default=True - ), - "resetVariable": False - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectCharacterPartPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Character Part" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type in ["ARMATURE"] - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - if list(activeObject.children): - characterPartObjects = [obj for obj in activeObject.children if obj.type == "MESH"] - layout.label(text="Export Part") - box = layout.box() - for obj in characterPartObjects: - row = box.row() - split = row.split(factor=0.7) - row = split.row() - row.prop(obj.data, "isExportCharacterPart", text="") - row.prop(obj, "name", text="") - split = split.split() - row = split.row() - row.alignment = "RIGHT" - row.operator("ue4workspace.togglevisibilityobject",icon=("HIDE_OFF", "HIDE_ON")[obj.hide_get()], text="", emboss=False).objName = obj.name - row.operator("ue4workspace.removeobject",icon="TRASH", text="", emboss=False).objName = obj.name - else: - col = layout.column(align=True) - col.label(text="This armature does not") - col.label(text="have any mesh to export.") - -# OPERATOR - -class OP_SomeOperatorHere(Operator): - bl_idname = "ue4workspace.someoperatorhere" - bl_label = "Some Name Operator Here" - bl_description = "Some Description Operator Here" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - return True - - def execute(self, context): - return {"FINISHED"} - -# operator export - -Ops = [ -] \ No newline at end of file diff --git a/UE4WS_ObjectControlRig.py b/UE4WS_ObjectControlRig.py deleted file mode 100644 index 41e5302..0000000 --- a/UE4WS_ObjectControlRig.py +++ /dev/null @@ -1,169 +0,0 @@ -import bpy -import math -from mathutils import (Matrix, Vector) -from bpy.props import (EnumProperty, StringProperty, PointerProperty) -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectControlRigPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Control Rig" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return context.mode == "POSE" and context.active_object is not None and context.active_object.data.UE4RIGGED - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - activeBone = context.active_pose_bone - - poseBones = activeObject.pose.bones - - row = layout.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Hide FK Bone") - col.label(text="Hide Vis Bone") - col = split.column() - col.prop(activeObject.data, "hideFK", text="") - col.prop(activeObject.data, "hideVis", text="") - - if activeBone is not None: - # ik bone - if activeBone.bone.controlIK: - row = layout.row(align=True) - row.scale_y = 1.2 - row.operator("ue4workspace.snapfktoik",icon="SNAP_ON", text="Snap FK>IK") - row.operator("ue4workspace.snapiktofk",icon="SNAP_ON", text="Snap IK>FK") - row = layout.row() - row.prop(activeBone.bone, "switchIK", expand=True) - if preferences.experimentalFeatures: - row = layout.row() - row.prop(activeBone.bone, "stretchBone", slider=True) - layout.label(text="Stretch Volume") - row = layout.row() - row.prop(activeBone.bone, "stretchBoneMode", expand=True) - - # ik finger bone - if activeBone.bone.controlFingerIK: - row = layout.row() - row.prop(activeBone.bone, "switchIK", expand=True) - - if activeBone.bone.UE4RIGTYPE == "SPINE": - if preferences.experimentalFeatures: - row = layout.row() - row.prop(activeBone.bone, "stretchBone", slider=True) - layout.label(text="Stretch Volume") - row = layout.row() - row.prop(activeBone.bone, "stretchBoneMode", expand=True) - -# OPERATOR - -class OP_SnapFKtoIK(Operator): - bl_idname = "ue4workspace.snapfktoik" - bl_label = "Snap FK to IK" - bl_description = "Snap FK to IK" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.mode == "POSE" and context.active_pose_bone - - def execute(self, context): - activeObject = context.active_object - activeBone = context.active_pose_bone - poseBones = activeObject.pose.bones - - for boneName in [activeBone.bone.pointABoneIK, activeBone.bone.pointBBoneIK]: - tweakBone = poseBones.get("STRETCH_" + boneName) - bone = poseBones.get("FK_" + boneName) - bpy.ops.pose.visual_transform_apply() - bone.matrix = tweakBone.matrix - fkControl = poseBones.get("FK_" + activeBone.name.replace("CONTROL_", "")) - if fkControl and fkControl.name != "FK_" + activeBone.bone.pointBBoneIK: - bpy.ops.pose.visual_transform_apply() - fkControl.matrix = activeBone.matrix - bpy.ops.pose.visual_transform_apply() - return {"FINISHED"} - -class OP_SnapIKtoFK(Operator): - bl_idname = "ue4workspace.snapiktofk" - bl_label = "Snap IK to FK" - bl_description = "Snap IK to FK" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.mode == "POSE" and context.active_pose_bone - - # script from rigify - def rotation_difference(self, mat1, mat2): - """ Returns the shortest-path rotational difference between two - matrices. - """ - q1 = mat1.to_quaternion() - q2 = mat2.to_quaternion() - angle = math.acos(min(1,max(-1,q1.dot(q2)))) * 2 - if angle > math.pi: - angle = -angle + (2*math.pi) - return angle - - def execute(self, context): - activeObject = context.active_object - activeBone = context.active_pose_bone - poseBones = activeObject.pose.bones - - boneFKA = poseBones.get("FK_" + activeBone.bone.pointABoneIK) - boneFKB = poseBones.get("FK_" + activeBone.bone.pointBBoneIK) - boneIKA = poseBones.get("IK_" + activeBone.bone.pointABoneIK) - boneIKB = poseBones.get("IK_" + activeBone.bone.pointBBoneIK) - poleBone = poseBones.get("IKPOLE_" + activeBone.bone.pointABoneIK) - fkControl = poseBones.get("FK_" + activeBone.name.replace("CONTROL_", "")) - - matchMatrix = activeObject.convert_space(pose_bone=boneFKA, matrix=boneFKA.matrix, from_space="POSE", to_space="POSE") - - bpy.ops.pose.visual_transform_apply() - - activeBone.matrix = fkControl.matrix if fkControl is not None and fkControl.name != "FK_" + activeBone.bone.pointBBoneIK else Matrix.Translation(boneFKB.tail) @ (activeBone.matrix.to_quaternion().to_matrix().to_4x4() @ Matrix.Scale(1, 4, activeBone.matrix.to_scale())) - - bpy.ops.pose.visual_transform_apply() - - vIK = (boneIKB.matrix.to_translation() + boneIKB.vector) - boneIKA.matrix.to_translation() - - vPerpendicular = vIK.cross(Vector((1,0,0)) if abs(vIK[0]) < abs(vIK[1]) else Vector((0,1,0))).normalized() * (boneIKA.length + boneIKB.length) - - def setPole(vP): - pLoc = boneIKA.matrix.to_translation() + (vIK/2) + vP - poleBone.location = poleBone.id_data.convert_space(matrix=Matrix.Translation(pLoc), pose_bone=poleBone, from_space="POSE", to_space="LOCAL").to_translation() - bpy.ops.pose.visual_transform_apply() - - setPole(vPerpendicular) - - angle = self.rotation_difference(boneIKA.matrix, matchMatrix) - - vPerpendicular1 = Matrix.Rotation(angle, 4, vIK) @ vPerpendicular - setPole(vPerpendicular1) - ang1 = self.rotation_difference(boneIKA.matrix, matchMatrix) - - vPerpendicular2 = Matrix.Rotation(-angle, 4, vIK) @ vPerpendicular - setPole(vPerpendicular2) - ang2 = self.rotation_difference(boneIKA.matrix, matchMatrix) - - if ang1 < ang2: - setPole(vPerpendicular1) - - return {"FINISHED"} - -# operator export - -Ops = [ - OP_SnapFKtoIK, - OP_SnapIKtoFK -] \ No newline at end of file diff --git a/UE4WS_ObjectCustomCollision.py b/UE4WS_ObjectCustomCollision.py deleted file mode 100644 index 383a348..0000000 --- a/UE4WS_ObjectCustomCollision.py +++ /dev/null @@ -1,235 +0,0 @@ -import bpy -from mathutils import Matrix -from bpy.props import (EnumProperty, StringProperty, PointerProperty) -from bpy.types import (Panel, Operator) - -# PROPS - -Props = [ - { - "type": "scene", - "name": "SM_CollsionPicker", - "value": PointerProperty( - name="Collision Picker", - description="Make mesh into a custom collision", - type=bpy.types.Object, - poll=lambda self, obj: obj.type == "MESH" and not obj.get("isCollision") and not "ARMATURE" in [mod.type for mod in obj.modifiers] - ), - "resetVariable": True - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectCustomCollisionPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Custom Collision" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type in ["MESH"] - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.makecollision",icon="OUTLINER_OB_MESH", text="Create Collision") - - if context.mode == "OBJECT" and activeObject is not None and not activeObject.get("isCollision"): - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Collision Picker") - split = split.split() - col = split.column() - col.prop(context.scene, "SM_CollsionPicker", icon="MOD_SOLIDIFY", text="") - col = col.row() - col.scale_y = 1.5 - col.operator("ue4workspace.smcollisionpicker",icon="MOD_SOLIDIFY", text="Convert") - - collisionObjects = [obj for obj in context.scene.objects if obj.type == "MESH" and obj.parent == activeObject and obj.get("isCollision")] - - if collisionObjects: - box = layout.box() - for obj in collisionObjects: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.prop(obj, "name", text="") - split = split.split() - row = split.row() - row.alignment = "RIGHT" - row.operator("ue4workspace.togglevisibilityobject",icon=("HIDE_OFF", "HIDE_ON")[obj.hide_get()], text="", emboss=False).objName = obj.name - row.operator("ue4workspace.removeobject",icon="TRASH", text="", emboss=False).objName = obj.name - -# OPERATOR - -class OP_SMCollisionPicker(Operator): - bl_idname = "ue4workspace.smcollisionpicker" - bl_label = "UE4Workspace Operator" - bl_description = "Create mesh into a custom collision" - bl_options = {"UNDO"} - - @classmethod - def poll(cls, context): - obj = context.scene.SM_CollsionPicker - if context.mode == "OBJECT": - if context.active_object is not None and obj is not None and obj.type == "MESH" and not obj.get("isCollision") and context.active_object is not obj: - return True - return False - - def execute(self, context): - obj = context.scene.SM_CollsionPicker - context.scene.SM_CollsionPicker = None - - obj["isCollision"] = True - obj.parent = context.active_object - # Clear local transform - obj.matrix_parent_inverse = context.active_object.matrix_world.inverted() - obj.show_wire = True - obj.display_type = "SOLID" - obj.color = (0.15, 1.000000, 0, 0.200000) - context.space_data.shading.color_type = "OBJECT" - - mat = bpy.data.materials.get("MAT_UE4CustomCollision") - if mat is None: - mat = bpy.data.materials.new(name="MAT_UE4CustomCollision") - mat.blend_method = "BLEND" - mat.use_nodes = True - mat.node_tree.nodes["Principled BSDF"].inputs[0].default_value = (0.15, 1.000000, 0, 1) - mat.node_tree.nodes["Principled BSDF"].inputs[18].default_value = 0.1 - mat.use_fake_user = True - - if obj.data.materials: - obj.data.materials[0] = mat - else: - obj.data.materials.append(mat) - - oldCollections = obj.users_collection - collection = bpy.data.collections.get("UE4CustomCollision", False) - if (not collection): - collection = bpy.data.collections.new("UE4CustomCollision") - context.scene.collection.children.link(collection) - - collection.objects.link(obj) - for coll in oldCollections: - coll.objects.unlink(obj) - - # # Collision name - # collName = "UCX_" + context.active_object.name + "_" - # # Collision filter from scene objects - # collObjects = [obj for obj in context.scene.objects if obj.name.startswith(collName)] - - # obj.name = collName + ("", "0")[(len(collObjects) + 1) <= 9] + str((len(collObjects) + 1)) - - return {"FINISHED"} - -class OP_MakeCollision(Operator): - bl_idname = "ue4workspace.makecollision" - bl_label = "Create Collsion From Vertices" - bl_description = "Create Custom Collision Mesh\nSelect a Mesh > Edit Mode > Select Edge" - bl_options = {"UNDO", "REGISTER"} - - CollisionName: bpy.props.StringProperty( - name="Name", - default="collisionName" - ) - - Size: bpy.props.FloatProperty( - name="Size", - min=1, - default=1.015 - ) - - @classmethod - def poll(cls, context): - return context.object is not None and context.active_object is not None and context.active_object.mode == "EDIT" and context.active_object.type == "MESH" and (not context.active_object.get("isCollision")) - - def execute(self, context): - parentObj = context.active_object - - collName = "UCX_" + context.active_object.name + "_" - index = len([obj for obj in context.scene.objects if obj.name.startswith(collName)]) - collName += ("", "0")[index < 9] + str(index + 1) - - mode = context.active_object.mode - bpy.ops.object.mode_set(mode="OBJECT") - selected_verts = [verts for verts in context.active_object.data.vertices if verts.select] - selected_verts = [verts.co for verts in selected_verts] - - # create collection (UE4CustomCollision) if not exist - collection = bpy.data.collections.get("UE4CustomCollision", False) - if (not collection): - collection = bpy.data.collections.new("UE4CustomCollision") - context.scene.collection.children.link(collection) - - mesh = bpy.data.meshes.new(self.CollisionName) - obj = bpy.data.objects.new(self.CollisionName, mesh) - collection.objects.link(obj) - mesh.from_pydata(selected_verts, [], []) - - bpy.ops.object.mode_set(mode="OBJECT") - obj["isCollision"] = True - obj.parent = parentObj - obj.location = [0, 0, 0] - bpy.ops.object.select_all(action="DESELECT") - obj.show_wire = True - obj.display_type = "SOLID" - obj.color = (0.15, 1.000000, 0, 0.200000) - context.space_data.shading.color_type = "OBJECT" - - # create material (MAT_UE4CustomCollision) if not exist - mat = bpy.data.materials.get("MAT_UE4CustomCollision") - if mat is None: - mat = bpy.data.materials.new(name="MAT_UE4CustomCollision") - mat.blend_method = "BLEND" - mat.use_nodes = True - mat.node_tree.nodes["Principled BSDF"].inputs[0].default_value = (0.15, 1.000000, 0, 1) - mat.node_tree.nodes["Principled BSDF"].inputs[18].default_value = 0.1 - mat.use_fake_user = True - - if obj.data.materials: - obj.data.materials[0] = mat - else: - obj.data.materials.append(mat) - - context.view_layer.objects.active = obj - bpy.ops.object.mode_set(mode="EDIT") - oldPivot = bpy.context.scene.tool_settings.transform_pivot_point - bpy.context.scene.tool_settings.transform_pivot_point = "MEDIAN_POINT" - bpy.ops.transform.resize(value=(self.Size, self.Size, self.Size), orient_type="GLOBAL", orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type="GLOBAL", mirror=True, use_proportional_edit=False, proportional_edit_falloff="SMOOTH", proportional_size=1, use_proportional_connected=False, use_proportional_projected=False) - bpy.ops.mesh.convex_hull() - # bpy.ops.mesh.delete(type="ONLY_FACE") - bpy.context.scene.tool_settings.transform_pivot_point = oldPivot - - bpy.ops.object.mode_set(mode="OBJECT") - bpy.ops.object.select_all(action="DESELECT") - context.view_layer.objects.active = parentObj - parentObj.select_set(state=True) - bpy.ops.object.mode_set(mode=mode) - - # try: - # bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Make Custom Collision Done") - # except Exception: - # pass - - return {"FINISHED"} - - -# operator export - -Ops = [ - OP_SMCollisionPicker, - OP_MakeCollision, -] \ No newline at end of file diff --git a/UE4WS_ObjectLOD.py b/UE4WS_ObjectLOD.py deleted file mode 100644 index 9aa8550..0000000 --- a/UE4WS_ObjectLOD.py +++ /dev/null @@ -1,272 +0,0 @@ -import math -import bpy -from bpy.props import (EnumProperty, FloatProperty, FloatVectorProperty, IntProperty, StringProperty, PointerProperty, BoolProperty, CollectionProperty) -from bpy.types import (Panel, Operator, PropertyGroup) -from mathutils import Vector - -# PROPERTY GROUP - -class LOD_Struct(PropertyGroup): - screenSize: FloatProperty( - name="LOD Screen Size", - description="Set a screen size value for LOD", - default=0.0 - ) - obj: PointerProperty( - name="LOD Object", - description="Mesh to LOD", - type=bpy.types.Object, - poll=lambda self, obj: obj.type == "MESH" and not "ARMATURE" in [mod.type for mod in obj.modifiers] and obj != bpy.context.active_object and obj.data.objectAsLOD - ) - -# group export - -Groups = [ - LOD_Struct -] - -# PROPS - -Props = [ - { - "type": "mesh", - "name": "objectAsLOD", - "value": BoolProperty( - name="Expot as LOD", - description="If checked, will not export as static mesh instead will be a part of LOD", - default=False - ), - "resetVariable": False - }, - { - "type": "mesh", - "name": "AutoComputeLODScreenSize", - "value": BoolProperty( - name="Auto Compute LOD ScreenSize", - description="If checked, the editor will automatically compute screen size values for the static mesh’s LODs. If unchecked, the user can enter custom screen size values for each LOD", - default=True - ), - "resetVariable": False - }, - { - "type": "mesh", - "name": "LOD0ScreenSize", - "value": FloatProperty( - name="LOD 0 Screen Size", - description="Set a screen size value for LOD 0", - default=1.0 - ), - "resetVariable": False - }, - { - "type": "mesh", - "name": "LODs", - "value": CollectionProperty(type=LOD_Struct), - "resetVariable": False - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectLODPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Level of Detail" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type in ["MESH"] and not "ARMATURE" in [mod.type for mod in context.active_object.modifiers] - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - split = layout.row().split(factor=0.6) - row = split.row() - row.alignment = "RIGHT" - row.label(text="Object as LOD") - split = split.split() - row = split.row() - row.prop(activeObject.data, "objectAsLOD", text="") - - if not activeObject.data.objectAsLOD: - # row = layout.row() - # row.scale_y = 1.5 - # row.operator("ue4workspace.previewlodmode", icon="FULLSCREEN_ENTER", text="LOD Preview Mode") - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.addlodslot", icon="PRESET_NEW", text="Add LOD Slot") - - split = layout.row().split(factor=0.6) - row = split.row() - row.alignment = "RIGHT" - row.label(text="Auto LOD Screen Size") - split = split.split() - row = split.row() - row.prop(activeObject.data, "AutoComputeLODScreenSize", text="") - - split = layout.row().split(factor=0.6) - col = split.column() - row = col.row(align=True) - row.alignment = "RIGHT" - row.label(text="LOD 0") - # row.label(text="", icon="RESTRICT_VIEW_OFF") - if not activeObject.data.AutoComputeLODScreenSize: - row = col.row(align=True) - row.alignment = "RIGHT" - row.label(text="Screen Size") - split = split.split() - col = split.column() - row = col.row(align=True) - row.label(text=activeObject.name, icon="MESH_CUBE") - if not activeObject.data.AutoComputeLODScreenSize: - row = col.row(align=True) - row.prop(activeObject.data, "LOD0ScreenSize", text="") - - for index, lod in enumerate(activeObject.data.LODs, start=1): - split = layout.row().split(factor=0.6) - col = split.column() - row = col.row(align=True) - row.operator("ue4workspace.removelodslot", icon="X", text="").index = index - 1 - sub = row.row() - sub.alignment = "RIGHT" - sub.scale_x = 2.0 - sub.label(text="LOD " + str(index)) - # row.prop(activeObject, "hide_viewport", icon="RESTRICT_VIEW_OFF", text="", emboss=False) - if not activeObject.data.AutoComputeLODScreenSize: - row = col.row(align=True) - row.alignment = "RIGHT" - row.label(text="Screen Size") - split = split.split() - col = split.column() - row = col.row(align=True) - row.prop(lod, "obj", text="", icon="MESH_CUBE") - if not activeObject.data.AutoComputeLODScreenSize: - row = col.row(align=True) - row.prop(lod, "screenSize", text="") - -# OPERATOR - -# I was try to make preview lod mode but for now I dont now how uneal engine calculate "current screen size" - -class OP_PreviewLODMode(Operator): - bl_idname = "ue4workspace.previewlodmode" - bl_label = "Preview LOD Mode" - bl_description = "Preview LOD Mode" - bl_options = {"UNDO"} - - _initial_matrix = None # matrix for restore location and rotation - _forwardVector = None - _moveSpeed = 1 - _cameraFOV = 39.6 # default FOV blender - _radiusObject = None - _worldLocationObject = None - - @classmethod - def poll(self, context): - activeObject = context.active_object - return context.mode == "OBJECT" and activeObject is not None and activeObject.type in ["MESH"] and len([lod for lod in activeObject.data.LODs if lod.obj]) - - def modal(self, context, event): - v3d = context.space_data - rv3d = v3d.region_3d - - rv3d_loc, rv3d_rot, rv3d_sca = rv3d.view_matrix.decompose() - - distanceToObject = (self._worldLocationObject - rv3d_loc).length - - headerText = "Preview LOD Mode | Speed {} | Screen Size {}".format(self._moveSpeed, distanceToObject) - - if event.type in ["WHEELUPMOUSE", "WHEELDOWNMOUSE"]: - # zoom in / out - rv3d.view_location = rv3d.view_location + (self._forwardVector * self._moveSpeed) if event.type == "WHEELUPMOUSE" else rv3d.view_location - (self._forwardVector * self._moveSpeed) - context.area.header_text_set(headerText) - # increase or decrease speed - if event.type in ["UP_ARROW", "DOWN_ARROW"]: - self._moveSpeed += 1 if event.type == "UP_ARROW" else -1 - context.area.header_text_set(headerText) - # exit mode - elif event.type in {"RIGHTMOUSE", "ESC"}: - # restore location and rotation - rv3d.view_matrix = self._initial_matrix - context.area.header_text_set(None) - return {"CANCELLED"} - return {"RUNNING_MODAL"} - - def invoke(self, context, event): - if context.space_data.type == "VIEW_3D": - v3d = context.space_data - rv3d = v3d.region_3d - if rv3d.view_perspective in ["CAMERA", "ORTHO"]: - rv3d.view_perspective = "PERSP" - # copy current matrix - self._initial_matrix = rv3d.view_matrix.copy() - - # Focus to object - bpy.ops.object.select_all(action="DESELECT") - context.active_object.select_set(True) - bpy.ops.view3d.view_selected(use_all_regions=False) - context.active_object.select_set(False) - # get radius object - self._radiusObject = (max(context.active_object.dimensions)/2)/100 - obj_loc, obj_rot, obj_sca = context.active_object.matrix_world.decompose() - self._worldLocationObject = obj_loc - - # get forward vector - self._forwardVector = rv3d.view_rotation.copy() @ Vector((0,0,-1)) - - context.window_manager.modal_handler_add(self) - return {"RUNNING_MODAL"} - else: - self.report({"WARNING"}, "Active space must be a View3d") - return {"CANCELLED"} - -class OP_AddLODSlot(Operator): - bl_idname = "ue4workspace.addlodslot" - bl_label = "Add LOD Slot" - bl_description = "Add LOD Slot" - bl_options = {"UNDO"} - - @classmethod - def poll(cls, context): - activeObject = context.active_object - return activeObject is not None and activeObject.type in ["MESH"] and not "ARMATURE" in [mod.type for mod in activeObject.modifiers] and 7 > len(activeObject.data.LODs) - - def execute(self, context): - activeObject = context.active_object - activeObject.data.LODs.add() - return {"FINISHED"} - -class OP_RemoveLODSlot(Operator): - bl_idname = "ue4workspace.removelodslot" - bl_label = "Remove LOD Slot" - bl_description = "Remove LOD Slot" - bl_options = {"UNDO"} - - index: IntProperty(default=-1) - - @classmethod - def poll(cls, context): - activeObject = context.active_object - return activeObject is not None and activeObject.type in ["MESH"] and not "ARMATURE" in [mod.type for mod in activeObject.modifiers] - - def execute(self, context): - activeObject = context.active_object - if self.index > -1: - lod = activeObject.data.LODs[self.index] - activeObject.data.LODs.remove(self.index) - return {"FINISHED"} - -# operator export - -Ops = [ - # OP_PreviewLODMode, - OP_AddLODSlot, - OP_RemoveLODSlot -] \ No newline at end of file diff --git a/UE4WS_ObjectRetargetAnimation.py b/UE4WS_ObjectRetargetAnimation.py deleted file mode 100644 index 60249d1..0000000 --- a/UE4WS_ObjectRetargetAnimation.py +++ /dev/null @@ -1,828 +0,0 @@ -import bpy -from bpy.props import (EnumProperty, StringProperty, FloatProperty, FloatVectorProperty, IntProperty, BoolProperty, BoolVectorProperty, PointerProperty, CollectionProperty) -from bpy.types import (Panel, Operator, PropertyGroup, UIList) - -# PROPERTY GROUP - -class RETARGET_DataPath(PropertyGroup): - path: StringProperty(default="path") - -class RETARGET_BoneParentGroup(PropertyGroup): - name: StringProperty(default="Bone") - boneExist: BoolProperty(default=True) - boneNotExist: BoolProperty(name="Warning", description="Bone Does Not Exist", default=False) - mute: BoolProperty(default=False) - bone: StringProperty(default="Bone2") - parent: StringProperty(default="Bone") - influence: FloatProperty(default=1.0, min=0.0, max=1.0) - -class RETARGET_BoneMapGroup(PropertyGroup): - name: StringProperty(default="Bone") - obj: PointerProperty(type=bpy.types.Object) - boneTargetName: StringProperty(default="Bone") - boneSourceName: StringProperty(default="Bone") - boneTargetExist: BoolProperty(default=True) - boneSourceExist: BoolProperty(default=True) - boneNotExist: BoolProperty(name="Warning", description="Bone Does Not Exist", default=False) - def updateMute(self, context): - for FCurve in self.obj.animation_data.drivers: - if FCurve.data_path + "["+ str(FCurve.array_index) +"]" in [path.path for path in self.dataPaths]: - FCurve.mute = self.mute - mute: BoolProperty(default=False, update=updateMute) - transform: BoolVectorProperty(default=(False, False, False), size=3) - axis: BoolVectorProperty(default=(False, False, False), size=3) - source: StringProperty(default="Bone") - target: StringProperty(default="Bone") - dataPaths: CollectionProperty(type=RETARGET_DataPath) - influence: FloatProperty(default=1.0, min=0.0, max=1.0) - locationMultiply: FloatProperty(default=1.0) - ROT_XInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - ROT_YInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - ROT_ZInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - LOC_XInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - LOC_YInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - LOC_ZInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - SCALE_XInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - SCALE_YInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - SCALE_ZInfluence: FloatProperty(default=1.0, min=0.0, max=1.0) - -# group export - -Groups = [ - RETARGET_DataPath, - RETARGET_BoneParentGroup, - RETARGET_BoneMapGroup -] - -# PROPS - -Props = [ - { - "type": "armature", - "name": "RetargetSource", - "value": PointerProperty( - name="Retarget Source", - description="Armature for retarget source", - type=bpy.types.Object, - poll=lambda self, obj: obj.type == "ARMATURE" and obj is not bpy.context.active_object - ), - "resetVariable": False - }, - { - "type": "armature", - "name": "RetargetPreset", - "value": EnumProperty( - name="Retarget Preset", - items=lambda self, context: [(str(preset.flag), preset.name, preset.description) for preset in context.preferences.addons[__package__].preferences.RETARGET_Presets], - default=None - ), - "resetVariable": False - }, - { - "type": "armature", - "name": "HasBind", - "value": BoolProperty(default=False), - "resetVariable": False - }, - { - "type": "armature", - "name": "BoneParents", - "value": CollectionProperty(type=RETARGET_BoneParentGroup), - "resetVariable": False - }, - { - "type": "armature", - "name": "indexBoneParent", - "value": IntProperty( - default=-1 - ), - "resetVariable": True - }, - { - "type": "armature", - "name": "BoneMaps", - "value": CollectionProperty(type=RETARGET_BoneMapGroup), - "resetVariable": False - }, - { - "type": "armature", - "name": "indexBoneMap", - "value": IntProperty( - default=-1 - ), - "resetVariable": True - }, - { - "type": "armature", - "name": "ParentBoneTab", - "value": BoolProperty(default=False), - "resetVariable": True - }, - { - "type": "armature", - "name": "BoneMapTab", - "value": BoolProperty(default=False), - "resetVariable": True - }, - { - "type": "armature", - "name": "boneShapeObj", - "value": PointerProperty(type=bpy.types.Object), - "resetVariable": False - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_RetargetAnimationPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Retarget Animation" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - return activeObject is not None and activeObject.type == "ARMATURE" and context.mode in ["OBJECT", "POSE"] - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Retarget Preset") - col.label(text="Target") - col.label(text="Source") - split = split.split() - col = split.column() - col.prop(activeObject.data, "RetargetPreset", text="") - col.label(text=activeObject.name, icon="OUTLINER_OB_ARMATURE") - col.prop(activeObject.data, "RetargetSource", text="", icon="OUTLINER_OB_ARMATURE") - - row = layout.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.bindarmature",icon="MOD_MIRROR", text=("BIND", "UNBIND")[activeObject.data.HasBind]) - - row = layout.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.bakeretargetaction",icon="RENDER_ANIMATION", text="BAKE ACTION") - - if activeObject.data.HasBind: - layout.prop(activeObject.data, "ParentBoneTab", icon=("TRIA_RIGHT", "TRIA_DOWN")[activeObject.data.ParentBoneTab], text="Parent Bone Tweak", emboss=False) - if activeObject.data.ParentBoneTab: - col = layout.column() - row = col.row() - split = row.split(factor=0.8) - col = split.column() - col.label(text="Name") - split = split.split() - col = split.column() - col.alignment = "RIGHT" - col.label(text="Mute") - - layout.template_list("RETARGET_UL_BoneParentList", "", activeObject.data, "BoneParents", activeObject.data, "indexBoneParent", rows=4) - - indexBoneParent = activeObject.data.indexBoneParent - if indexBoneParent != -1 and indexBoneParent < len(activeObject.data.BoneParents): - BoneParent = activeObject.data.BoneParents[indexBoneParent] - if BoneParent.boneExist: - box = layout.box() - box.label(text=BoneParent.name) - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Bone") - col.label(text="Parent") - col.label(text="Influence") - split = split.split() - col = split.column() - col.alignment = "LEFT" - row = col.row(align=True) - if not BoneParent.boneExist: - row.prop(BoneParent, "boneNotExist", text="", icon="ERROR", emboss=False) - row.label(text=BoneParent.bone) - col.label(text=BoneParent.parent) - col.prop(BoneParent, "influence", text="", slider=True) - - row = box.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.mirrorparentvalue",icon="MOD_MIRROR", text="Mirror Value") - - layout.prop(activeObject.data, "BoneMapTab", icon=("TRIA_RIGHT", "TRIA_DOWN")[activeObject.data.BoneMapTab], text="Bone Tweak", emboss=False) - if activeObject.data.BoneMapTab: - col = layout.column() - row = col.row() - split = row.split(factor=0.8) - col = split.column() - col.label(text="Name") - split = split.split() - col = split.column() - col.alignment = "RIGHT" - col.label(text="Mute") - - layout.template_list("RETARGET_UL_BoneMapList", "", activeObject.data, "BoneMaps", activeObject.data, "indexBoneMap", rows=4) - - indexBoneMap = activeObject.data.indexBoneMap - if indexBoneMap != -1 and indexBoneMap < len(activeObject.data.BoneMaps): - BoneMap = activeObject.data.BoneMaps[indexBoneMap] - - box = layout.box() - box.label(text=BoneMap.name) - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Target") - col.label(text="Source") - split = split.split() - col = split.column() - row = col.row(align=True) - if not BoneMap.boneTargetExist: - row.prop(BoneMap, "boneNotExist", text="", icon="ERROR", emboss=False) - row.label(text=BoneMap.target) - row = col.row(align=True) - if not BoneMap.boneSourceExist: - row.prop(BoneMap, "boneNotExist", text="", icon="ERROR", emboss=False) - row.label(text=BoneMap.source if BoneMap.source else "OBJECT") - - row = box.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.mirrortweakvalue",icon="MOD_MIRROR", text="Mirror Value") - - for index, transform in enumerate(BoneMap.transform): - if transform: - transformLabel = ["Rotation", "Location", "Scale"][index] - transformAttribute = ["ROT_", "LOC_", "SCALE_"][index] - if transformAttribute == "LOC_": - box.row().label(text=transformLabel + " Multipy") - box.row(align=True).prop(BoneMap, "locationMultiply", text="") - box.row().label(text="Influence " + transformLabel) - col = box.column(align=True) - for axis in [i for i, x in enumerate(list(BoneMap.axis)) if x]: - axis = ["X", "Y", "Z"][axis] - col.prop(BoneMap, transformAttribute + axis + "Influence", text=axis, slider=True) - -# UIList - -class RETARGET_UL_BoneParentList(UIList): - def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index): - activeObject = context.active_object - - row = layout.row() - row.label(text=item.name) - if item.boneExist: - row.prop(item, "mute", text="", icon=("CHECKBOX_DEHLT" if item.mute else "CHECKBOX_HLT"), emboss=False) - else: - row.prop(item, "boneNotExist", text="", icon="ERROR", emboss=False) - -class RETARGET_UL_BoneMapList(UIList): - def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index): - activeObject = context.active_object - - row = layout.row() - row.label(text=item.name) - if item.boneTargetExist and item.boneSourceExist: - row.prop(item, "mute", text="", icon=("CHECKBOX_DEHLT" if item.mute else "CHECKBOX_HLT"), emboss=False) - else: - row.prop(item, "boneNotExist", text="", icon="ERROR", emboss=False) - -# OPERATOR - -class OP_BindArmature(Operator): - bl_idname = "ue4workspace.bindarmature" - bl_label = "Bind/Unbind Armature" - bl_description = "Bind/Unbind Armature" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - return activeObject is not None and activeObject.type == "ARMATURE" and activeObject.data.RetargetSource is not None - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - targetObj = context.active_object - sourceObj = targetObj.data.RetargetSource - oldMode = context.mode - bpy.ops.object.mode_set(mode="OBJECT") - bpy.ops.object.select_all(action="DESELECT") - context.view_layer.objects.active = targetObj - selectStateTargetObj = targetObj.select_get() - selectStateSourceObj = sourceObj.select_get() - targetObj.select_set(True) - sourceObj.select_set(True) - bpy.ops.object.mode_set(mode="EDIT") - targetPoseBones = targetObj.pose.bones - sourcePoseBones = sourceObj.pose.bones - targetEditBones = targetObj.data.edit_bones - sourceEditBones = sourceObj.data.edit_bones - - preset = next(iter([preset for preset in preferences.RETARGET_Presets if str(preset.flag) == targetObj.data.RetargetPreset]), None) - - # unbind - if targetObj.data.HasBind: - bpy.ops.object.mode_set(mode="POSE") - # remove parent constraint in bone parent list - for index, BoneParent in enumerate([BoneParent for BoneParent in targetObj.data.BoneParents if BoneParent.boneExist]): - poseBone = targetPoseBones.get(BoneParent.bone) - constraint = poseBone.constraints.get("RETARGET_PARENT") - # remove driver - constraint.driver_remove("mute") - constraint.driver_remove("influence") - poseBone.constraints.remove(constraint) - # clear collection - targetObj.data.BoneParents.clear() - - # remove constraint and driver - for boneMap in [boneMap for boneMap in targetObj.data.BoneMaps if boneMap.boneSourceExist and boneMap.boneTargetExist]: - targetPoseBone = targetPoseBones.get(boneMap.target) - constraint = targetPoseBone.constraints.get("RETARGET_TRANSFORM") - constraint.driver_remove("mute") - targetPoseBone.constraints.remove(constraint) - - sourceMimicPoseBone = targetPoseBones.get(boneMap.boneSourceName) - for transformType in [["rotation_euler", "location", "scale"][i] for i, x in enumerate(list(boneMap.transform)) if x]: - sourceMimicPoseBone.driver_remove(transformType) - - bpy.ops.object.mode_set(mode="EDIT") - - # remove mimic bone - for boneMap in [boneMap for boneMap in targetObj.data.BoneMaps if boneMap.boneSourceExist and boneMap.boneTargetExist]: - sourceMimicBone = targetEditBones.get(boneMap.boneSourceName) - targetMimicBone = targetEditBones.get(boneMap.boneTargetName) - - targetEditBones.remove(sourceMimicBone) - targetEditBones.remove(targetMimicBone) - - # clear collection - targetObj.data.BoneMaps.clear() - - # remove custom shape for hide bone - bpy.data.objects.remove(targetObj.data.boneShapeObj, do_unlink=True) - # bind - else: - mesh = bpy.data.meshes.new("HideBone") - objCustomShape = bpy.data.objects.new(mesh.name,mesh) - mesh.from_pydata([(0, 0, 0)], [], []) - targetObj.data.boneShapeObj = objCustomShape - - # maping bone list - # adding mimic bone - for boneMap in preset.AxisMaps: - newBoneMap = targetObj.data.BoneMaps.add() - newBoneMap.name = boneMap.name - newBoneMap.target = boneMap.boneTarget - newBoneMap.source = boneMap.boneSource - newBoneMap.obj = targetObj - newBoneMap.axis = (boneMap.axisX, boneMap.axisY, boneMap.axisZ) - newBoneMap.transform = boneMap.transform - - sourceBone = sourceEditBones.get(boneMap.boneSource) if boneMap.boneSource else sourceObj - targetBone = targetEditBones.get(boneMap.boneTarget) - - newBoneMap.boneSourceExist = bool(sourceBone) - newBoneMap.boneTargetExist = bool(targetBone) - - if newBoneMap.boneSourceExist and newBoneMap.boneTargetExist: - sourceMimicBone = targetEditBones.new("RETARGET_SRC_" + (boneMap.boneSource if boneMap.boneSource else "[OBJECT]")) - sourceMimicBone.length = 0.25 - sourceMimicBone.use_deform = False - sourceMimicBone.matrix = sourceBone.matrix.copy().to_quaternion().to_matrix().to_4x4() if boneMap.boneSource else sourceObj.matrix_world.copy().to_quaternion().to_matrix().to_4x4() - - targetMimicBone = targetEditBones.new("RETARGET_TRG_" + boneMap.boneTarget) - targetMimicBone.length = 0.25 - targetMimicBone.use_deform = False - targetMimicBone.matrix = targetBone.matrix.copy().to_quaternion().to_matrix().to_4x4() - targetMimicBone.parent = sourceMimicBone - - newBoneMap.boneSourceName = sourceMimicBone.name - newBoneMap.boneTargetName = targetMimicBone.name - - bpy.ops.object.mode_set(mode="POSE") - - # add parent constraint in bone parent list - for parentBone in preset.ParentBones: - newParentBone = targetObj.data.BoneParents.add() - newParentBone.name = parentBone.name - newParentBone.bone = parentBone.bone - newParentBone.parent = parentBone.parent - poseBone = targetPoseBones.get(parentBone.bone) - newParentBone.boneExist = bool(poseBone) - if newParentBone.boneExist: - # constraint - constraint = poseBone.constraints.new("CHILD_OF") - constraint.name = "RETARGET_PARENT" - constraint.show_expanded = False - constraint.target = targetObj - constraint.subtarget = parentBone.parent - context_copy = bpy.context.copy() - context_copy["constraint"] = constraint - targetObj.data.bones.active = poseBone.bone - bpy.ops.constraint.childof_set_inverse(context_copy, constraint=constraint.name, owner="BONE") - # driver mute - driver = constraint.driver_add("mute").driver - driver.type = "SCRIPTED" - - var = driver.variables.new() - var.name = "mute" - var.type = "SINGLE_PROP" - varTarget = var.targets[0] - varTarget.id_type = "ARMATURE" - varTarget.id = targetObj.data - varTarget.data_path = newParentBone.path_from_id("mute") - driver.expression = "mute" - - # driver influence - driver = constraint.driver_add("influence").driver - driver.type = "SCRIPTED" - - var = driver.variables.new() - var.name = "influence" - var.type = "SINGLE_PROP" - varTarget = var.targets[0] - varTarget.id_type = "ARMATURE" - varTarget.id = targetObj.data - varTarget.data_path = newParentBone.path_from_id("influence") - driver.expression = "influence" - - # add driver and constraint - for boneMap in [boneMap for boneMap in targetObj.data.BoneMaps if boneMap.boneSourceExist and boneMap.boneTargetExist]: - sourcePoseBone = targetPoseBones.get(boneMap.boneSourceName) - # change rotation mode to XYZ - sourcePoseBone.rotation_mode = "XYZ" - for transformType in [["rotation_euler", "location", "scale"][i] for i, x in enumerate(list(boneMap.transform)) if x]: - for axis in [i for i, x in enumerate(list(boneMap.axis)) if x]: - transformDriver = ({"rotation_euler": "ROT_", "location": "LOC_", "scale": "SCALE_"}[transformType]) + (["X", "Y", "Z"][axis]) - # driver bone - FCurve = sourcePoseBone.driver_add(transformType, axis) - driver = FCurve.driver - driver.type = "SCRIPTED" - - var = driver.variables.new() - var.name = "var" - varName = var.name - var.type = "TRANSFORMS" - varTarget = var.targets[0] - varTarget.id = sourceObj - varTarget.bone_target = boneMap.source - varTarget.transform_type = transformDriver - varTarget.rotation_mode = "AUTO" - varTarget.transform_space = "LOCAL_SPACE" - - # influence - var = driver.variables.new() - var.name = "influence" - varInfluence = var.name - var.type = "SINGLE_PROP" - varTarget = var.targets[0] - varTarget.id_type = "ARMATURE" - varTarget.id = targetObj.data - varTarget.data_path = boneMap.path_from_id(transformDriver + "Influence") - - # location Multiply - var = driver.variables.new() - var.name = "locationMultiply" - varLocationMultiply = var.name - var.type = "SINGLE_PROP" - varTarget = var.targets[0] - varTarget.id_type = "ARMATURE" - varTarget.id = targetObj.data - varTarget.data_path = boneMap.path_from_id("locationMultiply") - - # scale source - var = driver.variables.new() - var.name = "scaleSource" - varScaleSource = var.name - var.type = "TRANSFORMS" - varTarget = var.targets[0] - varTarget.id = sourceObj - varTarget.bone_target = "" - varTarget.transform_type = "SCALE_" + (["X", "Y", "Z"][axis]) - varTarget.rotation_mode = "AUTO" - varTarget.transform_space = "LOCAL_SPACE" - - # scale target - var = driver.variables.new() - var.name = "scaleTarget" - varScaleTarget = var.name - var.type = "TRANSFORMS" - varTarget = var.targets[0] - varTarget.id = targetObj - varTarget.bone_target = "" - varTarget.transform_type = "SCALE_" + (["X", "Y", "Z"][axis]) - varTarget.rotation_mode = "AUTO" - varTarget.transform_space = "LOCAL_SPACE" - - driver.expression = "(({}/({}/{}))*{})*{}".format(varName, varScaleTarget, varScaleSource, varLocationMultiply, varInfluence) if transformType == "location" else "{}*{}".format(varName, varInfluence) - - # data path collection - dataPath = boneMap.dataPaths.add() - dataPath.path = FCurve.data_path + "["+ str(FCurve.array_index) +"]" - - sourcePoseBone.custom_shape = targetObj.data.boneShapeObj - sourcePoseBone.custom_shape_scale = 0 - sourcePoseBone.bone.hide = True - - targetMimicPoseBone = targetPoseBones.get(boneMap.boneTargetName) - targetMimicPoseBone.custom_shape = targetObj.data.boneShapeObj - targetMimicPoseBone.custom_shape_scale = 0 - targetMimicPoseBone.bone.hide = True - - targetPoseBone = targetPoseBones.get(boneMap.target) - constraint = targetPoseBone.constraints.new("COPY_TRANSFORMS") - constraint.show_expanded = False - constraint.name = "RETARGET_TRANSFORM" - constraint.subtarget = boneMap.boneTargetName - constraint.target = targetObj - constraint.owner_space = "LOCAL" - constraint.target_space = "LOCAL_WITH_PARENT" - constraint.mix_mode = "BEFORE" - # driver mute - driver = constraint.driver_add("mute").driver - driver.type = "SCRIPTED" - - var = driver.variables.new() - var.name = "mute" - var.type = "SINGLE_PROP" - varTarget = var.targets[0] - varTarget.id_type = "ARMATURE" - varTarget.id = targetObj.data - varTarget.data_path = boneMap.path_from_id("mute") - driver.expression = "mute" - - bpy.ops.object.mode_set(mode="OBJECT") - targetObj.select_set(selectStateTargetObj) - sourceObj.select_set(selectStateSourceObj) - bpy.ops.object.mode_set(mode=oldMode) - targetObj.data.HasBind = not targetObj.data.HasBind - return {"FINISHED"} - -class OP_MirrorParentValue(Operator): - bl_idname = "ue4workspace.mirrorparentvalue" - bl_label = "Mirror Parent Value" - bl_description = "Copy Parent Value to Another Side Bone" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - return activeObject is not None and activeObject.type == "ARMATURE" and activeObject.data.HasBind - - def execute(self, context): - activeObject = context.active_object - boneParents = activeObject.data.BoneParents - index = activeObject.data.indexBoneParent - boneParent = boneParents[index] - - mirrorDict = { - "r": "l", - "l": "r", - "right": "left", - "left": "right" - } - - boneParentNameSplit = boneParent.name.lower().split("_") - side = mirrorDict.get(boneParentNameSplit[-1], False) - if side: - boneParentNameSplit[-1] = side - boneParentName = "_".join(boneParentNameSplit) - targetParent, targetParentIndex = (next(((item, i) for i, item in enumerate(boneParents) if (getattr(item, "name").lower() if getattr(item, "name") else False) == boneParentName), None)) - - if targetParent: - targetParent.influence = boneParent.influence - - return {"FINISHED"} - -class OP_MirrorTweakValue(Operator): - bl_idname = "ue4workspace.mirrortweakvalue" - bl_label = "Mirror Tweak Value" - bl_description = "Copy Tweak Value to Another Side Bone" - bl_options = {"UNDO"} - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - return activeObject is not None and activeObject.type == "ARMATURE" and activeObject.data.HasBind - - def execute(self, context): - activeObject = context.active_object - boneMaps = activeObject.data.BoneMaps - index = activeObject.data.indexBoneMap - boneMap = boneMaps[index] - - mirrorDict = { - "r": "l", - "l": "r", - "right": "left", - "left": "right" - } - - boneMapNameSplit = boneMap.name.lower().split("_") - side = mirrorDict.get(boneMapNameSplit[-1], False) - if side: - boneMapNameSplit[-1] = side - boneMapName = "_".join(boneMapNameSplit) - targetBoneMap, targetBoneMapIndex = (next(((item, i) for i, item in enumerate(boneMaps) if (getattr(item, "name").lower() if getattr(item, "name") else False) == boneMapName), None)) - - if targetBoneMap: - targetBoneMap.influence = boneMap.influence - targetBoneMap.locationMultiply = boneMap.locationMultiply - targetBoneMap.ROT_XInfluence = boneMap.ROT_XInfluence - targetBoneMap.ROT_YInfluence = boneMap.ROT_YInfluence - targetBoneMap.ROT_ZInfluence = boneMap.ROT_ZInfluence - targetBoneMap.LOC_XInfluence = boneMap.LOC_XInfluence - targetBoneMap.LOC_YInfluence = boneMap.LOC_YInfluence - targetBoneMap.LOC_ZInfluence = boneMap.LOC_ZInfluence - targetBoneMap.SCALE_XInfluence = boneMap.SCALE_XInfluence - targetBoneMap.SCALE_YInfluence = boneMap.SCALE_YInfluence - targetBoneMap.SCALE_ZInfluence = boneMap.SCALE_ZInfluence - - return {"FINISHED"} - -class OP_BakeRetargetAction(Operator): - bl_idname = "ue4workspace.bakeretargetaction" - bl_label = "Bake Retarget To Action" - bl_description = "Bake Retarget To Action" - bl_options = {"UNDO"} - - actionName: StringProperty(default="BakeAction") - startFrame: IntProperty(default=1) - endFrame: IntProperty(default=250) - frameStep: IntProperty(default=1) - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - return activeObject is not None and activeObject.type == "ARMATURE" and activeObject.data.HasBind - - def invoke(self, context, event): - self.startFrame = context.scene.frame_start - self.endFrame = context.scene.frame_end - return context.window_manager.invoke_props_dialog(self, width = 250) - - def draw(self, context): - layout = self.layout - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Action Name") - split = split.split() - col = split.column() - col.prop(self, "actionName", text="", icon="ACTION") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Start Frame") - split = split.split() - col = split.column() - col.prop(self, "startFrame", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="End Frame") - split = split.split() - col = split.column() - col.prop(self, "endFrame", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Frame Step") - split = split.split() - col = split.column() - col.prop(self, "frameStep", text="") - - def execute(self, context): - targetObj = context.active_object - sourceObj = targetObj.data.RetargetSource - oldMode = context.mode - bpy.ops.object.mode_set(mode="OBJECT") - bpy.ops.object.select_all(action="DESELECT") - context.view_layer.objects.active = targetObj - bpy.ops.object.mode_set(mode="POSE") - poseBones = targetObj.pose.bones - - # create new action - action = bpy.data.actions.new(self.actionName) - action.use_fake_user = True - targetObj.animation_data.action = action - - # copy pose - bpy.ops.pose.select_all(action="SELECT") - bpy.ops.pose.copy() - bpy.ops.pose.select_all(action="DESELECT") - - oldCurrentFrame = context.scene.frame_current - # pose bone matrix to keyframe, because using constraint does not get local transform - # format (poseBone: poseBone, matrix: Matrix, frame: int, transform: tuple(rotation: bool, location: bool, scale: bool), axis: tuple(x: bool, y: bool, z: bool)) - poseBoneMatrixs = [] - # same as pose bone matrix but for parent bone - # format (poseBone: poseBone, matrix: Matrix, frame: int) - parentBoneMatrixs = [] - - # fliter bone maps - boneMaps = [boneMap for boneMap in targetObj.data.BoneMaps if boneMap.boneTargetExist and boneMap.boneSourceExist and not boneMap.mute] - # fliter parent bone - parentBones = [BoneParent for BoneParent in targetObj.data.BoneParents if BoneParent.boneExist and not BoneParent.mute] - - # bake animation manually because bake action operator in python is very buggy and give me more control - frame = self.startFrame - while frame <= self.endFrame: - context.scene.frame_set(frame) - # get matrix bone maps - for boneMap in boneMaps: - poseBone = poseBones.get(boneMap.target) - poseBoneMatrixs.append((poseBone, poseBone.matrix.copy(), frame, boneMap.transform, boneMap.axis)) - - # get matrix parent bone - for BoneParent in parentBones: - poseBone = poseBones.get(BoneParent.bone) - parentBoneMatrixs.append((poseBone, poseBone.matrix.copy(), frame)) - - frame += self.frameStep - - # mute bone constraint - for boneMap in boneMaps: - boneMap.mute = True - - # mute parent constraint - for BoneParent in parentBones: - BoneParent.mute = True - - # insert bone keyframe matrix - for poseBone, matrix, frame, transform, axis in poseBoneMatrixs: - poseBone.matrix = matrix - bpy.ops.pose.visual_transform_apply() - poseBone.keyframe_insert("location", frame=frame) - poseBone.keyframe_insert("rotation_quaternion", frame=frame) - poseBone.keyframe_insert("rotation_euler", frame=frame) - - # insert parent bone keyframe matrix - for poseBone, matrix, frame in parentBoneMatrixs: - poseBone.matrix = matrix - bpy.ops.pose.visual_transform_apply() - poseBone.keyframe_insert("location", frame=frame) - poseBone.keyframe_insert("rotation_quaternion", frame=frame) - poseBone.keyframe_insert("rotation_euler", frame=frame) - - # unmute bone constraint - for boneMap in boneMaps: - boneMap.mute = False - - # unmute parent constraint - for BoneParent in parentBones: - BoneParent.mute = False - - # change interpolation to LINEAR - for fcurve in action.fcurves: - for keyFramePoints in fcurve.keyframe_points: - keyFramePoints.interpolation = "LINEAR" - - # unassign action from armature - targetObj.animation_data.action = None - - context.scene.frame_current = oldCurrentFrame - - # reset pose - bpy.ops.pose.select_all(action="SELECT") - bpy.ops.pose.paste(flipped=False) - bpy.ops.pose.select_all(action="DESELECT") - - bpy.ops.object.mode_set(mode=oldMode) - return {"FINISHED"} - -# operator export - -Ops = [ - OP_BindArmature, - OP_MirrorParentValue, - OP_MirrorTweakValue, - OP_BakeRetargetAction -] \ No newline at end of file diff --git a/UE4WS_ObjectSkeletonPreset.py b/UE4WS_ObjectSkeletonPreset.py deleted file mode 100644 index 6ad7f8b..0000000 --- a/UE4WS_ObjectSkeletonPreset.py +++ /dev/null @@ -1,2192 +0,0 @@ -import os -import bpy -from mathutils import (Matrix, Quaternion, Vector) -from bpy.props import (EnumProperty, BoolProperty, IntProperty, StringProperty, PointerProperty) -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectSkeletonPresetPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Skeleton Preset" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type == "ARMATURE" and context.active_object.data.UE4RIG - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - activePoseBone = context.active_pose_bone - - layout.label(text="RIG") - row = layout.row() - row.scale_y = 1.5 - # operator location on UE4WS_Character.py - row.operator("ue4workspace.generaterig",icon="CON_ARMATURE", text="Generate Rig") - row = layout.row() - row.scale_y = 1.5 - # operator location on UE4WS_Character.py - row.operator("ue4workspace.rotatebone",icon="BONE_DATA", text=("Create Preview Orient Bone", "Update Preview Orient Bone")[activeObject.get("UE4RIGHASTEMPBONE", False)]) - - row = layout.row() - row.scale_y = 1.5 - # operator location on UE4WS_Character.py - row.operator("ue4workspace.characterremovetemporarybone",icon="BONE_DATA", text="Remove Preview Orient Bone") - - layout.label(text="TWIST BONE") - # add twist bone - row = layout.row(align=True) - row.scale_y = 1.5 - # operator location on UE4WS_Character.py - row.operator("ue4workspace.addtwistbone", text="Add Twist") - # operator location on UE4WS_Character.py - row.operator("ue4workspace.removetwistbone", text="Remove Twist") - - layout.label(text="POSE") - row = layout.row(align=True) - row.scale_y = 1.5 - row.operator("ue4workspace.posetoapose", text="Pose to A-Pose") - row.operator("ue4workspace.applypose", text="Apply Pose") - - layout.label(text="COMPONENT TO ADD") - col = layout.column(align=True) - col.scale_y = 1.5 - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentcopy", text="COPY_BONE") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponenteyelid", text="EYELID_UPPER").eyelidPosition = ("U") - row.operator("ue4workspace.bonecomponenteyelid", text="EYELID_LOWER").eyelidPosition = ("L") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponenteye", text="EYE") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentlandmark", text="LANDMARK") - row.operator("ue4workspace.bonecomponentjaw", text="JAW") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentfaceattach", text="FACE_ATTACH") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponenthead", text="HEAD") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentneck", text="NECK") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentarmhuman", text="ARM_HUMAN") - row.operator("ue4workspace.bonecomponentfinger", text="FINGER") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentspine", text="SPINE") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentpelvis", text="PELVIS") - row = col.row(align=True) - row.operator("ue4workspace.bonecomponentleghuman", text="LEG_HUMAN") - row = col.row(align=True) - row.operator("ue4workspace.rotatebone", text="TAIL") - row.operator("ue4workspace.bonecomponentchain", text="CHAIN") - row = col.row(align=True) - row.operator("ue4workspace.rotatebone", text="PROP") - -# bone rotation (Quaternion) -APoseBoneRotation = { - "pelvis": (0.6774330139160156, 0.7355844974517822, 0.0, -8.834048514927417e-08), - "spine_01": (0.7314896583557129, 0.6818525791168213, -2.4284102137348993e-15, -7.973857663046147e-08), - "spine_02": (0.7575458288192749, 0.6527820229530334, -2.3448836595314423e-15, -7.835525650534692e-08), - "spine_03": (0.7561419606208801, 0.654407799243927, 2.349237832396803e-15, -8.093304160183834e-08), - "neck_01": (0.6307977437973022, 0.7759473919868469, -1.1264193110161955e-14, -9.32003061393516e-08), - "head": (0.7071068286895752, 0.7071068286895752, -1.821307353251731e-14, 0.0), - "clavicle_l": (0.04727831482887268, -0.5242606401443481, -0.8473084568977356, 0.07059772312641144), - "upperarm_l": (0.33164140582084656, -0.6278275847434998, -0.6528890132904053, 0.2637849748134613), - "lowerarm_l": (0.12208843976259232, -0.7716752290725708, -0.5201354026794434, 0.3450668156147003), - "hand_l": (0.48904913663864136, -0.25943198800086975, 0.19929619133472443, -0.8085833191871643), - "thumb_01_l": (0.07611946761608124, -0.30184561014175415, -0.2840867340564728, 0.9068570733070374), - "thumb_02_l": (0.11387968808412552, -0.2798141539096832, -0.42500805854797363, 0.8532899618148804), - "thumb_03_l": (0.15496234595775604, -0.28445395827293396, -0.3283044695854187, 0.8872929215431213), - "index_01_l": (0.39686378836631775, -0.262618750333786, 0.43310123682022095, -0.7654761672019958), - "index_02_l": (0.3635122776031494, -0.2863125801086426, 0.5191501379013062, -0.7185868620872498), - "index_03_l": (0.37079939246177673, -0.24763469398021698, 0.4614221453666687, -0.7669904828071594), - "middle_01_l": (0.4633159637451172, -0.30906328558921814, 0.38876861333847046, -0.7339463829994202), - "middle_02_l": (0.4404599666595459, -0.39435091614723206, 0.44046053290367126, -0.6756308078765869), - "middle_03_l": (0.5031590461730957, -0.2988421320915222, 0.3704220652580261, -0.7213265895843506), - "ring_01_l": (0.5472036004066467, -0.414227157831192, 0.3159283995628357, -0.6551132798194885), - "ring_02_l": (0.49488329887390137, -0.4463731348514557, 0.4152567386627197, -0.619195818901062), - "ring_03_l": (0.5284509062767029, -0.40227004885673523, 0.3283996880054474, -0.6716189384460449), - "pinky_01_l": (0.6147031188011169, -0.39491501450538635, 0.2866409718990326, -0.6196928024291992), - "pinky_02_l": (0.573142945766449, -0.43456700444221497, 0.3651326298713684, -0.5910473465919495), - "pinky_03_l": (0.5492244362831116, -0.45223113894462585, 0.35505184531211853, -0.6064468026161194), - "clavicle_r": (0.0472794808447361, -0.5242604613304138, 0.8473084568977356, -0.07059790194034576), - "upperarm_r": (0.33164137601852417, -0.6278276443481445, 0.6528889536857605, -0.2637850344181061), - "lowerarm_r": (0.12208835035562515, -0.7716752290725708, 0.5201353430747986, -0.3450668752193451), - "hand_r": (0.4890492558479309, -0.25943201780319214, -0.19929620623588562, 0.8085833191871643), - "thumb_01_r": (0.0761200487613678, -0.3018467426300049, 0.2840867340564728, -0.9068567156791687), - "thumb_02_r": (0.11388018727302551, -0.27981463074684143, 0.4250081479549408, -0.8532896637916565), - "thumb_03_r": (0.15496280789375305, -0.2844545245170593, 0.3283045291900635, -0.887292742729187), - "index_01_r": (0.3968636989593506, -0.262618750333786, -0.43310144543647766, 0.7654762268066406), - "index_02_r": (0.36351215839385986, -0.28631269931793213, -0.5191503167152405, 0.7185867428779602), - "index_03_r": (0.37079930305480957, -0.24763473868370056, -0.46142229437828064, 0.7669904232025146), - "middle_01_r": (0.46331602334976196, -0.30906325578689575, -0.38876861333847046, 0.7339462637901306), - "middle_02_r": (0.4404599964618683, -0.39435088634490967, -0.4404605031013489, 0.6756307482719421), - "middle_03_r": (0.5031589865684509, -0.29884207248687744, -0.3704220652580261, 0.7213265299797058), - "ring_01_r": (0.5472036004066467, -0.41422712802886963, -0.31592845916748047, 0.6551132798194885), - "ring_02_r": (0.4948832392692566, -0.4463730752468109, -0.4152568280696869, 0.6191956996917725), - "ring_03_r": (0.5284509658813477, -0.40227004885673523, -0.32839974761009216, 0.6716188788414001), - "pinky_01_r": (0.6147030591964722, -0.39491504430770874, -0.286641001701355, 0.6196928024291992), - "pinky_02_r": (0.573142945766449, -0.43456703424453735, -0.3651326894760132, 0.5910472869873047), - "pinky_03_r": (0.5492244362831116, -0.45223113894462585, -0.3550519049167633, 0.6064467430114746), - "thigh_l": (0.5693971514701843, -0.49655330181121826, 0.43672093749046326, -0.48836109042167664), - "calf_l": (0.566271185874939, -0.4513953626155853, 0.5072813630104065, -0.4671669602394104), - "foot_l": (0.020697886124253273, 0.004743354860693216, 0.283678263425827, -0.9586843252182007), - "ball_l": (-0.008751435205340385, 0.999891459941864, 0.011833819560706615, 0.0007140806410461664), - "thigh_r": (0.5693917274475098, -0.4965547025203705, -0.43672415614128113, 0.48836320638656616), - "calf_r": (0.5662640333175659, -0.4513973593711853, -0.507286548614502, 0.4671678841114044), - "foot_r": (0.020876646041870117, 0.0044718775898218155, -0.2835838496685028, 0.9587096571922302), - "ball_r": (-0.008750335313379765, 0.9998914003372192, -0.011838369071483612, -0.0007135455380193889) -} - -class OP_PoseToAPose(Operator): - bl_idname = "ue4workspace.posetoapose" - bl_label = "Pose to A-Pose" - bl_description = "Set Pose to A-Pose (Unreal Engine Mannequin)" - bl_options = {"UNDO"} - - @classmethod - def poll(cls, context): - activeObject = context.active_object - return context.mode == "POSE" and activeObject is not None and activeObject.data.UE4RIG - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - poseBones = activeObject.pose.bones - for boneName, rotation in APoseBoneRotation.items(): - poseBone = poseBones.get(boneName) - if poseBone: - oriMat = poseBone.matrix.copy() - newMat = Quaternion(rotation).to_matrix().to_4x4() - newMat.translation = oriMat.to_translation() - poseBone.matrix = newMat - bpy.ops.pose.visual_transform_apply() - - return {"FINISHED"} - -class OP_ApplyPose(Operator): - bl_idname = "ue4workspace.applypose" - bl_label = "Apply Pose" - bl_description = "Apply pose for as rest pose" - bl_options = {"UNDO"} - - @classmethod - def poll(cls, context): - activeObject = context.active_object - return context.mode == "POSE" and activeObject is not None and activeObject.data.UE4RIG - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - bpy.ops.object.mode_set(mode="OBJECT") - - for childObj in [obj for obj in activeObject.children if obj.type == "MESH" and bool([mod.type for mod in obj.modifiers if mod.type == "ARMATURE" and mod.object == activeObject])]: - context.view_layer.objects.active = childObj - for modifier in [mod for mod in childObj.modifiers if mod.type == "ARMATURE" and mod.object == activeObject]: - newModifier = childObj.modifiers.new("DUP_" + modifier.name, "ARMATURE") - newModifier.show_expanded = modifier.show_expanded - newModifier.show_in_editmode = modifier.show_in_editmode - newModifier.show_on_cage = modifier.show_on_cage - newModifier.show_render = modifier.show_render - newModifier.show_viewport = modifier.show_viewport - newModifier.use_apply_on_spline = modifier.use_apply_on_spline - newModifier.invert_vertex_group = modifier.invert_vertex_group - newModifier.object = activeObject - newModifier.use_bone_envelopes = modifier.use_bone_envelopes - newModifier.use_deform_preserve_volume = modifier.use_deform_preserve_volume - newModifier.use_multi_modifier = modifier.use_multi_modifier - newModifier.use_vertex_groups = modifier.use_vertex_groups - newModifier.vertex_group = modifier.vertex_group - bpy.ops.object.modifier_apply(modifier=modifier.name) - newModifier.name = newModifier.name.replace("DUP_", "") - - context.view_layer.objects.active = activeObject - bpy.ops.object.mode_set(mode="POSE") - bpy.ops.pose.armature_apply(selected=False) - - return {"FINISHED"} - -# base bone component - -class OP_MixBoneComponent(Operator): - bl_options = {"UNDO", "REGISTER"} - - @classmethod - def poll(cls, context): - activeObject = context.active_object - activeBone = context.active_bone - return context.mode == "EDIT_ARMATURE" and activeObject is not None and activeObject.data.UE4RIG - - def buildName(self, listString = []): - string = [] - listString = [a for a in listString if a != ""] - for name in listString: - string.append(name) - return "_".join(string) - -class OP_MixFaceAttachComponent(OP_MixBoneComponent): - @classmethod - def poll(cls, context): - activeObject = context.active_object - activeBone = context.active_bone - return context.mode == "EDIT_ARMATURE" and activeObject is not None and activeObject.data.UE4RIG and activeBone is not None and activeBone.get("UE4RIGTYPE") == "FACE_ATTACH" - -class OP_MixEyeComponent(OP_MixFaceAttachComponent): - @classmethod - def poll(cls, context): - activeObject = context.active_object - activeBone = context.active_bone - return context.mode == "EDIT_ARMATURE" and activeObject is not None and activeObject.data.UE4RIG and activeBone is not None and activeBone.get("UE4RIGTYPE") == "EYE" - -class OP_BoneComponent_Copy(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentcopy" - bl_label = "Add COPY_BONE" - bl_description = "Add Copy Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="bone" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - boneData = { - "NONE": ( - # roll - 0, - # rotationRadian - -1.5708, - # orientAxis - 0, - # orientRoll - -1.5708 - ), - "l": ( - # roll - 1.5708, - # rotationRadian - -1.5708, - # orientAxis - 2, - # orientRoll - 3.14159 - ), - "r": ( - # roll - -1.5708, - # rotationRadian - -1.5708, - # orientAxis - 2, - # orientRoll - 0.0 - ) - } - - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (self.sideBone if self.sideBone != "NONE" else "")])) - - roll, rotRad, orientAxis, orientRoll = boneData[self.sideBone] - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.15)) - newBone.roll = roll - - newBone["UE4RIGTYPE"] = "COPY_BONE" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = rotRad - newBone["orientAxis"] = orientAxis - newBone["orientRoll"] = orientRoll - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [10.0, 10.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - newBone.parent = activeBone - - editBones.active = newBone - - if self.sideMirror and self.sideBone != "NONE": - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, ("r" if self.sideBone == "l" else "l")])) - - roll, rotRad, orientAxis, orientRoll = boneData[("r" if self.sideBone == "l" else "l")] - - newBoneSide.head = newBone.head - newBoneSide.head.x = -newBone.head.x - newBoneSide.tail = newBone.tail - newBoneSide.tail.x = -newBone.tail.x - newBoneSide.roll = roll - - newBoneSide["UE4RIGTYPE"] = "COPY_BONE" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = rotRad - newBoneSide["orientAxis"] = orientAxis - newBoneSide["orientRoll"] = orientRoll - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [10.0, 10.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Pelvis(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentpelvis" - bl_label = "Add PELVIS" - bl_description = "Add Pelvis Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="pelvis" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (self.sideBone if self.sideBone != "NONE" else "")])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "PELVIS" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = -1.5708 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = -1.5708 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 2 - newBone["customShapeParam"] = [16.0, 25.0, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - newBone.parent = activeBone - - editBones.active = newBone - - if self.sideMirror and self.sideBone != "NONE": - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, ("r" if self.sideBone == "l" else "l")])) - - newBoneSide.head = newBone.head - newBoneSide.head.x = -newBone.head.x - newBoneSide.tail = newBone.tail - newBoneSide.tail.x = -newBone.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "PELVIS" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = -1.5708 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = -1.5708 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 2 - newBoneSide["customShapeParam"] = [16.0, 25.0, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Spine(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentspine" - bl_label = "Add SPINE" - bl_description = "Add Spine Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="spine" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - numberBone: IntProperty( - name="Number Bone", - min=1, - default=1 - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - listBone = [] - for index in range(1, self.numberBone+1): - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), (self.sideBone if self.sideBone != "NONE" else "")])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2 * index)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "SPINE" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = -1.5708 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = -1.5708 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 2 - newBone["customShapeParam"] = [16.0, 22.5, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBone.parent = listBone[index-2] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - listBone[0].parent = activeBone - - editBones.active = listBone[0] - - if self.sideMirror and self.sideBone != "NONE": - listBone = [] - for index in range(1, self.numberBone+1): - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), ("r" if self.sideBone == "l" else "l")])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2 * index)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "SPINE" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = -1.5708 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = -1.5708 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 2 - newBoneSide["customShapeParam"] = [16.0, 22.5, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBoneSide.parent = listBone[index-2] - newBoneSide.use_connect = True - - listBone.append(newBoneSide) - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - listBone[0].parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Neck(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentneck" - bl_label = "Add NECK" - bl_description = "Add Neck Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="neck" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - numberBone: IntProperty( - name="Number Bone", - min=1, - default=1 - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - listBone = [] - - for index in range(1, self.numberBone+1): - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), (self.sideBone if self.sideBone != "NONE" else "")])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2 * index)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "NECK" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = -1.5708 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = -1.5708 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 2 - newBone["customShapeParam"] = [16.0, 10.0, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBone.parent = listBone[index-2] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - listBone[0].parent = activeBone - - editBones.active = listBone[0] - - if self.sideMirror and self.sideBone != "NONE": - listBone = [] - for index in range(1, self.numberBone+1): - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), ("r" if self.sideBone == "l" else "l")])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2 * index)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "NECK" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = -1.5708 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = -1.5708 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 2 - newBoneSide["customShapeParam"] = [16.0, 10.0, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBoneSide.parent = listBone[index-2] - newBoneSide.use_connect = True - - listBone.append(newBoneSide) - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - listBone[0].parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Head(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponenthead" - bl_label = "Add HEAD" - bl_description = "Add Head Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="head" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (self.sideBone if self.sideBone != "NONE" else "")])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "HEAD" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = -1.5708 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = -1.5708 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [14.0, 17.0, -2.0, 17.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - newBone.parent = activeBone - - editBones.active = newBone - - if self.sideMirror and self.sideBone != "NONE": - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, ("r" if self.sideBone == "l" else "l")])) - - newBoneSide.head = newBone.head - newBoneSide.head.x = -newBone.head.x - newBoneSide.tail = newBone.tail - newBoneSide.tail.x = -newBone.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "HEAD" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = -1.5708 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = -1.5708 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [14.0, 17.0, -2.0, 17.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_FaceAttach(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentfaceattach" - bl_label = "Add FACE ATTACH" - bl_description = "Add Face Attach To Head Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="faceAttach" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - @classmethod - def poll(cls, context): - activeObject = context.active_object - activeBone = context.active_bone - return context.mode == "EDIT_ARMATURE" and activeObject is not None and activeObject.data.UE4RIG and activeBone is not None and activeBone.get("UE4RIGTYPE") == "HEAD" - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName])) - - newBone.head = activeBone.head - newBone.tail = activeBone.head + Vector((0.0, 0.2, 0.0)) - newBone.roll = 0 - newBone.use_deform = False - - newBone["UE4RIGTYPE"] = "FACE_ATTACH" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = -0.785398 - - newBone.parent = activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Jaw(OP_MixFaceAttachComponent): - bl_idname = "ue4workspace.bonecomponentjaw" - bl_label = "Add JAW" - bl_description = "Add Jaw Bone To faceAttach Component" - - boneName: StringProperty( - name="Bone Name", - default="jaw" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("C", "Center", ""), - ("L", "Left", ""), - ("R", "Right", "") - ], - default=("C") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.sideBone, self.prefixName, self.boneName, self.suffixName])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, -0.125, -0.075)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "JAW" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = 0 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [10.0, 1.0, 0.0, 10.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - newBone.parent = activeBone - - if self.sideMirror and self.sideBone != "C": - newBoneSide = editBones.new(self.buildName([("R" if self.sideBone == "L" else "L"), self.prefixName, self.boneName, self.suffixName])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, -0.125, -0.075)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "JAW" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = 0 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = 0 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [10.0, 1.0, 0.0, 10.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - parentSide = editBones.get(("R" if self.sideBone == "L" else "L") + activeBone.name[1:]) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Landmark(OP_MixFaceAttachComponent): - bl_idname = "ue4workspace.bonecomponentlandmark" - bl_label = "Add LANDMARK" - bl_description = "Add Landmark Bone To faceAttach Component" - - boneName: StringProperty( - name="Bone Name", - default="landmark" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("C", "Center", ""), - ("L", "Left", ""), - ("R", "Right", "") - ], - default=("C") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - @classmethod - def poll(cls, context): - activeObject = context.active_object - activeBone = context.active_bone - return context.mode == "EDIT_ARMATURE" and activeObject is not None and activeObject.data.UE4RIG and activeBone is not None and activeBone.get("UE4RIGTYPE") in ["FACE_ATTACH", "JAW"] - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.sideBone, self.prefixName, self.boneName, self.suffixName])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.015, 0.0)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "LANDMARK" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = 0 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [0.5, 0.5, -0.25, 0.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - newBone.parent = activeBone - - if self.sideMirror and self.sideBone != "C": - newBoneSide = editBones.new(self.buildName([("R" if self.sideBone == "L" else "L"), self.prefixName, self.boneName, self.suffixName])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, 0.015, 0.0)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "LANDMARK" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = 0 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = 0 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [0.5, 0.5, -0.25, 0.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - parentSide = editBones.get(("R" if self.sideBone == "L" else "L") + activeBone.name[1:]) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Eye(OP_MixFaceAttachComponent): - bl_idname = "ue4workspace.bonecomponenteye" - bl_label = "Add EYE" - bl_description = "Add Eye Bone To faceAttach Component" - - boneName: StringProperty( - name="Bone Name", - default="eye" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("C", "Center", ""), - ("L", "Left", ""), - ("R", "Right", "") - ], - default=("C") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.sideBone, self.prefixName, self.boneName, self.suffixName])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, -0.015, 0.0)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "EYE" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = 0 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 1 - newBone["customShapeParam"] = [8.0, 4.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - newBone.parent = activeBone - - if self.sideMirror and self.sideBone != "C": - newBoneSide = editBones.new(self.buildName([("R" if self.sideBone == "L" else "L"), self.prefixName, self.boneName, self.suffixName])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, -0.015, 0.0)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "EYE" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = 0 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = 0 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 1 - newBoneSide["customShapeParam"] = [8.0, 4.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - parentSide = editBones.get(("R" if self.sideBone == "L" else "L") + activeBone.name[1:]) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Eyelid(OP_MixEyeComponent): - bl_idname = "ue4workspace.bonecomponenteyelid" - bl_label = "Add EYELID" - bl_description = "Add Eyelid Bone To Eye Component" - - eyelidPosition: EnumProperty( - name="Side Name", - items=[ - ("U", "Upper", ""), - ("L", "Lower", "") - ], - options={"HIDDEN"}, - default=("U") - ) - - boneName: StringProperty( - name="Bone Name", - default="eye_lid" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("C", "Center", ""), - ("L", "Left", ""), - ("R", "Right", "") - ], - default=("C") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.sideBone, self.prefixName, self.boneName, self.suffixName])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, -0.015, 0.0)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "EYELID_" + ("UPPER" if self.eyelidPosition == "U" else "LOWER") - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = 0 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [0.5, 0.5, -0.25, 0.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - newBone.parent = activeBone - - if self.sideMirror and self.sideBone != "C": - newBoneSide = editBones.new(self.buildName([("R" if self.sideBone == "L" else "L"), self.prefixName, self.boneName, self.suffixName])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, -0.015, 0.0)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "EYELID_" + ("UPPER" if self.eyelidPosition == "U" else "LOWER") - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = 0 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = 0 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [0.5, 0.5, -0.25, 0.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - parentSide = editBones.get(("R" if self.sideBone == "L" else "L") + activeBone.name[1:]) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Arm_Human(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentarmhuman" - bl_label = "Add ARM_HUMAN" - bl_description = "Add Arm Human Bone Component" - - boneUpperName: StringProperty( - name="Upper Name", - default="upperarm" - ) - - boneLowerName: StringProperty( - name="Lower Name", - default="lowerarm" - ) - - boneHandName: StringProperty( - name="Hand Name", - default="hand" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("l") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - boneData = { - "l": [ - # upperarm left - ( - # boneName - self.boneUpperName, - # head - Vector((0, 0, 0)), - # tail - Vector((0.3, 0.05, 0)), - # roll - 3.14159, - # UE4RIGTYPE - "ARM_HUMAN", - # rotateBone - True, - # rotationRadian - -1.5707963705062866, - # orientAxis - 2, - # orientRoll - 3.1415927410125732, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [15.0, 15.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # lowerarm left - ( - # boneName - self.boneLowerName, - # head - Vector((0.3, 0.05, 0)), - # tail - Vector((0.59, 0.01, 0)), - # roll - 3.14159, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - -1.5707963705062866, - # orientAxis - 2, - # orientRoll - 3.1415927410125732, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [10.0, 10.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # hand left - ( - # boneName - self.boneHandName, - # head - Vector((0.59, 0.01, 0)), - # tail - Vector((0.69, 0.01, 0)), - # roll - 5.06145e-07, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - -1.5707963705062866, - # orientAxis - 0, - # orientRoll - -1.5707963705062866, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [10.0, 7.5, 0.0, 10.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ) - ], - "r": [ - # upperarm right - ( - # boneName - self.boneUpperName, - # head - Vector((-0, 0, 0)), - # tail - Vector((-0.3, 0.05, 0)), - # roll - 3.14159, - # UE4RIGTYPE - "ARM_HUMAN", - # rotateBone - True, - # rotationRadian - -1.5707963705062866, - # orientAxis - 2, - # orientRoll - 0, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [15.0, 15.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # lowerarm right - ( - # boneName - self.boneLowerName, - # head - Vector((-0.3, 0.05, 0)), - # tail - Vector((-0.59, 0.01, 0)), - # roll - 3.14159, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - -1.5707963705062866, - # orientAxis - 2, - # orientRoll - 0, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [10.0, 10.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # hand right - ( - # boneName - self.boneHandName, - # head - Vector((-0.59, 0.01, 0)), - # tail - Vector((-0.69, 0.01, 0)), - # roll - -5.06145e-07, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - 1.5707963705062866, - # orientAxis - 0, - # orientRoll - -1.5707963705062866, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [10.0, 7.5, 0.0, 10.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ) - ] - } - - listBone = [] - for index, data in enumerate(boneData[self.sideBone]): - boneName, head, tail, roll, ue4rigtype, rotBone, rotRad, orientAxis, orientRoll, customShape, customShapeType, customShapeParam = data - - newBone = editBones.new(self.buildName([self.prefixName, boneName, self.suffixName, self.sideBone])) - - newBone.head = context.scene.cursor.location + head - newBone.tail = context.scene.cursor.location + tail - newBone.roll = roll - - newBone["UE4RIGTYPE"] = ue4rigtype - newBone["rotateBone"] = rotBone - newBone["rotationRadian"] = rotRad - newBone["orientAxis"] = orientAxis - newBone["orientRoll"] = orientRoll - - newBone["customShape"] = customShape - newBone["customShapeType"] = customShapeType - newBone["customShapeParam"] = customShapeParam - - if listBone: - newBone.parent = listBone[index-1] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - listBone[0].parent = activeBone - - editBones.active = listBone[0] - - if self.sideMirror: - listBone = [] - for index, data in enumerate(boneData[("r" if self.sideBone == "l" else "l")]): - boneName, head, tail, roll, ue4rigtype, rotBone, rotRad, orientAxis, orientRoll, customShape, customShapeType, customShapeParam = data - - newBone = editBones.new(self.buildName([self.prefixName, boneName, self.suffixName, ("r" if self.sideBone == "l" else "l")])) - - baseLocation = context.scene.cursor.location.copy() - baseLocation.x = -baseLocation.x - - newBone.head = baseLocation + head - newBone.tail = baseLocation + tail - newBone.roll = roll - - newBone["UE4RIGTYPE"] = ue4rigtype - newBone["rotateBone"] = rotBone - newBone["rotationRadian"] = rotRad - newBone["orientAxis"] = orientAxis - newBone["orientRoll"] = orientRoll - - newBone["customShape"] = customShape - newBone["customShapeType"] = customShapeType - newBone["customShapeParam"] = customShapeParam - - if listBone: - newBone.parent = listBone[index-1] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - listBone[0].parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Finger(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentfinger" - bl_label = "Add FINGER" - bl_description = "Add Finger Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="finger" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("l") - ) - - numberBone: IntProperty( - name="Number Bone", - min=2, - default=3 - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - boneData = { - "l": - # finger left - ( - # roll - 5.58505e-07, - # rotRad - -1.5708 - ) - , - "r": - # finger right - ( - # roll - -5.58505e-07, - # rotRad - 1.5708 - ) - } - - - listBone = [] - for index in range(1, self.numberBone+1): - roll, rotRad = boneData[self.sideBone] - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), self.sideBone])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector(((0.05 * index) if self.sideBone == "l" else (-0.05 * index), 0.0, 0.0)) - newBone.roll = roll - - newBone["UE4RIGTYPE"] = "FINGER" if index == 1 else "" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = rotRad - newBone["orientAxis"] = 0 - newBone["orientRoll"] = -1.5708 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [1.8, 1.8, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBone.parent = listBone[index-2] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - listBone[0].parent = activeBone - - editBones.active = listBone[0] - - if self.sideMirror and self.sideBone != "NONE": - listBone = [] - for index in range(1, self.numberBone+1): - roll, rotRad = boneData[("r" if self.sideBone == "l" else "l")] - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), ("r" if self.sideBone == "l" else "l")])) - - baseLocation = context.scene.cursor.location.copy() - baseLocation.x = -baseLocation.x - - newBoneSide.head = baseLocation - newBoneSide.tail = baseLocation + Vector(((-0.05 * index) if self.sideBone == "l" else (0.05 * index), 0.0, 0.0)) - newBoneSide.roll = roll - - newBoneSide["UE4RIGTYPE"] = "FINGER" if index == 1 else "" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = rotRad - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = -1.5708 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [1.8, 1.8, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBoneSide.parent = listBone[index-2] - newBoneSide.use_connect = True - - listBone.append(newBoneSide) - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - listBone[0].parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Leg_Human(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentleghuman" - bl_label = "Add LEG_HUMAN" - bl_description = "Add Leg Human Bone Component" - - boneThighName: StringProperty( - name="Thigh Name", - default="thigh" - ) - - boneCalfName: StringProperty( - name="Calf Name", - default="calf" - ) - - boneFootName: StringProperty( - name="Foot Name", - default="foot" - ) - - boneBallName: StringProperty( - name="Ball Name", - default="ball" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("l") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - boneData = { - "l": [ - # thigh left - ( - # boneName - self.boneThighName, - # head - Vector((0, 0, 0)), - # tail - Vector((0, -0.05, -0.43)), - # roll - 1.5708, - # UE4RIGTYPE - "LEG_HUMAN", - # rotateBone - True, - # rotationRadian - 1.5707963705062866, - # orientAxis - 2, - # orientRoll - 3.1415927410125732, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [18.0, 18.0, 0.0, 22.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # calf left - ( - # boneName - self.boneCalfName, - # head - Vector((0, -0.05, -0.43)), - # tail - Vector((0, -0.01, -0.8)), - # roll - 1.5708, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - 1.5707963705062866, - # orientAxis - 2, - # orientRoll - 3.1415927410125732, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [12.0, 12.0, 0.0, 22.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # foot left - ( - # boneName - self.boneFootName, - # head - Vector((0, -0.01, -0.8)), - # tail - Vector((0.0, -0.17, -0.92)), - # roll - 3.14159, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - 3.1415927410125732, - # orientAxis - 2, - # orientRoll - 1.5707963705062866, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [10.0, 10.0, 0.0, 17.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # ball left - ( - # boneName - self.boneBallName, - # head - Vector((0.0, -0.17, -0.92)), - # tail - Vector((0.0, -0.22, -0.92)), - # roll - 3.14159, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - -1.5707963705062866, - # orientAxis - 0, - # orientRoll - -1.5707963705062866, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [11.0, 3.0, 0.0, 5.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ) - ], - "r": [ - # thigh right - ( - # boneName - self.boneThighName, - # head - Vector((0, 0, 0)), - # tail - Vector((0, -0.05, -0.43)), - # roll - -1.5708, - # UE4RIGTYPE - "LEG_HUMAN", - # rotateBone - True, - # rotationRadian - 1.5707963705062866, - # orientAxis - 2, - # orientRoll - 0, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [18.0, 18.0, 0.0, 22.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # calf right - ( - # boneName - self.boneCalfName, - # head - Vector((0, -0.05, -0.43)), - # tail - Vector((0, -0.01, -0.8)), - # roll - -1.5708, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - 1.5707963705062866, - # orientAxis - 2, - # orientRoll - 0, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [12.0, 12.0, 0.0, 22.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # foot right - ( - # boneName - self.boneFootName, - # head - Vector((0, -0.01, -0.8)), - # tail - Vector((0.0, -0.17, -0.92)), - # roll - 3.14159, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - 0, - # orientAxis - 2, - # orientRoll - -1.5707963705062866, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [10.0, 10.0, 0.0, 17.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ), - # ball right - ( - # boneName - self.boneBallName, - # head - Vector((0.0, -0.17, -0.92)), - # tail - Vector((0.0, -0.22, -0.92)), - # roll - 3.14159, - # UE4RIGTYPE - "", - # rotateBone - True, - # rotationRadian - 1.5707963705062866, - # orientAxis - 0, - # orientRoll - -1.5707963705062866, - # customShape - True, - # customShapeType - 0, - # customShapeParam - [11.0, 3.0, 0.0, 5.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - ) - ] - } - - listBone = [] - for index, data in enumerate(boneData[self.sideBone]): - boneName, head, tail, roll, ue4rigtype, rotBone, rotRad, orientAxis, orientRoll, customShape, customShapeType, customShapeParam = data - - newBone = editBones.new(self.buildName([self.prefixName, boneName, self.suffixName, self.sideBone])) - - newBone.head = context.scene.cursor.location + head - newBone.tail = context.scene.cursor.location + tail - newBone.roll = roll - - newBone["UE4RIGTYPE"] = ue4rigtype - newBone["rotateBone"] = rotBone - newBone["rotationRadian"] = rotRad - newBone["orientAxis"] = orientAxis - newBone["orientRoll"] = orientRoll - - newBone["customShape"] = customShape - newBone["customShapeType"] = customShapeType - newBone["customShapeParam"] = customShapeParam - - if listBone: - newBone.parent = listBone[index-1] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - listBone[0].parent = activeBone - - editBones.active = listBone[0] - - if self.sideMirror: - listBone = [] - for index, data in enumerate(boneData[("r" if self.sideBone == "l" else "l")]): - boneName, head, tail, roll, ue4rigtype, rotBone, rotRad, orientAxis, orientRoll, customShape, customShapeType, customShapeParam = data - - newBone = editBones.new(self.buildName([self.prefixName, boneName, self.suffixName, ("r" if self.sideBone == "l" else "l")])) - - baseLocation = context.scene.cursor.location.copy() - baseLocation.x = -baseLocation.x - - newBone.head = baseLocation + head - newBone.tail = baseLocation + tail - newBone.roll = roll - - newBone["UE4RIGTYPE"] = ue4rigtype - newBone["rotateBone"] = rotBone - newBone["rotationRadian"] = rotRad - newBone["orientAxis"] = orientAxis - newBone["orientRoll"] = orientRoll - - newBone["customShape"] = customShape - newBone["customShapeType"] = customShapeType - newBone["customShapeParam"] = customShapeParam - - if listBone: - newBone.parent = listBone[index-1] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - listBone[0].parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Chain(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentchain" - bl_label = "Add CHAIN" - bl_description = "Add Chain Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="chain" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - numberBone: IntProperty( - name="Number Bone", - min=2, - default=2 - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - listBone = [] - for index in range(1, self.numberBone+1): - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), (self.sideBone if self.sideBone != "NONE" else "")])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2 * index)) - newBone.roll = 0 - - newBone["UE4RIGTYPE"] = "COPY_BONE" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = 0 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [10.0, 10.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBone.parent = listBone[index-2] - newBone.use_connect = True - - listBone.append(newBone) - - if self.parentToBone and activeBone: - listBone[0].parent = activeBone - - editBones.active = listBone[0] - - if self.sideMirror and self.sideBone != "NONE": - listBone = [] - for index in range(1, self.numberBone+1): - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (("0" if index < 10 else "") + str(index)), ("r" if self.sideBone == "l" else "l")])) - - newBoneSide.head = context.scene.cursor.location - newBoneSide.head.x = -newBoneSide.head.x - newBoneSide.tail = context.scene.cursor.location + Vector((0.0, 0.0, 0.2 * index)) - newBoneSide.tail.x = -newBoneSide.tail.x - newBoneSide.roll = 0 - - newBoneSide["UE4RIGTYPE"] = "COPY_BONE" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = 0 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = 0 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [10.0, 10.0, 0.0, 15.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if listBone: - newBoneSide.parent = listBone[index-2] - newBoneSide.use_connect = True - - listBone.append(newBoneSide) - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - listBone[0].parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -class OP_BoneComponent_Prop(OP_MixBoneComponent): - bl_idname = "ue4workspace.bonecomponentprop" - bl_label = "Add PROP" - bl_description = "Add Property Bone Component" - - boneName: StringProperty( - name="Bone Name", - default="prop" - ) - - prefixName: StringProperty( - name="Prefix Name", - default="" - ) - - suffixName: StringProperty( - name="Suffix Name", - default="" - ) - - sideBone: EnumProperty( - name="Side Name", - items=[ - ("NONE", "None", ""), - ("l", "Left", ""), - ("r", "Right", "") - ], - default=("NONE") - ) - - sideMirror: BoolProperty( - name="Mirror Side", - default=False - ) - - parentToBone: BoolProperty( - name="Parent To Active Bone", - default=False - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - editBones = activeObject.data.edit_bones - activeBone = context.active_bone - - newBone = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, (self.sideBone if self.sideBone != "NONE" else "")])) - - newBone.head = context.scene.cursor.location - newBone.tail = context.scene.cursor.location + Vector((0.0, 0.15, 0.0)) - newBone.roll = 0 - newBone.use_deform = False - - newBone["UE4RIGTYPE"] = "PROP" - newBone["rotateBone"] = 1 - newBone["rotationRadian"] = 0.0 - newBone["orientAxis"] = 0 - newBone["orientRoll"] = 0.0 - - newBone["customShape"] = 1 - newBone["customShapeType"] = 0 - newBone["customShapeParam"] = [16.0, 25.0, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - newBone.parent = activeBone - - editBones.active = newBone - - if self.sideMirror and self.sideBone != "NONE": - newBoneSide = editBones.new(self.buildName([self.prefixName, self.boneName, self.suffixName, ("r" if self.sideBone == "l" else "l")])) - - newBoneSide.head = newBone.head - newBoneSide.head.x = -newBone.head.x - newBoneSide.tail = newBone.tail - newBoneSide.tail.x = -newBone.tail.x - newBoneSide.roll = 0 - newBoneSide.use_deform = False - - newBoneSide["UE4RIGTYPE"] = "PROP" - newBoneSide["rotateBone"] = 1 - newBoneSide["rotationRadian"] = 0.0 - newBoneSide["orientAxis"] = 0 - newBoneSide["orientRoll"] = 0.0 - - newBoneSide["customShape"] = 1 - newBoneSide["customShapeType"] = 0 - newBoneSide["customShapeParam"] = [16.0, 25.0, 0.0, 2.25, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - if self.parentToBone and activeBone: - parentSide = editBones.get(activeBone.name[:-1] + ("r" if self.sideBone == "l" else "l")) - newBoneSide.parent = parentSide if parentSide else activeBone - - return {"FINISHED"} - -# operator export - -Ops = [ - OP_PoseToAPose, - OP_ApplyPose, - OP_BoneComponent_Copy, - OP_BoneComponent_Pelvis, - OP_BoneComponent_Spine, - OP_BoneComponent_Neck, - OP_BoneComponent_Head, - OP_BoneComponent_FaceAttach, - OP_BoneComponent_Jaw, - OP_BoneComponent_Landmark, - OP_BoneComponent_Eye, - OP_BoneComponent_Eyelid, - OP_BoneComponent_Arm_Human, - OP_BoneComponent_Finger, - OP_BoneComponent_Leg_Human, - OP_BoneComponent_Chain -] \ No newline at end of file diff --git a/UE4WS_ObjectSocket.py b/UE4WS_ObjectSocket.py deleted file mode 100644 index b6dab0a..0000000 --- a/UE4WS_ObjectSocket.py +++ /dev/null @@ -1,335 +0,0 @@ -import math -import bpy -from mathutils import Matrix -from bpy.props import (EnumProperty, BoolProperty, FloatVectorProperty, StringProperty, PointerProperty) -from bpy.types import (Panel, Operator) - -# PROPS - -Props = [ - { - "type": "object", - "name": "attachTo", - "value": PointerProperty( - name="Attach to", - description="Attach object to socket", - type=bpy.types.Object, - poll=lambda self, obj: obj.type == "EMPTY" and obj.get("isSocket") and obj.parent is not bpy.context.active_object - ), - "resetVariable": False - }, - { - "type": "object", - "name": "isAttachToObject", - "value": BoolProperty(default=False), - "resetVariable": False - }, - { - "type": "object", - "name": "attachLocationOriginal", - "value": FloatVectorProperty(size=3), - "resetVariable": False - }, - { - "type": "object", - "name": "attachRotationOriginal", - "value": FloatVectorProperty(size=3), - "resetVariable": False - } -] - -# PANEL - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_ObjectSocketPanel" - bl_parent_id = "UE4WORKSPACE_PT_ObjectPanel" - bl_label = "Socket" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return context.active_object is not None and context.active_object.type in ["ARMATURE", "MESH"] - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - activeObject = context.active_object - - col = layout.box().column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Attach to") - split = split.split() - col = split.column() - row = col.row() - row.enabled = not activeObject.isAttachToObject - row.prop(activeObject, "attachTo", text="", icon="EMPTY_ARROWS") - row = col.row() - row.scale_y = 1.5 - row.operator("ue4workspace.attachobject",icon="CON_PIVOT", text=("Attach", "Detach")[activeObject.isAttachToObject]) - - box = layout.box() - row = box.row() - row.scale_y = 1.5 - row.operator("ue4workspace.createsocket",icon="EMPTY_ARROWS", text="Add Socket") - - socketObjects = [obj for obj in context.scene.objects if obj.type == "EMPTY" and obj.get("isSocket") and obj.parent is activeObject] - - if socketObjects and activeObject.type == "ARMATURE": - row = box.row() - row.scale_y = 1.5 - row.operator("ue4workspace.copysocket",icon="DECORATE_ANIMATE", text="Copy Socket") - - if socketObjects: - for obj in socketObjects: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.prop(obj, "name", text="") - split = split.split() - row = split.row() - row.alignment = "RIGHT" - row.operator("ue4workspace.togglevisibilityobject",icon=("HIDE_OFF", "HIDE_ON")[obj.hide_get()], text="", emboss=False).objName = obj.name - row.operator("ue4workspace.removeobject",icon="TRASH", text="", emboss=False).objName = obj.name - - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Size") - split = split.split() - col = split.column() - col.prop(obj, "empty_display_size", text="") - - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Show Name") - split = split.split() - col = split.column() - col.prop(obj, "show_name", text="") - - # Socket parent bone for character - if obj.parent_type == "BONE": - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Bone") - split = split.split() - col = split.column() - col.prop_search(obj, "parent_bone", activeObject.data, "bones", text="") - -# OPERATOR - -class OP_AttachObject(Operator): - bl_idname = "ue4workspace.attachobject" - bl_label = "Attach Object" - bl_description = "Attach or Detach Object" - bl_options = {"UNDO"} - - @classmethod - def poll(cls, context): - return context.active_object is not None and context.active_object.attachTo is not None and context.active_object.attachTo.parent is not context.active_object - - def execute(self, context): - obj = context.active_object - isAttach = not obj.isAttachToObject - - if isAttach: - # Attach - constraint = obj.constraints.new(type="CHILD_OF") - constraint.name = "AttachTo" - constraint.target = obj.attachTo - - obj.attachLocationOriginal = obj.location - obj.attachRotationOriginal = obj.rotation_euler - obj.isAttachToObject = True - obj.location = [0, 0, 0] - obj.rotation_euler = [0, 0, 0] - - else: - # Detach - constraint = obj.constraints.get("AttachTo") - if constraint: - obj.constraints.remove(constraint) - obj.isAttachToObject = False - obj.location = obj.attachLocationOriginal - obj.rotation_euler = obj.attachRotationOriginal - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg=("Detach Object Success", "Attach Object Success")[isAttach]) - except Exception: - pass - - return {"FINISHED"} - -class OP_CreateSocket(Operator): - bl_idname = "ue4workspace.createsocket" - bl_label = "Create Socket" - bl_description = "Create socket for attach object" - bl_options = {"UNDO", "REGISTER"} - - SocketName: bpy.props.StringProperty( - name="Name", - default="socketName" - ) - - Size: bpy.props.FloatProperty( - name="Size", - min=0.01, - default=1 - ) - - Rotation: bpy.props.FloatVectorProperty( - name="Rotation", - subtype="XYZ", - unit="ROTATION", - default=[0, 0, 0] - ) - - # @classmethod - # def poll(cls, context): - # return True - - def execute(self, context): - parentObj = context.active_object - isBone = parentObj.type == "ARMATURE" and context.mode in ["POSE", "EDIT_ARMATURE"] - bone = None - if isBone: - caseBone = { - "EDIT_ARMATURE": context.active_bone, - "POSE": context.active_pose_bone - } - bone = caseBone.get(context.mode) - - # create collection (UE4Socket) if not exist - collection = bpy.data.collections.get("UE4Socket", False) - if (not collection): - collection = bpy.data.collections.new("UE4Socket") - context.scene.collection.children.link(collection) - - socket = bpy.data.objects.new(name=self.SocketName, object_data=None) - socket["isSocket"] = True - socket.rotation_euler = self.Rotation - socket.location = context.scene.cursor.location - socket.show_name = True - - socket.empty_display_type = "ARROWS" - socket.empty_display_size = self.Size - collection.objects.link(socket) - socket.parent = parentObj - if isBone and bone: - socket.parent_type = "BONE" - socket.parent_bone = bone.name - # Clear Local Transform - socket.matrix_parent_inverse = (parentObj.matrix_world @ Matrix.Translation(bone.tail - bone.head) @ bone.matrix).inverted() - else: - socket.parent_type = "OBJECT" - # Clear Local Transform - socket.matrix_parent_inverse = parentObj.matrix_world.inverted() - - return {"FINISHED"} - -class OP_CopySocket(Operator): - bl_idname = "ue4workspace.copysocket" - bl_label = "Copy Socket" - bl_description = "Copy socket for unreal engine skeleton" - bl_options = {"UNDO", "REGISTER"} - - @classmethod - def poll(self, context): - return context.mode == "OBJECT" and context.active_object is not None and context.active_object.type == "ARMATURE" - - def execute(self, context): - activeObject = context.active_object - - # create new empty - boneParent = bpy.data.objects.new(name="dummySocketBoneParent", object_data=None) - socketPoint = bpy.data.objects.new(name="dummySocketPoint", object_data=None) - - context.scene.collection.objects.link(boneParent) - context.scene.collection.objects.link(socketPoint) - - socketPoint.parent = boneParent - - # set constraint - boneParentConstraint = boneParent.constraints.new("COPY_TRANSFORMS") - socketPointConstraint = socketPoint.constraints.new("COPY_TRANSFORMS") - - boneParentConstraint.target = activeObject - - bpy.ops.object.select_all(action="DESELECT") - - # select bone parent and socket point - boneParent.select_set(state=True) - socketPoint.select_set(state=True) - - # get all socket parent with bone - socketBoneObjects = [obj for obj in context.scene.objects if obj.type == "EMPTY" and obj.get("isSocket") and obj.parent is activeObject and obj.parent_type == "BONE" and obj.parent_bone] - - # string to copy on clipboard - stringClipboard = "SocketCopyPasteBuffer\n\nNumSockets={}\n\n".format(len(socketBoneObjects)) - - for index, socketObj in enumerate(socketBoneObjects): - # set target - boneParentConstraint.subtarget = socketObj.parent_bone - socketPointConstraint.target = socketObj - # get relative transform using apply visual transfrom - bpy.ops.object.visual_transform_apply() - stringClipboard += "IsOnSkeleton=1\nBegin Object Class=/Script/Engine.SkeletalMeshSocket Name=\"SkeletalMeshSocket_{index}\"\nSocketName=\"{socketName}\"\nBoneName=\"{boneName}\"\nRelativeLocation=(X={location[x]},Y={location[y]},Z={location[z]})\nRelativeRotation=(Pitch={rotation[y]},Yaw={rotation[z]},Roll={rotation[x]})\nRelativeScale=(X={scale[x]},Y={scale[y]},Z={scale[z]})\nEnd Object\n\n".format( - index = index, - socketName = socketObj.name, - boneName = socketObj.parent_bone, - location = { - "x": socketPoint.location.x, - "y": socketPoint.location.y * -1, - "z": socketPoint.location.z - }, - rotation = { - "x": math.degrees(socketPoint.rotation_euler.x), - "y": math.degrees(socketPoint.rotation_euler.y * -1), - "z": math.degrees(socketPoint.rotation_euler.z * -1) - }, - scale = { - "x": float(socketPoint.scale.x / 100), - "y": float(socketPoint.scale.y / 100), - "z": float(socketPoint.scale.z / 100) - } - ) - - # remove constarint - boneParent.constraints.remove(boneParentConstraint) - socketPoint.constraints.remove(socketPointConstraint) - - # remove object - bpy.data.objects.remove(boneParent, do_unlink=True) - bpy.data.objects.remove(socketPoint, do_unlink=True) - - # copy string to clipboard - context.window_manager.clipboard = stringClipboard - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Copy Socket Success") - except Exception: - pass - - return {"FINISHED"} - -# operator export - -Ops = [ - OP_AttachObject, - OP_CreateSocket, - OP_CopySocket -] \ No newline at end of file diff --git a/UE4WS_Preferences.py b/UE4WS_Preferences.py deleted file mode 100644 index 41d1aaf..0000000 --- a/UE4WS_Preferences.py +++ /dev/null @@ -1,2616 +0,0 @@ -import os -import json -import time -import bpy -from bpy.types import (AddonPreferences, PropertyGroup, Operator) -from bpy.props import (StringProperty, BoolProperty, BoolVectorProperty, IntProperty, IntVectorProperty, FloatProperty, FloatVectorProperty, EnumProperty, PointerProperty, CollectionProperty) -from bpy_extras.io_utils import (ImportHelper, ExportHelper) - -# PROPERTY GROUP - -class RETARGET_AxisMapGroup(PropertyGroup): - name: StringProperty(default="Bone") - show_expanded: BoolProperty(default=False) - transform: BoolVectorProperty( - name="", - description="", - default=(False, False, False), - size=3 - ) - boneTarget: StringProperty(default="Bone") - boneSource: StringProperty(default="Bone") - axisX: BoolProperty(default=True) - axisY: BoolProperty(default=True) - axisZ: BoolProperty(default=True) - expression: StringProperty(default="(({var}) + {offset}) * {influence}") - -class RETARGET_ParentConstraintGroup(PropertyGroup): - name: StringProperty(default="Bone") - show_expanded: BoolProperty(default=False) - bone: StringProperty(default="Bone2") - parent: StringProperty(default="Bone") - -class RETARGET_PresetGroup(PropertyGroup): - name: StringProperty(default="Preset") - description: StringProperty(default="Description Here") - flag: IntProperty(default=0) - show_expanded: BoolProperty(default=False) - ParentBonesShowExpanded: BoolProperty(default=False) - ParentBones: CollectionProperty(type=RETARGET_ParentConstraintGroup) - AxisMapsShowExpanded: BoolProperty(default=False) - AxisMaps: CollectionProperty(type=RETARGET_AxisMapGroup) - -# group export - -Groups = [ - RETARGET_AxisMapGroup, - RETARGET_ParentConstraintGroup, - RETARGET_PresetGroup -] - -class Preferences(AddonPreferences): - bl_idname = __package__ - - remote = None - - skeleton = [] - - preferencesTab: EnumProperty( - name="Preferences Tab", - items=[ - ("EXPORT", "Export", "Export Tab"), - ("RETARGET", "Retarget Preset", "Retarget Tab"), - ("MISC", "Misc", "Misc Tab") - ], - default="EXPORT" - ) - - multicastGroupEndPoint: StringProperty( - name="Multicast Group Endpoint", - default="239.0.0.1:6766" - ) - - multicastBindAddress: StringProperty( - name="Multicast Bind Address", - default="0.0.0.0" - ) - - multicastTTL: IntProperty( - name="Multicast Time-To-Live", - default=0 - ) - - devMode: BoolProperty( - name="Development Mode", - description="Enable some feature that in development", - default=False - ) - - experimentalFeatures: BoolProperty( - name="Experimental Features", - description="Enable some experimental feature", - default=False - ) - - def updateExportOption(self, context): - if self.remote._broadcast_connection is not None: - # clear all skeleton list - self.skeleton.clear() - self.CHAR_CharacterSkeleton = "NEW" - self.ANIM_CharacterSkeleton = "NONE" - self.remote.stop() - - exportOption: EnumProperty( - name="Export Type", - description="Select the way you want export", - items=[ - ("FBX", "To FBX", "Export as FBX file"), - ("UNREAL", "To Unreal Engine", "Export directly to Unreal Engine project"), - ("BOTH", "To FBX and Unreal Engine", "Export as FBX file and directly export to Unreal Engine Project") - ], - default="BOTH", - update=updateExportOption - ) - - ExportFBXFolder: StringProperty( - name="Export Folder", - description="Folder to export, must have write permissions", - default="", - maxlen=1024, - subtype="DIR_PATH" - ) - - TempFolder: StringProperty( - name="Temporary Folder", - description="Temporary folder for export, must have write permissions", - default="", - maxlen=1024, - subtype="DIR_PATH" - ) - - SM_TabListProject: BoolProperty( - name="List Project", - description="List Project Tab", - default=False - ) - - # Import Assets From Unreal Engine Project - - ## Import setting in blender - - IMPORTASSETS_TabFBXInclude: BoolProperty( - name="Include", - description="Include Tab", - default=False - ) - - IMPORTASSETS_FBXCustomNormals: BoolProperty( - name="Custom Normals", - description="if available (otherwise Blender will recompute them)", - default=True - ) - - IMPORTASSETS_FBXSubdivisionData: BoolProperty( - name="Subdivision Data", - description="Import FBX subdivision information as subdivision surface modifiers", - default=False - ) - - IMPORTASSETS_FBXCustomProperties: BoolProperty( - name="Custom Properties", - description="Import user properties as custom properties", - default=True - ) - - IMPORTASSETS_FBXImportEnums: BoolProperty( - name="Import Enums As Strings", - description="Store enumeration values as strings", - default=True - ) - - IMPORTASSETS_FBXImageSearch: BoolProperty( - name="Image Search", - description="Search subdirs for any associated images (WARNING: may be slow)", - default=True - ) - - IMPORTASSETS_TabFBXTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - IMPORTASSETS_FBXScale: FloatProperty( - name="Scale", - description="Scale", - default=1.0, - min=0.001, - max=1000.0 - ) - - IMPORTASSETS_FBXDecalOffset: FloatProperty( - name="Decal Offset", - description="Displace geometry of alpha meshes", - default=0.0, - min=0.0, - max=1.0 - ) - - IMPORTASSETS_FBXApplyTransform: BoolProperty( - name="Apply Transform", - description="Bake space transform into object data, avoids getting unwanted rotations to objects when target space is not aligned with Blender’s space (WARNING! experimental option, use at own risks, known broken with armatures/animations)", - default=False - ) - - IMPORTASSETS_FBXUsePrePostRotation: BoolProperty( - name="Use Pre/Post Rotation", - description="Use pre/post rotation from FBX transform (you may have to disable that in some cases)", - default=True - ) - - IMPORTASSETS_TabFBXOrientation: BoolProperty( - name="Orientation", - description="Orientation Tab", - default=False - ) - - IMPORTASSETS_FBXManualOrientation: BoolProperty( - name="Manual Orientation", - description="Specify orientation and scale, instead of using embedded data in FBX file", - default=False - ) - - IMPORTASSETS_FBXAxisForward: EnumProperty( - name="Axis Forward", - description="Forward", - items=[ - ("X", "X Forward", ""), - ("Y", "Y Forward", ""), - ("Z", "Z Forward", ""), - ("-X", "-X Forward", ""), - ("-Y", "-Y Forward", ""), - ("-Z", "-Z Forward", "") - ], - default="-Z" - ) - - IMPORTASSETS_FBXAxisUp: EnumProperty( - name="Axis Up", - description="Up", - items=[ - ("X", "X Up", ""), - ("Y", "Y Up", ""), - ("Z", "Z Up", ""), - ("-X", "-X Up", ""), - ("-Y", "-Y Up", ""), - ("-Z", "-Z Up", "") - ], - default="Y" - ) - - IMPORTASSETS_TabFBXAnimation: BoolProperty( - name="Animation", - description="Animation Tab", - default=False - ) - - IMPORTASSETS_FBXImportAnimation: BoolProperty( - name="Animation", - description="Import FBX animation", - default=True - ) - - IMPORTASSETS_FBXAnimationOffset: FloatProperty( - name="Animation Offset", - description="Offset to apply to animation during import, in frames", - default=1.0 - ) - - IMPORTASSETS_TabFBXArmature: BoolProperty( - name="Armature", - description="Armature Tab", - default=False - ) - - IMPORTASSETS_FBXIgnoreLeafBones: BoolProperty( - name="Ignore Leaf Bones", - description="Ignore the last bone at the end of each chain (used to mark the length of the previous bone)", - default=False - ) - - IMPORTASSETS_FBXForceConnectChildren: BoolProperty( - name="Force Connect Children", - description="Force connection of children bones to their parent, even if their computed head/tail positions do not match (can be useful with pure-joints-type armatures)", - default=False - ) - - IMPORTASSETS_FBXAutomaticBoneOrientation: BoolProperty( - name="Automatic Bone Orientation", - description="Try to align the major bone axis with the bone children", - default=False - ) - - IMPORTASSETS_FBXPrimaryBoneAxis: EnumProperty( - name="Primary Bone Axis", - description="", - items=[ - ("X", "X Axis", ""), - ("Y", "Y Axis", ""), - ("Z", "Z Axis", ""), - ("-X", "-X Axis", ""), - ("-Y", "-Y Axis", ""), - ("-Z", "-Z Axis", "") - ], - default="Y" - ) - - IMPORTASSETS_FBXSecondaryBoneAxis: EnumProperty( - name="Secondary Bone Axis", - description="", - items=[ - ("X", "X Axis", ""), - ("Y", "Y Axis", ""), - ("Z", "Z Axis", ""), - ("-X", "-X Axis", ""), - ("-Y", "-Y Axis", ""), - ("-Z", "-Z Axis", "") - ], - default="X" - ) - - ## Export setting in unreal engine - - IMPORTASSETS_TabExporter: BoolProperty( - name="Exporter", - description="Exporter Tab", - default=False - ) - - IMPORTASSETS_FBXExportCompatibility: EnumProperty( - name="FBX Export Compatibility", - description="This will set the fbx sdk compatibility when exporting to fbx file. The default value is 2013", - items=[ - ("FBX_2011", "2011", "FBX 2011"), - ("FBX_2012", "2012", "FBX 2012"), - ("FBX_2013", "2013", "FBX 2013"), - ("FBX_2014", "2014", "FBX 2014"), - ("FBX_2016", "2016", "FBX 2016"), - ("FBX_2018", "2018", "FBX 2018") - ], - default="FBX_2013" - ) - - IMPORTASSETS_ASCII: BoolProperty( - name="ASCII", - description="If enabled, save as ascii instead of binary", - default=False - ) - - IMPORTASSETS_ForceFrontXAxis: BoolProperty( - name="Force Front X Axis", - description="If enabled, export with X axis as the front axis instead of default -Y", - default=False - ) - - IMPORTASSETS_TabMesh: BoolProperty( - name="Mesh", - description="Mesh Tab", - default=False - ) - - IMPORTASSETS_VertexColor: BoolProperty( - name="Vertex Color", - description="If enabled, export vertex color", - default=True - ) - - IMPORTASSETS_LevelOfDetail: BoolProperty( - name="Level Of Detail", - description="If enabled, export the level of detail", - default=True - ) - - IMPORTASSETS_TabStaticMesh: BoolProperty( - name="Static Mesh", - description="Static Mesh Tab", - default=False - ) - - IMPORTASSETS_Collision: BoolProperty( - name="Collision", - description="If enabled, export collision", - default=True - ) - - IMPORTASSETS_TabSkeletalMesh: BoolProperty( - name="Skeletal Mesh", - description="Skeletal Mesh Tab", - default=False - ) - - IMPORTASSETS_ExportMorphTargets: BoolProperty( - name="Export Morph Targets", - description="If enabled, export the morph targets", - default=True - ) - - IMPORTASSETS_TabAnimation: BoolProperty( - name="Animation", - description="Animation Tab", - default=False - ) - - IMPORTASSETS_ExportPreviewMesh: BoolProperty( - name="Export Preview Mesh", - description="If enable, the preview mesh link to the exported animations will be also exported", - default=False - ) - - IMPORTASSETS_MapSkeletalMotionToRoot: BoolProperty( - name="Map Skeletal Motion To Root", - description="If enable, Map skeletal actor motion to the root bone of the skeleton", - default=False - ) - - IMPORTASSETS_ExportLocalTime: BoolProperty( - name="Export Local Time", - description="If enabled, export sequencer animation in its local time, relative to its master sequence", - default=True - ) - - # Object - - SM_OBJTabCustomCollision: BoolProperty( - name="Custom Collision", - description="Custom Collision Tab", - default=False - ) - - SM_OBJTabSocket: BoolProperty( - name="Socket", - description="Socket Tab", - default=False - ) - - SM_OBJTabLOD: BoolProperty( - name="Level of Detail", - description="Level of Detail Tab", - default=False - ) - - CHAR_OBJTabSocket: BoolProperty( - name="Socket", - description="Socket Tab", - default=False - ) - - CHAR_OBJTabSkeletonPreset: BoolProperty( - name="Skeleton Preset", - description="Skeleton Preset Tab", - default=False - ) - - CHAR_OBJTabContolRig: BoolProperty( - name="Control Rig", - description="Control Rig Tab", - default=False - ) - - - # Static mesh export setting - - SM_Subfolder: StringProperty( - name="Subfolder", - description="Subfolder for static mesh export folder, leave it blank if you want to export to root project folder", - default="" - ) - - SM_CustomCollision: BoolProperty( - name="Custom Collision", - description="Export mesh with custom collision (if exist)", - default=True - ) - - SM_Socket: BoolProperty( - name="Socket", - description="Export mesh with socket (if exist)", - default=True - ) - - SM_LOD: BoolProperty( - name="Level of Detail", - description="Export mesh with level of detail (if exist)", - default=True - ) - - SM_OverwriteFile: BoolProperty( - name="Overwrite File", - description="Overwrite file if filename exist, if false will not export", - default=True - ) - - SM_ExportMeshOption: EnumProperty( - name="Export Mesh Option", - description="Export Mesh Option", - items=[ - ("SELECT", "Select", "Export selected mesh on scene"), - ("ALL", "All", "Export All Mesh On Scene") - ], - default="SELECT" - ) - - SM_MeshOrigin: EnumProperty( - name="Mesh Origin", - description="Mesh Origin", - items=[ - ("OBJECT", "Object", "Use object origin"), - ("SCENE", "Scene", "Use scene origin") - ], - default="OBJECT" - ) - - ## Export Profile - - def SM_GetExportProfile(self, context): - result = [] - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key, setting in jsonSetting["staticMesh"].items(): - result += [(key, setting["name"], setting["description"])] - - return result - - def SM_UpdateExportProfile(self, context): - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - setting = jsonSetting["staticMesh"].get(self.SM_ExportProfile, False) - if(setting): - fbx = setting.get("FBX", False) - unrealengine = setting.get("UNREALENGINE", False) - if(fbx): - for key, value in fbx.items(): - if(hasattr(self, key)): - setattr(self, key, value) - if(unrealengine): - for key, value in unrealengine.items(): - if(hasattr(self, key)): - setattr(self, key, value) - self.SM_IsProfileLock = setting.get("lock", False) - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Change export setting success") - except Exception: - pass - - SM_ExportProfile: EnumProperty( - name="Export Profile", - description="Save your export setting into a profile", - items=SM_GetExportProfile, - update=SM_UpdateExportProfile, - default=None - ) - - SM_IsProfileLock: BoolProperty( - name="Is Profile Lock", - description="check if the current profile is lock", - default=True - ) - - ## FBX Option - - ## Transform - - SM_FBXTabTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - SM_FBXGlobalScale: FloatProperty( - name="Scale", - description="Scale all data (Some importers do not support scaled armatures!)", - default=1.0, - min=0.001, - max=1000 - ) - - SM_FBXApplyScaleOptions: EnumProperty( - name="Apply Scalings", - description="How to apply custom and units scalings in generated FBX file (Blender uses FBX scale to detect units on import, but many other applications do not handle the same way)", - items=[ - ("FBX_SCALE_NONE", "All Local", "Apply custom scaling and units scaling to each object transformation, FBX scale remains at 1.0"), - ("FBX_SCALE_UNITS", "FBX Units Scale", "Apply custom scaling to each object transformation, and units scaling to FBX scale"), - ("FBX_SCALE_CUSTOM", "FBX Custom Scale", "Apply custom scaling to FBX scale, and units scaling to each object transformation"), - ("FBX_SCALE_ALL", "FBX All", "Apply custom scaling and units scaling to FBX scale") - ], - default="FBX_SCALE_NONE" - ) - - SM_FBXAxisForward: EnumProperty( - name="Forward", - description="Forward", - items=[ - ("X", "X Forward", "X Forward"), - ("Y", "Y Forward", "Y Forward"), - ("Z", "Z Forward", "Z Forward"), - ("-X", "-X Forward", "-X Forward"), - ("-Y", "-Y Forward", "-Y Forward"), - ("-Z", "-Z Forward", "-Z Forward") - ], - default="-Z" - ) - - SM_FBXAxisUp: EnumProperty( - name="Up", - description="Up", - items=[ - ("X", "X Up", "X Up"), - ("Y", "Y Up", "Y Up"), - ("Z", "Z Up", "Z Up"), - ("-X", "-X Up", "-X Up"), - ("-Y", "-Y Up", "-Y Up"), - ("-Z", "-Z Up", "-Z Up") - ], - default="Y" - ) - - SM_FBXApplyUnitScale: BoolProperty( - name="Apply Unit", - description="Take into account current Blender units settings (if unset, raw Blender Units values are used as-is)", - default=True - ) - - SM_FBXBakeSpaceTransform: BoolProperty( - name="!EXPERIMENTAL! Apply Transform", - description="Bake space transform into object data, avoids getting unwanted rotations to objects when target space is not aligned with Blender’s space (WARNING! experimental option, use at own risks, known broken with armatures/animations)", - default=False - ) - - ## Geometry - - SM_FBXTabGeometry: BoolProperty( - name="Geometry", - description="Geometry Tab", - default=False - ) - - SM_FBXMeshSmoothType: EnumProperty( - name="Smoothing", - description="Export smoothing information (prefer ‘Normals Only’ option if your target importer understand split normals)", - items=[ - ("OFF", "Normals Only", "Export only normals instead of writing edge or face smoothing data"), - ("FACE", "Face", "Write face smoothing"), - ("EDGE", "Edge", "Write edge smoothing") - ], - default="OFF" - ) - - SM_FBXUseSubsurf: BoolProperty( - name="Export Subdivision Surface", - description="Export the last Catmull-Rom subidivion modifier as FBX subdivision (Does not apply the modifier even if ‘Apply Modifiers’ is enabled)", - default=False - ) - - SM_FBXUseMeshModifiers: BoolProperty( - name="Apply Modifiers", - description="Apply modifiers to mesh objects (except Armature ones) - WARNING: prevents exporting shape keys", - default=True - ) - - SM_FBXUseMeshEdges: BoolProperty( - name="Loose Edges", - description="Export loose edges (as two-vertices polygons)", - default=False - ) - - SM_FBXUseTSpace: BoolProperty( - name="Tangent Space", - description="Add binormal and tangent vectors, together with normal they form the tangent space (will only work correctly with tris/quads only meshes!)", - default=False - ) - - ## Unreal Engine Option - - ## Mesh - - SM_TabMesh: BoolProperty( - name="Mesh", - description="Mesh Tab", - default=False - ) - - SM_AutoGenerateCollision: BoolProperty( - name="Auto Generate Collision", - description="If checked, collision will automatically be generated (ignored if custom collision is imported or used)", - default=True - ) - - """ - Static Mesh LODGroup: Enums ; None - """ - - SM_VertexColorImportOption: EnumProperty( - name="Vertex Color Import Option", - description="Specify how vertex colors should be imported", - items=[ - ("IGNORE", "Ignore", "Ignore vertex colors from the FBX file, and keep the existing mesh vertex colors"), - ("OVERRIDE", "Override", "Override all vertex colors with the specified color"), - ("REPLACE", "Replace", "Import the static mesh using the vertex colors from the FBX file") - ], - default="IGNORE" - ) - - SM_VertexOverrideColor: FloatVectorProperty( - name="Vertex Override Color", - description="Specify override color in the case that VertexColorImportOption is set to Override", - subtype="COLOR_GAMMA", - size=4, - default=(1.0,1.0,1.0,1.0), - min=0.0, - max=1.0 - ) - - SM_RemoveDegenerates: BoolProperty( - name="Remove Degenerates", - description="Disabling this option will keep degenerate triangles found. In general you should leave this option on", - default=True - ) - - SM_BuildAdjacencyBuffer: BoolProperty( - name="Build Adjacency Buffer", - description="Required for PNT tessellation but can be slow. Recommend disabling for larger meshes", - default=True - ) - - SM_BuildReversedIndexBuffer: BoolProperty( - name="Build Reversed Index Buffer", - description="Build Reversed Index Buffer", - default=True - ) - - SM_GenerateLightmapsUVs: BoolProperty( - name="Generate Lightmaps UVs", - description="Generate Lightmap UVs", - default=True - ) - - SM_OneConvexHullPerUCX: BoolProperty( - name="One Convex Hull Per UCX", - description="If checked, one convex hull per UCX_ prefixed collision mesh will be generated instead of decomposing into multiple hulls", - default=True - ) - - SM_CombineMeshes: BoolProperty( - name="Combine Meshes", - description="If enabled, combines all meshes into a single mesh", - default=False - ) - - SM_TransformVertexToAbsolute: BoolProperty( - name="Transform Vertex to Absolute", - description="If this option is true the node absolute transform (transform, offset and pivot) will be apply to the mesh vertices", - default=True - ) - - SM_BakePivotInVertex: BoolProperty( - name="Bake Pivot in Vertex", - description="Experimental - If this option is true the inverse node rotation pivot will be apply to the mesh vertices. The pivot from the DCC will then be the origin of the mesh. Note: “TransformVertexToAbsolute” must be false", - default=False - ) - - SM_ImportMeshLODs: BoolProperty( - name="Import Mesh LODs", - description="If enabled, creates LOD models for Unreal meshes from LODs in the import file; If not enabled, only the base mesh from the LOD group is imported", - default=False - ) - - SM_NormalImportMethod: EnumProperty( - name="Normal Import Method", - description="Enabling this option will read the tangents(tangent,binormal,normal) from FBX file instead of generating them automatically", - items=[ - ("COMPUTE_NORMALS", "Compute Normals", ""), - ("IMPORT_NORMALS", "Import Normals", ""), - ("IMPORT_NORMALS_AND_TANGENTS", "Import Normals and Tangents", "") - ], - default="IMPORT_NORMALS" - ) - - SM_NormalGenerationMethod: EnumProperty( - name="Normal Generation Method", - description="Use the MikkTSpace tangent space generator for generating normals and tangents on the mesh", - items=[ - ("BUILT_IN", "Built In", "Use the legacy built in method to generate normals (faster in some cases)"), - ("MIKK_T_SPACE", "Mikk T Space", "Use MikkTSpace to generate normals and tangents") - ], - default="MIKK_T_SPACE" - ) - - SM_ComputeWeightedNormals: BoolProperty( - name="Compute Weighted Normals", - description="Enabling this option will use weighted normals algorithm (area and angle) when computing normals or tangents", - default=True - ) - - ## Transform - - SM_TabTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - SM_ImportTranslation: FloatVectorProperty( - name="Import Translation", - description="Import Translation", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - SM_ImportRotation: FloatVectorProperty( - name="Import Rotation", - description="Import Rotation", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - SM_ImportUniformScale: FloatProperty( - name="Import Uniform Scale", - description="Import Uniform Scale", - default=1.0 - ) - - ## Misc. - - SM_TabMisc: BoolProperty( - name="Misc.", - description="Miscellaneous Tab", - default=False - ) - - - SM_ConvertScene: BoolProperty( - name="Convert Scene", - description="Convert the scene from FBX coordinate system to UE4 coordinate system", - default=True - ) - - SM_ForceFrontXAxis: BoolProperty( - name="Force Front XAxis", - description="Convert the scene from FBX coordinate system to UE4 coordinate system with front X axis instead of -Y", - default=False - ) - - SM_ConvertSceneUnit: BoolProperty( - name="Convert Scene Unit", - description="Convert the scene from FBX unit to UE4 unit (centimeter)", - default=False - ) - - SM_OverrideFullName: BoolProperty( - name="Override Full Name", - description="Use the string in “Name” field as full name of mesh. The option only works when the scene contains one mesh", - default=True - ) - - ## LODSetting - - SM_TabLODSetting: BoolProperty( - name="LODSetting", - description="LODSetting Tab", - default=False - ) - - SM_AutoComputeLODScreenSize: BoolProperty( - name="Auto Compute LOD Screen Size", - description="If checked, the editor will automatically compute screen size values for the static mesh’s LODs. If unchecked, the user can enter custom screen size values for each LOD", - default=True - ) - - SM_LODDistance0: FloatProperty( - name="LOD 0 Screen Size", - description="Set a screen size value for LOD 0", - default=0.0 - ) - - SM_LODDistance1: FloatProperty( - name="LOD 1 Screen Size", - description="Set a screen size value for LOD 1", - default=0.0 - ) - - SM_LODDistance2: FloatProperty( - name="LOD 2 Screen Size", - description="Set a screen size value for LOD 2", - default=0.0 - ) - - SM_LODDistance3: FloatProperty( - name="LOD 3 Screen Size", - description="Set a screen size value for LOD 3", - default=0.0 - ) - - SM_LODDistance4: FloatProperty( - name="LOD 4 Screen Size", - description="Set a screen size value for LOD 4", - default=0.0 - ) - - SM_LODDistance5: FloatProperty( - name="LOD 5 Screen Size", - description="Set a screen size value for LOD 5", - default=0.0 - ) - - SM_LODDistance6: FloatProperty( - name="LOD 6 Screen Size", - description="Set a screen size value for LOD 6", - default=0.0 - ) - - SM_LODDistance7: FloatProperty( - name="LOD 7 Screen Size", - description="Set a screen size value for LOD 7", - default=0.0 - ) - - SM_MinimumLODNumber: IntProperty( - name="Minimum LOD", - description="Set the minimum LOD used for rendering. Setting the value to 0 will use the default value of LOD0", - default=0 - ) - - SM_NumberOfLODs: IntProperty( - name="Number of LODs", - description="Set the number of LODs for the editor to import. Setting the value to 0 imports the number of LODs found in the file (up to the maximum)", - default=0 - ) - - ## Material - - SM_TabMaterial: BoolProperty( - name="Material", - description="Material Tab", - default=False - ) - - SM_MaterialSearchLocation: EnumProperty( - name="Search Location", - description="Specify where we should search for matching materials when importing", - items=[ - ("LOCAL", "Local", "Search for matching material in local import folder only"), - ("UNDER_PARENT", "Under Parent", "Search for matching material recursively from parent folder"), - ("UNDER_ROOT", "Under Root", "Search for matching material recursively from root folder"), - ("ALL_ASSETS", "All Assets", "Search for matching material in all assets folders") - ], - default="LOCAL" - ) - - SM_ImportMaterial: BoolProperty( - name="Import Material", - description="Whether to automatically create Unreal materials for materials found in the FBX scene", - default=False - ) - - SM_ImportTexture: BoolProperty( - name="Import Texture", - description="The option works only when option “Import Material” is OFF. If “Import Material” is ON, textures are always imported", - default=True - ) - - SM_InvertNormalMaps: BoolProperty( - name="Invert Normal Maps", - description="If importing textures is enabled, this option will cause normal map Y (Green) values to be inverted", - default=False - ) - - SM_ReorderMaterialToFBXOrder: BoolProperty( - name="Reorder Material To FBX Order", - description="If checked, The material list will be reorder to the same order has the FBX file", - default=True - ) - - # Character - - def get_skeletonPreset(self, context): - result = [] - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "skeletonPreset.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key, setting in jsonSetting["skeleton"].items(): - result += [(key, setting["name"], setting["description"])] - - return result - - CHAR_SkeletonPreset: EnumProperty( - name="Skeleton Preset", - description="Skeleton Preset", - items=get_skeletonPreset, - default=None - ) - - CHAR_Subfolder: StringProperty( - name="Subfolder", - description="Subfolder for skeleton mesh export folder, leave it blank if you want to export to root project folder", - default="" - ) - - CHAR_OverwriteFile: BoolProperty( - name="Overwrite File", - description="Overwrite file if filename exist, if false will not export", - default=True - ) - - # UE4 Python still not support add socket using python for skeletal mesh - CHAR_Socket: BoolProperty( - name="Socket", - description="Export character with socket (if exist)", - default=False - ) - - CHAR_ExportCharacterOption: EnumProperty( - name="Export Character Option", - description="Export Character Option", - items=[ - ("SELECT", "Select", "Export selected character on scene"), - ("ALL", "All", "Export All Character On Scene") - ], - default="SELECT" - ) - - CHAR_CharacterOption: EnumProperty( - name="Character Option", - description="Character Option", - items=[ - ("COMBINE", "Combine", "Combine character mesh into one fbx file"), - ("PART", "Part", "Separate character mesh into multiple fbx file") - ], - default="COMBINE" - ) - - def update_skeleton(self, context): - return [("NEW", "New", "Create new skeleton")] + self.skeleton - - CHAR_CharacterSkeleton: EnumProperty( - name="Character Skeleton", - description="Character Skeleton", - items=update_skeleton, - default=None - ) - - ## Export Profile - - def CHAR_GetExportProfile(self, context): - result = [] - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key, setting in jsonSetting["character"].items(): - result += [(key, setting["name"], setting["description"])] - - return result - - def CHAR_UpdateExportProfile(self, context): - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - setting = jsonSetting["character"].get(self.CHAR_ExportProfile, False) - if(setting): - fbx = setting.get("FBX", False) - unrealengine = setting.get("UNREALENGINE", False) - if(fbx): - for key, value in fbx.items(): - if(hasattr(self, key)): - setattr(self, key, value) - if(unrealengine): - for key, value in unrealengine.items(): - if(hasattr(self, key)): - setattr(self, key, value) - self.CHAR_IsProfileLock = setting.get("lock", False) - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Change export setting success") - except Exception: - pass - - CHAR_ExportProfile: EnumProperty( - name="Export Profile", - description="Save your export setting into a profile", - items=CHAR_GetExportProfile, - update=CHAR_UpdateExportProfile, - default=None - ) - - CHAR_IsProfileLock: BoolProperty( - name="Is Profile Lock", - description="check if the current profile is lock", - default=True - ) - - ## FBX Option - - ## Transform - - CHAR_FBXTabTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - CHAR_FBXGlobalScale: FloatProperty( - name="Scale", - description="Scale all data (Some importers do not support scaled armatures!)", - default=1.0, - min=0.001, - max=1000 - ) - - CHAR_FBXApplyScaleOptions: EnumProperty( - name="Apply Scalings", - description="How to apply custom and units scalings in generated FBX file (Blender uses FBX scale to detect units on import, but many other applications do not handle the same way)", - items=[ - ("FBX_SCALE_NONE", "All Local", "Apply custom scaling and units scaling to each object transformation, FBX scale remains at 1.0"), - ("FBX_SCALE_UNITS", "FBX Units Scale", "Apply custom scaling to each object transformation, and units scaling to FBX scale"), - ("FBX_SCALE_CUSTOM", "FBX Custom Scale", "Apply custom scaling to FBX scale, and units scaling to each object transformation"), - ("FBX_SCALE_ALL", "FBX All", "Apply custom scaling and units scaling to FBX scale") - ], - default="FBX_SCALE_NONE" - ) - - CHAR_FBXAxisForward: EnumProperty( - name="Forward", - description="Forward", - items=[ - ("X", "X Forward", "X Forward"), - ("Y", "Y Forward", "Y Forward"), - ("Z", "Z Forward", "Z Forward"), - ("-X", "-X Forward", "-X Forward"), - ("-Y", "-Y Forward", "-Y Forward"), - ("-Z", "-Z Forward", "-Z Forward") - ], - default="-Z" - ) - - CHAR_FBXAxisUp: EnumProperty( - name="Up", - description="Up", - items=[ - ("X", "X Up", "X Up"), - ("Y", "Y Up", "Y Up"), - ("Z", "Z Up", "Z Up"), - ("-X", "-X Up", "-X Up"), - ("-Y", "-Y Up", "-Y Up"), - ("-Z", "-Z Up", "-Z Up") - ], - default="Y" - ) - - CHAR_FBXApplyUnitScale: BoolProperty( - name="Apply Unit", - description="Take into account current Blender units settings (if unset, raw Blender Units values are used as-is)", - default=True - ) - - CHAR_FBXBakeSpaceTransform: BoolProperty( - name="!EXPERIMENTAL! Apply Transform", - description="Bake space transform into object data, avoids getting unwanted rotations to objects when target space is not aligned with Blender’s space (WARNING! experimental option, use at own risks, known broken with armatures/animations)", - default=False - ) - - ## Geometry - - CHAR_FBXTabGeometry: BoolProperty( - name="Geometry", - description="Geometry Tab", - default=False - ) - - CHAR_FBXMeshSmoothType: EnumProperty( - name="Smoothing", - description="Export smoothing information (prefer ‘Normals Only’ option if your target importer understand split normals)", - items=[ - ("OFF", "Normals Only", "Export only normals instead of writing edge or face smoothing data"), - ("FACE", "Face", "Write face smoothing"), - ("EDGE", "Edge", "Write edge smoothing") - ], - default="OFF" - ) - - CHAR_FBXUseSubsurf: BoolProperty( - name="Export Subdivision Surface", - description="Export the last Catmull-Rom subidivion modifier as FBX subdivision (Does not apply the modifier even if ‘Apply Modifiers’ is enabled)", - default=False - ) - - CHAR_FBXUseMeshModifiers: BoolProperty( - name="Apply Modifiers", - description="Apply modifiers to mesh objects (except Armature ones) - WARNING: prevents exporting shape keys", - default=True - ) - - CHAR_FBXUseMeshEdges: BoolProperty( - name="Loose Edges", - description="Export loose edges (as two-vertices polygons)", - default=False - ) - - CHAR_FBXUseTSpace: BoolProperty( - name="Tangent Space", - description="Add binormal and tangent vectors, together with normal they form the tangent space (will only work correctly with tris/quads only meshes!)", - default=False - ) - - ## Armature - - CHAR_FBXTabArmature: BoolProperty( - name="Armature", - description="Armature Tab", - default=False - ) - - CHAR_FBXPrimaryBoneAxis: EnumProperty( - name="Primary Bone Axis", - description="Primary Bone Axis", - items=[ - ("X", "X Axis", "X Axis"), - ("Y", "Y Axis", "Y Axis"), - ("Z", "Z Axis", "Z Axis"), - ("-X", "-X Axis", "-X Axis"), - ("-Y", "-Y Axis", "-Y Axis"), - ("-Z", "-Z Axis", "-Z Axis") - ], - default="Y" - ) - - CHAR_FBXSecondaryBoneAxis: EnumProperty( - name="Secondary Bone Axis", - description="Secondary Bone Axis", - items=[ - ("X", "X Axis", "X Axis"), - ("Y", "Y Axis", "Y Axis"), - ("Z", "Z Axis", "Z Axis"), - ("-X", "-X Axis", "-X Axis"), - ("-Y", "-Y Axis", "-Y Axis"), - ("-Z", "-Z Axis", "-Z Axis") - ], - default="X" - ) - - CHAR_FBXArmatureFBXNodeType: EnumProperty( - name="Armature FBXNode Type", - description="FBX type of node (object) used to represent Blender’s armatures (use Null one unless you experience issues with other app, other choices may no import back perfectly in Blender…)", - items=[ - ("NULL", "Null", "‘Null’ FBX node, similar to Blender’s Empty (default)"), - ("ROOT", "Root", "‘Root’ FBX node, supposed to be the root of chains of bones"), - ("LIMBNODE", "LimbNode", "‘LimbNode’ FBX node, regular joint between two bones") - ], - default="NULL" - ) - - CHAR_FBXOnlyDeformBones: BoolProperty( - name="Only Deform Bones", - description="Only write deforming bones (and non-deforming ones when they have deforming children)", - default=False - ) - - CHAR_FBXAddLeafBones: BoolProperty( - name="Add Leaf Bones", - description="Only write deforming bones (and non-deforming ones when they have deforming children)", - default=True - ) - - ## Unreal Engine Option - - ## Mesh - - CHAR_TabMesh: BoolProperty( - name="Mesh", - description="Mesh Tab", - default=False - ) - - CHAR_ImportContentType: EnumProperty( - name="Import Content Type", - description="Filter the content we want to import from the incoming FBX skeletal mesh", - items=[ - ("FBXICT_ALL", "Geometry and Skinning Weights", "Import all fbx content* – geometry, skinning and weights"), - ("FBXICT_GEOMETRY", "Geometry", "Import the skeletal mesh geometry only (will create a default skeleton, or map the geometry to the existing one). Morph and LOD can be imported with it"), - ("FBXICT_SKINNING_WEIGHTS", "Skinning Weights", "Import the skeletal mesh skinning and weights only (no geometry will be imported). Morph and LOD will not be imported with this settings") - ], - default="FBXICT_ALL" - ) - - CHAR_VertexColorImportOption: EnumProperty( - name="Vertex Color Import Option", - description="Specify how vertex colors should be imported", - items=[ - ("REPLACE", "Replace", "Import the static mesh using the vertex colors from the FBX file"), - ("IGNORE", "Ignore", "Ignore vertex colors from the FBX file, and keep the existing mesh vertex colors"), - ("OVERRIDE", "Override", "Override all vertex colors with the specified color") - ], - default="REPLACE" - ) - - CHAR_VertexOverrideColor: FloatVectorProperty( - name="Vertex Override Color", - description="Specify override color in the case that VertexColorImportOption is set to Override", - subtype="COLOR_GAMMA", - size=4, - default=(0.0,0.0,0.0,0.0), - min=0.0, - max=1.0 - ) - - CHAR_UpdateSkeletonReferencePose: BoolProperty( - name="Update Skeleton Reference Pose", - description="If enabled, update the Skeleton (of the mesh being imported)’s reference pose", - default=False - ) - - CHAR_UseT0AsRefPose: BoolProperty( - name="Use T0 As Ref Pose", - description="Enable this option to use frame 0 as reference pose", - default=False - ) - - CHAR_PreserveSmoothingGroups: BoolProperty( - name="Preserve Smoothing Groups", - description="If checked, triangles with non-matching smoothing groups will be physically split", - default=True - ) - - CHAR_ImportMeshesInBoneHierarchy: BoolProperty( - name="Import Meshes In Bone Hierarchy", - description="If checked, meshes nested in bone hierarchies will be imported instead of being converted to bones", - default=True - ) - - CHAR_ImportMorphTargets: BoolProperty( - name="Import Morph Targets", - description="If enabled, creates Unreal morph objects for the imported meshes", - default=False - ) - - CHAR_ImportMeshLODs: BoolProperty( - name="Import Mesh LODs", - description="If enabled, creates LOD models for Unreal meshes from LODs in the import file; If not enabled, only the base mesh from the LOD group is imported", - default=False - ) - - CHAR_NormalImportMethod: EnumProperty( - name="Normal Import Method", - description="Enabling this option will read the tangents(tangent,binormal,normal) from FBX file instead of generating them automatically", - items=[ - ("COMPUTE_NORMALS", "Compute Normals", ""), - ("IMPORT_NORMALS", "Import Normals", ""), - ("IMPORT_NORMALS_AND_TANGENTS", "Import Normals and Tangents", "") - ], - default="IMPORT_NORMALS" - ) - - CHAR_NormalGenerationMethod: EnumProperty( - name="Normal Generation Method", - description="Use the MikkTSpace tangent space generator for generating normals and tangents on the mesh", - items=[ - ("BUILT_IN", "Built In", "Use the legacy built in method to generate normals (faster in some cases)"), - ("MIKK_T_SPACE", "Mikk T Space", "Use MikkTSpace to generate normals and tangents") - ], - default="MIKK_T_SPACE" - ) - - CHAR_ComputeWeightedNormals: BoolProperty( - name="Compute Weighted Normals", - description="Enabling this option will use weighted normals algorithm (area and angle) when computing normals or tangents", - default=True - ) - - CHAR_ThresholdPosition: FloatProperty( - name="Threshold Position", - description="Threshold to compare vertex position equality", - default=0.00002 - ) - - CHAR_ThresholdTangentNormal: FloatProperty( - name="Threshold Tangent Normal", - description="Threshold to compare normal, tangent or bi-normal equality", - default=0.00002 - ) - - CHAR_ThresholdUV: FloatProperty( - name="Threshold UV", - description="Threshold to compare UV equality", - default=0.000977 - ) - - CHAR_PhysicsAsset: EnumProperty( - name="Physics Asset", - description="Physics Asset", - items=[ - ("CREATE", "Create", "create new PhysicsAsset") - ], - default="CREATE" - ) - - ## Transform - - CHAR_TabTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - CHAR_ImportTranslation: FloatVectorProperty( - name="Import Translation", - description="Import Translation", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - CHAR_ImportRotation: FloatVectorProperty( - name="Import Rotation", - description="Import Rotation", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - CHAR_ImportUniformScale: FloatProperty( - name="Import Uniform Scale", - description="Import Uniform Scale", - default=1.0 - ) - - ## Misc. - - CHAR_TabMisc: BoolProperty( - name="Misc.", - description="Miscellaneous Tab", - default=False - ) - - CHAR_ConvertScene: BoolProperty( - name="Convert Scene", - description="Convert the scene from FBX coordinate system to UE4 coordinate system", - default=True - ) - - CHAR_ForceFrontXAxis: BoolProperty( - name="Force Front XAxis", - description="Convert the scene from FBX coordinate system to UE4 coordinate system with front X axis instead of -Y", - default=False - ) - - CHAR_ConvertSceneUnit: BoolProperty( - name="Convert Scene Unit", - description="Convert the scene from FBX unit to UE4 unit (centimeter)", - default=False - ) - - CHAR_OverrideFullName: BoolProperty( - name="Override Full Name", - description="Use the string in “Name” field as full name of mesh. The option only works when the scene contains one mesh", - default=True - ) - - ## Material - - CHAR_TabMaterial: BoolProperty( - name="Material", - description="Material Tab", - default=False - ) - - CHAR_MaterialSearchLocation: EnumProperty( - name="Search Location", - description="Specify where we should search for matching materials when importing", - items=[ - ("LOCAL", "Local", "Search for matching material in local import folder only"), - ("UNDER_PARENT", "Under Parent", "Search for matching material recursively from parent folder"), - ("UNDER_ROOT", "Under Root", "Search for matching material recursively from root folder"), - ("ALL_ASSETS", "All Assets", "Search for matching material in all assets folders") - ], - default="LOCAL" - ) - - CHAR_ImportMaterial: BoolProperty( - name="Import Material", - description="Whether to automatically create Unreal materials for materials found in the FBX scene", - default=False - ) - - CHAR_ImportTexture: BoolProperty( - name="Import Texture", - description="The option works only when option “Import Material” is OFF. If “Import Material” is ON, textures are always imported", - default=True - ) - - CHAR_InvertNormalMaps: BoolProperty( - name="Invert Normal Maps", - description="If importing textures is enabled, this option will cause normal map Y (Green) values to be inverted", - default=False - ) - - CHAR_ReorderMaterialToFBXOrder: BoolProperty( - name="Reorder Material To FBX Order", - description="If checked, The material list will be reorder to the same order has the FBX file", - default=True - ) - - # animation export setting - - ANIM_Subfolder: StringProperty( - name="Subfolder", - description="Subfolder for animation export folder, leave it blank if you want to export to root project folder", - default="" - ) - - ANIM_OverwriteFile: BoolProperty( - name="Overwrite File", - description="Overwrite file if filename exist, if false will not export", - default=True - ) - - def anim_skeleton(self, context): - return [("NONE", "None", "You Have To Update Skeleton List")] + self.skeleton - - ANIM_CharacterSkeleton: EnumProperty( - name="Character Skeleton", - description="Character Skeleton", - items=anim_skeleton, - default=None - ) - - ## Export Profile - - def ANIM_GetExportProfile(self, context): - result = [] - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key, setting in jsonSetting["animation"].items(): - result += [(key, setting["name"], setting["description"])] - - return result - - def ANIM_UpdateExportProfile(self, context): - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - setting = jsonSetting["animation"].get(self.ANIM_ExportProfile, False) - if(setting): - fbx = setting.get("FBX", False) - unrealengine = setting.get("UNREALENGINE", False) - if(fbx): - for key, value in fbx.items(): - if(hasattr(self, key)): - setattr(self, key, value) - if(unrealengine): - for key, value in unrealengine.items(): - if(hasattr(self, key)): - setattr(self, key, value) - self.ANIM_IsProfileLock = setting.get("lock", False) - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Change export setting success") - except Exception: - pass - - ANIM_ExportProfile: EnumProperty( - name="Export Profile", - description="Save your export setting into a profile", - items=ANIM_GetExportProfile, - update=ANIM_UpdateExportProfile, - default=None - ) - - ANIM_IsProfileLock: BoolProperty( - name="Is Profile Lock", - description="check if the current profile is lock", - default=True - ) - - ## FBX Option - - ## Transform - - ANIM_FBXTabTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - ANIM_FBXGlobalScale: FloatProperty( - name="Scale", - description="Scale all data (Some importers do not support scaled armatures!)", - default=1.0, - min=0.001, - max=1000 - ) - - ANIM_FBXApplyScaleOptions: EnumProperty( - name="Apply Scalings", - description="How to apply custom and units scalings in generated FBX file (Blender uses FBX scale to detect units on import, but many other applications do not handle the same way)", - items=[ - ("FBX_SCALE_NONE", "All Local", "Apply custom scaling and units scaling to each object transformation, FBX scale remains at 1.0"), - ("FBX_SCALE_UNITS", "FBX Units Scale", "Apply custom scaling to each object transformation, and units scaling to FBX scale"), - ("FBX_SCALE_CUSTOM", "FBX Custom Scale", "Apply custom scaling to FBX scale, and units scaling to each object transformation"), - ("FBX_SCALE_ALL", "FBX All", "Apply custom scaling and units scaling to FBX scale") - ], - default="FBX_SCALE_NONE" - ) - - ANIM_FBXAxisForward: EnumProperty( - name="Forward", - description="Forward", - items=[ - ("X", "X Forward", "X Forward"), - ("Y", "Y Forward", "Y Forward"), - ("Z", "Z Forward", "Z Forward"), - ("-X", "-X Forward", "-X Forward"), - ("-Y", "-Y Forward", "-Y Forward"), - ("-Z", "-Z Forward", "-Z Forward") - ], - default="-Z" - ) - - ANIM_FBXAxisUp: EnumProperty( - name="Up", - description="Up", - items=[ - ("X", "X Up", "X Up"), - ("Y", "Y Up", "Y Up"), - ("Z", "Z Up", "Z Up"), - ("-X", "-X Up", "-X Up"), - ("-Y", "-Y Up", "-Y Up"), - ("-Z", "-Z Up", "-Z Up") - ], - default="Y" - ) - - ANIM_FBXApplyUnitScale: BoolProperty( - name="Apply Unit", - description="Take into account current Blender units settings (if unset, raw Blender Units values are used as-is)", - default=True - ) - - ANIM_FBXBakeSpaceTransform: BoolProperty( - name="!EXPERIMENTAL! Apply Transform", - description="Bake space transform into object data, avoids getting unwanted rotations to objects when target space is not aligned with Blender’s space (WARNING! experimental option, use at own risks, known broken with armatures/animations)", - default=False - ) - - ## Armature - - ANIM_FBXTabArmature: BoolProperty( - name="Armature", - description="Armature Tab", - default=False - ) - - ANIM_FBXPrimaryBoneAxis: EnumProperty( - name="Primary Bone Axis", - description="Primary Bone Axis", - items=[ - ("X", "X Axis", "X Axis"), - ("Y", "Y Axis", "Y Axis"), - ("Z", "Z Axis", "Z Axis"), - ("-X", "-X Axis", "-X Axis"), - ("-Y", "-Y Axis", "-Y Axis"), - ("-Z", "-Z Axis", "-Z Axis") - ], - default="Y" - ) - - ANIM_FBXSecondaryBoneAxis: EnumProperty( - name="Secondary Bone Axis", - description="Secondary Bone Axis", - items=[ - ("X", "X Axis", "X Axis"), - ("Y", "Y Axis", "Y Axis"), - ("Z", "Z Axis", "Z Axis"), - ("-X", "-X Axis", "-X Axis"), - ("-Y", "-Y Axis", "-Y Axis"), - ("-Z", "-Z Axis", "-Z Axis") - ], - default="X" - ) - - ANIM_FBXArmatureFBXNodeType: EnumProperty( - name="Armature FBXNode Type", - description="FBX type of node (object) used to represent Blender’s armatures (use Null one unless you experience issues with other app, other choices may no import back perfectly in Blender…)", - items=[ - ("NULL", "Null", "‘Null’ FBX node, similar to Blender’s Empty (default)"), - ("ROOT", "Root", "‘Root’ FBX node, supposed to be the root of chains of bones"), - ("LIMBNODE", "LimbNode", "‘LimbNode’ FBX node, regular joint between two bones") - ], - default="NULL" - ) - - ANIM_FBXOnlyDeformBones: BoolProperty( - name="Only Deform Bones", - description="Only write deforming bones (and non-deforming ones when they have deforming children)", - default=False - ) - - ANIM_FBXAddLeafBones: BoolProperty( - name="Add Leaf Bones", - description="Only write deforming bones (and non-deforming ones when they have deforming children)", - default=True - ) - - ## Animation - - ANIM_FBXTabBakeAnimation: BoolProperty( - name="Bake Animation", - description="Bake Animation Tab", - default=False - ) - - ANIM_FBXKeyAllBones: BoolProperty( - name="Key All Bones", - description="Force exporting at least one key of animation for all bones (needed with some target applications, like UE4)", - default=True - ) - - ANIM_FBXForceStartEndKeying: BoolProperty( - name="Force Start/End Keying", - description="Always add a keyframe at start and end of actions for animated channels", - default=True - ) - - ANIM_FBXSamplingRate: FloatProperty( - name="Sampling Rate", - description="How often to evaluate animated values (in frames)", - default=1.0, - min=0.01, - max=100 - ) - - ANIM_FBXSimplify: FloatProperty( - name="Simplify", - description="How much to simplify baked values (0.0 to disable, the higher the more simplified)", - default=1.0, - min=0, - max=100 - ) - - ## Unreal Engine Option - - ## Animation - - ANIM_TabAnimation: BoolProperty( - name="Animation", - description="Animation Tab", - default=False - ) - - ANIM_AnimationLength: EnumProperty( - name="Animation Length", - description="Which animation range to import. The one defined at Exported, at Animated time or define a range manually", - items=[ - ("FBXALIT_EXPORTED_TIME", "Exported Time", "This option imports animation frames based on what is defined at the time of export"), - ("FBXALIT_ANIMATED_KEY", "Animated Time", "Will import the range of frames that have animation. Can be useful if the exported range is longer than the actual animation in the FBX file"), - ("FBXALIT_SET_RANGE", "Set Range", "This will enable the Start Frame and End Frame properties for you to define the frames of animation to import") - ], - default="FBXALIT_EXPORTED_TIME" - ) - - ANIM_ImportMeshesInBoneHierarchy: BoolProperty( - name="Import Meshes in Bone Hierarchy", - description="If checked, meshes nested in bone hierarchies will be imported instead of being converted to bones", - default=True - ) - - def ANIM_UpdateRangeMin(self, context): - if self.ANIM_FrameImportRangeMin > self.ANIM_FrameImportRangeMax: - self.ANIM_FrameImportRangeMax = self.ANIM_FrameImportRangeMin - - ANIM_FrameImportRangeMin: IntProperty( - name="Frame Import Range", - description="Frame range used when Set Range is used in Animation Length", - default=0, - min=0, - update=ANIM_UpdateRangeMin - ) - - def ANIM_UpdateRangeMax(self, context): - if self.ANIM_FrameImportRangeMax < self.ANIM_FrameImportRangeMin: - self.ANIM_FrameImportRangeMin = self.ANIM_FrameImportRangeMax - - ANIM_FrameImportRangeMax: IntProperty( - name="Frame Import Range", - description="Frame range used when Set Range is used in Animation Length", - default=0, - min=0, - update=ANIM_UpdateRangeMax - ) - - ANIM_UseDefaultSampleRate: BoolProperty( - name="Use Default Sample Rate", - description="If enabled, samples all animation curves to 30 FPS", - default=False - ) - - ANIM_CustomSampleRate: IntProperty( - name="Custom Sample Rate", - description="Sample fbx animation data at the specified sample rate, 0 find automaticaly the best sample rate", - default=0, - min=0, - max=60 - ) - - ANIM_ImportCustomAttribute: BoolProperty( - name="Import Custom Attribute", - description="Import if custom attribute as a curve within the animation", - default=True - ) - - ANIM_DeleteExistingCustomAttributeCurves: BoolProperty( - name="Delete Existing Custom Attribute Curves", - description="If true, all previous custom attribute curves will be deleted when doing a re-import", - default=False - ) - - ANIM_ImportBoneTracks: BoolProperty( - name="Import Bone Tracks", - description="Import bone transform tracks. If false, this will discard any bone transform tracks. (useful for curves only animations)", - default=True - ) - - ANIM_SetMaterialDriveParameterOnCustomAttribute: BoolProperty( - name="Set Material Curve Type", - description="Set Material Curve Type for all custom attributes that exists", - default=False - ) - - ANIM_MaterialCurveSuffixes: StringProperty( - name="Material Curve Suffixes", - description="Set Material Curve Type for the custom attribute with the following suffixes. This doesn’t matter if Set Material Curve Type is true", - default="_mat" - ) - - ANIM_RemoveRedundantKeys: BoolProperty( - name="Remove Redundant Keys", - description="When importing custom attribute as curve, remove redundant keys", - default=True - ) - - ANIM_DeleteExistingMorphTargetCurves: BoolProperty( - name="Delete Existing Morph Target Curves", - description="If enabled, this will delete this type of asset from the FBX", - default=False - ) - - ANIM_DoNotImportCurveWithZero: BoolProperty( - name="Do not Import Curve With 0 Values", - description="When importing custom attribute or morphtarget as curve, do not import if it doens’t have any value other than zero. This is to avoid adding extra curves to evaluate", - default=True - ) - - ANIM_PreserveLocalTransform: BoolProperty( - name="Preserve Local Transform", - description="If enabled, this will import a curve within the animation", - default=False - ) - - ## Transform - - ANIM_TabTransform: BoolProperty( - name="Transform", - description="Transform Tab", - default=False - ) - - ANIM_ImportTranslation: FloatVectorProperty( - name="Import Translation", - description="Import Translation", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - ANIM_ImportRotation: FloatVectorProperty( - name="Import Rotation", - description="Import Rotation", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - ANIM_ImportUniformScale: FloatProperty( - name="Import Uniform Scale", - description="Import Uniform Scale", - default=1.0 - ) - - ## Misc. - - ANIM_TabMisc: BoolProperty( - name="Misc.", - description="Miscellaneous Tab", - default=False - ) - - ANIM_ConvertScene: BoolProperty( - name="Convert Scene", - description="Convert the scene from FBX coordinate system to UE4 coordinate system", - default=True - ) - - ANIM_ForceFrontXAxis: BoolProperty( - name="Force Front XAxis", - description="Convert the scene from FBX coordinate system to UE4 coordinate system with front X axis instead of -Y", - default=False - ) - - ANIM_ConvertSceneUnit: BoolProperty( - name="Convert Scene Unit", - description="Convert the scene from FBX unit to UE4 unit (centimeter)", - default=False - ) - - ANIM_OverrideFullName: BoolProperty( - name="Override Full Name", - description="Use the string in “Name” field as full name of mesh. The option only works when the scene contains one mesh", - default=True - ) - - # Retarget Animation - - RETARGET_Presets: CollectionProperty(type=RETARGET_PresetGroup) - - def drawExportTab(self, context): - layout = self.layout - box = layout.box() - # Remote Execution - box.label(text="Remote Execution", icon="FRAME_NEXT") - - col = box.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - col.label(text="Multicast Group Endpoint", icon="DECORATE") - col.label(text="Multicast Bind Address", icon="DECORATE") - col.label(text="Multicast TTL", icon="DECORATE") - - split = split.split() - col = split.column() - # prop - col.prop(self, "multicastGroupEndPoint", text="") - col.prop(self, "multicastBindAddress", text="") - col.prop(self, "multicastTTL", text="") - - # # Export Profile - # box.label(text="Export Profile", icon="FRAME_NEXT") - # col = box.column() - # row = col.row() - # split = row.split(factor=0.5) - # col = split.column() - # # label - # row = col.row(align=True) - # row.label(text="Static Mesh", icon="DECORATE") - # row = col.row(align=True) - # row.label(text="Character (Skeletal Mesh)", icon="DECORATE") - # row = col.row(align=True) - # row.label(text="Animation", icon="DECORATE") - - # split = split.split() - # col = split.column() - # # prop - # row = col.row(align=True) - # row.operator("wm.url_open",icon="IMPORT", text="Import") - # row.operator("wm.url_open",icon="EXPORT", text="Export") - # row = col.row(align=True) - # row.operator("wm.url_open",icon="IMPORT", text="Import") - # row.operator("wm.url_open",icon="EXPORT", text="Export") - # row = col.row(align=True) - # row.operator("wm.url_open",icon="IMPORT", text="Import") - # row.operator("wm.url_open",icon="EXPORT", text="Export") - - def drawRetargetTab(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - box = layout.box() - - col = box.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - col.label(text="Retarget Preset", icon="FRAME_NEXT") - - split = split.split() - col = split.row(align=True) - # prop - col.operator("ue4workspace.addretargetpreset", text="New", icon="PRESET_NEW") - col.operator("ue4workspace.importretargetpreset", text="Import", icon="IMPORT") - - for indexPreset, preset in enumerate(preferences.RETARGET_Presets): - col = box.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.prop(preset, "show_expanded", icon=("TRIA_RIGHT", "TRIA_DOWN")[preset.show_expanded], emboss=False, text="") - row.prop(preset, "name", text="") - split = split.split() - col = split.row(align=True) - # prop - col.operator("ue4workspace.duplicateretargetpreset", text="Duplicate", icon="DUPLICATE").index = indexPreset - col.operator("ue4workspace.exportretargetpreset", text="Export", icon="EXPORT").index = indexPreset - col.operator("ue4workspace.removeretargetpreset", text="Remove", icon="TRASH").index = indexPreset - - if preset.show_expanded: - row = box.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="", icon="DECORATE") - row.scale_y = 2 - row.prop(preset, "description", text="") - - col = box.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="", icon="DECORATE") - row.prop(preset, "ParentBonesShowExpanded", icon=("TRIA_RIGHT", "TRIA_DOWN")[preset.ParentBonesShowExpanded], emboss=False, text="") - row.label(text="Parent Bone") - split = split.split() - col = split.row(align=True) - # prop - col.operator("ue4workspace.addparentboneretargetpreset", text="Add Bone", icon="BONE_DATA").indexPreset = indexPreset - col.operator("ue4workspace.clearparentboneretargetpreset", text="Clear", icon="TRASH").indexPreset = indexPreset - - parentBones = preset.ParentBones - if preset.ParentBonesShowExpanded: - if not parentBones: - box.box().operator("ue4workspace.addparentboneretargetpreset", text="Add Bone", icon="BONE_DATA").indexPreset = indexPreset - # if context.mode == "POSE" and len(context.selected_pose_bones) > 1: - # selectedBones = context.selected_pose_bones - # box.box().operator("ue4workspace.addsetparentboneretargetpreset", text="Add Bone (" + selectedBones[1].name + " > " + selectedBones[0].name + ")", icon="BONE_DATA").indexPreset = indexPreset - else: - for indexBone, parentBone in enumerate(parentBones): - subBox = box.box() - col = subBox.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - row = col.row(align=True) - row.prop(parentBone, "show_expanded", icon=("TRIA_RIGHT", "TRIA_DOWN")[parentBone.show_expanded], emboss=False, text="") - row.prop(parentBone, "name", text="") - split = split.split() - col = split.row(align=True) - # prop - op = col.operator("ue4workspace.duplicateparentboneretargetpreset", text="Duplicate", icon="DUPLICATE") - op.indexPreset = indexPreset - op.indexBone = indexBone - col.operator("ue4workspace.addparentboneretargetpreset", text="Add Bone", icon="BONE_DATA").indexPreset = indexPreset - op = col.operator("ue4workspace.removeparentboneretargetpreset", text="Remove", icon="TRASH") - op.indexPreset = indexPreset - op.indexBone = indexBone - - if parentBone.show_expanded: - col = subBox.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - col = col.column() - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Bone") - - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Parent") - - split = split.split() - col = split.column() - # prop - row = col.row(align=True) - row.prop(parentBone, "bone", text="", icon="BONE_DATA") - row = col.row(align=True) - row.prop(parentBone, "parent", text="", icon="BONE_DATA") - - # if context.mode == "POSE" and len(context.selected_pose_bones) > 1: - # selectedBones = context.selected_pose_bones - # box.box().operator("ue4workspace.addsetparentboneretargetpreset", text="Add Bone (" + selectedBones[1].name + " > " + selectedBones[0].name + ")", icon="BONE_DATA").indexPreset = indexPreset - - col = box.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="", icon="DECORATE") - row.prop(preset, "AxisMapsShowExpanded", icon=("TRIA_RIGHT", "TRIA_DOWN")[preset.AxisMapsShowExpanded], emboss=False, text="") - row.label(text="Bone Map") - split = split.split() - col = split.row(align=True) - # prop - col.operator("ue4workspace.addboneretargetpreset", text="Add Bone", icon="BONE_DATA").indexPreset = indexPreset - col.operator("ue4workspace.clearboneretargetpreset", text="Clear", icon="TRASH").indexPreset = indexPreset - - bones = preset.AxisMaps - if preset.AxisMapsShowExpanded: - if not bones: - box.box().operator("ue4workspace.addboneretargetpreset", text="Add Bone", icon="BONE_DATA").indexPreset = indexPreset - if context.mode == "POSE" and len(context.selected_pose_bones) > 1: - selectedBones = context.selected_pose_bones - box.box().operator("ue4workspace.addsetboneretargetpreset", text="Add Bone (" + selectedBones[1].name + " > " + selectedBones[0].name + ")", icon="BONE_DATA").indexPreset = indexPreset - else: - for indexBone, bone in enumerate(bones): - subBox = box.box() - col = subBox.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - row = col.row(align=True) - row.prop(bone, "show_expanded", icon=("TRIA_RIGHT", "TRIA_DOWN")[bone.show_expanded], emboss=False, text="") - row.prop(bone, "name", text="") - split = split.split() - col = split.row(align=True) - # prop - op = col.operator("ue4workspace.duplicateboneretargetpreset", text="Duplicate", icon="DUPLICATE") - op.indexPreset = indexPreset - op.indexBone = indexBone - col.operator("ue4workspace.addboneretargetpreset", text="Add Bone", icon="BONE_DATA").indexPreset = indexPreset - op = col.operator("ue4workspace.removeboneretargetpreset", text="Remove", icon="TRASH") - op.indexPreset = indexPreset - op.indexBone = indexBone - - if bone.show_expanded: - col = subBox.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - col = col.column() - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Bone Target") - - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Bone Source") - - if context.mode == "POSE": - row = col.row(align=True) - row.label(text="") - row.label(text="") - - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Transform") - - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Axis X") - - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Axis Y") - - row = col.row(align=True) - row.label(text="", icon="DECORATE") - row.label(text="Axis Z") - - split = split.split() - col = split.column() - # prop - row = col.row(align=True) - row.prop(bone, "boneTarget", text="", icon="BONE_DATA") - row = col.row(align=True) - row.prop(bone, "boneSource", text="", icon="BONE_DATA") - if context.mode == "POSE": - row = col.row(align=True) - op = row.operator("ue4workspace.setbonetargetandsource", text="Set Target and Source", icon="BONE_DATA") - op.indexPreset = indexPreset - op.indexBone = indexBone - row = col.row(align=True) - for i, name in enumerate(["Rotation", "Location", "Scale"]): - row.prop(bone, "transform", index=i, text=name, toggle=True) - row = col.row(align=True) - row.prop(bone, "axisX", text="") - row = col.row(align=True) - row.prop(bone, "axisY", text="") - row = col.row(align=True) - row.prop(bone, "axisZ", text="") - - if context.mode == "POSE" and len(context.selected_pose_bones) > 1: - selectedBones = context.selected_pose_bones - box.box().operator("ue4workspace.addsetboneretargetpreset", text="Add Bone (" + selectedBones[1].name + " > " + selectedBones[0].name + ")", icon="BONE_DATA").indexPreset = indexPreset - - def drawMiscTab(self, context): - layout = self.layout - box = layout.box() - - col = box.column() - row = col.row() - split = row.split(factor=0.5) - col = split.column() - # label - col.label(text="Development Mode") - col.label(text="Experimental Features") - - split = split.split() - col = split.column() - # prop - col.prop(self, "devMode", text="") - col.prop(self, "experimentalFeatures", text="") - - def draw(self, context): - layout = self.layout - - warn = layout.box() - warn.alert = True - warn.scale_y = 2 - warn.label(text="Remember to export all retarget preset before you remove or disable the add-on") - layout.row().prop(self, "preferencesTab", expand=True) - - drawPreferencesTab = { - "EXPORT": self.drawExportTab, - "RETARGET": self.drawRetargetTab, - "MISC": self.drawMiscTab - } - - drawPreferencesTab = drawPreferencesTab.get(self.preferencesTab, None) - if drawPreferencesTab is not None: - drawPreferencesTab(context) - -# OPERATOR - -# TODO: Refactor Code - -class OP_ImportRetagetPreset(Operator, ImportHelper): - """Import Retarget Preset From JSON File""" - bl_idname = "ue4workspace.importretargetpreset" - bl_label = "Import Retarget Preset" - - filename_ext = ".json" - - filter_glob: StringProperty( - default="*.json", - options={"HIDDEN"}, - maxlen=255 - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - presets = preferences.RETARGET_Presets - - file = open(self.filepath, "r") - jsonString = file.read() - file.close() - jsonPreset = json.loads(jsonString).get("RetargetPreset") - if jsonPreset: - for index, preset in enumerate(jsonPreset): - newPreset = presets.add() - newPreset.name = preset["name"] - newPreset.description = preset["description"] - newPreset.flag = int(time.time()) + index - for bone in preset["parentBone"]: - newParent = newPreset.ParentBones.add() - newParent.name = bone["name"] - newParent.bone = bone["bone"] - newParent.parent = bone["parent"] - for bone in preset["mappingBone"]: - newBone = newPreset.AxisMaps.add() - newBone.name = bone["name"] - newBone.boneTarget = bone["target"] - newBone.boneSource = bone["source"] - newBone.transform = tuple(bone["transform"]) - newBone.axisX = bone["axisX"] - newBone.axisY = bone["axisY"] - newBone.axisZ = bone["axisZ"] - newBone.expression = bone["expression"] - self.report({"INFO"}, "Import Preset Successful") - else: - self.report({"WARNING"}, "Import Preset Not Found") - return {"FINISHED"} - -class OP_AddRetagetPreset(Operator): - bl_idname = "ue4workspace.addretargetpreset" - bl_label = "Add Retarget Preset" - bl_description = "Add Retarget Preset" - bl_options = {"UNDO"} - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - duplicateCheck = [preset for preset in preferences.RETARGET_Presets if preset.name.startswith("Preset")] - newPreset = preferences.RETARGET_Presets.add() - newPreset.name = "Preset" + (str(len(duplicateCheck) + 1) if len(duplicateCheck) != 0 else "") - newPreset.flag = int(time.time()) - return {"FINISHED"} - -class OP_ExportRetagetPreset(Operator, ExportHelper): - """Export Retarget Preset Into JSON File""" - bl_idname = "ue4workspace.exportretargetpreset" - bl_label = "Export Retarget Preset" - - filename_ext = ".json" - - filter_glob: StringProperty( - default="*.json", - options={"HIDDEN"}, - maxlen=255 - ) - - index: IntProperty( - default=0, - options={"HIDDEN"} - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.index] - - buildStringJSON = { - "RetargetPreset": [ - { - "name": preset.name, - "description": preset.description, - "parentBone": [{ - "name": bone.name, - "bone": bone.bone, - "parent": bone.parent - } for bone in preset.ParentBones], - "mappingBone": [{ - "name": bone.name, - "target": bone.boneTarget, - "source": bone.boneSource, - "transform": list(bone.transform), - "axisX": bone.axisX, - "axisY": bone.axisY, - "axisZ": bone.axisZ, - "expression": bone.expression - } for bone in preset.AxisMaps] - } - ] - } - - file = open(self.filepath, "w+") - file.write(json.dumps(buildStringJSON, indent=4)) - file.close() - - self.report({"INFO"}, "Export Preset Successful") - return {"FINISHED"} - -class OP_DuplicateRetagetPreset(Operator): - bl_idname = "ue4workspace.duplicateretargetpreset" - bl_label = "Duplicate Retarget Preset" - bl_description = "Duplicate Retarget Preset" - bl_options = {"UNDO"} - - index: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - presets = preferences.RETARGET_Presets - preset = presets[self.index] - newPreset = presets.add() - newPreset.name = "dup " + preset.name - newPreset.description = preset.description - newPreset.flag = int(time.time()) - ParentBones = newPreset.ParentBones - for parent in preset.ParentBones: - newParent = ParentBones.add() - newParent.name = parent.name - newParent.bone = parent.bone - newParent.parent = parent.parent - AxisMaps = newPreset.AxisMaps - for bone in preset.AxisMaps: - newBone = AxisMaps.add() - newBone.name = bone.name - newBone.boneTarget = bone.boneTarget - newBone.boneSource = bone.boneSource - newBone.transform = bone.transform - newBone.axisX = bone.axisX - newBone.axisY = bone.axisY - newBone.axisZ = bone.axisZ - newBone.expression = bone.expression - return {"FINISHED"} - -class OP_RemoveRetagetPreset(Operator): - bl_idname = "ue4workspace.removeretargetpreset" - bl_label = "Remove Retarget Preset" - bl_description = "Remove Retarget Preset" - bl_options = {"UNDO"} - - index: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preferences.RETARGET_Presets.remove(self.index) - return {"FINISHED"} - -class OP_ClearParentBoneFromRetagetPreset(Operator): - bl_idname = "ue4workspace.clearparentboneretargetpreset" - bl_label = "Clear Parent Bone From Retaget Preset" - bl_description = "Clear Parent Bone From Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - ParentBones = preset.ParentBones - ParentBones.clear() - self.report({"INFO"}, "Clear Parent Bone Successful") - return {"FINISHED"} - -class OP_DuplicateParentBoneFromRetagetPreset(Operator): - bl_idname = "ue4workspace.duplicateparentboneretargetpreset" - bl_label = "Duplicate Parent Bone From Retaget Preset" - bl_description = "Duplicate Parent Bone From Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - indexBone: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - ParentBone = preset.ParentBones[self.indexBone] - newParent = preset.ParentBones.add() - newParent.name = "dup " +ParentBone.name - newParent.bone = ParentBone.bone - newParent.parent = ParentBone.parent - return {"FINISHED"} - -class OP_AddParentBoneToRetagetPreset(Operator): - bl_idname = "ue4workspace.addparentboneretargetpreset" - bl_label = "Add Parent Bone To Retaget Preset" - bl_description = "Add Parent Bone To Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - ParentBones = preset.ParentBones - duplicateCheck = [parent for parent in ParentBones if parent.name.startswith("Bone")] - newParent = ParentBones.add() - newParent.name = "Bone" + (str(len(duplicateCheck) + 1) if len(duplicateCheck) != 0 else "") - return {"FINISHED"} - -class OP_AddSetParentBoneToRetagetPreset(Operator): - bl_idname = "ue4workspace.addsetparentboneretargetpreset" - bl_label = "Add and Set Parent Bone To Retaget Preset" - bl_description = "Add and Set Parent Bone To Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - - @classmethod - def poll(self, context): - return context.mode == "POSE" and len(context.selected_pose_bones) > 1 - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - ParentBones = preset.ParentBones - selectedBones = context.selected_pose_bones - newParent = ParentBones.add() - newParent.name = selectedBones[1].name - newParent.bone = selectedBones[1].name - newParent.parent = selectedBones[0].name - return {"FINISHED"} - -class OP_RemoveParentBoneFromRetagetPreset(Operator): - bl_idname = "ue4workspace.removeparentboneretargetpreset" - bl_label = "Remove Parent Bone From Retaget Preset" - bl_description = "Remove Parent Bone From Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - indexBone: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - ParentBones = preset.ParentBones - ParentBones.remove(self.indexBone) - return {"FINISHED"} - -class OP_ClearBoneFromRetagetPreset(Operator): - bl_idname = "ue4workspace.clearboneretargetpreset" - bl_label = "Clear Bone From Retaget Preset" - bl_description = "Clear Bone From Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - AxisMaps = preset.AxisMaps - AxisMaps.clear() - self.report({"INFO"}, "Clear Bone Successful") - return {"FINISHED"} - -class OP_DuplicateBoneToRetagetPreset(Operator): - bl_idname = "ue4workspace.duplicateboneretargetpreset" - bl_label = "Duplicate Bone To Retaget Preset" - bl_description = "Duplicate Bone To Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - indexBone: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - AxisMap = preset.AxisMaps[self.indexBone] - newBone = preset.AxisMaps.add() - newBone.name = "dup " + AxisMap.name - newBone.transform = AxisMap.transform - newBone.boneTarget = AxisMap.boneTarget - newBone.boneSource = AxisMap.boneSource - newBone.axisX = AxisMap.axisX - newBone.axisY = AxisMap.axisY - newBone.axisZ = AxisMap.axisZ - newBone.expression = AxisMap.expression - return {"FINISHED"} - -class OP_AddBoneToRetagetPreset(Operator): - bl_idname = "ue4workspace.addboneretargetpreset" - bl_label = "Add Bone To Retaget Preset" - bl_description = "Add Bone To Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - AxisMaps = preset.AxisMaps - duplicateCheck = [bone for bone in AxisMaps if bone.name.startswith("Bone")] - newBone = AxisMaps.add() - newBone.name = "Bone" + (str(len(duplicateCheck) + 1) if len(duplicateCheck) != 0 else "") - return {"FINISHED"} - -class OP_AddSetBoneToRetagetPreset(Operator): - bl_idname = "ue4workspace.addsetboneretargetpreset" - bl_label = "Add and Set Bone To Retaget Preset" - bl_description = "Add and Set Bone To Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - - @classmethod - def poll(self, context): - return context.mode == "POSE" and len(context.selected_pose_bones) > 1 - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - AxisMaps = preset.AxisMaps - selectedBones = context.selected_pose_bones - newBone = AxisMaps.add() - newBone.name = selectedBones[1].name - newBone.boneTarget = selectedBones[1].name - newBone.boneSource = selectedBones[0].name - return {"FINISHED"} - -class OP_RemoveBoneFromRetagetPreset(Operator): - bl_idname = "ue4workspace.removeboneretargetpreset" - bl_label = "Remove Bone From Retaget Preset" - bl_description = "Remove Bone From Retaget Preset" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - indexBone: IntProperty(default=0) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - AxisMaps = preset.AxisMaps - AxisMaps.remove(self.indexBone) - return {"FINISHED"} - -class OP_SetBoneTargetAndSource(Operator): - bl_idname = "ue4workspace.setbonetargetandsource" - bl_label = "Set Bone Target and Source" - bl_description = "Set Bone Target and Source" - bl_options = {"UNDO"} - - indexPreset: IntProperty(default=0) - indexBone: IntProperty(default=0) - - @classmethod - def poll(self, context): - return context.mode == "POSE" and len(context.selected_pose_bones) > 1 - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - preset = preferences.RETARGET_Presets[self.indexPreset] - AxisMap = preset.AxisMaps[self.indexBone] - selectedBones = context.selected_pose_bones - AxisMap.boneTarget = selectedBones[1].name - AxisMap.boneSource = selectedBones[0].name - return {"FINISHED"} - -# operator export - -Ops = [ - OP_ImportRetagetPreset, - OP_AddRetagetPreset, - OP_ExportRetagetPreset, - OP_DuplicateRetagetPreset, - OP_RemoveRetagetPreset, - OP_ClearParentBoneFromRetagetPreset, - OP_DuplicateParentBoneFromRetagetPreset, - OP_AddParentBoneToRetagetPreset, - OP_AddSetParentBoneToRetagetPreset, - OP_RemoveParentBoneFromRetagetPreset, - OP_ClearBoneFromRetagetPreset, - OP_DuplicateBoneToRetagetPreset, - OP_AddBoneToRetagetPreset, - OP_AddSetBoneToRetagetPreset, - OP_RemoveBoneFromRetagetPreset, - OP_SetBoneTargetAndSource -] \ No newline at end of file diff --git a/UE4WS_StaticMesh.py b/UE4WS_StaticMesh.py deleted file mode 100644 index b861f86..0000000 --- a/UE4WS_StaticMesh.py +++ /dev/null @@ -1,643 +0,0 @@ -import os -import json -import time -import re -import bpy -from bpy.props import (EnumProperty, StringProperty) -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_StaticMeshPanel" - bl_label = "Static Mesh" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - @classmethod - def poll(self, context): - return (context.mode == "OBJECT") - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Subfolder") - split = split.split() - col = split.column() - col.prop(preferences, "SM_Subfolder", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Custom Collision") - split = split.split() - col = split.column() - col.prop(preferences, "SM_CustomCollision", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Socket") - split = split.split() - col = split.column() - col.prop(preferences, "SM_Socket", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Level of Detail") - split = split.split() - col = split.column() - col.prop(preferences, "SM_LOD", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Overwrite File") - split = split.split() - col = split.column() - col.prop(preferences, "SM_OverwriteFile", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Export Mesh Option") - split = split.split() - col = split.column() - col.prop(preferences, "SM_ExportMeshOption", text="") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Mesh Origin") - split = split.split() - col = split.column() - col.prop(preferences, "SM_MeshOrigin", text="") - - row = layout.row() - row.scale_y = 1.5 - row.operator("ue4workspace.exportstaticmesh",icon="MESH_CUBE", text="Export") - - col = layout.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.prop(preferences, "SM_ExportProfile", text="") - split = split.split() - row = split.row(align=True) - row.alignment = "RIGHT" - row.operator("ue4workspace.smupdateexportprofile",icon="GREASEPENCIL", text="") - row.operator("ue4workspace.smcreateexportprofile",icon="FILE_NEW", text="") - row.operator("ue4workspace.smremoveexportprofile",icon="TRASH", text="") - - -# OPERATOR - -class OP_SMUpdateExportProfile(Operator): - bl_idname = "ue4workspace.smupdateexportprofile" - bl_label = "Static Mesh Update Export Profile" - bl_description = "Update Current Export Profile" - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return not preferences.SM_IsProfileLock - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - - for key in ["SM_FBXGlobalScale", "SM_FBXApplyScaleOptions","SM_FBXAxisForward","SM_FBXAxisUp", "SM_FBXApplyUnitScale", "SM_FBXBakeSpaceTransform", "SM_FBXMeshSmoothType", "SM_FBXUseSubsurf", "SM_FBXUseMeshModifiers", "SM_FBXUseMeshEdges", "SM_FBXUseTSpace"]: - jsonSetting["staticMesh"][preferences.SM_ExportProfile]["FBX"][key] = getattr(preferences, key) - - for key in [ - "SM_AutoGenerateCollision", - "SM_VertexColorImportOption", - "SM_VertexOverrideColor", - "SM_RemoveDegenerates", - "SM_BuildAdjacencyBuffer", - "SM_BuildReversedIndexBuffer", - "SM_GenerateLightmapsUVs", - "SM_OneConvexHullPerUCX", - "SM_CombineMeshes", - "SM_TransformVertexToAbsolute", - "SM_BakePivotInVertex", - "SM_ImportMeshLODs", - "SM_NormalImportMethod", - "SM_NormalGenerationMethod", - "SM_ComputeWeightedNormals", - "SM_ImportTranslation", - "SM_ImportRotation", - "SM_ImportUniformScale", - "SM_ConvertScene", - "SM_ForceFrontXAxis", - "SM_ConvertSceneUnit", - "SM_OverrideFullName", - "SM_AutoComputeLODScreenSize", - "SM_LODDistance0", - "SM_LODDistance1", - "SM_LODDistance2", - "SM_LODDistance3", - "SM_LODDistance4", - "SM_LODDistance5", - "SM_LODDistance6", - "SM_LODDistance7", - "SM_MinimumLODNumber", - "SM_NumberOfLODs", - "SM_MaterialSearchLocation", - "SM_ImportMaterial", - "SM_ImportTexture", - "SM_InvertNormalMaps", - "SM_ReorderMaterialToFBXOrder" - ]: - jsonSetting["staticMesh"][preferences.SM_ExportProfile]["UNREALENGINE"][key] = list(getattr(preferences, key)) if (key in ["SM_VertexOverrideColor", "SM_ImportTranslation", "SM_ImportRotation"]) else getattr(preferences, key) - - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Update Profile Success") - except Exception: - pass - return {"FINISHED"} - -class OP_SMCreateExportProfile(Operator): - bl_idname = "ue4workspace.smcreateexportprofile" - bl_label = "Static Mesh Create Export Profile" - bl_description = "Create Export Profile Base On Current Setting" - - name: StringProperty( - name = "Name Profile", - description = "Name Profile", - default = "" - ) - - description: StringProperty( - name = "Description", - description = "Description Profile", - default = "" - ) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - if(self.name): - setting = { - "name": self.name, - "description": self.description, - "lock": False, - "FBX": {}, - "UNREALENGINE": {} - } - for key in ["SM_FBXGlobalScale", "SM_FBXApplyScaleOptions","SM_FBXAxisForward","SM_FBXAxisUp", "SM_FBXApplyUnitScale", "SM_FBXBakeSpaceTransform", "SM_FBXMeshSmoothType", "SM_FBXUseSubsurf", "SM_FBXUseMeshModifiers", "SM_FBXUseMeshEdges", "SM_FBXUseTSpace"]: - setting["FBX"][key] = getattr(preferences, key) - - for key in [ - "SM_AutoGenerateCollision", - "SM_VertexColorImportOption", - "SM_VertexOverrideColor", - "SM_RemoveDegenerates", - "SM_BuildAdjacencyBuffer", - "SM_BuildReversedIndexBuffer", - "SM_GenerateLightmapsUVs", - "SM_OneConvexHullPerUCX", - "SM_CombineMeshes", - "SM_TransformVertexToAbsolute", - "SM_BakePivotInVertex", - "SM_ImportMeshLODs", - "SM_NormalImportMethod", - "SM_NormalGenerationMethod", - "SM_ComputeWeightedNormals", - "SM_ImportTranslation", - "SM_ImportRotation", - "SM_ImportUniformScale", - "SM_ConvertScene", - "SM_ForceFrontXAxis", - "SM_ConvertSceneUnit", - "SM_OverrideFullName", - "SM_AutoComputeLODScreenSize", - "SM_LODDistance0", - "SM_LODDistance1", - "SM_LODDistance2", - "SM_LODDistance3", - "SM_LODDistance4", - "SM_LODDistance5", - "SM_LODDistance6", - "SM_LODDistance7", - "SM_MinimumLODNumber", - "SM_NumberOfLODs", - "SM_MaterialSearchLocation", - "SM_ImportMaterial", - "SM_ImportTexture", - "SM_InvertNormalMaps", - "SM_ReorderMaterialToFBXOrder" - ]: - setting["UNREALENGINE"][key] = list(getattr(preferences, key)) if (key in ["SM_VertexOverrideColor", "SM_ImportTranslation", "SM_ImportRotation"]) else getattr(preferences, key) - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - timestamp = int(time.time()) - jsonSetting["staticMesh"][timestamp] = setting - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - - preferences.SM_ExportProfile = str(timestamp) - - self.report({"INFO"}, "Create Profile Success") - return {"FINISHED"} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width = 250) - -class OP_SMRemoveExportProfile(Operator): - bl_idname = "ue4workspace.smremoveexportprofile" - bl_label = "Static Mesh Remove Export Profile" - bl_description = "Remove Current Export Profile" - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - return not preferences.SM_IsProfileLock - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - jsonSetting = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "r").read() - jsonSetting = json.loads(jsonSetting) - del jsonSetting["staticMesh"][preferences.SM_ExportProfile] - # Save profile export into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "exportProfile.json"), "w+") - file.write(json.dumps(jsonSetting, indent=4)) - file.close() - preferences.SM_ExportProfile = "UNREAL_ENGINE" - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Remove Profile Success") - except Exception: - pass - return {"FINISHED"} - -class OP_ExportStaticMesh(Operator): - bl_idname = "ue4workspace.exportstaticmesh" - bl_label = "UE4Workspace Operator" - bl_description = "Export Static Mesh" - - remote = None - - @classmethod - def description(self, context, properties): - preferences = context.preferences.addons[__package__].preferences - description = "Export Static Mesh" - - # Check folder for validation - if preferences.exportOption in ["FBX", "BOTH"]: - return ("FBX folder not valid", description)[bool(preferences.ExportFBXFolder.strip())] - return ("Temporary folder not valid", description)[bool(preferences.TempFolder.strip())] - - @classmethod - def poll(self, context): - preferences = context.preferences.addons[__package__].preferences - - # Check folder for validation - if preferences.exportOption in ["FBX", "BOTH"]: - return bool(preferences.ExportFBXFolder.strip()) - return bool(preferences.TempFolder.strip()) - - def execute(self, context): - preferences = context.preferences.addons[__package__].preferences - selectedObjects = context.selected_objects - objects = (selectedObjects, context.scene.objects)[preferences.SM_ExportMeshOption == "ALL"] - # Filter object for mesh, object is not collision, object is not lod, and mesh does not have ARMATURE modifiers - objects = [obj for obj in objects if obj.type == "MESH" and not obj.get("isCollision") and not obj.data.objectAsLOD and not "ARMATURE" in [mod.type for mod in obj.modifiers]] - - # Deselect all object - bpy.ops.object.select_all(action="DESELECT") - - subFolder = re.sub("[\\/:<>\'\"|?*&]", "", preferences.SM_Subfolder).strip() - directory = os.path.join((preferences.TempFolder, preferences.ExportFBXFolder)[preferences.exportOption in ["FBX","BOTH"]], subFolder) - - arrMeshObject = [] - - # Check Subfolder if exist, if not will make new folder - if not os.path.isdir(directory) and subFolder: - os.mkdir(directory) - - # Collision Collection - collisionCollection = bpy.data.collections.get("UE4CustomCollision", False) - collisionHideProp = { - "render": None, - "select": None, - "viewport": None - } - # Unhide collision collection - if (collisionCollection and preferences.SM_CustomCollision): - for key in collisionHideProp: - collisionHideProp[key] = getattr(collisionCollection, "hide_" + key) - setattr(collisionCollection, "hide_" + key, False) - - # Socket Collection - socketCollection = bpy.data.collections.get("UE4Socket", False) - socketHideProp = { - "render": None, - "select": None, - "viewport": None - } - # Unhide socket collection - if (socketCollection and preferences.SM_Socket): - for key in socketHideProp: - socketHideProp[key] = getattr(socketCollection, "hide_" + key) - setattr(socketCollection, "hide_" + key, False) - - for obj in objects: - # Remove invalid character for filename - filename = re.sub("[\\/:<>\'\"|?*&]", "", obj.name).strip() - # Check duplicate from arrMeshObject - checkDuplicate = len([obj for obj in arrMeshObject if obj["name"].startswith(filename)]) - # Add number if have duplicate name - filename += ("", "_" + str(checkDuplicate) )[bool(checkDuplicate)] - - # Check if file alredy exist and overwrite - if not os.path.isfile(os.path.join(directory, filename + ".fbx")) or preferences.SM_OverwriteFile: - - # Collision name - collName = "UCX_" + obj.name + "_" - # Collision filter from scene objects - parent = obj - collObjects = [obj for obj in context.scene.objects if obj.get("isCollision") and obj.parent is parent] - # Collision array for information [name, location, disable select, hide_viewport, hide] - collArrInfo = [] - - if preferences.SM_CustomCollision and collObjects: - for index, collObj in enumerate(collObjects, start=1): - collArrInfo.append([collObj.name, collObj.location.copy(), collObj.hide_select, collObj.hide_viewport, collObj.hide_get()]) - # Select object - collObj.hide_set(False) - collObj.hide_select = False - collObj.hide_viewport = False - collObj.select_set(state=True) - # Rename object - collObj.name = collName + ("", "0")[index <= 9] + str(index) - if collObj.parent is None or collObj.parent is not obj: - if preferences.SM_MeshOrigin == "OBJECT": - # Reset location - collObj.location = (0, 0, 0) - - # Socket filter from children objects - socketObjects = [obj for obj in obj.children if obj.type == "EMPTY" and obj.get("isSocket")] - # Socket array for information [disable select, hide_viewport, hide] - socketArrInfo = [] - - if preferences.SM_Socket and socketObjects: - for index, socketObj in enumerate(socketObjects, start=1): - socketArrInfo.append([socketObj.hide_select, socketObj.hide_viewport, socketObj.hide_get()]) - # Select object - socketObj.hide_set(False) - socketObj.hide_select = False - socketObj.hide_viewport = False - socketObj.select_set(state=True) - # Scale - for index, val in enumerate(socketObj.scale): - socketObj.scale[index] = val / 100 - # Rotate - socketObj.rotation_euler[0] = abs(socketObj.rotation_euler[0]) if (socketObj.rotation_euler[0] < 0) else -abs(socketObj.rotation_euler[0]) - socketObj.rotation_euler[1] = abs(socketObj.rotation_euler[1]) if (socketObj.rotation_euler[1] < 0) else -abs(socketObj.rotation_euler[1]) - socketObj.rotation_euler[2] -= 3.14159 - # Rename object - socketObj.name = "SOCKET_" + socketObj.name - - # attach constraint - constraint = obj.constraints.get("AttachTo") - constraintMute = False - if constraint: - constraintMute = constraint.mute - constraint.mute = True - - # Copy original location for mesh origin by object - originalLocation = obj.location.copy() - if preferences.SM_MeshOrigin == "OBJECT": - # Reset location - obj.location = (0, 0, 0) - - # LOD - # lod filter from object data - lodStructObjects = [(lod.obj, lod.screenSize) for lod in obj.data.LODs if lod.obj] - # lod array for information (obj) - lodArrInfo = [] - objOriginalParent = obj.parent - LOD = None - if preferences.SM_LOD and bool(lodStructObjects): - LOD = bpy.data.objects.new("LOD_" + obj.name, None) - context.collection.objects.link(LOD) - LOD.empty_display_size = 2 - LOD.empty_display_type = "ARROWS" - LOD["fbx_type"] = "LodGroup" - LOD.select_set(state=True) - obj.parent = LOD - for lodObj, screenSize in lodStructObjects: - lodObjCopy = lodObj.copy() - context.collection.objects.link(lodObjCopy) - lodArrInfo.append(lodObjCopy) - # Select object - lodObjCopy.hide_set(False) - lodObjCopy.hide_select = False - lodObjCopy.hide_viewport = False - lodObjCopy.select_set(state=True) - if preferences.SM_MeshOrigin == "OBJECT": - lodObjCopy.location = (0, 0, 0) - lodObjCopy.parent = LOD - - # Select current object - obj.select_set(state=True) - - # Export mesh option - bpy.ops.export_scene.fbx( - filepath= os.path.join(directory, filename + ".fbx"), - check_existing=False, - filter_glob="*.fbx", - use_selection=True, - use_active_collection=False, - global_scale=preferences.SM_FBXGlobalScale, - apply_unit_scale=preferences.SM_FBXApplyUnitScale, - apply_scale_options=preferences.SM_FBXApplyScaleOptions, - bake_space_transform=preferences.SM_FBXBakeSpaceTransform, - object_types={"MESH", "EMPTY"}, - use_mesh_modifiers=preferences.SM_FBXUseMeshModifiers, - mesh_smooth_type=preferences.SM_FBXMeshSmoothType, - use_subsurf=preferences.SM_FBXUseSubsurf, - use_mesh_edges=preferences.SM_FBXUseMeshEdges, - use_tspace=preferences.SM_FBXUseTSpace, - use_custom_props=True, - bake_anim=False, - path_mode="AUTO", - embed_textures=False, - batch_mode="OFF", - axis_forward=preferences.SM_FBXAxisUp, - axis_up=preferences.SM_FBXAxisForward - ) - - arrMeshObject.append({ - "name": filename, - # Check if have "Lightmap" UV - "custom_uv": "Lightmap" in [uv.name for uv in obj.data.uv_layers], - "custom_collision": (preferences.SM_CustomCollision and bool(collObjects)), - "lod": ([obj.data.LOD0ScreenSize] + [screenSize for lodObj,screenSize in lodStructObjects]) if (preferences.SM_LOD and bool(lodStructObjects)) else [], - "auto_compute_lod_distances": obj.data.AutoComputeLODScreenSize - }) - - # restore LOD - if preferences.SM_LOD and bool(lodStructObjects): - obj.parent = objOriginalParent - for lodObj in lodArrInfo: - bpy.data.objects.remove(lodObj, do_unlink=True) - bpy.data.objects.remove(LOD, do_unlink=True) - - if preferences.SM_MeshOrigin == "OBJECT": - # Set location object back to original - obj.location = originalLocation - # Deselect current object - obj.select_set(state=False) - - # restore collision - if preferences.SM_CustomCollision and collObjects: - for index, collObj in enumerate(collObjects, start=0): - # deselect object - collObj.hide_set(collArrInfo[index][4]) - collObj.select_set(state=False) - collObj.hide_select = collArrInfo[index][2] - collObj.hide_viewport = collArrInfo[index][3] - # Rename object - collObj.name = collArrInfo[index][0] - if collObj.parent is None or collObj.parent is not obj: - if preferences.SM_MeshOrigin == "OBJECT": - # Reset location - collObj.location = collArrInfo[index][1] - - # restore socket - if preferences.SM_Socket and socketObjects: - for index, socketObj in enumerate(socketObjects, start=0): - # deselect object - socketObj.hide_set(socketArrInfo[index][2]) - socketObj.select_set(state=False) - socketObj.hide_select = socketArrInfo[index][0] - socketObj.hide_viewport = socketArrInfo[index][1] - # Scale - for index, val in enumerate(socketObj.scale): - socketObj.scale[index] = val * 100 - # Rotate - socketObj.rotation_euler[0] = abs(socketObj.rotation_euler[0]) if (socketObj.rotation_euler[0] < 0) else -abs(socketObj.rotation_euler[0]) - socketObj.rotation_euler[1] = abs(socketObj.rotation_euler[1]) if (socketObj.rotation_euler[1] < 0) else -abs(socketObj.rotation_euler[1]) - socketObj.rotation_euler[2] += 3.14159 - # Rename object - socketObj.name = socketObj.name[7:] - - # restore attach constraint - if constraint: - constraint.mute = constraintMute - - # Restore hide attribute of collision collection - if (collisionCollection and preferences.SM_CustomCollision): - for key, val in collisionHideProp.items(): - setattr(collisionCollection, "hide_" + key, val) - - # Restore hide attribute of socket collection - if (socketCollection and preferences.SM_Socket): - for key, val in socketHideProp.items(): - setattr(socketCollection, "hide_" + key, val) - - # Select all object after export - for obj in selectedObjects: - obj.select_set(state=True) - - if preferences.exportOption in ["UNREAL", "BOTH"] and self.remote.remote_nodes: - # Unreal engine import option - unrealsetting = { - "folder": directory, - "files": arrMeshObject, - "subfolder": subFolder, - "overwrite_file": preferences.SM_OverwriteFile, - "temporary": preferences.exportOption == "UNREAL", - - "auto_generate_collision": preferences.SM_AutoGenerateCollision, - "vertex_color_import_option": preferences.SM_VertexColorImportOption, - "vertex_override_color": list(preferences.SM_VertexOverrideColor), - "remove_degenerates": preferences.SM_RemoveDegenerates, - "build_adjacency_buffer": preferences.SM_BuildAdjacencyBuffer, - "build_reversed_index_buffer": preferences.SM_BuildReversedIndexBuffer, - "generate_lightmaps_uvs": preferences.SM_GenerateLightmapsUVs, - "one_convex_hull_perucx": preferences.SM_OneConvexHullPerUCX, - "combine_meshes": preferences.SM_CombineMeshes, - "transform_vertex_to_absolute": preferences.SM_TransformVertexToAbsolute, - "bake_pivot_in_vertex": preferences.SM_BakePivotInVertex, - "import_mesh_lods": preferences.SM_ImportMeshLODs, - "normal_import_method": preferences.SM_NormalImportMethod, - "normal_generation_method": preferences.SM_NormalGenerationMethod, - "compute_weighted_normals": preferences.SM_ComputeWeightedNormals, - - "import_translation": list(preferences.SM_ImportTranslation), - "import_rotation": list(preferences.SM_ImportRotation), - "import_uniform_scale": preferences.SM_ImportUniformScale, - - "convert_scene": preferences.SM_ConvertScene, - "force_front_x_axis": preferences.SM_ForceFrontXAxis, - "convert_scene_unit": preferences.SM_ConvertSceneUnit, - "override_full_name": preferences.SM_OverrideFullName, - - "auto_compute_lod_distances": preferences.SM_AutoComputeLODScreenSize, - "lod_distance": [ getattr(preferences, "SM_LODDistance{0}".format(numLOD), 0.0) for numLOD in range(8)], - "minimum_lod_number": preferences.SM_MinimumLODNumber, - "lod_number": preferences.SM_NumberOfLODs, - - "material_search_location": preferences.SM_MaterialSearchLocation, - "import_material": preferences.SM_ImportMaterial, - "import_texture": preferences.SM_ImportTexture, - "invert_normal_maps": preferences.SM_InvertNormalMaps, - "reorder_material_to_fbx_order": preferences.SM_ReorderMaterialToFBXOrder - } - - # Save unreal engine import option into a file json - file = open(os.path.join(os.path.dirname(__file__), "Data", "unrealenginesetting.json"), "w+") - file.write(json.dumps(unrealsetting)) - file.close() - - for node_id in [user["node_id"] for user in self.remote.remote_nodes]: - # tell unreal engine tor run python script - self.remote.open_command_connection(node_id) - # self.remote.run_command(os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "StaticMesh.py"), exec_mode="ExecuteFile") - # Fix Python PATH Script Issue #9 - self.remote.run_command("execfile(\"" + os.path.join(os.path.dirname(os.path.realpath(__file__)), "PyScript", "StaticMesh.py").replace(os.sep, "/") +"\")", exec_mode="ExecuteStatement") - self.remote.close_command_connection() - - try: - bpy.ops.ue4workspace.popup("INVOKE_DEFAULT", msg="Export Static Mesh Done") - except Exception: - pass - - return {"FINISHED"} - -# operator export - -Ops = [ - OP_SMUpdateExportProfile, - OP_SMCreateExportProfile, - OP_SMRemoveExportProfile, - OP_ExportStaticMesh -] \ No newline at end of file diff --git a/UE4WS_StaticMeshFBXOption.py b/UE4WS_StaticMeshFBXOption.py deleted file mode 100644 index 1e81f16..0000000 --- a/UE4WS_StaticMeshFBXOption.py +++ /dev/null @@ -1,43 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_StaticMeshFBXOption" - bl_parent_id = "UE4WORKSPACE_PT_StaticMeshPanel" - bl_label = "FBX Export Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "SM_FBXTabTransform", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_FBXTabTransform], emboss=False) - if preferences.SM_FBXTabTransform: - box = layout.box() - for arr in [["SM_FBXGlobalScale", "Scale"], ["SM_FBXApplyScaleOptions", "Apply Scalings"], ["SM_FBXAxisForward", "Forward"], ["SM_FBXAxisUp", "Up"], ["SM_FBXApplyUnitScale", "Apply Unit"], ["SM_FBXBakeSpaceTransform", "!EXPERIMENTAL! Apply Transform"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "SM_FBXTabGeometry", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_FBXTabGeometry], emboss=False) - if preferences.SM_FBXTabGeometry: - box = layout.box() - for arr in [["SM_FBXMeshSmoothType", "Smoothing"], ["SM_FBXUseSubsurf", "Export Subdivision Surface"], ["SM_FBXUseMeshModifiers", "Apply Modifiers"], ["SM_FBXUseMeshEdges", "Loose Edges"], ["SM_FBXUseTSpace", "Tangent Space"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/UE4WS_StaticMeshUnrealEngine.py b/UE4WS_StaticMeshUnrealEngine.py deleted file mode 100644 index b904eca..0000000 --- a/UE4WS_StaticMeshUnrealEngine.py +++ /dev/null @@ -1,109 +0,0 @@ -import bpy -from bpy.types import (Panel, Operator) - -class PANEL(Panel): - bl_idname = "UE4WORKSPACE_PT_StaticMeshUnrealEnginePanel" - bl_parent_id = "UE4WORKSPACE_PT_StaticMeshPanel" - bl_label = "Unreal Engine Export Setting" - bl_category = "UE4Workspace" - bl_space_type = "VIEW_3D" - bl_region_type = "UI" - bl_options = {"DEFAULT_CLOSED"} - - def draw(self, context): - layout = self.layout - preferences = context.preferences.addons[__package__].preferences - - layout.prop(preferences, "SM_TabMesh", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_TabMesh], emboss=False) - if preferences.SM_TabMesh: - box = layout.box() - for arr in [["SM_AutoGenerateCollision", "Auto Generate Collision"], ["SM_VertexColorImportOption", "Vertex Color Import Option"], ["SM_VertexOverrideColor", "Vertex Override Color"], ["SM_RemoveDegenerates", "Remove Degenerate"], ["SM_BuildAdjacencyBuffer", "Build Adjacency Buffer"], ["SM_BuildReversedIndexBuffer", "Build Reversed Index Buffer"], ["SM_GenerateLightmapsUVs", "Generate Lightmaps UVs"], ["SM_OneConvexHullPerUCX", "One Convex Hull Per UCX"], ["SM_CombineMeshes", "Combine Meshes"], ["SM_TransformVertexToAbsolute", "Transform Vertex to Absolute"], ["SM_BakePivotInVertex", "Bake Pivot in Vertex"], ["SM_ImportMeshLODs", "Import Mesh LODs"], ["SM_NormalImportMethod", "Normal Import Method"], ["SM_NormalGenerationMethod", "Normal Generation Method"], ["SM_ComputeWeightedNormals", "Compute Weighted Normals"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "SM_TabTransform", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_TabTransform], emboss=False) - if preferences.SM_TabTransform: - box = layout.box() - for arr in [["SM_ImportTranslation", "Import Translation"], ["SM_ImportRotation", "Import Translation"], ["SM_ImportUniformScale", "Import Uniform Scale"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "SM_TabMisc", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_TabMisc], emboss=False) - if preferences.SM_TabMisc: - box = layout.box() - for arr in [["SM_ConvertScene", "Convert Scene"], ["SM_ForceFrontXAxis", "Force Front XAxis"], ["SM_ConvertSceneUnit", "Convert Scene Unit"], ["SM_OverrideFullName", "Override Full Name"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - if preferences.SM_ImportMeshLODs: - layout.prop(preferences, "SM_TabLODSetting", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_TabLODSetting], emboss=False) - if preferences.SM_TabLODSetting: - box = layout.box() - - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="Auto Compute LOD Screen Size") - split = split.split() - col = split.column() - col.prop(preferences, "SM_AutoComputeLODScreenSize", text="") - - if not preferences.SM_AutoComputeLODScreenSize: - for numLOD in range(8): - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text="LOD {0} Screen Size".format(numLOD)) - split = split.split() - col = split.column() - col.prop(preferences, "SM_LODDistance{0}".format(numLOD), text="") - - for arr in [["SM_MinimumLODNumber", "Minimum LOD"], ["SM_NumberOfLODs", "Number of LODs"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") - - layout.prop(preferences, "SM_TabMaterial", icon=("TRIA_RIGHT", "TRIA_DOWN")[preferences.SM_TabMaterial], emboss=False) - if preferences.SM_TabMaterial: - box = layout.box() - for arr in [["SM_MaterialSearchLocation", "Search Location"], ["SM_ImportMaterial", "Import Material"], ["SM_ImportTexture", "Import Texture"], ["SM_InvertNormalMaps", "Invert Normal Maps"], ["SM_ReorderMaterialToFBXOrder", "Reorder Material To FBX Order"]]: - col = box.column() - row = col.row() - split = row.split(factor=0.6) - col = split.column() - col.alignment = "RIGHT" - col.label(text=arr[1]) - split = split.split() - col = split.column() - col.prop(preferences, arr[0], text="") \ No newline at end of file diff --git a/__init__.py b/__init__.py deleted file mode 100644 index 23ee3e0..0000000 --- a/__init__.py +++ /dev/null @@ -1,341 +0,0 @@ -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -bl_info = { - "name" : "UE4Workspace", - "author" : "Anas RAR", - "description" : "Addon For UE4 Workspace", - "blender" : (2, 81, 0), - "version" : (1, 5, 0), - "location" : "3D View > Tools", - "warning" : "", - "wiki_url": "https://github.com/anasrar/Blender-UE4-Workspace", # 2.82 below - "doc_url": "https://github.com/anasrar/Blender-UE4-Workspace", # 2.83 above - "tracker_url": "https://github.com/anasrar/Blender-UE4-Workspace/issues", - "support": "COMMUNITY", - "category" : "Workspace" -} - -import bpy -from bpy.app.handlers import persistent -from bpy.props import (StringProperty, BoolProperty, BoolVectorProperty, IntProperty, IntVectorProperty, FloatProperty, EnumProperty, PointerProperty, CollectionProperty) -from bpy.utils import (register_class, unregister_class) - -from . UE4WS_Preferences import ( - Groups as PreferencesGroup, - Preferences, - Ops as PreferencesOperator -) - -from . UE4WS_ExportOption import ( - PANEL as exportOptionPanel, - Ops as exportOptionOperator -) - -from . UE4WS_ExportOptionImportAssets import ( - IMPORTASSETS_UL_AssetsList, - Groups as exportOptionImportAssetsGroup, - Props as exportOptionImportAssetsProps, - PANEL as exportOptionImportAssetsPanel, - Ops as exportOptionImportAssetsOperator -) - -from . UE4WS_ExportOptionImportAssetsFBXOption import ( - PANEL as exportOptionImportAssetsFBXOptionPanel -) - -from . UE4WS_ExportOptionImportAssetsUnrealEngine import ( - PANEL as exportOptionImportAssetsUnrealEnginePanel -) - -from . UE4WS_Object import ( - PANEL as objectPanel, - Ops as objectOperator -) - -from . UE4WS_ObjectCustomCollision import ( - Props as objectCustomCollisionProps, - PANEL as objectCustomCollisionPanel, - Ops as objectCustomCollisionOperator -) - -from . UE4WS_ObjectCharacterPart import ( - Props as objectCharacterPartProps, - PANEL as objectCharacterPartPanel, - Ops as objectCharacterPartOperator -) - -from . UE4WS_ObjectSocket import ( - Props as objectSocketProps, - PANEL as objectSocketPanel, - Ops as objectSocketOperator -) - -from . UE4WS_ObjectLOD import ( - Groups as objectLODPGroup, - Props as objectLODProps, - PANEL as objectLODPanel, - Ops as objectLODOperator -) - -from . UE4WS_ObjectControlRig import ( - PANEL as objectControlRigPanel, - Ops as objectControlRigOperator -) - -from . UE4WS_ObjectRetargetAnimation import ( - RETARGET_UL_BoneParentList, - RETARGET_UL_BoneMapList, - Groups as objectRetargetAnimationGroup, - Props as objectRetargetAnimationProps, - PANEL as objectRetargetAnimationPanel, - Ops as objectRetargetAnimationOperator -) - -from . UE4WS_ObjectSkeletonPreset import ( - PANEL as objectSkeletonPresetPanel, - Ops as objectSkeletonPresetOperator -) - -from . UE4WS_StaticMesh import ( - PANEL as staticMeshPanel, - Ops as staticMeshOperator -) - -from . UE4WS_StaticMeshFBXOption import ( - PANEL as staticMeshFBXOptionPanel -) - -from . UE4WS_StaticMeshUnrealEngine import ( - PANEL as staticMeshUnrealEnginePanel -) - -from . UE4WS_Character import ( - UE4WORKSPACE_MT_skeleton_preset_submenu, - appendType as characterAppendType, - Props as characterProps, - PANEL as characterPanel, - Ops as characterOperator -) - -from . UE4WS_CharacterFBXOption import ( - PANEL as CharacterFBXOptionPanel -) - -from . UE4WS_CharacterUnrealEngine import ( - PANEL as CharacterUnrealEnginePanel -) - -from . UE4WS_Animation import ( - ANIM_UL_actionList, - Props as animationProps, - PANEL as animationPanel, - Ops as animationOperator -) - -from . UE4WS_AnimationFBXOption import ( - PANEL as AnimationFBXOptionPanel -) - -from . UE4WS_AnimationUnrealEngine import ( - PANEL as AnimationUnrealEnginePanel -) - -from . UE4WS_Credit import ( - PANEL as creditPanel -) - -from . remote_execute import ( - RemoteExecution -) - -from . misc import ( - PopUpWindow -) - -remote_exec = RemoteExecution() - -AR_UE4WS_PropsArray = [] -# extend property to array, make sure you add from here -for x in [ - exportOptionImportAssetsProps, - objectCustomCollisionProps, - objectCharacterPartProps, - objectSocketProps, - objectLODProps, - objectRetargetAnimationProps, - characterProps, - animationProps - ]: - AR_UE4WS_PropsArray.extend(x) - -AR_UE4WS_OperatorArray = [] -# extend operator to array, make sure you add from here -for x in [ - PreferencesGroup, - PreferencesOperator, - objectOperator, - objectCustomCollisionOperator, - objectCharacterPartOperator, - objectSocketOperator, - objectLODPGroup, - objectLODOperator, - objectControlRigOperator, - objectRetargetAnimationGroup, - objectRetargetAnimationOperator, - objectSkeletonPresetOperator, - exportOptionOperator, - exportOptionImportAssetsGroup, - exportOptionImportAssetsOperator, - staticMeshOperator, - characterOperator, - animationOperator - ]: - AR_UE4WS_OperatorArray.extend(x) - -AR_UE4WS_AppendTypes = [] -# extend append type to array, make sure you add from here -for x in [ - characterAppendType - ]: - AR_UE4WS_AppendTypes.extend(x) - -AR_UE4WS_classes = ( - # addon preferences - Preferences, - # Export Option - exportOptionPanel, - IMPORTASSETS_UL_AssetsList, - exportOptionImportAssetsPanel, - exportOptionImportAssetsFBXOptionPanel, - exportOptionImportAssetsUnrealEnginePanel, - # Object - objectPanel, - objectCustomCollisionPanel, - objectCharacterPartPanel, - objectSocketPanel, - objectLODPanel, - objectSkeletonPresetPanel, - objectControlRigPanel, - RETARGET_UL_BoneParentList, - RETARGET_UL_BoneMapList, - objectRetargetAnimationPanel, - ## Static Mesh - staticMeshPanel, - staticMeshFBXOptionPanel, - staticMeshUnrealEnginePanel, - ## Character - UE4WORKSPACE_MT_skeleton_preset_submenu, - characterPanel, - CharacterFBXOptionPanel, - CharacterUnrealEnginePanel, - ## Animation - ANIM_UL_actionList, - animationPanel, - AnimationFBXOptionPanel, - AnimationUnrealEnginePanel, - ## Credit - creditPanel, - ## Misc. - PopUpWindow -) - -TypeProps = { - "scene": bpy.types.Scene, - "object": bpy.types.Object, - "action": bpy.types.Action, - "armature": bpy.types.Armature, - "bone": bpy.types.Bone, - "mesh": bpy.types.Mesh -} - -@persistent -def resetVariable(scene): - """Reset some variable and disconnect from unreal engine after load blend file""" - preferences = bpy.context.preferences.addons[__package__].preferences - preferences.skeleton.clear() - preferences.CHAR_CharacterSkeleton = "NEW" - preferences.ANIM_CharacterSkeleton = "NONE" - remote_exec.stop() - - for P in AR_UE4WS_PropsArray: - if hasattr(TypeProps.get(P.get("type")), P.get("name")) and P.get("resetVariable", False): - typeProp = P.get("type") - if (typeProp == "scene"): - bpy.context.scene.property_unset(P.get("name")) - elif (typeProp == "object"): - for obj in bpy.data.objects: - obj.property_unset(P.get("name")) - elif (typeProp == "action"): - for action in bpy.data.actions: - action.property_unset(P.get("name")) - elif (typeProp == "armature"): - for armature in bpy.data.armatures: - armature.property_unset(P.get("name")) - elif (typeProp == "mesh"): - for armature in bpy.data.meshes: - armature.property_unset(P.get("name")) - -def register(): - # Register operator - for X in AR_UE4WS_OperatorArray: - if hasattr(X, "remote"): - X.remote = remote_exec - if hasattr(X, "addonVersion"): - X.addonVersion = bl_info["version"] - register_class(X) - - # Register prop - for P in AR_UE4WS_PropsArray: - setattr(TypeProps.get(P.get("type")), P.get("name"), P.get("value")) - - # Append Type - for bType, func in AR_UE4WS_AppendTypes: - dataType = getattr(bpy.types, bType) - if dataType: - dataType.append(func) - else: - print("TRY TO APPEND : bpy.types.{} Not Found".format(bType)) - - # Register class - for C in AR_UE4WS_classes: - if hasattr(C, "remote"): - C.remote = remote_exec - if hasattr(C, "addonVersion"): - C.addonVersion = bl_info["version"] - register_class(C) - - bpy.app.handlers.load_post.append(resetVariable) - -def unregister(): - # Unregister operator - for X in reversed(AR_UE4WS_OperatorArray): - unregister_class(X) - - # Unregister prop - for P in reversed(AR_UE4WS_PropsArray): - delattr(TypeProps.get(P.get("type")), P.get("name")) - - # Remove Append Type - for bType, func in AR_UE4WS_AppendTypes: - dataType = getattr(bpy.types, bType) - if dataType: - dataType.remove(func) - else: - print("TRY TO REMOVE : bpy.types.{} Not Found".format(bType)) - - # Unregister class - for C in reversed(AR_UE4WS_classes): - unregister_class(C) - - bpy.app.handlers.load_post.remove(resetVariable) \ No newline at end of file diff --git a/boneShape.py b/boneShape.py deleted file mode 100644 index 464b6d4..0000000 --- a/boneShape.py +++ /dev/null @@ -1,235 +0,0 @@ -from math import (sin, cos, radians, pi as PI) -import bmesh, mathutils - -clamp = lambda n, minn, maxn: max(min(maxn, n), minn) - -def circle(segments = 3, radius = 1 , loc = 0): - segments = int(segments) - bm = bmesh.new() - - # create circle - bmesh.ops.create_circle( - bm, - cap_ends=False, - radius=radius, - segments=clamp(segments, 3, 32) - ) - - # rotate 90 degree on x axis - bmesh.ops.rotate( - bm, - verts=bm.verts, - cent=(0.0, 0.0, 0.0), - matrix=mathutils.Matrix.Rotation(radians(90.0), 3, "X") - ) - - # move on y axis - bmesh.ops.translate( - bm, - verts=bm.verts, - vec=(0, loc, 0) - ) - - # get vertices and edges - listVertices = [x for x in bm.verts] - listEdges = [(listVertices.index(x.verts[0]), listVertices.index(x.verts[1])) for x in bm.edges] - listVertices = [x.co.to_tuple() for x in bm.verts] - - bm.free() - return [listVertices, listEdges, []] - -def rectangle(wide = 1, length = 1, yPos = 0): - v0 = ((wide/2), yPos, (length/2)) - v1 = ((wide/2), yPos, -(length/2)) - v3 = (-(wide/2), yPos, -(length/2)) - v4 = (-(wide/2), yPos, (length/2)) - - listVertices = [v0, v1, v3, v4] - listEdges = [(0, 1), (1, 2), (2, 3), (3, 0)] - return [listVertices, listEdges, []] - -def block(wide = 1, length = 1, yPosStart = 0, yPosEnd = 1): - v0 = ((wide/2), yPosStart, (length/2)) - v1 = ((wide/2), yPosStart, -(length/2)) - v2 = (-(wide/2), yPosStart, -(length/2)) - v3 = (-(wide/2), yPosStart, (length/2)) - - v4 = ((wide/2), yPosEnd, (length/2)) - v5 = ((wide/2), yPosEnd, -(length/2)) - v6 = (-(wide/2), yPosEnd, -(length/2)) - v7 = (-(wide/2), yPosEnd, (length/2)) - - listVertices = [v0, v1, v2, v3, v4, v5, v6, v7] - listEdges = [(0, 1), (1, 2), (2, 3), (3, 0), (4, 5), (5, 6), (6, 7), (7, 4), (0, 4), (1, 5), (2, 6), (3, 7)] - return [listVertices, listEdges, []] - -def sphere(u_segments = 3, v_segments=3, diameter = 1): - bm = bmesh.new() - - # create sphere - bmesh.ops.create_uvsphere( - bm, - u_segments = u_segments, - v_segments = v_segments, - diameter = diameter, - ) - - # rotate 90 degree on x axis - bmesh.ops.rotate( - bm, - verts=bm.verts, - cent=(0.0, 0.0, 0.0), - matrix=mathutils.Matrix.Rotation(radians(90.0), 3, "X") - ) - - # get vertices and edges - listVertices = [x for x in bm.verts] - listEdges = [(listVertices.index(x.verts[0]), listVertices.index(x.verts[1])) for x in bm.edges] - listVertices = [x.co.to_tuple() for x in bm.verts] - - bm.free() - return [listVertices, listEdges, []] - -def controlRotation(segments = 8, radius = 1 , loc = 0, flip = False): - bm = bmesh.new() - - # create circle - circle1 = bmesh.ops.create_circle( - bm, - cap_ends=False, - radius=radius * 0.75, - segments=clamp(segments, 3, 32) - ) - - # create second circle - circle2 = bmesh.ops.create_circle( - bm, - cap_ends=False, - radius=radius, - segments=clamp(segments, 3, 32) - ) - - # rotate 90 degree on x axis - bmesh.ops.rotate( - bm, - verts=bm.verts, - cent=(0.0, 0.0, 0.0), - matrix=mathutils.Matrix.Rotation(radians(90.0), 3, "X") - ) - - # move on y axis - bmesh.ops.translate( - bm, - verts=circle2["verts"], - vec=(0, -0.5 if flip else 0.5, 0) - ) - - # move on y axis - bmesh.ops.translate( - bm, - verts=bm.verts, - vec=(0, loc, 0) - ) - - # get vertices and edges - listVertices = [x for x in bm.verts] - listEdges = [(listVertices.index(x.verts[0]), listVertices.index(x.verts[1])) for x in bm.edges] - listVertices = [x.co.to_tuple() for x in bm.verts] - - bm.free() - return [listVertices, listEdges, []] - -def floor(scaleX = 1, scaleY = 1): - bm = bmesh.new() - - # square vertex - v1 = bm.verts.new((10.0, 10.0, 0.0)) - v2 = bm.verts.new((10.0, -10.0, 0.0)) - v3 = bm.verts.new((-10.0, -10.0, 0.0)) - v4 = bm.verts.new((-10.0, 10.0, 0.0)) - - # create edge from vertices - for edge in [(v1, v2), (v2, v3), (v3, v4), (v4, v1), (v1, v3), (v2, v4)]: - bm.edges.new(edge) - - # create circle - bmesh.ops.create_circle( - bm, - cap_ends=False, - radius=5, - segments=8 - ) - - # scale - bmesh.ops.scale( - bm, - verts=bm.verts, - vec=(scaleX, scaleY, 1) - ) - - # get vertices and edges - listVertices = [x for x in bm.verts] - listEdges = [(listVertices.index(x.verts[0]), listVertices.index(x.verts[1])) for x in bm.edges] - listVertices = [x.co.to_tuple() for x in bm.verts] - - bm.free() - return [listVertices, listEdges, []] - -def root(segments = 5, radius = 50): - bm = bmesh.new() - - # create circle - bmesh.ops.create_circle( - bm, - cap_ends=False, - radius=radius, - segments=segments - ) - - # rotate 180 degree on z axis - bmesh.ops.rotate( - bm, - verts=bm.verts, - cent=(0.0, 0.0, 0.0), - matrix=mathutils.Matrix.Rotation(radians(180), 3, "Z") - ) - - # get vertices and edges - listVertices = [x for x in bm.verts] - listEdges = [(listVertices.index(x.verts[0]), listVertices.index(x.verts[1])) for x in bm.edges] - listVertices = [x.co.to_tuple() for x in bm.verts] - - bm.free() - return [listVertices, listEdges, []] - -def controlRotationFinger(yPos = 3, scaleX = 1, scaleZ = 1): - bm = bmesh.new() - - # arrow vertex - v1 = bm.verts.new((1.0, yPos + 0.25, 0.0)) - v2 = bm.verts.new((0.0, yPos, 2.0)) - v3 = bm.verts.new((-1.0, yPos + 0.25, 0.0)) - v4 = bm.verts.new((0.0, yPos, -2.0)) - - # create edge from vertices - for edge in [(v1, v2), (v2, v3), (v3, v4), (v4, v1)]: - bm.edges.new(edge) - - # scale - bmesh.ops.scale( - bm, - verts=bm.verts, - vec=(scaleX, 1, scaleZ) - ) - - # get vertices and edges - listVertices = [x for x in bm.verts] - listEdges = [(listVertices.index(x.verts[0]), listVertices.index(x.verts[1])) for x in bm.edges] - listVertices = [x.co.to_tuple() for x in bm.verts] - - bm.free() - return [listVertices, listEdges, []] - -line = [ - [(0, 0, 0), (0, 1, 0)], [(0, 1)], [] -] \ No newline at end of file diff --git a/misc.py b/misc.py deleted file mode 100644 index c044fc0..0000000 --- a/misc.py +++ /dev/null @@ -1,23 +0,0 @@ -import bpy -from bpy.props import (StringProperty) -from bpy.types import (Operator) - -class PopUpWindow(Operator): - bl_idname = "ue4workspace.popup" - bl_label = "Message" - - msg: StringProperty( - name = "message", - description = "message", - default = "" - ) - - def execute(self, context): - self.report({"INFO"}, self.msg) - return {"FINISHED"} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width = 250) - - def draw(self, context): - self.layout.label(text=self.msg) diff --git a/remote_execute.py b/remote_execute.py deleted file mode 100644 index 4681581..0000000 --- a/remote_execute.py +++ /dev/null @@ -1,632 +0,0 @@ -# Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. -# Original file from Engine/Plugins/Experimental/PythonScriptPlugin/Content/Python/remote_execution.py - -import sys as _sys -import json as _json -import uuid as _uuid -import time as _time -import socket as _socket -import logging as _logging -import threading as _threading - -# Protocol constants (see PythonScriptRemoteExecution.cpp for the full protocol definition) -_PROTOCOL_VERSION = 1 # Protocol version number -_PROTOCOL_MAGIC = 'ue_py' # Protocol magic identifier -_TYPE_PING = 'ping' # Service discovery request (UDP) -_TYPE_PONG = 'pong' # Service discovery response (UDP) -_TYPE_OPEN_CONNECTION = 'open_connection' # Open a TCP command connection with the requested server (UDP) -_TYPE_CLOSE_CONNECTION = 'close_connection' # Close any active TCP command connection (UDP) -_TYPE_COMMAND = 'command' # Execute a remote Python command (TCP) -_TYPE_COMMAND_RESULT = 'command_result' # Result of executing a remote Python command (TCP) - -_NODE_PING_SECONDS = 1 # Number of seconds to wait before sending another "ping" message to discover remote notes -_NODE_TIMEOUT_SECONDS = 5 # Number of seconds to wait before timing out a remote node that was discovered via UDP and has stopped sending "pong" responses - -DEFAULT_MULTICAST_TTL = 0 # Multicast TTL (0 is limited to the local host, 1 is limited to the local subnet) -DEFAULT_MULTICAST_GROUP_ENDPOINT = ('239.0.0.1', 6766) # The multicast group endpoint tuple that the UDP multicast socket should join (must match the "Multicast Group Endpoint" setting in the Python plugin) -DEFAULT_MULTICAST_BIND_ADDRESS = '0.0.0.0' # The adapter address that the UDP multicast socket should bind to, or 0.0.0.0 to bind to all adapters (must match the "Multicast Bind Address" setting in the Python plugin) -DEFAULT_COMMAND_ENDPOINT = ('127.0.0.1', 6776) # The endpoint tuple for the TCP command connection hosted by this client (that the remote client will connect to) - -# Execution modes (these must match the names given to LexToString for EPythonCommandExecutionMode in IPythonScriptPlugin.h) -MODE_EXEC_FILE = 'ExecuteFile' # Execute the Python command as a file. This allows you to execute either a literal Python script containing multiple statements, or a file with optional arguments -MODE_EXEC_STATEMENT = 'ExecuteStatement' # Execute the Python command as a single statement. This will execute a single statement and print the result. This mode cannot run files -MODE_EVAL_STATEMENT = 'EvaluateStatement' # Evaluate the Python command as a single statement. This will evaluate a single statement and return the result. This mode cannot run files - -class RemoteExecutionConfig(object): - ''' - Configuration data for establishing a remote connection with a UE4 instance running Python. - ''' - def __init__(self): - self.multicast_ttl = DEFAULT_MULTICAST_TTL - self.multicast_group_endpoint = DEFAULT_MULTICAST_GROUP_ENDPOINT - self.multicast_bind_address = DEFAULT_MULTICAST_BIND_ADDRESS - self.command_endpoint = DEFAULT_COMMAND_ENDPOINT - -class RemoteExecution(object): - ''' - A remote execution session. This class can discover remote "nodes" (UE4 instances running Python), and allow you to open a command channel to a particular instance. - - Args: - config (RemoteExecutionConfig): Configuration controlling the connection settings for this session. - ''' - def __init__(self, config=RemoteExecutionConfig()): - self._config = config - self._broadcast_connection = None - self._command_connection = None - self._node_id = str(_uuid.uuid4()) - - @property - def remote_nodes(self): - ''' - Get the current set of discovered remote "nodes" (UE4 instances running Python). - - Returns: - list: A list of dicts containg the node ID and the other data. - ''' - return self._broadcast_connection.remote_nodes if self._broadcast_connection else [] - - def start(self, config=RemoteExecutionConfig()): - self._config = config - ''' - Start the remote execution session. This will begin the discovey process for remote "nodes" (UE4 instances running Python). - ''' - self._broadcast_connection = _RemoteExecutionBroadcastConnection(self._config, self._node_id) - self._broadcast_connection.open() - - def stop(self): - ''' - Stop the remote execution session. This will end the discovey process for remote "nodes" (UE4 instances running Python), and close any open command connection. - ''' - self.close_command_connection() - if self._broadcast_connection: - self._broadcast_connection.close() - self._broadcast_connection = None - - def has_command_connection(self): - ''' - Check whether the remote execution session has an active command connection. - - Returns: - bool: True if the remote execution session has an active command connection, False otherwise. - ''' - return self._command_connection is not None - - def open_command_connection(self, remote_node_id): - ''' - Open a command connection to the given remote "node" (a UE4 instance running Python), closing any command connection that may currently be open. - - Args: - remote_node_id (string): The ID of the remote node (this can be obtained by querying `remote_nodes`). - ''' - self._command_connection = _RemoteExecutionCommandConnection(self._config, self._node_id, remote_node_id) - self._command_connection.open(self._broadcast_connection) - - def close_command_connection(self): - ''' - Close any command connection that may currently be open. - ''' - if self._command_connection: - self._command_connection.close(self._broadcast_connection) - self._command_connection = None - - def run_command(self, command, unattended=True, exec_mode=MODE_EXEC_FILE, raise_on_failure=False): - ''' - Run a command remotely based on the current command connection. - - Args: - command (string): The Python command to run remotely. - unattended (bool): True to run this command in "unattended" mode (suppressing some UI). - exec_mode (string): The execution mode to use as a string value (must be one of MODE_EXEC_FILE, MODE_EXEC_STATEMENT, or MODE_EVAL_STATEMENT). - raise_on_failure (bool): True to raise a RuntimeError if the command fails on the remote target. - - Returns: - dict: The result from running the remote command (see `command_result` from the protocol definition). - ''' - data = self._command_connection.run_command(command, unattended, exec_mode) - if raise_on_failure and not data['success']: - raise RuntimeError('Remote Python Command failed! {0}'.format(data['result'])) - return data - -class _RemoteExecutionNode(object): - ''' - A discovered remote "node" (aka, a UE4 instance running Python). - - Args: - data (dict): The data representing this node (from its "pong" reponse). - now (float): The timestamp at which this node was last seen. - ''' - def __init__(self, data, now=None): - self.data = data - self._last_pong = _time_now(now) - - def should_timeout(self, now=None): - ''' - Check to see whether this remote node should be considered timed-out. - - Args: - now (float): The current timestamp. - - Returns: - bool: True of the node has exceeded the timeout limit (`_NODE_TIMEOUT_SECONDS`), False otherwise. - ''' - return (self._last_pong + _NODE_TIMEOUT_SECONDS) < _time_now(now) - -class _RemoteExecutionBroadcastNodes(object): - ''' - A thread-safe set of remote execution "nodes" (UE4 instances running Python). - ''' - def __init__(self): - self._remote_nodes = {} - self._remote_nodes_lock = _threading.RLock() - - @property - def remote_nodes(self): - ''' - Get the current set of discovered remote "nodes" (UE4 instances running Python). - - Returns: - list: A list of dicts containg the node ID and the other data. - ''' - with self._remote_nodes_lock: - remote_nodes_list = [] - for node_id, node in self._remote_nodes.items(): - remote_node_data = dict(node.data) - remote_node_data['node_id'] = node_id - remote_nodes_list.append(remote_node_data) - return remote_nodes_list - - def update_remote_node(self, node_id, node_data, now=None): - ''' - Update a remote node, replacing any existing data. - - Args: - node_id (str): The ID of the remote node (from its "pong" reponse). - node_data (dict): The data representing this node (from its "pong" reponse). - now (float): The timestamp at which this node was last seen. - ''' - now = _time_now(now) - with self._remote_nodes_lock: - if node_id not in self._remote_nodes: - print('Found Node {0}: {1}'.format(node_id, node_data)) - self._remote_nodes[node_id] = _RemoteExecutionNode(node_data, now) - - def timeout_remote_nodes(self, now=None): - ''' - Check to see whether any remote nodes should be considered timed-out, and if so, remove them from this set. - - Args: - now (float): The current timestamp. - ''' - now = _time_now(now) - with self._remote_nodes_lock: - for node_id, node in list(self._remote_nodes.items()): - if node.should_timeout(now): - print('Lost Node {0}: {1}'.format(node_id, node.data)) - del self._remote_nodes[node_id] - -class _RemoteExecutionBroadcastConnection(object): - ''' - A remote execution broadcast connection (for UDP based messaging and node discovery). - - Args: - config (RemoteExecutionConfig): Configuration controlling the connection settings. - node_id (string): The ID of the local "node" (this session). - ''' - def __init__(self, config, node_id): - self._config = config - self._node_id = node_id - self._nodes = None - self._running = False - self._broadcast_socket = None - self._broadcast_listen_thread = None - - @property - def remote_nodes(self): - ''' - Get the current set of discovered remote "nodes" (UE4 instances running Python). - - Returns: - list: A list of dicts containg the node ID and the other data. - ''' - return self._nodes.remote_nodes if self._nodes else [] - - def open(self): - ''' - Open the UDP based messaging and discovery connection. This will begin the discovey process for remote "nodes" (UE4 instances running Python). - ''' - self._running = True - self._last_ping = None - self._nodes = _RemoteExecutionBroadcastNodes() - self._init_broadcast_socket() - self._init_broadcast_listen_thread() - - def close(self): - ''' - Close the UDP based messaging and discovery connection. This will end the discovey process for remote "nodes" (UE4 instances running Python). - ''' - self._running = False - if self._broadcast_listen_thread: - self._broadcast_listen_thread.join() - if self._broadcast_socket: - self._broadcast_socket.close() - self._broadcast_socket = None - self._nodes = None - - def _init_broadcast_socket(self): - ''' - Initialize the UDP based broadcast socket based on the current configuration. - ''' - self._broadcast_socket = _socket.socket(_socket.AF_INET, _socket.SOCK_DGRAM, _socket.IPPROTO_UDP) # UDP/IP socket - self._broadcast_socket.setsockopt(_socket.SOL_SOCKET, _socket.SO_REUSEADDR, 1) - self._broadcast_socket.bind((self._config.multicast_bind_address, self._config.multicast_group_endpoint[1])) - self._broadcast_socket.setsockopt(_socket.IPPROTO_IP, _socket.IP_MULTICAST_LOOP, 1) - self._broadcast_socket.setsockopt(_socket.IPPROTO_IP, _socket.IP_MULTICAST_TTL, self._config.multicast_ttl) - self._broadcast_socket.setsockopt(_socket.IPPROTO_IP, _socket.IP_ADD_MEMBERSHIP, _socket.inet_aton(self._config.multicast_group_endpoint[0]) + _socket.inet_aton('0.0.0.0')) - self._broadcast_socket.settimeout(0.1) - - def _init_broadcast_listen_thread(self): - ''' - Initialize the listen thread for the UDP based broadcast socket to allow discovery to run async. - ''' - self._broadcast_listen_thread = _threading.Thread(target=self._run_broadcast_listen_thread) - self._broadcast_listen_thread.daemon = True - self._broadcast_listen_thread.start() - - def _run_broadcast_listen_thread(self): - ''' - Main loop for the listen thread that handles processing discovery messages. - ''' - while self._running: - # Receive and process all pending data - while True: - try: - data = self._broadcast_socket.recv(4096) - except _socket.timeout: - data = None - if data: - self._handle_data(data) - else: - break - # Run tick logic - now = _time_now() - self._broadcast_ping(now) - self._nodes.timeout_remote_nodes(now) - _time.sleep(0.1) - - def _broadcast_message(self, message): - ''' - Broadcast the given message over the UDP socket to anything that might be listening. - - Args: - message (_RemoteExecutionMessage): The message to broadcast. - ''' - self._broadcast_socket.sendto(message.to_json_bytes(), self._config.multicast_group_endpoint) - - def _broadcast_ping(self, now=None): - ''' - Broadcast a "ping" message over the UDP socket to anything that might be listening. - - Args: - now (float): The current timestamp. - ''' - now = _time_now(now) - if not self._last_ping or ((self._last_ping + _NODE_PING_SECONDS) < now): - self._last_ping = now - self._broadcast_message(_RemoteExecutionMessage(_TYPE_PING, self._node_id)) - - def broadcast_open_connection(self, remote_node_id): - ''' - Broadcast an "open_connection" message over the UDP socket to be handled by the specified remote node. - - Args: - remote_node_id (string): The ID of the remote node that we want to open a command connection with. - ''' - self._broadcast_message(_RemoteExecutionMessage(_TYPE_OPEN_CONNECTION, self._node_id, remote_node_id, { - 'command_ip': self._config.command_endpoint[0], - 'command_port': self._config.command_endpoint[1], - })) - - def broadcast_close_connection(self, remote_node_id): - ''' - Broadcast a "close_connection" message over the UDP socket to be handled by the specified remote node. - - Args: - remote_node_id (string): The ID of the remote node that we want to close a command connection with. - ''' - self._broadcast_message(_RemoteExecutionMessage(_TYPE_CLOSE_CONNECTION, self._node_id, remote_node_id)) - - def _handle_data(self, data): - ''' - Handle data received from the UDP broadcast socket. - - Args: - data (bytes): The raw bytes received from the socket. - ''' - message = _RemoteExecutionMessage(None, None) - if message.from_json_bytes(data): - self._handle_message(message) - - def _handle_message(self, message): - ''' - Handle a message received from the UDP broadcast socket. - - Args: - message (_RemoteExecutionMessage): The message received from the socket. - ''' - if not message.passes_receive_filter(self._node_id): - return - if message.type_ == _TYPE_PONG: - self._handle_pong_message(message) - return - print('Unhandled remote execution message type "{0}"'.format(message.type_)) - - def _handle_pong_message(self, message): - ''' - Handle a "pong" message received from the UDP broadcast socket. - - Args: - message (_RemoteExecutionMessage): The message received from the socket. - ''' - self._nodes.update_remote_node(message.source, message.data) - -class _RemoteExecutionCommandConnection(object): - ''' - A remote execution command connection (for TCP based command processing). - - Args: - config (RemoteExecutionConfig): Configuration controlling the connection settings. - node_id (string): The ID of the local "node" (this session). - remote_node_id (string): The ID of the remote "node" (the UE4 instance running Python). - ''' - def __init__(self, config, node_id, remote_node_id): - self._config = config - self._node_id = node_id - self._remote_node_id = remote_node_id - self._command_listen_socket = None - self._command_channel_socket = _socket.socket() # This type is only here to appease PyLint - - def open(self, broadcast_connection): - ''' - Open the TCP based command connection, and wait to accept the connection from the remote party. - - Args: - broadcast_connection (_RemoteExecutionBroadcastConnection): The broadcast connection to send UDP based messages over. - ''' - self._nodes = _RemoteExecutionBroadcastNodes() - self._init_command_listen_socket() - self._try_accept(broadcast_connection) - - def close(self, broadcast_connection): - ''' - Close the TCP based command connection, attempting to notify the remote party. - - Args: - broadcast_connection (_RemoteExecutionBroadcastConnection): The broadcast connection to send UDP based messages over. - ''' - broadcast_connection.broadcast_close_connection(self._remote_node_id) - if self._command_channel_socket: - self._command_channel_socket.close() - self._command_channel_socket = None - if self._command_listen_socket: - self._command_listen_socket.close() - self._command_listen_socket = None - - def run_command(self, command, unattended, exec_mode): - ''' - Run a command on the remote party. - - Args: - command (string): The Python command to run remotely. - unattended (bool): True to run this command in "unattended" mode (suppressing some UI). - exec_mode (string): The execution mode to use as a string value (must be one of MODE_EXEC_FILE, MODE_EXEC_STATEMENT, or MODE_EVAL_STATEMENT). - - Returns: - dict: The result from running the remote command (see `command_result` from the protocol definition). - ''' - self._send_message(_RemoteExecutionMessage(_TYPE_COMMAND, self._node_id, self._remote_node_id, { - 'command': command, - 'unattended': unattended, - 'exec_mode': exec_mode, - })) - result = self._receive_message(_TYPE_COMMAND_RESULT) - return result.data - - def _send_message(self, message): - ''' - Send the given message over the TCP socket to the remote party. - - Args: - message (_RemoteExecutionMessage): The message to send. - ''' - self._command_channel_socket.sendall(message.to_json_bytes()) - - def _receive_message(self, expected_type): - ''' - Receive a message over the TCP socket from the remote party. - - Args: - expected_type (string): The type of message we expect to receive. - - Returns: - The message that was received. - ''' - data = self._command_channel_socket.recv(4096) - if data: - message = _RemoteExecutionMessage(None, None) - if message.from_json_bytes(data) and message.passes_receive_filter(self._node_id) and message.type_ == expected_type: - return message - raise RuntimeError('Remote party failed to send a valid response!') - - def _init_command_listen_socket(self): - ''' - Initialize the TCP based command socket based on the current configuration, and set it to listen for an incoming connection. - ''' - self._command_listen_socket = _socket.socket(_socket.AF_INET, _socket.SOCK_STREAM, _socket.IPPROTO_TCP) # TCP/IP socket - self._command_listen_socket.bind(self._config.command_endpoint) - self._command_listen_socket.listen(1) - self._command_listen_socket.settimeout(5) - - def _try_accept(self, broadcast_connection): - ''' - Wait to accept a connection on the TCP based command connection. This makes 6 attempts to receive a connection, waiting for 5 seconds between each attempt (30 seconds total). - - Args: - broadcast_connection (_RemoteExecutionBroadcastConnection): The broadcast connection to send UDP based messages over. - ''' - for _n in range(6): - broadcast_connection.broadcast_open_connection(self._remote_node_id) - try: - self._command_channel_socket = self._command_listen_socket.accept()[0] - self._command_channel_socket.setblocking(True) - return - except _socket.timeout: - continue - raise RuntimeError('Remote party failed to attempt the command socket connection!') - -class _RemoteExecutionMessage(object): - ''' - A message sent or received by remote execution (on either the UDP or TCP connection), as UTF-8 encoded JSON. - - Args: - type_ (string): The type of this message (see the `_TYPE_` constants). - source (string): The ID of the node that sent this message. - dest (string): The ID of the destination node of this message, or None to send to all nodes (for UDP broadcast). - data (dict): The message specific payload data. - ''' - def __init__(self, type_, source, dest=None, data=None): - self.type_ = type_ - self.source = source - self.dest = dest - self.data = data - - def passes_receive_filter(self, node_id): - ''' - Test to see whether this message should be received by the current node (wasn't sent to itself, and has a compatible destination ID). - - Args: - node_id (string): The ID of the local "node" (this session). - - Returns: - bool: True if this message should be received by the current node, False otherwise. - ''' - return self.source != node_id and (not self.dest or self.dest == node_id) - - def to_json(self): - ''' - Convert this message to its JSON representation. - - Returns: - str: The JSON representation of this message. - ''' - if not self.type_: - raise ValueError('"type" cannot be empty!') - if not self.source: - raise ValueError('"source" cannot be empty!') - json_obj = { - 'version': _PROTOCOL_VERSION, - 'magic': _PROTOCOL_MAGIC, - 'type': self.type_, - 'source': self.source, - } - if self.dest: - json_obj['dest'] = self.dest - if self.data: - json_obj['data'] = self.data - return _json.dumps(json_obj, ensure_ascii=False) - - def to_json_bytes(self): - ''' - Convert this message to its JSON representation as UTF-8 bytes. - - Returns: - bytes: The JSON representation of this message as UTF-8 bytes. - ''' - json_str = self.to_json() - return json_str.encode('utf-8') - - def from_json(self, json_str): - ''' - Parse this message from its JSON representation. - - Args: - json_str (str): The JSON representation of this message. - - Returns: - bool: True if this message could be parsed, False otherwise. - ''' - try: - json_obj = _json.loads(json_str, encoding='utf-8') - # Read and validate required protocol version information - if json_obj['version'] != _PROTOCOL_VERSION: - raise ValueError('"version" is incorrect (got {0}, expected {1})!'.format(json_obj['version'], _PROTOCOL_VERSION)) - if json_obj['magic'] != _PROTOCOL_MAGIC: - raise ValueError('"magic" is incorrect (got "{0}", expected "{1}")!'.format(json_obj['magic'], _PROTOCOL_MAGIC)) - # Read required fields - local_type = json_obj['type'] - local_source = json_obj['source'] - self.type_ = local_type - self.source = local_source - # Read optional fields - self.dest = json_obj.get('dest') - self.data = json_obj.get('data') - except Exception as e: - print('Failed to deserialize JSON "{0}": {1}'.format(json_str, str(e))) - return False - return True - - def from_json_bytes(self, json_bytes): - ''' - Parse this message from its JSON representation as UTF-8 bytes. - - Args: - json_bytes (bytes): The JSON representation of this message as UTF-8 bytes. - - Returns: - bool: True if this message could be parsed, False otherwise. - ''' - json_str = json_bytes.decode('utf-8') - return self.from_json(json_str) - -def _time_now(now=None): - ''' - Utility function to resolve a potentially cached time value. - - Args: - now (float): The cached timestamp, or None to return the current time. - - Returns: - float: The cached timestamp (if set), otherwise the current time. - ''' - return _time.time() if now is None else now - -# Log handling -_logger = _logging.getLogger(__name__) -_log_handler = _logging.StreamHandler() -_logger.addHandler(_log_handler) -def set_log_level(log_level): - _logger.setLevel(log_level) - _log_handler.setLevel(log_level) - -# Usage example -# if __name__ == '__main__': -# set_log_level(_logging.DEBUG) -# remote_exec = RemoteExecution() -# remote_exec.start() -# # Ask for a remote node ID -# _sys.stdout.write('Enter remote node ID to connect to: ') -# remote_node_id = _sys.stdin.readline().rstrip() -# # Connect to it -# remote_exec.open_command_connection(remote_node_id) -# # Process commands remotely -# _sys.stdout.write('Connected. Enter commands, or an empty line to quit.\n') -# exec_mode = MODE_EXEC_FILE -# while True: -# input = _sys.stdin.readline().rstrip() -# if input: -# if input.startswith('set mode '): -# exec_mode = input[9:] -# else: -# print(remote_exec.run_command(input, exec_mode=exec_mode)) -# else: -# break -# remote_exec.stop() \ No newline at end of file