From ad8b6a9dad9768dab2b1b8c6c5e4193b165f7b7a Mon Sep 17 00:00:00 2001 From: Frakits Date: Thu, 24 Jul 2025 21:19:40 +0300 Subject: [PATCH 1/2] hi can someone test making events i can't use cne anymore --- source/funkin/editors/charter/Charter.hx | 10 +++++++--- source/funkin/editors/charter/CharterEventAdd.hx | 10 ++++++++-- source/funkin/editors/ui/UIButton.hx | 5 ++++- source/funkin/editors/ui/UIState.hx | 5 +++++ source/funkin/editors/ui/UITextBox.hx | 5 ++++- source/funkin/editors/ui/UIWindow.hx | 1 + 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index a0b72b64..ccc0f339 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -1017,7 +1017,6 @@ class Charter extends UIState { if (FlxG.mouse.justReleasedRight) { if (deletedNotes.length > 0) { undos.addToUndo(CDeleteSelection(deletedNotes.copy())); - FlxG.sound.play(Paths.sound('editors/charter/noteDelete')); } else if (noteDeleteAnims.garbageIcon.alpha <= .5) { var mousePos = FlxG.mouse.getScreenPosition(uiCamera); @@ -1540,6 +1539,7 @@ class Charter extends UIState { } public static function saveAs(data:Dynamic, ?replacer:(key:Dynamic, value:Dynamic) -> Dynamic, ?space:String, ?options:SaveSubstate.SaveSubstateData, ?saveOptions:Map, shouldBuild:Bool = true) { + FlxG.sound.play(Paths.sound('editors/save')); if (shouldBuild && instance != null) instance.buildChart(); var cur = FlxG.state; while(true) { @@ -2076,11 +2076,15 @@ class Charter extends UIState { return newChilds; } - inline function _note_addsustain(t) + inline function _note_addsustain(t) { + FlxG.sound.play(Paths.sound('editors/charter/sustainAdd')); changeNoteSustain(1); + } - inline function _note_subtractsustain(t) + inline function _note_subtractsustain(t) { + FlxG.sound.play(Paths.sound('editors/charter/sustainDelete')); changeNoteSustain(-1); + } function _note_selectall(_) { selection = cast notesGroup.members.copy(); diff --git a/source/funkin/editors/charter/CharterEventAdd.hx b/source/funkin/editors/charter/CharterEventAdd.hx index 4c2cf513..0031a78d 100644 --- a/source/funkin/editors/charter/CharterEventAdd.hx +++ b/source/funkin/editors/charter/CharterEventAdd.hx @@ -29,8 +29,14 @@ class CharterEventAdd extends UISliceSprite { if (FlxG.mouse.justReleased && FlxG.state.subState == null) { if (curCharterEvent != null) Charter.instance.openSubState(new CharterEventScreenNew(curCharterEvent)); - else - Charter.instance.openSubState(new CharterEventScreen(step, global)); + else { + var chartEvent = new CharterEvent(step, [], global); + chartEvent.events = []; + chartEvent.global = global; + + Charter.instance.createSelection([chartEvent]); + Charter.instance.openSubState(new CharterEventScreenNew(chartEvent)); + } } } diff --git a/source/funkin/editors/ui/UIButton.hx b/source/funkin/editors/ui/UIButton.hx index 8aa75936..b3f81f54 100644 --- a/source/funkin/editors/ui/UIButton.hx +++ b/source/funkin/editors/ui/UIButton.hx @@ -28,7 +28,10 @@ class UIButton extends UISliceSprite { public override function onHovered() { super.onHovered(); - if (FlxG.mouse.justPressed) hasBeenPressed = true; + if (FlxG.mouse.justPressed) { + hasBeenPressed = true; + FlxG.sound.play(Paths.sound('editors/buttonClick')); + } if (FlxG.mouse.justReleased && callback != null && shouldPress && hasBeenPressed) { callback(); hasBeenPressed = false; diff --git a/source/funkin/editors/ui/UIState.hx b/source/funkin/editors/ui/UIState.hx index fb578b61..faa1b4e6 100644 --- a/source/funkin/editors/ui/UIState.hx +++ b/source/funkin/editors/ui/UIState.hx @@ -105,6 +105,10 @@ class UIState extends MusicBeatState { buttonHandler = null; } + if (FlxG.mouse.justPressed) { + FlxG.sound.play(Paths.sound('editors/click')); + } + if (FlxG.mouse.justReleased) currentFocus = (hoveredSprite is IUIFocusable) ? (cast hoveredSprite) : null; @@ -150,6 +154,7 @@ class UIState extends MusicBeatState { } public function openContextMenu(options:Array, ?callback:UIContextMenuCallback, ?x:Float, ?y:Float, ?w:Int) { + FlxG.sound.play(Paths.sound('editors/windowAppear')); var state = FlxG.state; while(state.subState != null && !(state._requestSubStateReset && state._requestedSubState == null)) state = state.subState; diff --git a/source/funkin/editors/ui/UITextBox.hx b/source/funkin/editors/ui/UITextBox.hx index f2939ac9..49627320 100644 --- a/source/funkin/editors/ui/UITextBox.hx +++ b/source/funkin/editors/ui/UITextBox.hx @@ -110,6 +110,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { case RIGHT: changeSelection(1); case BACKSPACE: + FlxG.sound.play(Paths.sound('editors/textRemove')); if (position > 0) { label.text = label.text.substr(0, position-1) + label.text.substr(position); changeSelection(-1); @@ -119,6 +120,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { case END: position = label.text.length; case V: + FlxG.sound.play(Paths.sound('editors/textType')); // Hey lj here, fixed copying because before we checked if the modifier was left or right ctrl // but somehow it gave a int outside of the KeyModifier's range :sob: // apparently there is a boolean that just checks for you. yw :D @@ -129,13 +131,14 @@ class UITextBox extends UISliceSprite implements IUIFocusable { var data:String = Clipboard.generalClipboard.getData(TEXT_FORMAT); if (data != null) onTextInput(data); case C: + FlxG.sound.play(Paths.sound('editors/textType')); // if we are not holding ctrl, ignore if (!modifier.ctrlKey) return; // copying Clipboard.generalClipboard.setData(TEXT_FORMAT, label.text); default: - // nothing + FlxG.sound.play(Paths.sound('editors/textType')); } } diff --git a/source/funkin/editors/ui/UIWindow.hx b/source/funkin/editors/ui/UIWindow.hx index e6ac6388..b494e3fa 100644 --- a/source/funkin/editors/ui/UIWindow.hx +++ b/source/funkin/editors/ui/UIWindow.hx @@ -15,6 +15,7 @@ class UIWindow extends UISliceSprite { content = new FlxTypedGroup(); members.push(content); + FlxG.sound.play(Paths.sound('editors/windowAppear')); } public override function update(elapsed:Float) { From f57f4590a96beeb81158f5e42164753f04c862fe Mon Sep 17 00:00:00 2001 From: Frakits Date: Thu, 24 Jul 2025 21:26:21 +0300 Subject: [PATCH 2/2] h --- assets/sounds/editors/charter/hitsound.ogg | Bin 7942 -> 15209 bytes source/funkin/game/PlayState.hx | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/sounds/editors/charter/hitsound.ogg b/assets/sounds/editors/charter/hitsound.ogg index c037ff133d5a56f1ad5a2d39c2bd71d03f9515fb..e4bf65869a729bb35e60b17df9c038bbed09e5c2 100644 GIT binary patch delta 13843 zcmb`tbyQVR*Dt&e-3#`1ccT*0f^bFR5+{??qU&I%FVcnzvrTWbJFz<&V1HSD#MtC_9a zT@;c`*+0pvEcCxbJ?wAJf05ApE+-87IIJ*`h6#Gm?T20?6e+E$qWM%>Qw$BFH5D|Ko{9a7RaSnc z@-J5InTq-|vAY&MRo7I|&=iBA{;P@OGdB#53I=teXGf?L#gFT4f71=)#mGnd!y8Nz z_#vn}S*q`aN{%@e-5;L9QQ?q?*jY2I6h5h!2V$=y=-!Euf0SBhM3a)%Mgd*`0Ga~5 z0%Px?XpY=5=a1!3Q9}5NH-F@sLWbOt7d4=8>_x2{FB-cx!Ve(;!-F0&scbq9BseGp z1Hu`-sTB@I$K16F zic1V$exPg2U`b^j(=>!w3!M*i{g9fRs*jXYt-|;R`9pJT+xfW$A(lDyzpU5`&AYrx z8d_f~w%R?!z!6QYod4mW*2!mB-KDloWg~hv7G$fJYWSZK`dk?!%8C_p*f{Q&$KL4E3hUeWX2$N^DkS1twpM(@j9hoi%)qf zzoY_thE!Q#BJn?bLj|_ZT{r#>@S@aD1N??bwha#_JPhkAY)byi>LfyJyeT#@7``kY zXX#Dd9n1LqNHmH;A$8T8vG)@Mq3O$1=CEOY2sE42wNQGz-Z z_?5Lh3~f>iz|b7l)Pju%~QH2^doH#d!$|@?15Oe5`CWlX^_~ zU$pi5^71A@b^DZraXtHT0H{JnhaT+gznW14Kwyk|1aBAlGkLZyaLysK3Cf7u9iMK<#YUS)?I zQW$hW1VjM9vj_kLCQ=lv{1!|g5Q7CslIN0`4=E@V^U1QU(I$-QS;nXjJ!Q?Wv0}?l z4~$c{A5>QqW?{;oOl6}8R8v$e7f9qo%T7qpvmXj2kWwt~oK7dE3rf%nuNG!8XJe}& zH+NI%QdhU*?OILOsHh<`A5>t=H?ZgG(!&NMZJYt%NtLNbP<&2xn-nOmjRbfDK#V$s zA-TB{TRu62S3$xZ^vN2E5cCkFg%I?-tLe}S>WQJdbP(!y>AKSYu|xmZwRE?;Yygmj zgbu)g`_BYf$T8U=Edc^(upsY9aD%jBO2ne;qIJJhLkoi!M57CWTFPZNB#c3q0I50x zrNOw9;k9)8a!Bd&LE$w6d$w9~`&UE4g}x5Fle+e9L&BN*;pKNg@OV1|a7D1nB_uKL zbNk35WV}egR~QfhslE#71r_5qq>v9O47KcU=OrlK3I27X6e|TJK>sHQQd8XcUjnG{ zqrz*n|LJZiw){JV{*z8!@xK&Q3S^;D7~p>-1d43=|IGpcp{|JeUx5^Bege^7(~-hp zf@)&RPk=IK-zCn5(y>AK-Mt8)nxFz%{|fF3fLJ1_zk<7(?pUZgDBWKQdIhOLYy!)F zB&=eTNvceka>{1 z6DUG1g+&MTvx*dZc_*29Pz+=ltala|&g+GD2kof318ABQZuOV^&atCj>*59NZ$ z$Qp9f2)pu5UGwtlNyzfs6UofNAjI9cWHHR$paOO6E54GMMvQz-)U%6(l7w@2k(=6= z33Nf@MJG8!P*qJWrTw75lo{l#7&PWkhyHZCbLyZN-Y!b}p|1e^Ck8t39hCvI_%jYi zWc>jO4xxNDT`35_$pJVW5M=fV!T}oW0GM_a$LBA0x%I{IP3wVeEbiZ}EPC=a2UcW; z83e}7n5MHye=ee$Kx+gTzy|=|Uk(a)r*o|2)lA!QlB(lDWBKbI+CPk)dVCfHf#YVI zBz*6m+7-LwP@ph%X^I5n1R9ugWSisZl~(5yiC};L0H+1oB!dP}kWkf3purW7fG7`u zww8r-uV&<@_Z~7_f@J!JmE?ADg6P;w2I9&dNu`uzbHWw64k6qTuQ~n7`#|^f`5! z^wUjsR=@PMkepVH!m{S3l`@&h3Df1aLZkw1qMfsaeYHJcVC6w1?|Jc5hP|2^&pCyL z)nAE>Bf(Wh)8Tq{v!HcibFb58p7GE7nlHc1cuPIV4;~xPJd%C%Zo=B4>A0F_{50ZK zFGwAx|JtdcwauelWL3N(e@-LZSfgAzp+3uD8b!cc!58cC^_8-#4E7K_`S(KP29+z$ zZSTBR<0`3D;|URhikZvaVq%msWh8ZccJO=Zw13lxv))^hKV*ZrXEV!*I>S4R1C{n4 zFK1=cKb=4K^hs=EBlvv!C8=(EUfP&(1CCUzbL2 zd475Ebo?!$mtlQ0%GSXCdmF!^U>R5@ps*4A>s}Qo<$cRZ^ z=vrz9wGp{sjMM7kNNoSEG>bY6r$d_r+ev7i`S+z6CUD#L3xQ6Jw#I~MA3lc&XqP^F zJi(>0Ha4UjI(ikhks-2H>+=dhW}f~`yNDOh%_`zIb+C}2U1pWkY+C2gs*dlN<#oa& zbH~kI`*dqPYFh0R`e;O4sP3-%v*JF9f_iQ;5o>kT$qoZQL*5(Yi!Im8$s9B<@U*Jq z3%dE7flBugs8`r=q_XFp$I66;%d7H4nnlUzrk4YMv+;=A{c+*tN~gb1f7mNOR{YE3 zmhjhB-?I;XEqqwGq#Rpo^7RD|jE%<5MmT@=$8ImYn17|YFdyLbDSF9G`s$=Q;Uq%t zW*1?dSwTa2YmxXu-+1BFsou!n2mE@12&fB~d##~VnKUl{WrEsu0&}-(Z`dslv#LgI zdOmB^t)q>5pOo(N`BZch*jLW!t1Z~{ zEn;TezoeHrh2=)ea%eUM_<)=32R2@Q{AxFWO5c~Ch|f!S8B8oMo;SL1^{rKyL}(ki z_~r#G6Y8XZ@;LbR$fnDlRAHT==o%_i`A9=f{N4WFd4O>xN??6NryMy8cHHSMg8bG^ zTFI4Fx*2FTjIob2m%H!c6yS0@-Xiuy|8sM*J@?@N?%WN+-+ggM)V>d%!}w2|ldJNEqhdo!u#adP{bGd39XJ5JR`H0Dd=kpgl`Q!U0@7aT0JJXc=k zB;bwvk4l%;{J`zyEwFS`;4-f|g;dXZ4coQO6ZNUZ!UkL&3mU%}Yh$DqR|rh-EJbK| zL`Y3jc9MSRC+*&=kocYJdXn2$gDb4M?3y2$|H+SnGuDZ_T_A7m4FBx6=02W6r~=YJ z_t6FZ5wO-o$?}q#=;nH*Bpw+cC|YzU9j5KNA5!`3=NncnDiGD6)%>zq{QCmt*KZ=v z>~8j28+5+Rbl2^klIi!(c^&Q}bADvjYa0ekIuXS6NF?27Fdjf?OKrjdnqz*Bgu!}f z11}mcV3Ia#IS2!BVQ073b=NE1-41mN5>7j_1~j^pQ&X`stR4~i<^fxK_MeVua?%<% zRQ+$FFLo|6!Ii7bAKc~xJG(~T-;Le4&>+q#OIeQAjt1y{{0eos_*0WgGu|y)x%GK+ zqlJ_1<55F_wpam1N6e+y>CaF3*aAzgMvcFHCag>5U<(U`yz5s@5*MVg)jv3jPRl+# zq*47G%>r`X5Nh5Yo`E6Fb-nKy0V_URdsrZgu~peD}DyRs3Q;L)0i^`|=ubwr6ZNaj^#8Se`t& z)&&v$JFcL2Kn=qDM1S7q{4_Iju1?~1{ZeQAl1tO8MS^+994|fZl(110Y?&NbKC$!? z^-VSQEHGQKM#h;cu`{0M=!w2C5Q+2ob|&ll?l4oWLh8fhM5BRAK~-(}&jO)c4`Rf% zgT2r@#>}wTn~aX=V6v(+-Z@b?X&e;?HBQr;w?k^+2G)H;a4AtUH7l4=FEueR|Cp@ zS}hsi<;c|NRr&RS^A>le*vZVEgcCQWWVZfCWu;U;!-;qvbbrROVZZ%Li3e3T7SGLm ze}`_6Zp&R&jQ?g?AUWQtv9`MSvDs~W(11av&hhQ@UZFpR;55FCwN#T6-8p*oZg1?= z;Qb-9R|_&&@yx$0#{l2eiJ!Jje%Ja6@m8GH5gK zImyYtWM_`sJA;rLane#AVE5goI)&0ao!c!l8Rv&=ci0z;AwTv_ z1KD#LXw%DreY@*Kn_6uIssf=`~F7?pVRZaxY>O&*aj#cJlI8 z9vnM7$a`h*^&23n&yPqDg~F08YY|^TaGIXLGN@4#Fgs2L_kZ_>9aBm94LOeV|8o!FS5xC&VxK>XFbfy=biG=b&g!nr2xebSMIP|Ev6**i zh(YQeq*1fyI7oiy@9p^vP0a|j zI`)g#wk8W|ME6Lgw>IAR(nLMmTxqR6G~eCX)PE`DbaUc!mPr_SKkoNeMDowNCun^q zxw|GsR9|Pm8vO(%fK1gdG9AhwwrYuc`zUuwz>8w(z zdTYegQoYgz%&u0dwVRV%O>Q4nlyEhz*2_O#_yZ5-*Bi&huQa%_IW$O3?_^Z2h)I-I z0w()Iuo>RemQ41qy|7$$-ka^FeE$m@00ugn7)gHRzadtpDoajtZ&vXGU)Z60;WyaM zB7FK0ZE}u?6;}dP}I1l;iTzG2B%?AXB%w2I)Bc0HT^}DDw0TX_TjYe zth9E`3&|&wA`e4#kktAq?w!pR5{+b(DU!+{g{lJaB)|32XgnXRB%59u+)G%EFzVlP zqX}a~@9;=v|KJH@PpYl}YmJeuG_V1Ki}dH+vOZ0}NKrUY0@oTJyiA#-uiO2QEbZRJ zd3scTFB9w?XPKXejeoOoBx1b5f;ySXQ?E{pM}JW9-iUOpIU-Ez4Ku=K(t837V0N(KP7;tMIBM@3p1Tkyn=H8@c?uj}G*`_IKfz0Z}rAy6a>VLqD{dCN{_C zP{tm*K2G)HYxc%$w6U$w+wIdiXEFMShpM&rAeT`!8P?!w=yzw~r zBDD13dHqTD4yo$RLpRoI?2g{S*G`8&E^%pGHI*|+0>r#5{K0~6(hj=206p#eWD75b zik((W+G`P0&XFNl)mGyv@3mz`gF~~P&Uh#NI5*RlgAC>HmKknhDWTF~)q}P)3G!EG zoXdNYgQ4Q4a{dxVO^?s=mX}jh>$N;mY&1+>O|2#D_x+yl4ETCr`*7h=q3syI(2!FG z-VsGRYy$V&;sJXtf%y{?FWx!h_X2jAP{9c7c9- zFI(gy*UF>ieVfxZu{qh14j9^;xV5j@KC*I~zPxx`HzZgY z>Ga$Ylt{{-$6t0X7&Fz&NuodHp3)90*FO5pW1V#VDzh_X{X=35g-{lI7FCK*mkHf; zmK*Jesak4hY0NxpljG6q*?!Mbb!HZeXrbx7DA{NV2k9zwJo%)ep_}JrN$IN2Ezwtn z`pEn%L|{91c29w|+xeGa8D^CS<|s0N4?u3-78lUXUfakRV23C^{dc_3cK?5l7my*+ zLfT!3^zN@JUFg||o@D4rfga@sPhSZQwGNl)@)pne#v236b+kOpBjuA|K0dxash6zS zmf7ip)<*~2#vi%Cm*f}g@vUn~5>Z#vbC)TZa}E+>eU%g7qt;vp*+?~YEyV_dh3 zo4UDv@A7`1k5k?!N5hB9FM5V`d}=lx|4 z)g7#wB#)QSulsStY|WOrAvN~e$y#Dv#`N)pt>cD9#$`Bu#=Kx{U2X6(o9e3)O)`$s zwgYETsyCVA)^qAp`gKVWK|RKf=pOc06dup-%iEQf8eZAib>))jr?JrY3?FseO3O(l z-!fEmEw_N((pbk6i9K)tSohI3ft4k9B zX^dnJ$3+I50q86bK8A5^K$4a7da2J_bB%;zbnGkQ!u|e$KW~j~yp<7;D;enfSYq{$ z;#+u@)5*i|j9`D#$-SlORa6cI6aXcXwuy9COp9w(8rD}0BK!*doff|B-~sZ%*?~_w zJ0;$}TMt|X;oUp-UqPamWE4;&K|N*b+gl>kej*@;2FPJl zlq6yT81MQ5cmYuW&~^!AL4STghvXduC?Qg`A(>7D+8wkg04Ez@6IKA|-W>tLb1Lsa z9{^aq5r8cop)UH)0M5+=fXx%ZyI89+iSrwidmVlrcg1Te;+r=9%gf5`VYkYw=&_1}>r zJs?>I?FM6@C|DB$%Ccxt_3yy*j)Zoyl2VZP-vQ_K*@Evrl!O-c5by(#L0w`ToR9OU zm|0oa4l_vlJol&oAs#gH4h-2li!@;as{S?xqW=Y>cUPcFD+5+0OZ}KxMaPZA)dNh8 z=(-T@?Kv3WT)TR@T=LRasY5h9>RXL-^Vv!N8gWM%jQUjl&xhXPdvF$`y&<+-K`g+X zDf)q=>^!*lUhNI#aEu0;o@Cf-i|!Z2lBXKR#3;B2UblWZ8*#B^^>5R!r;$t2!*W7p zCM|K{==7liL@<+93FkP5z_*K%qK@THe-DhXvyH{fJ+rV_Q{s-Mlgy1N&)w|ZpH+3G z?khWGq#(ecBD{ptGSDR&O6K%QvQ~Uu_Y$9V6z2plraZfylhLS$)fj+eLa_u=$pRet z%?>Z;EFnMFmFmI6r^8wm+Nm+@6ptho1zEmgWkfRo-D%<~Oh=o!y^0?!`4r9wUL zcVO#bhtM0XPk0c`*k0A~OI=euq$l0^c>zBW*gNCerIa#@3)7ZY*p zI0ed13rd%NNNd5+Ufvh%sm`OqL;|ZeaBO^;THM|_sA}iY&2>>u&>qFFr=?zwc?9cc zmcKn{p3yDMwC>w$8R2)}MV~z@&B6*B-NqX;;K~}Sd};`AgIIP8C&6PsHWK!x<(539 z4)KdaY(_~q3q+oB{8Ei56aZx8k{Gg&%`}Tq9d@K9$}myurkgz_om20hu!3TjS4JFY zL)qp9Gma5u^zz6*=Um&V&$G{*Nn)k^Pz@i&Iix5zs_tE#ZQxxCN^EZ3!rnYXc*ZF* zy~6N3m1$e@jk zf#(VK(U!!Dv47;OB6~}sJ~;njXrIDfry^JNWoXFe%h;N|93gWN6x6KGUD#%MB@058 zt%|~YtfDC|w|M0=Pj4mg*NOrd!-i-mVdRa@fTKl~N0w38$rYJZ{+dA*YmPf@X>3yPZ)9?!nF!J)-_ z>Wq7TK*DT5|9%r154+7rK2|FwDmv(DX>pWYl0lzeS`@_uN@uuwO<~be?tRIkO7{Zj&y9C z)l_J)G(ZjcKQ#XQZvl=9F><#eX%UjNe6hHKwJAS(*mBu7^^82Pz=sGyDo2S$m2U ziL0|cA^f^h9)-7X3GyC>i|Hr;2Zaj2hb~04-vfw+Z~#>yq&8&u(tC-3LkkLGH@qL- z8OcZ0^IgJB!#4ZiX!B=$w8X)r*JAVoHfw)9N zw6q&=DgUFJ5QqXq0WZ)*R9F;NWeVMmfP$m|5g;VVn=O*y-}aKkUP%U~&NbZ0yZWK^ zlfThBO+PF}<&|mY1gdUfaR$IOPW67EbyGMDYe4lAmvEBTtqexNA2ZEpCzqa0Vp&%# zuQ|a&)}3IAsIf;JYgfc?$!KN9d8C;|?Ko5hr{{v^Og41PLCbIxb+jECKN9@ci;;lv zl_x>J0*m2itpN9IO|{PC2HqFuSK{%M;`IYF%~;+Ug$qNW)daEpsGTP& z4%U4wE%T}b?9F`5Tr0nSP!lDE&*RIuHZg^GDxY=7=Fj1N5KntrTXX&9H$)56}_RMgD!iC&RM zOXMMV^b#MHVLWB{;;2e=tFN^yItRYw$yf-(=IrR)fZhT@kmr$;(>p z>jTmc?SA{zO)l5uTW7uJ=UE4tUkGOj0n(BY9@!Wm`ZkR$E2hIFxTGH+DL_7L|1w5v z0RP!lAds8s^vv)1`$M96q%B0Js+t!TfapLxZfW<0d~&g4EXWTZSp4<`fUd15M!+C{ zWFQA4W%0eFnv(WuVT-7uzK{(-6Fan1$B~DTK#Pw%qksYq_C0zWwD8VYb+r+`=jQh* zs+#UC^6r+&TdBfsWg&OG6{MmD7u&A?LkEB+NdNWBujE~^t21KUqFfk7Qh(lV*(a}j z&4R8Skz{4Hp$CIfZ)nbP+grsBE>!5I@ae4>PGkHA42r1gZmMa_H82^Xi;13i6Oyz$ zP{Gsn<+Fqq`6_h?FOsj0Y?aiiZmeFnbC*_2B(<_oEyq5)@#~VddKJZ(Fog9W$^G?~ zd%BkRZn0u|%~Sf%X}fIlr$1{}){ItX(^KOWJ$`;C~;`nIYMm7xSWB`fVVn5ZTS5Zt2hle83p{A={)*}vgDH@?$Dsk~a zv{h)X%n}A0I+ihpMJ0sWT{7gTe?SxH-QsA`q~jj}w_^l~X5O_%jj|Z8?kJp*xt`fJ z6}wT8sD6+*d#yZENKdwhuH93IGGA=6+lVnC6{WMGHU3npI`LkF|pd_G8VB=eq+yV>Im#?fuP>cs88Cn_+w ze!g>dH86&3BxZajL?dl17S`eR5jM2M>SX9$dgGKh$`*R4yw6nmsL6`9brI*X^~wg9N6jS`7yTr;Q4^~{qEh9J%;+q5aPPT!9P*=7)npSWewNZ zG;r$#F9)x`dXdoGU7d2$vY|0zU^5NAzmVWWzZzadP3buNwC4SNwK6T~A@N$Knj%a? z!Nxl^GkEn;OekAha&@|g|05DN7bJzVIEgIk)!!uH=zi7NLcgA{HP|XK4d6RTu?9#< z-lsAAElc$nBw>Ayj!)B6BMvX7n7+Ww5SNYOvNKE`&zmy`K1h}s7cDItBAK{?SP$uw zQDR~VPTwT^0kHtIpvJ^E1EE#@z6m=ZsRS25zH`98I}GRp`6Of=FrZDTH#~?uu+!|l z0&Cv*NQDPCidV{s)6nwHkH&VCtp;bGS32w;C-KFtt|S(k-(KKj@%*DM@hP440r+IL zhfVba(1r|(!>F?uq2n(kKQ^P_-$*3uFuoF=Xm)l{8b8!q_*9n5CZe%|=goEoj%9`I z&*!*B>Z0B;wx?7%7&D;}IP7S!2LF}XABCkIgYIF`*iGVkt2)04WoSk^2Ab+rQ*(4Y z+_r}^9Dm=$lHk64OVQg~-+=DbL;av$2S?JYS6dT=E7H%2`dQ^UyuvMr$42w>yvGVe ztPNR-W>IWQvUvYYlMhMBu4`$0WX%+}fmzW*69fB1L(hbqCz#lvYP5G^+Ra1bCra(c zSM)$pPKvrW5IMPP$%}`k%?G+jA=I{?Yy%$U>3OsU1SSKhlOq(oOh3+JL;zyEuW+ulKDgBF@ z)4wjyV_w3?(d0PcU9yF@DYsr}e+=qRv%L;B=7aul;>UZ)Yf|4|%sxqvu=tpvO|He_ z%^~W+TP802CfdSYUIuecLn-yMwA6L}Lr|=u0^qmKWZx=@zfFH#u-q)F?BM8VR8w9{ zLAq%?{=C$eLu|VEG5wRJJqN|9nKj*mo_Gh_npi#3Km8OmMY^bRo|vnD!l`qxgs^VUohmYh z(nj)INatN*jC7dTz9_yhy*$(5h?I5v zX&nSF@?eS%cT}QKgV~{~nQ#{EKk*=Ny{B4L!@h^9o2`t34L&8M@ko*7cayPi(LwZ^ zy-d3CkfvJGAum2KRHR+62>g@u?G!`+GFS}A?}OlWBoshc4h#oQ0$rn01JM3%M|r*h zBzKpIaRh(XKc{;GXZrLFjh;_&V{lfbp_xV_ZLa;szctD)!|$+m()Ju9^oRpNGBtF#oRME-jghBB`3*O2~RwYl5x zh}q~{5F!wZ2!tpicF-L5F9dj8o&7?umr#paGO(Pxp7=-lxuk~^0bc-2I64Nt8VE;H zdkClj`*|d&fETe)=36hA{)IB3a={?tEYI>e zpXn9D%9`lRbV`+^SjCSfOu^g_OX$i$TZhzZNiE0Xu?{qUe(f+dam8`;SSpHBg?_Mx zk7^iqhZB9LKu=qfb9Aj`FyUQi^ca6fauPYW3TLS$5EUwtRkCxEsF@-L8IxvY_15v{ zO6B76-uJtNI*sDpOFWoK$`vmw3}}DVw#jX*X|AcPOLJR7JXS7=WYzhNt#0>C(?^nP za=}Tzw*{RzD`5*>M`m?vVfx}sou5`G^eg(w2sB$V{=A&&`xsw*rrN9}P7rJJ9V}i6 zdeDqdZ1_tSFHYw1XMOy$P|$j(xIS6X^j`h0BQ;~2 zY^v~(4;6&vWk%DPX}RWU>%PeMf7a-H(kvDsq}2VQ%uWaGW1I zr`kou!Yk#G31H&5AE4W@??Q;t;Q|2p`Q5RNDD>K_Y;7%-;5c#kmFcVvk~=-B8Mzg@ zZon0!@iW~64?d^<0+$ZX3ae;j-IYQr$(A#Bwobo1C^_DG7{B+YD*M&;$q(UysB3cx zed!k7-%{DPzE4hFeobxM6DK=&i(W$_1_CUu8ct!mxQcp0G&3y~{&3&GII^MpI%EKF zkC2dB@)7(wzz-XC?y9oWeG1)ERx^9g=F+4q8e)X{gCk7N7&Nw2u%?c5o;#JFANY-d zloT1{uO?4BAC>&2XgGYG^yuDH-fvWs2UM^pNYQkU({AjJS-Q$Jiy{gHj9j^G+@9dg zEOr>8SBolg^$lI3ttocyuB+sI=eOZMDz7o$QGXP=>oyf1y2Vfa>npLq(RBa!Nrt`T zS%+jWCFZ2`um}{0%jortJR&ahu~&92d(FI27FuL$5G^-wlJSCnH{0Vwr-T0kL-F`F zbpLeodRfEA&&*|rQ@Kx2e@xZSV5;A9YNBWoP|Gne=d6dHW>8~RqZ?8Poxp8Ncb={T%K3Atl`*0 zcv08d+)mmB9(Ht|UmvZVMfU|z8Cjp=oSJ{dtJL6}8)Jd~MQZ85sp`Wikv#uOgB#Wy zaxkbfIUZ2IRoOf+ZC^2SVSl?u%jXtCpGA(rl283n9xeB1K_*C)S|A zX%Gqi4Z|4?T>8eWkVsslau1teSRu7+qB!rn6nZc4wiiIt?qO${BvNN7R*KW~3$=nx$6eV(zuv* zU8S{fuP$A!r_JF=oN@7$&aTkp(xFa%RF$|2Tz=UThs4&D6^*?Wy;-1Box42g%=H1R zI<*&UH5R*UEFH*$(WWW^^BTSncCfKn7k~bj*tSGZk57O9_wI9C0?OSX4G`C50=$uz zL8nwG96e?qR-DXTk88iQInmO6S0h48s`qRJD+cX38>0dn2^zB0J-A5-y#ikl3NeW? zQoMzBGPw+q5~n5+=Qg-G&TDFy_j*Txpoo_Qjr>c{tQv+h^=bNY+w~QkIZqWXUqNLWUZqj4WBko-in~3`Iy1l6}h(S)%M~k1P?A zEh$7uh)~w}&WxVE=X<{Qdf)H5-s}7CJ=bxZb1&!qoqIXwK4w(X zS2Ga@5FS@tE$oP75S4n~FA|q+;&Ox@ne%rcb0XkK#usset$yooe8o#bN#@ z+dc@^bG5Uvb24{Cn!CE$5#0odLcgcj3DKuDbg>$W7yHlW6+0L87cU0H6URLB{Zh z6I%8iayHxo;jXE2cDl0JNczxoBXW#?d_QXGl=Upj!Kp*&2*WNsEmS^0Yw`uMW66z0 zFkcWiY;N(ow(w;qy6zBulp3%@vITiVM{+77N>_gB(Zg{0FM`irtL_wi_C{MrqW8RI zK@FXWH?c!*GVxc#NLdFGev2v{j}@yb19|#jp{!U}IMw#Dkbnf22~OW**D7LfE8=bM z;@4XcIk!i;OG-oE0E2_Y-QhiLkq@=9tnCZz5=w0!mtJlw7HKPH zqL4t>q9K0`NVSX4`d`%=A4B-p6>Zxh4A4-Q%`UvnF8mr;{$^JZdWwcy0JJF@E7ItS zI!#116BS@R?WX=RTBm(UhviQrkj)MNT7tLHh4&@Y23EA&Rr&%^v7dx=e&V1p2b%L`bx4*gxuscbjVLXX<$`jl7L<;A`QLxPRT?vu|Q7KA+w~<=vZbn zR$C}@JEEXbkya5ZbUc(G35s=X70QND@mIsm^LOsv-}RT;`HlA++Ywm1Bt`Y56mbT) z3m%v858MaK0!`k!5BK{F_unz&3i`Wa{f-;}gXShBCZjFFB$^X%=&CYq8~D%2aba)1 z$NTag|CwTb%o~yR1(e<*s%wwNITS{p!=#JDy_=Juf5N0&n$V3S^m-5mN(mRseDI~e z0%kjGhWp+B5;^1$IV2Z8rWr}|-;t9l7(OZ+epoA#A0K(tGsY$)J|`}DDkpu%-y+90 zG&?plJ2-SQI9xC!#x5j2w<6uKwP3pPU)JA|bJ~?3Rv0-NuKa(AoO%gfH5g6BBACVP zH7a&Ng}P~Q{nY>f)JHI#q3k2)u%f+K>0YcT&Oq^>M-0UFqA=YksMz}e@Br{BBdf=Y znav_XE=0waLF)x?qp|!{;zQ%GTM>s(Y0dKKzhb2+iG8gV$lfz*WWS$iaQjZam8Obl zX%m)j{1H9e_834K4`6Oa@M5TW&rrk2BNwf1fMG|p?;)RHu+(><(0dfodo;F(|6U6P zq0Z63`fC~}sLKG+h5986N~xF9K%?ME^6!^_AnTkoLhmoK&?pSr0Q2ul`p*pi(ZIjd z0CaH#GyLOJP2)R8MUq8;TVv=*q}Du&WQm_wxVBek&xj$X0!uu7_n*-L57-6NwF3$) zS&R`VmSplj#A7BzPY9$J6}Zp??#IAPE9+E8URO znYWE9+!BwD6xn$R4=~i%_M+JlWMV4v*X=_c;iMNtSsekav|z-Uz3mO^+$Y(XOuO_J z7m+jF>h}mR2?{xcg5BN8lb%_Oor`eYf}!blRPcC#YNsWu{e-Qy2=iIn7Hxp!2lXFi zW5zwx1w&!}l-uee(zd96jvb?qGkGv(7&94?E*PJcTPX$wbyAKfnB3XM{|2Kl>~I%` zyRivZ{6q+OhTPnOoshB{g@Kg)wCT3-Svk4zBtcUMd)-aAg2}L4c)C!LiEt+U_X#9B z$X8h)LT#`;=1I-X{Zd(QtPQ{fYT!NrPd7py6^j5cQjY-0dItHIkBS-gVan$L``+S1 zAQ<{Wn7Ot@CX*$b>W(yX9aT*}D=b!6D07FZ@R9pi70t{HtfaPRW(<~=?|!6q4l)Ca z6`}>C{j%`SkRdQAj|MEjY|k><;+5PazpA#xL?V%mFOwUlH#zK<WZ@&P}I!<>PN`tN)~|X z){4yXOcsE7t9@j~HY8r5^OyELlYi;h)dX6Dtf(VxWElwJrL;>R3@*h%M7sjQiW<2c?q~=mTqI*1 z@}-5wiD!y>jV$v@jy?>FB*XGb`VK{7C7amwVK4rsc+)bsWuC;OQ54%BD+lyNA+ZDW zg~L{Na+-{w<1iA!?uhnA6FX=DT2U6Dk8rC9@ZdPjA2MB|^_s{YM)oUg z1~(D98S*CiCYHfKL8!p=655Q%@=rwC%}8u3sGAIabcx7c*W!y$YM?$*HUkE4&&i@Mm1;J^y zIbesJg5M|8k~@?(hunk1?RFcH2?asmHi#?;4u8!@5fqIT-X6m3mzuo$9TpaSp(|CO zKy{j3QU^_mS$IQZr7wEcXY@GCwN*I zVtfzlQ=N5W1(Hs{_k!S8tRcaTNQtz)g2GwUq(<5xZ_x7kt!7m@NsQX~b)yNrDuXI( zfFUm$!6+;HF-Tx&{^q{KRDFXlXebAO17HMhUjyLKq4c=1&+{vQaW@a2kc6DdZVLJ& zSOGv2O9~FQosgARP(rJ!pVHLU(LD>dHw5J*L<0l^!}f)fJZ4~^ytdGI^HcZ%`L%_7 zEDGQZ+Bsb8w*J^M+Y;MS*izmy+;WHg$ABXe=dz{dR}Pu9>cP=Ve3@4 zQ9EqrS-aR3(%^1ww%qOed_8h(g)!W0MtPdWZ!`K}-R4^?s6OZSsRL!n95vU7^ZR5` z#&aR~EF0I}i4kR`t+!`(CJEmOHISvAciUKQE#0YhIN@$x?rczLjd6g%0T<7q()_x@ zNoC*7>mEyY!XK>sk=wN(J%358JKAT%4E`aDfHui0@ckca4)5hYD$EVGXf_jd|H6EzJ zmBN$J*;>!Cc&zfYdx1^(?LDsaPl`T>?>&EN^=r|OBBPX^sJfLJkFwJmRX*;+UUc16 z%kNEDo|+`eh`CO;caHbByG#vg?8%^4maqN!VyMk^)wj0Xr~T!~${f!^DxS_ueR|DV z0khb@U^P0ZTEYa{C)Bi7G0y9C&ja)?JS12vZ_R&im`td;O5Kf?XmoM%VUDZmyq+uP z=_h?`9@-d-FddhTgwZDBd4uem?zKAJG@^P%4dSCw5bS2&lg zWOG3^=IeCrR~l_okkF=`S)5*;tm>?{`VufE)4t|cy8Q9f_|lTX zoRp$?_#%9u8|&;b&|xQ*NDa;ry9L;F|k}s@L7@K76eE>^U?! zi})gJjx*xC!P4BlY9O3jEHc-*WdmgAX%}sld z^IDnL`r^9ragXlMqV=DnR}H9}mMr^j30`bx;o#?m9$)_=)N$O`F{A3i)%=dSI|Bnv zm6olFcU~wdTg~_xd;6uBy6tOQzg2@UR z8b1{Ab$UJ*Gb?p?_0`XqpOZ=7HVfb0?T$cqMl*juC^Qr+#&UfI$>S=+u)BM8tnS{| zDZ3z(6k)nFPmgk&HKk<9hkS>xom`sv7{6w4I=oLf_T5Z;m|114ku}jZXdD{}`r1GQgXDL31{CGj=oaUGZTp$J(w+$Mb`Zf1I@{Sf1E zLutz0H&w}}^1926%iZgX;aBucJZ7GpYk=-zQx4K z=*hs15v}g{VOY9;%(d1oHD!G$PMHy??*^zjFwY1qTdBfwgh(ZEnK(rNUPQO}^xHlf^+CjyASdPF?vVeBfhf%e;}u*zLs+S5vY#&o@8m92kGM_Ci8K z0Lh>Nxt}Q|PY({1<6J(TD~p@&l$*G|tJ0|PKKMB=<+{ZrtKcOjWtEtcu;uA# zqiiMr_?A}cn#f|INvn`_ivR6~*V31>%I1_`jTJW>HMV%T!Y#e*8h@CMS{Iko+BF$r z62VlWav#^JHHlicmUkdtdE{7WWH&Nulg?BaRp(nA@iotJZQ=lGuqvvaNqmVA>$!F| z;=+FR0%kHI(-}m2Alk>SH zQ&@$hIZ6AGn+n>i+-vi$+=rPD4n5B#Wb2Ce`Mt9CO(+};VwBE*m+aJOkzOS~U{c%V zz1mT|vf87(sZ$dxTkYN4M)2zxI_2xM=@l+w=Cy!+MjG1O;9War?^p27W9{(tTji~) znd@EGA`w5_zSqVFtUBeE>vrwpTc2$6P*}SAz^`rs-m5&rkc+R;EOUz<-ZXwPY*xy$ zp*A(*4TH@Ur1K4^4c$vEzU{c0li`tJWer>vvxQS>qsa*Nfn!^)Art1C!830!fBD#8 z%zC*F!?M!Kq9->4lFtAj230izH{)%E#TL%Bagw_?M6bU;sSP_MN{Di9LhbRI`qoX} zPUTOF)QoKi+IQRUpebE8;~5JhZ#h%rHS;^wino~@mOW1=ymijKbW|kqobC};)yDk* zFpZT=cAeLi>ym3z;u)@(_3COk^KkY`mD0C~$q((TTT{a+VuO>%r#2R*+i!Gc__X&S zd%jn1B%cxUXh@q}SsgyX^=8+taaV=A7BX06K2E`G7@p6h5B1+WyA|dh~Jm(@1K}F6xft^r55EOb?Y- zBP;A`tyWPuKja@=g0(Iq>L=N3)RE?>UU;4WYJh@&1RV(RMX!*nZacrdTT zr%u)4bJ`#unD2k!gmBJPC!LL*xDpGf0&}x($tYpSzutheMXW$v74dnP9bACFw)iiO zd@LJ4AlW{h7eqh(witl01^Qft(}&2L-?Qb%wTPYiRG%e%+?eAA6Osgc-$_|Hp@a$v0 zYpL*}F1cbkDD!ITsA_Y^^c<&ly3%#o*C*|j*DD<_NTYeX6V`e}`Vt?vg!zkE`gPnj ztM)zsyu2P&6q=6TetNQ}KzF%!f=j>7q)usa=1t;<>3qz_Vs>_9a&mIYoh#qYZ?U|> zg*4|*KS7M+tBCJ*t;3xuQf2-J&&fJ(+B6U1kGWk@jgP6sN&Zn<8{RN^K~g&l?;?46 zBR&C;5XCr21T^#2)ZpauuoiPdDOhm_5{xCQKX(FFnTrC(wFemxU}QsH5{t!b%F#zO_wz97&qBjurw;SoEYSHyP@HlrYo4zhat5&*aVNf!rdHloqL$)o5 z-7h~Hf~@7s$KKdK%Z;>v&znz@JS(|b-7NY!zN-M_v8kyLku%B)9iMDOn3X+N7}xo4 zxU3C|uGy6)c;5G>1)RQnm-r_Jk-?Mi^Lyhm4dFE#hw*aZ z+{a9duIv0NqWn~6e7{_L@?62st*v3y{Mgz^j}bR#kc7Q-nx7O2%|^pq37U#8BIcRL zMr3F}#uNX~`}m|rvuMB&VPjduES~DbYr@9Rk1J{j#>C#T%NK8-Fu?WllYi(0ZN*aFP5;J(bRpk2!sdRCvw6=n$+{+npknDi`70 z%_Z|mNygLVLY8-4UT$^hXshtD)1~FaRvjng4|=V-hJv4TlwzT zqj8C%6AuIn+E(W9wJ2Iga2AInAJddl4}dtKnH{tNaS^~&#RND>1ke^ud%_%Eqk?EJ H?E(J