From ea2aedf18508d5b39cb95d236d4b79e5432c0b60 Mon Sep 17 00:00:00 2001 From: Pyogenics Date: Sat, 28 Sep 2024 17:46:56 +0100 Subject: [PATCH] Add sources --- .gitignore | 2 + libs/Alternativa3D.swc | Bin 0 -> 179608 bytes libs/AlternativaTypes.swc | Bin 0 -> 22446 bytes libs/AlternativaUtils.swc | Bin 0 -> 13744 bytes libs/PropsLib.swc | Bin 0 -> 127097 bytes src/AlternativaEditor-app.xml | 135 +++ src/AlternativaEditor.mxml | 784 ++++++++++++++++++ src/ImageItemRenderer.as | 45 + src/ModeButton.mxml | 28 + src/PropListPanel.mxml | 97 +++ src/TexturePanel.as | 87 ++ src/alternativa/editor/KeyMapper.as | 116 +++ src/alternativa/editor/LibraryManager.as | 203 +++++ src/alternativa/editor/Preview.as | 212 +++++ src/alternativa/editor/SceneContainer.as | 696 ++++++++++++++++ .../editor/eventjournal/EventJournal.as | 56 ++ .../editor/eventjournal/EventJournalItem.as | 18 + src/alternativa/editor/events/LevelLoaded.as | 12 + .../editor/export/BinaryExporter.as | 47 ++ src/alternativa/editor/export/CollisionBox.as | 99 +++ .../editor/export/CollisionPlane.as | 102 +++ .../editor/export/CollisionPrimitive.as | 37 + .../editor/export/CollisionPrimitivesCache.as | 56 ++ src/alternativa/editor/export/FileExporter.as | 30 + .../editor/export/TanksXmlExporter.as | 224 +++++ .../editor/importLevel/BinaryImporter.as | 69 ++ .../editor/importLevel/FileImporter.as | 61 ++ .../editor/importLevel/TanksXmlImporter.as | 184 ++++ src/alternativa/editor/prop/Bonus.as | 38 + .../editor/prop/CustomFillMaterial.as | 45 + src/alternativa/editor/prop/Flag.as | 52 ++ src/alternativa/editor/prop/Prop.as | 373 +++++++++ src/alternativa/editor/prop/Spawn.as | 48 ++ src/alternativa/editor/prop/Tile.as | 142 ++++ src/alternativa/editor/prop/TileSprite3D.as | 74 ++ src/alternativa/editor/scene/CursorScene.as | 321 +++++++ src/alternativa/editor/scene/EditorScene.as | 248 ++++++ src/alternativa/editor/scene/MainScene.as | 219 +++++ src/alternativa/editor/scene/OccupyMap.as | 222 +++++ src/alternativa/editor/scene/PropsScene.as | 700 ++++++++++++++++ src/green_cursor.jpg | Bin 0 -> 825 bytes src/gui/events/PropListEvent.as | 36 + src/icons/editor_boxes_icon.png | Bin 0 -> 860 bytes src/icons/editor_boxes_icon_on.png | Bin 0 -> 1211 bytes src/icons/editor_grid_icon.png | Bin 0 -> 188 bytes src/icons/editor_grid_icon_on.png | Bin 0 -> 656 bytes src/icons/editor_snap_icon.png | Bin 0 -> 297 bytes src/icons/editor_snap_icon_on.png | Bin 0 -> 718 bytes src/icons/editor_textures_icon.png | Bin 0 -> 929 bytes src/icons/editor_textures_icon_on.png | Bin 0 -> 1230 bytes src/icons/icon_hide_selected.png | Bin 0 -> 499 bytes src/icons/icon_show_all.png | Bin 0 -> 588 bytes src/red_cursor.jpg | Bin 0 -> 825 bytes 53 files changed, 5918 insertions(+) create mode 100644 libs/Alternativa3D.swc create mode 100644 libs/AlternativaTypes.swc create mode 100644 libs/AlternativaUtils.swc create mode 100644 libs/PropsLib.swc create mode 100644 src/AlternativaEditor-app.xml create mode 100644 src/AlternativaEditor.mxml create mode 100644 src/ImageItemRenderer.as create mode 100644 src/ModeButton.mxml create mode 100644 src/PropListPanel.mxml create mode 100644 src/TexturePanel.as create mode 100644 src/alternativa/editor/KeyMapper.as create mode 100644 src/alternativa/editor/LibraryManager.as create mode 100644 src/alternativa/editor/Preview.as create mode 100644 src/alternativa/editor/SceneContainer.as create mode 100644 src/alternativa/editor/eventjournal/EventJournal.as create mode 100644 src/alternativa/editor/eventjournal/EventJournalItem.as create mode 100644 src/alternativa/editor/events/LevelLoaded.as create mode 100644 src/alternativa/editor/export/BinaryExporter.as create mode 100644 src/alternativa/editor/export/CollisionBox.as create mode 100644 src/alternativa/editor/export/CollisionPlane.as create mode 100644 src/alternativa/editor/export/CollisionPrimitive.as create mode 100644 src/alternativa/editor/export/CollisionPrimitivesCache.as create mode 100644 src/alternativa/editor/export/FileExporter.as create mode 100644 src/alternativa/editor/export/TanksXmlExporter.as create mode 100644 src/alternativa/editor/importLevel/BinaryImporter.as create mode 100644 src/alternativa/editor/importLevel/FileImporter.as create mode 100644 src/alternativa/editor/importLevel/TanksXmlImporter.as create mode 100644 src/alternativa/editor/prop/Bonus.as create mode 100644 src/alternativa/editor/prop/CustomFillMaterial.as create mode 100644 src/alternativa/editor/prop/Flag.as create mode 100644 src/alternativa/editor/prop/Prop.as create mode 100644 src/alternativa/editor/prop/Spawn.as create mode 100644 src/alternativa/editor/prop/Tile.as create mode 100644 src/alternativa/editor/prop/TileSprite3D.as create mode 100644 src/alternativa/editor/scene/CursorScene.as create mode 100644 src/alternativa/editor/scene/EditorScene.as create mode 100644 src/alternativa/editor/scene/MainScene.as create mode 100644 src/alternativa/editor/scene/OccupyMap.as create mode 100644 src/alternativa/editor/scene/PropsScene.as create mode 100644 src/green_cursor.jpg create mode 100644 src/gui/events/PropListEvent.as create mode 100644 src/icons/editor_boxes_icon.png create mode 100644 src/icons/editor_boxes_icon_on.png create mode 100644 src/icons/editor_grid_icon.png create mode 100644 src/icons/editor_grid_icon_on.png create mode 100644 src/icons/editor_snap_icon.png create mode 100644 src/icons/editor_snap_icon_on.png create mode 100644 src/icons/editor_textures_icon.png create mode 100644 src/icons/editor_textures_icon_on.png create mode 100644 src/icons/icon_hide_selected.png create mode 100644 src/icons/icon_show_all.png create mode 100644 src/red_cursor.jpg diff --git a/.gitignore b/.gitignore index 5d947ca..90762f4 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ bin-release/ # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` # should NOT be excluded as they contain compiler settings and other important # information for Eclipse / Flash Builder. + +.svn/ \ No newline at end of file diff --git a/libs/Alternativa3D.swc b/libs/Alternativa3D.swc new file mode 100644 index 0000000000000000000000000000000000000000..61378b1093923f2b906bf35441b37e7eadca5d90 GIT binary patch literal 179608 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 z z)2Bl^vlz%OQP45=#!NfFOO-%yP&kNgiP7zD7CNBhK8W}Dsz{-2D5O^~e1?7zpcer8 zO2g|aqI1{744tkLN{T_V7#vpNA|U`l51hBvXzi)6}klx3S$U2 z#Sm`d2sbHoJ0c8`WHilBr*|vHRSS13?5YKfZXn`43cW|cb+TRW-&(Vu{#WVX7l_@f zpp&O)2dta-BcY))m*c(n=OtuQkim0r&Z zx%h5S1FmS;MQ>zzOnf(~aq(?e`9_9`?^e~=sqDb^+{m>Z2>%z`yO;A7(Ia}ZzeR6h zy}J+bJcw5cc#k07qle-l|BtC$b+GJ3c*h3IejKZpqQ-DR^`}+iEj_K$XH@^NL2Rq^ z?BP|h<>#=fH&%6btmV9PU6_u$Z=G^;L2IEdCcn*CX zaYx1k{|@55tNKsSPXNJ>LK0`2gr``OQ68|Mczl0R?2oKI&jGI_~awcbdmnUbMYDO4V$Lyqx z(%Sl~c5unBT5IcO33kL+T#o-fIqo0Xw@-Zc+zXD|A@=)2JLZuwLKVk$1f{8FltBTH zoU}An2b*ig&zTuF1Ny6{60Gr>e{6egjW^Ssn;y+S;Ayy%xls7d67pGOXEL^xaPDbNq6V(~KW7Q@>X--Y^;Rkrq ztHQN)30SGY>V#A>r#8Kzx+Y>}4I!vOKQKWE=e zB{eoQ8a8f2kKXC{0Aa@}NF8Y+XUJ#?FDohAycIFR# z@XC!Xk?`ohN(bJeIihMoKdc0^#qlx5?Z2c@q|p)^O%^sL zVUT4rV0uG+eAYo`w_qevvoKUwQ_*?kDpd_F_087CSVk)MSY?b=Yka7x&^gGI&a7Fi z)kY>PY;0aE*W+k5$GX}WY(f*drW$5Wm&!{FN{Zgp0CL6C4{~Eo&6#O@7L?Zq>lR09 zBUwQPa78hzB?#eSHf|DhOy}hI#nT!>wTS0Ex`-33J`yxdGK`%Vk#v9)8@DVp3Q{5o zxyLlLOr9tGz3OI{V@C_E3xnq{t|O@c9bX#>1?z(KRW&MiP^LEMIvzzrchf5CM&vVJfL*Q3O4C zrXa4bDY$?gUu2lERFYoX6lrFSYFviJM(i+RXBwX4*W$EL%8YFzTEDC@XBN@K!~Co^JD9DVGcA0S6kb|rsFBN%EkBc>ta zT*%GAGixgT(#turl1;7()|VSan(?+q{e?MjC}SzH9GsP@u>_m0?!O?p1g4DBmt}vU zcIS;3I?F9OdhKv9Qo*)Z5v8)Jp`m%m(W@XDJAoHF6v&T=YL$Gsu~xDd2%uqBtyZ$b zf-=^#!c3jX&@2EkiU>@tSyWT^XPZVPSJhBo6>J`H^cwN?5;;!i48eO@$jXyo?#^vs zU`pa%;V;nzcK(E%`M#2!ADvng)M2X>)c<@nXv6gmIY10#xNe8=OcruiSp)TSRgBmL7ZIO6g=C| z$A98uz`*W&KwIUjVV@&bUkH=8sWw;_$>CUYYtCtIX{woKWXqA-b88503+o!1v~zfO zw8cDD=7fWdH5M4Vj9p8NRyrpY*9NfHz_hh8hG3~|=FKEmhH9G^1{;qLHV5%Y&CJ?! zYM|7(@FT@nTUQt3M6F~zq?}Z1a+iJxx0*rL8mfWrVeKT8NJVWEs3)zaz8bTvu*TNR zX?kfS%RGExMa$hXw+tv{ip%3I^~z|YiEdg;9g55Cbb3-d%{j&8b$d(ExVTK^vt4nO zx=UR$wCDk_xVTsblBKfSRqDt-(vVhMWu+yhK*v*7hNhY>sOEB(0H39vvSJyyb)j*n zw@h|=UBH>k?Uo&-4yaM$aF(PW@_i$Fpkc*XhWC1Sid`i@-COERN?0dcZoJLIRqS;E z==Gp=v;)XGOG+fKr!*yTjzeY0){M6W;wvfhDvlB~Lv^`JJs?Df$740WB}<&hR++eTn4mAyO(q_hPDHcSuAk77OhI9a!rZ(&y^==#HYyF_F2wIa{60J%K>mmD{12Xw;Q1JyPvH3!p3ea9JBWXU=O8>6iki4qgnq$u zH9XhCbDgM3w?SNBy-gGc@T;Ku3xeGti1q;kMz*?2h+Q1hS_t8Bt%ZX9RF;1_nHNo>u@B$NDW`fI2aD@q8WP&SA@M06Z!~`!j!Br->+632_ z;AJMb&IH$+;06=iWP+Pb@NyHp!UV50!K+O08WY@Nf?G|n%>=iZ;PobWg9+Yff;XAq zb`!kW1aC3HTTSqGkz7fxB34--uAyiGC;S85CzD}lz9&lKV001bGJ+Oua^^T8T_8&F zcp;al-f_Z$mKvIh_1 zD#ts5HUL5&lCh3d2t7&W$Z|m=SygDdCeR}q?}^=>H_WYT8?Q0PngZX#$+X3t`E`_)$nIi$aZu{Yp^al+ZM zMDhts4%`eCdXqty6Z9Kh;6RJH!S&;XY*HvQgdtZziAaWS2Bv$FqEY37g$&DJ3=UTq z#)xE=Dpt|9&@maviz;yn0_hJTMmsXsfJCRwDv^~-@wVYsbb{I|K>T8nWzQ5*3=`Tf zAVDgLr6f8iAVVsJrDQrZpg<~ZPt2pCu1yi;utJLi7Rb-o!;F|PKMC_KbaWuupE4yy z2q)9>Kq{c*GD4|zRv^uvJ|$fUr_s3q8wYLllt2bY&!A@nGI?$$Z3txfv!`SW;Vjw` z$l(Y%^dEs-4(4JfCJS^acjc<+imw|fq!*C*wTPHpMwl6wMYpiz3c`%I&`l#IFJk6W z=*#^l^f|YN;0>qZ-h82XA3Xc%T7t$``GTH@e<;h^jc#2Fg>^87hmiFU4iz^Lx}G8F zJ(~B?jRdRV9qv}TiDh@_c|eeECQ(fJdP1WcNypme{T=N&uO2)|uQV%PMf|<;h4y^1 z)z?cbq}Os7eP(Z4`C+Edu|mXO)e&hmDn zpyZgp(*4W?vQXGh=qvC#`fg+AQ1K&SWUq{;FdzQ4~%Lb5c(lj z%ft)g|Ho?angaiEud-S6JCGby^f^RC#Ie^A&Djg%ESo^f)1+&l z<;n83BDAvuMOnLi;@Gn8$j?FFEDfXq~H0IXRW`pTVc*&)&!#E^;txAnj_Z(=n= zs-Cxqn;RIV^hN-5*O00td_$omOOic%Hw?Sm#gL}E@Li!nV@XK!l@RvQ?h->*w2fsB z&Hp3vH+ioZve>fv$(ig-%TM0H&Ucy`tSBTF=C_-gQttD*C;;Hxm>a?GXKCzA`}DEBZ&~3y7-s zK&3TOEVQBR?JJ^xRAT-pkoz0POC18`Z!+?zlkio(b;zrHTg2PgLdu|E9$qeQr5_lt z5D@SUz8|ZN`~v~b|32XVBWCO=rO3)bRAp2|RmNsVL6sF%85L2LQ8v)N5>b_XEut#> zMnqNiE&9DxzeB&b+V>E8EkB6#D-qS&*CJDE-?FA-Y7MBW^gDdNqa*O9zei|HOO=Id zx}QW-(?KPs>EitAqeI#bG|b8q1n3tgZ$Y2ZR-POavg}xt@mNd~{wx}rP(w;w6Cx=q zCuI`SLRNjWNeIS+J_ZOq2(tM_jA_bWStq!rObR8zn8`!$zKk;0l*yrFrYVyxN%SDr z%N-6BTBVq#Tq5~LqNarRP0yDMO?d%if~Lg0WoVyhi7zRurG)pumXy^Jz6T74ifbf% z4{IfS50^>!9@a^?q^yV4SVGyam6+_;Nr|%8$3|jH%0}sML0g!hah(_)QoF^Mluc56 zNr?**QTdWGx*IMjo28hbE|*L}#g>#Sq(ng_E-6<@u_fi|xS+0){G(7%I03fA1ho}1 zK~R{t4FzSDGi0R=l{?zL!pgnZ5Y}<*25-nfg${4Kpem`LDjCx$SeQDvDh&iE+#=y- zl)#M>aOmeBX_@$wFd-YW4)2z!g$B(|Tq9V3wD9T@Mmog|`et5NQQ8oGKvz6$L@ ziQdWTMcEKn=v@*F$#M2_c0{B0=cI5^ThFZ#rA`& zMT_ks0x#ep5RE0P1=a3k%T9^zZCe1E1Q5Fdd}~Wp8hus@rTHi8lhfwl{y+*PZOrV0*9rhnL#opC z@sC#7Lg^t}aJ?;>P@EEvq~ zIgOBhAFnP~^zpC=gTg>4VpBP=CIT<@Lm1PFUY-Vd9nCn)Fx3ph=zlPg5DP6-LvpNW zd@~I{eh31_$5j3*Bsv~;uN(n}43vkoJ;Dn@X10>L#21lJk_FYQEdz3d+v)je!a zw}HWK25**)O~aLPe1~wgZ0r!Om5;nbXp;}$A>1HG+k?aDcE(9NGIFcj9tA#jfVgJ2 zqjK@hfd=mYJX9{hx%5sM_Q=!e-Iy~vIE~&bNA1Cx^gfJc(FZZ|(1$Q`+ul_`)@P}Y z%V-p@JpoajWfz1CtxrQZH0e2+K8g+DfTEAf?fL{9O!NtW=HZBO}_i(gE5^yr5kDqnQ585a>&XM_sO%l? z0c6iIhVO?c(BbqGnNf;O2>)^VaqK0*dUv9jFYH*9nFd5Y#ftbg@tc@_4yl>;>=b4X zAEQ2#9>8q&%D;)feOs|C(C=i_x#O7`JPbH{_8|O9fts*iY=`Y)&`p2Ff+*~3e=)1# z=JaSkz)MW0>y(hj zzHMN{tXGaUVr+DS60)^aWzbCuAABCRe7iF@EA(=Oy?K~SDaQfFS3okKYykyFuY^WI zS-g>}j@n2j?z!nTtbr_gEo(57wke?uHdIluU8jW7U@2u|oqg$Ej~Vk|p2Tu&{{XZb zjXG;mu+nw~R@cNzH)BSpN1uCWlZC zBl!gDv5|O638k|iA9gA2q3qy%`m_QXDxKASmSvqvUsOVweBdN%iN|1p-VJn-Z@ouw z3f%*Ak#UyjfRc8Y3ok<^#(NPnEqEH;hghiq><8+pK|g&3;S~AC(A#_@&N_=`T=u2W_a5m#J*wxk$y{Fyxg8#*r^p zd1n~%r7ByVHsOyQjCwZe-gUe#&czJ~V&fY*CTy=mui?3p>+VF7CwW_&R zZ&A&)x=lqM5cxXJ;`NLqy;)_QJtMD>-ikRcdYg*UkNPTceyQzviN^<`X|+P zeRwoG7k`{!46qeom)Z`ii_Hbv|5-qQMJI1j=E?BQ@jOc*k1wgPx53oXD$SOUdmAmJ z!rn%vyVVYM0BjFyE2=VO)}ao9#7nAEQ#0COH=|ipx=+PR-|`5X?ec3XeGTY&utW59 zwY^<;gK*wZ+u`fZP2Yy1*}l_ZJM#_}&0PaKkM|80W*)}E2L=ltG8X>FS@@W-@O~#2 zJ_khH#eWIS$grMLBtD$&W4=Zi%(B%(>35hr6IS3KL7b!8^=a8B;}WR0<4I*b2*^Jt zN@G|eE5AS|TMPEmUy;T%sGbHo0iuXa76izNu-eGevj$H~HE4LI?L!>IS_f(@jcKfz zc!~{~U7>MiS88!)FVPsYcjCce&EOG#Fc z+=Wmc>LlPN`5?d-`gGz8eI}v3XaDepK4-M|d>8FK+o`=5|B&~W3|hOpp!H%WT6;A- z5-nL}`O4Y&G~q!{4!>1*b*JxE?xXv1s&jqrF+!-kikt zzA)PRvQv8p%=W0+-dDW6uaOXI4}TT@79{*A_UUuh;x?njAGD5qAsbKE{;07}s-FNa zpJd}U;}F0n)ny}8r^RhZs9-@+C%`1-s6 z^E{wlFSJBMDsH|l9nb>Kf#p~y=mTzGNMH-P>2MQ*XsTP()VyVcVE zf4qGMV3bAn_%~nK*_Q047uo^=0t84lg#;ThWDyQfX#(d4^KEuXG|ecKvw9v7YRgy^=XV*23E zF-(2N&UYEl@@`?zaTc@Z?be>-MLRc402{fZfV-~??!JMWjoo&y3*RPn+k>Glu5aAM zYZs`JChUPU-FDfRj2|}tVmD0}T#cW0-?ihHw^`D=cJ?>m{HZZJ@?aRkfiP)HJQcU3 zNH~(uNq@jo!dCY~0pzof>}cKt(?=lwW32h9>=TI1_rXs1Qvp=4&qM=17pXBVm!L20 z{1q7Aw|`~lmJ>jNu0RR;-jE=8_KpjwOc0eC*V<( z{A|agsQina{R|ZdVwe2_Kn0Lu`%t=epww(7%6>a)Ijijsw%;BMcVnCJVm?PO+{0mw zo#)V1^28>>~-o>?n_Dl@M#1iXLJQ>K?v}j!*hVBi=7)Hb&!9D_;C0_hB7I4y`P!~NW*Na zLpFTt%E%2b!VSFCBiHmhchG1~$9KdXXQ?`G;YdVfQFsI~ao|X2K%( zwSzCG-U-+_-#EJPdkoV07HPErt$#VNEM4u!)yp9kDqZbK!4Ih4@wlGKOq>na4-WB} zxH6Od#}RDB@7sY^pzxD}-!W=5zTF9pKhG%|pBhOOjnBZw_h94KIeHy>k*-M@v z)b3*HDMC;c(vGp6AY`s&oeuGoAz5rXl(J5LF zv^F`7)?e;~ognY-E1X!W;KK%|#fN8s4_EOxlMh$(5a+|SPQ2~Z6y#g6>3?+M8(L`c z5SiSw4q|v$LeM&!I!Ubc)|o;Mx42&fqy1 zf^_gl0_SMsSuc_wN!_Y;H-7W`$tgaLI(_ZuhFrLJ_{oXo5%ij5bek1)yNQZk57B-G z?=QsG4yoTDbO(5Qi2ZgK``H=%{p{aM?Z1cJ)h{4Cw!j~tZu^|Nt*0`;_Ja>6iBHP6- zu@S^Lc9~0e`jYUI-FkrVE8bF+{I`g6ql;|>RIr^y+R56;c_gx$1ka6}yB1r_Ho0_H z%v!9wBIgtSb`0MOT<+rG$OQyB7+6DOtmS9;R)iN4xsVunJ^Up%#{hXw;3?egxh!OG zEs3lp_atWGKyg9HiVCbHB(jdP<=WUB7m>(CMvm)T5Q@ohQ8dR5u{ka#k&DSaSR;JT z2*H>v7ef}Karj>UM%TdTOZv5yb-KEuKL^?Bn#6J2T)Hi?Qm27S33Tvw9^w+F1TG`W zcy=4d1lAK+D|fiEs#-&KcDpMpxi#cqJ6(LYJRb)+tc8$ok`mZJ^|xq;*g4^2Z{PokHq-dsM=Gz7otWy;)e zb2Y!sk{gA9sX_kvwy(SA>L(rdt~_MG1((yJ$=#?*SrZC3FKB3L5n8fIv8WRpW2_QL zbl#%5<@0Bi9diWsB6xvEMGKr<*?eH*4z|Tmba zDco!*_oM!|txXWY6y$VLqhcz%*(eRs&7Ro$WcdpR-U0gm=_1bm!o!Id&YS5*cd?Po&=Qnus^X(r%TT-CX{ZV#)0bB+TC6VD(FrYDjJJ3$THL&_0plE| z8dNhi^`Q(OW1H>ut#ur5)`!nBI*7J3aKSOO_6@AZ@J%hLLnwkp)wsqTM2@Gl*4MOz z=W=-%pn&aYF_nYVv%%H3tIkd-U{U{yFkFYz0!gzmLg(>$+o9vKxlIGK8Wxd^}Ld5|{O zpf0qy4@-D)$HN*^HMgNEJh^nn3{OmG&PgYfdadw`()qtBpO+kim=y?=&o7@>Rvwe9 ze17SI@+2#KLh1Y&bMVga7)rC|EiRwGFecNS(xv6|6Jo-cp?qGVg_*l(&cazI%~={l zW!{PN=a$Zi$#o)71xhhV7L?5|??Yz6qT?6NFD+Z>h@$%H@G8IpjW^sTn(MS0sqv;c zq7AZ%W@xRr<@ZPH~fIRrO8+^yTfsA9Q;2w-qF|!Q)|c82W*qCLpG0Pyv){M6lE^%X% zI26S#jpCL@am%7O%uC|D*oK&GRJJFIz^N|#w=S4`j5()D3Fi2`)>cFCArlG4Y?`v8 zoXCzFpJVYQTY*qwl)AAa%KoiZS=(4$>4*w$ANBHy2j3`7j!g@Do|@1Z^)RmsUHJqo zIyOOeTAu+uIXck$Xt^J%$k?=TX94+zX0Z+ol|_q=O_<$ZPk!=+vN2MsP&-6}3y_>1A19tK5X=)9%G&C7~4;3DN*vrY7gQbi@aeelU z2Q~I^%n=xS;N_hfdno3YzZK>e6vg$arIuGxQkbt47v^etg@pxq;O6D$DpN~xlLpxu zYI((Zxqes7*-Xvz7ftmJIQsaD@qW1Cg5n}av=YkH!h%GNq}o$msUB@u>hQGT_7SN* z`$+q!bdpIjN2ivg9-aCSk>k)ZuW8I6eixxcrbJwx<)Dh2Dsfbar>YmP&61Oc5bDgL z@)#;B=0#g$sdF5)kEikk>YRwi3!Iavb24>u;|0z<<8CZZF~1mVH1!@s?PXM*LFE&u zlN&6+%dpC+9H8<{<5n#BM5>;Ib_(R*QfC#~8jy!ldmWYQ(cFMTAr6%|G^omj#Icre z+XIe^2ywK-Q%)QK;+RPszafsr{cgoFOcL1F!gCS8i^b(ue-xKqB|Knky zc>u_whFbLi{1Eub3XWJN#H_&F9QD(aWR%>J@^}ig#o-I%X0q+vkRU(;Yp?RF7W)6PNVd0fbN0k zUU=?<=YDt|fagJY9)jm#cpic0QFtDMCymm_!AqtzgVHAe%A_=f(kB7xf?}Tn|IhF| z4bL-B-RI$X6`me=-hgMXOl@z=@sebhBzn{ZAUTuft|LUrJXQs8(#*@qI)%WW)0uhl z`~@V3ZY1rQ;9VuW&FIZhwvzTCWS+F0wBJg|ym>DOf6nXZgDA~=79_wWpyxZ47|EU?=G|6+lAEbvVWe9Hpgk;xsz=Wt7INpjvs zPSzA6{fV6HbP*y?mlcV~fs?65l=72pDpARF0w`?`zSKzfMTBCon%yO%zmJET2<#A=S%bsP>XNCN7wL2pB*Y&yMN(3_ z_U~uYkZ!l`4x|!@KdKud(ok&_o(xfBAX6RB^0C&Z8?`=$SJV+1f>ph`PgVWyV|z({ z+;P36Abxr;DfE=HV=*PKJMLY-kf#IZb1Um*ReVS3}iKePiPfE(Z{cINg zhE!Hk74-@m2;Y4C>IEF*vH)V}gvW(a2*Tz=VRMAyeeEMr*hYrD=p=x!Nb`Hiu>_nU z^1@znoU#NZZfP%>t}O#8wEY$(?o<#Z`-)yt>ZtA|$2)7-!mfyWY+xvK++Mb*hnotJ zBXVGrJf1BH+Q-he6Oaa#E$hjWcrV)6Z+nnSlm)X0O6pC>rHURdn%K$9fjuZ>@msp@ zzz;p~_~|K%+IT18;sg%m(9<`Wf$EdYi{jchnSp|2T#e#1)VI=Yl`j6XZe7=SMS~`f zb(*pax@Sdj^w`;>N&9FRK&OMyBc9Lm`Q)Ln-2G zc8Z=1DO{{hcj&IM(EGLil;nhup+8gX$?SB0QewjW5J<8ovL;U4fy4=k5_iGacQyBt z3GNn<%(&KGQXb#dO9Gy=ddW=hO4h8Sl(|_;7s!7W!H#CFx;rukdz-ZZl!jf-&f;o% z(C=&|KpEKiY?T;;ZetAYWoH|mbdH!#_>TyFr>nf1jE*{2*M#o#@A>y6Xwf+_40{b2 zb{@g1j72qe($%BK1yW^R!}EzAFRl!@03b**j$4v|(e0_sW@{1fR-!Qp01_%EuqI^A zcl!i$E+rQ0lVVwa8ItX#lnV>sgMt6aN z?n3oOa8tFL!A-MufV+rp0XN0o32ugCE4YiDw}5+!Ya6&r+}puj8n=U>NsK9xDcylw z(z=J;NT!fh=+|u|D(7yt-3r999V9xUb(Iab*f%88rj-QPKCX1 zF9~|?0=L3@H@M3a?g96-#QVUlOu8RjJ^2A}Ln)6Cwvz-W&z>wH|JfY`W=wZdAUy=a$NN_7Gw~3OfPq1&oJ1jF@By06GCMUiJv*wC;kU z;OPX%gHLA%xL$lZI|6=Se=2*F=&8CEUk0P&F(iXoQnx}ekBg88Lmu{o2zfE&Wl!Qz zp*X8NMZ_Wla~b}o`e_&xln=q%iGONQ!ZH{|Q|(1UxBDgF{&A`3M$#@;AUF=y8B3kG zby$)9I$^IPCWGxId~|qiJf=G1O~_G``4+gR4|yBhGlsqcZtbx5&{_v>Br@6GIG^=Q zgU|0F7xQ6=u=lyx=)+NDZgvQffq;Yko#+l6jO;^f3rsUOUAws6ePj%T$LwfJtanK4 zBcf*lDg|}1poMy77U@{+Rq$sht6@B{j|n7p^U{aFa$i7TfU-}CJ~T`6Om^VaWyXq( zqV^9EyU1kVWIUD_D3rTBPKVS>8iw~miyB9uIi)jw>)@!-H1c9_n@6n&w`KH3a9gu3 z2e)m^72uvV_DXP9j=KunRoR=tJ$wAs;GQ$#T5x|i@j7tN&AA@j-%q*$+&@fyKxSV; zrJ&eoONRDo$uMs-|K%1mH%p2)TDoO5u24qvA<+o-EzyU?5*gNqh>!hCbi{~=i?hWS zadEwte-nKK_S1Jn_hDI-+bZG9-`8Yp!kYd2Me)B7eMl^~hx8#og6-psjW?=qRL^c! z&&T!;UVOWZ#SdZU$yoeQUi|qoFaBpyJXDSPa3j>`DxlK(GXY zf`kBoq(9gu9E@I?$pNs77#h?dKuvH zoscXW5tG;rvOZDQcCI$`q%p8@*J?wlM9+zh%IOm|DK=^nkAlUA-6-pmSL2}bA$|-N zJ{Ah>fO<^m?8uUKO=wF{FiOQ#3F8o)%zqs;R20uAwj5(xn{I!WXfRq)@UEyB0BYeLS|&RHQGnpL?4YZ`e?i8qftg5-6r~Il+j0j5`8qv=%XE? zk471Nbi3%IQAQu#(Z7#&_3xuQ`}fgZ|KmQo`~S3$?vcHzs)Y7%Xe7?R`>m>TQXOP;2-+ zGNnt#Uu@@g%lM1!y!XKK`#+LVg*g9X8IAZ%X-oV){t9mmDR^9Fk8$CO?lc~k`BAb+ zcLk=&u;*e=$a*1&2UGyI2R+;pj2BCdK?_`40>$!Y-$b+>Q@0WZ-*7IU#io8CnPafNY@tMg_ z!*a1#)`vw2y@iDAF@)a6g!TgydI#f&azcNTgGcMRfujlH-;*Ih$d5nGbg=i4YHr{d ziIaR!*8Q6xPWS71DeptZk8s$Gfh{}xSnh&!sX(ECeZpl9_2NI3^#b5>E{a>^SkCFn z~j+>t~QPDv*cX+)3**Wx$j2oKMUE|re2vLOo zg;0TB5GjLQ;`cJ{u@L=(tjFmExO4nT9t+z)_A`1J>=&8uAK&M@##6rIyGGau>P|S} zp{=yD+S|onYpo8c-r;yQRC`84GIpKP4d;{-Bym-$($&q6iPtKARY`ag zj)|&WVK-q3nmSTZA9Fwvw~8VRBXBnHF2#I_r*RV~#(O;D$mm7~tp;Tu;Pi-j)9^iC zIzk!v5+)NV55bH>u_?DgQx=jxDyT{=Z&UEC-*#}*)Z4(loM?Yi@I4G#Bub^XE9{TT z6g;=x4($#NGaEkK`-K7xAFdA@jn(WWR}eeeExM98?oilHh1boNO279|5By z5jJezzu_^?r;iXXz|M5u3wfJd_k-K)Mmt8qIJ9F_5&tl_%RP^Pdz$xAa4QoY16NOc z9Ncq~o&fiE$xniNZpu>%yHn9s=n1rc~?ShSO7trVqH8%@;*@H&vIJBhX7AG=pkmz9y z@^cvk@v2h@^1~TFTt13Mjm*Re>@f_Qi4)PdQd~4~5_>|?J$h27?!_}Ao+F=B0ERfKP!52_fAtQ7~qZEz=90}DKQZ#u@R{;5vdq~KhG<6WpZ;+qur6*9?^e_);vBy`ywN!c>BzkiCoev>44H2&VT9X7FE^FTh{kFCOw&h5Z$? z{04_F`)#$cQ(bN~8#co&p!-plfe%@~%ZXd?}q3~;)ZHjs+fm!TpK8xA*z!b9=XPB>X zIw9XE>>EYsB#O5;n)f$`THfR&MV!s5un~395lx*jEm0bYzT0<&ZqjvScoMF7|ybuj?;iO?>Yw=!L1HH~f zQ+BZmYhpaUsosJb0heIVgKwm_pklzK81&+sX9zmkdc(d^D*sG#GjUx3#di?*l`3Av z8g~_V=fqzP?(aO;fP1d@T5vl_!VN0h0F-z=HmY5^tH+!aUHuPH8d{n%D|ba~<=pJb z*viGRt70n`&#qQ=hYrUCrykeIC&Ft~fZd(C9k6^VyjBG`t`m~EJNaaIg9`JQ2d6tY zPoPDY&JLUuZ&dX}U5&>n=_VCzq^Rs>Rd+#mb*j1>*|b&F~J8n(CvDEvvqZyt78R@HHMJ+1UJ%GNJxaBf#%F2UFOIon8A2RI#T zxO&nWNbZmoRsB@q>Dx8$?*WtZCmblNwG$jUI|w@;{o4t<0R5eWtwH||!Y)LA7h!AB zzmu?a=-)-yMd;s6*v07IL)azg-%Hq~=-)@!W$52e*n0FIAZ&vXzfn8ETY(nMv@Vcc z4X?M3oYb8ObNU#`n?TTt633k^aK!tIxHTAY^94@!e$GuSaohrdQ@n4WaS4H2C~&G5 zRdv=1+#-R~ygS9M!-!ifa5nF?{Q6;zJ4N8Aca1R6gt#RFXZM~dt|Ug>Qh{@DgL{_> z+%kc4dS{_Fs=)nL;9TB9z^xa!Qw7e=ZC7m&xS+trp<$?TxWtW#$IcrQZuy23- z;(hy1+qb`Z-~PsZ`&aJU-@b4Ex_$dM?%RLOzWp8h_HW;}|IU5;AKbV9$$k4FHQo?! zQ`NJ1ccbm77YRYzQAzS|_*3*p2dBHycqiEm9E4dbiTIEZJ(x(&vE!njvzG@tz=x?!<%rcCId5Wel|2l}gTC25sohtn zu}2_OtL3~!@UZb1Mj0F0IvaZef?1@c&d#2~BHkuz>KyE81mD2|l#ZNtk))G7i@3iU zxW6IJ#hw%OcICWhRKFwVebT|BUWBM|ZFO$;lFFm1vZSOeG+1e7`9Nf;>d5)f$npwA zjm0dli!8W|@(qO>R!)xb48V9fCh<4iOdW6KN4%9?W-%X&V&Xe;J|P`~hy{8(ay~T* z?=}kOQ zX64K*e>1cEU1SLxSw1kcd?~Vott=m!Sw0q7B1V=^%q(AtEDoi%JPMo<)0!;br#`SzB03XBeGOmS$fSZUyCd?MwV~PEdLT&YOE~ZnpyrWvYc*Y z`OeJpoyc;!mF0Ug%YTeC@VIdcmh(N~D}RoCHBb0Q&5+Y=8gBA99XD?BR>8~_Cfxc2 zOfYP_W(-j`xJkHasLNot31kLt9O^RJpERRBKcJUs30unlt3C}gQgm-8MZ^NBt8}72&kce$qOZv3oZnF)EMjK$tWcLVUawG-jRCce~gdfES zzfUtJUGFrU$?vyn!fP*bB1^n*^f-f*5^P&EXRUWrOPEZ=DZ3V*1lW$GJOI=FgNLT` z(*bz&u*TCGXO9Gzm>FsW$iNN%fi)Z zNW_^XZwZ881v*eqy{z#njPNCCRAR3RA`p($W|19jb;H8?S)<^2^ zNt_4!yWOG#FOd1v4uN33ND`j-{MeL)n|!VA)YM`mH|M zIr~JGw>6$BaS|kYM=)p|XVANSa>Q4eEH=yf$mH*tku&c}Tmk(3SY*GLXa5BGc&1Uu zGfAWgKY7%_DY_rNne*4jK12RqCX2Sk#ADmAxX%Y`niUuk8}LD+_u!Iqphkb89WwuB zeB~R_7dGZJXQbve-}kux20q+z)T|(J%e*X9ZVARz_Aq+!(fB zi;X$kmy9RSc9=eLHp8Hy-bc~wj*ZvzYF^LtF<|SHDdGyA6FDdOG;V&fZ&7DQe#b3P z^uw*eAA03ng<@lGogkJ8d&e3mkgXX=A3$2^@}hO(wKmS_{^euFi$oO7xmFIGOYpq| zVlTm_T#p4&-V2x7`pe_!*g)1{OR5zZ1M>0%K?9nWyu?(`klppR|5aI+LRlLIFRN9Q zwbAxpke>wPHw{j{O_0Cbc4QRa;dVr0#^jZ@gOACpY=@+|7Hw(_UQ1(uUTqsJ9}etm zZ2g97?3gj@aIKB!;I{y8!#x_91O+co#BgJKWCsr?wuig0S_I4YRe%IJC?&6Vw-%I1!U7~Vn z5hrf&?zWj5x(?jX-D5C{GQ28F@fna-X^4q>BGk)9Ks zbaY(kI66*{Cj3EC=Sl5EnlMi~k4R(ZNvq);Fi$$4NW*4I7Z53Pvb2Us@ux`_5-Dk( z1g8XLp0tig&Uw;BM2b62x|m3#W=fY3X~;YY=9&ymx{OG^nbLY9r8uMwL>f9z+DN34 zGo?*LN>ilEi8NxSbOn)YcIiqYrO%VDB2xA|X)}@BGo`DEG;3x7CA7KuxJ;~ynV-Z+_EuR_5Klu^ zdK&s(RF1Z`QleC2rmO{nV#|+Mat9$|&0XB`lN;|bH!*w|nE{)qtYJJzYs4nZ`ENNF z+eT|vozHvte@VPNzVGCz@q6N}wg;f?RaONS@SYrjVd%S)8d{(iYx+;X&5GXKc%;_7 z+(Jmi4fUq+H0O-+1!d*)X3Uy5)37vkXj@~61J|aZ(UwOmdJ4!luk3;p6u+j1Rejr_ zG&VFIEL%CZnPxFY)cdF-?3q|GG7TH4^{8$iGbRLSEz;Cb-(s(6UI5+M61H<=3s4wZ zJ`k-;7WOgvwu4)1QuWHv8S&^uS<<}t*9y_WyPh7u;G}ub05#OmxQf=)^IEGdHFe=p z1N&uOxDp0%bA~ZEZ8s`1HdVS^YWO9sU*9TdCF-Nt7^!)}-eEHV70hQDms zU|FNQ^ENg$VDq5<0yn}!%&Kn&-YjUW4mVjDxIHs&o6HV#a!X}>D4cna68_scXONL+ z7$UUs8ME0|!)r-u&@`5NMQwv#Su1vtTDWROcnNoxa(CIFM$O_dD%v~`hGrNIgRs+z zbs&hOmqekZQD_-y@x=B9WIg47+xDnr#huhpyDAzq?944O{H2D!EG>4$EUj&*Um>_c z&WID6-`a*|=(8n#LQDIEmdTAP<;GQV^H=o0jJsqPjI_hyM>mrCi8Jp78wtM;%hm?V=sjP{>I~U?`;j@$l5aCM&cZq7;=B zCl9tbtHrrRMJgH(QS@CQmc8nB?YR#sJKw|`-}3_A_%KR1^M}^zaSS4 zjrdE7)WWGHQ`I7WZn3xj##}8ZEXY#}^NWjAe{qRlfnwCWg1jQNptx|VT2h$jhhRy8 zGPS5g_2(58Yk5<13k$Wpys1TnYFHG7X#OJq)I2S}WGWQy&(DKO7Uvf!#f8O6 zNp7xEQs7rgiUB#*pR48-P0dsNP<0JzR#J%eBGvqYf_!LK0VbIW6)4Ipfp+BsE%>MU zbEiTql%wYP{gA|8Sfb^X_%RFA9;yZ9<(FWK^P$fE+`Qt10sK`83ky9ONli*sQirEz zrRLg$c3t~J+VIqN!tJ7*M-&%PRMQ>`QQNpd6bB_vN?eq4z`3)s=sB#ij zPNvFysw|*n5mis2WEmyDrSw#)ET_t8)LuzRh>|Kw!_*$3WCf+wRH>$TP*CS(Y4 zoKFZP7Z6I<5UO2BsIm#3%OQLnJXgbWJ>Yjhng;>@XLz26=T&&#B~<>NP<5S5mGg*W zoh+wFk|L?n@DU?Mj9#a@-GrL~K_fNN$ZUyZkIZkMAdM&lXv9>6iV-S7Xc|IC0hC=P zDcLTUYi|3D@_-D`!uA>5UktwT8<#8Pbch*BvKP0t*OKg`uOjVBNOtX?Nc))(dRl~@ zgAi6_+6zQ}k-SV^BCn7r_?iX2Zh^Zku*(9wEwIM||6+k}Sl}KD+-revTHsq2__hVU zV}XCQz`t4GdlvY<1^(RvKd`_LE$|}?{MZ6NvA|C)@G}ei+yeh$fnQkQmlpU>3;fCg zdo7Sz;MW%TjRk&df&a3=e_P;p7Wjh&{%C>!vA~}!@MjDB#RB(P;C>5im!sf$7P#61 z&$qw}EO3nlUTA@9E$||lG`Be15-Dyhm0X0lr%Nu0$dji_BNP}FLynhJq7FS?vJuSz zIEmOYr%S^nLQ{D{`>^9BJ8_IJm7K(x!BMWMrBXa`4=s~mE*n-RIY|7O$4fHt3@MW| z;`IX+*+vp%PAzeYC@ASn7*Qm-uvBuB6ep*Xsz4Ns%(Ud`Qi?>QTTZ|!uQW8 zmAoYX7*3!diF<{<>C#AuD@y0VsfpZ!S%w5igRBsVB$MVDl0-^UfNhEzFAVP_Rgf%y zHNM7%$x793k-t`11fw)5f_8W!X#WWuyAolk!X^(soz*f+tKepNs#TU=p>arK85K4T z*;r-;#VaiE>8z$~NQFJ9MKpXmtLCRKO@*2AV$cm?QXc@+r)Oknk_ZN9S`XBM3l6i zunnXFe=>h3{+zd~6~Fs*ZES_U*+}|!#3m9P9~dup`% z0y+rWLMpU@1!%03^zGWMW&yWg0d}*19azBa1bZBRB5oFNw^6{|gxy0bYy%6hv3p5h zVY$yN;C?K?sXzhm5+L;mmhdR4P_U`h3VV#V2E{QR^*tWP7(hVGle`+yn5QrX5D@b; z=_}*UkctVMdl24QJ%K$-Dkhp#w^mPN&yk88lh)Si9QHh^m=v54nSf7c^(6KJshAv` z7@3GqXZ2+EBB_`X%!%aS(^)-*y-X@{IennH!;}$@0HQnEs&m;ZgkJ}$s@k7%Y`)L= zHA8wI)|zsHZa{vYun$OgBroWX_;;E_jIhvRLK{8oLr9a~FHL^GG#^2lf_`ZVj5LXO zsprR}rz?_Ina4gsAipx7eTqOqWdZw)%w%5@yy-!t_@@D5qOS}X(=ifsMx5O|&DREu zX}&RFO!F^Z42C0l9gyzdyfhxp?|`)5@j`jHpaatXK!UlET&|Y&BMBCE^#lrKe#Hs< zi3E!vSR{{UzaT5!nhjW~0xK_&cjt~1m+B!$FOY$k1l@V^8gNfkE|l3CIZJBUEA(C0 z$-$}E3M>_G`3g)`@aCzDWL-sNu3mDodWp;~5%L2p>%c^j;tuQygi0cLom-IQB9M=P z0wYj>n(P|8RPK&Rjn_v&+b=_8G#5wav-OCK=H|!(wo&HwL*z7zOte0n+NRhvQL3?N z^4aCFX`+S1rYT@o%0@3@(n#JGAbpjA%IB#3EkJ3rfhyprf-R8oT3K{!RLam=l!X$) zh`P<}I*~GeV9NY{DX$kP3kIf)3NLC#-ynO3;?=UUxE~CE4BoS8Ld#w>sI{{#A#>k; zwngUVwUY4{L!ENBkmRihpordr0Lted(GFdl3ZnE0iqg)$qO_BX(oQZ)cW_bKC9^wX zMCsnaMd>~irB{V0Js`6OuZ zDPNGgMQx$7FB&jP$V&!{Lh`Z@x7Q9JZr}Z~pY4tjw=PrMx=nHGF~#i-6t{Sls@h`; zh})+!DjXh-dZII=Pi0&Q&>bqHyF~dB+@3@*qG_~UlulIQvOa39*Y%-92Yp2jA!4= zcxhcu1>S)dna)K*qnc zE5V~9M?(O$)_>;I0s(14$cC)YZFZY4`KkT;y=5ku3lxjY8YMUra?XUDYh%fruN;63 zyF}!Mof=NeimoM2Kus&92houeDrd3v04GEeDofY~fM!Q#R~EC403}8eE2pt5l!`K6 zbs4)-sW<>}K#sr02Rz>lBw**`(O{eXS6s?(Qlhp(c}n6lVhMy^1W=E z(w!xF8t|H5C3tLCWFGIbozNPX^>><@&|Q%eVdGlP^_#o+jmpMPUt#Z? z_1yw~SLC-_wxX`+-=pm_$GNWZVm`1UjG@jW^4W)0gfZHAL;?GRvtSOI;pkg)zMV!M zeAc(>20ovC-nZ@szQ79uhJ7&zEv(;{gV4h2{c{jnSi5hPic^ClA|oQf>QmXjl!^*p zbp>@Uw!}SpC8pD{tr;)okdZ{tdlQ{l9AHTJ?X^ z&~>WW(2M#tbd4I*P`2KP-HNvdswkfY_%mpg-#E+H>?;iz*X*kd7}xC0YQ=11&fMzR zcqu2l#>}%3GF@wC+6cL>GjnZ(Y}cFFHdfDOH>Fpv+f=qqHD(lV#0y(GGs5pP8D$;J$?ORcS{w@*D7hxy6TZ9Wl*v0Nc z3%43nT(@DRb&4ALZuTIe9f)>vv|qtH`0DO0dYm4IsCf3Ms>f$Z@vorqiz`U{ z<0^Yx)#I@0dOXyL8wz+5%>dZl+cC|R#Pg!co)MkGSq)wGtQEvAd(H}?jJ(J>p}Tn# zz3e3}2v9%oR>=CY2-z@{&t4HBilGAbI!Fmp0tNyW8Hj;=9zX_SsDOunfgnh`)rzuU zMWh1uKyRpcPqdn;Y8TjHP5!HjJ0BMs`Eeb1EgopxCp(mu9ZJs*Wx&!b{T2FlGa>JB zQx)?2;LTV5&J9+mAE;=TLi-bK?@8 zZ@6&@@3$)ZMD5XS5gpsfK1H~DP}@3~z|KBbb$bNOaOH7J7XQFtJ_Pf*C5taGSO7sB zBQEw&RSZufxto0@5N3ur)+-QZmU#9xh!M!09uFeOrRW=wG?YmrNDaoonG`aVbvZQk=}rgYl&&Z$*h8AK0Ok)>ndJ0j=z}nqp2C#NF8?~E__p)N%B*=S9v}M4sbiUELHQGL4Upn7o{W01~;AJ}B zUTqW9U^wZvO)#E7-cxq|yr1oY84;IEcBfWR)&-Nn-5N{=iP{iV+nWTF!2=pM;*W!V z+<^x@ZpACMcptLJg0sdenpkvo+JUpit0D+e)q%6d zYa&>nJNTls8^%d@r|yC_fM}_B5?q33L6E*KY{h2YjBZVj+laWo0075^_*3zK6D^0& zPJ5%}@Y(6jXgOTA-#TzPZ(HTOW0vzi0J;{B?D{*f>thJQn%{zF3eHf#F^)^GrQsIJAYGZ`0$g{rRQ=`}5q`{rTv_YS8Lvi!QJo zbca6jFd76cLVdk8HnT+SoY}lt~+B0~QFN-#L(SRne|G#YV zhW}ZUH(E{J6w~C(MUyX!Z8E#YNZjPd>wUo7vk^*ICGY3p+ay35w*4CF?$ zxDOG}L$+S>F!4TOWB1v_UK}UK`vshjGvfmSF2HH=5gXqli7gUe+dFX6^{7oxz*B)6 zwM`$lnQMifV6F&HU_KlFzSxQMpS0m!C;au=V=>ka=qRn++96F z5?+8xK1vc_1n)7D^b&ZFljK*xdxE6A3f_|>^)>LGB5AL~>SHsGKUmyW+{e9W9LY9f zfqeh=lFc{*VUb&LFZPNJj^v4Gl|KnumaHdZ%Tm~@wk#Q{o`_9O;!TE#PTZ!wX0&+= zZq#14!6qZMGfUM|I`uT%iKeqI8}8CPO=z;vHihV^oF(bNl8#P2g-^?G*mO^pbZ68| zqbG~p(Uv$J%_tzlJWy^2XBzVCP2?F`j_lxkL$baBai|8P7`}3WR$juE=;~`iLU}^)OyPK`C~cQtXOKu{%bJKaG{* z&tjzbABGe|p4mSDy3Eqx_t=n(}kr`4rE27f^oATLa!R zL|Y5qv&6QJ;;D~rqHHx4r@r&4aq7E(TBp7>l%M+6(H=aH8RxT$XfQpJj=Nst8x)s# z;NHb%g!v_k3qJ7f5;Ma59>wJ!ICmKhW<)Z?+|iHNdMm0wxeZoSe}bE+xE|&uem;dW z>CKd%NjoS%lWw8>OuCiwGwCgqpGj|}{7kxy@-yjn%Fm>?QFb}iDfR`sg5oVRqVZSJ zU|J*%o5N?j%~lX+yQ{4r9vZGa5T~v?5T~v`5T|aYqD-W3oO?S2Dxago*>{UT6>yX| z|8C{Xipl6^w+NJ#F^=6TP*%oxwvF~X1#hSQPQka)ey89a^uVX!DaI*y7v-nmJ1N^q z`6+l89rP4@Cq2+9_#SGUg5Nbx!S_*q3cjE6Q}6?npMoEx{1p5!<)`3BD7%mLIR)QO zqo?2pX!I2PAdQ}aAEtwzf*+;)6db`NhYotqe1aP1%wzF$3^mS~Pf?sZL@(e+TPuiy z^RyL2!Fh&?)8>DG!t<1$g>MG%MYAutDDb{~$?Qum3cN30Hv5u`0`JRL2CwO>u{C|o ztm*5bE~bd@wt`sGE-Q#N?KWz95*~G^aW38))7I$8_|2FWN6*G@#k4zmI(}Qwgu!fH z-_)Hl1y08wP~&v`Ar+_Nk15Qa$*6WdWOpu1pWa|AntjPd2i4A-0VlN1Ur9cQ);VhU zPBE^h<%;Hbjo@Z7@__2V)6B$WzeaT&DI8@`m|WSM9ICFYU%_usZa%RQ?-H$Ps6SFw zI!83;ft8qDF$JXw*u0%LnmfKP-nN|IRExjeAE;11{*e4JnaUOCZ2GD>HT7qZh>A53 zDp?5#&TDAlDu-N`dB~td!x+^ZXE80SAotK}fd^9wvu-htpCuHaXU*UhP^v4NJy~W`cpv^!^>MkGCg=D_@GvB&#kdOFCOj1ChBnQhR6h>xhHu4wn5I-9aq+RBNe2bwMr9 zUyxhuw1i(RLT$i&e_pYcmz!Hyq~+!3<>za8c_jrUu9z_bu|-o$)cm}HJauYOevw+@ z&nt1)HGrg**H`Mb;VL!1z+bGE6cy#G{^G)^kRgAnpPK7XL0(C|nqQcg2LU!Ko$18Xq8Paj}1@T2g?Sa!c|ce}3*%b!wr%h?@I>`pUYn zlh@*u>TtMr@R?M|_T;&|vIytTaPT~Hp>=i+o!HtUP$#y9n<$4CH44m(hO_EnL8u9x zq57x#{a%gOwN#oKmztubrpjs5o|c-<6#_F-$EPkPvE?XW)<0s%{>GC8hPo|V# zmM-T}*-vQ!Ri;u}OtFw-C@rUS7NzqjSx7yLC_RPJrIaqC^tY4-sb@K*r%^bG(ke$p zrnHvIO_ZKR>F>nV-^X!%JmnJNxP&OF65qPUOC&iZtK9?c*mjSUmJQ*w{Pu~GRwzln zB1uXq0nDhQ+NXhgEV{nw?Z<&z+J2mrTn1a}8Im-1uB0W8oiH(H;*xcW(}}lqpLh~p z(>-x=Mf<5_;@Hae6BSGlT1R*kpu+7ZVhu*EkgHFxIfJ`(+^y$s19uy_dnR|Ax!c0s zR_?ZOcO`dMarbQQp2OX9x%+$W{(-ya5$>%P-uc42KzJ7lZ>{jw3GX7|T}+nCmy#1N zBkKjQ!2~v%z$O#8+yt&Lfhz&vRIVaqT8hI({3LS{sz6EkrIJEO>U1ehBJxnw=TdS} zD@q-YT1Z*}>Q33{bjc?X%C)iVW4QWO;dE)D%SD`-sK(_Y(}9b`osPO#aYdz)Oyb8) zm!KOxd8JY^@lHiWtc2p@B}x(%o;GO;YE31Vpqg09uu{oEQir1wSeiOr(j=13wa7By z43t8qLFd{thYTGye1vagssx88RoR`3N=+(JwfwIYcKYsIHnV~RRdc5L*BDc<-#MK)l0l&WiLsPuOVz@7iwtS)3%45 z6QmL9OU8HQzYE&CcF(rU3Tr1_;&-R#k)YitaBE06ep+E`Nzm36u#pJGocu15i-?)i zi?1v%BN!7=yCM#JxylJ`h$cZ5o@g{yVl)31b2$mRAb|@KTmvP!B}o+1ZbLnYXpVMU zyKOJKo~sh|1l)w@y^#dtdUnr_gS=ZvPbA)#l#bto5yVs;g4#Si5DIt!+-_t}0Qff2 zvpbN;Z$8B$@W;%7B>d$lzYiE$coVYlAtHGA5J4tBOpuH35cV*Mvhgt@_$X9$qHX=N z$;hWIMm}#a^2LFSe7P?pUmt{#T^8}4K^gfMi;?dfl97LlGE!uIAE@^T>K_?V$i0t| zO~|{?`m*Ws7%eY_eT5oKy#(LtqL!B|tJ>QH@c-uAn<)L8ui!*%u{-1W)jErOiG9h}6+~rHcU*)cqyHE=7%j`uQ ztQ^8FmAgb&ua^b=Y!pkmixVG;Uyo#yIQ~lUauEZRhY`Gqvm&*tIu*4)h6jdol?_w< zED>7RAw$cz$jGq32njXNOrC7RnC+Z0zlj9UV*tGi(RUgZi5K0nJ1~;8r{M2ueC;Xx z9ui>Sc$7XF`8Q2^NM?`7f@k=K{ZS5g@%lZE)p25mQpoU}k>NR+y#UR?-Wm;wUIbW) zC>(w{hR`bpA!OleNXUhR@_^7AoX~O78!~$ zYI!5)1h!rYj){!v=*p7fsU+ph7RD^))g5d0unl+>)n2v{fA?w=ZKK{}v2EN~IsT^J zqi%w!(!3_?a-|zDr0VIy-(VrR-$cnFy(^TSO`IN@FMrT5Uw)O+oihhxH!FAxj@M>W zwPnzjtqS(di4y)=|0MpK{gY*M=PT$gP`4`h>-%w$alYg@V9c#b#kgSh?%CO-dK}xP zjBDG=w)5z&?jBv$wZM1{=22u<0`~p{DB&(%!l}|-3jTN=De>OFM`R03;=iLG2X#s` zb3AU;>2ZZU5tHLdBgYhS0{b)1k)*<$d<^7x#mMmrZ^bLT6|dmMVj?$QAp9Dy?CWM_ z1Gx%b5ysz78pZB0i0o1D=k3vA-!zKNgJR$2#ip2VG!<4FJSvzHNy$YA-)K$)oOq*I zeBz7{w1T z3nVzi-?uudD{CXC)Ks-pI}th|jGU4y&yvGu$u(!mdbJ#>mQSzNmbcY}&$2B)3sX`! z>tixfNy4Ot=&<^o9>)`u)z&mNLJOV9dSTCvRFP^@>*75iFb?Pf0l7sVh=41CmYjq! zD$8b)~~1ytCgXKW~I5NK5jYM8#8&6 z(kEovrg9?E;L7rd6`vd%FcUi>X4+rX{bD5BBdxWyGny*TvYpu)ZVgvyp<1Ydy|F3W zw&0AKdY56t7GX!Erm2}jDx`_nBQ^C^a{w@2fukA3L^0k?n{j9w&-h?aX3=pkuffT* zGK3>1Aygd>oiW#Zk#S;cOWqMQMij?w2u4i=8kQ*yn`*-Nu3@y&!HwHtoelefXe1DW z++<+>5fp5;-82Ab*(G#|S%~+&F(Vlr%8OiF(_Ew1hV3v=I1nGRFk}_x{mL&p2U)|! zHy@aFOnZP0jp6$KR{r=`Dti@(0q=C=hEdUeb`;|T$BkAWbHrU0D;ZJij`6%;4r1}1 z1$`&iWGmXLNbwODZPeKr?WtzcD9o4I#BAptAJ%B7 zvK}Xi_{yrPn30@NQ{N1$RSZVOc9;ArK4EtAEouKxZ%*;be?=IULB0Sxur?f`#`nqi z#y+;WUD4p8#TvdFU97a!HAcT?a;uBRK4j(bmCa$pEThue)=XMSn;L@2HvdT50WIij zD>1?~Z=2 z?*IMUEyAL(qmQVt{$IjTLR>H(@<9b-!f6iQ(iY2B>cT!}m1s4l9q~B$f4sd3d{ou- zI6mhs^JXU7WF=&Q024xBfXtRmSQAJd1VVr$Y)S?*A#Vm{lK_gXHlo&DajC7fYQTM~ zd);?y)z+3t6l$&3sZh6x2p8UZmo0I=ACp9fGv?c?^{ve!)4=^?K}7Isgx}_wc^ga#hx8q zxojQAiXAw~!snCj9uhV^)f^=1Vj_0mx^KsPIN4({#MEaDvVm`1W>hcVqnAlMo)Ev| zE=#w;V;KepSMS>vImSmPZRE-wZ_#5Mj8mVakG1Uvl|ep7{X*Yx++XNZo>}M|r-j+2;vV`6X|#$|w7LH9jvAstS1WM(S9|DNyB=yq=(6@_YT&NVCQlz}RYU zjqD5hYU!K4w>mvlk+R=YODhfnzFNuS^HyVy+JJ<@cqO05Ta7&ZJ`_6`^!Q||x=&({ zl%ASkZT7H11DSZMgOUgTB)^Z94x$*IKy{!xEoG3xd>%jQGvM_}-f9%lQ{$^bL91#4 zD59UV93-d6fhrFzWAI2`FAC))|H57$EnKMfdr|OUkS&#HW2%betMOv~ni?Oi9-!3^RlZu;gQSD@v6CXJ`#)^BYslQa$rlmA9HieHB_E*;;?5#%0 zYHNdHZEaPK3^t{}UXWKH%KKo9-F5{OT*-YJUj;>1L&1Ge@Dvoh1%+3Em<|H-r_0wf zkSksg6v0YviNQfD8U*I&Sjbca=I2;oevYMF@^dVu_&FAe6p8schEfH_nXZoIi3&_o zz@)93nb(o1$HX1OM%^raGCy?{S#N#SMuy@I4)#osTH%&)NAuMs|szu)5TO;DV_ z!#w18`EA7C!QUV8_a6TKgmE7teR5U$DdIZ*KEv{V$1?v!_+J?RC0_pvO7>ptGUwp$ zT>PCUDB}5ol6?Wf7vk?CL6I-T-(?72j%ion?+2LvBaFKie?P|Gb(nS^ULU~UBM3i+ z*QW)=L3v)n-z8Y)AmaV_`z@yb6R${LK1Wm>djW3rGzD%%5Jqt|Vcp>!m0$zV&T=(;9#_iC10EFqgci#iO&39nT_Q#?3V!ZBy*9fp)0arkA zan_Y^6&!-z?g^8A1Lwj)uuT60Ano@l_%m3<>3u*sKZo8Q!bk8iSoXs|02%Lx|AXEy zz;YG*o6xJ^KMcJRz9RHW_}V~^aI{xI6sF$+-xqq%76`bQ1N&j0(0d63t{}iN{z}1O zxgV|;u-yId6QTDS0hwGcFeWz$oa&7NquM8M5%%-c14imiJoRQH^%kCbD??G0ZMO-+ z?ZTbH9l~8g61>|4?=iujn&7=Ac)tlgXo3%!;KL^PGZTE&1RpoSCrt236MV`9pE1E_ zP4GDreBK0KFu@m1@aHD@3ln_V1Ya@1S55GjCip88e9Z)ZZGyis!I%jSnBeOs_=X7{ zGQq$)CA)usGHztCiuAt{@n!sVS-KErGQt0v z;MXR2!~}cABzU$7?lr-4P4GMu{JsgEZ-N(ya39WL6k7InW6;|idOQ7;-@fs4wP)8#cZXQ11)14*Is9N8q>x< zgM`OHnZQU)s3GoYX)y6YERqM4w$xj2R`D$6DTQ)7%QLx!@>rna)Ow2zrmUm2Z@qW(U8Rb^&tiS8Tx9>l$iDyr3a#I( zp2xG+JcN;j5G-I>Yv=RWSx+H>Y?xidnq*E1yUcYNI+(Yr-Xg<%N4-UYy63R!#ZWKN z3cdxUjLO1?v2;E(?4&h%jSnF*2Glv6@}edDy7+mle-SjDLhA>YH1No!i;aeAE@Xt3 zy@0}%L(7YpcPuP_0V%m)MUx@MO6)~-c;fxxd zv{HN;#oP6zq4bW7$xAXIny$BmGCQ)CWLct_`tp#IgHC-#D4T=X`sPqhN0!Ti|F9%W zjOOS&Lb)AzOY+D+`5B>no-JShPN;x`1^RbGV>mcQKQmOw!9xA4&{z(R)z61eQAhET zVoS70zW_od94^r>gitBZQ>tGKp>aHZoPIkTj5UFN2PsC7K(>Al_3~3%Y<3^>%S@gG z)Co|j-_KBWqNP%Q06HdVlXAw;vJ;-krMVJ6wOl0k+idqRmenSAR_KqI=#sjG?L

AZ2Fl}P>;3sC$FnHMacm8q(p5C2t9VLR$&{|rIMi64gE$1?c?@fX z7crbA{v5;E(n}c5k$-{VTz{{92ZgA2z3{oH{I$Ey3e z{}!&}T>@LUSfkbCXb8Rr1Ek}dkj<|lEO8jQ{073Zfynwn2wM%rs>dL#7>J_xL)c~@ zHvJ8tRW@7#-WCVA0KAbM-$1ZA0ZHNEsiQI8(;QCeD=c354b)81=Co ztR^Flr!e9X#Au$gRkrA#LTG+RomR&?Jr57?KF`AgeQG^m_oqxVp<{uz;DEXiZi>#= zbqF=Mpkux^pMD2!iZ+n{cIv{qWQoJ-^nak0t;zT&hHEpwz;IpGzcD<)`6Y%YX8#An z^*LW**pd5R3`2QeW4Iyz2!jyW5{aN%AIyT+b_;l?6z&fZ;oBZgYZ{eu1v zFdBg*pk2cM1fwB%L?*44n|a7G_(_WlyhYacd9IFtF__zxP`K5UL~ z7Tc};6$~V@=IZ~&tcjd?`qy+CxREhmKf;Liv77~ZufT}*v8-eCvjs-9kL4}Y_X-1v ztYh_a1R~0F7U|~-M3iSN*3TEH$A`y|!;HdkHtU@i@VLUTleTc@u-g5(nAgU?WViz)RVx(r{k5_&_*6T*P=?#^dtCW66_8G2?YPkITg@n0YMYwNFS` z;~-lcY=|jVc$Gk%H=IrGJ#xZ%jMvpXE+?Ezd*kyNuOIL@CuYISxs2B}Lc*#Bnbcr= zN-?Hu1?G96C|r0TTujbHkk^lSTyePIKzJ-B5U=Za+*r(lnF|=Np9l%V8e~<2P0F+< z{YHU|gl+9l?Cd9>BWORnx=Qpu0aHqDqE5G8z;pt$^#cNCDq)UQZsNtsX9{MGSAATp&LjannE&<&UFa>^D9p}VmBgII?| z`7z1zg{kEqI$HUMu@Z^$MalBTspWrmwDON)A{#5|hjFS3>LQ3XI%$pkmLiD z7II#sEhpDp%nO%QvmzF4(f`Wa;;Sog(i;~-E6buQbzKOxcC=}2(N_I)A=F+LZ71jX zt2$O|tF<-iDz@mpW37R%g-Y_lW!JwHI@YP{EVMMgqg87y%lqWW5%Q8xH|Y~-hYGpL zM`W^kBJ-2Kh|UNSW$P0p=6TG|eAb~j^n&F)QUAUeE8_ibVsvP;{*DuG6VV-dx%NRB?Udb|cF)ds}b+C#K+4_l$b-0dgA2@{7Fg&?e zbXhC96jr6{MExgNrQ9cR?tHyS^~t@B9J5>uKwkCtf^efqzH!7pk$mGw`lOoiV370!BK7%e*Z}}H89EtA>SVyw$v{FUG)2FamC7N9uae7h z&u*s`A=zcQcXy6RUS2K(`F2siovH1vWanwu+BueCU|Kh3(6rsV$zL)fNvU>nawX9~ zbkFXb>zLbqthpAUX02q+8fI?glqAi)Nsn>{(XgiNWv5c;cZnTqN%3o$%m1)7;YBN^ zMairG9Om!eW$CiTv`u@v?9Ni!XkicA#_c_%-zWBKCzs{Y_O}Pbj#K*8Q;^8LqStQA ze)Gr?o84y9A3>6g&!db_C+pW1Qo*%geNxn)WF6ugR1jt=Q1qvgDsUuKK!fjkuHvKssa^p$*Lj94({>H2A#OO~^?}(7*nYT}!?F?f5RdMDdHwGQjKT9@{ z&NlmeU~KmJC!^cRd|7U%&2^*nv&Gy2ec%Wxp^qhuaZ3fGl*xeWY*hcO;1a9Q`!@CGssuq#b>=z()USW2^r{DNd4LlEkr!@D<$r`D{Q3}B(NGm zYC?jiB0SB2=_ae_S4sV0rL%{8(2vu`4Lm!w=Wv%J?C9^*Yz~xy4B&f)0sKfBa9J{` zGhQoo>~vWM)SUv(yrqGjF4@+9q$Ixk)3V| z?3}{exQ@DH3Q#-E7IH&>2LN3f1ad~dNW25XJ3+b=FL!}_mqadvt#?cM?NSUib%)g7 zgPr&;CVzjd&jq(?nzn0Kmz5vX^izrEfcAlBdk(W2YTDE;8?g-AY&NYYY|a1Ukt6&b zeJ|=0rIo@~RtYJQRpD9l-@*#qCk=$94BD4@KiAk)BuvhrP>ULQlV>HT5}7V)HW?L3 z%6o{)6>LQc4@<~P1YYhhCXvNJZd;4=eRd_#%q;+~NaS`|_@$)3BE_^F$Xov<_OJ!DK0CvJ|fa6{WH9 zZB|q}i$e8#zz>LfSL)~m6^GVJ{ZA}C)*015WY9q8S>(C>Aj^L?pi)0F>-=$Qo!9V# z9PH$HozK)hl~U9>fHxjagkDr@y#SwCC;Ut0YfIVtA3a*75%mo4Ny z6wYVPwuMXRAT;p`47;T(WpXGgUxk?}K(e zQ04RsH4?+0DAmWtiHQ|qu%*8+k%*Mp)5WR$>q+D{YUZfQhM^D-be@X{41DeW80Z^fbKBJy`@NWYt;zjLtkcMXyDZYC}5p1)^g zX;DfMrKDq*?lq;n&y@0hQ_4G1rP+)9`4O3(6BBBuN8#N$8);aQJ1(cU*T}G=L@Qxm z29{_`!glp?uu_9PPJ_J2oTNX2E%~&OpYl=}dQw}aEi>~!W9ENWUgUg~W@j>c^lqa` z*f+8Jxmo-rWcM=5O2(qUB8OO+Xp#P^94ZMrq9x7~$gu#cSq^#SeQgN!VZ!~|r2ZSE z9y6);o74vk>f}tFUYkBk&%Q$_(<}F&7BnfpX;S_jQhs}gn&>q-9c`A(|Bjje519YG zA@u1r_FQeQng4w={|A`=&qL_bo9B7jJTw1CX8w;c|KH?M#_hA{mN3)tH5$7o?Ffdx z^j@p3%jQV_xtubR|3m(!k^BpJgpvH;a&ja;+saMiF*1q0*1ZcCS0`E7}}Cf=MR^4^^sny<8ubaT4a zYTTTDWIcwP)Ad&K=5&Ke`oTY<{ouG4F9VQv zA6{OE^!xGh24p;7)$d^qZ`U8P_S05>-sEZe!>Cgn^8!AkJ!54D z7)(a+Su43I4QK3UpXQ#k4utKTtV4g^8g`WBolbsEtTZ5}a~>q{{;=)9e&WM^D0m`* zu_XBu5tjlF(lAKGT?RZz!+^!nU5N91kpu`kaIo*Cagf|(4`qve{1-faFn8?GFZ1}p zLSXNGg~tz*h3;gp^0Z+x(VgvA*0B8wYPnyh>g6{~FFus-V2WNU4aS#pLS~g>$tule zzQTExuokZywLrn&Fa$?g4<%$J;SMK+BWd0=q;Yz%-QHqNm`P3e`$0|kcB-iFB%AOL z|GzciyMvnWy-}L*{ZX3mgHf9BPe*CO50BD>A0?XbFQ_H5r@vam>D>MvvxXH+Qo>3s z|E{l&IL{O;`e%lboh+b{{XNyl{&7r3_60Yx`PeM~;zsroJ+}{Pp?{~g(3h-*$gA&v zjQwUmDD`F5cql&%^w*>^S#Q*n%}D!8a!7?k^4M_0B)k5l1}A5X-pDGfgOmF9DXHqaB2|nlm4y1PQvO%3y@G7rjpTo(&?2OF!SaZrKcbjCdas5z^hXn1VyWDI1fX6^&zz4bF@xsg25)-& ze*$^OkTJbOe2T@#Fvl}kgBS|_EOE~gko*1g3E(Bh{sXYQtmrQ*{O-+IzdERbKc))) zil?8&T|~X644!C_>uj18Ag`DKMfH9II!k}us2j_E9g#a^Nc7tjy}dbDZ*QgQ?QMk} z-{pP?83?=i`L2$uJhID7;^mybc9%grGE2``_3q~ql;Ab*CJzk>C1y!;K6zvJZ> zVEY0upMw2givA}hhLf9%!DV63Mw0%aLWd9=b3G~X#>-DbPIA5{(SUX7bF_(7xINW&v^eb(#vRrZ&f0ZqEkRq-j zCbqLjoklU4(pYP-Dp75g}3x`KQ5?K6?DiWOFyA{hQbn(>>=d8uh2RDT++|UJiZ`080q}m{l*o17)evpd&$D;j3);P0 zF{}>f+X-e;G5kX2GtsQ$#ddm#EMskYDT7&ArjN@RK1d~3*+Vm8(HZ*Hc9gkel!f6po3b$cRzsGBD9i1pEKGrSa6GBqJ2{?I@ZE!C zW#sNfS<6t?`$*PONtCT+DC)x~s{3D{|IFS2Q{T|wim8WU{heSFY|w`ta~$>89L)D5 z=F^|Dciaa{?gR2|IG*;gt)_SKtg_b#mKW@Jj}zb}yZ)jb`@;jo^d%}0Q}4r;xepHM zzp#fMgnn&O^g+;Hwuc@<*cE*U^jGYmhY?;7eHfpwNWQX!og5;*hwb!M44F$eLKF9{&BbpNvH2*?0|7xc-BuH~oVjTNCLGyE*$=eOv z)Bj;d^Ls=8f@SAS{$&p}#iC96{|#pHB{6X&2TKPHmJWL1hD^#6f?w)L43-Z4GM36| zUhW7jjYXI0`y7L4UgCitx^yD?Zg zLd~&gvwr(vCU+8(DG4Tz5|hUq^ga)nR3-#}Cc)$xhyE-}=wSqxV7bJdmp#!@cM2+PP_S&&-9}HgDUp zia_Q!&)M7imDv0Bf5jtsJ%U%nmENy0>WFgWh(|+vn-(o@-+-CZIK+xLI7|ht>l&Mzm#;BmsC)(o4Jz`Q#ZB#v^`q@}W+Dyq-p6E~ zZOS~Ovj;jMEbi#uC`ZUmkQCm$tGn!I)tuS0YYTJDQgPH=8#if&&wIIxVjWv{ZQi+Q z`{qsEJH#E4aQRUS8+rE_-e2I9DM!uD9B*ykM!To2Sd(R&wz5m-={8m;#0{YHbcO1N z5&YVDx}BV{F)G=^SXg&-Zr!+T%cP_7=6Q~;F|057H2Q{2-GlvI4a>l)FyW|Ks8UC7 z785+`Ci-vgR_lj#tM!Ar744uGgTAV?l*XaW>{ViQ&?EYT)wGE^AW~=YRMiH>8lPA4 z2YgjxO--%j_js#CUu{6F_99YK;}g9ezvv58iM}eoEzvt@*L6S))YOW8zefxP{i3(J zN(}h?QlQG?ahN?&@&szV4pThCX_)A#sg`9Z5DO{`!7^SE1ac8C$h56mP!z$&e8nd= zR||>F)dJsKJysD)6=A$0PEmxZ%qe`0BFs^Qd_^drozKD;+UG3NCg*h8r71X_&cfc@ zJh~R~YtFdd;t~<@oCy~ISab8rtWN$n?E-6>m@X!M6DPUKCs&Bh{QP`(Z+^iTa5`u7 z7GpS*g;l-97K_J1T*i6@+G@_iAPZ|*IE#g|SvZ%4^H?~ag>@{fXW;@CE@WW?3maLe zvTzX#n^?Gng-co3%)(_XY+>PY7OrGrJCu&IOBNiW3p3SBr(Fa~!Ah$Hkfx?N(?t*z zRdI?Uhk`nIdErt&~M@+Eu#~uh~}B>dX=$Criz8Iz-47RKW=% z6sB7Q5T$#7@3gYfPOB)yK>~Y7m<~}P4zl0~ ziRF09h>CHrifJLq^}VPR2SrK`$1aoR(f72W4bMx z5eH{RekgOgJ(?MZ?975t)^tZSi#CFZR#CbLKFiU|Nb+1uSsd~JgM48^9DDx6IE;}d z=@Vkp<=gx5*Vl7cpBS5NMZ}5-K2%SNA>Z5kDL`D-T?4Md+t}i;>GEEBx)|6SmRwFF z%F6r-ho!yvfa$W`#uiy(Q64MrrJ12XBAr7b&Ez7@B#~y4NL3_~heYz~RSA*yqez~F zNc%}7uPM@g63I7^cmORx(!bm>1xiMk;tY!7vWODO(uShUBTNSe4O4+c7=dk^=(X6I#Ho~q$qi@({4X94$T$R`~Qo0$9J&K-M<+wCZFbZ*?p zob{HBoXmag6pfs?y}SFAQId9cp3)6l$sr>1w`vkoC=&17#JiyupBR zYM|ut`2$wo&XTvzQF-k@s@}?ly zOMaPYM+*4;wYEeTk-W8j^PDCL=eso$b$s%oRK-uoll(qkm0~o3>DKEsc2_N-xSNI8ktbK!az$84ZhnMSim*lz)+uT0aVDKh zhYI0?wM-`sNrGgtWcDgHknrIgNBL|V5OeTXNXOb(aJp66t6(^;*JcsMW6244cb#Yf z$>HjqWN}QkK$2vtCaFr87fWCbk5A}1)+&Ym@gh4WZg$HE0HT*$&k7OE^<%)%us zY-V8#3sJIY$?de1#A9GCMIi~292V*CTmHJfL0VH5231Xs$9koH}Uft`m96Gr7Fn!Rn z5A=`Q`-bj27}LbXy4NcT*`FLaViRqG9w=i6yU4P&1iZY#^XO!b-x?=#EF`K{!75u%MygAR>S3C2HPeJ^8M#Gj z(VJbCop0#NI%G{&t?amz13M4tEiOx!ggj-wpFs{w(PK5PhdM0;xN{7A~J*Z`iYF$`b2#)67@NxcQ9J(N%~I= z={LmqBCRM_cvRm+m8N&FcVELMC&+6NrtdI#*(^JVSC8J4;8I|6*?F*E6JtfR zE^XK3#d;61`=i0`bUKd0K}|UOGdid#*@kC>el{4bn3inCy-=|j*CE1J!eo|@1pK`r;MG71 zNhb;EoQ@xx5?%-TbqNVGlM?;}c(=HY3HgyB}BuL;nDk>ZEg~sLcCD zm;WWOLtsRdkPd-)Jt3fEd7TOP28PpwLqI+kGGa?Ipf}@?e#m6vG?+|6CWn#9WaMy& zarn^S@FwGsO**)YbnwRniy4;p7>oCr4n6?=JtW)nhFj3zhw~2UADB!grqtw5(C?l( z(C4n|qx!I8Za#$AvpsKM0b=_)XY2OpA3=k>7;e6~-}BMWh)Et$i5xZ?mpDWova+je;{zsX!>0To5b- zi<4fpijx$vT#+giu~HGIDdKcR^ebXO5vvusMv-PI*4c_wuZRmIn$OuRHk-|Ew>uoZ z3vfn7{{s7W;9tTyrX{_WP5y*A!rb}u>R7lC(lYH8)4x{5TZm)Zti{TOWs_ zyajP6&R-aZl7fafl#W>xhjE3A<1l_~6W(o$mc(H~F-~tLmbBp9t;wQKq}N_-dkF2^ zq!(T$VkIO8hctcCBE5Ws86KMvSkS}OF9Dqpbk$Pqmdb|UU1P6cZb_lL6(&mx%$<{&=5Lo9QTQAMFw>dMjU z2rJ}Ru3k^rSdQiC3kWOXSiZiHuwsrC=naIGaBPge$OTM&h5BNIWae+82_Y+UH?fi{ z?EzYm-O81D4Z`jzdRsWFk5>r$sNNn{a_$9-zA9|Xao}}z2cXo22k@@w+#eo$UjpMhb4WCX%P;#P~{V)xWORTe7sbsg4lNhAkwhyEt^#W!-W8ntu=bmdt2V>rNH)>QW)nGwHN^-qreLgP^exyb<4~@x z;R3D=1*g*67&4V1Z29S_6v2{O&0!)x{M8YCr8$h`tB9Y*jreb5#HVv3j*$`1(Dw{7 z;xo{QU&dbX9psPqN&UMW!jeo|0N!(_m8i%gwYI6OOBL!{kYJm~(;knBlq}t@=mN zzG2-D0Udda4e3PS0!X2rYT_5dU`j*G{Gt&mI;>Kow4$Neiy@^MhxGQ85&4o)+i;j- zhqa;6UoK5;!$f_CkIC2ZQ=N~eUc-b*HsHR&4d@)yN`q@Xn!*j+zlz$d3}w6;!edP9 z{{hDg^QQ%>KV&g1@$?k?uONF*vHvv0uLnNed5s2u8-R}h_tFS3Q@;_6At0L#0eygD zz@yk@_9yzzfz-Z}9WF}totuXAoouQ~QL^vcoX|1qiPIm1kyaD>OpQzJJGTt&J0^?N zzH@6z-#Hrj!2%5GJGYI{cZ|9Y?K^iIU%iG2lk7Wp4(>Y!+YxI$n!*j6zY&}39%?rU zfuBO+9+cW>_d?2zXGn|PH$u&ZX>gPlGxT^r47sgmr!Qg7@j zdPo_luf(=``1ooxOp;_<{S3@oyV+1fDm$Wv4fB31Vcw5JIL9>aCpea3-cPX@mUsiC z*mo1NXY;use;P)-kZRyBrW$ya{`0{G{t_AZO+YW=jE?d$3|A!UE3d%ty0MP(YI69L zhbS!(VGfn@2-fyXNS&pR&_#ZgdN&x2;e7_9#xVc_oqIq*yv_#ZizV&Lzy7?$|rPy>HqsDXbB zduW#MFxJhFiLZMTL}`)wO3%xHKdv&Dt1&Exq+W27zX}*atWI> z@bfvAV&E6D7?$`+sy#O`drq06lYw6@q!{==7+y8j zb$&2vWmxaI2DKcPQnfq?V?(AiT+6A=`a@x82O4pT{v(sqAW}o)1`9B#t6nRN(1Avt zqF;A>^%^EjviJPt|5fi{Q}i1JV_@zRhKwMr(e{r#Y_JwPFj~!qX>fRp8G5`a(PBf! zs#KG|`RL6xO2pu2w?uO}k3KNpc6>D&CP}ibZWsQyfmy#RVc>U@qvxc7-@~yK1HYHW zu*7}B5Cgwl7-HZLk`r4&2CG8LEgmHwwvP!NY3zgw{9lqL(XwCxK(1h4d$YSO9a&md z742-TqAjm1pijP~(X`|@-}8${+kCXNdrx><=Z=l${-dt%o>~4jJOO8AWpAxtu&|*~ zU9`Aq$Zido zL+cFJRMq-7P3a1D?~XhRzlUubdrpqJPRcuFd)ark>^kj?j8pfVUNPBX`4Ywt-w`rM zEU34@0$2zQ&lY|1>K8R`Shd2=t_{oAw1|x@4btM}%NngsEp3gh?be3I=En9$ zTg$3t3mRKDR3!jU0`MjPUjpzafItGMP5?CtAeaDZ<;In(>YL?dO)ab1tQfhXzQM*X zoEZV01mH~oz69V;0D%Nhod9YQKrjK+It-w`p&`=%8yXijEvs+NNT5xtn;II^4Xm-H zy|FdRK$fj)Zf{!Aye@&aty<8Is%@89E`>Eu3%1PSCbb>0miE@=&Gv=$E7~?RFJHLS z+SrD0qeKlQtXd(nrjbbHg6a`eub}z_)i0<4L9G_l8bJ*TYOSbxs_^H*pBH~V{Q2=0 zC_bfo&%$jRyZMU6*6!^)x_i2}?qo;nHXP4}wL#r=MrV&=Fi6)nZQi_;!#z1ebGiJ( z_jG;pB4*=z^}KH|8d?Xubo6Q(OH^A`XBLvdnjw(@ z70e*Y41*}6)`2SUfERq=hX7PV4FsW<`coM-s)WF_G{TH-~C?4JHjB?n>0cev}(_N5K&7i>+hpUwpJ`+{^ZXjQG`2~>L} ze=VIe>aPt-e!tf@?&vKn`K$d^lFwfopjEtd6lrxp^rAs{10K;E42nK)K=f66MPF^L z==W8N{u-Yc!1RE>Mhpb~Vzt*JRtJJ&b!~ulzlk-~wPLWUS`7MqVlY@G)_Q8h+JIlI zt@TKrDsK>j>VV`y5Cb~2wc3LTzF-v{by|&REe1iahmLf`%r!MZ$s0fs{Xu^<9kyD9 zadh@7R#5WztAmoSnjJ8xEki`B=astRBgYP=}3m(Hj4V3r`F9&Z&kmaoc3=dRXZ6)5mv75rFX zY#bEBS4(HoqA-|1$Hvy6;JzAvZN{K(A$t72G};R&Zz?!>%*nP>*uv<|1*Z!3O!_{u*g_RP5TGO(H26XOc5q1!bC-wqzEoWC|88ZiogzG6)M^8 zLUsr%?J=C82s0I-N)bGY;8g^lBKQ>{kXVHsRD@bZn577_*;d54iZIVSpH*0(2n*Q) z?M6jV*)r|LY^C-RwphEFt=Dd0OSV_ARom=*R)L+*Dy(M9x7X4NZs7z)I8hPSD?*1N zgcMAMfyLyZkE~cpIT%~Z^W|c zVwyHx3T*G9b{Pnl!xgX(u7o6bl?h&LfIzX={N!JAC*W)r-{1aCFL+f49w6THI&?=-=?Oz>_KyvGE8YJ&Hg;C&`|zX?8I zf)ASDLnipJ3I5CkA2Gp4P4F=jeB1<|Fu^BH@F^2~+6135!DmhIITL)|1Ya=07ftZz zCis#G{=x)bHo;d+@KqE1r3wDZ1Ya}3Uz^}>Oz@xy#!Rr^1P4s;brXEU1P__uVH5nV z3BGB9zcazNOz`(6__hhYV}gG$!FNsYk0$t@3BGTFADG~uOz=Y!{IdyuWP%@?;3p>d z7Zd!e3I5FlKQ+O)3F;>JnF)Swf`2!`f0*DuP4Ej7{Fe#-8{m}9b_ItTOZQ3YNfA0r zu~Y4g2qM4=bwxxJL71dYibx`e8)^TqRHN2JWD(@B8je^+u%1jila;0F(ug90ZJD|( zViUpMs5VCIA~^8rDdG?zO;CkMnh5ElDn`=ze&h)4N0wDNLi>@esx^`&f>TkIh*N}Y zn`(<>i;!bi?U5W2aviE8k}E=9nwl2L6CpocO^@V@P>`W!L<&S0lc{D##)wdurDjD6 zMHuT;osqF36lJT~ks=X_bJUzju?Qu(YHp-Ngwi}UFH$PPxO_D~GERi?1!_TLya;7u z)G?7V5hfI>g^>v&OdP9@jZ73_QjuB|nIwYCrMe<65z5D_<0IuFOkSieicA)vqFgPH zRERKTiaI4SMTE*`wK-BL!qf`2A~IEkX+bp@nI?j}tF9|*f$6nsZNx3YjLGWc$aE2A zmZ&9>86s3oP$xuYir`tUE{{}+;9ae*j(9}ym8zu?uL%CN>e`4;gupa)TEs6xb){Mv z35ZZLQ=J*979m)rRz+$=sP(GeNKk}XKGheg6=C)`bzEeY2ywM}h{G>Wijt~xiOim*7K1|o|@XqvCik1Q5p$qDKSktPwA)~ofAB_cGJsb!I+ zA}pJzPK-2*(4wkpWSI!d=c)4|Eh4N~qppc87h&aMb#Y{c2(1g$1rh9DZBx~$kya7f zXQ{IyZ6d5{QClMIBCKvu8zQSjSktbyM^=llwpcBWtPx?|26aPZtq3PHsZEh}BAmER zT^Bh)g!Lz?Cq_;bp(CV*BI`v6Em4<5Iz-s8N?jERiEvVf+7a0xLg#vQedHt&!mVm+ zq*H{hmFmh!ScHur!6~#xwp(VK-(R)y&F}UQxa#@lcSlHYE#RBq(?X(aA>aC*9+F%Q zeCvBgNOm>yt?!v3t4rk@-?KuBYZ2f0?hM&ni}}X)?2z5n#5ca@gdDCVeB*m=D9yE$ z?|aV+rMsH>zW4l4hHDw$_g)anbhYq(?_)w)uI16JIOJp%hMcYyQD+=-onu4Uu9ea3 zIOJs)g>qc2(VRHs=M;x>U2W0aI27cTgz{YN(Y!c}$tw-zyH-W><4~ACE>z%J9W98% z*n;t)F|IYyF>xpwQx+<8t&JAOp}25DXsl~pbZi_-#!d_sxlV`{#i6vQJXGu|ix$UW zT=C>kN%`XtEs4YUl8R7i`I8VWjYC=Kl+d{Hry)8n4im;zhQ^ma1JUtum^glFsI2^1 zh?d1+QrWc7gz~o_Iw20O3GUFu^4~*rVjRjRP7h5ge;cBc;xKvAjF7AR9f-Q(P~q}~ z%3Zc-c^sycdqb05_UPm|R8IDVDqIty6>&68e`tzpVsuIzrcDWiDqWMJm2q%aR)?m# zT+yj@f^0}&`zBp9-7KHq+ny5bx zHU5R6fGZdc#32}H2vxgkqt$V!t!@m}ls^H{nmEj=QA5GJvZZw)PQMWYMi(72#2w9vIFx-bsv z!uC*u>y&6i92PaK3N^a6MjPX>xN&tzb#05PacEN4gci9rM;FCm$)dHP#jca1i{r3# z@w!lxYfH2#4$V#LLrYv4(Is(MwxlDp)Rh%o8i$spp-{8S8EuZk^5zYpWv=Y#vN)_* zc2cOtl^1P^!^)P<&~jICba@(^}wo#5IXJs}PqCu|L!=sGQWVjMyzZVRnap(-~2yJkEC%PdH;SD{ZlU(18o)m|!lXiwWU1vr+ zSr3?tRJDx`W;|~`BS-VJJa+-2eH_i#^4(()-Oteit-xJ~ z=mCz7(Z;yPB6<@?3$;Rb5u!J9bgVYkU5w~094*p{+$D(K#?fM}*je5{9-H1NG(Q>WaU4iI>9G$F9c27a{A&ypP74FjzeVC(Dv?=b> z5&aoQE451ZG(;ca=u~a0+l}a>9G#|3b5BR~F^;-5w|fSnPjGa)Hr>4k(I+`NL!03~ z1JS2AI#ZkJ{tlu~bF@mUa(@@mXE^H7Jnl0QeU_tM&Fel3(dRho(|qplA^JQ={hHt1 z3y8nK@qiX^pH29S9Iw`@-FpfDImc_X8h0(CFL5-e1>Lg{eVL=RTCMvW%KZw*XKAxo zHD2ZDY;88H#xFTKN1MZ{@hgtb)#kElyvEUa+B{Z`UvqT6HlJ1FHyo|g>R2@naGz568<{J8?{FFd4#{gaaB{@-zWSK#}{df+~*U1 znB$AJ#qJ9T|1HOxv?lk3g#V7?OSC2KW<=lO=u&N|dl{m?=V-Im>~2ByZH_L}mbsTB z`VL21v=;Y8MC%V6U#=~8uSE1+j;_#FxLXnZBS%+iE8T5~zQ@s4t<~L*==&UP)7spt z5d9NJ+qHK0YD7Qe=qhcMdkvz0=ICl|wRn0ntx5x=vf? zJ`vHsaP$Q21owJG|H{!5wG-VPi2jYE>$Uan5Tc)Qv_tD~Z$LE8(U2B$pMDa7ouA+b(uAG8#{9|0ud6W&9v?p+8+xE?yc48v?9!K8&&WDMk?jW3%$er+6VQDy? zZJ0!Ac7oK5&K_xN=a%lgu4w1hNO#-L&Yj)Mw|DPgFP3K}K2extwr}p-scqY_g?+H- z-kO@^+h|Xg9DN&PuEEIQ&lskqFwbvW(cIMD-q^Zf;o|z1MU5NU+UwgJty__2=VpcN z67@9X^Uy$c;O8Y}=8=cbJx)wrOXyY}3YB zC1stPQRIz#%DPYA)U&gvY}3}Vgp{*p9)p;v`&QZK5Mx)UOuFllS*LTGNV^LVqGIEuZ+10tZi|yZCvAJ_=_taykUQhQ< z+BC}@#0Z_ch45~%GkiM!_TcXfp$pM2M7t2}I>XL;)TT4Kt=lvW%hnzPi^PYe!NM6` zI@z;YP=VFohML*?9ULYKY-cjxq@2ORM03ph)}#kXma$^n<~^nrZ0PCg-rAkbGj2@A z_hd1iCZ0*+m}uZz3qib<1#K(nDl?{Ihe+3x96s!w8#lIfpSr7i^Xy~bGiVH&g+<%9 zwGn-Vg}#P#?jwg2%;HFrm4PRPsQcCoIRSOYwk?dGb$jOyY$c^#>YYl#jj;Cw6^v?^@}orKAdunM{x2aO(Izj2><4 zHZfbDGFmd9o!(l{puP6wW+*86d_j*C@YDt*PgRviBEh6UZIw@~4Up^2faI&K_KCrO z4`XX<=yPLD){rJ5N1io`F{`jl=9kl0QJ-_>i^e_131# zU{eb01z826TsFpTo4~%#O%%yx5%*Y>2BNBfKp*Brn*xdNaZ;uNPDRRAWSKt3iR@#X zT%gEf6q$XDlZ%T%ktZo~g(6Q;XEZ>D zDId_pWeTKxJrmoE?`C4+qZyny_={OskvA%WrpQr6-m1twitrspK2s6S0Y%KQ=LnhX zJDDY?=mJPjm!>xO*an%;H{ z*HbvHvp3f=rwen;iS%|8x%^GS$(v8v!oqDV+|I&NS-69RJ6X7kg}YgJ8VgTn;T{&A z!NTvd@GKU7kA=O!E@$)0UVb^3U(Vx~?*lZ9vD+<>JD(gSfkY0Gglck^B--jMm>|_H zu%v#pVX=&iJ)>+6e(?asXlrx!}Es?{dI+#cA{~-e!8gRmxm&smoX7YEOS>)ie zlf9>~N|Jmr`I(+YNwQ^@o*xoAM7QH0y+NRt3Yxq`l%j$@Ib`inmME5}RS$%09rh)5 zOVozNaP~U;V5}_HYO%!5BOizEoDP_JhtV%Ueuw_38k?k(=#m5G<`0; zH(-Y>WOX|Ad4wJ8%+}}A`ZcR8$?Ygo6Nyw}X^KNBU@%U=V7%C*FQFF{VM)uS_ZAQ4 zU&b?aD6#&5C5qUYtGCd^TSD48)pr#gwW-j-xs{ex zahMA0$i>SBeKm=q74q}b_*r)pF_s;qPCH`PAgdXS#X4f474;m_Pw01v>6CaPCRVY; z4pyuf^<1Qf7+k{O4K7R1VP~twVvmDQJV`%^h{Oi8TrHQx(L2LZS?)NtTbdCV2umn? z7pG9BmO`bIPB!R9Mgc0uYrBC?u^s5ozx~J&JxY1|JICppI>xKxEtUGo^lTwHB>6{l zvhFt0>MYBtahMG|;xI?(iNjoRXB_59yW%ikJ}nM)*3;uquk4A#0^1q-sfn79gm36O z3={}Gr1$h|6Jpwg{ksn9JNvbXF>T_0Iy!n+zcwkRO=8E1oMw~|SQV}M>0zr;rc2TH zAYzoV>1QBf6tnB!rMFaJdssRUwuR*b`#UG-XR;`T9q%!KF%$K(Sd4Ap0LDrfGl|}= zk-K#lofHV6a^yp}HsJs=VbDZ6s(KOwCmraEmg{@T5@Z1%$qG?F=hN%A3!q~%Nv%$% z(-0`#DhQI?iRqUC_jr04kh>@B7GU=tlq#X33Jkk zdp|(xSdtOHhQU)A%-n7&B6iWIsEb~oaKz-cTo3vUfJWAbrEf%5X=S;&bk-=)`xtFH zMojL^b)Iaopk#0W^qZLfCv66~Xv#BPG~I0E@5kJjhnzIMXE!K{Y*JyZ)DscR}$;z6dacFTjHKLjCnEb6BBOmxBn(e66cd>2+VDW3`)Wbjl5$56kWWA%QzOw|Vf23>;mo`sHqq2PSA z78{fn@&1llpP$kG76Wl8dz)!4rp`jz?=pX?^w3X73H*tA*oQ!GnV2&$quzgI;&xm9 z3iLJt6Zsh`pF(JMEIOOsK_I=dT(W+h!AuEr=@1d-4=nNaK+@AY8tD~h6$SM6pdopV zz}4bW-X3(*6JpOy!>3Toww)?Iy=`RAjR{Y#B~>HN>v+joBbIDEp7#ly;OvnI(gMjI z!|l3jY4P_PO-inlr z_V(`6caGv!-?3?H4^AvsckbxP8%cWhVx;lgDsjX%F&^xh8=~T)P|W4|29@P+12P(U z&IX1Zbq3ygJTq|4fBh(}$miqLe)5~76bJ?B1-XSFfSh4WbEPyz%uvKEMP#eZ?~kw>`SAz{ZPmyBs^?7`jwyxfTDrRi=;|YLiE^km*M^v%&A9W~A6t&TziWn(Dt@)ko0cNG_ZQ zjUeA>W7(WS3e9hAVJrT33me=b+`hck3H!<{a5DQ!WA(3@dSHjw+hrv%s(yYtmjs=_vNHd0XekZZw$g-Q>Yoz6ts!sW|W(2k8PBX!}nE!#JD@9bWA zJl1B&vYyK_J4F_H!A@_eQ-p|gXKYBtW`E1-rRpf*czV;;ops-qOsWj@iYP55andmm z3w&FK%tLfK-*~{2WtMPMTU&WNwl=su)(>tEW^93)YSCBY6RWGMB#+1MH{4fyd>(J| zP?lhgl^x3BEXW~iL<^*4*Rlc*(gmG+9G1+8V@Bc^Ko4~hG zT#w^BduVh^mSp)%;v`C9lRzxVXD;kGac&ZFamq$3OR*cr4nA_xQWNg8K-Mw9ry$3%$RM?IxkL^rWRgTQ6Zlm0$`Cz^dTJMYb#b9ZOn zVYLa08{V(;m{75WPfHdSv9OqhB`loA!WqP3wJ8FTqy_;lqHQ_u1=!<)1T$0=n?>0| zh(MZ&EED*X`Mg$8EJ{|2_>O_Ig)ER!Dhj4EJO(Z8A`^08-qI*M{VLIDZ|NAZky33M zv&B5UMH+z_J_Bbs+8}g6zPa$;I}ab8sD&m$Vh|D+LSkjif|DF?t+j}&`B50NNJ=#t zbMQwed?&MjStPZ<9lj83DLgZaq^pwMTXwf6dy=|cQc;k~-}uP)<~;DT3k?rgsfx)= zQ<_B9oujqVG$j~36FhiuH_^hkD#uwi9e-kFoMl;hU>5fGT6=SBm_h>6)iI7uNC!zN zeeKD~PiCKlYU(C4WEwct{i&XBPCxxdIlgpEaB^#yLDiQQ z+RCcbOZJm}O1v-L6(I-YICN`gBrXs#>`|Qd`enVWq0tN*^;*i{}lZby{$SQWLB#s14Rx>)ENpqTP&#e; z>RXrzTstx%m%;m=vTb1fhKoEhz6(yfbijGZymDdI<;)(g91~lvYK^l{WnqGaNis8J zbHUSZc3hB&;AXq>dCYMEKIOH6thelBMt!qCxO5v zPJ>d{2xG)8%^o8jdEOZDDivcS&vM=v@zDii#BV)+j09{KjFEgh8rOA1#z=v4=NKt; zb!yW`LP7uy;m%m4%{+x6+}WW(UqXh5u(DPW29$)NRW2mMLulYO5)xI%5L&p6s!Gg) z`r^Y2P+6Vno>#Mm@NQ&wZP~uJO|=Y#6y{347T?uXYqNvkzHOZza}qS5TaUz4r)nR9 zz&4~hnk^Eis9Np;lBy-7xJu%PQx>ta2K1%emVq zXh}vvLr~E2boK6DFx#l#iV(rl3$gT-F?UE%EhDPZ?3UqH8sC!tOTb^nvrfmXt7C4J zQGO8EG!Ry0AiM?$YdJy*BCInI(z(}WB#m^I##&gx(_-p(cf@0v?^QFRDk3TRH1j)chJA+$}3 z5oiY}H=TrCIH;4o#2`Bo5)TJoK*B186be|pYp%#B=*oEcEPfsSf9oK>cgm|1WI(0o$S;c)B$!8SzNr-pGJk1_qz?*PuyLic^Ry=u{=kC(F*c#@2 zk77c(r(5f0>zVhbETO`?dyJfycl8*V@9P;O3;exfs6@L)4Kk=y`+!=U3WS6w_MErJXG6Q$ z#i{&|@F+$LF_mS*!^Iw9XB8GPSjlnWFPZ9Lzlrzy9H@qOC__=6MUYj=_yWhUB(Y+sR1vW0YA%*5yfsk9r+FFqYH)%w9^jaTfXgt^Vyhd#5_n`DLHjoz=YtZw zt*k12h~Vj>G4YKF?b9A2=~+BY`wUU1=@a&|=P*$pJ%@?<*f~zr zC(dD_K6wrk^{I25s8656M1A(O6ZOldnW)d5cA`Finu+?g(@xYEPBT$of{D5V?tg<% zqG{<#gti|~F^|5PHCMltHCJEGnyatm%s6koz^te8^#e6qsqHEtbr)#(Bg;xW# z73B#|`};|)OZ7n9qk2a2|NXa<+AibGL6!4=2Jxe~yCzbPg??3nPobZaqm|_eM|r|o zo^X{X++$?D@N+UoHV_Oi5;62h7*@#W(C9n`9U28JZxH-!`5nRUmNy~XX!||UenCb< zqElw}D_5aHfT+sDDPOZlV3kl%B>)mej0B7J2CN~_{+3k!5C8!H0`M-RqzV8kU{F5( z_)R5!Q^A`@P{`!B1m1{FvX7yY{phm_-?ZEqCH>4{F73x`zawlg(&iZiKR4baS>GGK zC-}Z*XTCkg$i?=zpgNl!Z$r4n`3{6zU4I~GbI%IjAfwD@$lDMZRqcma)QK7hNYBCO zxljWEqfQoeqa{rlzF@E}?jfwJ>VkUMj<8Cxlz^F1z*7qJ6ysCp_e8ZrFWOc6X#QpJ z`Zq?n%#(%wT7gb{mq{2ng?EA5O9+PZL=4NNcZv3A=oBGP4xREBG7?gp@ENZCm4t-V z+W$e^?Z)`uNXW5T`v=73!>hG_kGm&o>u`n$D z4v`ms7b^x+J_L{rSieWVei%px2Jnf@hy_tNM+`Yb%E;g_f8z#b31qyF5k=vikKz4* zUW=Su_p^cunRURB6DS_$_lNPeif#6(Eb3LdVkqFN@$_qHc*uVlF z+}~FczjUqj#9Y_>##ea1^pVl5w*ro5JUTl~KmY7Z@j4+M{Onth|q>`FX73p2XW>7(R4{LgJCZQLKj%(VJfoWQka4 z07m-P(DdC4Vr(WedpA>Lo*A>u-pxtPsYDgKO4Oud0XKU$GkwCiT$)_drl+IN6rfHE z$y7`v{G5%l?i{pjvMAxUU;m!osct{lpE0YswavRCC!x&J%M#MgTuCf)=G1e%-v0OZ zN_BDYagBxtceRy~)1SduIZ||m6b(lly@{S=vTH?hcVD}{|1DKj)p&9U=O{!NhkvzI z7KK=qpvVvZWG6GYWM!xEPIl&(Po*H03#nXWDMjEvF*_G<$&_u$kZgI>cLpc*{4_PXVv8|}?j&<3ItpH7 zBCI}#!}Y~!GB6ZS%c3{gW81_okXAYo2bE{Wo>?7(GKwBR`ggG96RKgF;=2&hFminl6Ue zIp>ThICz4tfr%QIt%jV;)|HoT-L`q9OYP{}72n;ebT`@9bq_I9qvQuQj2|{M1aD z1y)?94Ncqf{e4Mx?jGD~l)1ZidAu*t&he)zU6U=ul;7Q@lU<)F%oJ~HV+7ZC^g?x$ zJ>#UC3Ul!cF(*G~XH!r24rqy9MkS5CY4gTan^$hxG7j6w&gFKpM0u=6ku%ds=~mAv z+qq^V6MSPttZO#5uH3wN&dYP>hOZS#5;Z>A>f;C+2E#ulG(_wh63 z%rQWcuC@+%96>)Zc2-Q0)+w1jS0b!)SDhmfqqWbKj?w21=n13MD7>Vuj3?SRoh|Lt z4GmAmOO_sjGkk1PrH_GE_97juKY-SXL7%-RTq+(^6R&!FPk+_=KDyfHaxjl zO=;$QS;U8%KK7D^U@O&2A-z@|>h-mCq*DF8Sa37EQC}3_m9*~C+s~8Jo~IU3F>?1V znqq%tba`4>V#3$`)#oCum)W4qG;U2*xK^&JsjHN$tE#KzXcSGjRz}d+ZEcMlt;e9Q zvQ`d9Ya?=`IvRE7JQ}LPfE%ugRLj*hQOFXhsgi3Vl~EahDmh$>>Y}xkVN?~Zmm}fo zI@AV*XdRYYRaqxT!_lxU&6m}HJUN{Q97L)D3JF?*V&TkSI9MILFt|0i-5OI`3oO>F zn7qc!;&`zd>=2zqlni+d-%3iD9ajmyEbL5(-i<=^k{@N~r2;AyQK^(l)2UoW}6pe3;S8PhlP7txQ~VVS$GW#-_ODiu<%+IevpL&gk7%VmxKIr zJ-^(*FE{ebP5g2*zudwvcM#IJ+~yWYVP&IGK!n0ZA&-#r8U-H_9m`Sg)V5r(64}v& zYNyNMf}2>JO@fQiyau5}AXd6uun^mYalu3Eqyc5U9n%{HKXF=`1ckWfH3~uErcDAR z9tlN9z0T!=ljMaOg?!?(EEiWiEBjxzCA0r#HfXOAVU~3L{NB~%Z!Smg%&_^9qwZ~ggUJr z?+wQ#Z4v4?8d%E#tBGM**v5~JwT5G%0x83?XzNh1&%oLOSX&tu1uSY{UCyyC*RJ4L zRJ#)O+YGEEV5JzAZ8cM3<5-;>t5e&>v20ow>ZTc3eSp=^upEHpFtD!SSl6IaRK#*< z9{?;TV&%c@8&GlVM#Au%t5M|(@Jisu?Sv!VPS92uLv?C*;^(&;oBDjnaxdb3m>gZ{ z7AnxNmnY>xds_hq*GJ4t2oDo9jD;LD2S|nX2x-Y@>;~KO@z@Q)f-=7gHy25)u(?pE@Y?vvSW$BkP<;Za z=E+e0lLW{ z%KRTf{nIPNKM?H?BqSv0NUG*w!is9CHr1-q={KGjBQ4S&nSLW{yU|oF(%1e(Q0sX) zqN7Ik7->^9f*OxeZ0l4Vxt1M?@HfeDd zDR@B+1&60Bb;$za4%1Gm@4}g~i;8p2^PiMd$LWI=)tHb2=KW zlp@jk2{$8iKXKAK&ehclyg`aVH&ZsDhJk;|)J(iK57E`VB*~Jg?j>18o5Sv8p^Jri zL{@Av8n$FsCIN(@kKSx(PK*SrbFW%@&8Va|688<`ez68=1b{p5A;Q8xaWs>d+7 zV3Mzz9AfU?zJ7H%+pk&??~B_p3ioA7wDvZ*zDZl9k1+g;zgH8#uj*{U0PV>$|^<+c@5WFp%* zQzG8Aq9?xh^qU3Qr$3W?KHHEM)7#<7J_%T-dg5~L&WnMo1@jm`y4l=I^+9s`)gCjzGSCIO#(MO8!VBXuGa3JzV_}N zJ@MVpm9|dcbW7j<&Sd`hAsVWxpL}oPluxtBl*StC;>o6}zBgmAH*b>cMm~L!MALc} zwB@w5+k#cz+U?j4OX_Y^FWHlHq`DLF&h@M#$bo>~z=>pUlVPu|%>u){t*@QJW1wS4 zdtYAKlH0cJyf+-JYPu_|Mi+52Y|J8?wJW)|8DkWH<&a=&gZaa>Tew1#6yLX7itpbo zsc=={nt*F!|86_gzYKN{eL;A@cXB!N= ztDU+pws&PsH$m81HA+_4bMCeo;Lj zs{Nw6M@;M!6Z^%)0Wr}pCiaMJ2gJ61v2Bmk*0v9RSh+T+9Q+b(Vtlu#?iLff8>Uzl zV^=EOIHr9+!?2&)4?i^Y2iF9Yp6nxgNjqs1`}T=_`jWqD=E>(rWCx&Wg9S8TWY`n3m{tlWS*L3h+18 z5ta2QL^jWj0C2G6EC{ftFP47x$Y)V<)@kb5BSXnjPqH_6Bf4se1eyA^)rkK0tuLfY zzHnoLTZ8#c6M_;u7Rz_-+aCNx0 z20fxhr21$TAXRh!VE|TF*CCZ~WhGZE2aISq3MsXbTB)wSUI|BQYZ0Xqa)fKD(D7Rp zW~h$T)>v2Zr+Tkc7p|lFD-0Swtdi=gpzvzk5eHtPo}8ztR8v!%58n`8t1nm_l!LQ_ zbAnY$eZd^-qTpid61EGyw0K$Zg~5)(r4oEl$O=uX4*Ce)ObK%vrf)z8*dBC{Z9^AQ zxg^8xU>UW9D4k0!^Qd$IRp1+CA=;)Ol~jWNGpQ7&QUuK)TBB5{rtmqV)KICGDs^b( zFhj{uVoHY6D(YHIU2CYcmb%taX+0$?(M+LqB_%3V5@?{1B&o84TH2}qeN@>=mCaPy zLY1vlxfdvY7=9liH1IJ(rBA`{(}dE8;r9rnJE`;}TwGMKP{lzND^+Y%`8uK2??BG) zL9QPW+rz-Ca$!IaWWg#xlQ>-tx1;D5;N0P`+h@Q>k^~=2+`^;NMVy{l12g5C+B$cA zYM{L0y!pNw$GE?n$Ux_=uI}Ae_rMp(p1u3_A85TQ?##;gQOtrlFvI=>g8dMDuGQE- zP6qBHg7bciI6uK7pJb5-Si~`i5yxQ`aSvg{eT3h6kllHRMOJ(kzrG*{;3RAlL1P%oPrv(BRy;v(XPX#s~9Z{7vqPC?)8g7@gtu69syR2<%QB=8I z(YCi(R7<->yQGDxw4G{~wpdkbyH&fa#WuIyrd`hV8AJ=s2L_VJz)T^jrO@0&+2;@8 z!GgckLjU21ySuo`uTnPPO<2kkv}_O`c_Obo;VV!0 z%M*d}M1FZ9Se_^-PZX9Xipmqk<%yCpQZDQoBNYUK^F#>dOAsuOuO1`kD?M7*2)ek4 z`?c;7^kxyy*LqumBdLP+ptffuRhTMD6_*8EqM+?X9~5PQHG-h+Zz+kDhQyFKFC?rj zmE$Ga0lbM)ujebx)1(UR8WtxZqQ~FgGCd}S?93rF3)hO4_;l@BbdiBs(;Mj@98Q(_ z9^-0lmXswVc+leDb%bSv1T@&uJQFfrPf&C@H49rzyMf(DGmh{JHP3v1THz-Id< z?c)ZMRlwx^nH+s0i{K|uNALl%N*f~BPa=Vuhv|c;gvG`R4qNRraIZqOre+=Tp=A5R zWLUK_ldk8naDMXw36E%4>tMq9koN*+_f<(L%`@Z*wDD-RvAuwrCiWL0+~jx(!i$~XKxGZr zw@_Kb{W2a7hx$S}gSGeU>1cBv&WkdT0nY$<9 zLKPrcwX^EDwO24=V-YXfr-Tv!e?KbL#e%N_CoKg(fv~mkrx0FM^fL(K#jg`>l&EfK z0yi5cdD@RL8q%Xa?HEzLaM#PC`Py-ehV*DqdzIe>{6S1ZtidA-iJGtG4GtadPZVfB z;Rrx7J4aCUu^ffk>!^WMFr*f$g+qh=i4yO#B6RaFiR$wG1-k54X0_bfuQB3a5s&s8 zv-Vz8&dKXf__f~=)z_a0Xm0`&Se@TPQCN?+i0a1*yiL>qa{dRRdVq5etB4=!Hf0E%n?w7dcEGwu2-@47os|_um4I^8}=mH`c-Wq zGT4XOLog1Y+r47~`tg8@IrS?4&8($I`+H^||C3cIPx}|El23b&RoSoon^ifW{f9M4 zzIKu|Nl?2^%OfO`A!kqHSaLeIXnan z=sS#s9v(Uj^W<*lAXB(uoO_TrC>0x=m7J&gb>8mgmGK~NnK^uFK!N;mr_jI_{Dy6r#7)4Z6^m}#Ff(n3aB(0d1gnK1~3`98}OdopIm zkeD$uj))mE;~|mHjL(RCW;`tNnekbX&x}VzJ~KWi@|p1kUa$w5F{a0(Mp|enJx3lF z`EY(hoM1RV2z)*%W(?=2#EjwmB{5?-KO^$t{H(}_^Or?FoWCOS;ryJ)hx79yAI@Jp zMdQA3ipG6WAA>JVGzPyV#;RdB`O<^H4+GKY{CpUidZ#y6J1ewTjP8CwWZm8IpOf16 z(3Y9(FSF2>J@5wjBM~(nPx}&Ao+uq7ox+dAF|vzb*d=1vEn&D@#_(zd!yXHUy%fVf zD~A0x4ENYE-0Q$_pA*CVE({O2F>Li(W$_HDS_NTz>B(q4z@IE^YG{qT!N42Q~LMf2uyGN-U!?a825^_w?sD6VUiZ{ z)%P7ywE!j6%CkennnmmnqDp~U`aZ?`83g~BO|V28gYl09T{?n8b!8FMVB8@=)&DhFbyZq+k9GK#M}YAFoQVz%D=H9IF7Gq=J>w3|3;35@1a zmid3hRbKdZ*Zu+XCfzgt#71@u^Pc$^Mw}zOXWqkzYn1oQzcJ!gW!^LY!I(!?c+U(- zr|+5Tq|^7zK`EzaZjdJKnH!~vd*&u7r)O@FChnPArHOmyHYulP?vSR?-gjnYHagG5 zDTcYi9~*Z`tGtV0`rIqw(!-|DM*vKB(nlrM8V=q|ha^^aC-0{FFlJR6)8X8HIxiaX9(WfkHi;gKR1%ynC#`ri?v_yWIyK4 zGjcD{erY7TF2m{i!o)f_B%6WiCTcnylJK^#gwJmTavl0!R}>lYrHLGY-_wDjoa4vBTE_{ zVS5;VVi6pAY?oq;M`84_sAiBtnbvm=JiPN4$&@Zuw7 zL^vsF1I*vfus;v?*<`-ac~FiuG&cwp+6}TPb*yN&$><|k#!4Ad$4KoSS*Lc7tli7* za%vxzTjb$(S^J1V?T~CrBP-e`k=mzN^BB^|OCkA)LG6gFJ;?43Glv)t$t}uoyP|zY zMt7!MF!*5xH!la;pOX!lWu*N$(tbk5MlvLpk<(`k+Rw<^v+OSC^viOKWw_mGKdaAiLPz34m2Ip-jIh^qfoFeqN-@Y*d}zAs*9*@Ol@QV7g243`&=aM;fX{w zcen5F?MU=4Z0hdpWGAYIkY@3zm8$jpi_H9IrBtnxS)3+wLHsmo(&Gv=S>-}br?+kV z-&YmVnYl8PZGL34kj5nc3)Ot}k`_ z+>n3KoXJe`a)edqXp5Usna~cmq5h{ZNiSV4&&48JbQ{}lo@hj^eS5pNbhIVg4BOj| zJ|^tL1jEF=?P6!UxVKmA>=pO6iJfgIgeLay$q)+T5>gI>w@^*}WcH}fQXudDH;dKW zig|`SYL<0z(wc4UJHw2%xTrGAjR44%7v@T;(Qvhw*?kt3qF`}Bv9%;vYMsVpH>MZQC@u@m5?zEDiqg$K``Ch0 zSVE|0CY5G0?ZCNIDn|uDt{sRX8qANRJwnAgDwQ!)B~-B69S*0{IUmIw(0a4TgdOa5 zowVStWUG`I6{~8hYgt%NTwa?UmKP7RUBaxDxKL}1$eCJW)Ni2=IABqkfrqpSH~c(k zj5!YjAD$}Dz*FTJc&a=DPnBojsqzdwRi1&T$}{j(xnhjCt>=vqkL~<1;uqu^4ZpB-I_0;j73w1m9?`p|!FI*_Ol|={W(D4i7pd+Sfs*PT4L)`9q*kYTAnJk4a_}~YuTT|i0tK7Ea%hha zt#7T2S;`g!n=NR9E>ByZ&azT z6t0_M)ZkKeqwTvK5UzvUr3FFNt>0QOZ?KudJNU&htI-*sBOKuI9AqoB#bzuu zvk0As3^1qE3SR0KUTP-!jJU~2Di;|`-Kys0@M0qs+P3V}3YO}L% zY5?6@kln4Rb80ol^NuX;7{eRV>qGw9_fBf-&GjMw0*H6w8=u6klFCTb$A zbxFF}C|wiJofJ^HuM(ZWR-$$#3;1V_EB)r^S0;FK)CI~HqCmOvg%h4Rk?i>*%xX)( z8#g?NyLVbrfSidY6VGkm605^oV0{)O}Ns+4a(_n%DJW? zvW(=oR&actHILb;h%?<4o)XNuk2Y@Nz*LV^RUdV*cS4KRZuJId1ZM~57Lwoskw}Hi z*|>yXoU)CgnL0OBJXFkMzCMbX%F#%imES8Fv#mkX#L>OGOqNlz#558 ztYM+E*@HZT7HnY~KJ66WBO6z7_g2<=w%g;4`C|T*zY=$cDr5Pn{7T$HtmOV%+4=|p z_kITpqmtKMnFBk?L*+cQWGUxU#YdF_n~$J9OQlFxG^R9= z_?4a2rObi%OBw$TkV3dz@`OnJb@;jwSo~e zS@{%N4PM~T3U5526%XT{EcfhMGP=Mu2szOz@U+ndZh+yt68CCHM_?LrHyO z+RSV>m1yvi`K3Gqx32HZp3sPF7d(gHT?FRpCGpOkP3bt_10(3-k1H&H-B4WqBUyNw znUbcpD2LX?XJ=zJO>c2FJs1di?8&o*&0;=Cox3`^R`sBJ-zIp{q93=3{JmNGx;Mw$ zI^xXb9D5vhbTMTuW0QCM_Ah&BW80+WhUtX+s@6Tp&TiEIcl7Pryrw6K%k+f`z&70G6+0XRsXS1Vq2Wui+(576BiHf>allZFTo9J8zRBSsy zTe;b?@T7&BF9|#a_a(^zx%cXxKJHX5t>dYzSh=dc($>@6$9nG4G;~=Sy1ZtpmF(>9 z-r2|vmIhnn9X-VcjZItEY`mzodE@3w8aJ;XTO4}A^2Vlhq|u12U)j8stZ?eF&1+Vz-l}Zb z)Y!DrrYCLNL@qZnuh@9WMdG$i9zD8g&DN&XkU_@uysSh_k&(8M_p-)ISXl}y!kdw* zm$`aP^HzgKV^h=0^(!|wZe2+>7-<_eZrg(9VmGdv@-%>6T#-!0`#bxVLtAxp?dY|o zdSK1k+OaDs!^(82w{;h;_Umz}VV_BIqI>s#S1bRT;tw^Y7abT|SjJ2FVCA> z(2IsNH+T14?qyKs(}YvbSP(8v=e~6O&CA41YpkvN<9pX9Q!w%XU_H*D&1gwLx+s2; zwRLv~eDiJF?ce~*V&^crM^!p{Ay@NMTgg1SV2ic>6t{BI1kn{v{`^WL@hnT~Om<1I zx_IEzGqE%M^zEha!M_I{s$?*>lWlIje!aXKVG-%>*$Z<*X~pw1OKT6dq0-t3txNSeuC%s6n^|_T zYI<7xdg5KZSZv(1wP0!O#U>_6c%|GyI>`ITPTHPi21V`q6<%=+a7#y*)VsTlxzF9* zz1N1^u`Y77#uJHTCn}*Qy`1C*7?T~lJ3Ep+`T^pav+p%%;1wBN6iC~gSYf_Qxml@O z+k2qNyF1&~oqcKX-Mc&YXO>5~gW=21p$0jR5w|&+aAvMP2f|r|XtFD=b|%{tXoY0o zl%EYcHm)knM##3^Q+}u6X!)mnVfgQRDbHZ!%5m@QY#Xe)vL-A?&`fD{xUNo)R@T(I zv)>)$>Y5r& zq_SSF0sf$X7Ad9iY@f5RFEVMKt*uMH8(x5lE|wLV%9jYpQ{Cw7Mz` zcWcmCYdGr6TqEVWx@es<^ARoA)YsKQ#=6R~$;O5|yGy*euiN^rfE=!`sdO?K5Npr{ zU)sT7apBBDVm(NLzbC@ogc9zNmohK$c1j$$OGnr)9m%7_M~R=30JRiQQb=hDwU$wF z78PexF+@e?qnFO3VmTEnaMMnlPeo?$Rjfo~ucU_B>d?lkxP+2rlr&IrITf3zw1SE& zsn|@#Ra9I}#Whr1OT~3mTu;RfRJ@3a8>zU7iWgIHGunFn4)9{wYF1h2PN;L)}2)Bq}E;3+C{D1RNPIiS5s>b zwf0i6kIH+fcz}x6Q0x1t^#fGAmWm&w;sBxc>!59}C)9caTyKQmO#t5vzgysUEBtOF zRJ!S7@6`xN{>4ZjB<-yr-B13U!3 z2jTY+{2qq1N8tK-_kHPN=_u(8l zyam6v0e%N9r=oCjr3(g1h3N|cnjRSl3)8C*sz#_5p?ZL3F9vA#QiLuP zgz1ffP#VK~{R1sx>2!L847BV;;4=sarKrYV`Z5_yU| zP14{qCituge%S<{Gr{Lg@M|Xcf(gE8f-jliH%#zbCit=mzG8ykF~RSe;P*}NhbH(x zCio*0JZgf&COBe(qbB%c6FhE$Crt2F6a0w@zGi|yHNl^m;Oi#%a})f93I5Uqe`SKd zHo-Sc@OLKorV0LmkUPm;#AXvn#dQR&^$OD(gy}>gIas3oMuOIW9XCNvKXHZ{gxLad-3+lj;+}&vCE~e- zpr>u`tpv>u=j}ji1HL`{p5McE?gKN?HbK6%K>!YeHxRU1P%r@b^GV@t1Pv1uUCI%P z30wtIqOy`o?Tm|Q>saFSYj~YztY*Clv*mj&fvCv2?yGX_stf@em;;;(lVNxmhO73TY?Wg)NpC zT}y>_i`LL$joH@Pgm$a8s>RMz?b_-V2L~P6#Vt+_I<+k=E)Kf1%Z?7OA>3dAGot`y zwjQn2u0nggcz#M1#qucHXYD{vN`;OwG7aqsOc%Sx$PB4ldmp!zi;^ijS82P3Q$A)w z)pxl6xYjkC^0S!#aQ_LddpH$fvB2T}gp6K$Q+Ze?RmN~+WN37BXs|h-ptnZ6Rgfxp z%I6RSCR1H_kgEzFJRC1V|GufbkPt6MufCkf$S9!Q9WT*(xnX8rmG?tcJ`kIhnucbX zC1}$MNW7j|rwt3&6YU1lGHo~{JdS&|!^|_^@ZJ6G)3h6LGu2`^B)SWY0)L3NKc3Uf zASh9dW4zq1+MPASZ^QVx?r%9|VRmMfA6$=`yd{9S!kZ2E) zma^gYGVL=YHnVxAP@z3cxYRT!@E8(!oS;=f zM$&vVO3adeX(XK=yC8J|OZt_Ow2+zp#iU;wN#R%|6=6xgF_NOOs#FzAdc#Pnj@6`U zSkiBeq}o_rs*WZ7&Pb|{ElMq7NpBiSi(^YtOIXtHjijZqWvOK>=`ADa!dOG9fhE1o zY*5RRVtEBkfc_a>PaYp5EyABs37-6wX#Y!4+T3R&sBw)u@G)1))x4ZkXn!LJqKV(s ziqy)uPy2gjLUY`&{li39MGpC1hKce|Zqj*mYIST)Y7NX7xCt{Rwl=kPXb{HmzesFd zY8|`hXZQSvW9w7vhX!Fzy+_Q+fxc4z!{Q@+lDKsNu$h9Or`+vy!VH2jnc8r7KbpSQ z(+~H@iB}f#W^%Ms0)|DB)mzCU6i`Who1Is<`Wj@b_vRk4`VHm3GEg! zwkfrVS%bKBT&BZN)jLF#J%@VTDaJOZHnW^}v7D)**p}3mVXU-w8q@5KZB1?U;YrKg zSs8GpxmS#B8)@DK?Rzb%A7m^b)y%~rt7Awo+K1JRH%eCf=yhWabKluE%>Ag}>s8!} zHA% zqQ(-b1WIl(thQ8J8cwE?X*iWi?P*uF7sc3))DFW{FxG@gLxzClOGrvhsd&?eH=(dJ zdV8uJ(O(uZhi|haXs?LaPQFj0`I0+{^>tDEwur}Sti8TtfPU?}1{lzOAR?K-B36jyKW60jX|J*dV)=h!9|FEL(hn|U)~haNi6@jH&g<9SGV=yl-m7`u9zAbwI&Z-H5cbZ;iS3Ut;O{5)Kf&b_#4!e!PZH<5qV`AL z0wpNO`X`aSLfGMni{h+fMzoKhQ0u!Q5=EibKa2XXIh39-Fl=GMpc>U*MAe0F2}79k zZ@j-Rfb_p-Hik=e!iwe7{*hU0m+HXkd2yBbCm#;y0r;<6L~O42auE+hyPV{s1xp){ zvXC4M={hM3$(b(gpu`3fmUewEBC>fyE+Uq8lf+vgupHNBi48m)4Y!(^1K48N3#fT@ zo5V(70KnUGvK)piZ=y4LDa77+Leg-^KGfWga>lZDuY~h#+>Bj>i*qKo@({54kxW)0 z#jkxdqcBVfc;AmJvV?u+LpxL-8%N~h)G^Su6mt0BX7dB4-h@{@RTCA@6U@XaF+5A?e=`zniQl^})qL z-mfRLH>J_oHK}WyxGeqN=nx<3xN^{s8m&e*y(6{E2?_0U*gL`>Au`%NM;pT)@yYN} zu^l?(|4FEbY^gvjMg>L-*GVjm)@50T2)T_kmvabeDG z?<8q~pHgLVuhE?yeSPRAF~@Io`TU98CFdZG6Jp+Q4xXfQXiumLmp7i3wD9YhNjEo4 zp_-?Zb0!_uUOnTKj}o~peRP#Ab@lIJ($bA*&yOxi%suRK=F^VSvZ@8b67Z!NG_X2kVOyLWR(=QaVZ16Op#+Z7dckA$gyG(L?SD?$nmrs zkz-jwk>lB>$Z<%Ub4ropxx=fqazo@8&^7{E4Hr4C86!?or_~OZ#T8Tx>pSi(VtQf2 z@cfivEnGC5q70}Txu@^=$Z*P<|BI6+wIy6o8I?JfGC^fnBj*Fzd`>o~1!In8hX7n? z1;ePf4&)1manB^~)QV77oo(kiIf^0CtQh{l70nULL$&ux+$muJTOv)#)Ho{f5iFT*M#X>g=JuLLYAack!5+u@$lKMoDnk89; zDJ3?GvLq2UotV>l2|8brLwqvXTL?Vj$r#|cTf`7)hYwLj^tDJKv0XB?)GeBi56?iR zmbyi=#3;U%Rbqfz>I$UsfjQ_NKQNi>>B23^KI0+1BY&J|>LR?o=yct*6|;;RO$>1{ zAVRO8+=+E>GQM+Na(^${z1N-0ju(QJ0KvwQLg6!T4jasHCcS7y2lHZx3#gyaOtUU_aspcqxjS}cPEoOPjjm;zB5U>*t-G>G+TP&U2WaFbOD~z zvC_5wH0{RGP^OP*ou3B3J>EO*G|k$}6v-{U9Vn+U{dAeOu-m8U-vsn)59vKkJ0-fi z67jy%Q10zl`%t&Y!gI}-r0-A5KzCP?y?LFcmVMo92+%}#KawH~oL4|{8E?Erq|63< z^fLEOBsTqYBy|5z{Nl_Uj}tDplh5NT$Ias_`IO|+HPzu7PtJ&zYbqhM63JqGTNYa=5atj{B96Yob;4 zRPO}2rlu-lOE;e!t*ee?`lz>?%Zdcdq0ov=aRkKzo7Kte3%H8i!8Xax-g=k~0D>YY z_7Xy6FKUSp3+ji+)2Tdz`6Hf9UJYBnl#AAr_%vzzSgzs;?Ep@?QeKnSx-Sg;r8RkSfiA2iQD8u#^kLLe3kgfN(ww z&mX7|2s|_7N;c>>{38Ec0 zIXq!(dhsV%@yGSzf5wZKjN;$QDE=*0{9CN}w^;FSv*O=D zH?8U7-#Jb3f8fRMVa5M3UHm&)#cRBHS)#HMhvNUqi?1cXzPbZ0{E@CVRW^&arhpQQ`qv zycm!_ptCqvxE5Lbpmy!NJ;$^U8XOjz91f6SpTe9{0LAOcT+D{-zOJ)-BN=8^;()8A zx|eL7tvk?Bw$7M4&DfoUci9~Tx%<7&-G`W?YYDhp2}BMNoxKX-5Ds*59}1QLbHm7- z$7JqfF#2&U-baw7H+7coXa224o!DWM*kML&h-gEnB6b9bA!kEb#2#WErzIFkxEwr6 z^r2KCJc<*MJccC2#|b)SAamCen2N{IBZD!BLK%bT2{Js23jpqbevyofBIi%R!tp-l zmjTDqh(4a4CNalIvx8J<&oFP+*f86m_*=yE(7IK`y4)tBi~+$d1XlJj?KaWq#Eh!l zE)KJHx=qZi+MObHT>u+uGj8CT#1Apz_lepeF($8-g#r1Pc3+yXH=_f9aI+IPdKu;4 z89l%#=gZJ)HxXSPfHhlKz>|JT9>fB~heUR+-+OFB%9P-`v==vbCvkebct} zjayf?UbJ!ZhQ{@Q3_qP|R7XZ)UJlx}?S=ij+u&Aum(wgU=LRov+olzWw`ud54QsZp z*}k%X=Q0dOq_N%E>48jSW6NqE{l zjeNZxT!(~xQ{vXX4L+#2X*h(oB(LsIcFvx7__JAKcqQEzx_?WPwl^ei0x9*92VK;MxXPb*F@OA=$u>Om)a@ z+itEA>AJxhm(vH^wlAJ4<%|`_jzfqwQm=yzAP!SZ-nPBh%F+O^bab^P_l5Z-0y8!Y zzX<8Gr#gCi``B5K!cO??EJW4Kun9({%wk6M>dtO#ZriT!dCi{$-&iAYkFW9!^Ro3c zy(u_v60BXi2>_<(pLT(J-XvIhHl`@8n^3U{g8&&HMXbq!oUtaiEXeb0oe-ZSH>_sqD`ebidG#w*!bF$oTTS}=9)9ca6>Io{i+ ztHy>VL1p=+wvHaM$I!5yY%$9|Pfi!eO%iVb)^{f1;en%|m$F&7F*Vtel5E?NTnqC# z$qcQs0gmVWZa!0RvlG)7Pl+*(yIr3L3VWD2GrKoGJ%`}|lTIzlS)+T?cWS3pJbO)G zfr|CI)oWDXWIg7esyD-`^&f9#>IDcJ97c!lvZr06aZ0y+rwKjPuPPc*a z{7>JinR<0`)mVI%6+v98uOtPW>2WW!wpPPLTK!q{1*g62Y#Ul%*sfq^pVq8cBzCmf z%Zz1qk+`6Y#3ox_b50Iqd=IvEcJ%f^ANJT$gFn6-eLY*@Nzn~&W&6F5c1be6b8}MP z-nX}<4Yf^ZxXlYyX7|_Y)E7=x?VSA9=Ke0W`EH!n;bF4Eh`S6P7{Y={2xnzhSm)kEitD+aqR8r?A+SZv13QFXR>EpMpoUp%Y;Wg4QDOxqJPA&1D{BJ zWu13TPCqN*>bkmmxvHk7O0KG{kI41a)%CXY{8J)zl~qv*9!g52GFn$BsR)HD!;!pk zgIS3HZnczPIclOca$Q|*r89H30JZvPM2SWsHT80Jq`FeBf-;qGeQi~}E9)Ht(jb#u zTT@#lN265{C0tis69FD7>#ODZa5N%US5+Y<>Ofc3)z`Rl7U)O~>Rd-_QJuTGDpDs` zS5{TYb>X^NsAi;2iH0L}QMn4f;eegW$~qt&!6t}=;a+83qzY))M<6p)+MT_wKrO0j zD?K@@rV^=*MC+Z*bjC`qi!WD4frqNh#GLlu}t!hfcIBJvk37B?9dj zRU*;4F!T)MQz8-QJcT_RAvqeU2JR~BP?5a48mdxL8-;{uZJphGPCyIPR@XA?Z+6Di zCGE*%XZfkExUpG&0W(Fw#z%C8jp1y78d@2&vA>TeZG?WJ4BEDvr!eCliO!D1PB~Ir zU*l0oP_f#AB|%AS1bN*7bInMzx! z>k=wmMy1QCbOlwIcXp|bx{_2%p@Vj%ohltv;Xc|sDcMWOJ}TV^+}y;~x|KT!74L%h zhqx*?^WR><+_x(qhvfU=`T$&q;CckE4@0&`2$eqv@E3r@qwsqi;3wes6#Tvfzo#M3 zvvB<~{JsLeufp$Z@Oy!sK2hnLK^eLu!-CIe+~xdkpl z=r$q<8*hhT)144(z8iwAABJG@M=>~r!F{L65g7=x=$4u~k6a1tJe%b^dFu_3+JZyqTOz=Sy{EP`cY=WOP!ADH+^CtKO z6MWPJA2Y$nP4J82>qLA~{2_Tt{E`7aZGz93;Ik(9WfT002|fp4n(p%=xpJ$+POc$! zYw>KJENKuH3q)MTE|L|`?&bG43e$-4fhNIEEY~&(0YX36D3lTF0BI8PiOt<8D8zmp zX%uD<$NolPE^(gMARG{gE7%}x6o`A*a=}A92bspb*MVC5d6c<^@vXzdfB&`1g*+0d zN11{A?gnAEK!VppW;ZElY!H?Ur0@oyT}+Bx45>H|r2$Hs*sap}je<<3EoJOZ?{5@l zlNnx?t!!VTFo(<>075=8Ye9psNg%VYZWLyb&@$G&wMnoUb$rBDvsJpj<>2Ue+iSlFEx4gv|m8 zU%p%jlE`h4t$;*tCn)n!#l7HE?`;%9q=wrBsJ#<%l#n`skY;j#SYSDuN3L8U2-f;V ziIMLR&NHKYV z<0x|oC8y++Wvwi?OWMX33hC~nsN%`eZJ18Atu1y)&pV15fh^sL>2~e178j%kj-vH+ zmhQoHm)6qah4g}>OyvU8eVFdm?jtS!SYT~HX!j#aYlJaUN}eOy7fDP0aC^S?Bxwl_ zrwZDG+S8<^FjkZ*YAzPq3$J(sP;9MF*SWOHKQ4xG}_mBd}bMoy+lTjHqQd!Il{z}kzoFpPoC6XCd^?LYI4km z+utF~PnI|3Wzp~QC~9qE^m~LEns>SM93(FQ6_{@#e^`bnQqAueZJq;Ue45i8eye^m0hR8XVI`$#81MK;XFcW1dWS@-d!#LOV`I zQ*%aAbC}(P6A+m@lA3$CpUH8Irsj>L<{d^o&eu4$$gzLQu@e;KIH-YdMJMXiAYjve zjxn8r9rgJADZgr06?AuK89E%FgNpoqro3etf*UfV%|%UqOtV20ZYYp85B2sTt+`x4 zeSH-4mPJ{)1{&)RdSm^GXn)G8_84h74|q(?LB!OYA%y2Lc<#_3M&_}|yrIGN^R#zK zY(DmD^L*%zKl8D%AhjTMe*6OMFNA>$QoIJgl9>OGFzGhmWQT{ix`Eod_vW?I2#NwChD2x5LfV zqyk0ZwVTD^RL%d#+Lr)EQDlF2RUb7oNhXt%8>5BWdu!x8=sme>QqR512t-X1LZeTQFA<9eG_EBnq&H#1?@!|-*fYgX4(4qNKR-N z--P0rmZ7Mt(?Q-{6ph)m@5t(yuyf?D_=D*qYaCh7U!3T;&@s=akF0TztVteO;~80# zGO{LhWK9}IrsF3hchf!Obhu~n`zT^AWErPx#hJr$y*xg6l712fQ!AV>6D*?lqoHY7 zPC^$@9z-+L>O*LTT6>uC`zhvyP5}b3%kJV27@Qoz$q|F#L5dRXL@*Q{GFWyhjXz9# zvDYftL-BC)V>Hb0G{U`DEf<;$5yAEMpOg9>o;eP&$0>h;_Quj+)qBk(W-zSum7rJ> zF2iG!G_3ZGR{Q1F`bKM3?g4m$QoxHqgP%5t8qMRw6OlAL>BP(_n=`SKxtqNQ0JWH-)C~&y0|=9)p$qpGHs>K|db2hhQ%Trs9cu2;fhj zV${1^1pG$bySvthrr}X~D^X>9qN#SG>HKSoH@a-u{gw(Hdx-R5|Dr8<&ktxzKIMOCOFs2Sv?ZVRvp9G!?zCb8hnWIT z-x~}f7%n`2Z!oA}B=Eh|nB21^ft4ZX^_}7rrl32G`93Z>CoVdt)4h&LeBWUS$&HK7 zjf>9hbRS3XczxIfm)|MohD5#+gSimQ6*h4@<#0kQ*3HkypcR{pcE=OL$!PR9$>@}; z7t1|HpSwg3OsJY5A@5QvNe}eP^>U9n7{aODT`*gub$7wt`!bUa zV?*#Y!OwvP;MaB$u^Jj5je3R)BjTWv5m3_+LPHzk6_&)WMwM8xZhlR?!jk#5{WWx5 zoQAINr=c5AC6*`;nh&=Xmcnm3fQD{9fQGvIYG|XSp>A74o8mQe>wz_N+d(vRT|W)2 zhK_ib{2Sf%a5~~Websz#-;Q`+Up3#~w)?kF2t?@ctE-`S0-5vs)HlBg0a(0v3b+#B=$^0e@VIB8Nj%W6u~$J)}7y?D5sjLsMk6`)=x4%cxLZ}-!AyoDCnr@ zXy`DgV2uMEYk@hTCIOv9ba0WGTa%2@p4^%gT=4!R^Pgq0;C)nvTi9sw3z|izzk>S* zc`vwm%06)as7As4lh&c^A%A8o!TpP)6WnFa^T9pcwF=x0lCT=Ql_c>3@H$D-8t~31 z?zP|zO(@e5E4V$2*1Z zAHfILRm5|l!Y{G?6ZV+5&5IR$w1SQ|EIm&E39fxj{Ah7O(xT|EhY;0p$<%S66zqrnOI z@M1IoNKd}71RhS=ggOmB4maguyT7I{!a0ErUr;oz#?W^$nt=tdB zG>v&4>Z9q0`)c}8tDtpC*aL(o>;b)I{Ioa9H-k9rH$xK<3hpV;s-baH%})bEtgleb z&m2U}&&I3yxtN-_9Fdxzx7GYYUo~$%h?-wIh?-wj0#*1lT7^3$g7ykpSU-2kvZ7YQ z1ktM)PqMu@>c|d-?@+|14xZ59J7Fvx+k-RK4#hk^J~ZQ>Fk!u?h&f=Ou!kNv1&hJS z=L11|1ue{?C*Yhm0E+n((Lg>^0@+ots?X3f{Id|QF%eJvBt!I982z<^6QY5JXt2LS z_J0(7a-JsazZ>kIko~iQ7rnEA0kMd$lSatwmad zIP9A?4L3lx;s(f#Dk}dPBHgI+o6Nc_M~EXel9dMP<6VLo@h>DBQt{DfqY>6ez;*97 z=^VJ$o6J^Yr@uwe;?T%xaECY^Sa+zw6SL}1A9tkh;6JGLw&70xKeb0c9k)e)RPEi;o%|<*4R`CG z)vyAKD|27y7Yya}np;A@Vkoy)tbrNdtJ*uJJNZ6Sf`dm@nAuGUPTqm@yeYxOS7OMN zkia{&2+WCMYm|xY(({4g1RA)i*ehKHjJOTeT)tY1;G?YA9259l5qzMC59W$s>TC(t zJzXT>0*zmw;eHC_i->*FoQSbSnj690QL(#{$k%9*2+r4=pcZS9&OthduR}T)>0Ex1 zhKErG;O62GxLj9i*!Px6S8Dt!EpSEzA(#AT;L)mqYKEe2*C5SCO>7wM!gL$q;%p)W zy;}*r9lYC!{5W_^lqbNgS2u&(pgj%lQuZvkO^)ZlZFX(}x5f25xQi2B0Qc;~t>CsM zy##KXdmFgz$uEPu$nzSwft1(54W_;UZgtw58t>MO?L}0PBeuI33yICebHvfCOydZx;s)a*Ww_-j^-#-Gycz6>!> zTQQ73tM$Ut4sKIn4f=$N{TNTjL1+YoppWC;+;fnK9xzcZgmN*FlW&PhVto=ZTat@E zACuHSQA|<-e?hD_aM(Dz#Y5g!Avy`yI94Vn24aGf_)9|Y{z+nD-F%xS01!c}8y?RR zH{lcE%UG1V8zP)0&%n<2rgA}Kt{)7|%4$XK|mxb30&(&siEUMAO)VWi`CDOYZ->C%x zIaLAD5!k`s)x>h?KJgB034IR-ocunxcN66!jlUCpV=b&=mH2KgtZg?o^W9>TSkDM6{%Vpf zJs@_G`QKrV)9_`(N1E5cQXYv$9S#SB8r!ejro&q9pJMhIj3@JJKmp$v3fPHn61c{> zCZ1snjCXwGJB@!QTH#+T;q3gqW<0w?a1{SR>)GxP!TpD8_VevFDB>qAn3*lrXY!vl zxG@dEyR07>Z5H)#Z?qwCXD{%!}%Ll*Jd!u4C;*$z0tTOX2w!r0*AOkHi~yixEy(12oth#Ir0_@ z&W+U1mdz(=7 zwi6k>2vL58#SaTK>&;m>q4Iq!*c@otUe!YCn|X&L_ncjPr30fQJ-zrU#(%atig!9d z7007ePk>@BbYL;>6X`++zeuFbN<%}Z7aRHf%Rq^jI&z_A*;baT9cIn0cJOQBvRrFs zSx%<$>qV9k3MhOcWVzMKa;rl$20duZtqy*hDF6`}Zx=Pb!>Y0WTzM3~3u~KW6@9-Y z=Y9u&Ag<^K&7xO8(GQEFa}l~}==OZbG&yi7LD2DhbP&5~5ipHYvCkd~R4it*d)$=P z&~kAm$vPh^4IFuBGvDLwELBHyC^jZ&LQD`sK8X{AWEnZfd$`5hbw8YMo2!oI+vZrQ zi{k4lK*Neky>fAJiR>-#$%Xlaa-q-n8}`wic6}}EFmIVEY#OBt>@b%F9Ht5L!Qwkr z8S(p^8AKQhRwWJpoNFO5G0ttHSzcT%!&J;F^9ZmMw8ggbyR2ZD>K%0vn63ai2+ zM0k`6PnLzJ2%E!9fcBxyVOcSONGOcoN((w}+K_g`coJtk$c1Og#RW%(Z|MKk~^(2m3IKo$UTxIT-#J+NfUE z8UqR)cL3ZdE6GVmgF|L!hKubAH?%JewM+@Mhr~zDhQ;a86``i4=JqV(Om9}ZkvvOp zZC;wyw5+i)%g&WhZPVT(I>9ZfqE#<%sBN!Th0CBnqYXdJ@YHIo(Xj_@yQQYSCU{+w zWA!nQbc{T>1iS8dyy^IZClvLI9ofr1ctWG1e>L?9L!YesPHxMt`APQe37K6c?5%1%=)crJ%?Q6G5q0De&f(*|<^#rTIns zpCV_bNNXbSmXsl|Cv`Y8J((vAB$CJcQXS_6@ufOVVzL`8iPKa@GsG;Rpsg}>45N7t z!;-kenY@+=JK~NsNpit`#|3K>=K%N(6=+MYVRU%bF~xn zxTA$TmbjDABDoW04i{P@7an24Oc70(EU7S2OqOJ#XlPSOg(<}$5iJo-BC#a=N)l>G z7;&R5A*Z9yyaH2M6%6_@#=J5H=an%Kf~h1gl9i4SJYxf746A}XJU>VyFs~E@<%o{o z33`KSMAu+eDGaindd7wH8j9CuY9lj@`6#H;w*{uG~$}-%VHTrmJ_; z3wF~ryXo59bp396#ctZQn{M1qyLZ!$Ep+`B+O>r~u!U~fLZ9D4w{M{xTj}O)bp2NP zz*hS7Ho9sneP$c&+DbdN(a1LX&NjMp8+~^heSaJMa2t*8+bc(-@@Ji-qmw+)N$8eN zvK|5*@P>kfA6eLuC1Gm{_MP`bmIjS8o*>ejjzxUm%+rgS59yvb?fc=8eE zM_b{D0Kux;mNqxH*B@?nBQ+L(ggKx#6Z{9uAPk6G&>V$_nbk@!&Ql`{%aP`T zQd6qUCE3i_)5c*+>7Ng4aRA)enV}Zef|;_5lv-R#Eo(wq?(mBCy0%H@gc=(0Xr5Nt zRND}0iid|xnlXL;{27(im9wTypEOIW6A6-pC@8+7ep%C5juz8^Y$C$G)K(Z{*I0Ox zIstUqbV#6L=VYjbKyDdxxP1euyu(avG?kqLTm%R*uz7Kb*yav3H5jI&MKH;F_7S1O z@24hM1-3I0m1`N)b=IJIrZ?%$&I*f4j-MB^3yM=}WS_PeWgjGfHu^Nd5a8e(ZTj+OYsG&))j#PY~-jQgA zL?BHBCRth+yz--w9;;j8%(!djur6S#naBuu=Q+p{YoNf%_DLB(w0aoY<@VAgWy;OC41|wwi&kR0e)f z9H3C?(MUuf9YYI+Q%p@ zw4)!5eJhka-&!lQw250$d*5(MpGgzz?W$;QY;IkE>wrFM3b8Wq#NVXw4lcJY39B`j z!?mQbxvdQ<+ScZ1YpFx*lh(xc)=*QMP(;lNHq+Ro5t!O|pgz=+WR~6{>Y57r=~rC` zZiwK_nrdhA14~r286Ht!Ed{Jpo3vsl9py-}ZyrhmRNzR(?B9fm|CfqjOXQ`YmW1}^ z8O_Vj?G8{-@b90z+478)j+8Dp+n24YPo65o_6ZljnWTfGV8Qs``HqvViO&DVXR9e_rhQ4qe-jIJB^l zCda&E3bF#Hr(f9pxV~&|9Pwm0@j4O0k&2{339ROY^bO z#bsz(qs-HP>qIFjMUh3tg$N#0P*4ow3yMH|J}4MCWhJG|+?Yf_Bv4&(enFWtwoj!L zmzMaH;*yd=rL@df=8Rp&q5You$HzajjyhE2xcGny%_{VPi;V%-Tc{R#%gRcDE+{QP z7g3uE3yd_SB?I=CEN)=O9E3m4^dWbl&kJr5r~u0Jp}fKZ;TGp3zsNVZzYP0!KH}g} z<7^Vd6c-kv>%&Ty6bU*X8-s{eh1g98_LpQm)*O4Vh;gw89}oaN13F0|iZ3lF9@0Ng z+=E8$A>zix(J0A>74;RA4(p$%&ojmehm0N9Cj|1!O0ceFLLp^k*nA&eQRu5h=z0Y| zzi?20sj(fK;}04$E=GYQFAR9Ntf=gwg0fAB=Z8A*+td=(SiS? z>PmUwN?Bbe4_qg!m&pS!lhqCKzzwo`ojmY5S=}TL+$1Y5BAf76NyI_eI|BcT$c!kA zsAyz{Fh(4VI2jReSR|1V0f$AB84)iTi7*@}4`E~|BgZiLSVoR#@(4z985zywF^r65 zN&%CLm|V|=5nBjcGofsqrLT+ZZ^7&)0~5Ic#HDU4Jy;%8(kW2eM{Ud=(= zE5ySR&{t#uBMTWhoslyb`#mE8MuLom89@vzMBJ)pq=AvM7+K0l6C=%xv@p4y$;+5> z4wIKN=ebNikGcQAls_~1FHG)$JZ(%~30^1s&WGPB5`)W<*T8Qr{MLa+E&~5zP}QaI zTMzUVz`GLstH8e+c!-^KJ^XHf-;EHy34FxS>LSe1jad1FCEse`X~}oM?@st3rqmp!ZOqugapszB}yyP3;cOzvfH-of?f0(75mBjSr8UGDQeN;(!nvZl<(Nyk-$q?JDb3?(gdxzG0;a-M{Q zQrg=Ds{1j4cIaP_j;%yaTSX@7m(Y$E$n#_?kq%ra?o4ng5@3F~y zZSp>wyx%4tu*nB)@*$gi*d`yb$wzJSF`IncCZDj$Cv9@GO+IClPut`(HueDvB_6$@->@$-6r3($+vBCyG=%Hvd1QSZSozP++mYDZE}}Q zzH5{3+2s2+`GHM-Xp&$3)+YaBli%Cqe{J$7oBY`(f3eA5ZE~+o?z73LO?JpJ@_d_IWs|FI z@&cP&W0Pxb@*2UOq4QVS{^6T z4QNJexPdQ{3W3y-AeFtt6>NTmqUgR71@r-K@_>Hmk8Rb zJ9Zo7mdSC+!btP+m5B0|y^Y{^StGL1I9<+oG)|Yh1kv$ERw1C=s4_HEH+mGBv^!zx zWXVOw41z`!$s}*;Bxw*Cn?6xWb-Bp6lP5`;B!2~h#1-5G#Uv5$n2C~4B8AftDz0cN z@KjQ~4l0sMN~R$mUg?R5xaS)?Q94B;Who#iA%Tp4Ss>?42q9+Qi5EfgQKWnV+R{7e zJOsZx`K(FO31s3ckcyB=VZ^?h{3^(Hl8RS>=O9ytqY=K!a?pI5G}bY1qI3z|`25R6 zWu~?XZ`x#`+Ub9qC@q&r)j5KB%DEymqg{k%E(ZY_QohznpuKQuW}R;mv;QD6&*>nB zBId3%iBlVm1oI|B)&Y`Nn;}{@f1beBTTmk|$U>v&)8>e{(-#ZxjB3a+NGg)&i?V-r zhVXvBPGL8M(gLWDx~B58Q32-P$SuXZgF z*S#(uavmd%S4%|}y-0XVN`zNmEW8G<@XnOn3H}7%NSR2QU-ONU332+JzR@zF)K7gU z$V7Jg-9A|+ip%fvjgjGT!q0qpGSQO!Nj@qQrutRiSQ#EW{KPj-CQik#_=rqgvS0S) z%OoMupXe))NutB=@OfpDlqZdo3Zz1*SSppuBr?IVdGh>lKDuk9fYtsuxotcL*G1J6m` zpkqWA1RQ&a%TX9~j(7k9&OIc-Srl}Q*a8999+K!P4knEF3<3#zNK!&cFmc3g2qf+y z?!?kyQXZ{O+C!3)d_i}fT<^B5GbeqU!WV4M=L_+>z-h5B7*lvPFc%|s;WS~HTv0QC zsbeb#NjhH=Oo`N|@cOB-FBwyK3*gd0DXWk0%+#D&dhfm;n$Pk zfJprSego!nS^2s#-zI|Cbixv!neR?B-<^ctMS_DO^@I4`m@m=F_YmfLm;?svgN1E9 zGvAYDz9$LaOoD?W^@I6Sn9ptHdlB<(C4r&(P&^~AsA}R)0{kA}pEi1DK0+k+kUA1s zia3c<58=HeFx)>}8pU@2yOHR}WNV3dcylM()q9t0M`kFCzb9hRB$<9(=y?7i31o}p zBaBS`Y&wd6L;^Yf91!&}@f<5j+w*(!e@DrYyTqm4u!=8&_ap5x49 zWc03l;B?j~*^;nBILaAT910`>Ex%w0?qvj)$lb5CTGC#FVVZ{X9DtZCsowUbP+W9nV z8edHVS$b9^G=g711Nl|?Qb+zSzJ~T9*IyuoynL-0D3n4)d>!rW)r+#VjiF+Gp%I~v z2$k@QXm11}x9F2m9D2Lg-dT9?-ccbVD-H3CTj`jTk>wCLd-`hofZx{8wgYrA# z>wBkF-@E8k&vdNi12j0sR1;jG2dU>u{Uij|zPTo1dX*iuy4&{{@QY)XLFX>U8M^p@SEM4ql}E#dsZTwRG?j=wLFQ zIA0{cL7n^!8Yr(Smrw+MlLk%-D`rzql1K5ks3(jXh|s{vz5bIC)PQ>CVB=2#Nw0{; ztNb;JXt80{Y&^DfJH_v|O%}0RN<~YlLml#LG)mV*qxVFkKq2_wgjh3C_dBtfnRp!U zkI>2w#6_->K0xqD@(H*hcog9u(LkP_mz9nOygsJEyuh%kVG@kAPiSCb)kLXd;!ge# z+7p-*(M$Z3NN6%b^g)ImeR5Bzf`3kd(5GaRuC`r>$XD3|>3X{&dU5YYe+uwq=$Ds=UM+5#ySkX)1 zSM2wL_#dffImY}#J>X5sjV|7HM*F~e<(I^D?N;y!8^(pNIr^skx8rbhfzq0d|Wa~X1OkONgvEq@jCfg5Ep{ygUjI6PA!f0gm1KujTih`T}nTg4QDI=Wg8 zB znO8PVZl1wU*R zJcmDG6g&b8eiRCx6PVkt#JNFZBCx+O_U};aE4fnX37pbfbqaw?X#l$^o*~%Y^OYXB8dgfk)v4GQ;A3dSYJ{XZ2Jgn- z;EZ{pg55|r?#34?csEA3ie9AfiIvfA_!=VLpg8%pN?@!$*0`lz zrv%4}9tMlX8WcF$e{I=or&yn%J^RytiCvymICUy{G&XUz30%26H8yRA1+-kA7MnEZ0%L=cXHCC~XCltEN}e^XssdW* z8YR!_1e#~KfQ8Gmre|jN3Ww+w4(Jt&qEUw{8r}c@{Ad*7_^k>qz|7SFF2Qa?wP)c$ z_#b3Y``wBOt#mgko}gPy(XEp2QTRPde6PM&v3m7=p!&fCr$Z$Y-%slKV@lk>Q*hut z0ZGhG(7>NmJUZrk8kh&2y+dd6XB5v#m~KnFxO5cv{2_CW;4dg11#`Z%U(Rii^Q;5r zG(G=WN~n>)tax6;PVm}(0$x94(M$Ooif0{m8|)nqD(1j`SjkI>^_#f@&Mq%8)^D&A zJg4L(#rn-Sfi0Kkj`bVt1g|Q2$+3PD>jbLk1S)ibOQTVB#lGl+`=amdi>8Td4=nyR z^zZm-0=xKjMPN0+g)MiWFVo^7a) zRjTJ%^w+4Sus`v&swwPGeT1!3`v|*G2>TNV`!l~t^{hZ4>s8O$=wG3F8qnXMdP3-5 zt9s5r{|41F7ktkQBJmH6o~QATl{`;aGke}I2tlLdrI-xj`4SkPDS4?TgL>Wr#+OQ7 zn#qtouK?rUN?y9jP&|(V<2xlU!(^zQ+wlIOA)oGxCRgu`p1n7^VsG@}z0s%kMtARxs{5j&_eGocMVIf3KD{rxbzk(2 zebIOJML*mZg$(>=HE>e=2*L-uE`)PC4iOuJFo13q&~#T3=~fs*j}daG%5PI~pU1cl z-L3|Q8jn^(5$_N95xt_LX(zu+?a4~dgcNtHfu^b^33>Mz3GfzspV~7`l8!el9Hj6^ zL@A4;M^yfp8W^XKGo(MR2FDrF$MMZ-pP6_ve_ABO{s!`%!AfUqFzmZ=)_=jO^$Sqz zCka7sIz_iwMz>0NQROeHfih^fG3Hgi75b(57_3e;9{OKbVU-Y8#UrBsFH-0a{0-HU zgB^0aiYUcS-U}(rg<}Wd@2DOJa(CI>m4v^mdcH$xAK2VZ!ar0!A0qc}HurqOcf;sH z?muj9BmY$OJc#q|J@{Y^wG_SoH8t;;SntPP_okYc73=-j>w46@V`IG^d)-bo@3>g+ zpD17j^Nx@8{&4~`FfTjS`-cm}z`PN$-XH6AO!PViy{<7DWgqQ}{%>D2x-Xg$jh+yV zPKriPi$)=We~$A(57f65@nf)m;dJmXyi_BUWJSFlXXt;chA|3+#>rZ}E30E7!UnG* zh=rxsARd&78;n6`)@pf@IlfH+`Sx*pX@OnZKY4CX>Bh=svMEOzWd(>cZ zz*FUs>XZ3*YG5_-uO`wc{;jFiMp(BR#xKw! z*#s8l4v$-i-bNg2G`>a?>o$jw?c{5<-mp`zPyahE|6V4}3qi~)#C5U8FN7G@1zO-2 zX<=vB1xu2PHFHa&CV^j~g%f}|nO}<7Z!-*NoWBB7EEbXFzkm>U*t`tm=NR#q$HmVP z@pJf<7(dT|MY;-wLdd^{;4|IT7`52QdQDu`#UkrsejUcw7+J43vet;KHT*`Qs<11Z z0AuzhEzB-6RAM0Ih8;Z_U%{-j2~}tt4iODOu%{Cd{#OgEBE40s2oZgR-=>9O4H{ZY z`0ZL?9f8NAbp-CwcW8kNNmzw`r}-}=@+i+})a2rXyET5d7Vz{|c?fnOeh+3(#O(LR zXWy#|NU@#_0@Zm?3tU9}7eT-Av_K6WMaZ-yY)5B}TkLot(D-oZ2#@vY2#=drU@QWq z_p9}0t9n_Yb_m>;tiuw>e=(N+sOEJirQ8N9U$-NPKZhu0IkHPppTOsctpYKvd`H&m zomm~15EwAa;|#bUu#<#{idPY`P2=0Jt`3|hJ8PVt&#n#km|gjK8Jf&8HKsiRkAO{}lul@o#Ir z-|@vY9bj7H7O1wnr4qZj~CkAJO z$=N{o-wn>yCg*CxKh*@7SS~I;FtQN@gsvg{pGIH<30+J0=SJXa61tA?FCfQKBgdD> zUy3=dC;TfT06A_T{A(isIc_BU8?6Ul(1dOxd=EBlq$^WVqb_LLj{>LDLK3{0AnbY< zsbN_iGZAvV8s^T`ICYjI;(BdOQdY-CQsc&MWEuAnoK#4ahBK)2qlWV-L2oOe=(Wi| zgZpoy`~u!LMEzC6O$}`?A`!BE8sDe&=ri;wZHS->ov#fZmko-5mW{4>CxGin?NF8=$JPCJ{RjfBF?Rs2dLC$&pO*ogY zWxe{DS!p;qtV1sR*B1c`L~aZ%;ul)H0P;2fFTgLdctPY{4ZI+~6z(!L=@I=F(pi(? z8HGb7Bb<&DG|5IW`S8O;2*60E^(*eNe%-i-8=H=(;_IMVr*eFTk;7j#uW zK^qJ~!t~kgL;wb&q&G}S*FrTHXQeX)Y-~d?b_jxMQMcDIL$~XMZhs)o>lweEi5&?L z4i_4s1W~yzeZF2{5DP8h483BZ3`)L(P|-d3jgS-W1-LtU6ANR&$QQbk@S9@{$RE0k z@U9pG`fP?xx?)C^bY7Kn%W|IZX=ieHH9R>p4?Isq=KWIi=j0(}wZtAyKN+WM6w z-p+6A4KCiw4x`eO&?cd~Gzer{IUPIx@H zn_;Zc1Me}lvJTA{H&b4;rK2N6fp8VGl~bzhC$P5l$_}dwM5z-w*Zt z8%cfuyxqj}AmjIA@$l$>8_kyRjd#_<#1VRg zc(M_h8*@BLtZtz{M(n&*j}i*$pp)U?>E0^_kEa3eQ)_9;Hn>ddXzDABZ(|YYGLo3# z_$%fpeO!#vAyTYMrtw!_3f%FC&G(kS{(M2H-P z?`tm;ue}9Aq`qqpxs*!1P=Pk`4&%MdSX?gK!Qa7-xzlro7`=a`bO+-*L@eHd^<8`? z%xMjIx#_sX+Qo2f&7RmIN?ItUZi4u4@i!rE9j8Wrn84CB2l?93*~L4kT1$)=kSvpCAaYW6-u zOpm!paiRR~SO8@EpC(k?={p=@)rioaA?rZ~_VkqwwA_GWq7$fTe3b(ViY5i1pw$km zpbIb&J?w(k#1~|ivo==FI#JF=u{5~i?e0NSYTX;Ni7>s^+Y5scf+%r4O1wChI$kmU zX9-!4!Y_%7Mk{QVu%4cNqM-Oov3LaLGCyy?OU|bRGXl>M9sX}2^%>kB91wV(=5{$DGNp%0wR;WOSb1j#OS~qB=9=XUnlv7hxlZ# z;f!&EBk*RwC^D?R9AfTp1m5ZwLxzfo_&%9ElPVDYtNPU0GiFrJsPxa5QsOzMPM}C6bebGt!ry)?LkrDhsiB&hI;f9`S_oBWZuQhGYelez z`Bo{ZCSzvvvbMSkaX{G}s=*AC8=7hxnwGQ`{HD51aFiIwf!>Tdy*;hJTCxkhS-&Oj zx1nXy4Zu5VdE$|EtG+$7@1fkJDTZ$pkyLH!cwS3gUG2$7SWJB0IGiy9 z)6H3Jsk-zC#aj6cj5iY~&Q%@LhVLlkiHy!=O=0LclNuWt`lr;bNP=IuIn-Kv5U34u zn%f+Z{@JIVHtEzUWL|>Fm^`WC6f(&Q;ov1x60OmT16Q3lXHrF_(_}4}Lw;u^o-+Hi zS#-giWHUHt`uvJ%kU&9xN*^Y26qKzBkz}rw=Zs0G8D&;_;y6a4nU;*1vlq;(te!D@ z_9>H&P-Sg(?Nf|H_0~{x>aC%rb@LmR*0E{>npLXB+>F<+b!TJ93WoQC$A`c$Kcism|9 zZ>VVi;io$)pjxdk86F(2(8TsR&p`UgG>{-noR-$+WzZq;5c?tF91_}_?P+PhN}NGL zq>eNgT~v$)M|BInK?tVHprT1Ww zH_h3GLT5C$wF%IIYN+~h=;&&7I8<|%R^4jg0yjc=a`mznwYnCnCATkaaW>%vZEQHN zE-`+NwxJ;sp+2qch=+l&1+~rXiM4fhIuj&Iz;GySXSX7NAXa4BQ8x-EmML-fl;oQF zx|*{pAeA`#-R7*WLAtiC)k3jIuL(6G@=bf)6#Mp*3|-o~8HhWHsMY-X*1ER(=EmBp zqpn`4rKNF2d<6~Ig(Spsz>Xzg65IlD13S%9n0e}A9jh%d4p*UV<`GxIM3p;Wk5*go z)=X>9rL`+)?Rf_LgN>M?PN|$)mS22?MKr}dX6=9Sjjx}M3b!{9&m*bD2dl*TolNddj(TR*sVstX26^u?{w31OjQ>HUl6;n=O$_z$lGCGUV z*^JI%bS_g)Wpo}>7P6Gn7(Ij0-!b}oMi(&}U^K{RH6x1|4KW&Kw1&}IrqnU2GrELP zadKTblPPC0rI9I1nbO3RW~Q_;rJX6_{JOH7Dd#eJ9;1I?^pA}GiP66>`e#Nvpz$l= z*GZUiKKQG_zW{z~fL;s!I`A)q-zD(Fd? z5t*DQJWrD$Cgl$y2}besNs^PK{V^mZl621`NhTS83P}!cXOM9u z?8G1$L-9bELM8_37^NP+ktZ@tN8RLGl{aH5O={-Tf^tBqQlxsBPY?d}h#TkWM};=rTwbpB+pv$OJwom}roRd~Ptw5SGMG3%U)io40I_Oeee* z_fYX@3EE}~rSLWpraBFz>ZuTJH!$s0EeUG6VtYP6&ph8HQ>gzSV0MTzP}x!k;VVfn zGg6<)JMol`VkKB(CRjuGTJvz#I!vI#Mb|E(km4ph`*Sl14E7I}M)58Z7=qu!=)(fT z_2K>@bQIrcv5pa2tjOxNSjPsA(~lFZO&06;K(?MOShrZL5rG^%N3d?SSh<0b`bfdL z&0>uTjMhgB*6kMS1hjl4Sa(>gJk*z9-D$DLqRIs8E{ioTkgw+p0i`Bd+1A|_t03Uj zy@GX*#VQOG=|zHdFX}{dsj7C319b8T=w#%sk@#8cH0crOJT4gd{817p){FI$4rM2Q zj08&c($oqf@y7|CCJFd-pI)Yq4^7}t#4}C|mGdVJ2AV-VnQTaP<13r_bTi0ZAisjA z*DzY2APl%o*ch0oPwZZ{i$5ibL!;LZr;bD;q6AM?^yrhJh-XZ?0;E4{(o;f};;qCM zGwg?S&ztmANcVzCPYYG@mq=hbhI%92{^`*EmkHXJ%9ik-Xk?XePZ92nY=Zy%Go7RO zD@4??T-3OHV_=p(t9x0E!e14_QHVYp%6-ia&Viy|w}W$`^f%4Y!-`pa55dj+)OM(S zZ@*T*6W8h;ajo9juhs9ywfeodR=*$D>JQCw1E=bzt~ZMIoQD>+#LLdqX8hKuU-5s7 zD}Hxe@t^c7{vUD0e;QZ(XK}@U9#_2C@UKWYN z+qN^YZQHhuiEWz`>q{~*HviN9yWQth*GqT5)I*(Hb?a8z2o5VaQU8hh#9eDKILvyo z(Or7dCRSKdV4(?XjU2VA58m9=kuupl%3Yqd)=QBgx~0bE)Dz(Q=i?(Ibd7z0^AEN{ zub6GQZb936&2k5LI8Asrxj+cpX!!L|yDPi{y31k-@{e6ALCJ?#)Twt98Rb8SXxg#na0smlhoV51N0yNDj%;{( z=v41Joe}z|RRtBm`X6x;au_X#!oa=DevEU6)Awfvv*?p1 zDFWu>Rm1TP_!uoj&{4mGuut<=MUvTJHx1z13(K!mQ9+{rjqJ<^l^;1{_c(vW%v7^_ zrhaI7Ww>m(h?}$4g#W^6pBD_uGfat8DaWH7+gL(S7barB7J4~HCD!b&WiRFpQuCfL zR~2v2XIK){M0Aj}8$AD>yQog-7Y1eXk^`f7*PzNn83HvBhHORKBj^(!(r!DR{R7wB z%2B{DW9AUlJr4Nww;o5jc4*@n{=qmjRqiDVAV;D}AB6CgR_TZAdfzToMTpM(4~oo~ zpA{uWiv*$^cQ48#8Y7htq8z1m(F3-5sF$_i(kr8o$q1745{8GUYN|h^VA{h{^W5zy zU4&;}r~*U!LVSS7YTXC|*9QZhXC@%Ip8|%FW{^FIey^SDuhE#e;t3>sIrG&v6dwk~ zX?#o-G`bJ1CG94a)V`gr`8t~3uc{;ec$$F@Q$58=fkSDgIvtFZM=M>a(UHp_n`edQ z62V^mTk-CYe4GhF%&H-W$QO;1m618MzP9?y{-dgw8KSBeylbWl3hpKU>4b&kJ`NFa zjyHx`Q3NriRyXEp(f47ZIjco}rptmY>H3u4DG=C?VX7a0+C&g?D)X^8Wdy1v)<Ynwf^#j5wC65OyY|~ zV??6HCXh8jTNtpYA`oTx&nS|GPy^;kOV{$r*BOTS7PZFH$jepF(c z9lK|yXtryL}>r;czH<=yc)Qf{byq`JvjA_IU_Ox z^wgdl$#`M9dctF=yE;#}B99)c(qG0m_YosOc*bDwp0UXq& zC0MLA5uUsuchdbMIVM(geZfG9@@Grf3C-9jp=H0+#=bM zyE7MF(@~ZbpYERCdtFJ?#Nf=%yO(7WNXWl~D#{Gxa>BfEiCaHJ`FeSn9EHaRDZhf` zv)nX~E>>I3PwC|fqnT=Er|OX_v~8)e-b*@(pGsxvQu1YBa@-UF!x44+!LNE0OULYOB5zi$j&kw zJ*%`eEXz7O9p9sZS3GHZPyR=WXRB5NJ{--u=RHbmY!OF$YqPbjE9<0elmGpd?sPE? z9ZHmbw=u_&GSSXW#&O9*T13aYqOy#BHsXiH8oW%JL!$pjqlLYABf#w7hj}6Qo*|+i zxeDQARUWz-5+hxt%C(lvZiD#fm?asFA@ z_9U{(AdYt*JLrIzCH4-VB?brgRS+W7?`)`HC8BRtR#w$MY#M_JnoFD1Hz-uzr+c6VeQr@u>F8 zU^$veLc4Zu2Jk>3iUe%w$gme6;8M1S$hg2cwQQghA>nw%-7QQ_W6n8mUTn$0E8rN8 zG1KJ&btv!6P0=#HJeL?C4U*)O8kU79mLiiW)Sx_~9BD!?F>Y87>ON?mRSaYKsfwsg~;KD_!3 znWRVp!0N_Dd*J#>Q@22K*O^nQNmq|7P@WJoa?*rUW3y_MQhfGxWeF`ur;{Ni6fe0* zxruxn15(Tq({9Yn0i?;eArLrciSxMkQ$OSEgcJ6~3+UrLLu?1}3}Q(k(V;N6B^W+J9%cSHUd$eT$fWacc(MST5Lj)&%!jcbD@`h(JP6fB=yY%7f0 zAex5bnu$v}+8R#EB@acOf!hU*Jg`0MG$0xroMAXoH)xoI%(`9oMrwqTIw}3uj_*gz zP9?^jm@d)KwgUxkJ|f3wTc9<^$nSp6yV6M}&Etm!BaBvAz9|vz;Fz zuLMF`3BC`CD+M7i(;W~5;z4PIHk1j>}OBN zb*Mo8lE`B~^yJ33$ods7=#1zLc=<~pXJ6ut{oO1j0^UVp>7*vY+5t?6E;RkZZ9Hl+ zumf@gr>z9Epn+VxTn+Ur`iAL|dXNJtVcDC&&kPavLkUy!`wv&bLLs-Q8GK;Q4)Ljz zGRHAjUO~3p0v^#Gh<%(hO-JVi-hSNj4e7_P#o}`DpYWz0UBa?L=CdQQ57`#-s>O`m zg9c^^19(Sx;v-fY)p{2LFNGKkR~ezJ&!3y32Gvnj{cxTB{a&=4NG>8fiz_}ep8~<4 zOW42xAOZ!Ry|GxerLf|~4~c-$Rx%ZF{7SU3Wwsc6fE0fmCPtdM#7bg`6_9W)|IPRq zB-SH3&)N&iV2-d%ZoEoPY>i6P6E28axUw_PIWPJwF6!5;>~C83C0X(naTg!ETq%Ch zV&78|$;|3TRPr?_`xz=3YtQtFvW@a;GuR)J1M2-4_%i*;c0QA~Xovy}7gPpU)SDdx zY1ahDFxVeisQhghWa-TO7_lVu7GL&A5bEkmF`o}*ABHU~c*8(!QST4MTi5AydZj@- zJ`-Z8Bw?>SAN_PGb*PgQWUTp`hW5UQ=xSt|U$06}PnFbL+Q9qMLM+DbV7sBEe*DL* zoP>#mYUv1*GA*z2WKl)lFbc=6eoQ^T%E*~7cH#vXW(k6cE_wmCJiDU9PX(=+a%OG$1xtmzRghriX)v8pCZ|Ggh@#{U?r8B zwwflZp}CHEV3~9ymWCu!HY5~*XrhBP=mHgdO-L4M<($RX^KW5u+lP;XGuCVaVH9> z+RTAfyMZa$&%X05DGW=Ys?mtzEHqwdm8Adrcw?o#{ec-8@mfJ$=o z0&14y&FWG>k0kfP*zwkGEI_DMb}bdkEvZbiLJ!QJ~f`mHkiG#yq#BC zeB9XiX_C&-vSuNdpOnfon2nP@8%dsxa4*$TU04av%mCNgR*F|}I0$Alf^2;&m_CRb zHi*5OATln)viNVpCPPrZid9)2xlm-5$0go;mub?#b-$V-@341->~1(|g4xR4*c@A) z&>BS^yD69oT2|iJnK^l+r?4wC3&90EnI$8O>d2fRmGwkR2K7KeDNzVwJ}?*(o(Q2_ z1vMAvn9Gs(NJHa}&^Bj}sA?Lwxi9rMbsVjj^p1#X(&W;x%fOJaSPp)PNzOmjD=7<* z>#A~}efLHUIM~Fz2!litz9ln$%XdtV-bu(K4Kl{F7G6wOW;kw)zRT&cbiCIN?Kufq z)`R_%lb`AUf}|PTkia~NR?>8}&6q>f2w{rReUkD6!mYiTxoK*-#E(6fv>|&gK3cJPHFk_~25$U1tr-K#M*w(g{h#P79NogD{ zt26Zu6&KErZb6$W+$!|291wV0 zGtvb!AvNYb6>0gCE--z6L-QU*9+^hUh}2rlIMh`jve8xYzzE$nX!?G|z&;_K4O;jmrbOi;0Tr);?N`{Pc-uGE-8 z-PiLFOw4}_h<5tzu0f<+dNAX9z?-tW+iSVb)}nuLD_gDGtIKQTdZc7uv75UaBBgJ4 zR&j-*%=P)O5_Aa`wb8OkX-gNCt(|nq^~BKTv+eDA!nUc}y&5H;QIZai$MC{knI=JA z2zt?!&bFdNMUhpNhO*(SnxlnW#GXARrLbkc)TK6T(VQ|Ka}q&hH*yoAbO_1~+oE2Uwv=1GoC`~&YD;Wvjw)u-V3NY+0)na9IvVx% z*7@-iNo+}*G>zJBhJ6Z)?jn*~phW+aVzyul%Y>kjU&D`shr*q~B%tugJyZ6Xf_^|W zLeHdqtDtyfUXeRo8(D8dw{si(Bu5~MVw+VTq%bKiH)x65G@=Q^ixVO#lPq2+T*ltN z1*Xgv@86`&5N$ln$%KqUf|yO}1A zmig>hf+wT`txy75u8RMqmD|=ne(}%OCqUMM{`ZSLvsvfy(R&*C=R;u703-%Q@Pa`& z*8}iW0k|WSdZh@bnY>IP<1j&sBt`)0xvr-D(NJ1e8aat3_ng)l83oLDqb}}lYzdYk zd5;c-%nh)!3GQ(nIN!dpi4 zDvMf6o(mCAKW8SGESo7DyR`}XEwS?p(LDji@iWP*LdSUj{_I<#npR@**c7fW9%q*& zYG~a1Jw5U0cE;%1uxTV7$PSdCiGW*uumVwaiBEu-I*llQbkQ;e-&DDkL10d&9(vJ( zZXeMaVJiTO)!rk)2QDGuSD-3r04Zo911u@S!|%-sy%;f|DT?)s9;l>em}Wpv6skNZ zawy@PLNWIN3tTluD{zE0hUlI#$Qs?K!;(zkmBmIz6V%~57v#n%a;8MMuGTmiz4Qi! zFEE4j1jiyU5G%Qe3spCKJiGNntiuCCli0T27z@yrRpYPOWIA6+>{E||LOx*aayhoN zG%Jx?4w*hLc(!52_6#clZ#V11tX}?ZxazUstyO*16z8ip7hJ!BP)+C={6GkZ@P8I0 zuF!APM-ZQzrBe!XGhl$z#nfiuaDLRBtUpKfv&Bw!LGl)FAzfKPS>6a$#2h?2nz3 z-kT!|S|oj59HVW^PP$~c^r*iYsJKPY4L21Ch=vHwPOO+49Gh~f9!5uLZtXqlQa$v( z>EkW_0^$}&E*O_M1-M=8v-GcT5}9EKot)cxoMsd^Au#H*Zi6i?gTXryB2h4g z=5%vg`3N%(%P$p8SE>=e^8n0d7&0hwOS!wdyYido&Z|2+dRm)4@)wL|R`O3P%#{$= zc!q5S?E4$y8LkynB62tv>LNSl6{b4{H;l`AVVm|9KgO67gafr7yMSWKg)>SWQGi~V}XRR3Kv5StxXUbUnKG}j>*??horgx_O z1ihtOcN)w&io1SLv1KN%GZi|DGPwOveW;{Qv{)tEQ&Ya#fGqgj9T(U4AfKXNlg>%? zo4iS^jcj9rhc^CiH;;zo9qrD2;&`Sla$a)JlHb$33;b=7*YFW`fT_0}$8DSJ6l}fq zZv}l_WM$Y)2d##}u%7s(YNCMPl zzR0)^1X0wz`qb1cwh zghVtzaHFrUK8y_Indtq=<`QNb2s%WM;OKoSaZdPRPC_er=`SG;uN2e|T79fK9nlj? z#IN8O2$m>3{1C~%iqbBSm6m%qo39dsFYUkUHXF z0(k;Jo@3}7DQ!sI)Id1svV@^>JX-(oL4rK{{h6#Q zuR7JONw=1ZYsM6Hf2yZNL&`8JpiV?p$E~ZPIf?Ql?Do%_MzMy@hyVlS1gWFXvzKys zO6-xliA`f6K>%XIOKLffPE9dIwXTagQP{%mK~@z%tMm`=+gEF2pW;k2jIke1ZgrE} z$VIVP({Uv)#mi z3<(LDhqLU-F!yYwZg!8_79OX!P0_%oT`Oa|i(HuMhs~`yc;DxZW-Y{YulwZ*qX}F* zeix&Um&!5pmo)`A0&eH85U-c)3j>Za5tR^0^8bjG&@ z0X%QNY6n+=o{KNwI(Jo0D-3)}{Fp$U8F8bKVo+j`V^C$0WKn8}IwF7f2y+EjJ34LpQLI}W#p-k*D3FDo0n{)D6M{a zzN#0#Z`}Miote)E!X2Q%7k<1*6n&!(effOLspm533z_+jN-KUj_zDKueixg=)6|uH!LpN-UA@TX#j%VW&iGU>w`PdvRes6UcBXUh(?g{*}?q=9NN|@bd z@c~P*Q2O@|cPER5e`y}>UQdguB+aOE(=S(U1pF^G80Hk_P!nbhp>sxEe>!;T9eQ#$ z1a2mMuYjw~Yhl{i#45;2NA?dON3P3o+vi;nqbjCZi?Dtxvevx`^ER?A+HL^d^djo= z-z2<`tVT$dEkq;sBi5qLMB7A@|0~?t;geR-h~L~uyl!g0<7xHnr1j6k)>d>s>h`<)%>*xmpxaKMKPhL3GzGg3@=p$f{t`w!0af8)2j1 zi^HaQZNzYknd@{F;z)eS98npyr3yFKqGj2Y&fC(2n(F}hXh*eg>umSo$%V#S`aERx zu#!E{nM~fN3@({emC9H8RNoN?@f2bEgPDu*T;VB=L{1BvmiM+-awmQwaRoq}Sk}Zs zva|^u14rOaW?SMO+Nv3&Y<4}$y~Sm9F%JHEpj|$e7(t7^k|s_@1~JYvOKW*+XE)pl z-BPmIbZ5Kv5x6W_*^uW8F<-fRF)?n&zVxl zjYM1twq92(KJ$}}#?)R!4Xl)lEnMMl)AgzuOskf!b68&am2su&_Kh+N^di>7pF9a znXjGZ{j_ae9Vz8!hD|U#+Sn=Q8;o<*#B~uW!?KV ziSxTh1Y^ZCA|KEe3q?NB+RN_I!bv^4qY%#0L3AYm3@?8}#K!rQ9zqhFHuL1>u0ieS z)x}%#Cox&vIl7Y~v)W9VuhP*~#BH|PIvbwMj&f_<+BCe-6wa)?umwjty)dCSqHjwP zpDiUg%z2zK4F0vj2w&(sY0_%(FQzi>uW0cjKw&n-tj>gb2rIYc9~2mglH-W^bKKPU zTu#5FeG^)xOQu55YN|_D6q_^GwzJXl%R-Mma#wC4FrwviC^v*Kl*-?w38IS0SsJjd zP#4;;|7t_!GP;2GSlfPODL-fzVi71qY2P`qboH#OoBBZz5`sceS6nIqhp+)5`{JO* zW))N{=$kU3nzuPAw2h1g}mj5jRS~nV)AI4 z%GS?`ZQ{N`Xqr?HF@W1h{UZVDGRBraTh)|qPw z74_#_WYWf93cvH^d`K1AVAOqQ$7L;iKp0e7@B5BmHZGk zF*_~yPamXtWSWbkVh+b8Y8ma`IRImHd~evSXQ)A$m*eZ9KJ!)R#~~Os5CEPk&O%+q zQ3fD8op~d4e`bOv><5?@d66tS&982c8gfd>;S~H@OZpIMTpENzMw=rObtEe9!I5(s z8X6;4eRnA&7xc)+2+VHF@QRgTv;a)rnBQ7RBH&x5oTi-<8MKLj6vCsV=$LH5QQF<# zD_gFi1_N0)=xjUF`GLlLf#^GHKCR<#Dsun}88_Zow{88ZBOAqL2M{q9OgVV_-Jn&- z#=axoS3qShT?8$ikNQu0dLW>)6^Dq$kS!&n58*hA)MhRnrqUx_$v{mM1`$>#R(;aC zk>(J*dZR8PUT2vJfFTw--9>GRO?^yf__zFC8k{7+gHK)mSIxGt`pL$oo#wz4g=S=? zMuwieuNhNy=PN0RyLJH4z-)ER@EpAP550n%(`#d70nO1Bhx09l^F>U$GT&(4_^kJ~ zdD?!dpo8d(&3pv6$^}^v9y%zWMD^9uiwwgovLC|7vd=9Vx{qq_`ogC@BRb^vkHv?J zAU$=i;GZC7rB85juZ%r0x;+dnsSdx)jjS&6uP(h&nT%r@IMRC^*+W>#&*y~$yw$cd z8A%sY51OJkkx~VUmV^zRs*moB@+NRn9_KZsL&uK7a4UxP-zSL~jiJ(64hxh6; zb2c&6a$VaDL!S>~%TqDc*K%Obso_3so;)7AbfOG=9Kg-mSh>l>34fGH;4%RwgsJ|T zY5M}ktPoQ2-!Ef?=WU|?cv?Mj7RRBM{Q>!N`Nq*J(A322smKe`?=mxQ7L?yV6A65O zV^(1YQ-jH|j^?LVzvHm$_#c{In!V&LG@fR&3$aMf8$bp96yyf0px$Iiq4=(QM{)|s z$>8mcnxr~4$juhW|H^StaRj8KJF;TizS4y8>l*Q5qa7`ne<7qj{Sq;#D~KHA?bFJp?(!F|_H%R963+cD!!A-j@5 zl_hj<08wvf(ck2uFnXAvb1dzfDwYnJsqLe}+Lmap_EtUC^jjzQa;H_C`O9CB0bV9} zw!L3C3sJfv$=v%tQoPDB%KS$-7-DSI8-yBiMv@tdH2 z^6EuV1`-O?k@+m85(EgM3Is?|1{4ep2gxPDX4vcM&HuRf=|atZ>HF7;7~kiH$HiWNl6N)5n};0)%X+Of;qvDcLD`9wYNv=7F(so+kjO;r5avUukw@n-yzu!^5r})Sd zs1ik#C2Iket{1=6zryC44t##YrA1Fs6(OOe>rY!F_ICX1ePMd^AZ^R{k2*1Gi1gQf z$*vGKeK%n~oALTvZ#>}8KCl??K5QM|PkBpov+2u{Ns)~7dBOLRuHu08elQswT)+ET zeedAImRr*Vi*3LkHehc~^K74{@6(Myu*j7s?=E5ucW8{|1KrC=Sx)$U_`3;k_&#<1 zw50Xu%Cn=NSSQNPw{@UuIs37q*KiLYCTflv`sbWE{d6VgtaaAA;meZCTa)Y-2xS6C z8J+>cn=3l7L!DjA@%;5se+D>kmIeyJ6bUC2xQ(DV#`wA>)m)~`M^BlfPMOR@23$aQ5$+UsyY`R2~3U&P8*NdR;)K#5&`*CJR zdP?k{$|LYa=XtmC%dmZl{drD_F@AQBK7D{(8#0<>0s{6IO8nHA<7qv?efmnVfI;|| zyLWmsy4CgVY&XJ{L+5)4kGxSqEPSD(g_#I0<^^#Civ6pPU+VY!`IP@>=d5Nj9|6Q3 z8YE4BDMF8!w~X8F-30{3T8-+cr~WGn0|I{$f1=QJQ?wSnsA|Y$aJmnc=al7>)4PUD zis1#67_{-ZKc-R%p|tzstc({7thQ}+c7M>yltEJV*xhROdoGO#BYGVi7#MH>BdIpc z5-|@HYOR1V4@5A9&ttK7GVt{0aqt9{(cp>&FKY9+~)87A(Olino6&50KbFP$fDC?m;+aD$1AD)hG{mJmu$wK;?tN9j{2 z#@sD>to-lz5YMa1Y@*HHXMy05>(GaH3%6&HH4=ZlvD?-7>d-gTf2Bh7A@|5<(uF6; z%L&B!>=U-5174+#cwvlNJWo4<+-0564#tYn7-#D~ZEd`_JgXFEU0ZFRX-<3FZ4Z1LWktSrozB5UU#4pr zU9Hd)&mwZR)2}D-3=yBbP9Qb3)b>^B<5OmG7TcCgT^~uxixu! z?C%-TsRYE#4EiiXk9F;izneNGXBjpOF&}qJm;SBla7Y@qfkfg=gGiOMn`zs>Lvto# z5HBtrq@!+yd8xy}>^hgp)Wl$eKAZiYpSFx@pF~BDMu5K)KHmZDh}WQTg?9lI;alKn zT?osZ`{>Rvuo~OB+v&`wrks(z06({G_B)%&9cR3{TVa7HReQZx!0TvcfLV~FN!NXDq4@P^zCf7JM~&>#{6ekWHGaksXj;8vnS6-< z#LH)E=VtY!V%=sJ8HNpY1j#6&(X5eNDYV;a{$$^ar;Wr!l?@Ol!Vyqq2sKZ8qg#=SwPv_wDLIaCzl{`X0aL&d%^| zZdtwoCptH=FQ?u9h|JOus@MLiu7uYo?tA^@4D?k}DhY(QU`>y2dn01{FRCwN@lR*ldz8lD9n<}ax^5@*Vi2p}?zX}`zm z1pby?y*uyrXf-&IgI3G3G&jq#1ji;ds%1eqa6I_o*#>?VE5juGNlRY8dXvEv@i?{% zrY)1?Gp3yh{0xt?i+M7n4#A0Lwa6lliYoeqSlxJADD(J)?IIIl8jZe*KF*GRqk-Bt zEJ`GM&^%Mx08*qsdZSbxtV?;r!-!#G{1hL5bavcv}{v9853yFjyeDZ%41#_wCUPb*tJTj15;;i7vgJ?J(k12xl`6L(ovf5pKfKomh-G-xRK;D?r9sk` zF=fhtmuT~T0a2A_>Sw~7=UQiih!Ox{G&99h9eb*&8k8uN37TWs)zGeza{MrTFsHm) zkoar4kkhZ+;s)K7Qg1KF^3zDrROICP-jsNr<*L}Lj`7bvM_=dybf)J9F?K!a1dOvE^+b!C4V+4;G)1#7QkwdX= z{-j29Lsfy|xlir90{roN%^Y!FqB+F8VWln&pF?QA*)_q>e{!Z8mv4J8j`#_pd>O=} z45k)(3DZ_qa(AY%!^I3FLutw(=|MmOsw>z6TcE~YD5bU~h4e+ov@>wdM?G4v_kw4^ z@H&s}xOZbH$VVz3MrS3>1<@Exq`K}svvO0jOjb&yiHE$#@U)%Pv74Dz3x9kHH`S=4 z^C!D2G5g7r)C`-F@c4MXyX^w9UiapNYl7&!Z`<(ci|+0Pr)hBGOhl$rE4a8S%kIIW zl14mdE*IQ1#;(b=omsjewCtS&2lI7CCqZCt1h~SJHIN z>gF+Z)i+YOSC8{{cqleva%0vr zLv(OF$r}Qzp>&S9_0;mAT@#X5XVe=JpEGtpaiXnnntG4s!fNLZbmFBl0?|mCR9Me3 zcN=%A?RC8Kl6n_AFDSzH8Vz5s3}(~MIcY?DY>8wt80GgVQ}3%TQQU(b($oyG)|-fY zqyQ_mZC>qr%e(sD4!=3#Q`=0KbJWc_assq%nDCb5vmX*c=`S~El_y|*n@>^jSB~fK zDviK|B6Ov7%}UIrtOfUkVHE_Z9rICoX4%^u&~_h{fL-3kmDYf-&TVQAeHY3n{8c4l z67`HZ&c$mh6okw4_AYHOW;>ijI9}jLK6@xu*8L{u4A*c5=x2#_>3b|&L+_s z9G(@^{#BMNuIev1$w;e>!dheoYoJ_6223#(Z6{{bM7^(C=gM#CP-Gzapl8F%LrSxtcd z^&-e7pP{XQ21LCSMrlodvnTXauRq^T(Xz7sxSprYXg5-1&SEmlB(tQzIvF1cjU(+ADtR=qOn=!L z>)?yAJP4VzlfiVH!2*LDYd=lg#Nhe~mWbs&GSwy(+FE4*FBi~VQ%%7l9Ai}E9P+G& z!@}lJL%tFzn{Dv%Z{}ndQ3rWd9uyK;Jhx@9BdSf6$&niEdh04I^4_gti7@kG$RcPH zgjF-Z@EM%W8;jg@sm98ajEuw{TEKo30cC+rru&Wckk~yo6Fc0ZAkMJ=f?hB&Da4pxy!f+j6>SjNZ`z; zPQ8Z$&Z#tM%QYN3wDGUFwP7g6H8RmkbZ?4xtazI~T7<2n>uyypd1w#4&A&Pa^v9fy zGiospeAFX-EcH9HGNm4=aH}(LxlWX9bqp>`4cm|B8f$F9=bA`)6lxRgpEs!vO$-Q4 z)foD49pjkQqywze{^dgnA#glM3DZ0UIaKOI9L(*@k)xT^d24nz@=KSSYS(c*<4%+m z)RA=P^_OXz&@U{tX=OY_6b4GP9H$vcBhJXDaEbwV=%@O*9QkpC_zwMjdDW(ApN&tW zq&(JAL;+Y5P&EJ4&ZLX6iAn8fB;@84%CQykoJ3o+BLE5xuWNnGF?f7kjAT$QC1^;s z>PEInY^@<-)0h~-mnpaDi24^Mt&c-_?9J6|xgjDNEVKb?NmBG^Gv$Ryj|r?Jgd#L z-36H<3kyRSN*9WesDgQPqScGQpSqxr5ZN6Mxl~u;) zg7ecwCz?buAX8jaB!>Q#{vHlSBCK1r+%1opi4{rQ6um1+O@hP(vb5`q;`b)*Bl*Ej z?F-FH>;^hw`*z`|H(F#aH@l1 zda3bhSX;0T9lc^v$M^4o=)njU0?u4=r18&J7vVrl6o_@HD#CKtS=3;{NB7 z_b7oi+AqLD;!tAJkOd$@{LU-kN`X1y)_ZogNB*~^7~D&%)bt7yNEm@RL@=BSuug7E z1o08*Y5P{D^fGCOPMXB_dKVRzM9h&(t3Y6rVm={Q+v*DkUf2R53Cvlu?fCrLihJMu zcRTK_pS;7{2p!VD5XCFw<_cj;0v+s>qms=ks(Q4dolCpW&@nja-4m1nDN#j9sPBbk zABrlY1!cO^X#?r=u=&k%BjtbM@8{YFnqFMgKXQ2wtnxnI{r>}@jkYVYz@P#F5d#DN zKxn`qXh8o9qWw3#_8$=K|1MiAV`n4h-}EjX=KufVe?R(vFV6g+b^nFMDawFD{O47W OpY8l}BK3m&*#7|^O0g#Z literal 0 HcmV?d00001 diff --git a/libs/AlternativaTypes.swc b/libs/AlternativaTypes.swc new file mode 100644 index 0000000000000000000000000000000000000000..bcac74dfca7e2e94b7b232a5dbe328d462bd96f6 GIT binary patch literal 22446 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ηycAn&^dktK^lNk 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

t?6ZJ8KEyom+%z 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 ThWXE|ke}J{v%R_ieAfR1Y)L27 literal 0 HcmV?d00001 diff --git a/src/AlternativaEditor-app.xml b/src/AlternativaEditor-app.xml new file mode 100644 index 0000000..16f6cbe --- /dev/null +++ b/src/AlternativaEditor-app.xml @@ -0,0 +1,135 @@ + + + + + + + AlternativaEditor + + + AlternativaEditor + + + AlternativaEditor + + + v1 + + + + + + + + + + + + [This value will be overwritten by Flex Builder in the output app.xml] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AlternativaEditor.mxml b/src/AlternativaEditor.mxml new file mode 100644 index 0000000..444908e --- /dev/null +++ b/src/AlternativaEditor.mxml @@ -0,0 +1,784 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All + Tile + Sprite + Bonus + Spawn + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ImageItemRenderer.as b/src/ImageItemRenderer.as new file mode 100644 index 0000000..3df0dba --- /dev/null +++ b/src/ImageItemRenderer.as @@ -0,0 +1,45 @@ +package { + import flash.display.Bitmap; + + import mx.containers.VBox; + import mx.controls.Image; + import mx.controls.Label; + import mx.core.ScrollPolicy; + import mx.events.FlexEvent; + + public class ImageItemRenderer extends VBox { + private var img:Image = new Image(); + private var lbl:Label = new Label(); + + + public function ImageItemRenderer() { + super(); + + this.width=52; + this.height=82; + + setStyle("horizontalAlign","center"); + setStyle("verticalGap","0"); + + addChild(img); + addChild(lbl); + + img.width = img.height = 50; + + verticalScrollPolicy = ScrollPolicy.OFF; + horizontalScrollPolicy = ScrollPolicy.OFF; + + updateDisplayList(52,82); + + addEventListener(FlexEvent.DATA_CHANGE, dataChangeHandler); + } + + private function dataChangeHandler(event:FlexEvent):void { + + img.source = data["image"]; + lbl.text = data["label"]; + } + + + } +} \ No newline at end of file diff --git a/src/ModeButton.mxml b/src/ModeButton.mxml new file mode 100644 index 0000000..7549e4a --- /dev/null +++ b/src/ModeButton.mxml @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/PropListPanel.mxml b/src/PropListPanel.mxml new file mode 100644 index 0000000..e2f6c11 --- /dev/null +++ b/src/PropListPanel.mxml @@ -0,0 +1,97 @@ + + + + =0){ + list = _group[groupIndex] as TileList; + dp = dataProviders[groupIndex] as ArrayCollection; + } else { + panel = new Canvas() + panel.label = group; + panel.autoLayout=true; + panel.percentHeight = panel.percentWidth = 100; + panel.horizontalScrollPolicy = ScrollPolicy.OFF; + + accordion.addChild(panel); + + list = new TileList(); + list.percentHeight = list.percentWidth = 100; + list.focusEnabled = false; + + + + dp = new ArrayCollection(); + dataProviders.push(dp); + + list.dataProvider = dp; + + list.itemRenderer = new ClassFactory(ImageItemRenderer); + list.addEventListener(ListEvent.ITEM_CLICK, changeSelected); + + _group.push(list); + _groupName.push(group); + + panel.addChild(list); + + } + + var picture:Sprite = new Sprite(); + picture.addChild(img); + dp.addItem({label:name, image:picture, obj:object}); + + + } + public function deleteAllProps():void { + var list:TileList; + for (var i:int = 0; i<_group.length; i++) { + list = _group[i] as TileList; + list.removeEventListener(ListEvent.ITEM_CLICK, changeSelected); + } + + while (accordion.numChildren>0){ + accordion.removeChildAt(0); + } + + dataProviders = new Array(); + _group = new Array(); + _groupName = new Array(); + + } + + private function changeSelected(e:ListEvent):void { + dispatchEvent(new PropListEvent(0, e.itemRenderer.data.obj)); + selectedItem = e.itemRenderer.data.obj; + } + ]]> + + + + + + diff --git a/src/TexturePanel.as b/src/TexturePanel.as new file mode 100644 index 0000000..a0d2f10 --- /dev/null +++ b/src/TexturePanel.as @@ -0,0 +1,87 @@ +package { + import flash.display.Bitmap; + import flash.display.Sprite; + + import gui.events.PropListEvent; + + import mx.collections.ArrayCollection; + import mx.containers.HBox; + import mx.containers.Panel; + import mx.controls.Image; + import mx.controls.TileList; + import mx.core.ClassFactory; + import mx.events.ListEvent; + + public class TexturePanel extends Panel { + + private var list:TileList = new TileList(); + private var thumb:Image = new Image(); + private static var dp:Array; + public var selectedItem:* = null; + public var empty:Boolean = true; + + public function TexturePanel() { + var hbox:HBox = new HBox(); + + super(); + dp = new Array(); + this.title = "Textures"; +// this.minimizable = this.maximizable = false; +// this.type = NativeWindowType.UTILITY; +// this.alwaysInFront = true; + + addChild(hbox); + + hbox.addChild(list); + hbox.addChild(thumb); + + this.percentWidth = 100; + this.height = 140; + + hbox.percentHeight = hbox.percentWidth = 100; + hbox.setStyle("verticalAlign","middle"); + + thumb.width = thumb.height = 100; + list.percentWidth = 100; + list.height = 80; + list.setStyle("verticalAlign","middle"); + + + list.dataProvider = dp; + + list.rowHeight=82; + list.columnWidth=52; + list.itemRenderer = new ClassFactory(ImageItemRenderer); + list.addEventListener(ListEvent.ITEM_CLICK, onSelect); + + } + + private function onSelect(e:ListEvent):void { + thumb.source = e.itemRenderer.data.pr;// new Bitmap(bmp); + selectedItem = e.itemRenderer.data.id; + dispatchEvent(new PropListEvent(0, e.itemRenderer.data.id)); + } + + public function addItem(id:Object, picture:Bitmap=null, label:String=''):void { + var img:Sprite = new Sprite(); + var pr:Sprite = new Sprite(); + img.addChild(picture); + pr.addChild(new Bitmap(picture.bitmapData)); + var item:Object = {id:id, image:img, label:label, pr:pr}; +// dp.addItem(item); + dp.push(item); + dp.sortOn("label"); + empty = false; + + } + + public function deleteAllProps():void { + dp = new Array(); + list.dataProvider = dp; + thumb.source=null; + empty = true; + + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/KeyMapper.as b/src/alternativa/editor/KeyMapper.as new file mode 100644 index 0000000..9655e32 --- /dev/null +++ b/src/alternativa/editor/KeyMapper.as @@ -0,0 +1,116 @@ +package alternativa.editor { + import __AS3__.vec.Vector; + + import flash.events.IEventDispatcher; + import flash.events.KeyboardEvent; + + /** + * + */ + public class KeyMapper { + + private const MAX_KEYS:int = 31; + private var keys:int; + private var map:Vector. = new Vector.(MAX_KEYS); + private var _dispatcher:IEventDispatcher; + + /** + * + */ + public function KeyMapper(dispatcher:IEventDispatcher = null) { + if (dispatcher != null) startListening(dispatcher); + } + + /** + * @param keyNum + */ + private function checkKey(keyNum:int):void { + if (keyNum < 0 || keyNum > MAX_KEYS - 1) throw new ArgumentError("keyNum is out of range"); + } + + /** + * @param keyNum + * @param keyCode + */ + public function mapKey(keyNum:int, keyCode:int):void { + checkKey(keyNum); + map[keyNum] = keyCode; + } + + /** + * @param keyNum + */ + public function unmapKey(keyNum:int):void { + checkKey(keyNum); + map[keyNum] = 0; + keys &= ~(1 << keyNum); + } + + /** + * @param e + */ + public function checkEvent(e:KeyboardEvent):void { + var idx:int = map.indexOf(e.keyCode); + if (idx > -1) e.type == KeyboardEvent.KEY_DOWN ? keys |= (0x1 << idx): keys &= ~(0x1 << idx); + } + + /** + * @param keyNum + * @return + */ + public function getKeyState(keyNum:int):int { + return (keys >> keyNum) & 0x1; + } + + /** + * @param keyNum + * @return + */ + public function keyPressed(keyNum:int):Boolean { + return getKeyState(keyNum) == 1; + } + + /** + * @param dispatcher + */ + public function startListening(dispatcher:IEventDispatcher):void { + if (_dispatcher == dispatcher) return; + if (_dispatcher != null) unregisterListeners(); + _dispatcher = dispatcher; + if (_dispatcher != null) registerListeners(); + } + + /** + * + */ + public function stopListening():void { + if (_dispatcher != null) unregisterListeners(); + _dispatcher = null; + keys = 0; + } + + /** + * + */ + private function registerListeners():void { + _dispatcher.addEventListener(KeyboardEvent.KEY_DOWN, onKey); + _dispatcher.addEventListener(KeyboardEvent.KEY_UP, onKey); + } + + /** + * + */ + private function unregisterListeners():void { + _dispatcher.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); + _dispatcher.removeEventListener(KeyboardEvent.KEY_UP, onKey); + } + + /** + * + */ + private function onKey(e:KeyboardEvent):void { + checkEvent(e); + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/LibraryManager.as b/src/alternativa/editor/LibraryManager.as new file mode 100644 index 0000000..bf33dd0 --- /dev/null +++ b/src/alternativa/editor/LibraryManager.as @@ -0,0 +1,203 @@ +package alternativa.editor { + import __AS3__.vec.Vector; + + import alternativa.editor.prop.Bonus; + import alternativa.editor.prop.Flag; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Spawn; + import alternativa.editor.prop.Tile; + import alternativa.editor.prop.TileSprite3D; + import alternativa.editor.propslib.PropData; + import alternativa.editor.propslib.PropGroup; + import alternativa.editor.propslib.PropMesh; + import alternativa.editor.propslib.PropObject; + import alternativa.editor.propslib.PropsLibrary; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.core.Sprite3D; + import alternativa.types.Map; + import alternativa.types.Point3D; + + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.filesystem.File; + + import mx.controls.Alert; + import mx.controls.ProgressBar; + + /** + * @author danilova + */ + public class LibraryManager extends EventDispatcher { + + private static const GRP_SPAWN_POINTS:String = "Spawn Points"; + private static const GRP_BONUS_REGIONS:String = "Bonus Regions"; + private static const GRP_FLAGS:String = "Flags"; + + // Файл библиотеки + private var fileLoadLibrary:File = new File(); + // Индикатор загрузки библиотеки с очисткой текущих + private var clearLibrary:Boolean = false; + // + public var libraryProgressBar:ProgressBar; + // + public var libraries:Array = []; + // + private var propsLibraries:Map = new Map(); + // + private var nextFunction:Function; + // Имя пропа (библа + группа + имя меша) -> проп + public var nameProp:Map = new Map(); + + private var libraryCount:int; + private var index:int = 0; + + public function LibraryManager() { + + fileLoadLibrary.addEventListener(Event.SELECT, onSelect); + libraryProgressBar = new ProgressBar(); + libraryProgressBar.labelPlacement = "left"; + libraryProgressBar.indeterminate = true; + libraryProgressBar.label = "Loading library..."; + libraryProgressBar.direction = "right"; + libraryProgressBar.width = 200; + libraryProgressBar.visible = false; + } + + public function loadLibrary(nextFunction:Function = null):void { + this.nextFunction = nextFunction; + fileLoadLibrary.browseForDirectory("Load library"); + + } + + public function clearAndLoadLibrary():void { + clearLibrary = true; + loadLibrary(); + } + + private function onSelect(e:Event):void { + + libraryProgressBar.visible = true; + + var propsLibrary:PropsLibrary; + var list:Array = fileLoadLibrary.getDirectoryListing(); + index = 0; + + + if ((list[0] as File).isDirectory) { + libraryCount = list.length; + for (var i:int = 0; i < libraryCount; i++) { + var file:File = list[i]; + if (file.isDirectory) { + propsLibrary = new PropsLibrary(); + propsLibrary.addEventListener(Event.COMPLETE, onLoadingComplete); + propsLibrary.load(file.url); + } + } + } else { + libraryCount = 1; + propsLibrary = new PropsLibrary(); + propsLibrary.addEventListener(Event.COMPLETE, onLoadingComplete); + propsLibrary.load(fileLoadLibrary.url); + } + + if (clearLibrary) { + clearLibrary = false; +// cursorScene.clear(); + libraries.length = 0; + propsLibraries.clear(); + } + + } + + + + private function onLoadingComplete(e:Event):void { + try { + index++; + var propslibrary:PropsLibrary = e.target as PropsLibrary; + var library:String = propslibrary.name; + libraries.push(library); + var libraryProps:Array = []; + var groups:Vector. = propslibrary.rootGroup.groups; + var len:int = groups.length; + for (var i:int = 0; i < len; i++) { + var group:PropGroup = groups[i]; + // Получаем имя группы + var groupName:String = group.name; + var props:Vector. = group.props; + var propsLen:int = props.length; + for (var j:int = 0; j < propsLen; j++) { + var propData:PropData = props[j]; + var propObject:PropObject = propData.statelessData.object; + var name:String = propData.name; + if (propObject) { + var object:Object3D = propObject.object3d; + object.coords = new Point3D(); + var prop:Prop; + if (object is Mesh) { + switch (groupName) { + case GRP_SPAWN_POINTS: + prop = new Spawn(object, library, groupName); + break; + case GRP_BONUS_REGIONS: + prop = new Bonus(object, library, groupName); + break; + case GRP_FLAGS: + prop = new Flag(object, library, groupName); + break; + default: + var tile:Tile = new Tile(object, library, groupName); + prop = tile; + tile.bitmaps = (propObject as PropMesh).bitmaps; + // Установка текстуры по умолчанию + // TODO: Желательно, чтобы устанавливалась первая указанная в XML текстура + if (tile.bitmaps != null) { + for (var tName:String in tile.bitmaps) { + tile.textureName = tName; + break; + } + } + break; + } + + } else if (object is Sprite3D) { + prop = new TileSprite3D(object as Sprite3D, library, groupName); + } + + prop.name = name; + + // Получаем иконку пропа + prop.icon = AlternativaEditor.preview.getPropIcon(prop); + libraryProps.push(prop); + nameProp.add(library + groupName + name, prop); + + } + + } + } + + propsLibraries.add(library, libraryProps); + libraryProgressBar.visible = false; + if (index == libraryCount) { + dispatchEvent(new Event(Event.CHANGE)); + if (nextFunction != null) { + // Если загрузили библиотеку в процессе загрузки уровня, продолжаем загружать уровень + nextFunction(); + nextFunction = null; + } + } + + + } catch (err:Error) { + Alert.show(err.message); + } + + } + + public function getLibrary(libraryName:String):Array { + return propsLibraries[libraryName]; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/Preview.as b/src/alternativa/editor/Preview.as new file mode 100644 index 0000000..4a2c7d2 --- /dev/null +++ b/src/alternativa/editor/Preview.as @@ -0,0 +1,212 @@ +package alternativa.editor { + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.TileSprite3D; + import alternativa.engine3d.core.Camera3D; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.core.Scene3D; + import alternativa.engine3d.core.Vertex; + import alternativa.engine3d.display.View; + import alternativa.types.Map; + import alternativa.types.Point3D; + import alternativa.utils.MathUtils; + + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.events.Event; + import flash.geom.Matrix; + import flash.geom.Point; + + import mx.core.UIComponent; + + + public class Preview extends UIComponent { + + private var sceneProp:Scene3D; + private var cameraProp:Camera3D; + private var cameraPropContainer:Object3D; + private var viewProp:View; + private var matrix:Matrix = new Matrix(); + // Мап проп -> оптимальное расстояние от камеры до пропа + private var propDistance:Map = new Map(); + private var halfFov:Number; + private const iconWidth:Number = 50; + private const sqrt2:Number = Math.sqrt(2); + private const sqrt3:Number = Math.sqrt(3); + + public function Preview() { + super(); + addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + + } + + private function onAddedToStage(e:Event):void { + removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + initScene(); + addEventListener(Event.ENTER_FRAME, onEnterFrame); + addEventListener(Event.RESIZE, onResize); + onResize(); + } + + /** + * Инициализация сцены предосмотра пропа. + */ + private function initScene(): void { + + // Создание сцены + sceneProp = new Scene3D(); + sceneProp.root = new Object3D(); + + // Добавление камеры и области вывода + cameraProp = new Camera3D(); + cameraProp.rotationX = -MathUtils.DEG90 - MathUtils.DEG30; + cameraPropContainer = new Object3D(); + cameraPropContainer.addChild(cameraProp); + cameraProp.coords = new Point3D(0, -100, 40); + sceneProp.root.addChild(cameraPropContainer); + + viewProp = new View(cameraProp); + addChild(viewProp); + viewProp.graphics.beginFill(0xFFFFFF); + viewProp.graphics.drawRect(0, 0, 1, 1); + viewProp.graphics.endFill(); + + halfFov = cameraProp.fov/2; + + } + + private function onEnterFrame(e:Event):void { + + cameraPropContainer.rotationZ += MathUtils.DEG1; + sceneProp.calculate(); + } + + /** + * Находит расстояние, на котором должна быть камера, чтобы проп было хорошо видно. + * @param prop проп + * @return расстояние + */ + private function analyzeProp(prop:Prop):Point { + + var point:Point; + var maxSqrDistance:Number = 0; + var maxZ:Number = 0; + var h:Number; + + var tileSprite3D:TileSprite3D = prop as TileSprite3D; + if (tileSprite3D) { + + var bitmapData:BitmapData = prop.bitmapData; + maxSqrDistance = tileSprite3D.scale*1.5*Math.max(bitmapData.width, bitmapData.height); + maxZ = bitmapData.height; + + } else { + var vertices:Array = prop.vertices.toArray(true); + var len:int = vertices.length; + var deltaZ:Number; + var deltaY:Number; + var deltaX:Number; + var sqrDistance:Number; + for (var i:int = 0; i < len; i++) { + var vertex1:Point3D = (vertices[i] as Vertex).coords; + deltaX = vertex1.x - prop.x; + deltaY = vertex1.y - prop.y; + deltaZ = vertex1.z - prop.z; + sqrDistance = deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ; + if (sqrDistance > maxSqrDistance) { + maxSqrDistance = sqrDistance; + } + + for (var j:int = i + 1; j < len; j++) { + var vertex2:Point3D = (vertices[j] as Vertex).coords; + deltaZ = vertex1.z - vertex2.z; + deltaZ = deltaZ < 0 ? -deltaZ : deltaZ; + + if (deltaZ > maxZ) { + maxZ = deltaZ; + } + + } + } + + maxSqrDistance = 2*Math.sqrt(maxSqrDistance); + + + } + + h = sqrt2*maxSqrDistance/(2*Math.tan(halfFov)) + maxSqrDistance/2; + point = new Point(h, maxZ/2); + + propDistance.add(prop, point); + return point; + } + + /** + * Получение иконки для пропа + * @param prop + * @return иконка + */ + public function getPropIcon(prop:Prop):Bitmap { + + clearPropScene(); + analyzeProp(prop); + setCameraCoords(prop); + sceneProp.root.addChild(prop); + sceneProp.calculate(); + var bitmapData:BitmapData = new BitmapData(iconWidth, iconWidth, false, 0x0); + matrix.a = iconWidth/viewProp.width; + matrix.d = matrix.a; + bitmapData.draw(viewProp, matrix); + var result:Bitmap = new Bitmap(bitmapData); + return result; + + } + + /** + * Установка координат камеры. + * @param prop + * + */ + private function setCameraCoords(prop:Object3D):void { + + var yzDistance:Point = propDistance[prop]; + if (yzDistance) { + cameraProp.y = -yzDistance.x; + cameraProp.z = yzDistance.y/2 + yzDistance.x/sqrt3; + + } + + } + + /** + * Очистка сцены предосмотра. + */ + private function clearPropScene():void { + + for (var child:* in sceneProp.root.children) { + var prop:Prop = child as Prop; + if (prop) { + sceneProp.root.removeChild(prop); + } + } + + } + + public function showProp(prop:Prop):void { + + clearPropScene(); + setCameraCoords(prop); + sceneProp.root.addChild(prop); + } + + /** + * Корректировка размеров и положения объектов при изменении окна плеера. + */ + public function onResize(e:Event = null):void { + + viewProp.width = parent.width; + viewProp.height = parent.height; + sceneProp.calculate(); + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/SceneContainer.as b/src/alternativa/editor/SceneContainer.as new file mode 100644 index 0000000..dd6479f --- /dev/null +++ b/src/alternativa/editor/SceneContainer.as @@ -0,0 +1,696 @@ +package alternativa.editor { + import alternativa.editor.eventjournal.EventJournal; + import alternativa.editor.eventjournal.EventJournalItem; + import alternativa.editor.prop.Prop; + import alternativa.editor.scene.CursorScene; + import alternativa.editor.scene.EditorScene; + import alternativa.editor.scene.MainScene; + import alternativa.editor.scene.OccupyMap; + import alternativa.engine3d.events.MouseEvent3D; + import alternativa.types.Matrix3D; + import alternativa.types.Point3D; + import alternativa.types.Set; + import alternativa.utils.KeyboardUtils; + + import flash.display.Graphics; + import flash.display.Shape; + import flash.events.Event; + import flash.events.KeyboardEvent; + import flash.events.MouseEvent; + import flash.geom.Point; + import flash.ui.Keyboard; + import flash.utils.setTimeout; + + import mx.controls.Alert; + import mx.core.UIComponent; + import mx.events.CloseEvent; + + public class SceneContainer extends UIComponent { + // Сцена с курсором + public var cursorScene:CursorScene; + // Сцена уровня + public var mainScene:MainScene; + // Индикатор вертикального движения + private var verticalMoving:Boolean = false; + // + private var copy:Boolean = false; + // + private var mouseDown:Boolean; + // Журнал событий + private var eventJournal:EventJournal; + // Индикатор режима вставки пропов + public var multiplePropMode:int = 1; + // + private var cameraTransformation:Matrix3D; + // + private var _snapMode:Boolean = true; + + private var cameraDistance:Number; + + private var shape:Shape; + + private var keyMapper:KeyMapper; + + public function SceneContainer() { + super(); + addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + initKeyMapper(); + } + + private function initKeyMapper():void { + keyMapper = new KeyMapper(); + keyMapper.mapKey(0, KeyboardUtils.N); + keyMapper.mapKey(1, KeyboardUtils.M); + keyMapper.mapKey(2, Keyboard.NUMPAD_4); + keyMapper.mapKey(3, Keyboard.NUMPAD_6); + keyMapper.mapKey(4, Keyboard.NUMPAD_8); + keyMapper.mapKey(5, Keyboard.NUMPAD_2); + keyMapper.mapKey(6, Keyboard.NUMPAD_9); + keyMapper.mapKey(7, Keyboard.NUMPAD_3); + } + + private function onAddedToStage(e:Event):void { + + removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + + keyMapper.startListening(stage); + + cursorScene = new CursorScene(stage); + mainScene = new MainScene(); + cursorScene.occupyMap = mainScene.occupyMap; + + addChild(mainScene.view); + addChild(cursorScene.view); + shape = new Shape(); + addChild(shape); + + initListeners(); + eventJournal = new EventJournal(); + + var cameraCoords:Point3D = cursorScene.camera.coords; + cameraDistance = Math.sqrt(cameraCoords.x*cameraCoords.x + cameraCoords.y*cameraCoords.y + cameraCoords.z*cameraCoords.z); + } + + /** + * Установка обработчиков. + */ + protected function initListeners():void { + + addEventListener(Event.ENTER_FRAME, onEnterFrame); + stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); + stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); + parent.addEventListener(Event.RESIZE, onResize); + parent.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); + parent.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); + parent.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel); + parent.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); + parent.addEventListener(MouseEvent.MIDDLE_MOUSE_DOWN, onMiddleMouseDown); + parent.addEventListener(MouseEvent.MIDDLE_MOUSE_UP, onMiddleMouseUp); + parent.addEventListener(MouseEvent.ROLL_OUT, onMouseOut); + onResize(); + } + + + // Точка клика + private var mouseDownPoint:Point = new Point(); + // Координаты выделенного пропа на момент выделения + private var startSelCoords:Point3D; + + private function onMouseDown(e:MouseEvent):void { + if (mainScene.propMouseDown) { + + var selProp:Prop = mainScene.selectedProp; + if (selProp) { + // Запоминаем исходные координаты + startSelCoords = selProp.coords; + cursorScene.visible = false; + } + } + + mouseDown = true; + mouseDownPoint.x = mainScene.view.mouseX; + mouseDownPoint.y = mainScene.view.mouseY; + } + + + + private function onMouseUp(e:MouseEvent):void { + var selProp:Prop = mainScene.selectedProp; + var selectedProps:Set = mainScene.selectedProps; + + if (mainScene.propMouseDown) { + if (selProp) { + var move:Boolean = false; + if (copy) { + // Заносим в журнал + eventJournal.addEvent(EventJournal.COPY, selectedProps.clone()); + } else { + // Проверка на перемещение + if (!startSelCoords.equals(selProp.coords)) { + var delta:Point3D = selProp.coords; + delta.difference(delta, startSelCoords); + // Заносим в журнал + eventJournal.addEvent(EventJournal.MOVE, selectedProps.clone(), delta); + move = true; + } + } + + if (_snapMode && (copy || move)) { + checkConflict(); + } + + copy = false; + + } + mainScene.propMouseDown = false; + + } else { + // Проверка на клик + var deltaX:Number = mouseDownPoint.x - mainScene.view.mouseX; + var deltaY:Number = mouseDownPoint.y - mainScene.view.mouseY; + deltaX = deltaX < 0 ? -deltaX : deltaX; + deltaY = deltaY < 0 ? -deltaY : deltaY; + if ((deltaX < 3) && (deltaY < 3)) { + // Перемещаем курсор туда, куда кликнули мышью + if (propDown) { + if (cursorScene.object) { + cursorScene.object.z = clickZ; + } + propDown = false; + } + cursorScene.moveCursorByMouse(); + + if (!cursorScene.visible) { + mainScene.deselectProps(); + cursorScene.visible = true; + + } + } else { + // выделяем/снимаем выделение с пропов под прямоугольником + if (e.shiftKey) { + for (var p:* in rectProps) { + var prop:Prop = p; + if (e.altKey) { + if (selectedProps.has(prop)) { + mainScene.deselectProp(prop); + } + } else { + if (!selectedProps.has(prop)) { + mainScene.selectProp(prop); + } + } + } + } + } + + } + + mouseDown = false; + shape.graphics.clear(); + } + + private function alertConflict(e:CloseEvent):void { + if (e.detail == Alert.NO) { + // Отменяем + mainScene.undo(eventJournal.undo(true)); + } + setFocus(); + } + + private function checkConflict():void { + + if (multiplePropMode != 0) { + // Ищем пересекающие пропы + var selectedProps:Set = mainScene.selectedProps; + var occupyMap:OccupyMap = mainScene.occupyMap; + for (var p:* in selectedProps) { + var prop:Prop = p; + if ((multiplePropMode == 2 && occupyMap.isConflict(prop)) || (multiplePropMode == 1 && occupyMap.isConflictGroup(prop))) { + Alert.show("This location is occupied. Continue?", "", Alert.YES|Alert.NO, this, alertConflict, null, Alert.YES); + break; + } + } + + } + } + + private var prevMoveX:Number; + private var prevMoveY:Number; + private var rectProps:Set = new Set(); + + private function onMouseMove(e:MouseEvent):void { + var p:*; + var prop:Prop; + var selProp:Prop = mainScene.selectedProp; + var selectedProps:Set = mainScene.selectedProps; + + if (mainScene.propMouseDown && selProp) { + // Проверка на необходимость копирования + if (e.shiftKey && !copy) { + // Проверка на перемещение + if (!startSelCoords.equals(selProp.coords)) { + var delta:Point3D = selProp.coords; + delta.difference(delta, startSelCoords); + // Заносим в журнал + eventJournal.addEvent(EventJournal.MOVE, selectedProps.clone(), delta); + } + // Копируем пропы + var copyProps:Set = new Set(); + for (p in selectedProps) { + prop = p as Prop; + var copyProp:Prop = mainScene.addProp(prop, prop.coords, prop.rotationZ); + if (prop == selProp) { + selProp = copyProp; + } + copyProps.add(copyProp); + } + // Выделяем копии + mainScene.selectProps(copyProps); + mainScene.selectedProp = selProp; + // Запоминаем исходные координаты + startSelCoords = selProp.coords; + copy = true; + } + + // Перемещаем проп + mainScene.moveSelectedProps(verticalMoving); + + } else { + // Проверка на паннинг + if (middleDown) { + var matrix:Matrix3D = cursorScene.camera.transformation; + var axisX:Point3D = new Point3D(matrix.a, matrix.e, matrix.i); + var axisY:Point3D = new Point3D(matrix.b, matrix.f, matrix.j); + axisX.multiply(10*(prevMoveX - e.stageX)); + axisY.multiply(10*(prevMoveY - e.stageY)); + + var coords:Point3D = new Point3D(matrix.d, matrix.h, matrix.l); + coords.add(axisX); + coords.add(axisY); + cursorScene.cameraController.coords = cursorScene.container.globalToLocal(coords); + + } else if (mouseDown) { + var dx:Number = mouseDownPoint.x - mainScene.view.mouseX; + dx = dx > 0 ? dx : -dx; + var dy:Number = mouseDownPoint.y - mainScene.view.mouseY; + dy = dy > 0 ? dy : -dy; + if (dx > 3 && dy > 3) { + // Отрисовка прямоугольника выделения + var point:Point = new Point(Math.min(mainScene.view.mouseX, mouseDownPoint.x), Math.min(mainScene.view.mouseY, mouseDownPoint.y)); + var gfx:Graphics = shape.graphics; + gfx.clear(); + gfx.lineStyle(0, 0x000000); + gfx.moveTo(point.x, point.y); + + gfx.lineTo(point.x + dx, point.y); + gfx.lineTo(point.x + dx, point.y + dy); + gfx.lineTo(point.x, point.y + dy); + gfx.lineTo(point.x, point.y); + + // Выделяем пропы, попавшие под прямоугольник + if (e.shiftKey) { + var prevRectProps:Set = rectProps.clone(); + if (e.altKey) { + // Снимаем выделение + rectProps = mainScene.getPropsUnderRect(point, dx, dy, false); + for (p in prevRectProps) { + prop = p; + if (!rectProps.has(prop) && selectedProps.has(prop)) { + prop.select(); + } + } + } else { + // Выделяем + rectProps = mainScene.getPropsUnderRect(point, dx, dy, true); + for (p in prevRectProps) { + prop = p; + if (!rectProps.has(prop) && !selectedProps.has(prop)) { + prop.deselect(); + } + } + + } + + } else { + mainScene.selectProps(mainScene.getPropsUnderRect(point, dx, dy, true)); + } + + cursorScene.visible = false; + } + } + } + prevMoveX = e.stageX; + prevMoveY = e.stageY; + } + + private var cameraPoint:Point3D = new Point3D(0, 0, 1000); + /** + * Зум. + */ + private function onMouseWheel(e:MouseEvent):void { + zoom(e.delta); + } + + /** + * @param delta + */ + private function zoom(delta:int):void { + var point:Point3D = mainScene.selectedProp ? mainScene.selectedProp.coords : cursorScene.camera.localToGlobal(cameraPoint); + var coords:Point3D = cursorScene.container.localToGlobal(cursorScene.cameraController.coords); + var old:Point3D = coords.clone(); + coords.x = (point.x + delta*coords.x)/(1 + delta); + coords.y = (point.y + delta*coords.y)/(1 + delta); + coords.z = (point.z + delta*coords.z)/(1 + delta); + cursorScene.cameraController.coords = cursorScene.container.globalToLocal(coords); + coords.difference(coords, old); + if (delta > 0) cameraDistance -= Math.sqrt(coords.x*coords.x + coords.y*coords.y + coords.z*coords.z); + else cameraDistance += Math.sqrt(coords.x*coords.x + coords.y*coords.y + coords.z*coords.z); + } + + private var outDown:Boolean = false; + private function onMouseOut(e:MouseEvent):void { + if (e.buttonDown) { + parent.addEventListener(MouseEvent.ROLL_OVER, onMouseOver); + cursorScene.containerController.setMouseLook(false); + } + + } + + private function onMouseOver(e:MouseEvent):void { + parent.removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver); + if (!e.buttonDown) { + onMouseUp(e); + } else { + onMouseDown(e); + } + } + + private var middleDown:Boolean = false; + private function onMiddleMouseDown(e:MouseEvent):void { + var coords:Point3D; + + if (e.altKey) { + var selProp:Prop = mainScene.selectedProp; + if (selProp) { + var centre:Point = mainScene.getCentrePropsGroup(); + coords = new Point3D(centre.x, centre.y, selProp.z); + } else { + coords = cursorScene.camera.localToGlobal(new Point3D(0, 0, cameraDistance)); + } + var offset:Point3D = cursorScene.containerController.coords.clone(); + offset.subtract(coords); + var cameraCoords:Point3D = cursorScene.container.localToGlobal(cursorScene.cameraController.coords); + cameraCoords.add(offset); + cursorScene.cameraController.coords = cursorScene.container.globalToLocal(cameraCoords); + cursorScene.containerController.coords = coords; + cursorScene.containerController.setMouseLook(true); + } else { + middleDown = true; + } + + } + + private function onMiddleMouseUp(e:MouseEvent):void { + middleDown = false; + cursorScene.containerController.setMouseLook(false); + } + + + private var cameraOffset:Point3D = new Point3D; + + /** + * Покадровая обработка. + */ + private function onEnterFrame(e:Event):void { + + cursorScene.containerController.yawLeft(keyMapper.keyPressed(0)); + cursorScene.containerController.yawRight(keyMapper.keyPressed(1)); + cursorScene.containerController.pitchDown(keyMapper.keyPressed(6)); + cursorScene.containerController.pitchUp(keyMapper.keyPressed(7)); + + cursorScene.containerController.speed = 2000; + cursorScene.containerController.moveLeft(keyMapper.keyPressed(2)); + cursorScene.containerController.moveRight(keyMapper.keyPressed(3)); + cursorScene.containerController.moveForward(keyMapper.keyPressed(4)); + cursorScene.containerController.moveBack(keyMapper.keyPressed(5)); + + cursorScene.cameraController.processInput(); + cursorScene.containerController.processInput(); + + cursorScene.calculate(); + + cameraTransformation = cursorScene.camera.transformation; + cameraOffset.x = cameraTransformation.d; + cameraOffset.y = cameraTransformation.h; + cameraOffset.z = cameraTransformation.l; + // Рисуем оси + cursorScene.drawAxis(cameraTransformation); + var rotation:Point3D = cameraTransformation.getRotations(); + // Синхронизируем камеру главной сцены + mainScene.synchronize(cameraOffset, rotation.x, rotation.y, rotation.z); + mainScene.calculate(); + } + + /** + * Корректировка размеров и положения объектов при изменении окна плеера. + */ + private function onResize(e:Event = null):void { + + cursorScene.viewResize(parent.width - 20, parent.height - 40); + mainScene.viewResize(parent.width - 20, parent.height - 40); + + } + +// override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { +// if (cursorScene == null) return; +// +// cursorScene.viewResize(unscaledWidth, unscaledHeight); +// mainScene.viewResize(unscaledWidth, unscaledHeight); +// +// } + + + /** + * Обработка нажатия клавиш. + */ + private function onKeyDown(event:KeyboardEvent):void { + + var selProp:Prop; + var p:*; + var delta:Point3D; + var oldCoords:Point3D; + + switch (event.keyCode) { + case KeyboardUtils.UP: + case KeyboardUtils.DOWN: + case KeyboardUtils.LEFT: + case KeyboardUtils.RIGHT: + var sector:int = mainScene.getCameraSector(); + if (cursorScene.visible) { + cursorScene.moveByArrows(event.keyCode, sector); + } else { + selProp = mainScene.selectedProp; + oldCoords = selProp.coords; + // Перемещаем + mainScene.moveByArrows(event.keyCode, sector); + // Вычисляем перемещение + delta = selProp.coords; + delta.difference(delta, oldCoords); + // Заносим в журнал + eventJournal.addEvent(EventJournal.MOVE, mainScene.selectedProps, delta); + } + + break; + case KeyboardUtils.V: + verticalMoving = true; + break; + case KeyboardUtils.W: + if (cursorScene.visible) { + cursorScene.object.z += EditorScene.vBase; + cursorScene.updateMaterial(); + } else { + selProp = mainScene.selectedProp; + if (selProp) { + oldCoords = selProp.coords; + mainScene.verticalMove(false); + delta = selProp.coords; + delta.difference(delta, oldCoords); + // Заносим в журнал + eventJournal.addEvent(EventJournal.MOVE, mainScene.selectedProps, delta); + } + + } + break; + case KeyboardUtils.S: + if (!event.ctrlKey) { + if (cursorScene.visible) { + cursorScene.object.z -= EditorScene.vBase; + cursorScene.updateMaterial(); + } else { + selProp = mainScene.selectedProp; + if (selProp) { + oldCoords = selProp.coords; + mainScene.verticalMove(true); + delta = selProp.coords; + delta.difference(delta, oldCoords); + // Заносим в журнал + eventJournal.addEvent(EventJournal.MOVE, mainScene.selectedProps, delta); + } + } + + } + break; + + case KeyboardUtils.DELETE: + case KeyboardUtils.C: + selProp = mainScene.selectedProp; + if (selProp) { + var cursor:Prop = cursorScene.object; + if (cursor) { + cursor.coords = selProp.coords; + if (snapMode) { + cursor.snapCoords(); + } + } + eventJournal.addEvent(EventJournal.DELETE, mainScene.deleteProps()); + cursorScene.visible = true; + + } + break; + case KeyboardUtils.Z: + if (cursorScene.visible) { + cursorScene.rotateProps(true); + cursorScene.updateMaterial(); + } else { + eventJournal.addEvent(EventJournal.ROTATE, mainScene.selectedProps.clone(), false); + mainScene.rotateProps(true); + } + break; + case KeyboardUtils.X: + if (cursorScene.visible) { + cursorScene.rotateProps(false); + cursorScene.updateMaterial(); + } else { + eventJournal.addEvent(EventJournal.ROTATE, mainScene.selectedProps.clone(), true); + mainScene.rotateProps(false); + } + break; + case KeyboardUtils.ESCAPE: + selProp = mainScene.selectedProp; + if (selProp) { + if (cursorScene.object) { + cursorScene.object.coords = selProp.coords; + cursorScene.object.snapCoords(); + } + mainScene.deselectProps(); + cursorScene.visible = true; + } + break; + case Keyboard.NUMPAD_ADD: + zoom(3); + break; + case Keyboard.NUMPAD_SUBTRACT: + zoom(-3); + break; + case Keyboard.F: + mainScene.mirrorTextures(); + break; + case Keyboard.Q: + mainScene.selectConflictProps(); + break; + } + } + + /** + * + */ + private function onKeyUp(e:KeyboardEvent):void { + switch (e.keyCode) { + case KeyboardUtils.V: + verticalMoving = false; + break; + } + } + + /** + * Очистка сцен. + */ + public function clear():void { + + mainScene.clear(); + cursorScene.clear(); + } + + /** + * + */ + public function set snapMode(value:Boolean):void { + _snapMode = value; + mainScene.snapMode = value; + cursorScene.snapMode = value; + } + + /** + * + */ + public function get snapMode():Boolean { + return _snapMode; + } + + /** + * Добавление пропа. + * @param sourceProp исходный проп + */ + public function addProp(sourceProp:Prop):void { + + var prop:Prop = mainScene.addProp(sourceProp, cursorScene.object.coords, cursorScene.object.rotationZ); + var props:Set = new Set(); + props.add(prop); + eventJournal.addEvent(EventJournal.ADD, props); + setTimeout(cursorScene.updateMaterial, 200); + prop.addEventListener(MouseEvent3D.MOUSE_DOWN, onPropMouseDown); + +// if (_snapMode && !cursorScene.freeState && ((multiplePropMode == 2) || (multiplePropMode == 1 && cursorScene.occupyMap.isConflictGroup(cursorScene.object)))) { + + if (_snapMode && !cursorScene.freeState && ((multiplePropMode == 2 && cursorScene.occupyMap.isConflict(prop)) || (multiplePropMode == 1 && cursorScene.occupyMap.isConflictGroup(prop)))) { + Alert.show("This location is occupied. Continue?", "", Alert.YES|Alert.NO, this, alertConflict, null, Alert.YES); + + } + + + } + + private var clickZ:Number; + private var propDown:Boolean = false; + private function onPropMouseDown(e:MouseEvent3D):void { + clickZ = e.object.z; + propDown = true; + + } + + + public function undo():void { + var e:EventJournalItem = eventJournal.undo(); + if (e) { + mainScene.undo(e); + if (cursorScene.visible) { + cursorScene.updateMaterial(); + } + } + } + + public function redo():void { + var e:EventJournalItem = eventJournal.redo(); + if (e) { + mainScene.redo(e); + if (cursorScene.visible) { + cursorScene.updateMaterial(); + } + } + } + + + + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/eventjournal/EventJournal.as b/src/alternativa/editor/eventjournal/EventJournal.as new file mode 100644 index 0000000..3a4f76f --- /dev/null +++ b/src/alternativa/editor/eventjournal/EventJournal.as @@ -0,0 +1,56 @@ +package alternativa.editor.eventjournal { + import alternativa.types.Set; + + + public class EventJournal { + + public static const ADD:int = 0; + public static const DELETE:int = 1; + public static const ROTATE:int = 2; + public static const MOVE:int = 3; + public static const COPY:int = 4; + public static const CHANGE_TEXTURE:int = 5; + + private var events:Array; + private var cancelEvents:Array; + + public function EventJournal() { + events = []; + cancelEvents = []; + } + + public function addEvent(operation:int, props:Set, oldState:* = null):void { + + events.push(new EventJournalItem(operation, props, oldState)); + cancelEvents.length = 0; + } + + + public function undo(deleteEvent:Boolean = false):EventJournalItem { + var len:int = events.length; + if (len > 0) { + var e:EventJournalItem = events[len - 1]; + events.pop(); + if (!deleteEvent) { + cancelEvents.push(e); + } + return e; + } + return null; + } + + public function redo():EventJournalItem { + var len:int = cancelEvents.length; + if (len > 0) { + var e:EventJournalItem = cancelEvents[len - 1]; + cancelEvents.pop(); + events.push(e); + return e; + } + return null; + } + } +} + + + diff --git a/src/alternativa/editor/eventjournal/EventJournalItem.as b/src/alternativa/editor/eventjournal/EventJournalItem.as new file mode 100644 index 0000000..1cca256 --- /dev/null +++ b/src/alternativa/editor/eventjournal/EventJournalItem.as @@ -0,0 +1,18 @@ +package alternativa.editor.eventjournal { + import alternativa.types.Set; + + + public class EventJournalItem { + + public var operation:int; + public var props:Set; + public var oldState:*; + + public function EventJournalItem(operation:int, props:Set, oldState:*) { + + this.operation = operation; + this.props = props; + this.oldState = oldState; + } + } +} \ No newline at end of file diff --git a/src/alternativa/editor/events/LevelLoaded.as b/src/alternativa/editor/events/LevelLoaded.as new file mode 100644 index 0000000..922183f --- /dev/null +++ b/src/alternativa/editor/events/LevelLoaded.as @@ -0,0 +1,12 @@ +package alternativa.editor.events { + import flash.events.Event; + + public class LevelLoaded extends Event { + public static const LEVEL_LOADED:String = "level_loaded"; + + public function LevelLoaded(bubbles:Boolean=false, cancelable:Boolean=false) { + super(LEVEL_LOADED, bubbles, cancelable); + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/BinaryExporter.as b/src/alternativa/editor/export/BinaryExporter.as new file mode 100644 index 0000000..9921434 --- /dev/null +++ b/src/alternativa/editor/export/BinaryExporter.as @@ -0,0 +1,47 @@ +package alternativa.editor.export { + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Tile; + import alternativa.engine3d.core.Object3D; + + import flash.filesystem.FileStream; + + /** + * Сохраняет уровень в бинарном формате. + */ + public class BinaryExporter extends FileExporter { + + /** + * + */ + public function BinaryExporter(root:Object3D) { + super(root); + } + + /** + * @param stream + */ + override public function exportToFileStream(stream:FileStream):void { + for (var child:* in root.children) { + var prop:Prop = child as Prop; + if (prop) { + stream.writeUTF(prop.library); + stream.writeUTF(prop.group); + stream.writeUTF(prop.name); + stream.writeFloat(prop.x); + stream.writeFloat(prop.y); + stream.writeFloat(prop.z); + stream.writeFloat(prop.rotationZ); + stream.writeBoolean(prop.free); + var tile:Tile = prop as Tile; + if (tile) { + stream.writeUTF(tile.textureName); +// stream.writeBoolean(tile.isMirror); + } else { + stream.writeUTF(""); +// stream.writeBoolean(false); + } + } + } + } + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/CollisionBox.as b/src/alternativa/editor/export/CollisionBox.as new file mode 100644 index 0000000..8cf4380 --- /dev/null +++ b/src/alternativa/editor/export/CollisionBox.as @@ -0,0 +1,99 @@ +package alternativa.editor.export { + + import alternativa.engine3d.alternativa3d; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Vertex; + import alternativa.types.Matrix3D; + import alternativa.types.Point3D; + + import flash.geom.Vector3D; + + use namespace alternativa3d; + + /** + * Физический примитив, представляющий ориентированный бокс. + */ + public class CollisionBox extends CollisionPrimitive { + + // Размеры бокса вдоль локальных осей (x-ширина, y-длина, z-высота) + public var size:Point3D = new Point3D(); + + /** + * + * @param mesh + */ + public function CollisionBox(mesh:Mesh = null) { + super(mesh); + } + + /** + * + * @param mesh + */ + override public function parse(mesh:Mesh):void { + // Поиск максимальных положительных координат по каждой из осей + var minX:Number = Number.MAX_VALUE; + var maxX:Number = -Number.MAX_VALUE; + var minY:Number = Number.MAX_VALUE; + var maxY:Number = -Number.MAX_VALUE; + var minZ:Number = Number.MAX_VALUE; + var maxZ:Number = -Number.MAX_VALUE; + for each (var v:Vertex in mesh._vertices) { + var p:Point3D = v._coords; + if (p.x < minX) minX = p.x; + if (p.x > maxX) maxX = p.x; + + if (p.y < minY) minY = p.y; + if (p.y > maxY) maxY = p.y; + + if (p.z < minZ) minZ = p.z; + if (p.z > maxZ) maxZ = p.z; + } + size.x = maxX - minX; + size.y = maxY - minY; + size.z = maxZ - minZ; + + var midPoint:Point3D = new Point3D(0.5*(maxX + minX), 0.5*(maxY + minY), 0.5*(maxZ + minZ)); + + transform.toIdentity(); + transform.rotate(mesh._rotationX, mesh._rotationY, mesh._rotationZ); + transform.translate(mesh._coords.x, mesh._coords.y, mesh._coords.z); + midPoint.transform(transform); + + transform.d = midPoint.x; + transform.h = midPoint.y; + transform.l = midPoint.z; + } + + /** + * + * @param parentTransform + * @return + */ + override public function getXml(parentTransform:Matrix3D):XML { + var globalTransfrom:Matrix3D = transform.clone(); + globalTransfrom.combine(parentTransform); + var angles:Point3D = globalTransfrom.getRotations(); + var xml:XML = + + + {size.x} + {size.y} + {size.z} + + + {globalTransfrom.d} + {globalTransfrom.h} + {globalTransfrom.l} + + + {angles.x} + {angles.y} + {angles.z} + + ; + return xml; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/CollisionPlane.as b/src/alternativa/editor/export/CollisionPlane.as new file mode 100644 index 0000000..552ba46 --- /dev/null +++ b/src/alternativa/editor/export/CollisionPlane.as @@ -0,0 +1,102 @@ +package alternativa.editor.export { + + import __AS3__.vec.Vector; + + import alternativa.engine3d.alternativa3d; + import alternativa.engine3d.core.Face; + import alternativa.engine3d.core.Mesh; + import alternativa.types.Matrix3D; + import alternativa.types.Point3D; + + use namespace alternativa3d; + + /** + * Физический примитив, представляющий собой прямоугольник, лежащий в плоскости XY локальной системы координат. + * Нормаль прямоугольника направлена вдоль локальной оси Z. + */ + public class CollisionPlane extends CollisionPrimitive { + // Ширина, размер по оси X + public var width:Number = 0; + // Длина, размер по оси Y + public var length:Number = 0; + + /** + * @param mesh + */ + public function CollisionPlane(mesh:Mesh = null) { + super(mesh); + } + + /** + * Конструирует примитив из полигонального объекта. Объект должен содержать в себе ориентированный прямоугольник, состоящий из двух треугольников. + * @param mesh + */ + override public function parse(mesh:Mesh):void { + var i:int; + // Подразумевается, что прямоугольник состоит из двух треугольников. Для определения параметров воспользуемся первым из них. + var face:Face = mesh._faces.peek() as Face; + // Найдём длины рёбер треугольника и индекс гипотенузы + var max:Number = -1; + var imax:int = 0; + var edges:Vector. = Vector.([new Point3D(), new Point3D(), new Point3D()]); + var lengths:Vector. = new Vector.(3); + for (i = 0; i < 3; i++) { + var edge:Point3D = edges[i]; + edge.difference(face.vertices[(i + 1)%3]._coords, face.vertices[i]._coords); + var len:Number = lengths[i] = edge.length; + if (len > max) { + max = len; + imax = i; + } + } + // Выберем оси X и Y + var ix:int = (imax + 2)%3; + var iy:int = (imax + 1)%3; + var xAxis:Point3D = edges[ix]; + var yAxis:Point3D = edges[iy]; + yAxis.invert(); + width = lengths[ix]; + length = lengths[iy]; + // Смещение локального начала координат + var trans:Point3D = face.vertices[(imax + 2)%3]._coords.clone(); + trans.x += 0.5*(xAxis.x + yAxis.x); + trans.y += 0.5*(xAxis.y + yAxis.y); + trans.z += 0.5*(xAxis.z + yAxis.z); + // Оси локального базиса в родительской системе координат + xAxis.normalize(); + yAxis.normalize(); + var zAxis:Point3D = Point3D.cross(xAxis, yAxis); + // Матрица трансформации примитива в родительской системе координат + transform.setVectors(xAxis, yAxis, zAxis, trans); + transform.rotate(mesh._rotationX, mesh._rotationY, mesh._rotationZ); + transform.translate(mesh._coords.x, mesh._coords.y, mesh._coords.z); + } + + /** + * @param parentTransform + * @return + */ + override public function getXml(parentTransform:Matrix3D):XML { + var globalTransfrom:Matrix3D = transform.clone(); + globalTransfrom.combine(parentTransform); + var angles:Point3D = globalTransfrom.getRotations(); + var xml:XML = + + {width} + {length} + + {globalTransfrom.d} + {globalTransfrom.h} + {globalTransfrom.l} + + + {angles.x} + {angles.y} + {angles.z} + + ; + return xml; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/CollisionPrimitive.as b/src/alternativa/editor/export/CollisionPrimitive.as new file mode 100644 index 0000000..4e84f8c --- /dev/null +++ b/src/alternativa/editor/export/CollisionPrimitive.as @@ -0,0 +1,37 @@ +package alternativa.editor.export { + import alternativa.engine3d.core.Mesh; + import alternativa.types.Matrix3D; + + /** + * Базовый класс для примитивов физической геометрии. + */ + public class CollisionPrimitive { + // Трансформация примитива в системе координат пропа. Трансформация не должна содержать масштабирования. + public var transform:Matrix3D = new Matrix3D(); + + /** + * @param mesh + */ + public function CollisionPrimitive(mesh:Mesh = null) { + if (mesh != null) parse(mesh); + } + + /** + * Строит примитив на основе полигонального объекта. + * @param mesh + */ + public function parse(mesh:Mesh):void { + } + + /** + * Формирует представление примитива в формате XML с учётом трансформации родительского пропа. + * + * @param parentTransform трансформация родительского пропа + * @return представление примитива в виде XML + */ + public function getXml(parentTransform:Matrix3D):XML { + return new XML(); + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/CollisionPrimitivesCache.as b/src/alternativa/editor/export/CollisionPrimitivesCache.as new file mode 100644 index 0000000..881c3ea --- /dev/null +++ b/src/alternativa/editor/export/CollisionPrimitivesCache.as @@ -0,0 +1,56 @@ +package alternativa.editor.export { + import __AS3__.vec.Vector; + + /** + * Кэш физических примитивов. Хранит наборы физических примтивов, индексированных значениями "имя библиотеки"-"имя группы"-"имя пропа". + */ + public class CollisionPrimitivesCache { + + private var cache:Object = {}; + + /** + * + */ + public function CollisionPrimitivesCache() { + } + + /** + * Добавляет список примитивов пропа в кэш. + * + * @param libName + * @param grpName + * @param propName + * @param prim + */ + public function addPrimitives(libName:String, grpName:String, propName:String, primitives:Vector.):void { + var libCache:Object = cache[libName]; + if (libCache == null) cache[libName] = libCache = {}; + var grpCache:Object = libCache[grpName]; + if (grpCache == null) libCache[grpName] = grpCache = {}; + grpCache[propName] = primitives; + } + + /** + * Возвращает кэшированный список примитив пропа или null в случае отсутствия списка. + * + * @param libName + * @param grpName + * @param propName + * @return + */ + public function getPrimitives(libName:String, grpName:String, propName:String):Vector. { + var currCache:Object = cache[libName]; + if (currCache == null) return null; + currCache = currCache[grpName]; + return currCache != null ? currCache[propName] : null; + } + + /** + * Очищает кэш. + */ + public function clear():void { + cache = {}; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/FileExporter.as b/src/alternativa/editor/export/FileExporter.as new file mode 100644 index 0000000..1de846d --- /dev/null +++ b/src/alternativa/editor/export/FileExporter.as @@ -0,0 +1,30 @@ +package alternativa.editor.export { + import alternativa.engine3d.core.Object3D; + + import flash.filesystem.FileStream; + + /** + * Базовый класс для экспортёров данных. + */ + public class FileExporter { + + // Корневой объект сцены, в котором находятся пропы экспортируемого уровня + public var root:Object3D; + + /** + * + * @param root + */ + public function FileExporter(root:Object3D) { + this.root = root; + } + + /** + * Метод сохраняет данные уровня в заданный файловый поток. + * @param stream + */ + public function exportToFileStream(stream:FileStream):void { + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/export/TanksXmlExporter.as b/src/alternativa/editor/export/TanksXmlExporter.as new file mode 100644 index 0000000..6c60c90 --- /dev/null +++ b/src/alternativa/editor/export/TanksXmlExporter.as @@ -0,0 +1,224 @@ +package alternativa.editor.export { + import __AS3__.vec.Vector; + + import alternativa.editor.prop.Bonus; + import alternativa.editor.prop.Flag; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Spawn; + import alternativa.editor.prop.Tile; + import alternativa.engine3d.alternativa3d; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + + import flash.filesystem.FileStream; + + use namespace alternativa3d; + + /** + * Экспортёр, сохраняющий уровень в формате XML, который используется для представления танкового уровня на сервере. + */ + public class TanksXmlExporter extends FileExporter { + + private var collPrimCache:CollisionPrimitivesCache; + + /** + * + */ + public function TanksXmlExporter(root:Object3D) { + super(root); + collPrimCache = new CollisionPrimitivesCache(); + } + + /** + * + * @param tile + * @return + */ + private function getTileXml(tile:Tile):XML { +// trace("export ", tile.free); + var xml:XML = + + + {tile.rotationZ} + + + {tile.x} + {tile.y} + {tile.z} + + {tile.textureName} + ; + return xml; + } + + /** + * + * @param stream + */ + override public function exportToFileStream(stream:FileStream):void { + var xml:XML = + + + + + + + + + + ; + + var staticGeometry:XML = xml.child("static-geometry")[0]; + var collisionGeometry:XML = xml.child("collision-geometry")[0]; + var bonusRegions:XML = xml.child("bonus-regions")[0]; + var spawnPoints:XML = xml.child("spawn-points")[0]; + for (var child:* in root.children) { + var prop:Prop = child as Prop; + if (prop) { + switch (prop.type) { + case Prop.BONUS: + bonusRegions.appendChild(getBonusXml(prop as Bonus)); + break; + case Prop.SPAWN: + spawnPoints.appendChild(getSpawnXml(prop as Spawn)); + break; + case Prop.FLAG: + addCtfFlag(xml, prop as Flag); + break; + case Prop.TILE: + var tile:Tile = prop as Tile; + staticGeometry.appendChild(getTileXml(tile)); + createTileCollisionXml(tile, collisionGeometry); + break; + } + } + } + + stream.writeUTFBytes(xml.toXMLString()); + } + + /** + * + * @param mapXml + */ + private function addCtfFlag(mapXml:XML, flag:Flag):void { + var flags:XMLList = mapXml.elements("ctf-flags"); + var flagsElement:XML; + if (flags.length() == 0) { + flagsElement = ; + mapXml.appendChild(flagsElement); + } else { + flagsElement = flags[0]; + } + var flagElement:XML; + switch (flag.name) { + case "red_flag": + flagElement = + + {flag.x} + {flag.y} + {flag.z} + ; + break; + case "blue_flag": + flagElement = + + {flag.x} + {flag.y} + {flag.z} + ; + break; + } + flagsElement.appendChild(flagElement); + } + + /** + * + * @param tile + * @return + */ + private function createTileCollisionXml(tile:Tile, parentElement:XML):void { + // Пробуем достать примитивы из кэша, если не удаётся, создаём набор для пропа и добавляем его в кэш + var primitives:Vector. = collPrimCache.getPrimitives(tile.library, tile.group, tile.name); + if (primitives == null) { + primitives = createPropCollisionPrimitives(tile); + collPrimCache.addPrimitives(tile.library, tile.group, tile.name, primitives); + } + // Записываем XML представления примитивов + for each (var p:CollisionPrimitive in primitives) parentElement.appendChild(p.getXml(tile._transformation)); + } + + /** + * Создаёт набор физической геометрии для пропа. + * @param tile + */ + private function createPropCollisionPrimitives(tile:Tile):Vector. { + var primitives:Vector. = new Vector.(); + for (var key:* in tile.collisionGeometry) { + var mesh:Mesh = key; + var meshName:String = mesh.name.toLowerCase(); + if (meshName.indexOf("plane") == 0) primitives.push(new CollisionPlane(mesh)); + else if (meshName.indexOf("box") == 0) primitives.push(new CollisionBox(mesh)); + } + return primitives; + } + + /** + * + * @param spawn + * @return + */ + private function getSpawnXml(spawn:Spawn):XML { + var xml:XML = + + + {spawn.x} + {spawn.y} + {spawn.z} + + + {spawn.rotationZ} + + + return xml; + } + + /** + * + * @param prop + * @return + */ + private function getBonusXml(prop:Bonus):XML { + + var xml:XML = + + + {prop.x} + {prop.y} + {prop.z} + + + {prop.rotationZ} + + + {prop.x + prop.distancesX.x} + {prop.y + prop.distancesY.x} + {prop.z + prop.distancesZ.x} + + + {prop.x + prop.distancesX.y} + {prop.y + prop.distancesY.y} + {prop.z + prop.distancesZ.y} + + ; + + + for (var type:* in prop.types) { + xml.appendChild({type}); + } + + return xml; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/importLevel/BinaryImporter.as b/src/alternativa/editor/importLevel/BinaryImporter.as new file mode 100644 index 0000000..36a935c --- /dev/null +++ b/src/alternativa/editor/importLevel/BinaryImporter.as @@ -0,0 +1,69 @@ +package alternativa.editor.importLevel { + import alternativa.editor.LibraryManager; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Tile; + import alternativa.editor.scene.MainScene; + import alternativa.types.Point3D; + + import flash.filesystem.FileStream; + + import mx.controls.Alert; + + public class BinaryImporter extends FileImporter { + + public function BinaryImporter(scene:MainScene, libraryManager:LibraryManager) { + super(scene, libraryManager); + } + + override public function importFromFileStream(stream:FileStream):void { + try { + while (stream.bytesAvailable) { + // Проверка на то, что в предыдущей итерации не загружали библиотеку + if (libname == "") { + var lib:String = stream.readUTF(); + // Составляем ключ: имя библиотеки + имя группы + имя меша + libname = lib + stream.readUTF() + stream.readUTF(); + } + // Ищем проп по ключу + var prop:Prop = libraryManager.nameProp[libname]; + if (prop) { + // Добавляем проп на сцену + prop = scene.addProp(prop, new Point3D(stream.readFloat(), stream.readFloat(), stream.readFloat()), stream.readFloat(), true, false); + var free:Boolean = stream.readBoolean(); + if (!free) { + // Заполняем карту + scene.occupyMap.occupy(prop); + } + var textureName:String = stream.readUTF(); +// var isMirror:Boolean = stream.readBoolean(); + var tile:Tile = prop as Tile; + if (tile) { + try { + if (textureName != "") { + tile.textureName = textureName; + } + } catch (err:Error) { + Alert.show("Tile " + tile.name + ": texture " + textureName + " is not found"); + } + +// if (isMirror) { +// tile.mirrorTexture(); +// } + } + libname = ""; + scene.calculate(); + } else { + Alert.show("Library '"+ lib + "' is used by the level. Load?", "", Alert.YES|Alert.NO, null, libAlertListener); + return; + } + } + } catch (err:Error) { + Alert.show(err.message); + } + + endLoadLevel(); + + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/importLevel/FileImporter.as b/src/alternativa/editor/importLevel/FileImporter.as new file mode 100644 index 0000000..92c73b9 --- /dev/null +++ b/src/alternativa/editor/importLevel/FileImporter.as @@ -0,0 +1,61 @@ +package alternativa.editor.importLevel { + import alternativa.editor.LibraryManager; + import alternativa.editor.events.LevelLoaded; + import alternativa.editor.scene.MainScene; + + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.filesystem.FileStream; + + import mx.controls.Alert; + import mx.events.CloseEvent; + + + public class FileImporter extends EventDispatcher { + protected var scene:MainScene; + protected var libraryManager:LibraryManager; + protected var libname:String = ""; + + public function FileImporter(scene:MainScene, libraryManager:LibraryManager) { + this.scene = scene; + this.libraryManager = libraryManager; + } + + public function importFromFileStream(stream:FileStream):void { + + } + + /** + * Обработка алерта загрузки библиотеки. + */ + protected function libAlertListener(e:CloseEvent):void { + + switch (e.detail) { + case Alert.YES: +// libraryManager.loadLibrary(loadingLevel); + break; + case Alert.NO: + scene.clear(); + endLoadLevel(); + break; + } + + } + + /** + * Конец загрузки уровня. + */ + protected function endLoadLevel():void { +// fileStream.close(); + scene.changed = false; +// emptyPath = false; +// fileForSave = file.clone(); +// fileForSave.addEventListener(Event.SELECT, onSaveFileSelect); + libname = ""; +// progressBar.visible = false; +// cursorScene.visible = true; +// dispatchEvent(new LevelLoaded()); + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/importLevel/TanksXmlImporter.as b/src/alternativa/editor/importLevel/TanksXmlImporter.as new file mode 100644 index 0000000..d0641c8 --- /dev/null +++ b/src/alternativa/editor/importLevel/TanksXmlImporter.as @@ -0,0 +1,184 @@ +package alternativa.editor.importLevel { + + import alternativa.editor.LibraryManager; + import alternativa.editor.prop.Bonus; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Tile; + import alternativa.editor.prop.TileSprite3D; + import alternativa.editor.scene.MainScene; + import alternativa.types.Point3D; + + import flash.filesystem.FileStream; + + import mx.controls.Alert; + + public class TanksXmlImporter extends FileImporter { + + public function TanksXmlImporter(scene:MainScene, libraryManager:LibraryManager) { + + super(scene, libraryManager); + } + + override public function importFromFileStream(stream:FileStream):void { + + var xml:XML = new XML(stream.readUTFBytes(stream.bytesAvailable)); + stream.close(); + try { + var staticGeometry:XML = xml.child("static-geometry")[0]; + var bonusRegions:XML = xml.child("bonus-regions")[0]; + var spawnPoints:XML = xml.child("spawn-points")[0]; + + if (staticGeometry) { + loadTiles(staticGeometry); + } + if (bonusRegions) { + loadBonuses(bonusRegions); + } + if (spawnPoints) { + loadSpawns(spawnPoints); + } + + var flagList:XMLList = xml.child("ctf-flags"); + if (flagList.length() > 0) loadFlags(flagList[0]); + + } catch (err:Error) { + Alert.show(err.message); + } + endLoadLevel(); + + + } + + /** + * + * @param flags + */ + private function loadFlags(flags:XML):void { + addFlag(flags.child("flag-red")[0], "red_flag"); + addFlag(flags.child("flag-blue")[0], "blue_flag"); + } + + /** + * + * @param flagXml + * @param flagPropName + */ + private function addFlag(flagXml:XML, flagPropName:String):void { + libname = "FunctionalFlags" + flagPropName; + var prop:Prop = libraryManager.nameProp[libname]; + if (prop != null) { + // Добавляем проп на сцену + prop = scene.addProp(prop, new Point3D(Number(flagXml.x),Number(flagXml.y), Number(flagXml.z)), 0, true, false); + libname = ""; + scene.calculate(); + } + } + + /** + * + * @param staticGeometry + */ + private function loadTiles(staticGeometry:XML):void { + var tiles:XMLList = staticGeometry.child("prop"); + for (var i:int = 0; i < tiles.length(); i++) { + var propXML:XML = tiles[i]; + libname = propXML.attribute("library-name").toString() + propXML.attribute("group-name").toString() + propXML.attribute("name").toString(); + var prop:Prop = libraryManager.nameProp[libname]; + if (prop) { + var position:XML = propXML.child("position")[0]; + var rotation:XML = propXML.child("rotation")[0]; + // Добавляем проп на сцену + prop = scene.addProp(prop, new Point3D(Number(position.child("x")[0]),Number(position.child("y")[0]), Number(position.child("z")[0])), Number(rotation.child("z")[0]), true, false); + var free:Boolean = propXML.attribute("free").toString() == "true"; +// trace("import free", free); + if (!(free && prop is TileSprite3D)) { + // Заполняем карту + scene.occupyMap.occupy(prop); + } + + var textureName:String = propXML.child("texture-name")[0]; +// var isMirror:Boolean = fileStream.readBoolean(); + var tile:Tile = prop as Tile; + if (tile) { + try { + if (textureName != "") { + tile.textureName = textureName; + } + } catch (err:Error) { + Alert.show("Tile " + tile.name + ": texture " + textureName + " is not found"); + } + +// if (isMirror) { +// tile.mirrorTexture(); +// } + } + libname = ""; + scene.calculate(); +// } else { +// Alert.show("Library '"+ lib + "' is used by the level. Load?", "", Alert.YES|Alert.NO, this, libAlertListener); +// return; +// } +// } + + + } + } + } + + private function loadBonuses(bonusRegions:XML):void { + var bonuses:XMLList = bonusRegions.child("bonus-region"); + for (var i:int = 0; i < bonuses.length(); i++) { + var bonusXML:XML = bonuses[i]; + libname = "FunctionalBonus Regions" + bonusXML.attribute("name").toString(); + var prop:Prop = libraryManager.nameProp[libname]; + if (prop) { + var position:XML = bonusXML.child("position")[0]; + var rotation:XML = bonusXML.child("rotation")[0]; + // Добавляем проп на сцену + prop = scene.addProp(prop, new Point3D(Number(position.child("x")[0]),Number(position.child("y")[0]), Number(position.child("z")[0])), Number(rotation.child("z")[0]), true, false); + var free:Boolean = bonusXML.attribute("free"); + if (!free) { + // Заполняем карту + scene.occupyMap.occupy(prop); + } + var bonusType:XMLList = bonusXML.child("bonus-type"); + + (prop as Bonus).types.clear(); + for (var j:int = 0; j < bonusType.length(); j++) { +// trace("j", bonusType[j].toString()); + (prop as Bonus).types.add(bonusType[j].toString()); + } + libname = ""; + scene.calculate(); + } + } + } + + private function loadSpawns(spawnPoints:XML):void { + var spawns:XMLList = spawnPoints.child("spawn-point"); + for (var i:int = 0; i < spawns.length(); i++) { + var spawnXML:XML = spawns[i]; + libname = "FunctionalSpawn Points" + spawnXML.attribute("type").toString(); + var prop:Prop = libraryManager.nameProp[libname]; + if (prop) { + var position:XML = spawnXML.child("position")[0]; + var rotation:XML = spawnXML.child("rotation")[0]; + // Добавляем проп на сцену + prop = scene.addProp(prop, new Point3D(Number(position.child("x")[0]),Number(position.child("y")[0]), Number(position.child("z")[0])), Number(rotation.child("z")[0]), true, false); + var free:Boolean = spawnXML.attribute("free");; + if (!free) { + // Заполняем карту + scene.occupyMap.occupy(prop); + } + + libname = ""; + scene.calculate(); + } + } + } + + + + + } +} diff --git a/src/alternativa/editor/prop/Bonus.as b/src/alternativa/editor/prop/Bonus.as new file mode 100644 index 0000000..9fdfa13 --- /dev/null +++ b/src/alternativa/editor/prop/Bonus.as @@ -0,0 +1,38 @@ +package alternativa.editor.prop { + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.materials.TextureMaterial; + import alternativa.types.Set; + + /** + * @author danilova + */ + public class Bonus extends Prop { + + public var types:Set; + public function Bonus(object:Object3D, library:String, group:String, needCalculate:Boolean=true) { + super(object, library, group, needCalculate); + types = new Set(); + types.add("damageup"); + } + + + + override public function clone():Object3D { + + var copyObject:Mesh = _object.clone() as Mesh; + copyObject.cloneMaterialToAllSurfaces(_material as TextureMaterial); + // Создаем проп + var copy:Bonus = new Bonus(copyObject, _library, _group, false); + // Копируем свойства + copy.distancesX = distancesX.clone(); + copy.distancesY = distancesY.clone(); + copy.distancesZ = distancesZ.clone(); + copy._multi = _multi; + copy.name = name; + copy.types = types.clone(); + return copy; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/prop/CustomFillMaterial.as b/src/alternativa/editor/prop/CustomFillMaterial.as new file mode 100644 index 0000000..239bbbf --- /dev/null +++ b/src/alternativa/editor/prop/CustomFillMaterial.as @@ -0,0 +1,45 @@ +package alternativa.editor.prop { + import alternativa.engine3d.alternativa3d; + import alternativa.engine3d.core.Camera3D; + import alternativa.engine3d.core.PolyPrimitive; + import alternativa.engine3d.display.Skin; + import alternativa.engine3d.materials.FillMaterial; + import alternativa.engine3d.materials.Material; + import alternativa.types.Point3D; + import alternativa.utils.ColorUtils; + + use namespace alternativa3d; + + public class CustomFillMaterial extends FillMaterial { + + private var center:Point3D = new Point3D(); + private var lightPoint:Point3D = new Point3D(); + private var normal:Point3D = new Point3D(); + + public function CustomFillMaterial(lightPoint:Point3D, color:uint, alpha:Number=1, blendMode:String="normal", wireThickness:Number=-1, wireColor:uint=0) { + super(color, alpha, blendMode, wireThickness, wireColor); + this.lightPoint.copy(lightPoint); + } + + override alternativa3d function draw(camera:Camera3D, skin:Skin, length:uint, points:Array):void { + var poly:PolyPrimitive = skin.primitive; + center.reset(); + for (var i:int = 0; i < poly.num; i++) { + center.add(poly.points[i]); + } + center.multiply(1/poly.num); + normal.difference(lightPoint, center); + normal.normalize(); + var c:uint = _color; + var k:Number = 0.5*(1 + normal.dot(poly.face.globalNormal)); + _color = ColorUtils.multiply(_color, k); + super.draw(camera, skin, length, points); + _color = c; + } + + override public function clone():Material { + return new CustomFillMaterial(lightPoint, color, alpha, blendMode, wireThickness, wireColor); + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/prop/Flag.as b/src/alternativa/editor/prop/Flag.as new file mode 100644 index 0000000..aeee25e --- /dev/null +++ b/src/alternativa/editor/prop/Flag.as @@ -0,0 +1,52 @@ +package alternativa.editor.prop { + import alternativa.editor.scene.EditorScene; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.materials.TextureMaterial; + + import flash.geom.Point; + + /** + * + */ + public class Flag extends Prop { + + /** + * @param object + * @param library + * @param group + * @param needCalculate + */ + public function Flag(object:Object3D, library:String, group:String, needCalculate:Boolean=true) { + super(object, library, group, needCalculate); + type = Prop.FLAG; + } + + /** + * + */ + override public function calculate():void { + distancesX = new Point(-EditorScene.hBase, EditorScene.hBase); + distancesY = new Point(-EditorScene.hBase, EditorScene.hBase); + distancesZ = new Point(0, EditorScene.vBase); + } + + /** + * + */ + override public function clone():Object3D { + var copyObject:Mesh = _object.clone() as Mesh; + copyObject.cloneMaterialToAllSurfaces(_material as TextureMaterial); + // Создаем проп + var copy:Flag = new Flag(copyObject, _library, _group, false); + // Копируем свойства + copy.distancesX = distancesX.clone(); + copy.distancesY = distancesY.clone(); + copy.distancesZ = distancesZ.clone(); + copy._multi = _multi; + copy.name = name; + return copy; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/prop/Prop.as b/src/alternativa/editor/prop/Prop.as new file mode 100644 index 0000000..e131e8b --- /dev/null +++ b/src/alternativa/editor/prop/Prop.as @@ -0,0 +1,373 @@ +package alternativa.editor.prop { + + import alternativa.editor.scene.EditorScene; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.events.MouseEvent3D; + import alternativa.engine3d.materials.Material; + import alternativa.engine3d.materials.SurfaceMaterial; + import alternativa.engine3d.materials.TextureMaterial; + import alternativa.types.Map; + import alternativa.types.Point3D; + import alternativa.types.Texture; + import alternativa.utils.MathUtils; + + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.display.BlendMode; + import flash.geom.Matrix; + import flash.geom.Point; + + /** + * + * @author danilova + */ + public class Prop extends Object3D { + + public static const TILE:int = 1; + public static const SPAWN:int = 2; + public static const BONUS:int = 3; + public static const FLAG:int = 4; + + public var type:int = BONUS; + + // Объект на сцене + protected var _object:Object3D; + // Группа + protected var _group:String; + // Библиотека + protected var _library:String; + // Расстояния от центра до крайних вершин по оси X + public var distancesX:Point; + // Расстояния от центра до крайних вершин по оси Y + public var distancesY:Point; + // Расстояния от центра до крайних вершин по оси Z + public var distancesZ:Point; + // Индикатор многоячеечности + protected var _multi:Boolean = false; + // Индикатор занесенности на карту + public var free:Boolean = true; + // Исходный материал + protected var _material:Material; + // Битмапдата текстуры исходного материала + public var bitmapData:BitmapData; + // Битмапдата выделенного пропа + protected var _selectBitmapData:BitmapData; + // + public var icon:Bitmap; + // + protected var _selected:Boolean = false; + // + private var matrix:Matrix = new Matrix(); + + + [Embed (source = "red_cursor.jpg")] private static var redClass:Class; + private static const redBmp:BitmapData = new redClass().bitmapData; + + public function Prop(object:Object3D, library:String, group:String, needCalculate:Boolean=true) { + + super(object.name); + addChild(object); + + _object = object; + _object.addEventListener(MouseEvent3D.MOUSE_DOWN, onMouseDown); + _library = library; + _group = group; + + initBitmapData(); + + if (needCalculate) { + calculate(); + } + + } + + /** + * + */ + private function onMouseDown(e:MouseEvent3D):void { + e.object = this; + } + + /** + * + */ + protected function initBitmapData():void { + _material = (_object as Mesh).surfaces.peek().material; + bitmapData = (_material as TextureMaterial).texture.bitmapData; + + } + + /** + * Расчет расстояний от центра по всем осям. + */ + public function calculate():void { + + var vertices:Array = (_object as Mesh).vertices.toArray(true); + var maxZ:Number = 0; + var maxY:Number = 0; + var maxX:Number = 0; + + var z1:Number = 0; + var z2:Number = 0; + var y1:Number = 0; + var y2:Number = 0; + var x1:Number = 0; + var x2:Number = 0; + var len:int = vertices.length; + for (var i:int = 0; i < len; i++) { + var vertex1:Point3D = vertices[i].coords; + if (scene) { + vertex1 = localToGlobal(vertex1); + } + for (var j:int = i+1; j < len; j++) { + var vertex2:Point3D = vertices[j].coords; + if (scene) { + vertex2 = localToGlobal(vertex2); + } + var dx:Number = (vertex1.x - vertex2.x); + var dy:Number = (vertex1.y - vertex2.y); + var dz:Number = (vertex1.z - vertex2.z); + var distanceX:Number = dx*dx; + var distanceY:Number = dy*dy; + var distanceZ:Number = dz*dz; + + if (distanceX > maxX) { + maxX = distanceX; + x1 = vertex1.x; + x2 = vertex2.x; + } + if (distanceY > maxY) { + maxY = distanceY; + y1 = vertex1.y; + y2 = vertex2.y; + } + if (distanceZ > maxZ) { + maxZ = distanceZ; + z1 = vertex1.z; + z2 = vertex2.z; + } + } + } + + distancesX = calcDistance(x, x1, x2, EditorScene.hBase); + distancesY = calcDistance(y, y1, y2, EditorScene.hBase); + distancesZ = calcDistance(z, z1, z2, EditorScene.vBase); + + if (Math.abs(int(x2) - int(x1))/EditorScene.hBase2 > 1 || + Math.abs(int(y1) - int(y2))/EditorScene.hBase2 > 1) { + _multi = true; + } + + } + + /** + * Расчет расстояния от точки центра до 1й и 2й точек, приведённых к сетке. + * @param centre точка центра + * @param value1 1я точка + * @param value2 2я точка + * @param base шаг сетки + * return расстояние от центра до меньшей точки со знаком "-", расстояние от центра до большей точки + */ + private function calcDistance(centre:Number, value1:Number, value2:Number, base:Number):Point { + + var distances:Point = new Point(); + + value2 = floorTo(value2, base); + value1 = floorTo(value1, base); + + if (value2 == 0 && value1 == 0) { + distances.x = 0; + distances.y = base; + } else { + if (value2 > value1) { + if (value1 == 0) { + distances.x = 0; + distances.y = value2 - centre; + } else { + distances.x = value1 - centre; + distances.y = value2 - centre; + } + } else { + if (value2 == 0) { + distances.x = 0; + distances.y = value1 - centre; + } else { + distances.x = value2 - centre; + distances.y = value1 - centre; + } + } + } + + return distances; + } + + /** + * Привязка к узлу сетки. + * @param value округляемое значение + * @param base шаг сетки + * @return округленное значение + */ + public static function floorTo(value:Number, base:Number):Number { + + return Math.floor((value + base/2)/base)*base; + + } + + /** + * Привязка к центру ячейки. + * @param value округляемое значение + * @param base шаг сетки + * @return округленное значение + */ + public static function roundTo(value:Number, base:Number):Number { + + return Math.round((value + base/2)/base)*base - base/2; + } + /** + * Выделить проп. + */ + public function select():void { + + _selectBitmapData = bitmapData.clone(); + matrix.a = bitmapData.width/redBmp.width; + matrix.d = matrix.a; + _selectBitmapData.draw(redBmp, matrix, null, BlendMode.MULTIPLY); + setMaterial(newSelectedMaterial); + _selected = true; + } + + /** + * Снять выделение. + */ + public function deselect():void { + + _selectBitmapData.dispose(); + setMaterial(_material); + _selected = false; + } + + /** + * Создает материал для выделения пропа. + * @return новый материал + */ + protected function get newSelectedMaterial():Material { + return new TextureMaterial(new Texture(_selectBitmapData)); + } + + /** + * Назначает пропу материал. + * @param material материал + */ + public function setMaterial(material:Material):void { + var sm:SurfaceMaterial = material as SurfaceMaterial; + (_object as Mesh).cloneMaterialToAllSurfaces(sm); + } + + /** + * + * @return + */ + public function get multi():Boolean { + return _multi; + } + + /** + * + * @return + */ + public function get library():String { + return _library; + } + + public function get selected():Boolean { + return _selected; + } + /** + * + * @return + */ + public function get group():String { + return _group; + } + + /** + * + * @return + */ + public function get vertices():Map { + return (_object as Mesh).vertices; + } + + /** + * + * @return + */ + public function get material():Material { + return _material; + } + + /** + * Поворот. + * @param plus флаг положительного поворота + */ + public function rotate(plus:Boolean):void { + + var point:Point; + + if (plus) { + point = new Point(distancesX.x, distancesX.y); + distancesX.x = distancesY.x; + distancesX.y = distancesY.y; + distancesY.x = -point.y; + distancesY.y = -point.x; + rotationZ -= MathUtils.DEG90; + } else { + point = new Point(distancesY.x, distancesY.y); + distancesY.x = distancesX.x; + distancesY.y = distancesX.y; + distancesX.x = -point.y; + distancesX.y = -point.x; + rotationZ += MathUtils.DEG90; + } + + } + + + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + + _object.addEventListener(type, listener); + } + + override public function clone():Object3D { + var copyObject:Mesh = _object.clone() as Mesh; + copyObject.cloneMaterialToAllSurfaces(_material as TextureMaterial); + var prop:Prop = new Prop(copyObject, _library, _group, false); + prop.distancesX = distancesX.clone(); + prop.distancesY = distancesY.clone(); + prop.distancesZ = distancesZ.clone(); + prop._multi = _multi; + prop.name = name; + return prop; + } + + /** + * Выравнивание по сетке. + */ + public function snapCoords():void { + + if (_multi) { + x = floorTo(x, EditorScene.hBase2); + y = floorTo(y, EditorScene.hBase2); + } else { + x = roundTo(x, EditorScene.hBase2); + y = roundTo(y, EditorScene.hBase2); + } + + z = floorTo(z, EditorScene.vBase); + } + + + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/prop/Spawn.as b/src/alternativa/editor/prop/Spawn.as new file mode 100644 index 0000000..129e31d --- /dev/null +++ b/src/alternativa/editor/prop/Spawn.as @@ -0,0 +1,48 @@ +package alternativa.editor.prop { + import alternativa.editor.scene.EditorScene; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.materials.TextureMaterial; + import alternativa.utils.MathUtils; + + import flash.geom.Point; + + public class Spawn extends Prop { + + public function Spawn(object:Object3D, library:String, group:String, needCalculate:Boolean=true) { + super(object, library, group, needCalculate); + type = Prop.SPAWN; + } + + override public function calculate():void { + + distancesX = new Point(-EditorScene.hBase, EditorScene.hBase); + distancesY = new Point(-EditorScene.hBase, EditorScene.hBase); + distancesZ = new Point(0, EditorScene.vBase); + } + + override public function rotate(plus:Boolean):void { + if (plus) { + rotationZ += MathUtils.DEG5; + } else { + rotationZ -= MathUtils.DEG5; + } + } + + override public function clone():Object3D { + + var copyObject:Mesh = _object.clone() as Mesh; + copyObject.cloneMaterialToAllSurfaces(_material as TextureMaterial); + // Создаем проп + var copy:Spawn = new Spawn(copyObject, _library, _group, false); + // Копируем свойства + copy.distancesX = distancesX.clone(); + copy.distancesY = distancesY.clone(); + copy.distancesZ = distancesZ.clone(); + copy._multi = _multi; + copy.name = name; + return copy; + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/prop/Tile.as b/src/alternativa/editor/prop/Tile.as new file mode 100644 index 0000000..d94151f --- /dev/null +++ b/src/alternativa/editor/prop/Tile.as @@ -0,0 +1,142 @@ +package alternativa.editor.prop { + + import alternativa.engine3d.alternativa3d; + import alternativa.engine3d.core.Mesh; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.materials.TextureMaterial; + import alternativa.types.Map; + import alternativa.types.Point3D; + import alternativa.types.Set; + import alternativa.types.Texture; + + import flash.display.BitmapData; + import flash.geom.Matrix; + + use namespace alternativa3d; + + /** + * @author danilova + */ + public class Tile extends Prop { + + private var collisionMaterial:CustomFillMaterial; + + private var _isMirror:Boolean = false; + + private var collisionBoxes:Set; + // + public var bitmaps:Map; + // + protected var _textureName:String = ""; + + public function Tile(object:Object3D, library:String, group:String, needCalculate:Boolean = true) { + super(object, library, group, needCalculate); + type = Prop.TILE; + collisionBoxes = new Set(); + // Collision boxes + for (var child:* in object.children) { + var box:Mesh = child as Mesh; + box.cloneMaterialToAllSurfaces(null); + if (box.name.substr(0, 3) != "occ") { + collisionBoxes.add(box); + } + } + collisionMaterial = new CustomFillMaterial(new Point3D(-1e10, -0.7e10, 0.4e10), 0xFF7F7F); + } + + + /** + * Показать коллижн-боксы. + */ + public function showCollisionBoxes():void { + + for (var child:* in collisionBoxes) { + var box:Mesh = child as Mesh; + box.cloneMaterialToAllSurfaces(collisionMaterial); + } + + setMaterial(null); + + } + + /** + * Скрыть коллижн-боксы. + */ + public function hideCollisionBoxes():void { + + for (var child:* in collisionBoxes) { + var box:Mesh = child as Mesh; + box.cloneMaterialToAllSurfaces(null); + } + + setMaterial(_material); + + } + + public function get collisionGeometry():Set { + return collisionBoxes; + } + + public function get textureName():String { + return _textureName; + } + + public function set textureName(value:String):void { + _textureName = value; + + bitmapData = _isMirror ? getMirrorBitmapData(bitmaps[value]) : bitmaps[value]; + _material = new TextureMaterial(new Texture(bitmapData)); + if (_selected) { + _selectBitmapData.dispose(); + select(); + } else { + setMaterial(_material); + } + } + + + private function getMirrorBitmapData(bmd:BitmapData):BitmapData { + + var mirrorBmd:BitmapData = new BitmapData(bmd.width, bmd.height); + mirrorBmd.draw(bmd, new Matrix(-1, 0, 0, 1, bmd.width, 0 )); + return mirrorBmd; + } + + public function mirrorTexture():void { + + _isMirror = !_isMirror; + + bitmapData = getMirrorBitmapData(bitmapData); + (_material as TextureMaterial).texture = new Texture(bitmapData); + if (selected) { + _selectBitmapData.dispose(); + select(); + } else { + setMaterial(_material); + } + } + + public function get isMirror():Boolean { + return _isMirror; + } + + override public function clone():Object3D { + + var copyObject:Mesh = _object.clone() as Mesh; + copyObject.cloneMaterialToAllSurfaces(_material as TextureMaterial); + // Создаем проп + var copy:Tile = new Tile(copyObject, _library, _group, false); + // Копируем свойства + copy.distancesX = distancesX.clone(); + copy.distancesY = distancesY.clone(); + copy.distancesZ = distancesZ.clone(); + copy._multi = _multi; + copy.name = name; + copy.bitmaps = bitmaps; + copy._textureName = _textureName; + return copy; + } + + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/prop/TileSprite3D.as b/src/alternativa/editor/prop/TileSprite3D.as new file mode 100644 index 0000000..6cd5a0d --- /dev/null +++ b/src/alternativa/editor/prop/TileSprite3D.as @@ -0,0 +1,74 @@ +package alternativa.editor.prop { + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.core.Sprite3D; + import alternativa.engine3d.core.Vertex; + import alternativa.engine3d.materials.Material; + import alternativa.engine3d.materials.SpriteTextureMaterial; + import alternativa.types.Map; + import alternativa.types.Texture; + + import flash.geom.Point; + + public class TileSprite3D extends Tile { + private var spriteTextureMaterial:SpriteTextureMaterial; + + public function TileSprite3D(object:Sprite3D, library:String, group:String, needCalculate:Boolean=true) { + super(object, library, group, needCalculate); + } + + public function get scale():Number { + return (_object as Sprite3D).scaleX; + } + + override public function calculate():void { + distancesX = new Point(); + distancesY = new Point(); + distancesZ = new Point(); + _multi = false; + } + + override public function setMaterial(material:Material):void { + var spriteMaterial:SpriteTextureMaterial = material as SpriteTextureMaterial; + if (spriteMaterial) { + spriteMaterial.originX = spriteTextureMaterial.originX; + spriteMaterial.originY = spriteTextureMaterial.originY; + } + (_object as Sprite3D).material = spriteMaterial; + + } + + override protected function initBitmapData():void { + _material = (_object as Sprite3D).material; + spriteTextureMaterial = _material as SpriteTextureMaterial; + bitmapData = spriteTextureMaterial.texture.bitmapData; + } + + override public function get vertices():Map { + var vertex:Vertex = new Vertex(0, 0, 0); + var map:Map = new Map(); + map.add("1", vertex); + return map; + } + + override protected function get newSelectedMaterial():Material { + var material:SpriteTextureMaterial = new SpriteTextureMaterial(new Texture(_selectBitmapData)); + return material; + } + + override public function clone():Object3D { + + var copyObject:Sprite3D = _object.clone() as Sprite3D; + copyObject.material = _material.clone() as SpriteTextureMaterial; + // Создаем проп + var copy:TileSprite3D = new TileSprite3D(copyObject, _library, _group, false); + // Копируем свойства + copy.distancesX = distancesX.clone(); + copy.distancesY = distancesY.clone(); + copy.distancesZ = distancesZ.clone(); + copy._multi = _multi; + copy.name = name; + copy.bitmaps = bitmaps; + return copy; + } + } +} \ No newline at end of file diff --git a/src/alternativa/editor/scene/CursorScene.as b/src/alternativa/editor/scene/CursorScene.as new file mode 100644 index 0000000..7366295 --- /dev/null +++ b/src/alternativa/editor/scene/CursorScene.as @@ -0,0 +1,321 @@ +package alternativa.editor.scene { + + import alternativa.editor.prop.CustomFillMaterial; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.TileSprite3D; + import alternativa.engine3d.controllers.WalkController; + import alternativa.engine3d.core.Camera3D; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.display.View; + import alternativa.engine3d.materials.Material; + import alternativa.engine3d.materials.SpriteTextureMaterial; + import alternativa.types.Matrix3D; + import alternativa.types.Point3D; + import alternativa.types.Set; + import alternativa.types.Texture; + import alternativa.utils.MathUtils; + + import flash.display.BitmapData; + import flash.display.BlendMode; + import flash.display.DisplayObject; + import flash.display.Graphics; + import flash.display.Shape; + import flash.geom.Matrix; + import flash.geom.Point; + + public class CursorScene extends EditorScene { + // Курсорный проп + protected var _object:Prop; + private var redMaterial:Material; + private var greenMaterial:Material; + private var material:Material; + // Индикатор свободного состояния ячейки, в которой находится курсор + private var _freeState:Boolean = true; + // Контроллер камеры + public var cameraController:WalkController; + // Контроллер для контейнера камеры + public var containerController:WalkController; + // Контейнер для камеры + public var container:Object3D; + // Индикатор вертикального перемещения + protected var verticalMoving:Boolean = false; + // stage + private var eventSourceObject:DisplayObject; + // Индикатор режима snap + protected var _snapMode:Boolean = true; + // + private var matrix:Matrix = new Matrix(); + + private var axisIndicatorOverlay:Shape; + private var axisIndicatorSize:Number = 30; + + [Embed (source = "red_cursor.jpg")] private static var redClass:Class; + private static const redBmp:BitmapData = new redClass().bitmapData; + [Embed (source = "green_cursor.jpg")] private static var greenClass:Class; + private static const greenBmp:BitmapData = new greenClass().bitmapData; + + public function CursorScene(eventSourceObject:DisplayObject) { + super(); + this.eventSourceObject = eventSourceObject; + initControllers(); + view.addChild(axisIndicatorOverlay = new Shape()); + } + + /** + * + */ + private function initControllers():void { + // Подключение контроллера камеры + cameraController = new WalkController(eventSourceObject); + cameraController.object = camera; + cameraController.speedMultiplier = 4; + cameraController.speedThreshold = 1; + cameraController.mouseEnabled = false; + + cameraController.coords = new Point3D(250, -7800, 4670); + + // Контейнер + container = new Object3D(); + root.addChild(container); + // Контроллер контейнера + containerController = new WalkController(eventSourceObject); + containerController.object = container; + containerController.mouseEnabled = false; + container.addChild(camera); + } + + /** + * Установка курсора. + * @param value + * + */ + public function set object(value:Prop):void { + var point3D:Point3D; + if (_object) { + point3D = _object.coords; + if (_visible) { + root.removeChild(_object); + } + } + _object = value; + material = _object.material.clone(); + material.alpha = 0.5; + + if (point3D) { + _object.coords = point3D; + } + if (_visible) { + root.addChild(_object); + } + if (_snapMode) { + snapObject(); + } + + } + + /** + * + * @return + */ + public function get object():Prop { + return _object; + } + + /** + * + * @param value + */ + public function set snapMode(value:Boolean):void { + if (_snapMode != value && _object) { + + _snapMode = value; + if (value) { + snapObject(); + } else { + _object.setMaterial(material); + } + + } + } + /** + * + * @return + */ + public function get snapMode():Boolean { + return _snapMode; + } + + /** + * + */ + private function snapObject():void { + createMaterials(); + _object.snapCoords(); + + } + + /** + * Cоздание зеленого и красного материалов. + */ + private function createMaterials():void { + + var redBmd:BitmapData = _object.bitmapData.clone(); + var greenBmd:BitmapData = redBmd.clone(); + matrix.a = redBmd.width/redBmp.width; + matrix.d = matrix.a; + redBmd.draw(redBmp, matrix, null, BlendMode.HARDLIGHT); + greenBmd.draw(greenBmp, matrix, null, BlendMode.HARDLIGHT); + + if (_object is TileSprite3D) { + greenMaterial = new SpriteTextureMaterial(new Texture(greenBmd)); + redMaterial = new SpriteTextureMaterial(new Texture(redBmd)); + + } else { +// greenMaterial = new TextureMaterial(new Texture(greenBmd)); +// redMaterial = new TextureMaterial(new Texture(redBmd)); + greenMaterial = new CustomFillMaterial(new Point3D(-1e10, -0.7e10, 0.4e10), 0x00FF00); + redMaterial = new CustomFillMaterial(new Point3D(-1e10, -0.7e10, 0.4e10), 0xFF0000); + } + + redMaterial.alpha = greenMaterial.alpha = 0.8; + + updateMaterial(); + } + + + /** + * Перемещение курсора мышью. + */ + public function moveCursorByMouse():void { + if (_object) { + var point:Point3D = view.projectViewPointToPlane(new Point(view.mouseX, view.mouseY), znormal, _object.z); + _object.x = point.x; + _object.y = point.y; + if (_snapMode) { + _object.snapCoords(); + } + updateMaterial(); + + } + } + + + /** + * + * @return + */ + public function get freeState():Boolean { + return _freeState; + } + + + /** + * Инициализация основной сцены. + */ + override protected function initScene():void { + root = new Object3D(); + + // Добавление камеры и области вывода + camera = new Camera3D(); + camera.rotationX = -MathUtils.DEG90 - MathUtils.DEG30; + + view = new View(camera); + view.interactive = false; + view.mouseEnabled = false; + view.mouseChildren = false; + + view.graphics.beginFill(0xFFFFFF); + view.graphics.drawRect(0, 0, 1, 1); + view.graphics.endFill(); + } + + /** + * + */ + public function updateMaterial():void { + if (_object && _snapMode) { + if (occupyMap.isConflict(_object)) { + _freeState = false; + _object.setMaterial(redMaterial); + } else { + _freeState = true; + _object.setMaterial(greenMaterial); + } + } + } + + public function clear():void { + if (_object) { + if (root.getChildByName(_object.name)) { + root.removeChild(_object); + } + _object = null; + _visible = false; + + } + } + + /** + * Рисование координатных осей. + * @param matrix + * + */ + public function drawAxis(matrix:Matrix3D):void { + var gfx:Graphics = axisIndicatorOverlay.graphics; + var centreX:Number = axisIndicatorSize; + var centreY:Number = 0; + gfx.clear(); + gfx.lineStyle(2, 0xFF0000); + gfx.moveTo(centreX, centreY); + gfx.lineTo(matrix.a*axisIndicatorSize + centreX, matrix.b*axisIndicatorSize + centreY); + gfx.lineStyle(2, 0x00FF00); + gfx.moveTo(centreX, centreY); + gfx.lineTo(matrix.e*axisIndicatorSize + centreX, matrix.f*axisIndicatorSize + centreY); + gfx.lineStyle(2, 0x0000FF); + gfx.moveTo(centreX, centreY); + gfx.lineTo(matrix.i*axisIndicatorSize + centreX, matrix.j*axisIndicatorSize + centreY); + } + + + private var _visible:Boolean = false; + + public function set visible(value:Boolean):void { + + if (value != _visible) { + _visible = value; + if (_object) { + if (_visible) { + root.addChild(_object); + updateMaterial(); + } else { + root.removeChild(_object); + } + } + } + } + + public function get visible():Boolean { + return _visible; + + } + + override public function moveByArrows(keyCode:uint, sector:int):void { + move(_object, keyCode, sector); + updateMaterial(); + } + + override public function viewResize(viewWidth:Number, viewHeight:Number):void { + super.viewResize(viewWidth, viewHeight); + axisIndicatorOverlay.y = view.height - axisIndicatorSize; + } + + override public function rotateProps(plus:Boolean, props:Set = null):void { + + props = new Set(); + props.add(_object); + super.rotateProps(plus, props); + } + + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/scene/EditorScene.as b/src/alternativa/editor/scene/EditorScene.as new file mode 100644 index 0000000..70b17df --- /dev/null +++ b/src/alternativa/editor/scene/EditorScene.as @@ -0,0 +1,248 @@ +package alternativa.editor.scene { + + import alternativa.editor.prop.Prop; + import alternativa.engine3d.core.Camera3D; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.core.Scene3D; + import alternativa.engine3d.display.View; + import alternativa.types.Point3D; + import alternativa.types.Set; + import alternativa.utils.KeyboardUtils; + import alternativa.utils.MathUtils; + + import flash.geom.Point; + + public class EditorScene extends Scene3D { + public var camera:Camera3D; + public var view:View; + // Карта занятых ячеек + public var occupyMap:OccupyMap; + + public static const hBase:Number = 250; + public static const hBase2:Number = 2*hBase; + public static const vBase:Number = 300; + + protected var znormal:Point3D = new Point3D(0, 0, 1); + protected var ynormal:Point3D = new Point3D(0, 1, 0); + protected var xnormal:Point3D = new Point3D(1, 0, 0); + + /** + * + */ + public function EditorScene() { + super(); + // Инициализация основной сцены + initScene(); + } + + /** + * Корректировка размеров view. + * @param viewWidth ширина + * @param viewHeight высота + * + */ + public function viewResize(viewWidth:Number, viewHeight:Number):void { + + view.width = viewWidth; + view.height = viewHeight; + calculate(); + + } + + /** + * Инициализация основной сцены. + */ + protected function initScene():void { + root = new Object3D(); + + // Добавление камеры и области вывода + camera = new Camera3D(); + camera.rotationX = -MathUtils.DEG90 - MathUtils.DEG30; + camera.coords = new Point3D(250, -7800, 4670); + root.addChild(camera); + + view = new View(camera); + view.interactive = true; + view.buttonMode = true; + view.useHandCursor = false; + + view.graphics.beginFill(0xFFFFFF); + view.graphics.drawRect(0, 0, 1, 1); + view.graphics.endFill(); + } + + /** + * Переопределяется наследниками. + * @param keyCode + * @param sector + */ + public function moveByArrows(keyCode:uint, sector:int):void { + + } + + protected function move(prop:Prop, keyCode:uint, sector:int):void { + + if (prop) { + switch (keyCode) { + case KeyboardUtils.UP: + + switch (sector) { + case 1: + prop.x -= hBase2; + break; + case 4: + prop.y += hBase2; + break; + case 3: + prop.x += hBase2; + break; + case 2: + prop.y -= hBase2; + break; + } + break; + case KeyboardUtils.DOWN: + switch (sector) { + case 1: + prop.x += hBase2; + break; + case 4: + prop.y -= hBase2; + break; + case 3: + prop.x -= hBase2; + break; + case 2: + prop.y += hBase2; + break; + } + + break; + case KeyboardUtils.LEFT: + + switch (sector) { + case 1: + prop.y -= hBase2; + break; + case 4: + prop.x -= hBase2; + break; + case 3: + prop.y += hBase2; + break; + case 2: + prop.x += hBase2; + break; + } + break; + case KeyboardUtils.RIGHT: + switch (sector) { + case 1: + prop.y += hBase2; + break; + case 4: + prop.x += hBase2; + break; + case 3: + prop.y -= hBase2; + break; + case 2: + prop.x -= hBase2; + break; + } + break; + + } + + } + } + + /** + * Вычисляет центр группы пропов. + * @param props + * @return + */ + public function getCentrePropsGroup(props:Set = null):Point { + + var minX:Number = Number.POSITIVE_INFINITY; + var maxX:Number = Number.NEGATIVE_INFINITY; + var minY:Number = Number.POSITIVE_INFINITY; + var maxY:Number = Number.NEGATIVE_INFINITY; + // Среднее арифметическое центров + var averageX:Number = 0; + var averageY:Number = 0; + + for (var p:* in props) { + var prop:Prop = p; + var left:Number = prop.distancesX.x + prop.x; + var right:Number = prop.distancesX.y + prop.x; + if (left < minX) { + minX = left; + } + if (right > maxX) { + maxX = right; + } + + left = prop.distancesY.x + prop.y; + right = prop.distancesY.y + prop.y; + if (left < minY) { + minY = left; + } + if (right > maxY) { + maxY = right; + } + averageX += prop.x; + averageY += prop.y; + } + + // Проверяем протяженность по x и по y на четность + var modX:Number = (maxX - minX)/EditorScene.hBase2 % 2; + if ( modX != ((maxY - minY)/EditorScene.hBase2 % 2)) { + + if (modX != 0) { + // Если протяженность по x нечетная, прибавим ширину ячейки со стороны, ближайшей к центру + averageX = averageX/props.length; + if (Math.abs(averageX - maxX) < Math.abs(averageX - minX)) { + maxX += EditorScene.hBase2; + } else { + minX -= EditorScene.hBase2; + } + } else { + averageY = averageY/props.length; + if (Math.abs(averageY - maxY) < Math.abs(averageY - minY)) { + maxY += EditorScene.hBase2; + } else { + minY -= EditorScene.hBase2; + } + } + } + return new Point((maxX + minX)/2, (maxY + minY)/2); + } + /** + * Поворот пропа. + * @param plus флаг положительного поворота + * @param prop + * + */ + public function rotateProps(plus:Boolean, props:Set = null):void { + + var centre:Point = getCentrePropsGroup(props); + for (var p:* in props) { + var prop:Prop = p; + var x:Number = prop.x; + var y:Number = prop.y; + if (plus) { + prop.x = y + centre.x - centre.y; + prop.y = -x + centre.y + centre.x; + } else { + prop.x = -y + centre.x + centre.y; + prop.y = x + centre.y - centre.x; + } + prop.rotate(plus); + } + + + } + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/scene/MainScene.as b/src/alternativa/editor/scene/MainScene.as new file mode 100644 index 0000000..94bd80f --- /dev/null +++ b/src/alternativa/editor/scene/MainScene.as @@ -0,0 +1,219 @@ +package alternativa.editor.scene { + import alternativa.editor.eventjournal.EventJournal; + import alternativa.editor.eventjournal.EventJournalItem; + import alternativa.editor.export.BinaryExporter; + import alternativa.editor.export.FileExporter; + import alternativa.editor.export.TanksXmlExporter; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Tile; + import alternativa.engine3d.core.Object3D; + import alternativa.engine3d.materials.WireMaterial; + import alternativa.engine3d.primitives.Plane; + import alternativa.types.Point3D; + import alternativa.types.Set; + + import flash.filesystem.FileStream; + + /** + * Главная сцена. + * @author danilova + */ + public class MainScene extends PropsScene { + + public static const EXPORT_BINARY:int = 1; + public static const EXPORT_XML:int = 2; + + // Сетка + private var grid:Plane; + + private var exporters:Object = {}; + + /** + * + */ + public function MainScene() { + super(); + + // Сетка + var count:int = 15; + var width:Number = count*hBase2; + grid = new Plane(width, width, count, count); + grid.cloneMaterialToAllSurfaces(new WireMaterial()); + root.addChild(grid); + grid.x = hBase; + grid.y = hBase; + grid.mouseEnabled = false; + + exporters[EXPORT_BINARY] = new BinaryExporter(root); + exporters[EXPORT_XML] = new TanksXmlExporter(root); + } + + /** + * + * @param value + */ + override public function set root(value:Object3D):void { + super.root = value; + for each (var exp:FileExporter in exporters) exp.root = value; + } + + /** + * + * @param type + * @param stream + */ + public function export(type:int, stream:FileStream):void { + (exporters[type] as FileExporter).exportToFileStream(stream); + _changed = false; + } + + /** + * Перемещение пропов. + * @param props перемещаемые пропы + * @param delta смещение + */ + public function moveProps(props:Set, delta:Point3D):void { + + for (var p:* in props) { + var prop:Prop = p; + occupyMap.free(prop); + prop.x -= delta.x; + prop.y -= delta.y; + prop.z -= delta.z; + if (snapMode) { + prop.snapCoords(); + occupyMap.occupy(prop); + } + } + } + + /** + * Отмена действия. + * @param e отменяемое событие + */ + public function undo(e:EventJournalItem):void { + var props:Set = e.props; + var p:*; + + switch (e.operation) { + case EventJournal.ADD: + deleteProps(props); + break; + case EventJournal.COPY: + deleteProps(props); + break; + case EventJournal.DELETE: + for (p in props) { + var prop:Prop = p; + prop.deselect(); + addProp(prop, prop.coords, prop.rotationZ, false); + } + break; + case EventJournal.MOVE: + moveProps(props, e.oldState); + (e.oldState as Point3D).multiply(-1); + break; + case EventJournal.ROTATE: + rotateProps(e.oldState, props); + e.oldState = !e.oldState; + break; + case EventJournal.CHANGE_TEXTURE: + break; + } + } + + /** + * Возврат действия. + * @param e + */ + public function redo(e:EventJournalItem):void { + var props:Set = e.props; + var prop:Prop; + var p:*; + switch (e.operation) { + case EventJournal.ADD: + prop = props.peek(); + addProp(prop, prop.coords, prop.rotationZ, false); + break; + case EventJournal.COPY: + for (p in props) { + prop = p; + addProp(prop, prop.coords, prop.rotationZ, false); + } + break; + case EventJournal.DELETE: + deleteProps(props); + break; + case EventJournal.MOVE: + moveProps(props, e.oldState); + (e.oldState as Point3D).multiply(-1); + break; + case EventJournal.ROTATE: + rotateProps(e.oldState, props); + e.oldState = !e.oldState; + break; + case EventJournal.CHANGE_TEXTURE: + break; + } + } + + + /** + * Синхронизация с камерой главной сцены + * @param cameraCoords + * @param rotationX + * @param rotationY + * @param rotationZ + * + */ + public function synchronize(cameraCoords:Point3D, rotationX:Number, rotationY:Number, rotationZ:Number):void { + + camera.coords = cameraCoords; + camera.rotationX = rotationX; + camera.rotationY = rotationY; + camera.rotationZ = rotationZ; + } + + /** + * + */ + public function showCollisionBoxes():void { + + for (var child:* in root.children) { + var tile:Tile = child as Tile; + if (tile) { + tile.showCollisionBoxes(); + } + } + } + + /** + * + */ + public function hideCollisionBoxes():void { + + for (var child:* in root.children) { + var tile:Tile = child as Tile; + if (tile) { + tile.hideCollisionBoxes(); + } + } + } + + /** + * + */ + public function showGrid():void { + root.addChild(grid); + } + + /** + * + */ + public function hideGrid():void { + root.removeChild(grid); + } + + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/scene/OccupyMap.as b/src/alternativa/editor/scene/OccupyMap.as new file mode 100644 index 0000000..00d83b1 --- /dev/null +++ b/src/alternativa/editor/scene/OccupyMap.as @@ -0,0 +1,222 @@ +package alternativa.editor.scene { + + import alternativa.editor.prop.Prop; + import alternativa.types.Map; + import alternativa.types.Set; + + public class OccupyMap { + private var map:Map; + + public function OccupyMap() { + + map = new Map(); + } + + public function occupy(prop:Prop):void { + if (prop.free) { + var z1:Number = prop.distancesZ.x + prop.z; + var z2:Number = prop.distancesZ.y + prop.z; + + var mapZ:Map = new Map(); + for (var i:Number = z1; i < z2; i += EditorScene.vBase) { + mapZ.add(i, [prop]); + } + + var y1:Number = prop.distancesY.x + prop.y; + var y2:Number = prop.distancesY.y + prop.y; + + var setY:Set = new Set(); + for (i = y1; i < y2; i += EditorScene.hBase) { + setY.add(i); + } + + var x1:Number = prop.distancesX.x + prop.x; + var x2:Number = prop.distancesX.y + prop.x; + + for (var x:Number = x1; x < x2; x += EditorScene.hBase) { + for (var y:Number = y1; y < y2; y += EditorScene.hBase) { + for (var z:Number = z1; z < z2; z += EditorScene.vBase) { + addElement(x, y, z, prop); + } + } + + } + prop.free = false; + } + + } + + public function addElement(x:Number, y:Number, z:Number, prop:Prop):void { + + var mapY:Map = map[x]; + if (!mapY) { + mapY = new Map(); + map[x] = mapY; + } + var mapZ:Map = mapY[y]; + if (!mapZ) { + mapZ = new Map(); + mapY[y] = mapZ; + } + var props:Array = mapZ[z]; + if (!props) { + mapZ.add(z, [prop]); + } else { + props.push(prop); + } + + + } + + public function free(prop:Prop):void { + if (!prop.free) { + var z1:Number = prop.distancesZ.x + prop.z; + var z2:Number = prop.distancesZ.y + prop.z; + + var setZ:Set = new Set(); + for (var i:Number = z1; i < z2; i += EditorScene.vBase) { + setZ.add(i); + } + + var y1:Number = prop.distancesY.x + prop.y; + var y2:Number = prop.distancesY.y + prop.y; + + var setY:Set = new Set(); + for (i = y1; i < y2; i += EditorScene.hBase) { + setY.add(i); + } + + var x1:Number = prop.distancesX.x + prop.x; + var x2:Number = prop.distancesX.y + prop.x; + + for (i = x1; i < x2; i += EditorScene.hBase) { + var mapY:Map = map[i]; + if (mapY) { + for (var cy:* in setY) { + var y:Number = cy; + var mapZ:Map = mapY[y]; + if (mapZ) { + for (var cz:* in setZ) { + var z:Number = cz; + var arr:Array = mapZ[z]; + if (arr) { + var index:int = arr.indexOf(prop); + if (index > -1) { + arr.splice(index, 1); + if (arr.length == 0) { + mapZ.remove(z); + } + } + } + } + if (mapZ.length == 0) { + mapY.remove(y); + } + } + + } + + if (mapY.length == 0) { + map.remove(i); + } + } + } + prop.free = true; + } + + } + + public function isOccupy(x:Number, y:Number, z:Number):Array { + + var mapY:Map = map[x]; + if (mapY) { + var mapZ:Map = mapY[y]; + if (mapZ) { + if (mapZ.hasKey(z)) { + return mapZ[z]; + } + } + } + + return null; + } + + + public function clear():void { + map.clear(); + } + + public function isConflict(prop:Prop):Boolean { + var x1:Number = prop.distancesX.x + prop.x; + var x2:Number = prop.distancesX.y + prop.x; + for (var i:Number = x1; i < x2; i += EditorScene.hBase) { + var y1:Number = prop.distancesY.x + prop.y; + var y2:Number = prop.distancesY.y + prop.y; + for (var j:Number = y1; j < y2; j += EditorScene.hBase) { + var z1:Number = prop.distancesZ.x + prop.z; + var z2:Number = prop.distancesZ.y + prop.z; + for (var k:Number = z1; k < z2; k += EditorScene.vBase) { + var props:Array = isOccupy(i, j, k); + + if (props && (props.indexOf(prop) == -1 || props.length > 1)) { + return true; + } + } + } + } + + return false; + } + + public function isConflictGroup(prop:Prop):Boolean { + + var x1:Number = prop.distancesX.x + prop.x; + var x2:Number = prop.distancesX.y + prop.x; + for (var i:Number = x1; i < x2; i += EditorScene.hBase) { + var y1:Number = prop.distancesY.x + prop.y; + var y2:Number = prop.distancesY.y + prop.y; + for (var j:Number = y1; j < y2; j += EditorScene.hBase) { + var z1:Number = prop.distancesZ.x + prop.z; + var z2:Number = prop.distancesZ.y + prop.z; + for (var k:Number = z1; k < z2; k += EditorScene.vBase) { + var props:Array = isOccupy(i, j, k); + if (props) { + var len:int = props.length; + for (var p:int = 0; p < len; p++) { + var conflictProp:Prop = props[p]; + if (conflictProp != prop && conflictProp.group == prop.group) { +// trace('name', conflictProp.name, i, j, k); + return true; + } + } + } + } + } + } + + return false; + } + + public function getConflictProps():Set { + + var conflictProps:Set = new Set(); + for (var x:* in map) { + var mapY:Map = map[x]; + for (var y:* in mapY) { + var mapZ:Map = mapY[y]; + for (var z:* in mapZ) { + var props:Array = mapZ[z]; + if (props && props.length > 1) { + for (var i:int = 0; i < props.length; i++) { + conflictProps.add(props[i]); + } + } + } + } + } + return conflictProps; + } + + + } +} \ No newline at end of file diff --git a/src/alternativa/editor/scene/PropsScene.as b/src/alternativa/editor/scene/PropsScene.as new file mode 100644 index 0000000..946c3cf --- /dev/null +++ b/src/alternativa/editor/scene/PropsScene.as @@ -0,0 +1,700 @@ +package alternativa.editor.scene { + import alternativa.editor.prop.Bonus; + import alternativa.editor.prop.Prop; + import alternativa.editor.prop.Tile; + import alternativa.editor.prop.TileSprite3D; + import alternativa.engine3d.events.MouseEvent3D; + import alternativa.types.Map; + import alternativa.types.Point3D; + import alternativa.types.Set; + import alternativa.utils.MathUtils; + + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.events.Event; + import flash.geom.Point; + import flash.utils.getQualifiedClassName; + + import gui.events.PropListEvent; + + import mx.containers.HBox; + import mx.containers.Panel; + import mx.controls.CheckBox; + + /** + * Главная сцена. + * @author danilova + */ + public class PropsScene extends EditorScene { + + public var selectedProp:Prop; + // Выделенные пропы + public var selectedProps:Set; + // Индикатор нажатия на проп + public var propMouseDown:Boolean = false; + // Индикатор изменений на сцене + protected var _changed:Boolean = false; + // Индикатор режима выравнивания по сетке + public var snapMode:Boolean = true; + + private var _texturePanel:TexturePanel; + private var _propertyPanel:Panel; + private var bonusPanel:HBox; + private var checkTypeMap:Map; + + private var currentBitmaps:Map; + + protected var hideProps:Array = []; + + public var allowSelectingTypes:Set = new Set(); + + public function PropsScene() { + super(); + occupyMap = new OccupyMap(); + selectedProps = new Set(); + allowSelectingTypes.add("Tile"); + allowSelectingTypes.add("TileSprite3D"); + allowSelectingTypes.add("Spawn"); + allowSelectingTypes.add("Prop"); + allowSelectingTypes.add("Bonus"); + allowSelectingTypes.add("Flag"); + + + } + + public function get isTexturePanel():Boolean { + return (_texturePanel.visible && _texturePanel.selectedItem); + } + + /** + * @param value + */ + public function set propertyPanel(value:Panel):void { + _propertyPanel = value; + createBonusTypePanel(); + _texturePanel = new TexturePanel(); + _texturePanel.addEventListener(PropListEvent.SELECT, onTexturePanelSelect); + _propertyPanel.addChild(_texturePanel); + _texturePanel.visible = false; + _propertyPanel.addChild(bonusPanel); + } + + + /** + * + */ + public function createBonusTypePanel():void { + bonusPanel = new HBox(); + bonusPanel.percentWidth = 100; + bonusPanel.visible = false; + checkTypeMap = new Map(); + + var damage:CheckBox = new CheckBox(); + damage.label = "damageup"; + damage.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(damage); + checkTypeMap.add(damage.label, damage); + + var armor:CheckBox = new CheckBox(); + armor.label = "armorup"; + armor.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(armor); + checkTypeMap.add(armor.label, armor); + + var nitro:CheckBox = new CheckBox(); + nitro.label = "nitro"; + nitro.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(nitro); + checkTypeMap.add(nitro.label, nitro); + + var repkit:CheckBox = new CheckBox(); + repkit.label = "repkit"; + repkit.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(repkit); + checkTypeMap.add(repkit.label, repkit); + + var check:CheckBox = new CheckBox(); + check.label = "medkit"; + check.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(check); + checkTypeMap.add(check.label, check); + + check = new CheckBox(); + check.label = "money"; + check.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(check); + checkTypeMap.add(check.label, check); + + check = new CheckBox(); + check.label = "crystal"; + check.addEventListener(Event.CHANGE, onBonusTypeChange); + bonusPanel.addChild(check); + checkTypeMap.add(check.label, check); + + } + + public function get changed():Boolean { + return _changed; + } + + public function set changed(value:Boolean):void { + _changed = value; + } + + private function getClassName(qualifiedClassName:String):String { + + //alternativa.editor.prop:: + return qualifiedClassName.substr(25); + } + + private function isAllowClassName(prop:Prop):Boolean { + + return allowSelectingTypes.has(getClassName(getQualifiedClassName(prop))); + } + + /** + * + */ + public function getCameraSector():int { + + var sector:Number = camera.rotationZ/MathUtils.DEG90 % 4; + if ((sector >= -0.5 && sector <= 0.5) || (sector <= -3.5)) { + return 4; + } else if ((sector >= 0.5 && sector <= 1.5) + || (sector >= -3.5 && sector <= -2.5) ) { + return 1; + } else if ((sector >= 1.5 && sector <= 2.5) || + (sector >= -2.5 && sector <= -1.5)) { + return 2; + } else { + return 3; + } + + } + + /** + * Перемещение выделенных пропов. + * @param verticalMoving индикатор вертикального движения + */ + public function moveSelectedProps(verticalMoving:Boolean):void { + + if (selectedProp) { + var viewPoint:Point = new Point(view.mouseX, view.mouseY); + var point:Point3D; + var p:*; + + // Стираем с карты + for (p in selectedProps) { + occupyMap.free(p as Prop); + } + + var deltaX:Number = 0; + var deltaY:Number = 0; + var deltaZ:Number = 0; + + if (verticalMoving) { + var sector:Number = getCameraSector(); + + if (sector == 2 || sector == 4) { + point = view.projectViewPointToPlane(viewPoint, ynormal, selectedProp.y); + deltaX = point.x - selectedProp.x; + selectedProp.x = point.x; + + } else { + point = view.projectViewPointToPlane(viewPoint, xnormal, selectedProp.x); + deltaY = point.y - selectedProp.y; + selectedProp.y = point.y; + + } + deltaZ = point.z - selectedProp.z; + selectedProp.z = point.z; + + } else { + point = view.projectViewPointToPlane(viewPoint, znormal, selectedProp.z); + + deltaX = point.x - selectedProp.x; + deltaY = point.y - selectedProp.y; + + selectedProp.x = point.x; + selectedProp.y = point.y; + + } + // Смещаем все выделенные пропы + for (p in selectedProps) { + var prop:Prop = p; + if (prop != selectedProp) { + prop.x += deltaX; + prop.y += deltaY; + prop.z += deltaZ; + } + if (snapMode || (prop is Tile && !(prop is TileSprite3D))) { + prop.snapCoords(); + occupyMap.occupy(prop); + } + } + + } + } + + + + /** + * Перемещение пропа стрелками. + * @param prop проп + * @param keyCode код стрелки + * @param sector сектор, на который смотрит камера + */ + override public function moveByArrows(keyCode:uint, sector:int):void { + + for (var p:* in selectedProps) { + var prop:Prop = p; + occupyMap.free(prop); + move(prop, keyCode, sector); + if (snapMode) { + prop.snapCoords(); + occupyMap.occupy(prop); + } + } + + } + + /** + * Вертикальное перемещение. + * @param down + */ + public function verticalMove(down:Boolean):void { + var delta:Number = vBase; + if (down) { + delta = -delta; + } + + for (var p:* in selectedProps) { + var prop:Prop = p; + occupyMap.free(prop); + prop.z += delta; + if (snapMode) { + occupyMap.occupy(prop); + } + } + + } + + + /** + * Клик на проп. + */ + public function onPropMouseDown(e:MouseEvent3D):void { + if (!e.ctrlKey) { + var downProp:Prop = e.object as Prop; + if (isAllowClassName(downProp)) { + var selected:Boolean = downProp.selected; + if (e.shiftKey) { + if (e.altKey) { + if (selected) { + deselectProp(downProp); + } + } else { + if (!selected) { + selectProp(downProp); + } + } + } else { + + if (!selected) { + deselectProps(); + selectProp(downProp); + } else { + selectedProp = downProp; + } + } + + propMouseDown = true; + } + + } + + } + + private function onPropMouseOut(e:MouseEvent3D):void { + + view.useHandCursor = false; + } + + + private function onPropMouseOver(e:MouseEvent3D):void { + + view.useHandCursor = true; + } + + + /** + * Отменяет выделение пропов. + */ + public function deselectProps():void { + for (var p:* in selectedProps) { + (p as Prop).deselect(); + } + selectedProps.clear(); + selectedProp = null; + + bonusPanel.visible = false; + _texturePanel.visible = false; + + } + + public function deselectProp(prop:Prop):void { + + prop.deselect(); + selectedProps.remove(prop); + if (prop == selectedProp) { + selectedProp = null; + } + +// if (_texturePanel.visible && !noConflictBitmaps()) { +// _texturePanel.visible = false; +// } else + bonusPanel.visible = oneBonusSelected(); + _texturePanel.visible = !bonusPanel.visible && noConflictBitmaps(); + } + + /** + * Выделение пропа. + * @param prop + */ + public function selectProps(props:Set):void { + + deselectProps(); + + for (var p:* in props) { + var prop:Prop = p; + if (isAllowClassName(prop)) { + prop.select(); + selectedProps.add(prop); + selectedProp = prop; + } + + } + + showPropertyPanel(); + + } + + /** + * Выделить конфликтующие пропы. + */ + public function selectConflictProps():void { + selectProps(occupyMap.getConflictProps()); + } + + public function selectProp(prop:Prop):void { + if (isAllowClassName(prop)) { + prop.select(); + selectedProps.add(prop); + selectedProp = prop; + showPropertyPanel(); + } + } + + public function getPropsUnderRect(point:Point, dx:Number, dy:Number, select:Boolean):Set { + var result:Set = new Set(); + for (var child:* in root.children) { + var prop:Prop = child as Prop; + if (prop && isAllowClassName(prop)) { + var view_coords:Point3D = view.projectPoint(prop.coords); + if (view_coords.x >= point.x && view_coords.x <= point.x + dx + && view_coords.y >= point.y && view_coords.y <= point.y + dy) { + if (select) { + if (!prop.selected) { + prop.select(); + } + } else { + + if (prop.selected) { + prop.deselect(); + } + } + result.add(prop); + } + } + } + return result; + + } + + + /** + * Создание пропа. + * @param sourceProp прототип + */ + public function addProp(sourceProp:Prop, coords:Point3D, rotation:Number, copy:Boolean = true, addToMap:Boolean = true):Prop { + var prop:Prop; + if (copy) { + prop = sourceProp.clone() as Prop; + prop.rotationZ = rotation; + } else { + prop = sourceProp; + } + + root.addChild(prop); + + if (rotation != 0 && copy) { + // Расчитывать надо после добавления на сцену + prop.calculate(); + } + + // Определяем координаты + prop.x = coords.x; + prop.y = coords.y; + prop.z = coords.z; + + + prop.addEventListener(MouseEvent3D.MOUSE_DOWN, onPropMouseDown); + prop.addEventListener(MouseEvent3D.MOUSE_OUT, onPropMouseOut); + prop.addEventListener(MouseEvent3D.MOUSE_OVER, onPropMouseOver); + _changed = true; + + if (snapMode && addToMap) { + occupyMap.occupy(prop); + } + return prop; + + } + + /** + * Удаление пропа. + * @param prop + * @return проп + */ + public function deleteProps(props:Set = null):Set { + + if (!props) { + props = selectedProps; + selectedProp = null; + } + + if (props) { + var result:Set = props.clone(); + for (var p:* in props) { + var prop:Prop = p; + root.removeChild(prop); + occupyMap.free(prop); + if (selectedProps.has(prop)) { + deselectProp(prop); + } + } + +// _propertyPanel.enabled = false; + bonusPanel.visible = false; + _texturePanel.visible = false; + propMouseDown = false; + _changed = true; + } + + return result; + } + + + + /** + * Очистка сцены. + */ + public function clear():void { + + for (var child:* in root.children) { + var prop:Prop = child as Prop; + if (prop) { + root.removeChild(prop); + } + } + selectedProp = null; + selectedProps.clear(); + occupyMap.clear(); + view.interactive = true; + + } + + + /** + * Смена текстуры. + */ + public function onTexturePanelSelect(e:PropListEvent = null):void { + + for (var p:* in selectedProps) { + var tile:Tile = p; + if (tile && tile.bitmaps) { + tile.textureName = _texturePanel.selectedItem; + } + } + + } + + private function onBonusTypeChange(e:Event):void { + + var check:CheckBox = e.target as CheckBox; + for (var p:* in selectedProps) { + var bonus:Bonus = p; + if (check.selected) { + bonus.types.add(check.label); + } else { + bonus.types.remove(check.label); + } + + } + + + } + + private function noConflictBitmaps():Map { + + var bitmaps:Map; + for (var p:* in selectedProps) { + var tile:Tile = p as Tile; + if (tile && tile.bitmaps) { + if (!bitmaps) { + bitmaps = tile.bitmaps; + } else { + if (bitmaps != tile.bitmaps) { + return null; + } + + } + } + } + + return bitmaps; + } + + private function oneBonusSelected():Boolean { + + if (selectedProps.length > 1) { + return false; + } + + var bonus:Bonus = selectedProps.peek() as Bonus; + if (!bonus) { + return false; + } + + return true; + + } + public function showPropertyPanel():void { + + bonusPanel.visible = oneBonusSelected(); + if (bonusPanel.visible) { + var types:Set = (selectedProps.peek() as Bonus).types; + + for (var type:* in checkTypeMap) { + (checkTypeMap[type] as CheckBox).selected = types.has(type); + } + + } else { + var bitmaps:Map = noConflictBitmaps(); + if (bitmaps) { + _texturePanel.visible = true; + + if (bitmaps != currentBitmaps) { + _texturePanel.deleteAllProps(); + _texturePanel.selectedItem = null; + for (var key:* in bitmaps) { + var bitmapData:BitmapData = bitmaps[key]; + var bitmap:Bitmap = new Bitmap(bitmapData); + _texturePanel.addItem(key, bitmap, key); + } + currentBitmaps = bitmaps; + } + } + +// _texturePanel.visible = true; + } + + } + + public function mirrorTextures():void { + for (var p:* in selectedProps) { + var tile:Tile = p as Tile; + if (tile != null) tile.mirrorTexture(); + } + } + + /** + * + */ + public function hideSelectedProps():void { + + var props:Set = selectedProps.clone(); + deselectProps(); + for (var p:* in props) { + var prop:Prop = p; + hideProps.push(prop); + if (!prop.free) { + occupyMap.free(prop); + prop.free = true; + } + root.removeChild(prop); + calculate(); + } + } + + /** + * + */ + public function showAll():void { + var len:int = hideProps.length; + for (var i:int = 0; i < len; i++) { + var prop:Prop = hideProps[i]; + root.addChild(prop); + if (prop.free) { + occupyMap.occupy(prop); + } + calculate(); + } + + hideProps.length = 0; + } + + + + override public function getCentrePropsGroup(props:Set = null):Point { + if (!props) { + props = selectedProps; + } + + return super.getCentrePropsGroup(props); + + } + + override public function rotateProps(plus:Boolean, props:Set = null):void { + if (!props) { + props = selectedProps; + } + + var centre:Point = getCentrePropsGroup(props); + + for (var p:* in props) { + var prop:Prop = p; + occupyMap.free(prop); + + var x:Number = prop.x; + var y:Number = prop.y; + if (plus) { + prop.x = y + centre.x - centre.y; + prop.y = -x + centre.y + centre.x; + } else { + prop.x = -y + centre.x + centre.y; + prop.y = x + centre.y - centre.x; + } + + prop.rotate(plus); + if (snapMode) { + prop.snapCoords(); + occupyMap.occupy(prop); + } + } + + _changed = true; + } + + + } +} \ No newline at end of file diff --git a/src/green_cursor.jpg b/src/green_cursor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60896361ac7fe67b82ed69b799cede78cd04f131 GIT binary patch literal 825 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3A;nP+f=G;n>M07Mx9FvwgI;_P0uwCop@--X z1ZiYcVqj5NCUXmQ8Ya_eHMO}--JkpK>r4|&ZPUUB51f1M_nq&a-#O z*ks!J0E$1*>eCV)t|>Z^@BTj65Qu~#lcCA$xaC}VM!x3XSOi&Vro9E3)<&bw;AtOt z?aDD*s%(~u+*EbydmX2BFodZ|^gUT#Mav?{GU)bP=0*Ngn2#8XOa;D5OZg95UgeBS za95S36um?p)9QR?cK5oNp-<-&&Bc!9*v5V;t_nD@3oJ*zYev2 zZp-k``nSt^W{?_`ZcvjL=?S042vQS8ut;faNV040NfSc*i-C^XSN$DFP9CcEcmw0w z4ItDqaPFl<@4Kr>{_e44lv$Btj@w*@>+kj(6lL7GP?Rk_o80K%0 zF`=B6a8E$buI^}`s3#M=0ix83tNX|m2?DSr_yPj3@8pMe?J;b0`}S mYz*bpM*4tk`M-)^0t^80_BVLSkzs-W0000TC4Ax@gMkcacGy>|9B4`#iy_S#T^5FP2?nVtFf`~Lr% ze`X=26gE$JPWGg?gyK+YWA@EG=4us&ToE6Zs^|mwT@ZLi5<{QMiS}`% zBo{4PJKEZ5J(J#V9ck}$CS@A$r_!2D5gg52SHGIR94c5j@`WZRS~#vQWlW6dvIoKemXHQaY@Ifg?nrA#n~y?R8Qno3g`Df1$Q9y^l&^O0kApvUkEfV0jOlt90JzMN%PL!GKhRO z{(ZVFE$QU2A|HtvYh`B|ki>1K%jOcX^+v#1W89cj6b4F_ms?8`7*L?3V;{)@EdWev z%xy)sUSOsN&w(!y=1y|W#-f@Vj07U50nOd9&SkPZS1*GIv#_UG2~et3irX?sj$jCc zF+21y22i+$)TRwADy4vYz5U=^f;_WaFoQ53+1{iJHsi>VUmQ6$kL3E8gKZb3PcX6) z1@tzRBG;%AXNi(Ff(j{wiUQ)-evU_P)m{~X7YPeQII~s%SW+Ryy^^Cprx{rVQgW8U z&IqB{m17@q@~&lps4a+6WJV1&G-G5CcZc(QqpJu+?B@S!@2?;#gfNg#j%D1V`E;|%BAby## zenl7Lw|)zEUD%ddGy$Mq6|D}1th>)cXR9nlEwCT#$CzJs2K$HFa4-n$S3=Sx&S;`A zbxD(M?m Z0RV-(25iXq``7>g002ovPDHLkV1n=dDZ>B& literal 0 HcmV?d00001 diff --git a/src/icons/editor_grid_icon.png b/src/icons/editor_grid_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4e1385209776f82d92d6163cb1adcbaea91af0 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>#dAc};RNPAX^Z&m+vo51BbML_m z+Z$M84;(qtvdF`-_!*CK7lX#6i5oX={8*p0A#uht$0Hr{eB7HeOgh{^L|d|eVc)fr f%z2Cs4U7!;i!<+Ct-JLIXflJRtDnm{r-UW|>Zn3E literal 0 HcmV?d00001 diff --git a/src/icons/editor_grid_icon_on.png b/src/icons/editor_grid_icon_on.png new file mode 100644 index 0000000000000000000000000000000000000000..772ed954b7e84249ddbc21b9f531130f00b528dc GIT binary patch literal 656 zcmV;B0&o3^P)NE9@YuoR_;WQT^N zfdWMwNuMfTAu34%K^_VXl@7{dh0*!@^&lwlsW zPTN^=7?tEInWqsoE?PTnhcB>D^egBM>TT$^)SsYtslP(EyiPo7^vm8sO`(u6%cMm; zM+7qJd`8BMdUl#LeCfs}ZTil(QnqfVB%%}S#HOF()k;=n8aG4{{)9fH{snzPL}D&S zYoHO$s&2R~3ZrI2;~}E&*LXzVi3s7=OCmbLPWnvnC`B~KO6y#70~BGX^fB}i5p@w4 zh;yqD)ztyHEsE5%Pc6m~=1bj0|A+{t?rBLxpMSTr1W$&m)sc!>wV;qbc8d!QK_Oj{ z=wr{H!fChg&X* z=-D6NMQ8x?X232=E5?`MH`Qj5dSTsbbY$~&X`Iumue<01|Dll$N*VW*vHzjl%M+a0 qCLajyz}TCA7&P;DaF63kfB^uK*ip_H=O!skoK&=l_3uW?e>M=H7!B zwl}cOUeMXe*|U=Ah^WIGt|LVmr{owv<|({mcx0{6Xq@wzcWqC;|FgoIX`KYtwe zkBdK29sclj{^tYnJx_iSoS2jn{h`}qFVdQ&MBb@0G`KhNB{r; literal 0 HcmV?d00001 diff --git a/src/icons/editor_snap_icon_on.png b/src/icons/editor_snap_icon_on.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c52eeb657160c9418f5a8c8537dcc1b16edab2 GIT binary patch literal 718 zcmV;<0x|uGP)d`4+=iDZ@&0X z>|xyx5Gn%|W#G^vXgaetzq~g&x4AiOHYeSI(;J$T&-dK#$qkL7h@51o@$Y@ge{Zw2 zGj|J+yh?-AVV!|%c}=rLu1D=u0K@+uOvr4!+GK|{U5na6z@8E~S#=O01O#%xJN;7m z<>vXz?|a6%pRQVz-8*ae?oze?FUO|xgct~AJ{Wuzx-&0iI6f9;5nD1J5*FzVCC*^*Sg5yMq;OR!Shxg z?snxG*JaOeaKO@MIh1!Whh8@n)!Km@`zwaWI;&n`|Kada7G;6id;$G*7z%K_XXdY7 z2*a_$0|0w`2dwCf5IB`NAmcHUf-@fDZ~@Hi8BDTBIv``;BpDn+r#SjF0gnk7=z!qB zU_VE|0q_9q8sSRm@W`aM9}iD>jN>SRq(jQ zitVX^gP7V%E$Y)YJYY`&oWNfM?bMM=@^SGynhq07*qoM6N<$g3_i> AEdT%j literal 0 HcmV?d00001 diff --git a/src/icons/editor_textures_icon.png b/src/icons/editor_textures_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ec346006e24bf4272a41a779a5701493a61bfb96 GIT binary patch literal 929 zcmV;S177@zP)B2)jT)AW;*r*aQm-I*k-`lr$#R#2-P)uiy{RP*~7Wpp>*K4I~;9 zHAY~8xXbQa-W|{V5Vv5rqjR&9d*8fy=giER`<|#O?(=7G&%b*o80fx8hF`;)w%gHi zfEG%S!YcR6fGp852kmg1o{H~jd0cj0+)ZFj8jB)0N-L1^ zIxx5f6oOwZ!CeB^ix9I2G~e*49V@LZG4(xbf5FOl?+S~XpbrW9jGTi& zr^$OC8TO4n#%jhjTVo|PmBywum)lma`VqM72UdVQ!Amt@8u`j|%)cz6RAs*BBRGCn zL3(k(xEop;Om1pcZZ?cGPf4`bM`S5MlXYmW7TU7l!KW918QL@pao5hzBw{NQ*IPbn zSw*_8XqWm;(JDk(vI)2HC7*ejR(%{+ca2;*0Q)%MU;eh3&)U^~1j|7O8!ToNb3jq^p-u(mEsgR@E?r1jv{w_1)@0`kBye+`b-hxbhNv=_m%dO zSgz+;yhm_lo5WRal*Jm#yCNDxo=9>3%_ok+)eQRqkq@$j{pMz$a-E9lJi-V00000NkvXXu0mjf D6jG_h literal 0 HcmV?d00001 diff --git a/src/icons/editor_textures_icon_on.png b/src/icons/editor_textures_icon_on.png new file mode 100644 index 0000000000000000000000000000000000000000..9268ebdd57f6f9b2e538bcfd1f2bd1876fd5ffb8 GIT binary patch literal 1230 zcmV;<1Tp)GP)s5WI)_8)mZ1|A5k$d1#DW8VnIOuf z=|Hfc{+w?8r7E(yT3EYSn{-*0Wogr-X|k8RcRlw@lGn1I#639gy!Y2EUIJ{z9TGe#5}14#`{5$VT4nDKuQEPd`}8 zwsEZHBD*>o&#w)JW`BJN!FyGJDA@fIFg)c1R{-PP_QKsoKWL>JIJt?YaZ5jNt6zLK zJk--iwV8L;3tSD0AP^3f1rKU&vnf~pI6jcx4yYonF%BLb1BjtTF%kC8zIUpQXodyS zS*QB-_s0gxHK)P}h?zhYc6D_yoJ>U`KrCX&?&6WV(E@|Qvv;t$1u&n7NJOA5E=41A ziI>B`wwC?`g5*X|5csGeOsk?SSk4`Q?M?JW;P23=ih}cbR2p*xt}hM;+v>Gz&@Bpm zJKOE!)U<(7u^B6H_qw0=o~Qv}4eIg5Vazi-yte5i#wsMEzmCx|UYF?NPp16VrG>4G}TbB)G=E z5yOGN0VH__Vj(P01=4I)7=`d)bc zXuiak?3xK&q9D^#rJ|yTFcQ>@AL9)f3IdX46Mc=SoNdm`(SExJvTG{ zV;*)p8Cct=DBB8ZP5YxKcB$~_UO096tJj9o*{Dh_RUFo22CUZ|sJj~puwxhr^+SJf zxAMv9Z&T++eWSX70^_rRC8GBcQ~T0qbenh0k3udHlEB zrB~)N=f-|6@b1w}+k-VQ{~uKFf6$a4H5mb>SlRI?*B0IiFa16qTuqJm?my~vGm@x3 zUwtlir!+CNT%0+zkXJ2C787tQ*jfFIAb3bFAaJ||-1d)U(;R+oX{;TJxCJZ@x;gk# sm%q$Cl8_7H{{wIvyd%+5y#5tn0FEl`bVhp&0RR9107*qoM6N<$f*Gwlv}>@>ti}>6?0AK17;@2qT6E&b zt_BGh#4?((snt7$Psi1UISe7&E`iDXgfYDRpr%uJ#+sSi)YO`w1{D~wIXl z)KyID*5;-0o7h4fU3U-bcS9I437#gvki`yMy31(TGx{x({^Ax9{Su2 z+|+2m+H>@P=4fKQfOoV^H%TYkOp3QcDM)1@wRH^2b}=xNgD_19NkZ_dUNoP-MNjDA zdI3k{Z%r3kH$q*XH!V8}7~C=h5Ytyy3sj^n@`dq+D$_wn{yRfq&M`4zIHkXy`Nn#;6DiX aCBOhYUi3-pCk8G60000^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3%>Qo!08+#f82|tP literal 0 HcmV?d00001