From 0589ca4e2330c6f1de48d9bcb897c28ed1dc2596 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 11:53:52 +0500 Subject: [PATCH] Global refactor --- animations/baked_bomb_plant.res | Bin 126695 -> 85075 bytes .../audio_system/multiplayer_audio_3d.gd | 0 .../audio_system/multiplayer_audio_3d.gd.uid | 0 .../buy_menu/buy_button/buy_button.gd | 0 .../buy_menu/buy_button/buy_button.gd.uid | 0 .../buy_menu/buy_button/buy_button.tscn | 2 +- {scenes/gui => gui}/buy_menu/buy_menu.gd | 0 {scenes/gui => gui}/buy_menu/buy_menu.gd.uid | 0 {scenes/gui => gui}/buy_menu/buy_menu.tscn | 6 +- .../buy_menu/player_money_label.gd | 0 .../buy_menu/player_money_label.gd.uid | 0 .../client_settings}/client_settings.gd | 0 .../client_settings}/client_settings.gd.uid | 0 .../client_settings}/client_settings.tscn | 2 +- .../client_settings}/client_settings_menu.gd | 0 .../client_settings_menu.gd.uid | 0 {scripts/player => gui}/crosshair.gd | 0 {scripts/player => gui}/crosshair.gd.uid | 0 .../gui => gui}/hud/player_ammo_display.gd | 0 .../hud/player_ammo_display.gd.uid | 0 {scripts/gui => gui}/hud/player_healthbar.gd | 0 .../gui => gui}/hud/player_healthbar.gd.uid | 0 .../gui => gui}/hud/player_round_display.gd | 0 .../hud/player_round_display.gd.uid | 0 {scripts/gui => gui}/hud/player_round_time.gd | 0 .../gui => gui}/hud/player_round_time.gd.uid | 0 .../main_menu}/host_menu.gd | 0 .../main_menu}/host_menu.gd.uid | 0 {scenes => gui/main_menu}/main_menu.tscn | 4 +- .../gui => gui/main_menu}/main_menu_gui.gd | 0 .../main_menu}/main_menu_gui.gd.uid | 0 .../team_choice}/team_choice_menu.gd | 0 .../team_choice}/team_choice_menu.gd.uid | 0 gui/team_choice/team_choice_menu.tscn | 47 +++++ levels/prototype_scene.tscn | 74 ++------ levels/split.tscn | 10 +- multiplayer/dynamic_objects_parent.gd | 6 + multiplayer/dynamic_objects_parent.gd.uid | 1 + .../level_container.gd | 0 .../level_container.gd.uid | 0 {scripts/multiplayer => multiplayer}/lobby.gd | 0 .../multiplayer => multiplayer}/lobby.gd.uid | 0 .../own_visibility_toggle.gd | 0 .../own_visibility_toggle.gd.uid | 0 .../plant_site/plant_deadzone.gd | 0 .../plant_site/plant_deadzone.gd.uid | 0 .../plant_site/plant_site.gd | 0 .../plant_site/plant_site.gd.uid | 0 .../multiplayer => multiplayer}/session.gd | 39 +--- .../session.gd.uid | 0 project.godot | 12 +- scenes/game.tscn | 6 +- scenes/molikman.tscn | 168 +++++++++--------- scenes/smoke.tscn | 49 ----- scenes/spectator.tscn | 2 +- scenes/weapons/molik.tscn | 2 +- scenes/weapons/molikman_molik.tscn | 8 +- scripts/abilities/Ability.gd | 6 - scripts/abilities/Ability.gd.uid | 1 - scripts/gui/lobby/lobby_buttons.gd | 7 - scripts/gui/lobby/lobby_buttons.gd.uid | 1 - scripts/multiplayer/loaded_notifier.gd | 7 - scripts/multiplayer/loaded_notifier.gd.uid | 1 - .../spawn_system/dyn_objects_spawner.gd | 44 ----- .../spawn_system/dyn_objects_spawner.gd.uid | 1 - scripts/player/input_system.gd | 11 -- scripts/player/input_system.gd.uid | 1 - scripts/registry.gd | 11 -- scripts/registry.gd.uid | 1 - shaders/team_color.gdshader | 14 -- shaders/team_color.gdshader.uid | 1 - .../debug/inventory_preview.gd | 0 .../debug/inventory_preview.gd.uid | 0 {scripts => systems}/debug/property_shower.gd | 0 .../debug/property_shower.gd.uid | 0 .../interaction_system/interactible.gd | 0 .../interaction_system/interactible.gd.uid | 0 {scripts => systems}/item_spawner.gd | 0 {scripts => systems}/item_spawner.gd.uid | 0 {scripts => systems}/object_container.gd | 0 {scripts => systems}/object_container.gd.uid | 0 .../player/collision_team_updater.gd | 0 .../player/collision_team_updater.gd.uid | 0 .../player/dead_player_spectator.gd | 0 .../player/dead_player_spectator.gd.uid | 0 {scripts => systems}/player/player.gd | 0 {scripts => systems}/player/player.gd.uid | 0 {scripts => systems}/player/player_camera.gd | 0 .../player/player_camera.gd.uid | 0 {scripts => systems}/player/player_global.gd | 0 .../player/player_global.gd.uid | 0 .../player}/player_input.gd | 0 .../player}/player_input.gd.uid | 0 .../player/player_interaction.gd | 0 .../player/player_interaction.gd.uid | 0 .../player/player_movement.gd | 0 .../player/player_movement.gd.uid | 0 {scripts => systems}/player/player_pickup.gd | 2 +- .../player/player_pickup.gd.uid | 0 {scripts => systems}/player/player_raycast.gd | 0 .../player/player_raycast.gd.uid | 0 {scripts => systems}/player/spectator.gd | 0 {scripts => systems}/player/spectator.gd.uid | 0 .../player/states/crouching.gd | 0 .../player/states/crouching.gd.uid | 0 {scripts => systems}/player/states/death.gd | 0 .../player/states/death.gd.uid | 0 {scripts => systems}/player/states/falling.gd | 0 .../player/states/falling.gd.uid | 0 .../player/states/standing.gd | 0 .../player/states/standing.gd.uid | 0 {scripts => systems}/player/states/walk.gd | 0 .../player/states/walk.gd.uid | 0 .../player/team_color_switcher.gd | 0 .../player/team_color_switcher.gd.uid | 0 systems/registry.gd | 8 + systems/registry.gd.uid | 1 + {scripts => systems}/state_machine/machine.gd | 0 .../state_machine/machine.gd.uid | 0 {scripts => systems}/state_machine/state.gd | 0 .../state_machine/state.gd.uid | 0 .../state_machine/substate_machine.gd | 0 .../state_machine/substate_machine.gd.uid | 0 .../weapon_system/dropped_weapon.gd | 0 .../weapon_system/dropped_weapon.gd.uid | 0 .../weapon_system/starting_weapon_spawner.gd | 0 .../starting_weapon_spawner.gd.uid | 0 .../weapon_system}/weapon_resource.gd | 0 .../weapon_system}/weapon_resource.gd.uid | 0 .../weapon_system/weapon_state.gd | 0 .../weapon_system/weapon_state.gd.uid | 0 .../weapon_system/weapon_substate_machine.gd | 2 +- .../weapon_substate_machine.gd.uid | 0 .../weapon_system/weapon_system.gd | 16 +- .../weapon_system/weapon_system.gd.uid | 0 .../team_spawner.gd => team_spawner.gd | 0 ...team_spawner.gd.uid => team_spawner.gd.uid | 0 weapons/bomb.tres | 6 +- .../bomb/active_bomb.gd | 2 + .../bomb/active_bomb.gd.uid | 0 {spawnables => weapons/bomb}/active_bomb.tscn | 4 +- {scenes/weapons => weapons/bomb}/bomb.tscn | 12 +- .../bomb/bomb_dropper.gd | 0 .../bomb/bomb_dropper.gd.uid | 0 .../bomb/bomb_idle_state.gd | 0 .../bomb/bomb_idle_state.gd.uid | 0 .../bomb/bomb_intro_state.gd | 0 .../bomb/bomb_intro_state.gd.uid | 0 .../bomb/bomb_main_state.gd | 8 +- .../bomb/bomb_main_state.gd.uid | 0 .../bomb}/droppable_bomb.tscn | 4 +- .../gun/idle_state.gd | 0 .../gun/idle_state.gd.uid | 0 .../gun/intro_state.gd | 0 .../gun/intro_state.gd.uid | 0 .../gun/reload_state.gd | 0 .../gun/reload_state.gd.uid | 0 .../gun/semi_auto_shoot_state.gd | 0 .../gun/semi_auto_shoot_state.gd.uid | 0 .../gun/sp}/droppable_sp.tscn | 4 +- .../gun/sp}/starting_pistol.tscn | 12 +- {scenes/weapons => weapons/knife}/knife.tscn | 10 +- .../knife/knife_attack.gd | 0 .../knife/knife_attack.gd.uid | 0 .../knife/knife_attack_heavy.gd | 0 .../knife/knife_attack_heavy.gd.uid | 0 .../knife/knife_idle.gd | 0 .../knife/knife_idle.gd.uid | 0 .../knife/knife_intro.gd | 0 .../knife/knife_intro.gd.uid | 0 .../molikman/molik/idle_state.gd | 0 .../molikman/molik/idle_state.gd.uid | 0 .../molikman/molik/intro_state.gd | 0 .../molikman/molik/intro_state.gd.uid | 0 .../molikman/molik/molik.gd | 4 +- .../molikman/molik/molik.gd.uid | 0 .../molikman/molik/throw.gd | 2 +- .../molikman/molik/throw.gd.uid | 0 weapons/molikman_molotov.tres | 2 +- weapons/sp.tres | 6 +- 180 files changed, 249 insertions(+), 401 deletions(-) rename {scripts => audio}/audio_system/multiplayer_audio_3d.gd (100%) rename {scripts => audio}/audio_system/multiplayer_audio_3d.gd.uid (100%) rename {scenes/gui => gui}/buy_menu/buy_button/buy_button.gd (100%) rename {scenes/gui => gui}/buy_menu/buy_button/buy_button.gd.uid (100%) rename {scenes/gui => gui}/buy_menu/buy_button/buy_button.tscn (89%) rename {scenes/gui => gui}/buy_menu/buy_menu.gd (100%) rename {scenes/gui => gui}/buy_menu/buy_menu.gd.uid (100%) rename {scenes/gui => gui}/buy_menu/buy_menu.tscn (89%) rename {scenes/gui => gui}/buy_menu/player_money_label.gd (100%) rename {scenes/gui => gui}/buy_menu/player_money_label.gd.uid (100%) rename {scripts => gui/client_settings}/client_settings.gd (100%) rename {scripts => gui/client_settings}/client_settings.gd.uid (100%) rename {scenes/gui => gui/client_settings}/client_settings.tscn (98%) rename {scripts/gui => gui/client_settings}/client_settings_menu.gd (100%) rename {scripts/gui => gui/client_settings}/client_settings_menu.gd.uid (100%) rename {scripts/player => gui}/crosshair.gd (100%) rename {scripts/player => gui}/crosshair.gd.uid (100%) rename {scripts/gui => gui}/hud/player_ammo_display.gd (100%) rename {scripts/gui => gui}/hud/player_ammo_display.gd.uid (100%) rename {scripts/gui => gui}/hud/player_healthbar.gd (100%) rename {scripts/gui => gui}/hud/player_healthbar.gd.uid (100%) rename {scripts/gui => gui}/hud/player_round_display.gd (100%) rename {scripts/gui => gui}/hud/player_round_display.gd.uid (100%) rename {scripts/gui => gui}/hud/player_round_time.gd (100%) rename {scripts/gui => gui}/hud/player_round_time.gd.uid (100%) rename {scripts/multiplayer => gui/main_menu}/host_menu.gd (100%) rename {scripts/multiplayer => gui/main_menu}/host_menu.gd.uid (100%) rename {scenes => gui/main_menu}/main_menu.tscn (98%) rename {scripts/gui => gui/main_menu}/main_menu_gui.gd (100%) rename {scripts/gui => gui/main_menu}/main_menu_gui.gd.uid (100%) rename {scripts/gui => gui/team_choice}/team_choice_menu.gd (100%) rename {scripts/gui => gui/team_choice}/team_choice_menu.gd.uid (100%) create mode 100644 gui/team_choice/team_choice_menu.tscn create mode 100644 multiplayer/dynamic_objects_parent.gd create mode 100644 multiplayer/dynamic_objects_parent.gd.uid rename {scripts/multiplayer => multiplayer}/level_container.gd (100%) rename {scripts/multiplayer => multiplayer}/level_container.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/lobby.gd (100%) rename {scripts/multiplayer => multiplayer}/lobby.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/own_visibility_toggle.gd (100%) rename {scripts/multiplayer => multiplayer}/own_visibility_toggle.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_deadzone.gd (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_deadzone.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_site.gd (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_site.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/session.gd (92%) rename {scripts/multiplayer => multiplayer}/session.gd.uid (100%) delete mode 100644 scenes/smoke.tscn delete mode 100644 scripts/abilities/Ability.gd delete mode 100644 scripts/abilities/Ability.gd.uid delete mode 100644 scripts/gui/lobby/lobby_buttons.gd delete mode 100644 scripts/gui/lobby/lobby_buttons.gd.uid delete mode 100644 scripts/multiplayer/loaded_notifier.gd delete mode 100644 scripts/multiplayer/loaded_notifier.gd.uid delete mode 100644 scripts/multiplayer/spawn_system/dyn_objects_spawner.gd delete mode 100644 scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid delete mode 100644 scripts/player/input_system.gd delete mode 100644 scripts/player/input_system.gd.uid delete mode 100644 scripts/registry.gd delete mode 100644 scripts/registry.gd.uid delete mode 100644 shaders/team_color.gdshader delete mode 100644 shaders/team_color.gdshader.uid rename {scripts => systems}/debug/inventory_preview.gd (100%) rename {scripts => systems}/debug/inventory_preview.gd.uid (100%) rename {scripts => systems}/debug/property_shower.gd (100%) rename {scripts => systems}/debug/property_shower.gd.uid (100%) rename {scripts => systems}/interaction_system/interactible.gd (100%) rename {scripts => systems}/interaction_system/interactible.gd.uid (100%) rename {scripts => systems}/item_spawner.gd (100%) rename {scripts => systems}/item_spawner.gd.uid (100%) rename {scripts => systems}/object_container.gd (100%) rename {scripts => systems}/object_container.gd.uid (100%) rename {scripts => systems}/player/collision_team_updater.gd (100%) rename {scripts => systems}/player/collision_team_updater.gd.uid (100%) rename {scripts => systems}/player/dead_player_spectator.gd (100%) rename {scripts => systems}/player/dead_player_spectator.gd.uid (100%) rename {scripts => systems}/player/player.gd (100%) rename {scripts => systems}/player/player.gd.uid (100%) rename {scripts => systems}/player/player_camera.gd (100%) rename {scripts => systems}/player/player_camera.gd.uid (100%) rename {scripts => systems}/player/player_global.gd (100%) rename {scripts => systems}/player/player_global.gd.uid (100%) rename {scripts/multiplayer => systems/player}/player_input.gd (100%) rename {scripts/multiplayer => systems/player}/player_input.gd.uid (100%) rename {scripts => systems}/player/player_interaction.gd (100%) rename {scripts => systems}/player/player_interaction.gd.uid (100%) rename {scripts => systems}/player/player_movement.gd (100%) rename {scripts => systems}/player/player_movement.gd.uid (100%) rename {scripts => systems}/player/player_pickup.gd (96%) rename {scripts => systems}/player/player_pickup.gd.uid (100%) rename {scripts => systems}/player/player_raycast.gd (100%) rename {scripts => systems}/player/player_raycast.gd.uid (100%) rename {scripts => systems}/player/spectator.gd (100%) rename {scripts => systems}/player/spectator.gd.uid (100%) rename {scripts => systems}/player/states/crouching.gd (100%) rename {scripts => systems}/player/states/crouching.gd.uid (100%) rename {scripts => systems}/player/states/death.gd (100%) rename {scripts => systems}/player/states/death.gd.uid (100%) rename {scripts => systems}/player/states/falling.gd (100%) rename {scripts => systems}/player/states/falling.gd.uid (100%) rename {scripts => systems}/player/states/standing.gd (100%) rename {scripts => systems}/player/states/standing.gd.uid (100%) rename {scripts => systems}/player/states/walk.gd (100%) rename {scripts => systems}/player/states/walk.gd.uid (100%) rename {scripts => systems}/player/team_color_switcher.gd (100%) rename {scripts => systems}/player/team_color_switcher.gd.uid (100%) create mode 100644 systems/registry.gd create mode 100644 systems/registry.gd.uid rename {scripts => systems}/state_machine/machine.gd (100%) rename {scripts => systems}/state_machine/machine.gd.uid (100%) rename {scripts => systems}/state_machine/state.gd (100%) rename {scripts => systems}/state_machine/state.gd.uid (100%) rename {scripts => systems}/state_machine/substate_machine.gd (100%) rename {scripts => systems}/state_machine/substate_machine.gd.uid (100%) rename {scripts => systems}/weapon_system/dropped_weapon.gd (100%) rename {scripts => systems}/weapon_system/dropped_weapon.gd.uid (100%) rename {scripts => systems}/weapon_system/starting_weapon_spawner.gd (100%) rename {scripts => systems}/weapon_system/starting_weapon_spawner.gd.uid (100%) rename {scripts/resources => systems/weapon_system}/weapon_resource.gd (100%) rename {scripts/resources => systems/weapon_system}/weapon_resource.gd.uid (100%) rename {scripts => systems}/weapon_system/weapon_state.gd (100%) rename {scripts => systems}/weapon_system/weapon_state.gd.uid (100%) rename {scripts => systems}/weapon_system/weapon_substate_machine.gd (97%) rename {scripts => systems}/weapon_system/weapon_substate_machine.gd.uid (100%) rename {scripts => systems}/weapon_system/weapon_system.gd (91%) rename {scripts => systems}/weapon_system/weapon_system.gd.uid (100%) rename scripts/multiplayer/spawn_system/team_spawner.gd => team_spawner.gd (100%) rename scripts/multiplayer/spawn_system/team_spawner.gd.uid => team_spawner.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/active_bomb.gd (98%) rename {scripts/weapon_system => weapons}/bomb/active_bomb.gd.uid (100%) rename {spawnables => weapons/bomb}/active_bomb.tscn (95%) rename {scenes/weapons => weapons/bomb}/bomb.tscn (75%) rename {scripts/weapon_system => weapons}/bomb/bomb_dropper.gd (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_dropper.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_idle_state.gd (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_idle_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_intro_state.gd (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_intro_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_main_state.gd (75%) rename {scripts/weapon_system => weapons}/bomb/bomb_main_state.gd.uid (100%) rename {scenes/weapons => weapons/bomb}/droppable_bomb.tscn (93%) rename {scripts/weapon_system => weapons}/gun/idle_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/idle_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/gun/intro_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/intro_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/gun/reload_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/reload_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/gun/semi_auto_shoot_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/semi_auto_shoot_state.gd.uid (100%) rename {scenes/weapons => weapons/gun/sp}/droppable_sp.tscn (92%) rename {scenes/weapons => weapons/gun/sp}/starting_pistol.tscn (85%) rename {scenes/weapons => weapons/knife}/knife.tscn (76%) rename {scripts/weapon_system => weapons}/knife/knife_attack.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_attack.gd.uid (100%) rename {scripts/weapon_system => weapons}/knife/knife_attack_heavy.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_attack_heavy.gd.uid (100%) rename {scripts/weapon_system => weapons}/knife/knife_idle.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_idle.gd.uid (100%) rename {scripts/weapon_system => weapons}/knife/knife_intro.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_intro.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/idle_state.gd (100%) rename {scripts/weapon_system => weapons}/molikman/molik/idle_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/intro_state.gd (100%) rename {scripts/weapon_system => weapons}/molikman/molik/intro_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/molik.gd (68%) rename {scripts/weapon_system => weapons}/molikman/molik/molik.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/throw.gd (92%) rename {scripts/weapon_system => weapons}/molikman/molik/throw.gd.uid (100%) diff --git a/animations/baked_bomb_plant.res b/animations/baked_bomb_plant.res index 694a4eb6edd4555a4217c6cf19686d910875a7bc..b744203f736f9cc793c6e65b8dbb002cdbd1bc9b 100644 GIT binary patch literal 85075 zcmZ6x18^nJ+kks=V%s)0wr$(CZQHhOJK1Do+s4KlJK1QHn_u1kSGVf+%u~~^dd``i znVxs1l~qJUfPn9U1OOafg8;U^1%40!02Ukouz&*q)V|q=1pt1*002kdoP4wTP4_n+ z&;Y>e_txv%=ReYM{HEla$8UnZDf*`KI~MQTAN89*-)&K~ zG5j+GAjV+;Fbd2#9c30Fc)9->sQp)lH_5uA+R5TjIP##9>inNVi{(lS+G;g7c6zK* zUS*j_$2Y6zp1!^U(t!p5weO`vc%Vm7l(|T8oIE8VA2L~z0{^oJohUgfOjXa)@B|dk zNf)LWH*=%kSBG2_FWHPJcJ+NhgPG9%K0hy)^D2(iC+YDDnn_zCuzQrT*9w3d6 zRw13%HOy9|5}kpGRw8z&;US;u?Ee3XO!{l3aUyLCQ8UOa*P6CX9os0DNvxZP$KUUI z8*?wSTny7d%0C(0+mXDbhoq6xua7pjWFqKK>O=l?NHwSOp45NQd5aGU=v-*ll3Jv?nXCCfJFn*UqZO^F70SgX=47O5z9NSioP*%3K1{%%q5&Xu@SD28C2_9UDDSBEYi zo0x+YuvXhO4MV%NKj4o?IX1L-04Jl0Ae;_+VzE67*gbRbDj0)T9ymp(DAbXwX-mo$ z8=^ss4ML@cNFj|%31Usc#SISxk(H$e8P5u%m@;R{Qrui$*H>3po12?ckdTnr0@r#nBtKdWTbIjF(~9R7EPTWJVSCz zRFE28H6umhq%o;Tfm!gL|14@n0s@65{HYzlk5fR$C!qQJjDHUv9%h6S@MNwmMq2~i z0iFPa2VaoB$?r47OQ3mZ+H^sxlH}-()}Cm}XW3F^Nf;z?QbqEAi?~cb`@+8vy}hkW zyDUEg0y*OkIpdA6!i})}fB*ISz2>I3=C;#r_kAF>(#^EezoqXL@@5bJSBS?g!u6AP zkAB10;hiTh0mFZhCjUi-{}=i9KS#aq-f6ef`7hG!|81(L+vD%`?oPK)hHyD*rz%Yy z)<-f|X-X%<;-J~ee6(~X9?eTN@r){c(kQrquKq$-evJ)*9#q!j7wOB%%55dAqB|y{ zd)J@v2V23U45nNI1H*1f$P)P_N!1Q|h353+AG(a&-1zMwG-MO;yy3;PQIvBSgCbQ+ z8lKBUe3Cz5FgoObanrlO&2HMUi|Hgb5JwE)fw*VTsdZ}ZMN3v>zAC0fM{G)BxRD_& zdEp{MYfHHkPDhlitjzCR%f(A-jJ@n93ieAR#5J2%>|DJae27OpTF&F*T61}9>J>}2 zuD%XFB;y{nty?x??44Sx6_`vb0o{QT?OZWI31HN7o>ECKm{tblMl*(MM18 zc9})27wO06I)@0OQ~;`bH;u-4cd3TUEGaV2dOB?AidYKX8yQ9`0vY>2*UWcXk(D_oW=w}+ zkh8jPa<&r*o7$Yj0r+%~x+bAciT4(sRf zDEuq%jfE#~_NvT6kRu#^MW-JrcZ?9=k~&d^3&ONA$IPuewlptGhQgt_xosqitzyy! z61ZHc6e%Y9UjZ)CPlE)8kV)ZyBJW`_g(8s>g(8)Jo4W(B%^tSn;&i6VyPKSXHy$wp z96bAuTh7wW9!`FmX?1&Di;pF>EEuR4jijI4wEc!KKpkf21U+Ql?ND9+y@|y74wBLC z0uzUJz6ZJ8y1MbgNyq7Du>lt+$sQmeOc-`M9G4`UjZ)gtckly!{())o2QaSKYxJCS z2oT#mlvx)60g81D(V|X(4Z)a>eKL)szbuUOgHT@$dxl8`5gwLt65hO)Hyh57mL)dJ z+ZC%{$(GUNY0(f#B+F=8{rV?SVCTJ&c1xIV|NN=N-F-5rNQuk8{CY0~`2XDsuZ#iQ zqto=FNL00QkkGd|uvx8VKrUXFB^hQ1d);|&OWwN_bHcLhG;;em-|R4&&- zD!f+br|F5wFHWq(l}IaF%{~bG;mj??6V=28NGXdK%vsEeGz-LyAEXD`#<}nji1QgX z?X7enT`{H5>so_CVz+O{dOSVYa4cUk>nK4gk)u-A%y@)h`P0eo&_6sMV$Gh=YSz78 zSKMy6-r7oIF!)-c)C{_2U+vY-i4UaXm*0$&R|YA8g`ISro6rq=&#?^4SSswBh?9*htqJ>%4r6(F;3{?LE9g<4w$ z5Tu!L5>om)q3DEVd@xmD=ic|?cge*%>8rC_S4?!!iB*fEf*aD3KfU?wnkLu(H1&*w zZ0IsI<7^(h8#f){XBO1D;CWYU)pqienr&AubSE4@V_&gAVJ=*hWgmO96=}~2#<*r@ zP8D>6$+E=u^P>&Ciys*B+n6Y}kw}SYX#)JU71xAcWP0J`Ud&je?1YPBL!hMP*wX|5 z8Nvx-<{|43KT>aeC&;fz1r9V2PE~d97QB+bPPb4l!sJfu`$<$L&6~UtB=6>mtsjb0 z7LeW(Am-dNZl;^RvI^62nK!mWT*upWn>ON|&Snz(f9@;IQ9N2dP^F!8_d)JXLzOV> zFBqeyukZneupL0UIbcynVHa#SLX}W#JGOH(F#5E9gXv?rHA7a_78$ph_ppv}93Hw1 z)-GWD0xbriV!au`@6FP~APjZ+2~Ns-&W*LI*qfP!C<)>S=?A@+#=u0j2!5M%(4y@I zkTuiCT07{7Cb}b|>EokOQ@OQq5iZAYAaNQ`8XTX`k$(zhchOax@~g_gx(0hlrA#}A zR+ZqrRk~0>T6hg5`@u`4D&u)^PbSjH8;zIU4O%(a{YOPYQ1{U`w_m}iyqm5wu+4>= zEp(iP!&z(=(-7WJfqi3jpz)bF#hF;Eki*dNMx6ITw@l-~()}l*c$tF|=$Lg25H z9|#nFKs?WCkdER?+}&3ro9xP+y$pd^st78&gJIylh0EgB^krgMt$(+&Dt<{B$r14+ z043|rVvt*`usgr46hOd@&u#>wpg-&;f3*@mq96m-4Nm}xK>3vlDW+SDFcBY_-Qy@i zO9Q{c*ofC#zp#*URhk*^AE&+1C5sd1h8!Ma;5u^_t2K-MX&1r2*L_;*RL`m4Eci%d z4Q6~?n;Nfro2yo;A5VJlrTFbC$FwYewhR!xn%n)%y0M?EV6wlhW>9fA*Nmi!s%1CO zitWjUsxYZ!J{7RRC{|au>3wVJ!NGEOpwQlvN?|BgU9v(*#`!#RUi4A@$*Ek`HIyLs z`{CTD@*1a4zeP4no(=M{+yJ-7AIz}y#w{y_B<&nN(BapZ*_K3|rwgCoDgdpTO*L!J z&wZ5t{NlvZ00Fl^A#Y#?_iqY|U)4_@|39RR(MweJw{hobzvUX@rV@)=MsrHeI5xq+TZBg_J9ZG*?_id;#T=djxJ z0?kLq6))wy2x1ur=`{>+d|ZYJg$3D71ZWMh0z1hc>=BGNsCTL4!%K>iB(=HqkY0TIj+>o0fM| zkS2iFY98u*3ipuP*JW`7r(8#{H4P^IyYnc>5cvxBb7U7`9ti`p*JDd*xnRcHn8@Mn zTg%`M?-XwY8jdJa4OFqc<8b+2hqlN+=C0+5wm-8iBeGcrx_Vb|vGhkzL~|-Dqp~SD zQGbAbq(Q-bK!AsB)T;B)CA}D-hW9D69J2cd0`!|Uslj3hflPNAJQt=?b`rJfS7iMm zgw6Z6WTCrb{{69vRo+yf=<%m$0?;k6xe#RWBuiBU%y5U1><7Hil5_+oPvW99Dwa|x1RI0E$1Kh^@5o6jUqZJ8>!ubkx!=)FI5r+IzBCr8WoS4IB%fh-h zksBRz%&v!Y&FO*tjR;+UFw$nJm-WeTm*bUJKPERM^(Ew%=dqN;_+p0;!ZdySRMRoU z->#l@;LV-Tach(tD}u_YFGhNY7L~OYbr6I)^$;{g$Fi)ado6f8@`I8I1X0m%5;18k zcL!c^=cK2b_t~_T=y%@ib0EI-gNzyj7}eimqD$kXSZ& zX7|~o%%(za&n3V0bHn(LI0(90SFBe|AapkpE$|LABMs7r4ukjsHb1FFA|vZM1F|iG z*uA;)tQq?ux0J!bozRu>t{y_9afvoom~bp?*`!qusCmTbis)*}l&hY(Lw@ey*+-VK z$G8HBV_jF%Ym8#o8~1gC4ygp#;X}!S!-b2wE*hQ2utP>kOYO9&f@|Fu(2Xnxg+>&m zp)DyvEgv6Vm+53{*Ij>U9aNwQxhf&y#-*-UV+c*#&b0hmpMcJ!Zx$)fldmvm0v%b^ zMIDpp?QBhQ1)VAWVP-LJPVavIc2-QOffH_YB@CIAhg}g_)R=8)p}X}rrpoAO&z@5y z#%Y;yL6C~^dz^mCh?$Brk5rTeA5fMUM}>XQ-ZElO7}nste+;1{hYB26*NfkdYGUj= z;?`F-S?M9(-#h3`qMX`S5~4W%+4O>s^v5>$()@?#Vem%#AO%A_MbvbC zu{kBh=g4AjGcEQYi%N0vDl&CDYz)L9scJOjSm3CTAYR{20;tU|S*fcA9<nBJu zs*DTgJ2@S&orLC4P>ovod*R`$*yr7|`>?-84V9X8n;}KThv0!dl|o1)WWgk{R3O># zHveTW+{i>%%vTnIzI&1u3GXVD zp*&PJzwx;$31Uv7LEi7~=_^2Vif zJW9#G%BZE!(^;v(!61C=cH&Wjh!9MO@kWI?@nK>v9nLfs3+?CHQOE_mCp19+muBc0 z1I|Z((F-FH)ha=L3Cz(OI8*`LDE@+dorph!dtalq84B zE)7-xAXyBqwUwfv8K})cz<_abUk2_1w}C7=5|!sJ`Y^~Iw53&`V|a&sc{P; zSgrk!1{v7}v{Iyl(Rf;A-32sE*uWNI`;wIXJrygUk{TYS`NLEw(Ip|7YYZvQo05I7 zqVYv&dSiyy#!%jk;y4S7I0vtf@W5f5RwB*|eLc|tW=m%KI^!Sq6^|lAhxVWkxfhL8 zjb95-w;mTD-{8$+H+}_Te_yUr%vCQwBEt;v zDV|n%S#9QR(Z@fHKZ_X}G}8v)z_4x2#Bs&DxxE)R;^B|o#LPcz*>!n(VxXTFY+^XJ zZfc+&wl9qXe3oh7M3AIglcWo-B2EY%p55wu0G}0(DJd==j%yuuSsQ?(S#~c#l=%cUtr$3~8VeUSkiZ=42L_c#%oNS5^~>%z zzC6sfZtMud$e$1?^DG>l4_@`=n}y~Drtnaf=q|}jVyzpu^%Cr)?U3F@r0f%)Q|!=c z=g-ZlfVOt~Da&IFm*klm0YfMS8XSf{o!E~|;4Q7FoRCO6f(j&9jUl}z@0wVtdXk>Y zRcrc$$30<-zz&RU3{N4e=LyVSH7w))BK1>Y{(xIl>cYau?@Q=7F(D0BIxx~tWJPaa z6R&zyOU$|!6<|cnF%r`Fc`x?eLG$`{qzY*S;zmk3M%sr@G`-P;3^_rgq7BkaCFIzq z4|F+vocJgG+`j2z}DP&Mvht5vMvnshfon=zg|Y2#L2*dq@r6q4kDB% zzX9yvBt7!s;?gvcHSoppW#aw;-Tw+f)1TiMwj|xgG#eSC4~~H3Sz!f^@~&M(ged@S z@8w@F7jmI2QScLc!)VpD=+M}e|8G1JD%7LaJ9dVNvnlL)fI@G~0Au%Px&(vDP#I!c zedR4pZ%*FDCkj}&4btHq?B2%)K&Sb@Rrhid_G!!p$F%g?VKREKp%tA#Kh$)L_G7 zOxB}eBi^#VmwDjjm8m&4F4seMHe5cG2MC}q4K>J8 zjv=sAuI3-X4;GfS?X6{*@~sZJ0mC+JfpPH&t_w-WuB!GEiAF=+6lnqIE>0D6w#?lm z>31Xr)`Qm%Dyn2`?vV=wFi9Uq3iNr-F$J@7dw1>BdtwG(0X?A+INn#KGFF%52ucnd zm7|}di%9w-f4M=}F=saJ$vYqm%D@wBabNJF0W-+uCfik~;|Ad6QD!Xy|7vDM^lAmD z_YP~2I&0NyZelmIPQ}Ya$o=`!v>_R(9;+0>TjtZyBdQJGu?E*)l8^t^bG9Ji;~*R> z=1(Rk<6sCtvdnV@e;mu3TYgT46W^D|rNAS^vGR!vcNHQyYrKw3MDG2Qc+c&%so=>ap#7en!fUbsLKJ zMGtXTv|#Qxw=fs!9j#L-yfuSeQ|JiSXFZlcOX&7>iq=n-2ghDVIIaBOsUCk!abJkj zW6ix3qg1S{U&$vR;e!S4CtK#Iz}pQfxw`)c|#D)p%yytD-;e&%J_Ya(9-kERFn<%J>Nod(ugb@ z4}7dhLa|oBcu*3=;DNyf%!Xw#=N%Qeg??qk6_n?_RBX|@1(ohAhQS8pKSy-@J_X=R zn4S6UTp8bfL}TfYbzrL8fXhS~TNmQ+F`Q%f+^TBZ1Re#K1|rB;VO@BV-Che5(vC^F zdTz|keZc1}#=LbO-CHLU(@3t(!yP`Oyp_qpjxkh+#{jl}2#YU_W}QK?OfY_U>_m4p z;1-^?)Q?!b#vqt!uva(nkG^)q9N^+nO_auugH#7M)*#zwCuXiuAF z@hc=VJbp>fxN@a8*VA5w;NR=x`HF*eq7+fiKdwF!+)FWEYx7zjFt$FMvJIV)_zM#9|;X@37XU1WH9OQ_9i5ZQrj{VeK^;#O4=VmyoT=HJ+v0`hV2&x zT!j{pZ+-1N(FI0u6a7l3A~j0fvXw_6oVy!>VcRgFfI|1E`~}*w2l?SZ**7ja=GG7x zRRTy)WfO#;HkFX(K5ous-f(3C)KSPf(Tc#n=y7Ep)D&LBwrVE2qQ|7)F?|&6MdsRS ziB@S91uZ8_Onbs3#S|~vb?O$^16IV7ofX~RFEE9n_E`{n9z$r-6eu^O$dxPpZrG|@ z*ptivnlCSEp{m$--<*t^W_^!@%1TDBF4{GfO5!Q_RhUvXf0kV}$=a$CltCNRsk@#0 z23@{OO&P1E-iu^h{8+xLVQE7|kIQQro0L3|MuzKErCG^L&smo1qex)8yd8!|TQ*6L zDy*-X_PsO$Ga#ifA%F?9W(u=W+yBkReDL0n%z5x?j&aD|hRT)<*4EE%iR&bE$*MZ&Y5n!E3LvAL_fKC|(lztA zBVnHv3KIqGNSyyX(O6GRF{_ffXz_>bfLG_DVP$NsJnWUHH0}P2rZcSG!@Y6GtxSO; z_P;O{dgH6XU6CZg=9_IIaJFbm(|pJeL&IIxqNXVB6swh9x;@KUi44pifs=v+<> zRz4l!So|Uum=msvmZp$;`iEhr6`yRDb=@VHe$1tn?w4q)l^&B~mL-vXOrVu6H}1a3 z)zgE2_GGEKdVAXbc(eER=Md=5 zFEB{hX_%}3WAQgh+x@2I;!V$GrUBxANkxx7K)Mf!?mMZ7qr_i{C4{{8P|GXMwm&Cz zL*}qn&KC0KAR;rYssOeL_oD)UJBK#^HD%i&fp(i%J*K zE{G{rH55ToML22M@sh(RRrC(^MGh1>^wWBN%){ka?8I@D3Jqh(ez+BW8Gh7L zPI0xLiwwE=Jw+__EX5vb$-}^Pw!hKz#tG6Xlu zGkKut$yX%x<}Y(=l_JOl6JO)1QSL7$Ce&T?t7~S(ca*EU02oN(B9AW))AUMAx7wE? zZ@Hms_JVvc;+VGe`W=;DN5Efjixp?Y$-ov`J}Ob8)n{asy8OC_N6Xo?XDS$qO`80zeWgE*E?TzR=Ov=&;S&1Wp{Ty1(?O&&{0JtN0oU|{0jucm9Y zWGflia6gbSW6cl*qD1I(zry7B=ouyw;S2;XVDoW7NtKDiNcVzsqxr2^HMgp#Zwu@c zzYysH=pwf|aTn+{pAdfcTAb1~#`PWnA#nkIiJKK>Q~Z83{yF)k=RY6y=6gf+(f9?B zGc8vt?209u9GW@e1hKKm?zfi2G_kcFb+CmJLuMXvRGu+m96*fPuk?seA3Zj=STWj+ z#3S+r>mK!mfuATPu5i5O1pD(oSaJG3<2O3q;oR_2*C2{0Oxwo%%?JlYs@JaB*?@@i z(G!;){k_*;rJBo>t(}*wj5!M2tc$+(ib#&!4Pdpx5Qd;C21ajQM0D5%7y3|Wi~@<< z3z~*0bFzXq3^jiFDRr@-MKx`e0hFemJ3(r^krvUJ!5m^9_-$5yrNDj(4!E2qr|q!H zaf4>G;chxwv}q^oM>Ap4t=qr{*nfe#n@N;?N;lKv`uRO!8pQnh=^k(SC~p^bj~q=m z1EMf@vCQ~u-}O`So`y#;P!W{~>xDDMfW194L$Q^3HP^VbZ}b9%YG3FO`QDEjV;rD~ zyl7w;t{*NPglDv0w`Z7AFk8E`BA6rcS_0+qk0%S;=CvxOo~2dkzK0EJ#rnzo?U`8x z8@p!!X?=v%tW&Nc;!M&E(*L6?W4AXHvW2hUCVBtIs;$p6R%R8)(1w!B4v$kV(iCxs zH4CXWLklWh6oTUUDm5Ah}EM)L6jY_jN>^Uy-tGT=O$Tl zV}@3;iW)i?XX`|pJL@q_{D;XAd)~`k{5Fq8vT4NkhayF9n497SmPiOZa*@*k@_k%# zvlnj2axafD2Ft0662NG`2F={7$0nm)rI^?~v9f6R=|(IYs6QvEzxB$6M9GI6Td8h9 z#z5BRV!Z60=9DWMH0R3gm&DuX6<^-eo1;h~U%ZHP@amg1oZH7VQGQd5ctA#3f>{4! zWf6GCNy9krp=Z#fj6Tg#leSohI>rU8YR+q)F326f3sm!MkV1>B^H*}lPiODgv>yP1 zJD|ByUJnRK_6B(!0Ck<+8nqEi>uBkLLiw~I+-|6G3JaExDu5DWN)Gy#?1YJou*idB zR{~^O30ZO}1NN5SyXqKggqCNIeyiM=W4-y!mJ0o!7pCd8tbNE2g z@BalD-YE^6#lDGbA+Nx5F_BPLd691O-^B|&nPra0euJdMHr8r$U`PtgFNc@^#K&X8eSHcCoJgM^ti zdXnx;br&uj&bWHzy^3{G5j(AK``{J3s*_Rmyd%qlSvB$A2dMQ4R|q|P_UI#N$nq$2 z(xEfSa$Cz2D_%euEQEayKKO3xlnXM#VwgXt!5%fGNSX0v5`GzL8`#U4*M}NPD{>4+ zC>g!AASveUw6islOfJ%~$GapRQewmsw2$$S?2prujxhyo$LI?xd){f<){qiDqs?Ef zPc?tMRLa+QjC{XYmr*Nre4MQV<5?0;KTN|93obf~BkBS(%dac9NGLowIJeM9p`v(x z4zB5b?MVe0v*OJjCVfQ1;t1YqbU{NryJeb^J8{nm68^xpUX+NI~Jgp9iQlnrZ!b8BCp zg^1>tDi2DcJHbR0^q(BGqU4+23NrnXyu!cRoLI2A`&I=SrE)+`dJpAAOTo@_Cv{0F z1d6Ayu#QxFFady`lJ{N;m*%~ntYsF4f@K(WX5^vEJFO&e>%h}_hehKpUNU!ACSFvg z8O*1gyY&9|jtP;xu>n$3QHbDg1w|aW;!Pik;haJmR?aQ#%;#PGqEib09)dAD#YZv2N!GT*foV$vsRl(9@q^<9MpIqRFIO3Z;G>I_Hb_l^J)HCJ%Q6H4V`WY~SKW!p5?Q{F1TR8eyrFXE1<+ zly!R|Mo9w}mYed2&i8!Y=?R5d5Z!mLPg<+-7QzL(KQ7_w_XBIDSb06c;R#;SNfFlN zRaz!?5xU14hDwxU_XzA$cYw^YghE;Pwn*@wPGvGJjh|1O6>X*sC-;@!Pt&WIyN$qctO|0M6)-%*euN4m1h)N zDjBH2#!4orAYnx$qtKx(&cYC~ECgi6Mv}S4J`g~2d}3OgoJE2oc@o6t*m7Xfsw#;~ zRpD{6qzz5dPt|#6Db>vZ9I>Npn|Y%x{&em85*w72?DC;T4aRZMoj@x+#Xn!=A8&4Q ze(!l}tFtzLj@uqKH@vQXwY%%{Ff``S5=-e3Lg*3dWB5O?yl2MKKO>97aSS*eCcDh3#p~4yKNJLp#;X&lU8`6;%zV}swpSX;Z z=RGSGo&F{DP)(PmPXU%LTIVklpIfK#)@mO;&IchOWyGZc;)TlS%Cra~8^tVWv(^I| zYR zFt!7pb%n)=(5SkxAZa~tb1@#XX$fomjm&#T!vmbbr{)X@2HY4h1xRwiwLKgP+a{N$ zxMT*>D0ZKJ`uPQ1xWyRX*9d1iq)H+# z6Z=lydgGx|8Jf$E?whxo;xR1CLAneAD;B?ycw|B{B#!@L-4IA*bah z@``rjsevM(H(mxG&bR@gf$xeNiGh*<93wbG)YGXC9O+cJR;VF^JOpuG<^`D{s0)V> z!+|_;JEvR%wpVyCk^d?5R$JS(2g0(kL=eopLwVr6SK#{nWQ@#2t59}K-0gP)*b;2b zPSmSq8@KyR!kj*x@R?zPab}B6U0;(%5?dL=la1G8Vy((QRUNG`bupjDw}T$w`}%ecdE&z3xK z;75>)v$1NU0WQx+`ecR24;g%Zv&q_u{fRdkrBr=h2dI+1Ie8Q5Pcp<-Lv)7oK-q<( zZF`VSE-8n-9+a5XS{a0*8MuA?D(qQ*Ph!`{q|U!P^A_-z7L=SbEXtkWf;&GfD?w+0 zP@!nB1;QPJ?Q62Q;xE#8MQAeLqHy~f9IpIJv@Qf2iOBP=sFkHKdqOpynYpn@Z+K?W zRS)K65AtQt9M;D+y9=B?K|PUdwg5@V*`M~c+Me!}>|jDCn4Y9*u({A^<=#to8wdei zV9Y;9*M$n)_t1dr6)sF)(De<>yP_vIoe^iQ$^~DRl7~{hWd#x|bG}CiBx=L#3KHU4LKG&z4iLlTJ^uSoeOq)BwwTOi( zGzEg2lpS$C@^NMzjR-F8O7a9dRclXADCMdets{-5l-wJyikvehK~T z)2``xRt4mY;=(=nRuB-qHG9=kn%#Yv8Q~`pIrE$*6OHW5p)=T*D zXlLbiF1JDTq#LRWosPxmP?rCegNiP^8#Vp}ch0A-^C&I`)?+(7(hx!sko8Bb-MWdd zMZ5KAzmUD}2j9;NQn|)OuGS>QH&^KY?id#mUkelMfq@LxwE+I{vBNI18N};(gN(iO1r#pQ-!JeKF zRtHH>L<>}em_z;3i@%;yZ!4)OS!rUMoa>9D7*dZzOW34N`R}fnN;}(G0+J&gm<5xE zVZmwANcg<)aGdKNtvP1t7}S-<)pXH4t2ogXh`A=sCK<^> zegt56mKR8&s&2SMswDPrK$!!5vl8(M1W~FLz=3;nR#;k{i34TA`T*Rc|8x(uY+}@n zZK?XtNDNibhXskwcBiRnUWp(?Y3T*e7XXQaV9&K~G3B@r>)s(%BHd@k zqAM#Bzgx1wPm;N$bV0+uE0U1uu~U3DNuXsyf&wXy@UUO^T{Q`jYT$1?ap8f)49$8O z<2^dG=NuGWEOFIsqXzW2Qms5cvWhHRRy#=dLHKm2{55hz>u{pKejCwo%>jRSv|@soSU-BrEWu$z_J^FB}$Q7P$Gxx)Pc2lDofQ z5J)DH94?x*5X@*~4E#>sf^ZYz``_bGL!Q$Sy+%hstqQgP4flObPBw2<+uuyZe&aC~ z`Iqjj10NPoZiVIHI8Dx5+c1&(R!t5_>NDguM~X3*#E61KKpx>Od=%=u%h(hr4^Ixz z#d9sS>?ia*gZ^cpC#?O>+Ay9IF-I(|=8DS}516f`c>UbRN3$yz5YU1LIP=6J~QI{%nj9nsie zWZ!IGq*gXR*(V#PPvqOcY?gS=vK0>F|DxP?Qo5sC|3v9!UDlyelT0zb>B|emCIT$v zyf&i8+M|SBI#4fJ*^ZuFh8tq76KTRh*i6Ip)*L^O^4F2d){?B0V!ETR-tn7r1OkdF zWtinhnWqP=WJf17!m^Od0KDF|D?1 zyIAFX{VOFqlvji)xG^^H-~T$g#t@}UE-uqP_&q`0Ifx{3}qt)7C1$4s7uW1Hs~W2-ssEViuD!2l`&)BtJ$w=EJE z>ZcgbwCNRilQDmEVwG!m6SVlS;#_S?A%02}5o*AU?X;Q4$`7xtwWV|W*GWX`q(KkV zU!dc|gt=dtrHyG%AGJFoo2(g})c^Z@A)~O?ZK4zEe(pVEg!8b=MAM~VFYFYgMQXkf z>z5lfM-3aRgQje8ugEE>{K9La0^7fOmLE%%UP7w z@0mqoea_%;4nrzOAJ}9?U%wsMXfy*9kJGkF!HwOzP*hwU0TJh;5ROiUJt}J-W-D>U zs(+X9@Cqd2=S|$U8v%Ab-#RVMF}B> z&9m~wN#a3;g}iCFDR`XZCL`)i6qb}j-hT%6OW5JAE15z|2Z!jv*9<*LGI|l9HkOH2 zUg%)u^NfRco0Bn#Q2u@)h|Aor812)uSj;51O+V9y8TO9{Cr0?YsOeEB?)-Vi?M{cx z8qh6P(5vXxZ4YYdpRecF231|oMd0slXFfgsKz0cEQ;|Jwz$i#hLwkm2#d@w8`aP76 zSvE}7u=9di)ErV(m2Yc!qQcO5Y*{)XS&s+FbTvxc$DMZSZ&y~Py?0cLO>Hz+_rOJl zmmtQ2YxGr@Ood1Af@mm@;|TiRkvlxl9v)X`jGrhJN=Si8{_T3*O#ua`s?}twABohF zGEywDsj)8`p;1*TQqX~)DK*U{pj(j^3GZ^f6faU3HFkt=^!M)}Xrt;X2o%^eY53%1 zV_&=qx?&Z+jC%x@kqd)9cav$rkg2$E5uXm(8!nS!mbm_v`wj>C<-Pzk68KVgH+i@H z$AWR>Tj1766++c)eM=&ElDRwzgf+;4iv;m7lt<@&xjS2~i9PMno9 z$i^DIm{}PuNpe2zg({%+S)%W!v>jrp--F zZglw>1!i?c_Mv$jY`Deopp4fKG;=Bt8t#`}a&h`~>fP!{rx94w`=T$Q)@$~m+_4mV z{3saMR0yVYS6wq{@@2~1>DM1Z+8Gg~)%ET(C(Sk$rT-umeG&e2?OuAr$I6R|t+d5* z5r7s|iPW#!uUW~vUZIQhnJJ7GnI~`5&taWy(t7YKK?>{hK%HG>9{)z*bMq2B=hxNU z9xVs^WWTVBjH|=l6TB8Qr;;tG{^%=f_KGYZ39I#tek84menFJIx0$i6!cp{2POH?E zfrm4&348t9;uxTUg~1(31Gp@vy&7BOlgGeuEk}~f0dTT^rokH@gO=ABP%f-&sVkFx z>7+H0*YsaMnh((j#*GB9Cm&4O5LMBt-?tkW7xGh41bO6Zhcf+;@m5w^7LDL$V#cmQ(d=QX3?Jcq zD)8@_Kc)g#a|Rz&z!2;C&PYRIt&aG^6E|M8;Q_6)$4O#U&ZQ<1)OXf&{`nxUDcJ6w zjZz-bgM3||dr8_fvZShi5!)58wJT4j4#!Vl2%(Q7a1jlZqh8rp4~|kf%%68l&X@D@9Iab`k`Q_hc@}SM`=QXxA~$tg|Ke*1K|-coTcC?2w$Prz7~eIdCS7$^YvNI=A1lyZic|q-e0CDGsHe2mPN-WL>yR5v!s%Y8%vo& ze+psj7>&6tO5iDu1P0`~zyU7rutOH~#<}(^N-VAN$LsY&Z?unP)&XYbd+trr-2}p> z2rwbRKg5-Rm%To&|8-6r z=KD7e)+{T%!?zYG2qq-el}c%=5ok(~z&se-{xT(P9b|-l^MnVFTGNqE$vD8PUeV1C{Qr=34#A=XOSj&(ZQHhO+qP}nwr$(C_t~~> z^Ze&V+&g(My1M4wQG->P-&$F)Sk#bUKGs}H#wR!p9-D?Co`*TzAQ*{5F_+jk_b~Z1 z@AMPWBT)yzzDb9=;nu7qI`*tYC^aqaK)Y~j45}D*Tfc9U*V_q*a z4cnb5ci)^wH6g!8q~iVc`7sD!F!;ATf7kp$h4?w&&oh5Cd6vi9G10Rm;JbYBx!FNb z)Z0jDE+F=sC-}i$u{8AL&ZhNU?^pH}rUa&a^oqS8;YA-qY2sEg5qzA4H-|0ZFZ6`4 zBKEweVF3LRA}AYmIKP9@1#2XazXr*!>+L`>1dS)XZi2pXdE|=wGQuymuEr)s#R2ne z&u;O7A5M^rb()8cI3lhe0^|z+@*k2%ALR@6tLr>Le9wYNM7+5rf3|T}rYpENXKBB& zM5sMjP+TA`1P+WILip0g_hwWQ_za~XPU7l?glMupwt$n0KnhZlAd!%f$lw(m0boQ) zEnGwcM#U*qZB00=&4e(PKMS$b9Xl7{O~bbiNd~h!JcOkyT(APPgxto_DKGyJuMYd< zv-Um}d+@&y7aG0Z-6FsuftjvnA@$2a*zLAxN;bIEsW zbED!)TVIZM?Ix^@?QMIDs5AfAYS~>^bC5hTDc|l=^ZQX>*`18eUQjrCCet-kp3qDU zW)~Z?FWR-AuM4(p5pub~>arL>oiuI<4!UJyZF;M=zhzCK1V>uVp~0oxksDjMCCF?m zeeGJVl|F*#TZiXiWtio9S%EDVddAmc&aHHQo#y?0I_v*<^6T1D_#f4Mq6UyvghS4U zfH5Ztp3Sw%#|+0tTQah}MW^&T1mN$$L*tb+H87N%qNHDV7IX&n6Koi|BjKd|HV6O= zn+&Wad>uz7#-szJ3uFP5Ru7?ovJGxO$oBQ80oT;Wqq?KRV?Hg9SGd(#IV-YPM_nT4 zOzQCg@zJ!#?v`1LWRHPOvu+?t9Pc`L{KynTp@p@3fx9>qyAK%auWrdIR`6<8AgEi* zs(8z)07A>ESd>MrYs)HR%c@Ar`pOkdZ4GPr1!j+UeC=v3fiLD=hU~Q55!h% zlKyuXoMc7-IbVgqAUU!3mXQX4V{f_QdZkz{1V;yYc2gTWX7zi*8bAl-N+4iE!*2B- zyKFhK18J3xK^Y^jy0t53Ku6EKepyO~zLVn4RVTG6ZqMLZA{u}C`Cyfmv1fFalS4liQn6MVR5lf& zY3SWkuA{}PORfnQ1Pr515ETqFyH#iIvH7qcOhJxxxB<$b9Oa0?dw#rbH&b>ktbwqw%$F$NPfxP1l zDr?lJ)xu$?dvb#y<1-4#ogtKApin~cZji6jhFA2TC9ATGAdTj~cPJ1sJWhIR=$dBJN_~)cwnWeI=XD zpl!1n8|9HnoAW0oy^`-8901JdE#l&K?NE@^RFXldqQePqz1;L>aUE(YZVkC6g4J|Y zz@YljmaR<5Z>evSz$OEUW+MiNyt;Fn>bj25n7bVJ1@i2BG-~a`Im@&ad1DiK6b}SN zCkUiQU5Qw6Mtsylcr08{AU9%ng~3H~jOnAh5!>3Foqoh(As*7=VBC{Q070j@G#0gV zj^N?k;XSsjgH}}`E*vwU7`IoTlEh0ZrAswpI|T|H-DhaVQ#-;tn4;7pDh7Ahpxxty ze}WJS*F!MS-0xfl1_yuGW+Lr=7Lfm@3fcMFgC+1OmSXF2oC z9$3K$O*^_X1co<;#XAG;#IOg@Iju2VH#Ri*VN->&16&fd0US*2P-6LAm8AeH%ES_v zC_1J8eXp#n+{>EUw^S+^f%9>3V3!Wx8-olOR@hx9XO8aHRr8O&e9Z46YmB4Bxb=#B z*y1#G>N&JqbYXyWA5ZyNTwJtQ7M{o_w0DF(C3By(@%(pk_R5B6KNoVeT5=Bm-K_BK zTebYNy5JgTN(FnusIZ+R(lf!HdE29Ucon8{7;E_PbHlZu{gh?t*Bfev1dj z`JhpMS|J(PkkQ$8p$lwt2BSc>E)gH+ry{O3Xv6*ZcHJ1B0X=(B7+aXnOAa>Vy?b16;mfo*oW8-p z*nV2bgX)eBV%bPdnnbK|OGqG-2J@R4I@+b;MP{WrJP;ICb3jSFt5F!N)T#!911gR? zP;UNRU=+2Yup9_j)g9G@+Of(qD44WGaVTo9Y>_8+1xsU-g0&|6!)RJReCz~CHqDj4`P97rnHY|a8sZ!tzkm6YVFK-!pb!Bp`|NTYHQDmQ!- zYnri3N&aRUkUX^*ZmaBu%vk6lcfeZ}(+nsl@`_na%doMIc>Xz@&~nIOtE5m%lYUe%`?!;Pf7fvZ*Q+1Or+AER-GK6pgFq$zl~}OA5Wh z#QuV$eKw=cPyjngAtqiNQea?xLDjLCBQG;JnMVq5N|MaoKR>5bnaivOnwZL$PnwV_ z!>eHAHa0~d&KL8X^3RQpr+UKW9JFMcj(f!G68N~3{VMl%bjGDZaBtU}IUN@B>b)f+ zyIoVX0Qhn~qLqtf&YpPoE+*H~8&bD5!`cp|fD7jdfHgA!fw4{8Tg8z0FlB@F0huA! zy-c(vTm*9`RsmycQf5VGH$g{mExpqb3<4eJ@tjuL;v{l)DH3GHXpq9rCXa{hIIcE- zM*;(uWL0raZcOzET;dHF3jERQ5Y$%MQG{Uc{-xH&ux_nH$Qp%WBVggolE>D2Xi07dXpkZHM7L0!ZzZy_e5Sa@UbOl&|ak$$(z?y@?9z2_M(% zqZ*vK6kbv1Yn|&Z;erw4qJf&52eO`Lm{>kHz!^m2Y_uf5!VzuCw-qlv#g+5Pil+6D z0ObEJy%c_tR^j2|@?sX9yNNumU@p?U45HshXZCKS%a-{1F}jcwy6jRfTScdhxr(yp z`kk*G=`)z>yZgRU1e187GB>#k2H*Lnz<3v)z4=MJP$Ts2&VIU(nkM50)zZZu28G}U zeJ{ove0dqK&t*Hf6ukxJU}LAu7n!A0Rb8(Kap(np8HjpZhMs z4D1$9S>|6)ISQ16C0zEeSvovsE^u-0=B!SVLMxJs1x}0X5U;$P4&4zv=Qx5H~;%6 zt8SyL9K3*)3PYNIhC*VQOmk~agMUTZEMUZYfg+Ofwk8}R2nrAgq@i(-RETo2(cpfc z+WOb(+82fXE&@}A8J#lb%i9J{AAul%d<2_Q2oLSuq^y4rs|DL}K;T52EE5djh>eU9 zM4*ka|KPAo_0QwM!ILYW7!9zH0HMH$eh4rSVc1N}Oiazjg_$cyfKAUI^|kE2Y-cUG z-&2ei@4wSD!Tjsl@e7>#?g1UFsm$-eye=sntEb4NsU{hhj#;a6@!6X-i^k(nU&4;8 zE5+5z8)#G8hZERK3m4}u&zpdqeJIq95Nw|@8es#GWwJVM1&a@^MgzR+Smf@1*A_Xj z;)@+w@WhWSc;dzuJHmRzYyOuOWvT{%RrF0JfPhga3ogtdl~N4QfzZB*7}E z;qqx^&gGWV28I)gk=O<}8DVPjY%YY)H;950Za5UwXU5Qc>GccQT4f(_I(c>eluBof_bdP1fLm=p>{BH3TI66xK+}n^8k|c zZ9Ibn_24F)=5x%pB@NiuwdKZzcg&fQ0RyQwJI5vT~kGUM?Ej5?3;lsy_ z=W+s6U2BR>9nz4MStHo6s=?>okv#K{8N|UaD#xNw_aIKn>Lp#IzDU&&I;@-AjmpJ)&(m129QxE~>lXs5?KuwQL3qWfalfS23Y( z;p{C^da@R((41&v5o0_8kj$#V(0K40=N3MUan|vaT1vxi(~jcHmVvEoG{hSJ5jksS zT6&^xE?~>TuVqA}8RMi}mQ{l{1?3lm!oik}sm}wOsjfyFR^{d4AY4f9}AY?a|aNprx0AXL_&$Crz6 zyw{^BS$i~aAvg!E3kIJ57SUN+5o)*{&Ex`ag9E!})t@`SPJW1S@NbOrRR*IdEwwir z_C20)Y-fg=js_m7PJ4-)a&~;3A2(_4FHn^D zRDyL(X__GGk_1_I3-U0k#mrKnp5xhvMnG1<5j{iqN7X1&cSYx|gcuDSF#8j#c5-KV zU>k8pD#yHd%d(}UNeQ23>Rg*hUzceZ(MfPIzzl9UETfwDBT+Le8s;mP{ZJ8$(JdOR z%ps+PjFegF2qWUY?I&XBgwt!@YW|m?ab4;uo{~w|P?fXZj&RxpJOmAS1wv3NQ~IK) zLAC%o(0eje5yHZEbrMM1)a{u-LVAlpXU3C8{#5PC6&#%v5wwwky{ACVZMo`wPt!>O zO}OvVp9KxON|K?j0UE{PX3zT$KRa&aWG)ZYi-&;1#_7@nQTe>C_lK$NBsXxbiQY$y zzi2jFztimcoLj)8E2 zpl-NSLU!0|v9Wu#jKrYKzlz?2yvV}S(#Zn*;eP0HI% z+_9XM0CE`9ib3>HBZq0eXbH)3DgliU3LXC(ss}}rmd&6%@Z6NlJJIY=oi4UG$1oYH z9kz}NPXbDzSLv^rP=K#lMwY*T121Zo3AL%2M1Ss(Css!ihwCnb=l=!U^)h+;0;@tndmeCB4{xwewXA^x4Jm;!J*DFI zTAOqwz$EPg>$AN`!LbWhFM|b0H6p*-G+)7oKXg`r^Y+%EU$@0fQ17nV7J0kWs#Wr6 z%ge_Pw-Q?6!J|D1NZ8@HvvKaQM6VK#hk=Joprz0qxXW0#>?5P%DIJ|EVvIhaL@aI~ z;@<9)+~B1^-SddEa5c#505wWZPQ3Yo1{}NjNldPM5icvBlDNJ*(s^6OUbJ#7B@+|4 zWHe`ONr;=g)_{`fPbmhdGKuj_ftNW;CB^N%TG;SE%CM zYP~{PTmMoH?_E(dd?N9L8H1I*ld-4w4@#u;fwnE zbZnKXYe)}|a=`MUZLFJ5HolM%(&djd{Wwp4pO+YvH!TIxi*fouQVrWLu$G$hA~|CF zY3}x!ydhHnd7Ty;XJ_yZ%*_Plf=iX(5hDTyOjQ_?5Rm{0#RNb=R&LJ#{)a+X0z^y@ zDWahkOQivi^?r-{P0$@Nm2BgS?R@`ahv|z`z^ZF~Y?`#@ir$#v%{9@aQ`!@%_Pv(+{6Q zs@~{yKAX$scE1%2vk5^!hd2%*3>Ts!#IRn$dZ~0dXQdecD(mQ8>m0uMQ8EK8ev&L3 z;|ctR<^_Wjg5!w+MNudS0>bA&P;c0u$AySiaRL51{m_Le;^k{o94uJ;T)!AXu{J~z z`+pZf5{hs}H5cj_j+q_33g~~$bFr!bR>cbcVQc4R0RbGaL>?^&E{7FO!n_GsZ;O)|sR|QrW&u`Av$x)uki4poGQwQ<1fGrQa zZgAOP7OI!#`jXMiDh#OEa;jGB0wc5VgyMG9uM0yrbBBxnRiFOqV7@engZoPzrgDuO z7eB8Y=W%EM*o>#lPplbL4T2>1q)Wd>xM4CKo40U%5VHs+0(AOBrnQZyV*XH~6nWIn z@L(=3K47zLKXZ1s_CpvhZn?K;n6y4#8UXCbQC(5@DIEM*!$nk8c>ob7@_J`{Km84{#SRF&&10XaYc=@}0rT+>;l&Y5VO|Nusji77Hle>@ zFynSC01XS*hT0~z{)vtSNbe~%k&q~8H-0MQOldVp`jW^*#TG$`&A)P$&MZzny3epR zq3GcZ?aZ@sRUWELFc!h;hLCrSzF!U~sI+u96r>!N_~TYUvfKwW4PDr}>sqYV#MZVY zfmG4V?Lxw}+pQ>4vDg{}{Y|Fx{Ts|Y33`6+k%?+EE~faU0M@-L)X08NMdb%6x>?^G zKaX)NzV@#m_yQ;*?iAoZIM@2a;(pSj#~s7XVRsQSa%Qa9X;?uSR90CzuZqnHN5sir zM`ijHpa>qI5a&WV^_FDUzL$w&4A63-cS~uC$qUCKf_GY%ZIxZ!&xy`DfYrSKP zBIYfd6&GJR+1?qNT~JWSnivocc#AB4?X1daLzHWmlHxpX zmUti%!^Q{2I{f1vzG`bR+xzy46&l(DWc=rE5tL((Nzbvj0q#pFQkoMQqNx99Nc^2P zU=jVSM7c*P?<@E!`dlGkjUt;*_`_+6bI3AEO&yPkT$2 zTwe@`Ou9H?8hAD2hL~)B0hV(6ZR~7tzrQwq@L$@N%50#J9Q0c1EkDuzvAPQ~U)az4 z#kp5NN@@vu?P74NXTyFTI}4BX_O#s_f?4uZO}nGvbnk$G?YiE^c4qQF4VNR$kA@xi z>F_tff3_f>-CVBYW$4~$lRjb3g=^WnVv)40$!c5E zXn3@&X|$}1AhfI}C2C*dRq+m2Cr-$;j_oU1YrvZduyiS zqn8eU3hR;F5QnvW_hFEErIV!Y0x-oS3s66XtF-Qjz_I-duAr_N)qDm%SezN9TnQ-% z`&0wY)r&|rIO}G*6msG8j3}SdhbUd^Cb;zm&SS3`6&^`5CU5j7U3<;10{VoMhVXAl zu8hy&II=kokKQrq$>LP< zrkpR*rRub-BDBqQ~O0V@$| zvG8V?L*Xvs&Lhqd-T;AL2o|G6Tp5l*d(+5a5=eTo`B$xm!qnRsGv{s+4cS{s5)2z3 zJAZdAGsxdCuJNgARJst(lPq_`X!${#y-ERTv@diTa2?Ae)C-9XfK4^<{a9w9H6af0 zI|h5QfJok5CbGZ0Wl1B$y)%dVM zT=t{V`J%HozU|Xa8Sw}3&FJRE9~hT%Yb=ua6H0zcVIug@95!M<+&@Cn*X7d?4qZhc zt*4fG93u$=ChmX*OuRpRlUx~xzex<<3-hdgYeH+dB}CnEINqbp6#e2{5MNOY*ae6p z*r%SK%*WekGU&WkAPU(B$&BaYx;N#CV#gd`=z0i#I1_8E0KkjusHOHifpnW#)Xa5jg(+k=h zhhI|j?VKRqRwS^YbB|m@ds|*s>~`X3*zhm^D-i_zA=3-eP8rtt_{ULN^;S zzmFW~HoCCdlfe3dc>W`ZiC|I9=U$FI@6zP;7R*L`#JR@n^-_eTJNOMIp4do$^`@C9 zVH${e%019T5Jz+@WRFzvn=9#C$gZ$KpyCrboe~8qb1HmJT+?U@dA5&XYHj}!n+DK0 zOfyvNW#L^(`75cwdRd^bZ&;-G1qHfUz7G;9%Q&_3o8!B3{E6yOlA(=r$UZQ#!G(hP zjsaDXg6$mkq-fdL8AI%+qMwEtuQR6_+=?ik^Fsw=yuW|VQ5e1m>-l`D%_vwWiR$PX zm3>n-`I?LnP&Lj0I7uEa;{ZFHr2~MjBYGXmyN`G4!he zJtNn45btlcaSw1F;md-(&UdO39Ir(%lwV@pPdgZ<2Y?E!cNPvEo|W?eTcBKCFA=@u z>Ef}kDjx8QMk`Bhpm!~RFxHW}A02P3(CEDw_!R_A$FX;Kc*n3@Rvck{Ef}lI6VP8F zNFW3v;t+y}=B)J(w`Gwm1V&U432Lc+)qn%gH;Lbeb}+u%afqElXh@P16L=U!^}!`1 zZR28)M)wNl&hi!nlmVF#_}>n!WE=iXpf4MJ7)|}&B_n0yYLG_v4Cd}Iw1|W- z0*?g9qyT^{Nb~{3A8-?fHf(Bhv}dgMm3R&S4usMW66gWT6J(GGH5;J0%rf+3iaS=# zZ_tPEQ(1yonI6ZLU^I!HpkM;NXJdx*G-qKbnEN=*8D=vN1JBRPzZF2y(2+-cfmr{XVZ^;x zuUk?$CWqS^75WnhK*T`gK#U+tSp4STf#6!U_=}LGUoM(K_3?>&sh9Vbt!}6qm|n38 zpu2RNNABJ=IXSsMuu{oi1(%s`4QhYc%ovknYV2t{J;2A>JsJPp%`5O2sa5;N3FXN^ zwlD`nA^Kt*MclnLEt8T?Y4(k^FLHgMI9H_d@I1&+rloq{W%jbq?s^CFnt@6yGkZgOD_d`QpI!G7U-#BN z-=Lp4s3T#B!riUuH4pWEp#c)Wu^R$7?|}N=)=pC~Mp7t!ws`rL_ifCSvQ0O++0XUuyFx(woqR6hiOU!aUTfTkYdx z4ip%q3`-ar>*4ux-P}G`9U}P;U_Fgd!t+Ma;#s;Gs!f>rjZm1t_!e6gW~ zGb@&_D-o0EuQ^Hv2IWcvMo~jH2KAbhe0DiLp2O8Ur{8iU!Q#8kDSv$`{)vdGac)HD zL|lce(IePjOHgIf(RHnhChL)~jUv4g{B%vNw`$$&WC?jka7VgI=Ka=6;%;$2`!yX1 z-exM8>ZbYeVxm0v-slW-$jKr~mPEtS>&yH8e3;9PmK^pjf^jecH2t%djN&CwS6!t=X#VR<#b)<%X+er3&-J?{!nZCJ&V`7^l&Di| zJTXQ88aR?_gS(jzHf_E91FN$kj%l|fivDo$i@ucC>2uLUkVT9$CSw%5nxJLe5HQmT z`~?h^%d=q&>2Z^pM+kIZa~TM--*qE>-DQNjw#Jzh4o}~VS%R$|4DX{kMb*eY;E53r z)!7I0{W4JYe%(P78kyvh_Q z5nce~ay*J5RsGqcwU>)l-H;GY_4|{-y+l**bm?uEK%a!o?6V^^wKlHRyNs)Rfv6V6Q+ zBs-mYj3;8)E;?djHz#mIZd2KEw(+`I~v$aHE- zjw{4Fnv|mxuzZVShCfJeKPn`r)<6gi`>P!?_=V&8Y;1cQ-!F+KOaCxS>yxpbNC2Oq zg0S2d;h1=4)!;jo3hB{!>FBx8ej)lbfPO3t!ueHA3eo+c{Y@Mm2*v{Zf)ciON)&1W zuvGtDmU{FDYbc|Ss zL*hitgOERgzHmoKqQpKvjuIOAMNq!@QBjEP1vp8UD})Cn^BO42R6>=}_VxGmB=y6~ zn~Y{gG3VlvOWFtby7((uBLfrk0;$dZ*BtC4OfO1P7~?Z^GY}r>%tNFx3n2>WGd^x? zEt>jARJ6NVG!N}={iqfgH9YS?Y4VIf={*6nVPA~xGZ7l!J{U41{W~jAH1(f}N2A}~ zeAb6LF9J$TmcfRHUwijctAz?qaaLc|4ZFzSm`=3{J2?u51Kuv5!?k4d5 zM{h~qC;VGWFhOpVPVB_66K6j6lhnJH*_Txy+}$JFjVfK(pnxDY_4ydoMBn8y{&p7+ zpZ4$mJ|PRmwF)V_ySs-AeAA$~k07^els=X@xvptwe0o9RzlOUw37YjLa3o_LC~2KC z`#};AsAV-9-uFlhK`xinnB(pJc{M`PHo$1BZ_ip5MjMeHX$fO}p+zTxXG zp8*f|?Dn5kj$j5NyPKv*BnA~MGMi}b!lo@$o+iRbXqFmHGykjO- zb3#`)6PYAl2{a~gxj>ZPW z?MI>^o^MFdn^bzH2uAf8R@-I)Yn^DX`p*bu_Km!i2`!sP;JK0p)_LJ15Z|J>IMnQ= zik(A?0!EShu@Vx(sK~VXBtiffDOlIHNDNpIX?|0fx}urMS%UcUJj|8-0(p_d^q((f zlAj~OOX^l0$Oxiqz<|wvK&lV~kw^gqB9e+)8smSER3vsp0~VspYUvZF+dPNi`F`ec z+#@gWWlz6mcio__6WO0wm8PcFoAz1$QC5o#QM{C_0wPYg|ez4Ie|on zCVke>0f^US6oLv_OyyM5dXO8=&`r8M0R=*kniB<=K8(g9@uS2~X^(CkuPGW=yjq*; z(sSI!N%$uGtT;psM_{0Z?Y$6~=T=&kE3RB^d$nrSsjs|DTZ2ezx&QoE`}wK^aMh|% zNE6IVNrA&|+FkJPuc%uxiV%j&nm!ybi8j4rT`XgWt>4hXRbwxWG|=z09K(xhdD73VyyBv?q`!o!5LSQku;1!@doB1#Qs5?HxK zh6@fF7!U{`7N!CasCsP@+@hfL=E{hq!g8MQ`8mxCbDZ;Ynn6wGJQL*SJTsi(ra12= z4W+R8rbZS<=BE6Pb5fn=Msl2?v`w7G()Lw|#SoLviL-I|tx&JbAk#aF4Sa1L+tOu> zx@Ae(8jq^tm4F;Ob+6Z8sMV$%u87kZa4t})%Oz-E6WUhB5n7(JW;yav$Iu^Ro)u+r zA;pYsL<9|dM1a=Bxma2@ZEZ}9h{@!%pBv%xaapkBZ4n}Rj{tP|386WLO~!E8EUvNO zgr1cF)lHn@#4AvZnhk7UkYOm-sM&6Tpc<`M&!3YMuvgERZ-JP>r~^{AMb+v5SEGDI#;A6MMSuKv4Ff~gm6`ST$>xdHqCcBQBMT-)mH`%$W zUGFlsLXAqJ-xibXK1-8{iaz+VG9=D7A!I=vNlJyzrPIdmpU5VBfB-|WX zznw?@VyC*66ZNttg6+EZBmx%ax5jgPwwa^uwK%#Hxbu7Z!xUl6X#-oLk?X1(r(DmX8CtgUs~ z=g`lMq^nYBTZw}H8)R`sl#$qmRdBIShSk+^R9lcGDgEVn};(GKAY)eXhc)T}&jf6|0`exgA(xBwq)t7`ka^=LV z9zxIp&kYl~d$7N`3^UX?a6S0sVdJ`raucOvCvNl*#a^^dHF6xsKz)?3zhY>71@t9X zsNNi6*8D-?hk--L3Y9C?wK^UkLQ8Yz%9So&OjfeDLjXf~K$O8k#qi824>ar)xFx}n z@eccyk}W&|4V1JY1F`Ow?e$7WlZld^S`Z1b-UVv(w#mMU>>I-N!GQXjy5XXSdiB`M z#Sh+DeJ;AuY;R~E0OT-fan%4HYr#p3H?JEOTHyl&xm%e-e}c7q)7Sx9z@^f@>#Ih9 zv3Of_TU-KL!jTb>$4q`F)(w~`oevHWh4v-L{6}m=>I)lrzhn2s=FG1Q1;H~9UhdOK z|NY=@U&9L=(gdFE!4Y8f>vD&NMY@p;T!oux;H8Tb0DcQIzXxt3yrYlroYy+|0;^wm zoHZLZd-j$^`~tG~{N)7t(nqpCm~M}A`#&vpuo$s#w}=;&RG#g`r^D1Z9y|*0u_ObR z29!1-0y&$O(#!pBx@rp5xFqeiM~SOn?=A;HV%g{5)v+e7cgqeWq01X$G&3#8X?GtJ z0vuC*3*)#7Z%9kI5@gsH(w`LJhkCu7+CImh7BJrUX{$+FwnQoou|{%sTvFT@M6l#qaO$K)(4?2*yztd+R>zvSA|8!Qlw6# zJ&;a9O#?qGKu{6Ij@An94}CxapOJ8JYaI4P2`)MCsMWFSCGG{gdm)_p2{eI!NLUBQ zr0@N7Wnxtpa`{vfF61^5|44CfBsCaX!3}ShZ$dV_= z6AyE{19JU_mcj|o?iBA`k>`G06swIcqj>ia=cOy2R%DzVm6k5P0KRO6R4hta3{msu z{XgV#V1dzGl$sz{Z1A>$0-^_a3gQPm#Y-Oz*v_w_K0hrcrYu0nMa?-VEZgs{ns8-+{d7@)5Rh6wxr7$xKm!qFQMkB5xOTE1j0S-1+$+~e zs%wQ6_=#6<1iE#daNn2IU_|mxX|#Kd(syYgY-tzWx*6eAtXx0B!E0(^T<%%*Atoft zr+KU=T3E%OHsRRY1d6Bm*kf!(pT5{^M5muRX2zMmj`t@_46p(bN0}?vgF{Ne2r{nh64E=)k{Ye3O(`hJRsY@P;_Kk zFmPCYQ31qSENeiffY0xfIdb(A$BP=jox`m%js}@MnK)2z z*^%Mq98F>+e>7`UAJIPUV-O}#q@p7ou5X~agA)(9kYx5CvNGr57GCbdm{Kud^@Ft* zjSqBut;H+5jAh~tkH6Aqau99b=K45VGgtq8q`rt2S63m{qt3qtTU@)9{!{t$??m-6}R2cqeavuaFV-m!5GiJa) z&DRKs=+Huh$r3u$fGK-7_xjQ{*Zz`c8^kX_Fmy53Ze8rP2xY%!c*W;ESa%K2h_g(b zKD(AxQBL=1Sn4!*QQjL8g*l35)H6YnyEGgpqkMixI49;JIj zC=L~V7Ko&p``t(=vss+_w=zq{%E4 z!C4LDU#hg7H(x$Im|I{# z@(C5<&Nu+;(W`&YV0sXzB$QM7rqdHH#&+j+pIp%*WryJ*E0WK|lZDm6$4BRf^h)XW ztHGut*Q=un!eU&fFbIGi<>O?wO}m{fj3=uJxqUvo$B2C8jO z5){j)J%QH)%jsVd5Su))B+|#P!1R4CL)Zt~E!yCIL-}IEarBFs#R)7B!*3XFq;0-E z0x~A7F24Wo*bylG<|!vSo`0X9j46wYugPz$cwIYi%+b0a4mUat=xC!dWt?&4J7rw1 z3?jPW{A*kJh{ zr83NFvOT)E_7o{;_-Y7Yf=VJ%e%T2~`=qjXvFL;E!gfBT-8*lIE+=j}3Kn2wDLqSd zj^@HsbNB_0j9!*`k(Z7_tsDKp*j>@tqY!D)KFK+^A)~*Wq=Cj0%_E?VczcqPb7oyk zC)jl*I1Y8*<>$wJL~aiVZ2RBz^Y^)F`!=Og)BSFy95AFYaO;HE*)%t7NF3j5|H6&M zSr&6cI{lK@Ce#*izpvnB)te%}CDZckxeRvIvG{bRKzZ?flKqs?SMa9H{!+0Y>*ERN zL~ZdR=Qq=;)c&@@&Uc0+ZX?*uF?)V&2`F9Yi${E*6N&W+tc@`%e%xNgk@gd1jHZ(` zewGoj^6%d1Z%laNBNtR>Mn1?UduM3f71ic>gFzO+u6`!5>YhP&Q{WL$HV3 zwHz}vZ5fem0_UCROn8(N@|eGO$jd$%$`!R_T`lG8xsVG3Yg{Yi=FdpZ=Nm>8dXm?n zKl$*vHd=`V-LowlX7nNB;<8S~eoR!^`XR2|q5NyZX21Oz=+y-LGqVkpe4e|WVOgn` z|9NIWci3#4_vLhwUm(UX_MrTCcSaauVb+QC^jA{4qGE+lHNioSfQ+?10`6BCxo!C3 zxiZSrtbo9xISO0o7c!pMbtbvTlZ~}}oyqqc9aVwK_mTwfBVLsoU14Zecq2!Oh_s)} zg;XD@GGhnM<57WBD9WHwKbC9KeaQZlO_mS-WlA`2zTOFTGR=3@tPLg%-ZlUZ!Qs7{ z=yk&78D`cx%>_R8$f$eviwZAWW}`P}r2_=t%Q8~E)=#xjzKkV_Av_`rziYApE|up@ zK817E;i@pe%A$1>{NE^JTol?Nwa2nu+kWv z$sdMj(Co0cFGfcp`a?nN6Oy|d_L~%**c6oLz* z-}^qn=rc&loF_obkIczCc3D_P#BumTX*h7E@+tD_nfd_{3_!B;jyM7?JaMb{xz=9R zySJ@?x$V)SK_!V&kk@(Z0ymyTzE7FAu55pnV;ie^n32AA4WwoMD^EWR4Qb(5VzbH~9eO?SQLMU}WbC)91@ zt)BGk;TM{5+E^1ZQGBSyrs1ZI^yaI5Y?Mp2?D;FgM60V1s=vhH3 zU(RZ}H7+ATa#h7*)KR}{-0^-R#po+e3F*v*Lga&nHgPFGoXr(o2-L+dnPNVa;xXt@lGcN_lYq2e3d-zj{ZWLAKFpe(>qWI}{%hlyR^hFRkZgt1$x$oQv?P zwU8kElK^|ESqEQ2`_orI-`_y(@eYKjUz%oSG=$GS2O^MP)#bofrd*k>V#DUCa2p-~ z8cAQ8LuQ)l&w;OQ0e*w<43CE%byNoQtCL~A0fnwRt#mci4e!Bt=slGm1Q&vu(oHDV zeApECsifGP2&##G){ygIP85GC5R5B84Ae@5YcB>sk)QgSbR{@%`pAx&7t@RLQVhR#j>ZrX`kU)pZQ%4WUWPVHx$V-hy@CI1Mv=BAOk0l`WQb&*;p@;$PjJ)$> z4je{_l>F$KET5nSi*H6z-@3Ghu#kmcsI1|A{8GGikL^M4_oG3at^o(tFUjoQs)BAu z>oPb87gxVC73QtmJsS!i_oIGX=PFvcm$|aH_ITWV;P6MYNWIXGh%?Gbd#f4cMzYQO zs1_nl1#pbdj#O{m&}ARdYCno4&=(aS{VU78bpWqzB%A%{q7(d58RCU zGRx`SfyKU43_$nO1@%B8CT|v(xSOT`dM1Mr?gXmHo839G@21mdl00)wKPKM9!qRu> zkzwnQN}mB{9N&aAb3inrzg|)99M9)JH34;8qK*I6{rD^7(6)=?UqGg-WA2&O0#{dYw?oEOaV>2GjX76Ym%_U0T*;ye z?zLy#>x9Q{o$sFa&Ueo{MbB*KmUp@TNm!k*`5tx!apsIk7)^4-(Hijj`A4fyJEZ(s{tsrFa2Nu5A9+Ay2S7;MGz=$sRQVB`f-MI$KLS1(s*l(Rz!AKV(}JJ z#J`0&aRN0i%YYf#nz#|ifNIzDMz1j_Q<4dsGhIcf9@wJs#<{o1Xb0H>&jQKgGKI@m{jk{Lu@XT$;GyTA&!^W_{oYz4yUk*E7Eiz;%I9cw zbh;xE-uks;o8yCEtQGO)old9Ev1#90r{)mNIUyb~0nuYAc70BQ;#&dV7^q_=&J@=o zly5ehK8NP?);g&}Kz*plT0=CRxs{#n3;Wg@R9iwCTk@Q%m|rfJuH-*_)z4ABa^W@? zv1WLsQt3+MIA2A9MNU#A&Fn;iv~SYtxst&wPt`NaZJcaoEm7KhGMV(c#UW31pu-$B zN6qXd3!kU6F!WR^XY-sG0`nXJnTKK6kwD@-wFq?XX7kL3kAGh8*WXQ?nItMM$ycEwU=DR?o@Y;Cz)ZkBi~TcV?OZgnlvpl>j)dk_7Lpe5{Un zzy76V>al`*<~TxtGXQymj-}Z38%&~n*##nVUz{ts@tSoHgMI(yyjZ-XfV9zM#s;f42(uG z4ydyo!uxeLF5^$Hz_|%CR${_1KlTAJpni%02oI6MV>Wu;?O~A6vvG{4Hg#Qt6(_Nu zY@5v?>*j7VUOe^07KfU`r6Hi%+Zvuve`C^os+9?E3b8d3TH4OgYsv@gK0CmEp1Q+K2Tprkbfp`&e~(b4Csgn23m75-q( zW4r;B;C9-|UYAAo)Cg8Q=nH|E4wwO34vL@RajgL$z8H-X+@3%t^ixGZIpAQ^jUx%50QH$N@Yq46}eaa@n>)@o7y)I}F<$1X)I#Kv_e zdB3hFC+?>hsPvcZOuXW*&OTD?`W_z$Fa0BHZ=5=D2evjlfI&iMGH1VZO;UT;g2YL! zXBUmZdnpz_+WSI|x#thiCVD>I$=;8b)&**>Co;=q8SMwnra!rn!Aq%C+PmV7Ib{jB z9VnH~cjWd`=N;|!L4hgPv^NaH&R3}7rBiFP7Y>W*V=nT~R`x!xzEqi{yF*FPQg&}4(m0*&*97)a!x0*i&5%P4 z#5f~JCSA%1A|K6j(-ssm*?zk~{cRaPdZlVM5p2l{IE4_Cb@RZu9Uooss1^M%$!45T z@TJ-GL1^Pgk^1OaDKs+`UPy#tFYNL?6i$TJYRHIbK6J}VuK|M1NiHbF zvRpcq!@`G>h}2zOsx#k(0t~%hr}F3zEpe!&9>r!sAxKohP(1W`Ln{%@v!J8b-}C8) zHpD!%fwY*+0~_W(w;52BN}mFO-AAb=h}G^WXS%W`jgCH8#_^*8PLE@?2h-rtlP;ui zDL~G44K=nG^YTY;9T8nGF1pi}ODD4%`!NB&v;;z|$Bpo?k0_N6H)iq2@-oPEp3wLd zOKlrTCS6Mv`!NU~W;A+Z{FzU7A5+qctrc=(q^15&5jT-WM`vQ!^GYm9lg-m&ebE|)rxgp`Nz0Sp(cYYTDcjD;;tCUxG`fp?*uxGxr& z5R;Ou*<;?Xw);}_S9hMcR7`z{O9?P-F~zRFLtFZ*WDRcow1_By43rHvNT|EOxceAU zU$`(5YakNE7&efsn_t+%e%BN$*Q+cEH}TMFKc7#}aW?l*6Ee6dFlcdQg#FoG&8Ab^ zOnEC*7q{qIVMY|dxx17~w_*_es~!wyE_;@9REgi_0mF_}LV9exH^W^Q=d7BVP4@QW zvCk@Vl-k{F_hI|SR`wyz_1G~B@|=w)^IjyKT|=wq3LGgt*2Q7mL?g@0hXHWUz+%0~ zot(eIN$E5@d*&x)XZF@|>1a#HytNLjw_khnUR80!NG9D#j0|tx5JlU`^Dy7#b$6Ec z>qh$QuU=Vs($QulGU{wB#jYQjV|?n4EZ=~qIkRn0+E;^wo(2`+r`9uPs&UR{6OJ~E ztedA9l6k2UB#t%ZWCqi4wN*TyuGXUHqmVM32HQN_Aj7iP;GmC2o1BM*95A-PQ=nRK=|4?h(X^EiQ?e0#$+%7E*NQt3yG=seYG%#pNa%#a-* zt!yQIwFR6*cu{0#fLXPxz_6oP|K93eI?&^DF5^*Q8+yNfrUvS-50d(u2ain049zZV zbaVxb4F75bO;^C@53`%+fjvdB>tsTN{@V9Ow^_5&Pg0;Z;a2u)7`?x;xzUU<0yP>J z)t=@7`fHFz?WT>C#+#kCpjOYNY-xX;QK#p`VQD-sJv%V#=Ft~`{>sFl{WR&Kkw~!H zfLN?Ub@2IX1w$WFvDIr%wEvz@hX%p;YXD$ggad~@;>NqBIGqmWZF?)-nj3k?=-DY~ z`!$=MLoUoy6R+IK0SUKIhhaxqF5T+J-bdj~a1vSv_zkkKt)DU;8nwgq7A42FL3dv= z=~W-}J}PwR`g!%|;*iY;!+y2+_|h;OuARPkiZcvsC*H4TN&CDs(3ZQ08g4>DcDoqr z^HRqv{xTpxG2_`x6uaI+MTeJO$#beCE6#i)-FsWvt)lE+N)_Q$C}gj4gSGVr30(yk zsh2Lj`LAU?i$iqlFVRC62=XevFb|^;xbw1Z{s9Tni+#bk77if}SEpt#!D5|h4xkV6 zCeC$4R^5ph@5XyR{YXoBATyNwhYc|f$P~7ZBFH@uA`u*{3!+PDN?_YHn|>4s?}6Cq zdX&4u`JifSCCjBFwK3p>I9d3$4506!pxbpyr6V;Ue~_^$AEKml?TsRvE}3)ywV})PohPPXW60Ma9de>v7-8}GEE##?%-UqWNkOCo<`$<`aZbKt_JmUE;*Dtn|0H6 zupa*l#MY_ZCBCH!!*0W3-6-hnpMf5o1`avLVqi|9nPCMWE5rhyO zKNW95Gbro2LZ3{z+UJ72&8P2pZoYvwDO`N z!-hg2!>Ryc)-%cx`0vA(9Y{GJEI>9}Cux-F5y&@Vv1ZN7)@Np@Z6dY<;sVwJ+X8-A zM1U>dDFhj>8ai$WO6nd1jRv$@?N^Cpa3{zpd&d#%#biu5LAvnj2fMvDjitM9;i= z1;3v;%ohi*tpTE1tvYC^mUFq8m?@~_d=O4{M}uAuU%GplUFQfWN4$tb?MtOn&&)zP zm{Hvp zMi_@%jE~B_^zm>!9B{Ir67EJj5yKUWL?tCBp8!TQneGdkz4n93Z@AEai831zE1M0k z0_O|NK;8lDK36jVnT^QgX2Y|<`2scL9HBUlo#NOg3JNEVZJy#dR*H$@*rw_f$FWTu z$2W0o(-aSY9dU;@ry@=T-d-HX6XH0I#<2~P%ZUMc7A?xiJhnJKxp4v*C61l$2LsQ7 z!Ugi6gvKXbjc||QO~1qPdu|y7S+NWB36RjgCtyqGI@1&I#3~zE1V7=V0p6064&&|2 zr%=L^r(|t;j8cPSp11cs0)8IYhTrH2k6=+D$HcGqb$)(c5Fyu@8+Z)6VC!Vi>wZ-s zpXY(oC5V}ObUGA`fL-@fyMA8Qkoyc#@#rWJ8M$2dlk@vLET&75SUrN_RXVWUx?kOp z&qER9K~8EsZdqkE(Q4gq?eFs{F>oP4?4wlxo=mb?_v4v+y%&NWqygijQUW>;BaZbV z7VCXO41cdf9vx$0N5x3;P1iylgvCAvPc?_|=-p46d|!?8(^9GQ#m-iE1P_+G8UyH| zGEB8kc=MkEOP8=1x}D4zKdQ_DdV=KSyP=-*WTCN}#-RMvUup@7-+O?Sn-+xzC%At@OpiSFMrhoNV^LLL>d>hsaji3Vo~U zRNqvq|5YaEKMNRcs*uOG0;6>t$M1E>zjeRSgX~@AvZYbfDR~lYUh2SEm9v z;Bx=M4I`IUW$q*^_^*gkXt3D7V5I2M8yIXP2)>U+EfEfHeixIdOT(zyNGWn2tFKBk z@%vpO0`O_o1{+Uq^0VynNA`A?0!}ZC^tHQ!VbzI_*`@-sARK$ z)eUl_$H^`I8GA1(g(z|SRCtcA6!o!vQZzmo7p;^4fX=jKV)Ix|-}gcpx!ix+!{Sa| zb~{2H0I$1bE@H9YG=UYbeiCj7ToxX~1|}8|g5ywiojd9l_}L{V5);2qg)-++Lc$v- zf+t@_m62?>pET9!QiV6B28?n7y2CSihn2@-}Hh2*4Hw)o=mo{yPviQ|(Pa;51KzpfdA z%)dOu47qdU-z12&9ANh&JmNTo9Tes87H{n{qDfS%Z-xLE z$5~=vPf-GSYL_z&7sqdAxaBxiyFInV##6yl^qG^Q-w>YJ)-efB4a3wS=KW|_U~U80 zV^clJkA%hm?KbHBG{&pEhJvwOg*W{p93}06%Y6+^!er1IJ^LyN^ojPoXsuTJ8>SV= zo*J??)=}06v6bl#SnLDfNF;M^t!)ZzX#exQ)Bs4O-$r9AlacYaD=aDTJl{RN7T$ai zNR6@=HoV<6Lho^|lIXO=?+Z{!M&7~)!S*Vk$kkX?^%-FI-=zGIugHDbU}tvjNoIyF z+io9D&W2n?N4&!lAo9*6PaU^{QI3QYvt=C}+|1gN#!#((+?G!nQiHc_>BGyU;h}XL ze_Z7i84~Mr%b0gw2F#WA8uWggVig&3$>NryXt@S0qV$$l`*A5g<;XdC%Qx1znGZ%f z4gv%jfqTjV}&<=1X!aysS~!rmTY+%u{3=p zIr$^A1797D`5BCY!u2DSQ)dq#^`*`4-qZ3 z-M$AlGWoJcl)a^M_z?a+XsB%V*{<$nG?PI)D=PWY31Y1TwtTe*lH^Y>?!Hn3`9nZ< zI%(dYp+u*wh6Lueif6o$R0R5H(EDgbP~4{Qa#KkqKWT!eF5+^(Yz&#>Tp+Zkz7St& z=AwtR+Rs)t219-|Yn(g5nZMyIODh@lK2X?%UwwVdXcqr|4Tqdg0@!_NmO#I<0yC${ z%JOO(7}1Da?oU6^xs@g1>?vg7)q-5m(+%!cm=?^QQJ+^cY@v^6wGYG<=+|j?K68NE zZ`j$PjbyXmGe*a;K3JKcug0UOM>= zUonkQFngi)G z1OTMHiQgycV{$6JF!KjOTc5^&0(x-J`$cY*Ztb+0)x7xmw4y#8Z#4c4 z!;S{B!pNhnjXQ^gjwjpErGIR<&t${SpR&lX+&zqSANIq8&Jo`Hswrcf>Jzztb`1U30#l6xZ24CZ zWI0kG+?I}Y{{jX^^bN_$zjoR4BPn6_v}*fZW{7AT^Zsj62ad#6WlL)?`3pgM=o*RN zulmt*>W(Yh#{;MbOT(hOgWiYQbikV`XxS3JEB+6wT8V>7hvK4S=U|cG$*x{B4KDYG z{?lsTCdbPym{~Dfz&ZbiJ0dM3 zoAol6SobQEWR3)&$G@Ej(tcR1bNRr9yISMCNT$V?IHJ{k)v8O`VdG+9c|Ls7{S%=) zI)+s0ia0)=bwFqq1XcUG4LLN7IQAluI=qZ8XYMkvus8JXqC_*A20%Dv%>}d>ulO#zx5TL9%imvpOIGk$iu7PqJgy~VnaEg4) zN0GTRxj;F59kDpkFo3quLCT0UC7KcqNr!ojLV#h7LQ|qCNim>NXm;3*Gz_D;G(jDa zj!0&J(MUsjS9DuSt*R_=$8I}Q3LA6$7h=a&JyQmYa{PTNLq5Oc<(=m}G5|oguoakM1OiYxMoY$}YzJ={X`{%8+W^G{@d`epJJSYP zI2pm!0`X?n-13UD@;R}h1IF+?dKY6u@74m^0^0&Nx{En7m#t(rlgWG>PMq9rU0i=5 zS%b@jY<2@|_G2(9)?AW$9mbnTjumHU$8r4B$Ru^(AGF7SGUOZb@PWbMFA>0(IeFlU$R-aU?M^-cSEh$ zKp~>;F1WPX?I-bBYbQY!-A0B7>b?@v!9l`DnsLN6Y|`yE9vP^Y%4lJ+*_VKU$rDcs z)bnO0ZU{4~6&!w|DaNgyC#&bd;IgF$ChJQ$c3*)IkQ^cIPS4Y8lcAI#@KD;V9G;rV zP0J)buK+c&jwTKd$>C2HQe4yXYH-O-1`{0}yK)yJZd+CUyn5b?7;=~_Dy-Z9o0YS? z=x!B2H>2mtRgf7Vf?(_MiQ^bU9REl~DTw1As5p)Zh$qDH&y$8Yj(_4f28!b!r})ju zX0>B+N4>Lq5y$aR9LE5}@lVtKasvB!uM77H&xC!1B`HfB?-5JRSAgh(>r@wEC&4hm z!Qnm2Sn@(hTeuj=kZmR_54HEZpFC84(o`Y$0rbJ%3R=N+?Cu6=gwNrth<3vzWS1FT z(lqz$7!^KN;1(Tb2i8{W;w@^oKZnNQV}Z3am?^(4#j;`Z&#p=yQSq3GJ-;#voYlXO?w?u%p*A^(^ z1RQ=kdTx(J1qU5QsB5d;DQe>VexISl_kdJIo5|8)qn+t8aqMmY!Zdyd1n_7!5y;um zB7R$%yNA*^Jk?YrEe8l}kNL3NdT~5!wc8DWf&9Xk1#?if`rkvLI-8rc6xMsnP^Y@+{Haa=J5J|Mav9WB6M#BZ#1sw{ z_}0ccS2wRbbZUegJPPq@sog%M(usOP+@Vh?6S-86IhEDwQ;w>Z^4LL~om60X5aP*M%DbpdRYQF6= z^b#(cF^7FxRm7>9dG;6(Mci)%41HSI$fu%slieXM8!t4jL9>bx>usznyt0* zY6uxCN@@vC0wzB|vJoFRNY!W5TUQgi*kb zQLXodu~*xY@EM3JFdF^FuUs2|71yhDdU%Nixcys2Q4WQK`?l5W%ky=R~8?kAk(OL8#!;>F#uJ4RCy#SRz^cV%6$(Ry3}} zpb8WU{UuCVS{(L#bn6%(zd%Lvq`80OhLEQSxvg%O6vvmm{BSy*f9RIxIcQba?aT;q zC^SJ(+U)}(De+ul+t6J+X?fO{lcPbx&(|& z&c^g54@o-el0b}0NwL${6qHTQYhp(>@P056TFlO2N{Ywaz{AvS;E*+vK|F95ezAU7{_tS$e zMUu*Sh|xJ~knk@dc;sJnP;|8%Fyu1si21|y`e3Foes+UGPn!&rGlc2PSJCKSMj(Y- z6S2CABwe=7_$X%%Oy*xEDdbn9psr%W-C`t)y?F{8{!6JxUgJ%Wj%Inu?SW*Sr5wBO z0AnGSk!IOdh#;#$#Ic$+V6!i2M02MJ1)Yt$K%Ix_&3rUS_-l%s;Z0g<`m|}tfyM~U z6t36*wiWRsB{qF3CIfE(1V$A(zBX1G!N}Zu&cOUVg!i#{+ZLbPYTaQXag*10tXi%r-1L$Rsc*7{a z023wDZubC(Q0g>kJoX4XY-BDN#0(A+ZV6Sc)RAif>@QyTL|-(5*z6YSU_2fZWsCV~ zz1EzQkn8pPP@y=4343dT?#aRIz=HkzW}n>j#g^C)ws8N@A3Qu!b9 zgn~e!|HaYAk^0ctQ@Q>KR&)+d(a+*hLJykz;V68(DTunu%7}P9IcE9ZQ z*p44$n_x$^`j&H54!34+hh;H)LlAa4qS1F_q>8_QQnAD8#QhK!;2cCw91p3-7K>s& zq8z@N&*^+LDHPx>-mvVkEG(V~kF6O;v-x47;fwe?YBXz?~Cl3^Ss{|Jkvm3fK!)k#nAR+Vewpp=DrRQREujS(6RB5 z9%UAkv1;)RWrkII^O|Y*cRCDY0p)L`Qm~evkN9u4uH(4aTFpbLLv-7f$SO9aDyZ% zNE;E*?K16WX;v;T~b#--hb#+w?-5#j{D77#BU;qzw zSOA)#v?fC!NaN|RfFcP#m4P$9RzX&F;u|}M6-{onXA)e!x|l#MD7)DxsX%8TSmmW& z=(Sx8bIZMT1SLXJ5{+O32%!($f*7~Wn{?Yom zLCe5;fu^H|4+VVaSU_uSq_qap`bqW1a52A}M}_@>B|}`eGIqjf{hEdKy>hNU9f1>B z+!he(WX#N$#grqjh_l*vYN+hRFoo)B zZ4|s7W+N6GzeQz8uA4s6rA02kF#$P%*SwcVh@yLAPO?kw_UI;%u0L8#P z(52TpFDdy0ftT0&wB<=GBF1Bvrk(gRZ+pIAVZBt6VdAUOQkORI`FPI>FHuo%zq^ak zydmpAqCh^~cXok7-xOJtVl`fl`WoYkPisT8r}c{?YeXEljnjW5uK6cy2R+QpmxvUo z_(kPqSCeXpXIKhtd4zl+;KF0Oco4geAcH)|8Zlb3+Aah~hNA&md)c6(`+*8v9yab& zc?S8})`;E}kGWIIIJjQ(IzM#eQZ9D%3}Hy_U!fkJRj%(Vk=y_@cwK{xG47b5yevuD z`j#ag*W1$URz^`5an1@BHMPzGMUXp`R-4ZX_wVux?}G=%6kx4_fO0wzRT3h}dzMXCKL8HFurP{{XK~Geg3CAlKw-nE zW_;A13kux$d6NmdgL3VQE|1LOe#X;;^`WH36KSp0GsK_kOuzyDbfxwA8S)2fmlPNOEx^DN>eJ7NR%{okXY3@2 z#Tyjbt3+7*EXKu-nR1I$?7}5Tn11GBh+Slif}Qi>+LN%I`B^RitmT>?fMDd{7-3`j zdB|0)^H}Y=0)VPTsQi3}6dT2e@~$C{T}@4`S7+4ywhv`orNV)$r6%Yt${K$=Lx{Wl zzFa0gI-QJ+tXD%^{`O0czx+(N9cFatVp(UuU7{6_Rh_wFjzrzd%d1zRGJktE$166a z+!%n_zL7}$_Cr-{cB#buan*x`h1IE@2>kZRE4ESj?vd-0`sU7WpHwlA2oiAJ^cH(m zR8*%n5djpQks7!HTz~y1Faj$~i{dTWM3^rZjYH@IJjdAx| zJ3Zz=MTsk<#bLF|^{Np!Kj)wk6G?dagfw($n3=uG7BC-bl?HzViyt6YRe;xo@>m@j z`=Z0j4K~8XYZeKtHg$;sV<^~661QG6N445C83)E)cN3#JulW=P<8ac7%cS|Tn+%D1 zI!4~$s8fyjOb<7^Nt`4Hp6oT%~TwQ<8S2z)tdlJE*A zuDDZA)`sgV@|jFvn5>EOf1ot%I0y?q(*Y8Srmbhd`R+K!ug466B0+)Z9~kMfoqQSc zmy=iE5fi*#0^8$$QX%ax#nxaEOfBANk8?kf0^%*XfPul54u8XDm>nf3@!y1j0W0Nw zS2S-+2@3OWV)TKN8Xv4fnr%(0`pQl#yj7IIpD>}foD-I(Yy+zXS$G#&+_nQ81b;H= zYlDIiFJp3XJMe8@ax4kfz-jktfs%X9?C&Fu5-nf``6DJcH=Piehnyfn0C1$Aq=%GE z2j}*XKyaEKAv?7a#VdJR+I3Ap{_)EQJb?{^ZvfB4uESFFj!44b$14AZh1zyi{Tm0- z;0Rl%cOn6dZO8Y1qY(%gLZ6S%!kA`Xsd|5rst*o|Mmsf2nBQYUW8WFsuV{b}tRKjH zFL@aEU1o?s!-v#~jXRa@>cNb0ZY*Rc{!E1mc+}K7RZhwGHQBPU_&xB6QRp7)yPVDPh=Nk^X zWwY8&wAN8yUIc*XL7Z%Uji4x> zduDE5)xh`w_t)h+8s6Br2MMb3S1WgG84$w{^%UM|`@JT;&1_2Ghl@6{6s114uw*Mz z3i3m?2Uk#NuSUT5V%~VCk-_<)3n9J5AB5q!x0HMMVTZ7){&`M8yNy}Ig&QV5@qNia zmyz4fj4W;_0>xaCJhX;w%n-{Kf$wVg^~j=aSABuCTZ(Zy(^jP#mtk~RB%E{Btb8)E}a4;cU8vm1{Ll& zVHqo_o07~inBfiX=y1X=mO@I9FhFZ9C04+Quzu#YMxMp8uZ0BcBj=$rH#PDsX82l2 zT72Ye)T4xHG8!PRzao2jHf%0*8$eDnnH+^LrQtlKTV_YA@s#(%=={-%sej|N*Ly4> z%1)HTi6^Pqztk!LA+jZFc(=qV`iPzm1p@jMZtW+PS_tpU*zmLI1bj>1C*py;P+K`Nd?)W!dZH@g<9nb6P_*&lqB5vA>27_B^_@XJ~79 z-w8`BB0+-q6y0t*%$zTi@Frz=M~Pm*+1K3gqeXw2AM||4ISAf2S9m=<5%*2GqCG+q zNgN92H4^=r{W>B9mEsFTBEEG2#xI72`sLwE75(cuM9tICgD1W|tP*;wM~I@aKz(`O z`-rUB7EX_hPb3rj06&YwJs9W_z)Gz<_+K(E4S$ed|F@g-mN_>Bmid*taZBY+xcie= zIcEn}h8zKiK^DYuBtYPS15>!=Uh#&0oiV1qFk-}E2@YRgTYZjzvE5{}m5XJlV*`MKtb&?qQ~50~gjFnwT45c+Y!Zq2>U_Wr zxX6iig#v#9hXUITz~J!4Qd0F!&AQ)G+x}tLUfN#wau@ksTBf|AV2-Ix8jp=NKuPy< z*THvbk$giz9NP?Tp68u;j#0YG%ySHkd7gV_4f7n6gf!1{%skH%<~ioYOclj$ab4Aj zs=@U&&vO9tJk!i`%+cS^U{d5e&$|ce#A{tzd%#1ypTQ)FpVhiS2vPG^(d3><0}_1I z4p?6_x*u55^Zu~;y&hfBkEtoZ2Ze5{S`aVKl_NjbLFs+`;Mv2$*-AN`-T;6!yak2d zCn7X}l6l@=FlhP)X%_s7K(X&oPmoMf?k$NTeM!5012j1MMLP~hz~RmHPy!FZ5K&() ziXVyqh3z zqP>E2FK*OfwOV(Vg%<9Eij6MByuMhkMG7c%cXtK64XI8eia>gCk1W-B-dzW@xR5J4 zv?3Vbi?O=4**sULla#yL)5hh1Xua5k`{E(ZZ8irT{;+Mlzw^AYNU(IzIPP=t0R16R zbYr(1`)7Caxj@+b!y6j=PpjQnA)D@n2k^VJj&Dfmw)>*d$M3?_Zzz~#W1EKhr;{At z6{5u(c1hfI+3be0@Y6em>RyWzgFmFR+;dRqjuK(lIUC?URuzs%Tw=K6CMma65pK`a zYw}e=c3x2@Y*S4Q=~$*z9~;Nvn~X8{1=s7&M*Vb3@RVn=fb5+V!q{v$INM6Cr$f$d z`J=Qi&**{Y?g0*Oti}_aaZKomG(h{toVKlnKwST7zdseh@1w-1+7wu=o9oJ|`|-Sw z8cFeEB641Im;Fv`eh`p?{}^exwOZ}gcBMT>j^x*L+3`~v-L}&t<-U>Qqhp1=bZ7VP zsf11U)+YU{n!7gSEeole!yDY@eo)E%Ry^vh4x3N58M1Kz5aV}V7<%f_=E)9_cNd4uH!ysn zp@?8SSx9Hk^SrrRa`3$$Aw7XphbQM$QZ+RG=_zY5xcWMBUQd+*zDRy^zSrQ}f0?N&`Wt zRvrZQM{3d=9eF)?gc?-@Uf!M950; zs|!~8XNBjJr}$J?EdB5uM4Eai2J*>sUn9mi9FH@-Bx1vpsdl)Y8gM-bo@gr``D724 z+)l&|wXW!`AN4KAMqDx;E~SJ)jfMm4ExBG?6PR2JW~BZhUf?aEmend%eZ~Myzp0q| zN^e*-=nZa{QNYwII9=*F$q~LXsk4egtKDS@5a}AMocah4ySHNHg6hxpy2<Jxw*q?xb(I+@oVs!`A92Z6|Cv1%Sqt& zI#r-v3R{+HhU;~Ik=b>+Gw=6|RX!x2jcQIby1n4M{SJ@qL(EwCM<{_+92}h8wIoJI z^7r#3#QNUx5=7O4=H})KE718kQ1T|kIPW-tNi_g)cyC#P(ErSO{sacSA9I*ey}`@d zTAfjy5NOFugPdOMgQIFwfvJDRdQXLb@1qb^Rco@@ouyNxCq^K_r|_YADA=#gSgm`4 zpPcR_Zpy0w$DCYo{Y<5$DeReEwUyr5AeiKV4mQd)P8bs__ zw8kGbDfvx&#-;?w>zEg?o@#`bS4^9ce1qFkSQd26F63v696#|g2ITd+qa0iGErQ^; zs_J|qlad$*XGg90b}nA>W65Mb;#dn5WA7sP=sy7lG9IxhY%iwq*icRxdKV}NpY=KY z!_C2sXti!En6=(n=J{J70$=(d0hpf+%;Z}SP+B+M-t}}I%OittdwgXD>Gm&X^_!;f z_!i2GtSy;d$Vc@|-YUMu0?pDw?p`9KcdDX-Z{=ugsQ{n@h8ca<1K~Fq!*mI8btIBg zk3+-_x1k07qND2?43Oi0u=sMZF%w}WX8Mnw;)(PbaWF1!cQ$?On|^P{AMc7Bk9~J~ zi6;?W3QYxmb<|W=BC=DEdj1ChNb)KmMy?MF-q?oXyXYq#r8#iNWZbPwW*WoQ!kvgD zc1IL)7g-smHBex@iO)+Hh8E8WhnZ3^1LI6yvpYgClRjX&SUW;6lMPI7G6>^LHzXiA z&5$wA^M|GwOiPPz;e!CwJ{{xb;-m1Ac!6)>0|)A1T$ne@hL7)H!{sAD;Q;C;kd9X> zNb?&D!Eb$nrXhhEuh9p7*W`OLCm2wi?Rgzg>VBOJ2tH29Gs{M0Kg@v2SO0Dv%HPZl z#H#-E#nYINNq*9&s%t<7UL-`HcEW&ta*GTo@qSE>g48;JkS~`n4FjKyxcIUs1Q!rZ zS?tjTKF#qjdk%%Y(M*T7a0WgP7GL%Zd&S|H3KhT&#Ly=B z?Dxo*DbcQMX}%Fbq-Z_%zC8ZIB114p%$ZcK&d8Syzm%zjGl`y3KUlua>n1zrtz$4Z4viIe(5Q=_;B_z4(8U&Vnc}DLm<2zDZbOs|GUp`R@$H=X9 zA@qj|{{ev6s4*}iAcP2spjb>&TMkfzXp%Gs5zs*yL2HjWkY$H@E8JvRcaXmVtpKH3 z$0ChSx~M9k%>T8r-2E4HTpdS&w^q2xluQE~Y1cYnj(3VMaY&H0#*jxv0LRPBNC~o1 zf~=GvD^r@D9Awe?gut4D*aM zq?p>b@7*rve6kxEKK2i@LZ59S4JJN&V4wr=y5N42x@r9H|Ns8~!<>uDHW!iDN?c)~ zh}ju-Je81CGc_%%Rkcc0t5mhB>Ru;S0VuUE{a^qO{apYGwtOo>5Fn1H0|6N#cuIAu zhoJ(&>c%iO`%p)^xR^BI1UF0}?=DWrP*?-ZxV?6PVcA25&B``j`x6DIAb_f%${-Yc z+76=vo&cyoSHA+J0#CFa^TGREj%l;1JunayRL*W)H-L4xHH(WX8Qw0W>sNq~#JQsI2u&Jt9)W6DdHa!zS2Upm9#tGBwdN;=*1??1C0+ z0jApp%-KC>`iBX~2kKVQV|}m?nND+7i5M+-bmxDvP-z*A6@)yWISX$!nY=8n8D^-> zBm?&p7xSGLE}Ak5hF4YgFPJ2469Z<+kz*R<{V~T8^h~y#?2Ob zZ3+_{IF5Ez_Ude=q`D1r5{t#=x}qq1u8Pd9$XV()E;zErIhl^ilAUMNi{ioy0i&$FFb1$4orP6$T+uKT{M$Q)@Nz(}e zVjXtLa1xqqCxRk%$F`@17 z;A9=|o1vhfvJEc*P7(i3P1x)C%yA_e*hZvaJ|u%2JqO7IcTra6 zI3ZD~Pk{7!+|U02t~wGXr3&=``2L zz}r?VV4kH(g0?Ce!gd$f?6b!)uCr2Tx2_nNin222SW(?i(5y37aHH2AZNN)iz?`Fu znJwXf9$shjOjGTe;0e=dz7tB?4>GCvod|GfH3!(>Bq%iBdD12_eDXY7f@rk{m+lkXt;RHoX9bKv|jZlEBcJbd309#?oj?j$j9iQ#7Qd)hi>B=(9;Gd^AXy z?=Io28@ggwOpt0bwAu|sT)PDF7Pc&s_kZesiF>fLU^Qp94iUCd#GXOI4LMo~s z0MD5hS}{I)L&UY5l$ZLu^cs;BCl!@>8L$bj0Zms0(pSt>L(kz90rO6LvGl7NXOJW0 zcPb%xra6OCd5JMrn-nj^q{uf&1QB&z6PxhE_YKdTA8JWKY$1vh&5? z{9%b=QelhDvbvw4N1LCq(~C;-Sc}iN%zcy})yIr+k(auF(Z@i@I4$esIVd@~16{K6 z^ZAU{Igu8tB@p&fuhiqd%v{9Pi#mdFi`6XEUW!Eu-*hqZ`@YdTatFj|iBg_}i#+b- z&QnrWMlZ8h@r*VTui?fXH&b=e*f=Kx9l^$8Z{QvS8Xqo4(W4OfWX3LrO#ISxi$_w) zids1H@zx(H|7>#eO+g6J0Z7QjKWX(uF06kP)gs#M0_Lo)qxk8{=5?I7-vmpeUP{cw z5#GX_3>%P-s?ZpX!DoRuXo<@W?F{_@b48+OP+pr-ObJIaWZ^+*IY!s2nDztN1HAA5 z9=gPVYLv!ae7fRzbGC1Fr6vq@V?Ho_kB0K zO7H8OVfMbS^L<~S_jQ)NY0xq^Yn$8*IqUU(UkC5|3casWMz(%ww_zSH$HEcQb`;vc zi0_-NFwVB&nyuFXZMEG50pPf~FWc~g54W4H(RG^_z;2Y4+1i)53z@k24Z94wZgLA; zLvb-%s|3#+AvGNj9y3 z!%fVUmFJVp+yIWN`ys6zDLV`? zTn6EdxFGlXLj2|>X?;pT_ zRbGy<6$=;tt^qv&fmN-lWPCwQkTYUN{RJ(UOov_a3b+UH5+DU{a|OpgZ5b(GvAN3( zLag)$>uLN#Jk$d)3wSb?kd}4D9D=VQsv2@A-`gX zM(U<|m$8E>C>$}Y$a4@=2xIC@d?cm43)+>JdTasaWk^g!_{O#5IPn5dKqAJ82C)zU ze%wkEFW+JFgqW707)VXmtJK-^1Nea>3ji&Cu}>}q`t%<5V3ASd!M0$E=}-c#{FEY} zvM8Ecvr&UPX^Qbw42+pIGHpIR1bqpY{U5BFGc4Hd%4wD(nG5nDJ`|!g0I?%gtZ^eO zo)5x~moy_1JC6+`@2>FiA@)+FWmegC4w-n78c$w?05H_pMA>u-c;Q0~17E};1!|J4 z%^11pLY%e_ErGZ;He}0LQ|NqJj2@~_uoV&RHX5Mfuujv;=t%I#zF$QB*5X*o$f0JdYZ{TjfEkabLFLl$ql_ zN#6?5uNwa@qlSfVli1$s5=PaJ+9tD!IFIP{uPFG@h!Wa~nq1$(0Q^@_rQ84%nrTEC zcVgDfcVxNvD+3Vo6v|30f3+2W#i%hHA|Qkai7>~X1i+^3t<_AP=(NH60Gea?xbHL;R`1RVh%c~)oKL)@7&MI#u& zl;HLFOq`K3MI#uA-m0;zX->qcP74R&o6B&jE5U;>t2Kln!s0sD5QZ?we}u-|pO7}} zVmp7nsNP3ZELv|+R2#2YP}Qyd^x4sh1*>4kT~Q4vwJ-f(01tIt06MmuD?$(;uIDFH zZ-!dnlVd&4e}|#cma>kmcnFpYA1fHYMc|njlNrkY@McMU6CtJB|FBJR{X`U(?|n~& zEtqxa*ip6BoLg z6%1Rb42=283%l;%4Ne~GmtF1Z-9lCZXDyv{9fo0(5?%1uP9 zovnq{j(2coIIC8-+sL!A_q#ZAc0k*ly5fT<|wZ%0(d--L@ntoJvQ*7STdOcc+8RCDq6tr4A`OwJRZ(;O9!%a9mjAjapOG3iJ&N~G8Pb$cGDRoGEW6#eUckl++`=iunO2gp&n5z6Em#y9= z2E*_Y3_o2!kORZd7BCDK02jgVlZ*un!%rB7abWmag~g;Q%FJ4%Ignh3rGL zGBKb~xwAw46ilBl1zOpM-?B=t{07U+2XlnuOE>0?`1gH5SSW8W!QlsM`|>4elIp8?Q#e%IiQF=>H@Nt$WLTC7Enfc#bK#SiGjIWV zDD5(W)e=@~5BkC3Q?&zdqzekzW~Mk)Dzy()E&qryC_gF!xhElEcuA$5NCD38l>~ts z*+sA^gS6>wFnq-TG$p>C?iQqcd@LrlHFrQsjJ}oQjvw^0<_qa6C-?Ze0R(VA)mP)Oc#(N7ICPQK zYS)nEztkVpSD~!pyCeW&Of=dzSka%up!b4E2=Isx6n49f{Qw~wUz(}q18uDNL~52V zTD&gx*Zmr>&iHMcmtRzp;Dt)EGMk@W6@4*lX?Nva)J_g>w&z7?XvjG4? z!oqH4`2A37qCB9B6+R4>lKTeNx0s&)H2B2-LA}09Btn(xv~zCLchchLqnN?+jdmmg zVYtgV9)FXj03M2Wig$G2%zL_b2|s?5h&~U+X^ek_*`!#ly}#vsCPgUk7sSUu%HZ%s zD(yW>^fSdhc|R>L|M=HsNu{^<$Ewei=H&gDnEWG`7JGYqz5girO=4UR1*?pAq_o4J zTJ0N8=|e>*@_#R;`0j|WenB+ar-baEf!gJ3vQ7U50*fA`+t{T_JpX_(Tb{}qC;m|S zp=-5x{b?!a^BPvX7MjXy={wQusMKCTufv}z_IN~Vlo#}2?LDB-eiVr1b1A9v-NG+k z3L|3YL0H&_tQq_fO9s6p1Rp$~_CbG>B>O1noOm^wLq15Pq1$vSn;{e6iy7_kn+3#q zImtCGM-qGpINRuF0}A*no}ATcl}#kU_%)ooXdnv|cnFx0VBJRf$OZIYk7in^if10f zh6R;Mc%at?Q znW<2V9#=f?HCQ0Y6>Hj0Vs6ui23^2 zZvu4O#l`#tk`kiQy8#9Bem0E|I&NZ}qhw8x&Px33mPR_3Ajdql)Y;nO<0p2CewN4_ z9gEPJ$$(%<;0=z)eY2kp13|}elsN~IS*u#*Ou)K+Hi!y6M1^wJu63ABr`#|L_hXGb zp@&=unU&O3tZ0s)7bOGr{{96-imGG6_Bm zzXk{kG!WPN2ihzSRI1#<3DQ@ylB9odtobAiK2oVve#_zfGqUWU9f%R*rB)qLm0r2b z@A+a?xPJ3%#K)l#9cl68%pxW~Y(v#wu0Z4MEC&OiQsoWUcs^KSrnhV>^FVe$J&;O! zPU81}!HD!;A77qG4j~i@?LCN9egoeOJ`J80ZzM(GP^Gs6L0R)jv|ai$c~hT6>l8#- z*kiSsp6SShf0-J=M(QeB7y-l2Gv{Mip{0Q7Y;}wkz@gK8cq58(x~0+1Z@h*YgJ)OY2)u)CE#jwx7I=V*Yho142t7Z{Gos959F@Lt`p z*)7PpaZJj{`Z<{+3(w^F_4A4Hx(Q*k;Db3PnjrP_>*d->ZzLxvIA$J&TBl113(r-3 z-4t=mqsrRBP<(w;gWlSIZ@I52|BgM*ebCV;slW+Vr8h~CK>2wG;C~(Xv=t) zLN4_jR6{pgbg)Ijy||&Dl)8srw424?-0Iy}fE(ucsC{4n+08h7#P>J<@>bXOrJ85zEaF@2YA!$qXIMNOo&Sb%iHF8B_0oGV5tgmbPyT zpmD|?4b(U~7yArExvg3K!yCc4snw+XI*qP(`$21yLvC@X$@H+D%?GRI1d}-$xx3l} zP|uZTg4zku4DQ{DP)qF`uSCMsD0m#QVgSW1F0>eD zFbrQXD}(Vu?g3%euUo|(za`CBYPdXu75bHmykod6a|dp9r-Oxluj_VNTsXP|^&5Z#%_F1;$A&RpB{)=A*fVQYX5F#W*NCbsQO;>Y(gCr@W0}+6f zB2B}3EC(XkP0vY@HFkGyia;k33b{5{`fl%W}?t_(R1O?h-X$yzwm_cUo3tJ`eMnHb31-8VimaX7N zCxaj(n)Akvaf%TTt9r+L$;ZAH|J%6F2Iz`otO>m%mM9)p7zOPf?z1&0u?rwh{?R&v z_t4<%M4sM03qwJiRpsN=I8AXdq$4G;*p1fVE?xm4@zp@8;MEj~?i=7oE~(^FirQ#1fDD{4Pt{9)SmaS(uqaam5O=cmdr3nU zJOm}3D1~X0D;XlePnsaXpO{FZL10xp?vBk*V$s2yJ}e3}r1NYT4NoZr$v>DOMkC-Q z;Z-|nPszX@SBfp80930xEBMH@rj&U&9CmQ$1rpH*Qt8fiCE!pAPYnC@Ng_c@S{6(qB-ZCU1YxKUKL#A0{0 z&4t6o_jx%@OHQQ0i#X5c&QcN`8b;{ya(1NQ%`8rlk&-(*hwjiw8rRFYB84*t4ciC~ z?yMashh0|BuXMo118~3zS*`9Yp1Q*gBHq68YKsdc5uZ$z&K@`-! z-^RU`dvs4kxqRgoGaP6~TqaL%uVum$Z%qeZc_)uYa10bfrS7$i02C|A^5;Og;1JTN ziA?6s=JA7KA;8AZ;qu`CJnMM9h&#K%64=LT$iIg)d)?{ zV93+c*{o{EF8w`}q$ntiD{7cbroO&W)3JQ|P)77Ym9%h0(86gk!tdD003M2z6=+k5 zyK~Mu4H53x7F-YILk}pH(?(>Zq?VKW>t#Fco{NDBsNtUQ{Wj`95Lvplne<%U2M-}h z^Li2Wp;oK^7=qvf*#v=WI548yJ=A8vJoW01^MFwtVLq}qEhsps@dO>|U360K7ef*D zCJE`hJiU!%hpt!6=~v=}>5H-#{WPUJbj$ARtn~ZN6^A;Eg`ht zTp;hUYuNrq-_vHpk#p{la}U~?gPeP?IcE^LDCZutvYc~I&ebI)~;E$WE(UO2uOJ%P`KJ&+~mJyxbmytmK17^#!bhgff~ z>BU?f`P`A1ut>>m1*#J33HiMkzC%DbV3^A;@-U;kI?`C&qK*@{2IOcwDcbTCHv?6ECrn92|Zz3LKA%^5Kw5x0M1N z@m*5ck9lCp;S8f+PUpV<;KfO@Z22)@RveDVStI9tjRwU?^n)L>_`|he+^%oqzOI?Y zb$lnD3>G3M(f|}!_i$gcyv0S%ym&HQp!gdbr;I$kP4?p^p34*C%U~7qx1kGQV6mHQ z`XZJC0RA!-V89i4GE%A3O_m2F*1`ec8FPSfw-sSq&*vtCY!kmhQ230OU7kSJ1_m&h zyKKrDy9H74X7GIQwkpbLq~tCmVkK@n;__!qF!_)YJl#n@@Ng95e2Qp=$0MXSU5R)t zP|~j$>aiOD>P%kOCjwOBt-L`5OqKMdHZ=cMq4@<=tx%9@>`GG-UxB0Rvv};1PWQTV zj^MkAK=E3;PDLSJ?{KB%6UdtJF0y;YrINm(5c_RobN@omidEE(js!x(5Alog2jFF0 zZGHRE6`yBgr280FJ1j5W1?b8?8;78uF@OUFP|@@Z8N&RU8t-#ynaY}y(2XdoKKrNU zyQI)q5)>TVEsmh| zp&5pM2I%--V4k+s>Yje^(TlW7d>R)uUqj66#Od4xFd}sfJ*fQJl8mRpq>0J5aa%Po z?Hb_zhhS;&FmimQgjBk-&F>R{Gv&3+VDG5Zy~|MPOd%})jq=7{Q3!K{$=p;W9CWB1 zKp*$S;iDG*=DdjeNkLGT%66V^PQy##QPOJRwi6*yhbD6Py2}41HWs)^rCVtYP)E@~ zg}2koin5S&#AD zFN)9!tooczr+(uQq?>`*K9mPWP`h!PE$7!}5fXL`-3ib!X?kF0;s`b&YdPnpY!J0H zt>jI$U$1z0ZXOnNlF+L0im3Ff19;EHy91@f)1mR~n)onw{}S2xdgOnw0p!B@OV9B1nz+fk+3_yYo*HrC=gc z%yii-LD0(Tvt z={bQ+-AhK?|5ez7wLHGQ!(^d%fno7}R|@bKGCwk-Pp3h`f^Xt|gcTj_H~^H;XVA5M z6C@Qd<7LtF`P>prGavl_(6N>GNV%==C315@lJd^L`(qDO$gd~BRB+j5gUS{bYP#7+xj9~ zC;lndNW#XmlK`^ybSP;2lw+GID^-t*alp?-X+6~jNfTpKT|`xsmrFYHFLguJb)`e; z!H>J}<)bYu;SwqWfV-$M5JO0akO(sxrD+)haDyaC(g6{`a3V^>T3HTDO8OZe_{|S* zeD2}Pe~1HfVK6Wl8Vn7F21A3P!O&o6Ff^vSAi%Xi|49^aRh%4081-4?Y0_o*XcE%MP{Av8BEE2tT! zAEfjyiAFgU7a+ar%Ez~p66g??Pf3(Y4npeJ`5UDd>L8~fmF$WH3UVhmNnM3so3Ais zq7^+Mfs81M}B7uCl<8bqSe&{z@zh4LUQ0KF?J#w+C+qkHy@W0kTF)}-pE4V4o7OeQ>@L? z0}mriCi6`qO5`vHA;eCurl*wxLWHp9y-fn2a5x2)*crizYbEKmTrS@=L?3XsB^KhQ z5kuFA-3Fy<-Hz~K18?iVEp9G#;9lWzLa9`4qa$*7n;8W$Q_LL~OyZECIJuo6PRiTf z9WnE6j7#S6hqrCJgZj+zwlP2AX3!9~FAiZg>-b{fD#6|QgvCuXU9MT0-t}tud~Gr~ z+*pmBV(>G>-BVzo;OhV+WQWxdzo`e$Wg+;&&oACj4LEfmawMKA3>bIMn4Q&{w}})= z>1#N!PXa4aXIWXSR_pejL&I)E66&2eIMIBGP0q58{D@6scfkkkk7@{N!Y6pP0tGqL zP+CXPl=MSFI`rdFVF+s;uX-%esf6})BwX49ec&F7ljB!kk^KW1obF&q`xLMe;6d8< z4Ga|IS}bn#4TWqP&WpA;`Vet)TSEgpdRqv*XX*l6#Lj4dnAnDb;vI+s?^DfI+z(NMEaBJqaGIPLTvp zl~lUtpjgn=u0(uP+Lw-Dg>y!udjiL(?gLHOk086!H`Wj`naq9Vjz~v~GWa2s05y;n zb0o5kTmqD4@46%TOG1$JyriR4t>Z;=;(AmIlTQkR)nw2tW{5_)ksQR1fDq6lt=ZEY ztdTilGC9%)SGtR>>tj%C(rNHyQ7V-@03}d53ka~@h%tqBqlLAQb>thkv}^sDy#+gm z`jD-wC{U1d5M=5pBAI-VBdoDhDn!;iK7d}*v8FOS(W4i==)#KtB5k)C%le@^CA1wr zE+&YHaS&Q2=-h6CpTLJnL;8qHfI|6*Fd6j6!XE_0L+g>IW>Wxn0L2`e>_hGc=@x5ZIi!jkbKbo0( zAuNn@#KicCouY#fDxvLMY4HFc4aHe5xmATCod8HV&6s8GiDqPQy&CeXE!pk?1U*fM zF@&cuq^Pi3$FWX~^#PvXXgLS$eNmN2O*G04r~unLti8~2uxwvpPH#}DWgF%+fg+G1U1%u@bBV3LHMl!Ftz-zm670Al3J)Q$7&wQrC zovn{f$P?@m`52UG2DC%L)?(b^MxmLLg|O!>Q=IH40vCTN0>XFTL7J;53hs9=#YciT zz!-ck=>ddRLL8YeE$$oWuTbF_JjCrucz0^50 znUBWY)>8%_Qi{xj$Y|TPL)-p5Fa)S=f8g4-711WO?T?VRwrzjfwvEuXKMu5EOdDrC z$kJ}4^KP#m=%7Cb*!$16wZjAQ40kM^cHMW@}jr zJrpU>wwmiX>98c0camuna@@e6aW(uH831-z&)Pe|R6NJ_7`^=B2Sb;n!;5b3jOINt z=+ZHxTK5_?g>;zE>z!5^o_GiWxunt;g_$ND#(?gfPZQiGBYe?l^i`9z(P22gcLEXM zTEV43fXRHBu$Xpu1^=cR9xj=i_(G|CF%V;>!#{!FbRx%%1C(<>*6}?vgHLz6d;F#h zBkq&9Mm7&%cY7G$6l&r2>4>9c&D%oIx85dCd1jR+E}1V@DgsfoqXsAqQYl{xdz`iQ z826h9_e5%XtYwfiLxV8x7Yzm9gguk~beVV9(tg1d{nQ>8sTP~r1dXKqUcmTQRC`h+ zXEW7Vjr}@-@lmilQZ(>9qOQn(A0Yd&XCj;OXeIy)wciD>o^1~Y+m_VafrZ|FyOuBH zu#N3aab_xvvR|tTZ$#<*2A`)c3Aowr2nq*tdnw4N#_Itt2KUs24H8{;hVOjR; zG5RT2%BCm?XQ8>p{ck2eug^Orqs|c=`}Tjqejm`D9w8xv5J_kMUE*_*p{9F6GM=`e z{YOT;mnXa_2TpQh+1UQHIxmL5P3shqu^L$Sf64g3A2({y4*6Q$u^(Ff!Lk?B4Q%8! zSiL{$`fJt>sU@)T87p@C1K9dE10YhNdh!N)n)XZJ@P}tr)F_q=I7V;nf!Zs=;6lX_ zM*iXf-Wn0@=a_L)(F%}dqZ?Zf!uZAO7?pZ~%ms*-N8qmmswk@Y4M9j5~y#G zEZE}A{vscLwH{9OAj*kWto<;Y-b|N`X%ng(sb{u7isbuI{iaN6Glj(j_TPb@3fUYR zd}Q8`VsgJwpfB=(l++8KnS_V~_G?7y!FpiVu3BakS@V83;P6jlvTAAO%uz18{p#V< zgo}MV%>oeSG9fQ}U$E0pUvwO;i*BYnyV`G>$(RYKk)Op@GnBY9`(2_KdkNX#JTO@2 zDph~`g*Ffu@fzZ0WA4m1qijFcN{rVe11J0Anz@*9+W#Xc{wssWbvTjcFKqArqB`+4 zi4-pOXJ;OxA-9eq72g>mgXe(ZS#UDV)@~db=mQfThW5?@fU~GU2w{Yf2p1vV#sQFn zB&l=|7*M1-YzGtejHxe9y)o;>sV`=|F*RSFleD$B=dBlJy{N*-q99;VB(NyVWT91| z&{|Pw$(xGVe{OGxmDYg#LQ0TW5CPY0G8pS`v|DWfcnjEi6LHyOvdLI3Bj7KFJi2{$ zzTIuRJAv6s&m!V1ky#?{gD^k+Ci`vtzS&{IPb@yqZl9e`FKm{`3I6t4H7K<&{a^qO z&0GK~wG1mqAdG6$0b~B~boxw-KYYbXG+d z8u3LN>;)=Zp-Gt@s*3V%xC+2Z@GxeUb!I!80+s@t0&;Ua%P;N}0)5_sPp#i~S#IO& zecz(@jj`J?^S&{4@B1RXK<^tvr{jI!nD>2U-Zy6M{i3!wLla}`Vnb7V-&f~--wE#< zBge5!OzO$WARA^wfcEkPsquX|77D7K+!k)Q0X*7^kDN6sm19{L){{Y1Hf)2_T(sJ= zPEU@dL9Lhc0ARy&TJ#nvav5cpWBcN2C02Sij5kSZ*;2;{3ptijMXe-=-Y}pVEgC>j znA{u(dl{%DIrMC}hzI)f#sVxB%fVo&Iua;!!$~mdEOtL%Rx1Z{OROKMU~Ra`6m5mj z&1*X4V2@XIk_iada26|?O4roI`|>bpW$jqxv||}1^aqMRT$!3Y>??!1aRRv=3lK+R z3SnGerg<2RrLH%>?3j8*Uq*r0(&}-sAP#B_Fr4jJfgZZ@1`MrimW$QMP|vaDj=^Zq zOU5j(*DDtTA+Bbu_UstP8l5C2@QO<1Vmyzycg#3N zD_UU`ot~WRNUAQf&9Gx8j8<0_|Uz7mA z-Z*%$8kh{X@xIleOieCBnxd`(joaTDR;u$%^Q@+-jx$x{_nuDt`)SG9EYC`#>=ZaX ze@}|x_fggemCCd5M05(<#kXMe$8Q-*hn=20%MYqk2>f{qKCyn^&1E6=bsQ}tzsI-y z>p(Gx#d0i6$gabs;`xk1c&HtMfYT{YVFXI=>7n8K=9Zp`=G@EFKmBM0hY!LP^%mF` z>nOV%4ujQ^Ug-&`IQg2VOgXtZ&P27*sV;8bkcCeS+5t@ttCf3b%VhS|!xzPyfPv^0M~rNdPWRtXAvRz<`_{hD6EB4%BlAorh<7H`ai? zY$wahACP9q2z*ef)Lldq+s__Fe_MCy9UVCx2n+Wh6w#j6x%t~&(@Ft2Fr7~K-UJG| z8Xn*)BH2JwZJ`8d^>*GMSzoJ-UQw%uhQXziN~Qa*MoMQ(!{8Nr7@*hKrrgNQZ3)bX zI-8+}KcWQ)Jwpivf8TfGksEqm2>Q_yc`G{w_J7F(;;;~RXOI_DC8qLPrf@r5>%A_QH@gQ_?D5GEGwQg?_b3_U|t z1RsQP^D9VtusaYI@)BrmU1%ozfmTc2s4Hb#3CZZvDQoW+fzT^4MN(3B`ISjU&*9+j z_d=lY@Rq0C-vqUg{^i2$WglB895`x+AY)2@0mAU*9$8Rz6D2!~0&u+xbi&JWZZMG% z-3H}--NoPB%h@i>Km}o&gc4@GMU;q_T};9}u9e#h+1t4|xO!Qt2QET@%}Z77EU=)w zOhf`^@2_FzlShowjV*~B zR)e&9JgFn;O&MVM!x}R&l?gPfKi4Z?vf=7WJEGpOkH(x;A*w!9DsQS*=t@*aZ}`T= zS~g!)rBW$(5=-hJEI9cgUloI~GOY4+dU7Zn8@h)lgkPA=`I!-mRUOJMk9D-@1_X*e z;o;WXpx~+E5Ek-%V@2m6qvnN70sS1PwrUmI*EOK9zK{!f-;>j#T7$*%sHez&^r7d2 zoB;C{x>}XSYUNU0(7I6&>3%L84xsxs3l7ZHT27xg^;;9}JWWiVNN-k{P}c3@xHmDmTFw*Mr!0 zJP<^|&yd2av(uBGxWerL$QwK$m!9Vk)OUrjkfWG>(1CaaA8;!24dCL~#9}#B0vdDx zXmI^s-`^iV9hEYj@~SMcZsAMS`+*^Q5OGGCnVQ_ns;*1(D&G$~^GZXgJkjd$6iz<9 z!qkTEYcljpgix2)E5D);rS|}!{k{|se3M($22v@%ij3?#U&@~EiO@S0d19SW(05+V z=Oa`5C%q;ma&!C|L)3MQik=UL>!GMzc(hvi^=*Kj^HuhHTe^qAs5MqG(QzQB{9YQ7 zj{`5yX0sof9qn&PeEw|P;{qP#z1QVUhtuxOp>`o~OT=u#i&)$^TnPohqJkuz2H$EP z2NMm4YtzD_9bj4PDmCydlqlS( z010ko%txRA!)si~00u>1kSoEN)kjf4h`*&_VNvWPBPg~ho*wz&a9z5Q$qccm%u{AFpMsCbUCml@9IyXtGV1|*MK||B~0#{A* z0a~2}`H6!w5j^*L?c;DB<1a~|n*oG2p=xE*Pw{t`2p+>iDxH#F-=vvT2AwKuv z5>iL|Gx1vmg&W>g? z_S?iTT1rW|jT}+?nT+^bBxJNsV%Sy$YM`HORsNO(F1iMT4O=#`)y+7Q{C2a+941SQ z&4^^Ho2|Y5*2~!Z2`Rv)8~D=8u2gxs0^kgS^lNvlWG}m7@^S{6x$6PkcDxhnWQQJJ zhHGZ-lIMmDWzomDNWM%3ViwHsV=s}T>0?c6FMHk0c68zHQmyD>UpX(UX_?P*IQIr3 z7<(9wu9t7D&9RW#z6^WO!S1kLt^+gMK!WZkM*=&R2lwT?A1)vXDO*zmV25F&#>?6% zqa$LIEhT`us6iA#AwnXIU>G*b7=VK$DWn4tz-%Hc!&+GmLgdO2$8Fe#ZPV7@rR-ul1(zgWF7Ytp*athjekrRr^^ z%Da|O?v1}1D77#BU;qzQUjPcS%qm6@D6CBf|Db`IBtW}i2zCa|^f2MR3KF;*n?E__6~ z8WRkj>6GtusR1d z^&?lVKw%i>LY8xCu0SZ=${}A*GKKF=r}>ahRGk2vSFf@cqAyW9!lY991xd?VMUbdY zrHERe69M#nK6wCsYc+}=LOP8G)$8U6x?L|X%9_>)42ja`AQ1FBBr0mISbjvisSjxK zrWeMQ=uQ}*o|#VhhMq7r*5P8GQj_U;WfmZvPVRIHtFJ0V&V$7Chx#h zSVISR(E};`^gb>?4i6D|lUZ6VXF~hmqqJjTMJ;S?ynrYu>Ua`^?g!>e_Y+EUB^u=( z@~CyZQc5HZ_%*$KIDkt_KRixL&c` zX(z7U^@e_ha?}B*lJuriUcibLwfr>de*vKASS@PuoK8MKrcYhshp=Zm5YqP$8}A$+ z`G(9HH5O1}ACx1c=W#iqqpRaYUJ2A%-^<=Fv2-R~UrVG?Ucu@}&1L57R^pQMByuW| zG@E=!Z>xSGrP8<1t?6wfyl#hx@>j)J-4$2pUkV%h8Hd5f)+TEY6R2sVQS6I?PYCB4k_loHYOZhuiU_o6JDl`+mu>lW<9woc8Dmy5CnjmVUVyX&Fbd7 z3T`*9SXoM@f}1e_WK(7z%y&CaHQ3r@6;dMHEK6_7Nw--}0K(~XDrdz2!GHYF*p*Hf z=C?5;uxM0<8X@C99`MCQQ%g)$r;vs+!NX zbo@EQ9~2f;s;r~rj#s_X{XN3YL`heqQfVwXMdenm#r&^THW zD*MZbSyQ6OBf<8z{vZ4GvcSo;eM<(FrA-&Z@&9$Qn&@+rLrXIp~TKC=AC= z(JeKamBnt^=r})BfQ%gHtWU#~n*OW2VUR+4@Fw$py?~Ky{3fT2-U6_dSSFtTVtow*#Y&hC%Wn`~_NXNO`VzLSMtoqQ6_VtUB_Zi>B^yRc7dI9F?`l zoaa79=y*bQwBZgT)@sso!OV3EoNZ_&LR;3f7|*rB`vpx*=mjKM^KsUeNT7{s!ChcM$S2)k-lULuo_-&F2 z`o@_$CekOTDv9}9oe%Vw1vX*{028^>>Eu<$p4Xy@LsMB?#Y&`_oQSTDS2G}ctr#!# zk2E5sI!!XRNh-R+^gM>aC z(G%0DajKe$dhKN)O}0f9zxl~=bbRDiojAWO00LdZgO50^?72kcw_#AaMU%YPfh2s^ zE4|-ldC*s9b8(ai8P_kp-(Es#5l!S`35a3VA!(lbfDO8bNUN%7aR`pCms{7gJeLV# zSF^%7dto24R@$8B)?hjo$SE2tPD*aNV!5@9KX;3!>m3N_A@LbzoTM}Ew*-vJvYMecVfX&U@i&jxVhutC;EmSYDD!$2?$@4&E5oIJfW<7G2;Y%iNE^Is!~ zDljZhd64lkF*e%^hiv|f!Q=Uq!7Kx1A6cYLM;xT`U#kdEzq|@hWKVFOs&4S#I4yR9 zivRi2xUWt~_^*&E*P|>wdsXfuVdVclP}X-8N!M_3`wd9Vf0ImzAw|(!7N6|5AVqIE zM1m=j4LXqrcfYMU`^xW~7t$K7L6HR;$(Y<%8jzKNRHY}cj5~=>lc($fi6lk8f%9P} zAtZb65v!v%|3FD;!(EWyYe9%xkD@#e1lJAM!@_rspgD?qpEi8MH8SvBo+WNI0(_yq zc`Lb+@N1}p2J%BwFAF zh~u~8gbbg9Ah`gTzC+mFj%#y!H8#3RTu|Vl^3t{(ksmKPq!x&>6+E0$a-qC~*NS`;-mtsHBbMuXASx_R!yhqZH zHXaC|XVfAF%|J-@d|EMk0uV<(=EGoB%GzVACH4eSqF%90fGS^=&mO6<^@bq57!(nz zP`oe2P2$$`LVeg5 zrdfP16tY#sLi}OTnT>_2J>px@1}J%WFbsou;-tx4)`sgY@MXq^_!*{(=b|~W;kr{_ zX6ypAf@qXilL&b3x61}HWcP}gQ=o!ngwOaxwT-y&ykS)js1y!O&p5Qe++|M3$GGZ% zX1M~N@xf9*;6s4rsDU6QAcP2sFwKmv&0vEhNzw)paBU?jt<@Yrllk7|5@ciw-q*KV zqGDn4YjmV_mXdmhsre4>beQtRp>qv7H&vg=oes0SCDXB_FW{Je(_0_T@s4esO#1U? zK*3$*(<7d&N91}h=@X8MIaO(o{)P*hGjd{rPK;>aBl43pZ3=n5%98@#^h!fb;--8= zR>TH>Jo09S-j4#<(?=tDm`yu&+*+C!&Ka37VIpqDqjbykdScz_LSxd)ohWE>Bovys z5TPs>>4Q*Cg~{M6R~K%`XuWJR9_x3%OaJ0L^zyzt(KHD5ulXIaG6)Q1n5mEz1OOH)m{27y|!Mf?p3$! zM)C_o4JfrQ{a^qOy;}h4u)rxs5Gbro2UkO88UUI{&ZW;GPuB~pY*8MVXu9MJ<#PBo zIfgiw=0QQd!dtx)1}%X0?iK|sk@hA8kfnoFSJXa>{K-^jZ3l${g93{Jn~e6-nc{Qg zA?fOhb`#yKCLFW)4OAb{7RTjNH3 zV7`Nb1-RQs4b^V=*R_;fnuSV6b0cZ5aH)*;XBUAWb^s$-x(=qw}ut*{WdR4V0F z8f^AH3S;y&1DogK@Wd~)x$&x~U+;NBdIAsC=PI+}KR-X5%80lBm63H5jwR2v1&LEx z*>nxQQF_U5>bV*_@Hmb+735;~g8)fezodAsBvX=-liccooGv9RhNjYPzmu^3jG+GPrYjsWg`oKJE=%%A}Su24uRX@AMD#~2+r4dT#q>x_|c?*vW2X%I*3=$qCrNr?FuQXI!Zas0Havx(y;T^z?m zu>f)WY%&+e@iUI&nmB&S#Zl7wZo0pk@9 zZ~o$#OPPJ?hc34K0za&;cnFO`rSdD5ZRY|#@g=GkesPfiDAOsY0Lr0PslxIeV#ya{ zHu;rGxs{G**NedNdyqCf84gkQet!6s0E3-K5J@oOtmVrD0_nvu=ju_^MI1c=EAbuh zmKrwyieuRcVj}la3rug-MnxWyoaA0EDCk1dF73sFn9m_5hwOzVOQ#UShgR%_@z<>k za)oM@&rqP=6VB6&i`N(#a?Kp+)r6g3!Gj^~)!?g4x7}rNtJLL&* zG(HUGO-J(S<5&Wfc>?qPkrJyXA=Mr#l1h%+-SOGXnE$fPw51pa4`q}lcRL91gn>0W zGXTH85oC;vbG`De12Eo$xJGRzh}%CUD#|xhD(^-$`L{wsYgStS$%La^BbD+ln0_cm zTJ)v^(x2eWO71EF@pU+Jn)7SI+kiYo(+B2VDMDU}h$K5s8uB(?)S20Cd3Ouh7x{Ya zr_nGA^B&_ELJ)RO{nDCk>gv27f(oNsdb;a%F?xVK31kF1Q? zIScfC)6gL2Qmt~YZ2hTF-#J_qpD7C>7yS9*UI^0u1Dev-x%NEMjye7!?mJxY**cAu z&lGfodw}%h1+c=ocW7|_QkMca2UIHeDgnNa+=#s+1@f2P;`m=2b8nN+?@Xz(qdP{w zH1);3HOL-1p>ju8aQ%{;f%9#*2<+$^)-Odfy)}*=n&f~Tl_P(NdO3H!a_>MK7XTnrNf|$s?8RY)P71M?~ZFnc7zb+Z52hsqUUDIaw zH8k;xRI9wZq{`DpXU)kM;%#`rkoNP#yE52c@i9f4Vbc4jGHkpIFp$q0Wbl#&DCx=R z=Hu8v$j8RW_$*E8Q9Ci+ctgiaL0!PZs8sItG^2M25^!+J{tEziPeLvH)Ciav&db** zo7I}AuwW71#_T}&72tTfF|}{%>1}6Dsre|C%XxE*CUIhMhxf4F=KHp# zc?fCQW^gq4r-;URgf7iPXv;Q(L*<_$9QX8|#Bp3A&k5cg$0m9E*Kvm4hH&*;18~98 zfa>4DFwLzQ@>>-Qkgu|+^e+i9y;bGlxt(cbESd*>FRn^+ZEbjNB%e$L7|5}DbzQIW zPIo=Fcy6JUOo81U#~KQCy$rIRnsrEYQdoCNMe7#k&Z zM~hQHE78LLN-~6;#m4PrV4j*u+1p=n<;V?4r97)Mf(}Fi0a}h}%wIi+WI2wx)-|Y$ z6);89nW%g%SQ2?7CUPynydFjbsqZvMz4n!VxXk?G;}@|@GDQJQ@+K4 zutSNVqF+TMUc+YQTuA1B=1}ZQCl8OIta4VQ0&m{T`!WNbw@_kpejET?s5v(#keRO# zDPyjz0RHOuZOo~}2l@jsht0rfT-J>#1%v;&!=nRRSL~f>Gxk1vQX$|DL_l_C1WDf` zST}cC^<9a(+nGQpJkNx#Zd^eh3i)nlb|At>r@-Af551^u-u$3> z2XQ;R0g<;!;5nZ;qiG;L?(ks#9)AB6QD#0vLFcer++oNg z|3ve_oCd5he4}>wNYLLPap=ZEQlQa%+Tjb7uQMS!b8>;9h=My)O6+@jG-t~^FkM}Z zjoFQRAQFJHVb1$JiQ1P@d5=NHcdn~?q^)*a4sd;`3r(mJZ+4}~rZf`yAUe}{ab7>l zWQQ%uxP24UrLGX4SOLV2tV!|vl7m9Zej{VUe#F#y2pk8uLOAvZik$2)oYj|NtbhxI z)|-e5w_+IKW3j$yJ@Rg)B)7lp5b)e0B4qK|^)J1>?PYE4zlc0xg{^h6A8h+@7k${+ zUp2M$w6e!-n1kfUGVo{}*r2n?#n^>6OFjrk+QEWGPx1v}gV4bA%^qcBxjlMZ8`T~R z-10(xhOmY@y~&nf3r6Alv^oyh9h<$bM~p3KqxNcZi&z*^-Hrv~{-6rat8q$U!I`~@ zVbT`#@%CwD46~1DI-I56glzlI97|{|@OC38s_eoG79Yq6ES8>7AB&;ghiOU=mWGQK z2xlGp(VZy5ncpgU!bP0yEmUakFf11MsX8yO9qMmdjW*;N+dmM1)2LA-BOrtbiJ&l0 z&@-$7V1pz{ngbEwIT3kUk2#|`ZY~hm8Cnq7nKOHy9cRAyy-k9#)B<}`qV@}aDSi2ct8SBd+?g2Kf)Xj2l1xMYjN)>%zVolJAtXLCt87tN_x@;41&iWdDlPekRuZyEHf)#5*w^#4HCwTIahT)zPpm&B` zB)Q=q&dDQS&@SK^+TK~#s50w$2W+|IibM0_H-UoLoHt0@q5*wPd&jyER)_@#UmXCv zl+t!I>Ba@|3iBLMUBc~@XFH4ng#v#9JGhF~YL$BliSj|HdURt5Y<)nzScp62Jg$ij&$B_ThNY;H(kwI1gaa!zif#8 z1|6u-R+y&rv^}8F%E2rzAMMGWh9uKFjutAofI@i~ z174q_hLSb`ZmXZI;B3m&eyno`$hny{p{#>LJEA8b=nM-Hvf$u_`Js#dv}AaIo8IJf3an!C%t5J8eX^>kelP!#3|om1(v1^TA*8fdZ@Tw z`54gKE8#S1N=v0)O|m1RQu!Dc;PVlpbY-2iOF;ojrBa^7fc+sxKW)jOfDRRgfr(5_ zUL)(MPrgtzrXptFSoR0GIbK8XfnKQMOlRHz_M$|b4pb_y(PgM_(e89+9GFg|XcmA} z%C$Qnx(H>Kv}TDaeW*(V3Wahlikxm|WQf+}i=dz2`~)CVlWUs-=t0b+=*^-9x)9Wd z&LJY#T37TPZzt%@KdqjCw#vcF<61Lr*CzgGP9iV8gc#ukwKcAV`_Zdow3<^7u8;UH z7OGXQ#mmwsSQ4o_MO^hLkJM&5<=SmwhcPIiJKLuHr_7L-z3&lCG|IJx)^5Pe2Hp7? zD7*;;Tx{J#C`WBo;c8vKcYsCU)`md2M4^@((7%c?zRrY2QPBT12dAsU*T}~ z-noNIKykQUubk@%$OF-uZe68JOh65%R*dvR)DpLTql_=WsZyy_p2Y$0kEjsbdWs|F z@st9MDx+6o!PU-{N#YRTa;$@bQgFp0<&j zkq(uCBr{W!Q`LO=M4-a7g~0Hr#wPu&*pLL zR-C?e9#YJV8TdFnMC4hpxxSrCvSBIRd`wJ6P;&kyBWQh}^40(aSyIXvV}Moy~{O6rL^qO)L0|j?oM~HU+QFJU zR-WsXi%o4l(_ZG*S#;zaMlvxb9)4POxwT?l4pA9*o%#Dc^|Q5;os42{du4L`A}9}A zC%Mc?Lxk52vVKTw#?~EBGgT_XRq@6L&H30mttwYF@QH==g(LoH%|4ALlbr)C^9VIZo>D0vYctVP z7}I5E5GM0qKf%ZLEc7p03_G_8Wxx_k_~n!k9rFrnXE4k>$kQyVRX)~*tydE2?JUEB zd^m$+@&>DS<+gU7(q$@FPCVPw*c&VJ&O(v7QS1tTl$+z(6qP*@$pcDDJ+ShR{b6)2QvsY)G6A<~99y)xyCm`gqBfg{W|ED4q^ODN)nTnzNS zL2AQPUSuv^FfKTq@@!Uw{Ki%9 z(RF5mTpn)I8$njlbU;g74?S$W5oeu#Yuw~^fT6img3cmvgbP3lK@U^Gbk_h@Tn$Z@ zG*F_gWV~D*EZ@UdLv#jXmbe*s^s7lbi4nui(E#J&ETf(PY76&5WeS;QD>MreR=7BX zjt`@8HBwg{*MeUMhinn(9CU$u(|7Z*4;;;alohUxU=%#J8lA#Nl3SzYgNK1Q>7b}B z+!_!}YC(AP0Ypu>G*eiuOwEVkob(7GBDgb9wComfCp6HIP43JQ)5CE}^v}^I_hp>% zaGa+Op(e?F(IyWM5g(S@(LF$t+*iqF=92sUeP3z3CBgc&#r4OlM2l}|n73gt24XUg zD5^$AZ`g-q!(l;UGI1KJGW6c?L*<6c9Eeen?#@RKVsW{=LQ8cJTU z62^udnc^*Y*eXF7|HMtihB05nl{0>&-_6?T?7#f(S`SU)U&|H;}pf(`K$vnneYiQneMovX;=C|8A6Nge-pw6pWsHGVQv zcg5nz`z5fmvk=2LUh2GJ!ud$c)cxtTj#704`~a7Wp?y=QIuPgpo)W#;lL6T|B)z1w&px>TTo|K*Nivf zqqDV>msp1p#jHy!|G|u(t+xc@u}3nkDZ{V(k-0URR%~UnL@Uzrh4{H`O@|m$8@0A# zJpLTw0b3^-jFT#8+ERq^0f5%1Q5+*6gb0ZdAYw?#O=Ca<5lPZ?5kO@k)LPFk3Vo0* zaUpr^Av-XF?p#)nyQJ0)3iqc(zHXeXo%mNyFyq(Mu9%s~UW)Y0(*8uq| z?qs6lWwy&XA}UD#g8!?k`>aRQ+qCnVc3#uYYub5DJFjWyHSN5n_c^xJ;kNUdcHZ9R z9^KygyY2%yMJEfp-449Y$IePy3Sr0N?--8m<;gdao!kZ7FJf<69#u9W!S`Fj1^45k zm#=mo@pSr8*yZym{5L<^r|jG*otiWv`jqQDRgi0)KSXvJxV-u+NIwR`n`22Ups>%q z9zhNj3yQf@tJe&&h7NiN{1{rDeOPb2Yu&M?d&6394R@_I-n8ym)4gG>w}wHPhtOL81h1b<9Up886|&+j_mk?VJW5AuQ|Kz8 z#A1JGOvsrm<+f6bCz8|YM<*b;(i|6CDbWWQ9DeBp0eDiI0rnD&Lr6O9TM)u@B*3S= z#E7KvdVK+6jQP>r)Mko7wMHs^3~VagsO-dM3bY_G@%tLG2RH;0Ep`(X+hG>&IT#u9 zqGxqCWi9Ypt>0mVmJ4+;+D(#H%s`<(fSfW8L?g?NlK27y4E(4uE$-lnw4)D@fk{*Q zX&5u!12@2qlCk5fR$t08>`x1k+li+yPwSu3YP?w`YdcNHwp;E`CEk!TsbSlRO9vhn z`yj-+G8l>2b~+MAN2h%d7DUQ!oRGE?kfjT**9W0yEHlc**iIz$s7R$>bu^a0QKcQF z6cLyB{i+lWWJ5OUjwa#CX5qf7Y=b-qM{Y-Zx)4~cUqwem4m3gCO=23DK%rk%$Rz*8 zDQ>1at|WkgUo}3G^(4*qQsX!+P3^5LoXK3Q%Dv=sh*qt>6$&2mmMS2&(ox)7B~U5b z0V!_=2bXq?< z^C8p0A^yp(D1WdeHFwlwY;FFhNp?+prjx_lvP0fkCMUc;S4E>l&(GC~k znL(}f2Qy^^$xvtXAQBzJBmf;13I#S8FaY;qH-`c%q%O zZu<3Ut#`C;@@cK5^pV!hFMC?+rq3pb}tOoe*@!k3<{-2K!Mo1D2@INIKvKbn92l5>s{SC4~I!x z4!}Sv+6XV+)j;IOAweYpIxRJaR?54k5FhNIP%KT2y5cQ@b3Jl-a3YoK^-6^@K#p@Y z3G(4Q2g0gVYLJkYb5T9`NV_kXRC*<7M#W#80s9T?tPs%ps)&%HzYzQJa=u4K;@4_S z1!QiWlzK@G9>$jIr3lj!x0bd29LzzlEZmldmlWoXu8DD>Z>50xOCO^GpinLu1X$P7eqRi>0vzVP%|Wj9MEp8` z;4HvEZrzrU7w|&qGe4|h(P_D2Fm-qfDQ!R2PMt_o<2Fh$Ig7;&TRV{|alLjmrH`{n zQryiKDyr3Lm#9e2S7cSNofM`JAeDBPz@A(M5U}lJbPS<&S3{$rXF)OAJ69Ct#BbLs z8^%-EVX&WNBd)gGE(#!3j`am;^Q0gXP3Yd6qsuLw>Re6$N8Y=Y#VZ#ZU2@Ipy;n?L zDF^9u!W6w%n)ON`ADqr&)_Wg7c_oT3pCs(?gd4E&N~cPvq~Q64hg_U;?BK8!xOVe&OK!Ko{fbWZkPpS z_8BjJF?*JkC!!A3|^D>^BLE!wLWRbrYhhNrk^L-Sw{&!h? zGRozj%?961K9>_z{VqwK_?~k*7%Ti*upaO{CX)`CN#XBY$Z)+m8U9#8f1M(x@2Oeh zjUwK>-4oUIdUd|1sJAH!dn{mVG7`V;hbGAxwS4b|=*w@rH?k>tZWG69wd#CN6&{u@ z`7U1A)t2k~DT<4MSbaB*)O0#^E*Y%N&pzyTw`$lmnax0U;OE-FoTXB!&ov*Ip=Vcq z%cV2}kcIOpYV>9aABMb_E}g){%;SLbwiSlIv@XKc5e2AhPk3#0n8-7KmrK!1@kCLBd33)}kD?7kpH>*MA zEh z;?_J^xQaI)zfx!RmVsw{2$heg5fJ3(P`h}WT@ELsVdEv0x*pea#nINRJRKRyznqZa zQHtojxJeWjlq_>9cx;aeg@z+$<@wwa5kEfS^~VcDo&hD+))?S$NfvXi1(D2dqJ3~o zC{29JL2f%uxS4lsF!61;WIN~Zef9X4KS;nM0+PwJPQf+c$lr~esVR< zLrj8Pj9-uaRI+9!Iy&?*B#P|kl)HJTP8k=21ZY3E+UB7V@ld=J9}aJj(HZD*&oct9P zI99(l67v`JC zC?Ryy9H5gVX$=u@d_r&#%f=kd)tHUhm^q`0?8qi7tqt4S$OW;bD327n|9`d9oO&|B zTv3ng$d2qt)xU&n%tp=0Ok+G(Sxai5;@S~y+g2!g=AgoyHN!Xn&F|t68#?|(~ z+vUcqpeRXElA@G+YFpN{tZ7-(!qtSNC`nP0q9jGfk(~zi2&)DtwJ-f(01uU506M_f zEJhG0jHv@ZrRi@{FpYf+-m`=*)AW#|fl!N zV`itUB<$G{vfUSaYes}c=KDi-!~((stpa+4NKa)XY+Jb?^}AkO&kOFUFetKj;Q)Pg z?RqZZsd`}9fIhzPQK_!C;eHCP%;v+!*_%#%PtDaw{k7Q?=mx%56cARbE2*G{5H zg(Ax?W#_^>NnN*{kSI>XV-MW$_8n-!-N2xb3K$!`%7(+A9&XtRbfFZ45&bai=!8DeYA)a2!Py~`5GUtpH)8((%4bn9FZ#Q%lrl6^z&X|m-ym>wEW zDX2Bp3`GR<~Q{7YJVPP6nvJNd#xmZMlv`O7+diA7H5sDMqwfA2f00 zn-d_pn#=|%lFhmWW2(NHr@}gcAC<`U>Vu3dzWL>`MiAl5fx7m@FK*vd6kC~aG7Onc z9fLo{Z;F$uZL&%s%cWy5*7HuMD%PwM7Xz~FU9c41iC1VfL!@j@JoZFGGXJci&d&o4 z!r16rYT*4d%$FH1aw-=_^l+5fLw9)1cr>oWeFOc9nz4sY1~5Z8Vk(g5^(t~pJ}P!* z&YQrOV%=Bq(8D*$4jC0 z(FkF_Bo@%&<9c-?k$VsQu>&?z1OcwDUG53jKN)?1BN+PXL8W>dAd-IqIfB`!DSVqw z9fnKrP9vqgAq5n-<OMLp=T|IZB865#RZ7_Dxo#vf1oUEs1d=v?;9U;&1{7Rbp|ZJ=_k+_{N-}_DrO00DctAm zB`fj~1h{&iE%(RB3g-&8RLytK;(2r|ye!MFg65g)!sMA7+4d6R2*u*@qqvJQ=g`qH zw;-H)3qx!e85+*>as59Z>~ghSV2ox#M#rIr}z8 zS(Y)#vNFu#jw~xPkY!m)ZpyL}%okafm9i}B$gJOFI0=1aiZxpd zh$(?#L?47<qZ7$cf?>Er>mKZ(&R7WwnzK~bU;CNy`o^D6ZTX(b7FqLc&thW3p|;9rN)Ac7ZuuLLy3&{Q zom5KDbrjHDsemH|_52eD5!$KMeijBjZrxFV7d=5A>fveT_4-+FOJ0TcaHo~4hdzSQ z7pTRP#k` zo^*vU;)fX1#H~PR;6ZV6yflah`X|r(Ad=Y@`8e}N&mWqW)8$t+c6bm6G;h?^ zqa|dsPY-e9Rii8p&;pyxnKcK#?b zjefKbe2x+6Kog94q^=N?-@t$8qdS(50}VFtNO&jSXtnQy6#SJS9jMKaM^YnRL#4i} znQ%JDga=uxpJXjDkHO(sN=O&-Df^@;caPcZ&vp|$%Lj@J$$dXbl0up3^sQycxR!}B zABtmq3}LgJC4 zW*Ba{AHoI?rvjUFpR^Bew4}vgUB3vmMDL*FVwPh?#Yd0swn8lVln`oe17gZQZwUQq zwLfC-=|)=EX7K_~-s$6pk4k;6BV9Zy`87w1`TM3&7boKJb3ML!Gy}o;%+b^{_ttPd z3BirpfX$Ku(9dM@0dG2et|CE>Bxhz`^R)5IyBc?ljnBm<=opxo%xxaQ&lHk_i^P~O zX}RV}KfPz-SQN5c{sMt>oC}O6Un0?Wkt74Q+>;{*Ge+}ZW8OUk2$3CRvB$?8ao@{pz+S-1$ew!} zdk0*o-_?c2mLtKl=a|s&F=Y5hG-7S83!puxg>^VuN^Z;LYk_gwKg#lUkTRZ^3217Q z<*zr^?xCf$fXFV%t%J#S|G*P_3n4Vw(XD%*u(oYX zP1!w$m_M{PS>>{K*1EQNjJbN}3oZk$*SFf+vR7~EBcxe;1OE$)jBjuX;bu+Nz9$M6J=U#z5=>m2g9K9C%mX(6 z1Eq{kq18TDQlfW|)92U@O>e>NjJ{s4ztz;^O;=hRyMp^dOFFbzi74)2ERAE|s{Bv` zL}5g#{$WMcv3P(_bm#?48ONQjzBu-){ic;9v{xAMX}j8;CZimyh3TJcPr575`!ByqG!227vGM1^4IJtW6*nW|{h~)Z zU!&qwdX5j^X77udSgg8r|6@x$$_<#483KLOxkshdJ`MK7r`Y817R|_i&iNp9y*^eI z0$#OI!UMpfeKRqD%&1`yA}B&4%&10X%NTHjBq>N65fJ6l%6rYlGdJgG;W6>_+rv}4zvkq~>ph&?rfy11DIFpX2^!!f(fCe9fICOR0PzcWCh6zO zkLa?}f1znxzPHHI_nfRV&>d?`bH`X@ z(LF0{anH$!nUgUSr&I#^cPnRf3e_xr+(xkIqqV>f-2AFADE0A8qt{345HAJ@G*Dom zz(9e40s{pG3Jeq&C@>K5(MSy_wJ-f(01r)I01CLYD@G6~ZK(qj@w}{~ui(b|bq&yB zj9bpDDdDXxvH@RwxVd{3~zJK&~}( z;vk~%*nK*jXi+LZ?Zh0uy}*Wh86df}dn2;E@2kM`$G2)6_?K99Z}||w$?mJjtHQT; zCwLg_Vf!U|_;Y;x6Mgdrlx*O14`fHV8Z2T|)E2wy>mHp;BL~&5n;Tl)o+nCBzdg zknSXE9G-9$KTEHvzwaE6picn%2oxGTdH&~70Nf7L38&zTkWFNbNmjf4e*nhaFrQNZ z$+qVvEMc+P|2p)*%aEbqi9E8qNCqpMSg&tZW(}YJI!A)RZD-jaM-wXb&yd{Vh8b9J z8JF1v8K%-JE(w5Kcv}+P^2Ww<%c~{;E^qe zxCko{cH#tK?v%<8GxLS7*jqQ7;s<%(*lN8# zi8pR|9tT%$Z4-IU2kVkh$mfoaxP;UBc}jdf%55v`GoTrhP%3{42^;TqW3BLNaZX(J zMEovj6d@AVWNd}Y^&q0MaAg6Uj6-O*&!@-eV;%MMa$qbLvtD1@1@0e+ljo5zEHN0B z`hEfk{;mV{{Cg{kqtWR5S+M6f-s97OH92wDa`}Hz3;h1^_)H`N636fRe@s@t$H+Vn zg90Ba&+oT~@HGTnPp$#?olfWb9in*Hk;t=wC(!%J=<-lA`I!YM&M%kC-!|$!*ZbvZ zMNauj*z9j7V0kP=yeFRI(JPh8*B(iE4?RFUk=%fLKEtJF;-T`K6Jz}MecwtX)IZ@h zKHa`uHp+>1l&YTOIk)9Y*;ms_4-0i?Cl>Z z@RoN1+y_Z|-`DAVf7Yl8dfy+&_kFdp-k;aP`~Fz)_`dJY`@TT$`{VekIa{>3(ZE6D zhMSG|eIdN>JM_LkX?9f>c6r~Iah2jl(n#Q9V~DnrAY%Ar_toSW z{0_zh+{*}#y#x*wL&wLDq4$70vBH3B6fSm?MlLf~@nQ5h!}CPc;ag*A8ygfU%k#fj z!iP^WgUGY$)HWUzkV5VDU0}fFRA5-(S|7KeIK2^Kv+qJ$g6};*hHojg*-_pw4Op+= zLJ-TX2(@vpqzqfi1A|pD!!Hz`DCqrf^TS5a4RBI~*f?3+vi%wk!x(P&f) zaOSA%r=D*v=UK>zBf3Znlde4sev{c`e)7Rc4^i-@YbfeBvAXjXxJdmIXVkS4&^Nm_ z%wZC^0e8TosOtyUZ<;lk&p0Z<8gRkuFdjVLe4(A+NaBDq;4^o)&Db~N2cP?BwCh)Sm6++Clu$%7*A9i`Uj?~F z?yJKHg|g{ARI5U_!cOIDR1n&@BF;bAAao9EdgdXb7|_LT(sS8C^$uu7^P58l7Mq0{ z7McCl6vpm>LF3HHD)25R~#3c)ab9izB<;IGK6<@ z@>rc$OE3Lu8RoIv3^}pfL>TRPpTwUeSm)oM>QkiP_u%aJPSOi*+ikX@{>LcxVgD)O^O3_?qQf1GP5B$ z@x$@)JET$i7kl8j#sG~yZnF;yl9$a0fQ~T0u14h2WlFO*4~eTziE zxd1p;antF?3D9{K3_#}+LyR|^&Ie18_bYtRnL||Ids8Z33TDWsX_zy|Sb`<`(iZ?Y zV#bntv&L0?70fe_*0h|dFnk@L-9C&wUXS93j~T<#&;aZ8Ygl;Tr($@_N-SkDl}h~^ zY>;ol=))|e#!jpjjeZ>>_ob0l@|2%ztU{jOj*f~a+Ym=4LM0QUVY9E~&HFL9HgZ~@ z$rweo`c2+I@L`Kya+R`7Je^KI8-1{pI9uZ7atXg_>s`!B$!8eTg244e`PmwFV;*=xX3p`}|XVihAU z^r&9)8Yal<5_3&)gvl-}wISKPxV-(7+mB9>L>5EfD#BqFFmx|15WiulO`~BMjEl5e zIBYOS@8V6rVaW}RR=14D?Bw(=GP{Rj8q;VNfW!b$sj$>ZhYrGm84s1s(kV{7#X`|2 zY$j&0gV-_mQA#I-T$xr72x2IeMm^8y%sD7vN-9zjWQM z6G-yRz&K3=Mop{TY9q%kUE4@{rkFOE0|jEe zP2_nd8#6E>)C6}*rJh1E?3%>;%r`pVK`1$la20hkj!xHQjL*EF4W@FzX|-Op)zq|W z5qh54)dCy&kTn;LYO59qbX^AYOgme!ngmo;U~kuDYtP&u58T8OP_0%qvna0XvczZZ zkpoquP0}{m)lp}DbX~Uh&7cU-5CMSBs8Jk3h=2$QQ3667r<=w=0})A*4iP|kA}Gzy zW{`iRc!3}%5&pj6G<+uhvb}D6Apfv}~jvAHlcLvWt351m8o;7HTd7?VaV;>30r{ahCh0-!?!`WEZBFLg;1i5Zg)w+7KXRo(kSip>rjjW_JRw9dqpF+LiqXX>Nr{8= zg=y=erX-7?qRzUB2k&7rW+6iT z8$V`r#w!ctE>2J#cX%8O7qDMNBhb}kpdyQ1cXF7WalsM(+c4w%n=>Vp0{w`rRx4*y z)8tDrGWwk@MY_VAjsk{SoL}W$+Uz%(G@_tknJ-?(H1s=!?4voa|MYUSxMIJPNi!m(xg_x1P144_6 zM)?4dL%tJF0$%7Vi~jnEff2`iM=9}F&?xd6>=J3gzNL%sqnyEa%5N%EdghxLT1*8y zPJ>%yng;|wg%=0k!NrnZRJyLX!;|A6oqQAljtFu0EcE=)*NJ|#0@q}ACZh@Ve?o?z zZ<3j!;V@-DVYSNIDpWp|$pud&1q}TGS`8|dDpOgh_*5hw-l;SKoJ@)`HJh@GstZ0< z03YvMAPk%=Q@6CY{3WOSR3sknl#|eNm{@1SL%E5Xj89F1=!pPX&}lnM7-poGO?oy2Im;Rv^EM&GgJFlY0m;_`z!BkR0^*O@e=(StJL~l41Go-b+p@ zm8bdQ{7qvqJX0}lvH}o9cM%*Tc;(C5hfeHpkg!AP~r z+0>>VtIc*gA1Nwlh-6@+Qn{18G9Np2)am4Andis>MVd|SmxcY<6E}L@29(9(r?oid zXvFBx_2jSHEgd=2hpZuAn!A}}@wtLryImVDTxtqNyTjvioKK%C%BMGh+~PWlIG(k+ z%@BS-ey$BMI^ItW&Oo!s%6|F3lE&E(Xed0ohgK%|259q^YTjYG(tlm zR_ol;NcgW)-L7X;059^Dl2xnoQrh*eJ6XDyOAU@Bj=~s~I>$P9e+$Z&&S!+m-+C+% zBpRK4s$+i(foG2*#>C-xnOL(q|1g(dD~(m}JCethD3Sq*V zboZWpGzjx~MDp}+m;+o%@(N~nILC4+K94FvYNbSXV)v(1@1n z`1z5IM(5;J+0PLK*Tc}zfVbeI;)-JqM~(&GdUvB6dTsd;Q&G<<0Ajr=7PP>GfQOzt z6@G4RG6Yu$8E_FNo9EIRo?RbOPqo8Hu+r6@=Qe^pyV(q$dRLmzgJ?eRTo1g^Ej2@z zQ^aUzpy$r%;Mr}`2VIVNfQk*O7*CJ&I4hk&u-95JV z9@;yZ<`Kf)$?)Dg327&H(B4Tjj(hLq-dnkMvT;w;W>i$PGLQTa-l2%nYX`ppECnT?L*Yc}ODGI)H}f?S=12jQ$H z_O=(ta+yUzkA;)1Blsem(UP`zZ@KZR0FO1S)^J!<^B5TpPr{FKn1T(D#S+&_`iD7; zjhZ~eL)mfZ=COQQwURhhW-X8aP6oHgi+4O8yX0BNMc`$|@^FUtrRBk|F&>MSSj*MP z%~8&2leQ+HqM($`SuAgA9s`o(yb2Q<>cC;|-I*ISWbje|*hCP*aKS+7P&jzf8MWF(=;5KD+)++YN>E0qpH6&q zFbOr>(dpDt>L>wFLfCuDN~JQ1mEF3|p@4`~YeCV0HK~>-ap@--^;UAONEK!x(g*lJ zbjLuVr8tiL3ndguDdd$-ASa6lnkp_;2tWFH+Cqv3NTf8(Pn$Q&!m`vexTORWDWW3c z5`{aw4dr#Z2S);~lczS{odKlrIGZFY#fKzx4Pf^|_px|Bu zLwxB6;daAp!KlkeYfidS=yZ z`YZ`(LY(z{@OlxFp~m8qRC{|aC@;Kagf;XWpD${=2}XD?478q?3`|EsAndw<fsA3jWifX1j{ zG(-q7LP7+D5aMvt7=VK$NjegMp)<@QOr@xxru_{|%R~uQ=0Noa8y(2s5rAX8j6IhZ zv&S*G{7(u7=TEg~Y_Y*+*|Dzc?nL+l-Avxt`u1!A@lit7-VIpB=YH6YUy%Lwtpzl& z{(`FvU2NmetoZG(e|dx)uK4wI4%Hvpw?T(H4a!$q{sHCQ5q{hj6y2$&9_ zb8&Kb*`TWWG>66p*r{(8O p%gfJB&!3#0K0Pmgubso3)${VD<>g7|r^`-H58__KR|8U0Lqqkxm-PSu literal 126695 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 diff --git a/scripts/audio_system/multiplayer_audio_3d.gd b/audio/audio_system/multiplayer_audio_3d.gd similarity index 100% rename from scripts/audio_system/multiplayer_audio_3d.gd rename to audio/audio_system/multiplayer_audio_3d.gd diff --git a/scripts/audio_system/multiplayer_audio_3d.gd.uid b/audio/audio_system/multiplayer_audio_3d.gd.uid similarity index 100% rename from scripts/audio_system/multiplayer_audio_3d.gd.uid rename to audio/audio_system/multiplayer_audio_3d.gd.uid diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd b/gui/buy_menu/buy_button/buy_button.gd similarity index 100% rename from scenes/gui/buy_menu/buy_button/buy_button.gd rename to gui/buy_menu/buy_button/buy_button.gd diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd.uid b/gui/buy_menu/buy_button/buy_button.gd.uid similarity index 100% rename from scenes/gui/buy_menu/buy_button/buy_button.gd.uid rename to gui/buy_menu/buy_button/buy_button.gd.uid diff --git a/scenes/gui/buy_menu/buy_button/buy_button.tscn b/gui/buy_menu/buy_button/buy_button.tscn similarity index 89% rename from scenes/gui/buy_menu/buy_button/buy_button.tscn rename to gui/buy_menu/buy_button/buy_button.tscn index debf4ce..6a5f424 100644 --- a/scenes/gui/buy_menu/buy_button/buy_button.tscn +++ b/gui/buy_menu/buy_button/buy_button.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://b1ej6kmbjpm78"] [ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="1_apu4l"] -[ext_resource type="Script" uid="uid://bq32y7eee1f63" path="res://scenes/gui/buy_menu/buy_button/buy_button.gd" id="1_impj7"] +[ext_resource type="Script" uid="uid://bq32y7eee1f63" path="res://gui/buy_menu/buy_button/buy_button.gd" id="1_impj7"] [node name="BuyButton" type="Button"] anchors_preset = -1 diff --git a/scenes/gui/buy_menu/buy_menu.gd b/gui/buy_menu/buy_menu.gd similarity index 100% rename from scenes/gui/buy_menu/buy_menu.gd rename to gui/buy_menu/buy_menu.gd diff --git a/scenes/gui/buy_menu/buy_menu.gd.uid b/gui/buy_menu/buy_menu.gd.uid similarity index 100% rename from scenes/gui/buy_menu/buy_menu.gd.uid rename to gui/buy_menu/buy_menu.gd.uid diff --git a/scenes/gui/buy_menu/buy_menu.tscn b/gui/buy_menu/buy_menu.tscn similarity index 89% rename from scenes/gui/buy_menu/buy_menu.tscn rename to gui/buy_menu/buy_menu.tscn index b7a0c1a..bd77d80 100644 --- a/scenes/gui/buy_menu/buy_menu.tscn +++ b/gui/buy_menu/buy_menu.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://j5lgbg8c0pq"] -[ext_resource type="PackedScene" uid="uid://b1ej6kmbjpm78" path="res://scenes/gui/buy_menu/buy_button/buy_button.tscn" id="1_8guql"] -[ext_resource type="Script" uid="uid://dba17sgimp4j0" path="res://scenes/gui/buy_menu/buy_menu.gd" id="1_ko0fn"] +[ext_resource type="PackedScene" uid="uid://b1ej6kmbjpm78" path="res://gui/buy_menu/buy_button/buy_button.tscn" id="1_8guql"] +[ext_resource type="Script" uid="uid://dba17sgimp4j0" path="res://gui/buy_menu/buy_menu.gd" id="1_ko0fn"] [ext_resource type="Resource" uid="uid://b081hg7uxx1wu" path="res://weapons/molikman_molotov.tres" id="2_0gws3"] -[ext_resource type="Script" uid="uid://dk4diwvruvkch" path="res://scenes/gui/buy_menu/player_money_label.gd" id="2_ll0n6"] +[ext_resource type="Script" uid="uid://dk4diwvruvkch" path="res://gui/buy_menu/player_money_label.gd" id="2_ll0n6"] [node name="BuyMenu" type="ColorRect"] anchors_preset = 15 diff --git a/scenes/gui/buy_menu/player_money_label.gd b/gui/buy_menu/player_money_label.gd similarity index 100% rename from scenes/gui/buy_menu/player_money_label.gd rename to gui/buy_menu/player_money_label.gd diff --git a/scenes/gui/buy_menu/player_money_label.gd.uid b/gui/buy_menu/player_money_label.gd.uid similarity index 100% rename from scenes/gui/buy_menu/player_money_label.gd.uid rename to gui/buy_menu/player_money_label.gd.uid diff --git a/scripts/client_settings.gd b/gui/client_settings/client_settings.gd similarity index 100% rename from scripts/client_settings.gd rename to gui/client_settings/client_settings.gd diff --git a/scripts/client_settings.gd.uid b/gui/client_settings/client_settings.gd.uid similarity index 100% rename from scripts/client_settings.gd.uid rename to gui/client_settings/client_settings.gd.uid diff --git a/scenes/gui/client_settings.tscn b/gui/client_settings/client_settings.tscn similarity index 98% rename from scenes/gui/client_settings.tscn rename to gui/client_settings/client_settings.tscn index be3e36e..35c62f1 100644 --- a/scenes/gui/client_settings.tscn +++ b/gui/client_settings/client_settings.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bv6ptrditssow"] -[ext_resource type="Script" uid="uid://ddi1alk8oyi1b" path="res://scripts/gui/client_settings_menu.gd" id="1_xqyus"] +[ext_resource type="Script" uid="uid://ddi1alk8oyi1b" path="res://gui/client_settings/client_settings_menu.gd" id="1_xqyus"] [node name="ClientSettingsMenu" type="CanvasLayer"] layer = 3 diff --git a/scripts/gui/client_settings_menu.gd b/gui/client_settings/client_settings_menu.gd similarity index 100% rename from scripts/gui/client_settings_menu.gd rename to gui/client_settings/client_settings_menu.gd diff --git a/scripts/gui/client_settings_menu.gd.uid b/gui/client_settings/client_settings_menu.gd.uid similarity index 100% rename from scripts/gui/client_settings_menu.gd.uid rename to gui/client_settings/client_settings_menu.gd.uid diff --git a/scripts/player/crosshair.gd b/gui/crosshair.gd similarity index 100% rename from scripts/player/crosshair.gd rename to gui/crosshair.gd diff --git a/scripts/player/crosshair.gd.uid b/gui/crosshair.gd.uid similarity index 100% rename from scripts/player/crosshair.gd.uid rename to gui/crosshair.gd.uid diff --git a/scripts/gui/hud/player_ammo_display.gd b/gui/hud/player_ammo_display.gd similarity index 100% rename from scripts/gui/hud/player_ammo_display.gd rename to gui/hud/player_ammo_display.gd diff --git a/scripts/gui/hud/player_ammo_display.gd.uid b/gui/hud/player_ammo_display.gd.uid similarity index 100% rename from scripts/gui/hud/player_ammo_display.gd.uid rename to gui/hud/player_ammo_display.gd.uid diff --git a/scripts/gui/hud/player_healthbar.gd b/gui/hud/player_healthbar.gd similarity index 100% rename from scripts/gui/hud/player_healthbar.gd rename to gui/hud/player_healthbar.gd diff --git a/scripts/gui/hud/player_healthbar.gd.uid b/gui/hud/player_healthbar.gd.uid similarity index 100% rename from scripts/gui/hud/player_healthbar.gd.uid rename to gui/hud/player_healthbar.gd.uid diff --git a/scripts/gui/hud/player_round_display.gd b/gui/hud/player_round_display.gd similarity index 100% rename from scripts/gui/hud/player_round_display.gd rename to gui/hud/player_round_display.gd diff --git a/scripts/gui/hud/player_round_display.gd.uid b/gui/hud/player_round_display.gd.uid similarity index 100% rename from scripts/gui/hud/player_round_display.gd.uid rename to gui/hud/player_round_display.gd.uid diff --git a/scripts/gui/hud/player_round_time.gd b/gui/hud/player_round_time.gd similarity index 100% rename from scripts/gui/hud/player_round_time.gd rename to gui/hud/player_round_time.gd diff --git a/scripts/gui/hud/player_round_time.gd.uid b/gui/hud/player_round_time.gd.uid similarity index 100% rename from scripts/gui/hud/player_round_time.gd.uid rename to gui/hud/player_round_time.gd.uid diff --git a/scripts/multiplayer/host_menu.gd b/gui/main_menu/host_menu.gd similarity index 100% rename from scripts/multiplayer/host_menu.gd rename to gui/main_menu/host_menu.gd diff --git a/scripts/multiplayer/host_menu.gd.uid b/gui/main_menu/host_menu.gd.uid similarity index 100% rename from scripts/multiplayer/host_menu.gd.uid rename to gui/main_menu/host_menu.gd.uid diff --git a/scenes/main_menu.tscn b/gui/main_menu/main_menu.tscn similarity index 98% rename from scenes/main_menu.tscn rename to gui/main_menu/main_menu.tscn index 4e135cb..3e1fccb 100644 --- a/scenes/main_menu.tscn +++ b/gui/main_menu/main_menu.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://cbtp4rvg66ba1"] -[ext_resource type="Script" uid="uid://bsyuos803g7qf" path="res://scripts/gui/main_menu_gui.gd" id="1_l6cm7"] -[ext_resource type="Script" uid="uid://dh64rv15w8ecl" path="res://scripts/multiplayer/host_menu.gd" id="2_ekxnf"] +[ext_resource type="Script" uid="uid://bsyuos803g7qf" path="res://gui/main_menu/main_menu_gui.gd" id="1_l6cm7"] +[ext_resource type="Script" uid="uid://dh64rv15w8ecl" path="res://gui/main_menu/host_menu.gd" id="2_ekxnf"] [node name="MainMenu" type="CenterContainer"] anchors_preset = 15 diff --git a/scripts/gui/main_menu_gui.gd b/gui/main_menu/main_menu_gui.gd similarity index 100% rename from scripts/gui/main_menu_gui.gd rename to gui/main_menu/main_menu_gui.gd diff --git a/scripts/gui/main_menu_gui.gd.uid b/gui/main_menu/main_menu_gui.gd.uid similarity index 100% rename from scripts/gui/main_menu_gui.gd.uid rename to gui/main_menu/main_menu_gui.gd.uid diff --git a/scripts/gui/team_choice_menu.gd b/gui/team_choice/team_choice_menu.gd similarity index 100% rename from scripts/gui/team_choice_menu.gd rename to gui/team_choice/team_choice_menu.gd diff --git a/scripts/gui/team_choice_menu.gd.uid b/gui/team_choice/team_choice_menu.gd.uid similarity index 100% rename from scripts/gui/team_choice_menu.gd.uid rename to gui/team_choice/team_choice_menu.gd.uid diff --git a/gui/team_choice/team_choice_menu.tscn b/gui/team_choice/team_choice_menu.tscn new file mode 100644 index 0000000..c01a791 --- /dev/null +++ b/gui/team_choice/team_choice_menu.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=2 format=3 uid="uid://cmon3g1lsm3q"] + +[ext_resource type="Script" uid="uid://m8qq2eynls6n" path="res://gui/team_choice/team_choice_menu.gd" id="1_kch1g"] + +[node name="TeamChoiceMenu" type="CenterContainer"] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_kch1g") + +[node name="Panel" type="PanelContainer" parent="."] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Panel/VBoxContainer"] +layout_mode = 2 +text = "Choose your team" +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/VBoxContainer"] +layout_mode = 2 + +[node name="SpectatorButton" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Spectators" + +[node name="AttackButton" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Attackers" + +[node name="DefenceButton" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Defenders" + +[node name="CancelButton" type="Button" parent="Panel/VBoxContainer"] +layout_mode = 2 +text = "Cancel" + +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/SpectatorButton" to="." method="_on_spectator_button_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/AttackButton" to="." method="_on_attack_button_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/DefenceButton" to="." method="_on_defence_button_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/CancelButton" to="." method="_on_cancel_button_pressed"] diff --git a/levels/prototype_scene.tscn b/levels/prototype_scene.tscn index 44cb972..a4e3dd2 100644 --- a/levels/prototype_scene.tscn +++ b/levels/prototype_scene.tscn @@ -6,20 +6,20 @@ [ext_resource type="Material" uid="uid://mlha6r17v2en" path="res://materials/DarkBluemat.tres" id="5_bno23"] [ext_resource type="Material" uid="uid://duvlktlyurohd" path="res://materials/Yellowmat.tres" id="5_foctg"] [ext_resource type="Material" uid="uid://jdfticwelku4" path="res://materials/Greenmat.tres" id="6_8bje3"] -[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://scripts/item_spawner.gd" id="6_61ure"] -[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://scenes/weapons/droppable_bomb.tscn" id="6_bno23"] +[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://systems/item_spawner.gd" id="6_61ure"] +[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="6_bno23"] [ext_resource type="Material" uid="uid://cyej4ph6hcnou" path="res://materials/Orangemat.tres" id="6_foctg"] -[ext_resource type="Script" uid="uid://bqjv6l7hh0lix" path="res://scripts/multiplayer/spawn_system/dyn_objects_spawner.gd" id="6_oujx2"] [ext_resource type="Material" uid="uid://cdeggf10dmama" path="res://materials/Purplemat.tres" id="7_8bje3"] -[ext_resource type="Script" uid="uid://dk1gjbuydemmb" path="res://scripts/multiplayer/plant_site/plant_site.gd" id="8_oujx2"] -[ext_resource type="Script" uid="uid://b4cpux52fmx5o" path="res://scripts/multiplayer/plant_site/plant_deadzone.gd" id="9_1wlgq"] +[ext_resource type="Script" uid="uid://dk1gjbuydemmb" path="res://multiplayer/plant_site/plant_site.gd" id="8_oujx2"] +[ext_resource type="Script" uid="uid://b4cpux52fmx5o" path="res://multiplayer/plant_site/plant_deadzone.gd" id="9_1wlgq"] [ext_resource type="Material" uid="uid://c6xa4phihtya2" path="res://materials/Redmat.tres" id="9_ysk2e"] -[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://scripts/multiplayer/spawn_system/team_spawner.gd" id="10_02ic3"] -[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://scripts/object_container.gd" id="11_02ic3"] -[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://scripts/gui/hud/player_round_display.gd" id="17_wsuwo"] -[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://scripts/gui/hud/player_round_time.gd" id="18_0hcup"] -[ext_resource type="Script" uid="uid://m8qq2eynls6n" path="res://scripts/gui/team_choice_menu.gd" id="19_0hcup"] -[ext_resource type="PackedScene" uid="uid://j5lgbg8c0pq" path="res://scenes/gui/buy_menu/buy_menu.tscn" id="20_gcyg7"] +[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://team_spawner.gd" id="10_02ic3"] +[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://systems/object_container.gd" id="11_02ic3"] +[ext_resource type="Script" uid="uid://xwiw2g6uc21k" path="res://multiplayer/dynamic_objects_parent.gd" id="11_gcyg7"] +[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://gui/hud/player_round_display.gd" id="17_wsuwo"] +[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://gui/hud/player_round_time.gd" id="18_0hcup"] +[ext_resource type="PackedScene" uid="uid://cmon3g1lsm3q" path="res://gui/team_choice/team_choice_menu.tscn" id="19_gcyg7"] +[ext_resource type="PackedScene" uid="uid://j5lgbg8c0pq" path="res://gui/buy_menu/buy_menu.tscn" id="20_gcyg7"] [sub_resource type="BoxShape3D" id="BoxShape3D_ysk2e"] size = Vector3(15.324341, 0.96273804, 21.381592) @@ -289,12 +289,14 @@ spawn_path = NodePath("..") [node name="DynamicObjectsContainer" type="Node3D" parent="." node_paths=PackedStringArray("exlusion_list")] script = ExtResource("11_02ic3") -exlusion_list = [NodePath("MultiplayerSpawner"), NodePath("Bomb")] +exlusion_list = [NodePath("MultiplayerSpawner"), NodePath("Bomb"), NodePath("Parenter")] [node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="DynamicObjectsContainer"] -_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://dgfqppi21c2u0", "uid://l4t1mflutm3t") +_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://l4t1mflutm3t", "uid://b6qahd6q60js7") spawn_path = NodePath("..") -script = ExtResource("6_oujx2") + +[node name="Parenter" type="Node" parent="DynamicObjectsContainer"] +script = ExtResource("11_gcyg7") [node name="Bomb" type="Node3D" parent="DynamicObjectsContainer"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -28.858309, 1.4657042, 12.873563) @@ -375,49 +377,7 @@ script = ExtResource("18_0hcup") layout_mode = 2 script = ExtResource("17_wsuwo") -[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"] -visible = false -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("19_0hcup") - -[node name="Panel" type="PanelContainer" parent="CanvasLayer/CenterContainer"] -layout_mode = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/CenterContainer/Panel"] -layout_mode = 2 - -[node name="Label" type="Label" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer"] -layout_mode = 2 -text = "Choose your team" -horizontal_alignment = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer"] -layout_mode = 2 - -[node name="SpectatorButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Spectators" - -[node name="AttackButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Attackers" - -[node name="DefenceButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Defenders" - -[node name="CancelButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer"] -layout_mode = 2 -text = "Cancel" +[node name="TeamChoiceMenu" parent="CanvasLayer" instance=ExtResource("19_gcyg7")] [node name="BuyMenu" parent="CanvasLayer" instance=ExtResource("20_gcyg7")] visible = false - -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/SpectatorButton" to="CanvasLayer/CenterContainer" method="_on_spectator_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/AttackButton" to="CanvasLayer/CenterContainer" method="_on_attack_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/DefenceButton" to="CanvasLayer/CenterContainer" method="_on_defence_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/CancelButton" to="CanvasLayer/CenterContainer" method="_on_cancel_button_pressed"] diff --git a/levels/split.tscn b/levels/split.tscn index 03b1c4f..dcb525a 100644 --- a/levels/split.tscn +++ b/levels/split.tscn @@ -2,11 +2,11 @@ [ext_resource type="Environment" uid="uid://ybeuqwdb504c" path="res://environments/split_environment.tres" id="1_muj2s"] [ext_resource type="Material" uid="uid://bx3f5vx71ynh5" path="res://materials/Graymat.tres" id="4_mj4b4"] -[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://scripts/object_container.gd" id="9_klida"] -[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://scripts/multiplayer/team_spawner.gd" id="10_n3y50"] -[ext_resource type="Script" uid="uid://bqjv6l7hh0lix" path="res://scripts/multiplayer/spawn_system/dyn_objects_spawner.gd" id="11_ydk8w"] -[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://scripts/item_spawner.gd" id="12_kry5j"] -[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://scenes/weapons/droppable_bomb.tscn" id="13_hy0sx"] +[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://systems/object_container.gd" id="9_klida"] +[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://team_spawner.gd" id="10_n3y50"] +[ext_resource type="Script" path="res://multiplayer/spawn_system/dyn_objects_spawner.gd" id="11_ydk8w"] +[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://systems/item_spawner.gd" id="12_kry5j"] +[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="13_hy0sx"] [node name="PrototypeScene" type="Node3D"] diff --git a/multiplayer/dynamic_objects_parent.gd b/multiplayer/dynamic_objects_parent.gd new file mode 100644 index 0000000..78bc3a6 --- /dev/null +++ b/multiplayer/dynamic_objects_parent.gd @@ -0,0 +1,6 @@ +extends Node + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Session.dynamic_objects_parent = get_parent() diff --git a/multiplayer/dynamic_objects_parent.gd.uid b/multiplayer/dynamic_objects_parent.gd.uid new file mode 100644 index 0000000..a968d43 --- /dev/null +++ b/multiplayer/dynamic_objects_parent.gd.uid @@ -0,0 +1 @@ +uid://xwiw2g6uc21k diff --git a/scripts/multiplayer/level_container.gd b/multiplayer/level_container.gd similarity index 100% rename from scripts/multiplayer/level_container.gd rename to multiplayer/level_container.gd diff --git a/scripts/multiplayer/level_container.gd.uid b/multiplayer/level_container.gd.uid similarity index 100% rename from scripts/multiplayer/level_container.gd.uid rename to multiplayer/level_container.gd.uid diff --git a/scripts/multiplayer/lobby.gd b/multiplayer/lobby.gd similarity index 100% rename from scripts/multiplayer/lobby.gd rename to multiplayer/lobby.gd diff --git a/scripts/multiplayer/lobby.gd.uid b/multiplayer/lobby.gd.uid similarity index 100% rename from scripts/multiplayer/lobby.gd.uid rename to multiplayer/lobby.gd.uid diff --git a/scripts/multiplayer/own_visibility_toggle.gd b/multiplayer/own_visibility_toggle.gd similarity index 100% rename from scripts/multiplayer/own_visibility_toggle.gd rename to multiplayer/own_visibility_toggle.gd diff --git a/scripts/multiplayer/own_visibility_toggle.gd.uid b/multiplayer/own_visibility_toggle.gd.uid similarity index 100% rename from scripts/multiplayer/own_visibility_toggle.gd.uid rename to multiplayer/own_visibility_toggle.gd.uid diff --git a/scripts/multiplayer/plant_site/plant_deadzone.gd b/multiplayer/plant_site/plant_deadzone.gd similarity index 100% rename from scripts/multiplayer/plant_site/plant_deadzone.gd rename to multiplayer/plant_site/plant_deadzone.gd diff --git a/scripts/multiplayer/plant_site/plant_deadzone.gd.uid b/multiplayer/plant_site/plant_deadzone.gd.uid similarity index 100% rename from scripts/multiplayer/plant_site/plant_deadzone.gd.uid rename to multiplayer/plant_site/plant_deadzone.gd.uid diff --git a/scripts/multiplayer/plant_site/plant_site.gd b/multiplayer/plant_site/plant_site.gd similarity index 100% rename from scripts/multiplayer/plant_site/plant_site.gd rename to multiplayer/plant_site/plant_site.gd diff --git a/scripts/multiplayer/plant_site/plant_site.gd.uid b/multiplayer/plant_site/plant_site.gd.uid similarity index 100% rename from scripts/multiplayer/plant_site/plant_site.gd.uid rename to multiplayer/plant_site/plant_site.gd.uid diff --git a/scripts/multiplayer/session.gd b/multiplayer/session.gd similarity index 92% rename from scripts/multiplayer/session.gd rename to multiplayer/session.gd index c4b575f..8aa096d 100644 --- a/scripts/multiplayer/session.gd +++ b/multiplayer/session.gd @@ -31,27 +31,25 @@ signal player_stopped_interacting(id: int) var player_nodes: Dictionary[int,Player] = {} var player_data: Dictionary[int,Dictionary] = {} -var object_containers: Array[ObjectContainer] -var dynamic_objects_spawner: MultiplayerSpawner +var dynamic_objects_parent: Node3D +var object_containers: Array[ObjectContainer] var plants: Array[PlantSite] var plant_deadzones: Dictionary[StringName, Area3D] +var session_started_flag: bool = false +var round_state: ROUND_STATES var current_round: int = 0 var attacker_score: int = 0 var defender_score: int = 0 var attackers_alive: int = 0 var defenders_alive: int = 0 +var reference_round_time: float var bomb_timer: Timer var round_timer: Timer var buy_timer: Timer -var round_state: ROUND_STATES -var session_started_flag: bool = false - -var reference_round_time: float - func _ready() -> void: if multiplayer.is_server() == false: return @@ -198,9 +196,10 @@ func end_session() -> void: session_started_flag = false - dynamic_objects_spawner = null plants = [] plant_deadzones = {} + + dynamic_objects_parent = null func quit_session() -> void: if multiplayer.is_server(): @@ -307,30 +306,6 @@ func add_dead(team: int): func is_server_request() -> bool: return multiplayer.is_server() or multiplayer.get_remote_sender_id() == 1 -## Spawns dynamic object at game scene [br] -## Dictionary keys: [br] -## (Required) scene - path/uuid to scene [br] -## (Optional) position - position to spawn [br] -## (Optional) impulse - impulse to apply [br] -## (Optional but required for each other) [br] -## ammo, remaining_ammo, slot - data for dropped weapon [br] -## for more, see dyn_objects_spawner.gd -func spawn(data: Dictionary) -> void: - if multiplayer.is_server() == false: - return - - var object = dynamic_objects_spawner.spawn(data) - - if data.has("position"): - object.global_position = data.position - -func despawn(path: NodePath) -> void: - if multiplayer.is_server() == false: - printerr(str(multiplayer.get_remote_sender_id())+" tried to despawn internally on "+str(multiplayer.get_unique_id())) - return - - get_node(path).queue_free() - func shoot(id:int , damage: int, distance: float) -> void: if multiplayer.is_server() == false: return diff --git a/scripts/multiplayer/session.gd.uid b/multiplayer/session.gd.uid similarity index 100% rename from scripts/multiplayer/session.gd.uid rename to multiplayer/session.gd.uid diff --git a/project.godot b/project.godot index 4f12e8c..d35f188 100644 --- a/project.godot +++ b/project.godot @@ -20,12 +20,12 @@ config/icon="res://icon.svg" [autoload] -PlayerGlobal="*res://scripts/player/player_global.gd" -Lobby="*res://scripts/multiplayer/lobby.gd" -Session="*res://scripts/multiplayer/session.gd" -ClientSettings="*res://scripts/client_settings.gd" -Registry="*res://scripts/registry.gd" -ClientSettingsMenu="res://scenes/gui/client_settings.tscn" +PlayerGlobal="*res://systems/player/player_global.gd" +Lobby="*res://multiplayer/lobby.gd" +Session="*res://multiplayer/session.gd" +ClientSettings="*res://gui/client_settings/client_settings.gd" +ClientSettingsMenu="res://gui/client_settings/client_settings.tscn" +Registry="*res://systems/registry.gd" [display] diff --git a/scenes/game.tscn b/scenes/game.tscn index 011867b..dd4c8ff 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://dstie24qkbc86"] -[ext_resource type="PackedScene" uid="uid://bv6ptrditssow" path="res://scenes/gui/client_settings.tscn" id="1_yqjtg"] -[ext_resource type="PackedScene" uid="uid://cbtp4rvg66ba1" path="res://scenes/main_menu.tscn" id="2_lnu2h"] -[ext_resource type="Script" uid="uid://dj4mlrime72hx" path="res://scripts/multiplayer/level_container.gd" id="3_lnu2h"] +[ext_resource type="PackedScene" uid="uid://bv6ptrditssow" path="res://gui/client_settings/client_settings.tscn" id="1_yqjtg"] +[ext_resource type="PackedScene" uid="uid://cbtp4rvg66ba1" path="res://gui/main_menu/main_menu.tscn" id="2_lnu2h"] +[ext_resource type="Script" uid="uid://dj4mlrime72hx" path="res://multiplayer/level_container.gd" id="3_lnu2h"] [node name="Game" type="Node"] diff --git a/scenes/molikman.tscn b/scenes/molikman.tscn index 1e96fae..d034709 100644 --- a/scenes/molikman.tscn +++ b/scenes/molikman.tscn @@ -1,41 +1,41 @@ [gd_scene load_steps=82 format=4 uid="uid://dpsr6ug3pkb40"] -[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://scripts/player/player.gd" id="1_g2els"] -[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://scripts/player/crosshair.gd" id="3_dqkch"] -[ext_resource type="Script" uid="uid://bjhbdh6xsjgnn" path="res://scripts/player/player_camera.gd" id="3_qhqgy"] -[ext_resource type="Script" uid="uid://bmecgup3kcua7" path="res://scripts/weapon_system/weapon_system.gd" id="4_qlg0r"] -[ext_resource type="Script" uid="uid://dd5mp72dq43v6" path="res://scripts/multiplayer/own_visibility_toggle.gd" id="4_smehm"] +[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://systems/player/player.gd" id="1_g2els"] +[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://gui/crosshair.gd" id="3_dqkch"] +[ext_resource type="Script" uid="uid://bjhbdh6xsjgnn" path="res://systems/player/player_camera.gd" id="3_qhqgy"] +[ext_resource type="Script" uid="uid://bmecgup3kcua7" path="res://systems/weapon_system/weapon_system.gd" id="4_qlg0r"] +[ext_resource type="Script" uid="uid://dd5mp72dq43v6" path="res://multiplayer/own_visibility_toggle.gd" id="4_smehm"] [ext_resource type="Texture2D" uid="uid://pdepam77xqnq" path="res://models/characters/viewmodels/molikman_hands_tex_knife.png" id="5_4whvg"] [ext_resource type="Texture2D" uid="uid://mjmyeeb7m7yy" path="res://models/characters/viewmodels/molikman_hands_tex_sp_albedo.png" id="5_j3w78"] [ext_resource type="Texture2D" uid="uid://cmpn3gco5t5p2" path="res://models/characters/viewmodels/molikman_hands_tex_sp_roughness.png" id="6_gifnh"] -[ext_resource type="Script" uid="uid://5gwpjiswnegn" path="res://scripts/player/collision_team_updater.gd" id="7_a8ls1"] -[ext_resource type="Script" uid="uid://7gmgcaxfh8sb" path="res://scripts/debug/property_shower.gd" id="7_oprun"] +[ext_resource type="Script" uid="uid://5gwpjiswnegn" path="res://systems/player/collision_team_updater.gd" id="7_a8ls1"] +[ext_resource type="Script" uid="uid://7gmgcaxfh8sb" path="res://systems/debug/property_shower.gd" id="7_oprun"] [ext_resource type="Texture2D" uid="uid://twxsiwqgu1dy" path="res://models/characters/viewmodels/molikman_hands_tex_bomb.png" id="7_pa2rf"] -[ext_resource type="Script" uid="uid://3777rkbebgjm" path="res://scripts/state_machine/machine.gd" id="8_f1ej7"] -[ext_resource type="Script" uid="uid://bl8gfrrc512q2" path="res://scripts/player/dead_player_spectator.gd" id="8_rwwcc"] +[ext_resource type="Script" uid="uid://3777rkbebgjm" path="res://systems/state_machine/machine.gd" id="8_f1ej7"] +[ext_resource type="Script" uid="uid://bl8gfrrc512q2" path="res://systems/player/dead_player_spectator.gd" id="8_rwwcc"] [ext_resource type="Animation" uid="uid://bd7i1oux2k74q" path="res://animations/baked_bomb_plant.res" id="9_b2eak"] -[ext_resource type="Script" uid="uid://bv8sgx78s8hwn" path="res://scripts/player/states/crouching.gd" id="9_oprun"] -[ext_resource type="Script" uid="uid://dmy6ahci16los" path="res://scripts/debug/inventory_preview.gd" id="9_ownlk"] -[ext_resource type="Script" uid="uid://u0e2b2mvij1k" path="res://scripts/player/states/standing.gd" id="10_a8ls1"] -[ext_resource type="Script" uid="uid://vmhlmhd6gjx6" path="res://scripts/gui/hud/player_healthbar.gd" id="11_42l2h"] -[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://scripts/player/states/walk.gd" id="11_qfm1y"] -[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://scripts/player/states/falling.gd" id="12_fulsm"] -[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://scripts/gui/hud/player_ammo_display.gd" id="12_iortg"] +[ext_resource type="Script" uid="uid://bv8sgx78s8hwn" path="res://systems/player/states/crouching.gd" id="9_oprun"] +[ext_resource type="Script" uid="uid://dmy6ahci16los" path="res://systems/debug/inventory_preview.gd" id="9_ownlk"] +[ext_resource type="Script" uid="uid://u0e2b2mvij1k" path="res://systems/player/states/standing.gd" id="10_a8ls1"] +[ext_resource type="Script" uid="uid://vmhlmhd6gjx6" path="res://gui/hud/player_healthbar.gd" id="11_42l2h"] +[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://systems/player/states/walk.gd" id="11_qfm1y"] +[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://systems/player/states/falling.gd" id="12_fulsm"] +[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://gui/hud/player_ammo_display.gd" id="12_iortg"] [ext_resource type="AudioStream" uid="uid://bd4iofirvmiu6" path="res://audio/step_wood.ogg" id="16_fbysy"] -[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"] -[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://scripts/player/player_pickup.gd" id="17_fjvrb"] -[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://scripts/weapon_system/starting_weapon_spawner.gd" id="17_ownlk"] +[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://audio/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"] +[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://systems/player/player_pickup.gd" id="17_fjvrb"] +[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://systems/weapon_system/starting_weapon_spawner.gd" id="17_ownlk"] [ext_resource type="AudioStream" uid="uid://cdf76gyi58rrd" path="res://audio/land_wood.ogg" id="18_0cqlf"] -[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://scripts/player/player_movement.gd" id="19_70eug"] +[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://systems/player/player_movement.gd" id="19_70eug"] [ext_resource type="AudioStream" uid="uid://cc2mp4y3bkpgp" path="res://audio/plant.ogg" id="19_nquoi"] -[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://scripts/player/states/death.gd" id="19_rwwcc"] +[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://systems/player/states/death.gd" id="19_rwwcc"] [ext_resource type="AudioStream" uid="uid://c2y8wd427mmdw" path="res://audio/shoot.ogg" id="20_moxwy"] [ext_resource type="AudioStream" uid="uid://bixhakxpo8epv" path="res://audio/test_damaged.ogg" id="23_b2eak"] -[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://scripts/player/team_color_switcher.gd" id="25_1mtds"] +[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://systems/player/team_color_switcher.gd" id="25_1mtds"] [ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="26_r2jxp"] [ext_resource type="Texture2D" uid="uid://15mf4452fse0" path="res://textures/players/molikman/molikman_ingame_Molikman_blue.png" id="27_j3w78"] -[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://scripts/player/player_interaction.gd" id="37_5amik"] -[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://scripts/multiplayer/player_input.gd" id="37_b2eak"] +[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://systems/player/player_interaction.gd" id="37_5amik"] +[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://systems/player/player_input.gd" id="37_b2eak"] [sub_resource type="ArrayMesh" id="ArrayMesh_lot4n"] _surfaces = [{ @@ -8141,167 +8141,167 @@ bones/1/parent = 0 bones/1/rest = Transform3D(-0.967654, 0.25016752, 0.0325744, -0.25158498, -0.96648616, -0.05108291, 0.018703416, -0.057625845, 0.998163, 0.26421797, 0.773799, 4.559311e-08) bones/1/enabled = true bones/1/position = Vector3(0.264218, 0.773799, 7.5726156e-08) -bones/1/rotation = Quaternion(0.25656375, -0.04702925, 0.90831447, -0.32699883) +bones/1/rotation = Quaternion(-0.11607456, -0.007566696, 0.95669395, -0.26684496) bones/1/scale = Vector3(0.9999995, 1, 0.99999994) bones/2/name = "Forearm.L" bones/2/parent = 1 bones/2/rest = Transform3D(0.9995757, 0.013401157, 0.025863314, -0.011816048, 0.9980985, -0.060496498, -0.026624857, 0.060165223, 0.9978333, -1.3533281e-08, 0.4103367, 9.313226e-10) bones/2/enabled = true bones/2/position = Vector3(-1.3533281e-08, 0.4103367, 9.313226e-10) -bones/2/rotation = Quaternion(0.7044763, 0.00911981, -0.14722896, 0.6942288) +bones/2/rotation = Quaternion(0.35293797, 0.012252082, -0.073760726, 0.9326543) bones/2/scale = Vector3(1, 1, 1) bones/3/name = "Wrist.L" bones/3/parent = 2 bones/3/rest = Transform3D(-0.9710889, 0.23862918, 0.0065318705, 0.2375265, 0.96860886, -0.07333562, -0.023826849, -0.069663905, -0.9972859, 1.2121745e-08, 0.40612826, -7.421477e-10) bones/3/enabled = true bones/3/position = Vector3(1.2121745e-08, 0.40612826, -7.421477e-10) -bones/3/rotation = Quaternion(0.15562417, 0.961473, 0.016216002, 0.22602618) +bones/3/rotation = Quaternion(0.1121526, 0.9382349, -0.23010647, 0.23278317) bones/3/scale = Vector3(1, 1, 1) bones/4/name = "ThumbU.L" bones/4/parent = 3 bones/4/rest = Transform3D(0.9771098, -0.21273556, 7.7299774e-08, 0.2122333, 0.97480285, 0.068675034, -0.014609697, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787) bones/4/enabled = true bones/4/position = Vector3(-0.0045400136, 0.06477452, -0.046769787) -bones/4/rotation = Quaternion(-0.034160614, 0.0036756974, 0.10691859, 0.993674) +bones/4/rotation = Quaternion(-0.18413022, 0.109042466, -0.01852451, 0.97665894) bones/4/scale = Vector3(1, 0.99999994, 1) bones/5/name = "ThumbM.L" bones/5/parent = 4 bones/5/rest = Transform3D(0.96273476, -0.2702871, -0.009302501, 0.270358, 0.96273106, 0.0074529527, 0.0069413693, -0.009690224, 0.9999289, -9.109499e-09, 0.050440647, -1.0863523e-09) bones/5/enabled = true bones/5/position = Vector3(-9.109499e-09, 0.050440647, -1.0863523e-09) -bones/5/rotation = Quaternion(-0.0043263314, -0.0040993784, 0.13643973, 0.9906305) +bones/5/rotation = Quaternion(-0.003382863, -0.0049069775, -0.07181848, 0.9973999) bones/5/scale = Vector3(0.9999999, 1, 0.99999994) bones/6/name = "ThumbD.L" bones/6/parent = 5 bones/6/rest = Transform3D(0.9935268, -0.11359587, 0.00059893046, 0.11359593, 0.99347246, -0.01041187, 0.0005877246, 0.010412509, 0.9999456, -7.9744495e-09, 0.031673077, -2.8667273e-09) bones/6/enabled = true bones/6/position = Vector3(-7.9744495e-09, 0.031673077, -2.8667273e-09) -bones/6/rotation = Quaternion(0.005214611, 2.8070995e-06, 0.05689102, 0.9983668) +bones/6/rotation = Quaternion(0.004960197, 0.0016089659, -0.25340638, 0.96734595) bones/6/scale = Vector3(0.99999994, 1, 0.99999994) bones/7/name = "IndexU.L" bones/7/parent = 3 bones/7/rest = Transform3D(0.9800801, -0.19626929, -0.030354138, 0.19836761, 0.95998544, 0.19768214, -0.009659407, -0.19976562, 0.97979605, 0.04529645, 0.07181831, -0.03615555) bones/7/enabled = true bones/7/position = Vector3(0.04529645, 0.07181831, -0.03615555) -bones/7/rotation = Quaternion(-0.1003725, -0.005226302, 0.09966263, 0.98993206) +bones/7/rotation = Quaternion(-0.100372516, -0.0052263015, 0.09966263, 0.98993206) bones/7/scale = Vector3(1, 1, 0.99999994) bones/8/name = "IndexM.L" bones/8/parent = 7 bones/8/rest = Transform3D(0.9323135, -0.3615566, -0.008257606, 0.36068276, 0.9312451, -0.05187074, 0.026444064, 0.045381427, 0.99861956, 2.4359906e-08, 0.078790486, 4.656613e-10) bones/8/enabled = true bones/8/position = Vector3(2.4359906e-08, 0.078790486, 4.656613e-10) -bones/8/rotation = Quaternion(0.024743048, -0.008828851, 0.18375325, 0.98262125) +bones/8/rotation = Quaternion(0.02378056, -0.011164779, 0.27729166, 0.96042657) bones/8/scale = Vector3(0.9999999, 1, 0.9999999) bones/9/name = "IndexD.L" bones/9/parent = 8 bones/9/rest = Transform3D(0.99988145, 0.015218651, -0.0023559656, -0.015326478, 0.99832255, -0.055830937, 0.001502342, 0.055860423, 0.99843746, -1.967419e-08, 0.060257126, -9.313226e-10) bones/9/enabled = true bones/9/position = Vector3(-1.967419e-08, 0.060257126, -9.313226e-10) -bones/9/rotation = Quaternion(0.027934574, -0.0009649883, -0.0076394607, 0.9995801) +bones/9/rotation = Quaternion(0.024683425, -0.013114907, 0.43138972, 0.9017327) bones/9/scale = Vector3(1, 0.99999994, 1) bones/10/name = "MiddleU.L" bones/10/parent = 3 bones/10/rest = Transform3D(0.995789, -0.058257025, -0.070783034, 0.065396525, 0.9925152, 0.10313419, 0.064244956, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.01126304) bones/10/enabled = true bones/10/position = Vector3(0.0423781, 0.07765784, -0.01126304) -bones/10/rotation = Quaternion(-0.05274483, -0.0338398, 0.030989205, 0.9975533) +bones/10/rotation = Quaternion(-0.052744843, -0.033839792, 0.030989215, 0.9975533) bones/10/scale = Vector3(0.99999994, 0.9999999, 0.99999994) bones/11/name = "MiddleM.L" bones/11/parent = 10 bones/11/rest = Transform3D(0.86401427, -0.5034334, 0.005847616, 0.50168175, 0.85991454, -0.09414042, 0.042364985, 0.0842723, 0.99554175, -6.426126e-08, 0.07325909, 8.731149e-10) bones/11/enabled = true bones/11/position = Vector3(-6.426126e-08, 0.07325909, 8.731149e-10) -bones/11/rotation = Quaternion(0.046254627, -0.009467352, 0.26058254, 0.96429646) +bones/11/rotation = Quaternion(0.045131322, -0.013866683, 0.35200542, 0.9348064) bones/11/scale = Vector3(1, 1, 0.99999994) bones/12/name = "MiddleD.L" bones/12/parent = 11 bones/12/rest = Transform3D(0.9998987, -0.014212552, -0.00084086665, 0.014225133, 0.99974453, 0.017563164, 0.0005910344, -0.017573344, 0.99984545, -3.655441e-08, 0.064242914, -3.259629e-09) bones/12/enabled = true bones/12/position = Vector3(-3.655441e-08, 0.064242914, -3.259629e-09) -bones/12/rotation = Quaternion(-0.00878469, -0.00035800118, 0.0071099484, 0.9999361) +bones/12/rotation = Quaternion(-0.008052284, 0.0035297836, 0.44480184, 0.89558583) bones/12/scale = Vector3(1, 0.99999994, 1) bones/13/name = "RingU.L" bones/13/parent = 3 bones/13/rest = Transform3D(0.9704054, 0.03888444, -0.23833017, -0.02366867, 0.9975139, 0.06637663, 0.2403187, -0.05877129, 0.9689131, 0.033461113, 0.07149333, 0.017992377) bones/13/enabled = true bones/13/position = Vector3(0.033461113, 0.07149333, 0.017992377) -bones/13/rotation = Quaternion(-0.03153699, -0.12061845, -0.015763242, 0.9920727) +bones/13/rotation = Quaternion(-0.03153701, -0.12061846, -0.015763242, 0.9920727) bones/13/scale = Vector3(0.99999994, 1, 0.9999998) bones/14/name = "RingM.L" bones/14/parent = 13 bones/14/rest = Transform3D(0.8251062, -0.5639382, -0.034260202, 0.5524452, 0.81802005, -0.16014954, 0.11833996, 0.11321349, 0.9864982, 1.6880222e-08, 0.07553467, 6.165976e-09) bones/14/enabled = true bones/14/position = Vector3(1.6880222e-08, 0.07553467, 6.165976e-09) -bones/14/rotation = Quaternion(0.07174287, -0.040049206, 0.29298976, 0.9525786) +bones/14/rotation = Quaternion(0.067564145, -0.04675546, 0.38313726, 0.9200298) bones/14/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/15/name = "RingD.L" bones/15/parent = 14 bones/15/rest = Transform3D(0.99991727, -0.012864361, 0.00015441107, 0.012864626, 0.999672, -0.022144126, 0.00013050961, 0.022144279, 0.9997547, 1.8626451e-08, 0.064691424, -4.656613e-09) bones/15/enabled = true bones/15/position = Vector3(1.8626451e-08, 0.064691424, -4.656613e-09) -bones/15/rotation = Quaternion(0.011073017, 5.9979952e-06, 0.0064327978, 0.9999181) +bones/15/rotation = Quaternion(0.009954605, -0.0048495512, 0.44418532, 0.89586663) bones/15/scale = Vector3(1, 0.99999994, 0.99999994) bones/16/name = "LittleU.L" bones/16/parent = 3 bones/16/rest = Transform3D(0.9178412, -0.18039086, -0.35359105, 0.15868124, 0.98324484, -0.089720085, 0.3638513, 0.026240522, 0.93108726, 0.03628368, 0.082845636, 0.04032454) bones/16/enabled = true bones/16/position = Vector3(0.03628368, 0.082845636, 0.04032454) -bones/16/rotation = Quaternion(0.02961815, -0.183246, 0.08660432, 0.9787969) +bones/16/rotation = Quaternion(0.029618153, -0.18324603, 0.0866043, 0.9787969) bones/16/scale = Vector3(0.99999994, 0.9999999, 0.9999999) bones/17/name = "LittleM.L" bones/17/parent = 16 bones/17/rest = Transform3D(0.92672586, -0.36745474, -0.07846127, 0.35205162, 0.9221317, -0.16041435, 0.13129665, 0.12103772, 0.9839263, -2.0954758e-09, 0.061574344, -4.1909516e-09) bones/17/enabled = true bones/17/position = Vector3(-2.0954758e-09, 0.061574344, -4.1909516e-09) -bones/17/rotation = Quaternion(0.07188154, -0.05357118, 0.18375853, 0.97887486) +bones/17/rotation = Quaternion(0.066403255, -0.06022823, 0.27693692, 0.95669705) bones/17/scale = Vector3(1, 1, 0.99999994) bones/18/name = "LittleD.L" bones/18/parent = 17 bones/18/rest = Transform3D(0.9951905, -0.09795637, -0.0007189751, 0.09795622, 0.99507964, 0.014866696, -0.00074085005, -0.014865619, 0.9998894, 1.4901161e-08, 0.035935525, -1.7695129e-08) bones/18/enabled = true bones/18/position = Vector3(1.4901161e-08, 0.035935525, -1.7695129e-08) -bones/18/rotation = Quaternion(-0.0074422434, 5.438985e-06, 0.049038637, 0.99876916) +bones/18/rotation = Quaternion(-0.0073038945, 0.0014285325, 0.2391246, 0.9709604) bones/18/scale = Vector3(1, 0.99999994, 1.0000001) bones/19/name = "ThumbCtrl.L" bones/19/parent = 3 bones/19/rest = Transform3D(0.9771098, -0.21273556, 9.247858e-08, 0.2122333, 0.97480285, 0.06867504, -0.014609714, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787) bones/19/enabled = true bones/19/position = Vector3(-0.0045400136, 0.06477452, -0.046769787) -bones/19/rotation = Quaternion(-0.034160614, 0.0036757048, 0.106918596, 0.993674) +bones/19/rotation = Quaternion(-0.18413022, 0.10904248, -0.018524526, 0.97665894) bones/19/scale = Vector3(1, 0.99999994, 1) bones/20/name = "IndexCtrl.L" bones/20/parent = 3 bones/20/rest = Transform3D(0.9800801, -0.19626929, -0.030354116, 0.19836757, 0.9599856, 0.19768208, -0.009659403, -0.19976556, 0.9797962, 0.04529645, 0.07181834, -0.036155563) bones/20/enabled = true bones/20/position = Vector3(0.04529645, 0.07181834, -0.036155563) -bones/20/rotation = Quaternion(-0.10037246, -0.0052262964, 0.099662624, 0.98993206) +bones/20/rotation = Quaternion(-0.10037247, -0.0052262973, 0.09966262, 0.98993206) bones/20/scale = Vector3(1, 1.0000001, 1) bones/21/name = "MiddleCtrl.L" bones/21/parent = 3 bones/21/rest = Transform3D(0.995789, -0.058257017, -0.07078303, 0.06539652, 0.9925152, 0.1031342, 0.06424495, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.011263036) bones/21/enabled = true bones/21/position = Vector3(0.0423781, 0.07765784, -0.011263036) -bones/21/rotation = Quaternion(-0.05274483, -0.03383979, 0.030989202, 0.9975533) +bones/21/rotation = Quaternion(-0.052744843, -0.033839785, 0.030989211, 0.9975533) bones/21/scale = Vector3(0.99999994, 0.9999999, 0.99999994) bones/22/name = "RingCtrl.L" bones/22/parent = 3 bones/22/rest = Transform3D(0.9704054, 0.03888438, -0.23833017, -0.023668619, 0.9975138, 0.0663766, 0.2403187, -0.05877127, 0.9689131, 0.033461053, 0.07149334, 0.017992355) bones/22/enabled = true bones/22/position = Vector3(0.033461053, 0.07149334, 0.017992355) -bones/22/rotation = Quaternion(-0.03153698, -0.12061845, -0.015763218, 0.9920727) +bones/22/rotation = Quaternion(-0.031537004, -0.12061846, -0.015763216, 0.9920727) bones/22/scale = Vector3(0.99999994, 0.9999999, 0.9999998) bones/23/name = "LittleCtrl.L" bones/23/parent = 3 bones/23/rest = Transform3D(0.91784114, -0.18039091, -0.35359108, 0.15868126, 0.9832449, -0.08972012, 0.3638513, 0.026240537, 0.9310873, 0.03628368, 0.08284565, 0.04032453) bones/23/enabled = true bones/23/position = Vector3(0.03628368, 0.08284565, 0.04032453) -bones/23/rotation = Quaternion(0.02961816, -0.183246, 0.08660434, 0.9787969) +bones/23/rotation = Quaternion(0.029618153, -0.18324603, 0.08660434, 0.9787969) bones/23/scale = Vector3(0.99999994, 0.99999994, 0.99999994) bones/24/name = "ArmPole.L" bones/24/parent = 0 bones/24/rest = Transform3D(-1, 0, 1.509958e-07, 0, 1, 0, -1.509958e-07, 0, -1, 0.35926056, 0.3746208, -0.29998538) bones/24/enabled = true -bones/24/position = Vector3(0.3592606, 0.3746208, -0.29998538) +bones/24/position = Vector3(0.6056142, 0.20785579, -0.19235319) bones/24/rotation = Quaternion(0, 1, 0, 7.54979e-08) bones/24/scale = Vector3(1, 1, 1) bones/25/name = "ArmCtrl.L" @@ -8315,190 +8315,190 @@ bones/26/name = "WristCtrl.L" bones/26/parent = 0 bones/26/rest = Transform3D(0.99986863, 1.6880067e-09, -0.016210483, 0.0011133, -0.9976389, 0.06866942, -0.016172118, -0.06867806, -0.9975134, 0.4638072, -0.017174125, -0.022513157) bones/26/enabled = true -bones/26/position = Vector3(0.62878627, 0.4425465, 0.28039673) -bones/26/rotation = Quaternion(0.73096085, 0.005924971, -0.005531113, 0.68237126) +bones/26/position = Vector3(0.5209434, 0.11365941, 0.27973163) +bones/26/rotation = Quaternion(0.99525756, 0.0013011391, -0.008000332, 0.096937135) bones/26/scale = Vector3(1, 1, 1.0000056) bones/27/name = "Arm.R" bones/27/parent = 0 bones/27/rest = Transform3D(-0.9676544, -0.25016746, -0.032574747, 0.25158504, -0.96648616, -0.051082943, -0.018703751, -0.057625957, 0.99816304, -0.26421797, 0.773799, -8.039582e-08) bones/27/enabled = true -bones/27/position = Vector3(-0.25017977, 0.56099474, -0.06066542) -bones/27/rotation = Quaternion(-0.08453745, 0.20055908, 0.85529864, 0.47020617) +bones/27/position = Vector3(-0.2642181, 0.773799, -7.244679e-08) +bones/27/rotation = Quaternion(-0.004606466, 0.043080933, 0.98210853, 0.18326412) bones/27/scale = Vector3(0.99999994, 1, 1) bones/28/name = "Forearm.R" bones/28/parent = 27 bones/28/rest = Transform3D(0.99957556, -0.013401167, -0.025863245, 0.011816061, 0.9980984, -0.060496498, 0.026624788, 0.060165223, 0.99783325, 1.17579475e-08, 0.4103366, 3.7252903e-09) bones/28/enabled = true bones/28/position = Vector3(1.17579475e-08, 0.4103366, 3.7252903e-09) -bones/28/rotation = Quaternion(0.46447125, -0.011562698, 0.097070254, 0.8801762) +bones/28/rotation = Quaternion(0.24371684, -0.012721976, 0.050934598, 0.96842444) bones/28/scale = Vector3(0.9999999, 0.9999999, 0.99999994) bones/29/name = "Wrist.R" bones/29/parent = 28 bones/29/rest = Transform3D(-0.9710889, -0.23862909, -0.0065321154, -0.23752637, 0.968609, -0.073335625, 0.02382708, -0.06966387, -0.9972859, -2.158049e-08, 0.4061282, -2.1100277e-09) bones/29/enabled = true bones/29/position = Vector3(-2.158049e-08, 0.4061282, -2.1100277e-09) -bones/29/rotation = Quaternion(-0.59555614, 0.5829333, 0.006156997, -0.5526879) +bones/29/rotation = Quaternion(-0.105007105, 0.9899002, -0.015528794, -0.09396898) bones/29/scale = Vector3(1, 1.0000001, 1) bones/30/name = "ThumbU.R" bones/30/parent = 29 bones/30/rest = Transform3D(0.97710997, 0.21273556, -2.9711325e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609926, -0.067103066, 0.9976392, 0.0045400467, 0.06477455, -0.046769787) bones/30/enabled = true bones/30/position = Vector3(0.0045400467, 0.06477455, -0.046769787) -bones/30/rotation = Quaternion(-0.032949667, -0.0097353915, -0.28318176, 0.95845073) +bones/30/rotation = Quaternion(-0.03416064, -0.0036758184, -0.10691859, 0.993674) bones/30/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/31/name = "ThumbM.R" bones/31/parent = 30 bones/31/rest = Transform3D(0.9627348, 0.270287, 0.009302534, -0.27035788, 0.9627312, 0.0074529545, -0.006941402, -0.009690234, 0.99992895, 1.0739313e-08, 0.05044063, 6.8161654e-10) bones/31/enabled = true bones/31/position = Vector3(1.0739313e-08, 0.05044063, 6.8161654e-10) -bones/31/rotation = Quaternion(-0.0019134879, 0.0056446115, 0.3415998, 0.9398266) +bones/31/rotation = Quaternion(-0.0043263347, 0.0040993956, -0.13643965, 0.9906305) bones/31/scale = Vector3(0.99999994, 1.0000001, 1) bones/32/name = "ThumbD.R" bones/32/parent = 31 bones/32/rest = Transform3D(0.99352676, 0.113595836, -0.0005989222, -0.113595866, 0.99347264, -0.010411862, -0.00058773125, 0.010412501, 0.99994564, 1.717126e-08, 0.031673037, 2.6193447e-09) bones/32/enabled = true bones/32/position = Vector3(1.717126e-08, 0.031673037, 2.6193447e-09) -bones/32/rotation = Quaternion(0.004624635, -0.0024093962, 0.41035476, 0.9119111) +bones/32/rotation = Quaternion(0.0052146167, -2.8286527e-06, -0.056890868, 0.99836683) bones/32/scale = Vector3(0.9999999, 1.0000001, 1) bones/33/name = "IndexU.R" bones/33/parent = 29 bones/33/rest = Transform3D(0.9800801, 0.19626924, 0.030353922, -0.1983675, 0.95998544, 0.19768226, 0.00965963, -0.19976568, 0.97979605, -0.04529639, 0.07181834, -0.03615556) bones/33/enabled = true bones/33/position = Vector3(-0.04529639, 0.07181834, -0.03615556) -bones/33/rotation = Quaternion(-0.10037253, 0.005226144, -0.09966263, 0.98993206) +bones/33/rotation = Quaternion(-0.100372545, 0.005226185, -0.0996626, 0.98993206) bones/33/scale = Vector3(1, 0.99999994, 0.99999994) bones/34/name = "IndexM.R" bones/34/parent = 33 bones/34/rest = Transform3D(0.9323134, 0.3615565, 0.008257622, -0.3606826, 0.9312451, -0.051870808, -0.026444094, 0.04538148, 0.9986197, 1.2980308e-08, 0.07879048, -2.3283064e-09) bones/34/enabled = true bones/34/position = Vector3(1.2980308e-08, 0.07879048, -2.3283064e-09) -bones/34/rotation = Quaternion(0.0193374, 0.017782895, -0.5525706, 0.833052) +bones/34/rotation = Quaternion(0.024743041, 0.008828865, -0.18375322, 0.9826214) bones/34/scale = Vector3(0.9999997, 1, 1) bones/35/name = "IndexD.R" bones/35/parent = 34 bones/35/rest = Transform3D(0.99988145, -0.015218617, 0.0023559635, 0.015326444, 0.99832255, -0.05583094, -0.0015023419, 0.05586043, 0.9984374, -9.895302e-09, 0.060257077, 1.3969839e-09) bones/35/enabled = true bones/35/position = Vector3(-9.895302e-09, 0.060257077, 1.3969839e-09) -bones/35/rotation = Quaternion(0.010231995, 0.026011147, -0.91397166, 0.40481445) +bones/35/rotation = Quaternion(0.023770574, 0.014704669, -0.48956946, 0.8715162) bones/35/scale = Vector3(1, 0.99999994, 0.99999994) bones/36/name = "MiddleU.R" bones/36/parent = 29 bones/36/rest = Transform3D(0.9957891, 0.05825713, 0.07078279, -0.06539661, 0.9925152, 0.103134215, -0.064244695, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263045) bones/36/enabled = true bones/36/position = Vector3(-0.04237805, 0.07765788, -0.011263045) -bones/36/rotation = Quaternion(-0.05274484, 0.033839658, -0.030989284, 0.9975533) +bones/36/rotation = Quaternion(-0.05274485, 0.03383966, -0.03098926, 0.9975533) bones/36/scale = Vector3(1, 0.9999999, 1) bones/37/name = "MiddleM.R" bones/37/parent = 36 bones/37/rest = Transform3D(0.8640145, 0.50343317, -0.0058475533, -0.5016816, 0.8599146, -0.09414036, -0.04236499, 0.08427222, 0.99554175, 3.4226105e-08, 0.073259085, -2.910383e-10) bones/37/enabled = true bones/37/position = Vector3(3.4226105e-08, 0.073259085, -2.910383e-10) -bones/37/rotation = Quaternion(0.038894925, 0.026763793, -0.61616135, 0.7862036) +bones/37/rotation = Quaternion(0.044503566, 0.015765553, -0.39127773, 0.9190607) bones/37/scale = Vector3(1.0000001, 0.99999994, 0.99999994) bones/38/name = "MiddleD.R" bones/38/parent = 37 bones/38/rest = Transform3D(0.9998987, 0.01421252, 0.00084087194, -0.014225099, 0.9997446, 0.017563174, -0.0005910403, -0.017573357, 0.9998453, 6.9849193e-09, 0.06424289, 3.259629e-09) bones/38/enabled = true bones/38/position = Vector3(6.9849193e-09, 0.06424289, 3.259629e-09) -bones/38/rotation = Quaternion(-0.0038245036, -0.0079165865, -0.9201681, 0.39142483) +bones/38/rotation = Quaternion(-0.0068607684, -0.0054980787, -0.661929, 0.749515) bones/38/scale = Vector3(1, 1, 0.9999999) bones/39/name = "RingU.R" bones/39/parent = 29 bones/39/rest = Transform3D(0.97040546, -0.03888434, 0.23833002, 0.023668591, 0.9975139, 0.0663766, -0.24031854, -0.05877128, 0.9689132, -0.033461094, 0.07149336, 0.017992368) bones/39/enabled = true bones/39/position = Vector3(-0.033461094, 0.07149336, 0.017992368) -bones/39/rotation = Quaternion(-0.031536963, 0.12061838, 0.01576319, 0.99207276) +bones/39/rotation = Quaternion(-0.031536996, 0.12061837, 0.015763192, 0.99207276) bones/39/scale = Vector3(1, 1, 0.9999999) bones/40/name = "RingM.R" bones/40/parent = 39 bones/40/rest = Transform3D(0.8251063, 0.56393784, 0.034260213, -0.55244493, 0.81802005, -0.16014935, -0.11833983, 0.11321335, 0.98649806, -1.9383151e-08, 0.07553466, 5.743118e-09) bones/40/enabled = true bones/40/position = Vector3(-1.9383151e-08, 0.07553466, 5.743118e-09) -bones/40/rotation = Quaternion(0.05043134, 0.064866394, -0.6414283, 0.7627704) +bones/40/rotation = Quaternion(0.055570774, 0.06052161, -0.5768524, 0.81270564) bones/40/scale = Vector3(1, 0.99999994, 1) bones/41/name = "RingD.R" bones/41/parent = 40 bones/41/rest = Transform3D(0.99991727, 0.012864309, -0.00015439918, -0.012864574, 0.999672, -0.022144107, -0.00013052007, 0.02214426, 0.9997548, 6.519258e-09, 0.06469142, 1.8626451e-08) bones/41/enabled = true bones/41/position = Vector3(6.519258e-09, 0.06469142, 1.8626451e-08) -bones/41/rotation = Quaternion(0.004412254, 0.010155983, -0.9198821, 0.3920389) +bones/41/rotation = Quaternion(0.008899972, 0.0065879845, -0.6005104, 0.7995404) bones/41/scale = Vector3(1, 0.99999994, 1) bones/42/name = "LittleU.R" bones/42/parent = 29 bones/42/rest = Transform3D(0.91784126, 0.18039082, 0.35359094, -0.15868118, 0.9832451, -0.08972006, -0.36385116, 0.026240546, 0.93108743, -0.036283698, 0.08284566, 0.04032454) bones/42/enabled = true bones/42/position = Vector3(-0.036283698, 0.08284566, 0.04032454) -bones/42/rotation = Quaternion(0.029618183, 0.1832459, -0.08660429, 0.978797) +bones/42/rotation = Quaternion(0.029618138, 0.18324591, -0.08660426, 0.978797) bones/42/scale = Vector3(1, 1.0000001, 1) bones/43/name = "LittleM.R" bones/43/parent = 42 bones/43/rest = Transform3D(0.9267258, 0.3674547, 0.078461215, -0.35205156, 0.9221319, -0.16041426, -0.13129655, 0.12103769, 0.9839263, 4.5401976e-09, 0.061574332, 1.4901161e-08) bones/43/enabled = true bones/43/position = Vector3(4.5401976e-09, 0.061574332, 1.4901161e-08) -bones/43/rotation = Quaternion(0.045283318, 0.07737079, -0.5511137, 0.8296004) +bones/43/rotation = Quaternion(0.04652544, 0.07663028, -0.5376598, 0.83838236) bones/43/scale = Vector3(0.9999999, 1.0000001, 0.99999994) bones/44/name = "LittleD.R" bones/44/parent = 43 bones/44/rest = Transform3D(0.99519044, 0.09795644, 0.00071900914, -0.097956285, 0.99507964, 0.014866768, 0.0007408244, -0.014865696, 0.99988925, -2.6077032e-08, 0.035935488, 2.0489097e-08) bones/44/enabled = true bones/44/position = Vector3(-2.6077032e-08, 0.035935488, 2.0489097e-08) -bones/44/rotation = Quaternion(-0.0051725525, -0.005350945, -0.75170314, 0.65945977) +bones/44/rotation = Quaternion(-0.005342348, -0.00518124, -0.7300394, 0.68336457) bones/44/scale = Vector3(1, 0.99999994, 1) bones/45/name = "ThumbCtrl.R" bones/45/parent = 29 bones/45/rest = Transform3D(0.97710997, 0.21273556, -3.141077e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609943, -0.06710306, 0.9976392, 0.0045400467, 0.06477455, -0.046769787) bones/45/enabled = true bones/45/position = Vector3(0.0045400467, 0.06477455, -0.046769787) -bones/45/rotation = Quaternion(-0.032949682, -0.009735426, -0.28318176, 0.95845073) +bones/45/rotation = Quaternion(-0.03416064, -0.0036758187, -0.10691858, 0.993674) bones/45/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/46/name = "IndexCtrl.R" bones/46/parent = 29 bones/46/rest = Transform3D(0.9800801, 0.1962692, 0.030353911, -0.19836746, 0.9599855, 0.1976822, 0.009659619, -0.19976562, 0.9797961, -0.04529639, 0.07181837, -0.036155567) bones/46/enabled = true bones/46/position = Vector3(-0.04529639, 0.07181837, -0.036155567) -bones/46/rotation = Quaternion(-0.100372516, 0.005226184, -0.09966261, 0.98993206) +bones/46/rotation = Quaternion(-0.100372516, 0.0052261977, -0.09966259, 0.98993206) bones/46/scale = Vector3(1, 1, 1) bones/47/name = "MiddleCtrl.R" bones/47/parent = 29 bones/47/rest = Transform3D(0.9957891, 0.05825713, 0.07078278, -0.06539661, 0.9925152, 0.103134215, -0.06424469, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263043) bones/47/enabled = true bones/47/position = Vector3(-0.04237805, 0.07765788, -0.011263043) -bones/47/rotation = Quaternion(-0.052744824, 0.03383967, -0.030989263, 0.9975533) +bones/47/rotation = Quaternion(-0.052744865, 0.033839665, -0.030989254, 0.9975533) bones/47/scale = Vector3(1, 0.9999999, 1) bones/48/name = "RingCtrl.R" bones/48/parent = 29 bones/48/rest = Transform3D(0.97040546, -0.038884338, 0.23833002, 0.023668593, 0.9975139, 0.06637658, -0.24031854, -0.058771256, 0.9689132, -0.033461034, 0.07149337, 0.017992346) bones/48/enabled = true bones/48/position = Vector3(-0.033461034, 0.07149337, 0.017992346) -bones/48/rotation = Quaternion(-0.03153697, 0.120618366, 0.0157632, 0.99207276) +bones/48/rotation = Quaternion(-0.031536963, 0.120618366, 0.015763193, 0.99207276) bones/48/scale = Vector3(1, 1, 0.9999999) bones/49/name = "LittleCtrl.R" bones/49/parent = 29 bones/49/rest = Transform3D(0.91784126, 0.18039085, 0.353591, -0.15868121, 0.9832451, -0.08972009, -0.36385122, 0.026240563, 0.93108743, -0.036283698, 0.08284567, 0.04032453) bones/49/enabled = true bones/49/position = Vector3(-0.036283698, 0.08284567, 0.04032453) -bones/49/rotation = Quaternion(0.029618176, 0.1832459, -0.08660432, 0.9787969) +bones/49/rotation = Quaternion(0.029618144, 0.1832459, -0.0866043, 0.9787969) bones/49/scale = Vector3(1, 1.0000001, 1) bones/50/name = "ArmPole.R" bones/50/parent = 0 bones/50/rest = Transform3D(-1, 0, 3.8941437e-07, 0, 1, 0, -3.8941437e-07, 0, -1, -0.35926044, 0.3746208, -0.29998556) bones/50/enabled = true -bones/50/position = Vector3(-0.35926044, 0.3746208, -0.29998556) +bones/50/position = Vector3(-0.50106835, 0.038118243, -0.18320106) bones/50/rotation = Quaternion(0, 1, 0, 1.9470718e-07) bones/50/scale = Vector3(1, 1, 1) bones/51/name = "ArmCtrl.R" bones/51/parent = 0 bones/51/rest = Transform3D(0.94635737, -0.23162138, -0.2253216, -0.22532392, -0.9728065, 0.05364829, -0.23162167, -1.0385237e-07, -0.9728063, -0.26421803, 0.77379894, -6.9123985e-08) bones/51/enabled = true -bones/51/position = Vector3(-0.25017977, 0.5609948, -0.0606654) +bones/51/position = Vector3(-0.26421806, 0.77379906, -5.8168844e-08) bones/51/rotation = Quaternion(0.9864031, -0.11581065, -0.115810156, -0.013596978) bones/51/scale = Vector3(1.0000058, 1.0000005, 1) bones/52/name = "WristCtrl.R" bones/52/parent = 0 bones/52/rest = Transform3D(0.9998686, -1.920822e-09, 0.016210958, -0.0011133328, -0.9976389, 0.068669416, 0.016172592, -0.06867806, -0.9975133, -0.4638072, -0.017174125, -0.022513377) bones/52/enabled = true -bones/52/position = Vector3(-0.72660184, 0.34166104, 0.43067294) -bones/52/rotation = Quaternion(0.72577125, 0.52325475, -0.056364454, 0.4430391) +bones/52/position = Vector3(-0.4992833, 0.063198194, 0.25505123) +bones/52/rotation = Quaternion(0.9634464, -0.0027018473, 0.0076421746, 0.26777864) bones/52/scale = Vector3(0.99999994, 1, 1.0000055) bones/53/name = "neutral_bone" bones/53/parent = -1 @@ -8518,7 +8518,7 @@ mesh = SubResource("ArrayMesh_k2oqm") skin = SubResource("Skin_7i6yw") [node name="Knife" type="MeshInstance3D" parent="Camera3D/molikman_hands"] -transform = Transform3D(0.44349924, -0.24581784, -0.24349186, 1.6763806e-08, 0.3958524, -0.3996338, 0.34599808, 0.3150885, 0.3121071, -0.5997052, 0.41665718, 0.45029944) +transform = Transform3D(0.39448777, -0.03612302, -0.39935043, -0.32588214, 0.2975342, -0.3488273, 0.23363753, 0.4759987, 0.18773648, 0.028825827, 0.36956742, -0.17253295) mesh = SubResource("ArrayMesh_3xmvl") skeleton = NodePath("") @@ -8559,29 +8559,29 @@ bones/0/name = "DownCasing" bones/0/parent = -1 bones/0/rest = Transform3D(1, -3.1337524e-16, -6.436688e-14, -6.436689e-14, -0.009737134, -0.99995255, -3.1338864e-16, 0.99995255, -0.009737134, -1.376031e-17, -0.061970927, -0.35584867) bones/0/enabled = true -bones/0/position = Vector3(-1.376031e-17, -0.061970927, -0.35584867) -bones/0/rotation = Quaternion(0.710541, -2.2757397e-14, -2.2757402e-14, 0.7036558) +bones/0/position = Vector3(-1.1928003e-07, 0.12658781, 1.0104566) +bones/0/rotation = Quaternion(4.2351576e-08, 0.71054107, -0.7036557, 4.1941128e-08) bones/0/scale = Vector3(1, 0.99999994, 0.99999994) bones/1/name = "UpCasing" bones/1/parent = 0 bones/1/rest = Transform3D(1, 3.0177497e-16, 2.1433547e-14, -2.0314211e-16, 0.99998933, -0.0046016485, -2.143471e-14, 0.0046016485, 0.99998933, -4.4210334e-15, -0.0037285234, -0.06914721) bones/1/enabled = true bones/1/position = Vector3(-4.4210334e-15, -0.0037285234, -0.06914721) -bones/1/rotation = Quaternion(0.0023008306, 1.0717094e-14, -1.262296e-16, 0.9999974) +bones/1/rotation = Quaternion(0.0023008303, 1.0703215e-14, -1.261531e-16, 0.9999974) bones/1/scale = Vector3(1, 0.9999999, 0.9999999) bones/2/name = "Lock.L" bones/2/parent = 1 bones/2/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, 0.40466008, 0.74391246, -0.04321898) bones/2/enabled = true bones/2/position = Vector3(0.40466008, 0.74391246, -0.04321898) -bones/2/rotation = Quaternion(0.7079494, 1.6838627e-06, 1.6878829e-06, 0.7062632) +bones/2/rotation = Quaternion(0.7079494, 1.6838625e-06, 1.6878829e-06, 0.7062632) bones/2/scale = Vector3(1, 0.99999994, 0.99999994) bones/3/name = "Lock.R" bones/3/parent = 1 bones/3/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, -0.4074956, 0.74391246, -0.04321898) bones/3/enabled = true bones/3/position = Vector3(-0.4074956, 0.74391246, -0.04321898) -bones/3/rotation = Quaternion(0.7079494, 1.6838627e-06, 1.6878829e-06, 0.7062632) +bones/3/rotation = Quaternion(0.7079494, 1.6838625e-06, 1.6878829e-06, 0.7062632) bones/3/scale = Vector3(1, 0.99999994, 0.99999994) [node name="Case" type="MeshInstance3D" parent="Camera3D/molikman_hands/Armature/Skeleton3D"] diff --git a/scenes/smoke.tscn b/scenes/smoke.tscn deleted file mode 100644 index 31b1b8f..0000000 --- a/scenes/smoke.tscn +++ /dev/null @@ -1,49 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://cheu6vds21er7"] - -[ext_resource type="Script" uid="uid://t5jjqwnkxgvo" path="res://scripts/smoke_grenade.gd" id="1_acmqr"] - -[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_acmqr"] -bounce = 0.5 - -[sub_resource type="CapsuleMesh" id="CapsuleMesh_vb5ru"] -radius = 0.1 -height = 0.5 - -[sub_resource type="FastNoiseLite" id="FastNoiseLite_acmqr"] -frequency = 0.1141 - -[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_rx0m8"] -width = 128 -height = 128 -depth = 128 -noise = SubResource("FastNoiseLite_acmqr") - -[sub_resource type="FogMaterial" id="FogMaterial_rx0m8"] -resource_local_to_scene = true -density = 8.0 -density_texture = SubResource("NoiseTexture3D_rx0m8") - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_acmqr"] -radius = 0.1 -height = 0.5 - -[node name="Smoke" type="RigidBody3D" node_paths=PackedStringArray("fog")] -physics_material_override = SubResource("PhysicsMaterial_acmqr") -contact_monitor = true -max_contacts_reported = 1 -script = ExtResource("1_acmqr") -radius = 10.0 -fog = NodePath("FogVolume") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("CapsuleMesh_vb5ru") - -[node name="FogVolume" type="FogVolume" parent="."] -size = Vector3(0, 0, 0) -shape = 0 -material = SubResource("FogMaterial_rx0m8") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("CapsuleShape3D_acmqr") - -[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/spectator.tscn b/scenes/spectator.tscn index afc26b5..c7df0b8 100644 --- a/scenes/spectator.tscn +++ b/scenes/spectator.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://ckjabjcvgki6n"] -[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://scripts/player/spectator.gd" id="1_jjbhc"] +[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://systems/player/spectator.gd" id="1_jjbhc"] [node name="Spectator" type="Camera3D"] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 0) diff --git a/scenes/weapons/molik.tscn b/scenes/weapons/molik.tscn index bd941f3..f7c89cf 100644 --- a/scenes/weapons/molik.tscn +++ b/scenes/weapons/molik.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://b6qahd6q60js7"] -[ext_resource type="Script" uid="uid://y1s64ppporww" path="res://scripts/weapon_system/molikman/molik/molik.gd" id="1_aqokr"] +[ext_resource type="Script" uid="uid://y1s64ppporww" path="res://weapons/molikman/molik/molik.gd" id="1_aqokr"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_aqokr"] bounce = 0.53 diff --git a/scenes/weapons/molikman_molik.tscn b/scenes/weapons/molikman_molik.tscn index a02e5b5..e57e5cb 100644 --- a/scenes/weapons/molikman_molik.tscn +++ b/scenes/weapons/molikman_molik.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://c5q7e5dj86187"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_e53aq"] -[ext_resource type="Script" uid="uid://js2rkse5mka0" path="res://scripts/weapon_system/molikman/molik/intro_state.gd" id="2_8q75j"] -[ext_resource type="Script" uid="uid://cnre3f01a2n88" path="res://scripts/weapon_system/molikman/molik/idle_state.gd" id="3_p1i4u"] -[ext_resource type="Script" uid="uid://b6eio68csxw7v" path="res://scripts/weapon_system/molikman/molik/throw.gd" id="4_1la3w"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_e53aq"] +[ext_resource type="Script" uid="uid://js2rkse5mka0" path="res://weapons/molikman/molik/intro_state.gd" id="2_8q75j"] +[ext_resource type="Script" uid="uid://cnre3f01a2n88" path="res://weapons/molikman/molik/idle_state.gd" id="3_p1i4u"] +[ext_resource type="Script" uid="uid://b6eio68csxw7v" path="res://weapons/molikman/molik/throw.gd" id="4_1la3w"] [node name="MolikmanMolik" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_e53aq") diff --git a/scripts/abilities/Ability.gd b/scripts/abilities/Ability.gd deleted file mode 100644 index e3304c1..0000000 --- a/scripts/abilities/Ability.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Resource - -@export var internal_id: StringName -@export var immediate: bool -@export var max_uses: int -@export var cost: int diff --git a/scripts/abilities/Ability.gd.uid b/scripts/abilities/Ability.gd.uid deleted file mode 100644 index fa59ec2..0000000 --- a/scripts/abilities/Ability.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cwn6swbl3bcqw diff --git a/scripts/gui/lobby/lobby_buttons.gd b/scripts/gui/lobby/lobby_buttons.gd deleted file mode 100644 index 57fc58a..0000000 --- a/scripts/gui/lobby/lobby_buttons.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends Node - -func _ready() -> void: - Lobby.lobby_joined.connect(on_lobby_joined) - -func on_lobby_joined() -> void: - $StartButton.hide() diff --git a/scripts/gui/lobby/lobby_buttons.gd.uid b/scripts/gui/lobby/lobby_buttons.gd.uid deleted file mode 100644 index 6157091..0000000 --- a/scripts/gui/lobby/lobby_buttons.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://2uyxkfmbbims diff --git a/scripts/multiplayer/loaded_notifier.gd b/scripts/multiplayer/loaded_notifier.gd deleted file mode 100644 index 7bccb84..0000000 --- a/scripts/multiplayer/loaded_notifier.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends Node - - -func _ready() -> void: - if not multiplayer.is_server(): - return - Lobby.add_loaded_player(multiplayer.get_unique_id()) diff --git a/scripts/multiplayer/loaded_notifier.gd.uid b/scripts/multiplayer/loaded_notifier.gd.uid deleted file mode 100644 index 5d0fbec..0000000 --- a/scripts/multiplayer/loaded_notifier.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bdxy621fthtrv diff --git a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd b/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd deleted file mode 100644 index 1db85a4..0000000 --- a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd +++ /dev/null @@ -1,44 +0,0 @@ -extends MultiplayerSpawner - -func _ready() -> void: - spawn_function = request_spawn - Session.dynamic_objects_spawner = self - -func request_spawn(data: Variant) -> Node: - if data.has("type") == false or data.has("spawn_name") == false: - return Node.new() - match data.type: - "weapon": - var weapon: DroppableWeapon = Registry.weapons[data.spawn_name].dropped_scene.instantiate() - weapon.apply_central_impulse(data.impulse) - weapon.weapon.ammo = data.ammo - weapon.weapon.remaining_ammo = data.remaining_ammo - weapon.slot = Registry.weapons[data.spawn_name].slot - - for key in data.keys(): - if key == "impulse" or key == "ammo" or key == "remaining_ammo": - continue - weapon.set(key,data[key]) - - return weapon - "projectile": - var projectile: RigidBody3D = Registry.spawnable_objects[data.spawn_name].instantiate() - projectile.apply_central_impulse(data.impulse) - - for key in data.keys(): - if key == "impulse": - continue - projectile.set(key,data[key]) - - return projectile - "object": - var object: Node3D = Registry.spawnable_objects[data.spawn_name].instantiate() - - - for key in data.keys(): - object.set(key,data[key]) - - return object - _: - return Node.new() - diff --git a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid b/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid deleted file mode 100644 index 515c347..0000000 --- a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bqjv6l7hh0lix diff --git a/scripts/player/input_system.gd b/scripts/player/input_system.gd deleted file mode 100644 index fae2c76..0000000 --- a/scripts/player/input_system.gd +++ /dev/null @@ -1,11 +0,0 @@ -extends Node - - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass diff --git a/scripts/player/input_system.gd.uid b/scripts/player/input_system.gd.uid deleted file mode 100644 index 2810c17..0000000 --- a/scripts/player/input_system.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cg0v1nmwuuoej diff --git a/scripts/registry.gd b/scripts/registry.gd deleted file mode 100644 index cacce20..0000000 --- a/scripts/registry.gd +++ /dev/null @@ -1,11 +0,0 @@ -extends Node - -var spawnable_objects: Dictionary[StringName,PackedScene] -var weapons: Dictionary[StringName,WeaponResource] - -func _ready() -> void: - for file in ResourceLoader.list_directory("res://weapons/"): - weapons[file.trim_suffix(".tres")] = load("res://weapons/"+ file) - - for file in ResourceLoader.list_directory("res://spawnables/"): - spawnable_objects[file.trim_suffix(".tscn")] = load("res://spawnables/" + file) diff --git a/scripts/registry.gd.uid b/scripts/registry.gd.uid deleted file mode 100644 index 5bfda02..0000000 --- a/scripts/registry.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c7p8avavia4fp diff --git a/shaders/team_color.gdshader b/shaders/team_color.gdshader deleted file mode 100644 index d96ec45..0000000 --- a/shaders/team_color.gdshader +++ /dev/null @@ -1,14 +0,0 @@ -shader_type spatial; - -void vertex() { - // Called for every vertex the material is visible on. -} - -void fragment() { - // Called for every pixel the material is visible on. -} - -//void light() { -// // Called for every pixel for every light affecting the material. -// // Uncomment to replace the default light processing function with this one. -//} diff --git a/shaders/team_color.gdshader.uid b/shaders/team_color.gdshader.uid deleted file mode 100644 index 9313504..0000000 --- a/shaders/team_color.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bv2xmvpe4rjhq diff --git a/scripts/debug/inventory_preview.gd b/systems/debug/inventory_preview.gd similarity index 100% rename from scripts/debug/inventory_preview.gd rename to systems/debug/inventory_preview.gd diff --git a/scripts/debug/inventory_preview.gd.uid b/systems/debug/inventory_preview.gd.uid similarity index 100% rename from scripts/debug/inventory_preview.gd.uid rename to systems/debug/inventory_preview.gd.uid diff --git a/scripts/debug/property_shower.gd b/systems/debug/property_shower.gd similarity index 100% rename from scripts/debug/property_shower.gd rename to systems/debug/property_shower.gd diff --git a/scripts/debug/property_shower.gd.uid b/systems/debug/property_shower.gd.uid similarity index 100% rename from scripts/debug/property_shower.gd.uid rename to systems/debug/property_shower.gd.uid diff --git a/scripts/interaction_system/interactible.gd b/systems/interaction_system/interactible.gd similarity index 100% rename from scripts/interaction_system/interactible.gd rename to systems/interaction_system/interactible.gd diff --git a/scripts/interaction_system/interactible.gd.uid b/systems/interaction_system/interactible.gd.uid similarity index 100% rename from scripts/interaction_system/interactible.gd.uid rename to systems/interaction_system/interactible.gd.uid diff --git a/scripts/item_spawner.gd b/systems/item_spawner.gd similarity index 100% rename from scripts/item_spawner.gd rename to systems/item_spawner.gd diff --git a/scripts/item_spawner.gd.uid b/systems/item_spawner.gd.uid similarity index 100% rename from scripts/item_spawner.gd.uid rename to systems/item_spawner.gd.uid diff --git a/scripts/object_container.gd b/systems/object_container.gd similarity index 100% rename from scripts/object_container.gd rename to systems/object_container.gd diff --git a/scripts/object_container.gd.uid b/systems/object_container.gd.uid similarity index 100% rename from scripts/object_container.gd.uid rename to systems/object_container.gd.uid diff --git a/scripts/player/collision_team_updater.gd b/systems/player/collision_team_updater.gd similarity index 100% rename from scripts/player/collision_team_updater.gd rename to systems/player/collision_team_updater.gd diff --git a/scripts/player/collision_team_updater.gd.uid b/systems/player/collision_team_updater.gd.uid similarity index 100% rename from scripts/player/collision_team_updater.gd.uid rename to systems/player/collision_team_updater.gd.uid diff --git a/scripts/player/dead_player_spectator.gd b/systems/player/dead_player_spectator.gd similarity index 100% rename from scripts/player/dead_player_spectator.gd rename to systems/player/dead_player_spectator.gd diff --git a/scripts/player/dead_player_spectator.gd.uid b/systems/player/dead_player_spectator.gd.uid similarity index 100% rename from scripts/player/dead_player_spectator.gd.uid rename to systems/player/dead_player_spectator.gd.uid diff --git a/scripts/player/player.gd b/systems/player/player.gd similarity index 100% rename from scripts/player/player.gd rename to systems/player/player.gd diff --git a/scripts/player/player.gd.uid b/systems/player/player.gd.uid similarity index 100% rename from scripts/player/player.gd.uid rename to systems/player/player.gd.uid diff --git a/scripts/player/player_camera.gd b/systems/player/player_camera.gd similarity index 100% rename from scripts/player/player_camera.gd rename to systems/player/player_camera.gd diff --git a/scripts/player/player_camera.gd.uid b/systems/player/player_camera.gd.uid similarity index 100% rename from scripts/player/player_camera.gd.uid rename to systems/player/player_camera.gd.uid diff --git a/scripts/player/player_global.gd b/systems/player/player_global.gd similarity index 100% rename from scripts/player/player_global.gd rename to systems/player/player_global.gd diff --git a/scripts/player/player_global.gd.uid b/systems/player/player_global.gd.uid similarity index 100% rename from scripts/player/player_global.gd.uid rename to systems/player/player_global.gd.uid diff --git a/scripts/multiplayer/player_input.gd b/systems/player/player_input.gd similarity index 100% rename from scripts/multiplayer/player_input.gd rename to systems/player/player_input.gd diff --git a/scripts/multiplayer/player_input.gd.uid b/systems/player/player_input.gd.uid similarity index 100% rename from scripts/multiplayer/player_input.gd.uid rename to systems/player/player_input.gd.uid diff --git a/scripts/player/player_interaction.gd b/systems/player/player_interaction.gd similarity index 100% rename from scripts/player/player_interaction.gd rename to systems/player/player_interaction.gd diff --git a/scripts/player/player_interaction.gd.uid b/systems/player/player_interaction.gd.uid similarity index 100% rename from scripts/player/player_interaction.gd.uid rename to systems/player/player_interaction.gd.uid diff --git a/scripts/player/player_movement.gd b/systems/player/player_movement.gd similarity index 100% rename from scripts/player/player_movement.gd rename to systems/player/player_movement.gd diff --git a/scripts/player/player_movement.gd.uid b/systems/player/player_movement.gd.uid similarity index 100% rename from scripts/player/player_movement.gd.uid rename to systems/player/player_movement.gd.uid diff --git a/scripts/player/player_pickup.gd b/systems/player/player_pickup.gd similarity index 96% rename from scripts/player/player_pickup.gd rename to systems/player/player_pickup.gd index bd9df52..df61ce7 100644 --- a/scripts/player/player_pickup.gd +++ b/systems/player/player_pickup.gd @@ -25,7 +25,7 @@ func on_body_entered(body: Node3D): "slot": body.slot }) - Session.despawn(body.get_path()) + body.queue_free() func start_temp_ignore(): if disabled: diff --git a/scripts/player/player_pickup.gd.uid b/systems/player/player_pickup.gd.uid similarity index 100% rename from scripts/player/player_pickup.gd.uid rename to systems/player/player_pickup.gd.uid diff --git a/scripts/player/player_raycast.gd b/systems/player/player_raycast.gd similarity index 100% rename from scripts/player/player_raycast.gd rename to systems/player/player_raycast.gd diff --git a/scripts/player/player_raycast.gd.uid b/systems/player/player_raycast.gd.uid similarity index 100% rename from scripts/player/player_raycast.gd.uid rename to systems/player/player_raycast.gd.uid diff --git a/scripts/player/spectator.gd b/systems/player/spectator.gd similarity index 100% rename from scripts/player/spectator.gd rename to systems/player/spectator.gd diff --git a/scripts/player/spectator.gd.uid b/systems/player/spectator.gd.uid similarity index 100% rename from scripts/player/spectator.gd.uid rename to systems/player/spectator.gd.uid diff --git a/scripts/player/states/crouching.gd b/systems/player/states/crouching.gd similarity index 100% rename from scripts/player/states/crouching.gd rename to systems/player/states/crouching.gd diff --git a/scripts/player/states/crouching.gd.uid b/systems/player/states/crouching.gd.uid similarity index 100% rename from scripts/player/states/crouching.gd.uid rename to systems/player/states/crouching.gd.uid diff --git a/scripts/player/states/death.gd b/systems/player/states/death.gd similarity index 100% rename from scripts/player/states/death.gd rename to systems/player/states/death.gd diff --git a/scripts/player/states/death.gd.uid b/systems/player/states/death.gd.uid similarity index 100% rename from scripts/player/states/death.gd.uid rename to systems/player/states/death.gd.uid diff --git a/scripts/player/states/falling.gd b/systems/player/states/falling.gd similarity index 100% rename from scripts/player/states/falling.gd rename to systems/player/states/falling.gd diff --git a/scripts/player/states/falling.gd.uid b/systems/player/states/falling.gd.uid similarity index 100% rename from scripts/player/states/falling.gd.uid rename to systems/player/states/falling.gd.uid diff --git a/scripts/player/states/standing.gd b/systems/player/states/standing.gd similarity index 100% rename from scripts/player/states/standing.gd rename to systems/player/states/standing.gd diff --git a/scripts/player/states/standing.gd.uid b/systems/player/states/standing.gd.uid similarity index 100% rename from scripts/player/states/standing.gd.uid rename to systems/player/states/standing.gd.uid diff --git a/scripts/player/states/walk.gd b/systems/player/states/walk.gd similarity index 100% rename from scripts/player/states/walk.gd rename to systems/player/states/walk.gd diff --git a/scripts/player/states/walk.gd.uid b/systems/player/states/walk.gd.uid similarity index 100% rename from scripts/player/states/walk.gd.uid rename to systems/player/states/walk.gd.uid diff --git a/scripts/player/team_color_switcher.gd b/systems/player/team_color_switcher.gd similarity index 100% rename from scripts/player/team_color_switcher.gd rename to systems/player/team_color_switcher.gd diff --git a/scripts/player/team_color_switcher.gd.uid b/systems/player/team_color_switcher.gd.uid similarity index 100% rename from scripts/player/team_color_switcher.gd.uid rename to systems/player/team_color_switcher.gd.uid diff --git a/systems/registry.gd b/systems/registry.gd new file mode 100644 index 0000000..f58a725 --- /dev/null +++ b/systems/registry.gd @@ -0,0 +1,8 @@ +extends Node + +var weapons: Dictionary[StringName,WeaponResource] + +func _ready() -> void: + for file in ResourceLoader.list_directory("res://weapons/"): + if file.ends_with(".tres"): + weapons[file.trim_suffix(".tres")] = load("res://weapons/"+ file) diff --git a/systems/registry.gd.uid b/systems/registry.gd.uid new file mode 100644 index 0000000..bc399bd --- /dev/null +++ b/systems/registry.gd.uid @@ -0,0 +1 @@ +uid://csoswr6rx8fx6 diff --git a/scripts/state_machine/machine.gd b/systems/state_machine/machine.gd similarity index 100% rename from scripts/state_machine/machine.gd rename to systems/state_machine/machine.gd diff --git a/scripts/state_machine/machine.gd.uid b/systems/state_machine/machine.gd.uid similarity index 100% rename from scripts/state_machine/machine.gd.uid rename to systems/state_machine/machine.gd.uid diff --git a/scripts/state_machine/state.gd b/systems/state_machine/state.gd similarity index 100% rename from scripts/state_machine/state.gd rename to systems/state_machine/state.gd diff --git a/scripts/state_machine/state.gd.uid b/systems/state_machine/state.gd.uid similarity index 100% rename from scripts/state_machine/state.gd.uid rename to systems/state_machine/state.gd.uid diff --git a/scripts/state_machine/substate_machine.gd b/systems/state_machine/substate_machine.gd similarity index 100% rename from scripts/state_machine/substate_machine.gd rename to systems/state_machine/substate_machine.gd diff --git a/scripts/state_machine/substate_machine.gd.uid b/systems/state_machine/substate_machine.gd.uid similarity index 100% rename from scripts/state_machine/substate_machine.gd.uid rename to systems/state_machine/substate_machine.gd.uid diff --git a/scripts/weapon_system/dropped_weapon.gd b/systems/weapon_system/dropped_weapon.gd similarity index 100% rename from scripts/weapon_system/dropped_weapon.gd rename to systems/weapon_system/dropped_weapon.gd diff --git a/scripts/weapon_system/dropped_weapon.gd.uid b/systems/weapon_system/dropped_weapon.gd.uid similarity index 100% rename from scripts/weapon_system/dropped_weapon.gd.uid rename to systems/weapon_system/dropped_weapon.gd.uid diff --git a/scripts/weapon_system/starting_weapon_spawner.gd b/systems/weapon_system/starting_weapon_spawner.gd similarity index 100% rename from scripts/weapon_system/starting_weapon_spawner.gd rename to systems/weapon_system/starting_weapon_spawner.gd diff --git a/scripts/weapon_system/starting_weapon_spawner.gd.uid b/systems/weapon_system/starting_weapon_spawner.gd.uid similarity index 100% rename from scripts/weapon_system/starting_weapon_spawner.gd.uid rename to systems/weapon_system/starting_weapon_spawner.gd.uid diff --git a/scripts/resources/weapon_resource.gd b/systems/weapon_system/weapon_resource.gd similarity index 100% rename from scripts/resources/weapon_resource.gd rename to systems/weapon_system/weapon_resource.gd diff --git a/scripts/resources/weapon_resource.gd.uid b/systems/weapon_system/weapon_resource.gd.uid similarity index 100% rename from scripts/resources/weapon_resource.gd.uid rename to systems/weapon_system/weapon_resource.gd.uid diff --git a/scripts/weapon_system/weapon_state.gd b/systems/weapon_system/weapon_state.gd similarity index 100% rename from scripts/weapon_system/weapon_state.gd rename to systems/weapon_system/weapon_state.gd diff --git a/scripts/weapon_system/weapon_state.gd.uid b/systems/weapon_system/weapon_state.gd.uid similarity index 100% rename from scripts/weapon_system/weapon_state.gd.uid rename to systems/weapon_system/weapon_state.gd.uid diff --git a/scripts/weapon_system/weapon_substate_machine.gd b/systems/weapon_system/weapon_substate_machine.gd similarity index 97% rename from scripts/weapon_system/weapon_substate_machine.gd rename to systems/weapon_system/weapon_substate_machine.gd index 3e6df35..f6725e4 100644 --- a/scripts/weapon_system/weapon_substate_machine.gd +++ b/systems/weapon_system/weapon_substate_machine.gd @@ -3,7 +3,7 @@ extends SubStateMachine class_name WeaponSubStateMachine @export var animation_prefix: StringName -@export var index: StringName +@export var registry_entry: StringName @export var visibility_target: StringName @export var max_ammo: int diff --git a/scripts/weapon_system/weapon_substate_machine.gd.uid b/systems/weapon_system/weapon_substate_machine.gd.uid similarity index 100% rename from scripts/weapon_system/weapon_substate_machine.gd.uid rename to systems/weapon_system/weapon_substate_machine.gd.uid diff --git a/scripts/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd similarity index 91% rename from scripts/weapon_system/weapon_system.gd rename to systems/weapon_system/weapon_system.gd index f30d7f5..259b16d 100644 --- a/scripts/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -103,16 +103,14 @@ func drop(weapon: WeaponSubStateMachine) -> void: return if slots.find_key(weapon) == "knife": return - var drop_data: Dictionary = {} - drop_data.type = "weapon" - drop_data.spawn_name = weapon.index - drop_data.ammo = weapon.ammo - drop_data.remaining_ammo = weapon.remaining_ammo - drop_data.slot = weapon.slot - drop_data.position = camera.global_position - drop_data.impulse = -camera.global_basis.z * 10 + player.velocity - Session.spawn(drop_data) + var dropped_weapon: DroppableWeapon = Registry.weapons[weapon.registry_entry].dropped_scene.instantiate() + dropped_weapon.weapon.ammo = weapon.ammo + dropped_weapon.weapon.remaining_ammo = weapon.remaining_ammo + dropped_weapon.weapon.slot = weapon.slot + Session.dynamic_objects_parent.add_child(dropped_weapon) + dropped_weapon.global_position = camera.global_position + dropped_weapon.apply_central_impulse(-camera.global_basis.z * 10 + player.velocity) $"../PickupRange".start_temp_ignore() diff --git a/scripts/weapon_system/weapon_system.gd.uid b/systems/weapon_system/weapon_system.gd.uid similarity index 100% rename from scripts/weapon_system/weapon_system.gd.uid rename to systems/weapon_system/weapon_system.gd.uid diff --git a/scripts/multiplayer/spawn_system/team_spawner.gd b/team_spawner.gd similarity index 100% rename from scripts/multiplayer/spawn_system/team_spawner.gd rename to team_spawner.gd diff --git a/scripts/multiplayer/spawn_system/team_spawner.gd.uid b/team_spawner.gd.uid similarity index 100% rename from scripts/multiplayer/spawn_system/team_spawner.gd.uid rename to team_spawner.gd.uid diff --git a/weapons/bomb.tres b/weapons/bomb.tres index 21e0293..a8f2d1b 100644 --- a/weapons/bomb.tres +++ b/weapons/bomb.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="WeaponResource" load_steps=5 format=3 uid="uid://b1obqb8w0o3ma"] -[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://scenes/weapons/droppable_bomb.tscn" id="1_sbnmj"] -[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="1_w2ux2"] +[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="1_sbnmj"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="1_w2ux2"] [ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="2_vkfbs"] -[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://scenes/weapons/bomb.tscn" id="4_shxvo"] +[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://weapons/bomb/bomb.tscn" id="4_shxvo"] [resource] script = ExtResource("1_w2ux2") diff --git a/scripts/weapon_system/bomb/active_bomb.gd b/weapons/bomb/active_bomb.gd similarity index 98% rename from scripts/weapon_system/bomb/active_bomb.gd rename to weapons/bomb/active_bomb.gd index dcc2419..0b308d1 100644 --- a/scripts/weapon_system/bomb/active_bomb.gd +++ b/weapons/bomb/active_bomb.gd @@ -1,5 +1,7 @@ extends Interactible +class_name ActiveBomb + var plant: StringName @onready var defuse_timer: Timer = $DefuseTimer @export var bomb_audio: MultiplayerAudio3D diff --git a/scripts/weapon_system/bomb/active_bomb.gd.uid b/weapons/bomb/active_bomb.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/active_bomb.gd.uid rename to weapons/bomb/active_bomb.gd.uid diff --git a/spawnables/active_bomb.tscn b/weapons/bomb/active_bomb.tscn similarity index 95% rename from spawnables/active_bomb.tscn rename to weapons/bomb/active_bomb.tscn index 34dd3fd..519448c 100644 --- a/spawnables/active_bomb.tscn +++ b/weapons/bomb/active_bomb.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=10 format=3 uid="uid://dtbpyfdawb02b"] -[ext_resource type="Script" uid="uid://boftqgpgqf56g" path="res://scripts/weapon_system/bomb/active_bomb.gd" id="1_avh0g"] +[ext_resource type="Script" uid="uid://boftqgpgqf56g" path="res://weapons/bomb/active_bomb.gd" id="1_avh0g"] [ext_resource type="PackedScene" uid="uid://dftij0fdq3lbr" path="res://models/weapons/Bomb.glb" id="1_yh58y"] [ext_resource type="AudioStream" uid="uid://blqgr0uweyg38" path="res://audio/bomb_beep.ogg" id="3_0eiu1"] -[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="4_rcpur"] +[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://audio/audio_system/multiplayer_audio_3d.gd" id="4_rcpur"] [ext_resource type="AudioStream" uid="uid://dlvwyj5erlhss" path="res://audio/defuse.ogg" id="5_rcpur"] [ext_resource type="AudioStream" uid="uid://lmmqcovqat1u" path="res://audio/explosion.ogg" id="6_uibus"] diff --git a/scenes/weapons/bomb.tscn b/weapons/bomb/bomb.tscn similarity index 75% rename from scenes/weapons/bomb.tscn rename to weapons/bomb/bomb.tscn index 852ca71..266dd84 100644 --- a/scenes/weapons/bomb.tscn +++ b/weapons/bomb/bomb.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=6 format=3 uid="uid://bxdatd1ilfgmc"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_krsgt"] -[ext_resource type="Script" uid="uid://rx78vdadldm7" path="res://scripts/weapon_system/bomb/bomb_main_state.gd" id="2_870cc"] -[ext_resource type="Script" uid="uid://cx7j3kr1laq3s" path="res://scripts/weapon_system/bomb/bomb_idle_state.gd" id="3_1x0so"] -[ext_resource type="Script" uid="uid://dmyir46aricwi" path="res://scripts/weapon_system/bomb/bomb_intro_state.gd" id="4_fv3ha"] -[ext_resource type="Script" uid="uid://b5eapvgoni1pj" path="res://scripts/weapon_system/bomb/bomb_dropper.gd" id="5_fv3ha"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_krsgt"] +[ext_resource type="Script" uid="uid://rx78vdadldm7" path="res://weapons/bomb/bomb_main_state.gd" id="2_870cc"] +[ext_resource type="Script" uid="uid://cx7j3kr1laq3s" path="res://weapons/bomb/bomb_idle_state.gd" id="3_1x0so"] +[ext_resource type="Script" uid="uid://dmyir46aricwi" path="res://weapons/bomb/bomb_intro_state.gd" id="4_fv3ha"] +[ext_resource type="Script" uid="uid://b5eapvgoni1pj" path="res://weapons/bomb/bomb_dropper.gd" id="5_fv3ha"] [node name="Bomb" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_krsgt") animation_prefix = &"baked_bomb_" -index = &"bomb" +registry_entry = &"bomb" visibility_target = &"bomb" max_ammo = 1 ammo_mags = 0 diff --git a/scripts/weapon_system/bomb/bomb_dropper.gd b/weapons/bomb/bomb_dropper.gd similarity index 100% rename from scripts/weapon_system/bomb/bomb_dropper.gd rename to weapons/bomb/bomb_dropper.gd diff --git a/scripts/weapon_system/bomb/bomb_dropper.gd.uid b/weapons/bomb/bomb_dropper.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_dropper.gd.uid rename to weapons/bomb/bomb_dropper.gd.uid diff --git a/scripts/weapon_system/bomb/bomb_idle_state.gd b/weapons/bomb/bomb_idle_state.gd similarity index 100% rename from scripts/weapon_system/bomb/bomb_idle_state.gd rename to weapons/bomb/bomb_idle_state.gd diff --git a/scripts/weapon_system/bomb/bomb_idle_state.gd.uid b/weapons/bomb/bomb_idle_state.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_idle_state.gd.uid rename to weapons/bomb/bomb_idle_state.gd.uid diff --git a/scripts/weapon_system/bomb/bomb_intro_state.gd b/weapons/bomb/bomb_intro_state.gd similarity index 100% rename from scripts/weapon_system/bomb/bomb_intro_state.gd rename to weapons/bomb/bomb_intro_state.gd diff --git a/scripts/weapon_system/bomb/bomb_intro_state.gd.uid b/weapons/bomb/bomb_intro_state.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_intro_state.gd.uid rename to weapons/bomb/bomb_intro_state.gd.uid diff --git a/scripts/weapon_system/bomb/bomb_main_state.gd b/weapons/bomb/bomb_main_state.gd similarity index 75% rename from scripts/weapon_system/bomb/bomb_main_state.gd rename to weapons/bomb/bomb_main_state.gd index 88e86d0..f851dd8 100644 --- a/scripts/weapon_system/bomb/bomb_main_state.gd +++ b/weapons/bomb/bomb_main_state.gd @@ -1,5 +1,7 @@ extends WeaponState +@export var bomb_scene: PackedScene + func enter(): machine.animation_player.play(machine.animation_prefix+"plant") machine.animation_player.animation_finished.connect(on_animation_finished) @@ -15,7 +17,11 @@ func on_animation_finished(animation: StringName): if is_multiplayer_authority() == false: return if animation == machine.animation_prefix + "plant": - Session.spawn({"type": "object","spawn_name": "active_bomb", "position": machine.player_camera.get_parent().global_position,"plant": Session.get_site(machine.player.player_id).name}) + var bomb: ActiveBomb = bomb_scene.instantiate() + Session.dynamic_objects_parent.add_child(bomb) + + bomb.global_position = machine.player.global_position + bomb.plant = Session.get_site(machine.player.player_id).name machine.ammo -= 1 return_to_previous.emit() diff --git a/scripts/weapon_system/bomb/bomb_main_state.gd.uid b/weapons/bomb/bomb_main_state.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_main_state.gd.uid rename to weapons/bomb/bomb_main_state.gd.uid diff --git a/scenes/weapons/droppable_bomb.tscn b/weapons/bomb/droppable_bomb.tscn similarity index 93% rename from scenes/weapons/droppable_bomb.tscn rename to weapons/bomb/droppable_bomb.tscn index 728bbda..796fc08 100644 --- a/scenes/weapons/droppable_bomb.tscn +++ b/weapons/bomb/droppable_bomb.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=6 format=3 uid="uid://cxdgk74ln5xpn"] -[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://scripts/weapon_system/dropped_weapon.gd" id="1_hsebh"] +[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://systems/weapon_system/dropped_weapon.gd" id="1_hsebh"] [ext_resource type="PackedScene" uid="uid://dftij0fdq3lbr" path="res://models/weapons/Bomb.glb" id="1_pcfvq"] -[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://scenes/weapons/bomb.tscn" id="2_ucc3u"] +[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://weapons/bomb/bomb.tscn" id="2_ucc3u"] [sub_resource type="BoxShape3D" id="BoxShape3D_hsebh"] size = Vector3(1, 0.25274658, 0.7492676) diff --git a/scripts/weapon_system/gun/idle_state.gd b/weapons/gun/idle_state.gd similarity index 100% rename from scripts/weapon_system/gun/idle_state.gd rename to weapons/gun/idle_state.gd diff --git a/scripts/weapon_system/gun/idle_state.gd.uid b/weapons/gun/idle_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/idle_state.gd.uid rename to weapons/gun/idle_state.gd.uid diff --git a/scripts/weapon_system/gun/intro_state.gd b/weapons/gun/intro_state.gd similarity index 100% rename from scripts/weapon_system/gun/intro_state.gd rename to weapons/gun/intro_state.gd diff --git a/scripts/weapon_system/gun/intro_state.gd.uid b/weapons/gun/intro_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/intro_state.gd.uid rename to weapons/gun/intro_state.gd.uid diff --git a/scripts/weapon_system/gun/reload_state.gd b/weapons/gun/reload_state.gd similarity index 100% rename from scripts/weapon_system/gun/reload_state.gd rename to weapons/gun/reload_state.gd diff --git a/scripts/weapon_system/gun/reload_state.gd.uid b/weapons/gun/reload_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/reload_state.gd.uid rename to weapons/gun/reload_state.gd.uid diff --git a/scripts/weapon_system/gun/semi_auto_shoot_state.gd b/weapons/gun/semi_auto_shoot_state.gd similarity index 100% rename from scripts/weapon_system/gun/semi_auto_shoot_state.gd rename to weapons/gun/semi_auto_shoot_state.gd diff --git a/scripts/weapon_system/gun/semi_auto_shoot_state.gd.uid b/weapons/gun/semi_auto_shoot_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/semi_auto_shoot_state.gd.uid rename to weapons/gun/semi_auto_shoot_state.gd.uid diff --git a/scenes/weapons/droppable_sp.tscn b/weapons/gun/sp/droppable_sp.tscn similarity index 92% rename from scenes/weapons/droppable_sp.tscn rename to weapons/gun/sp/droppable_sp.tscn index 5aacc41..73ec5bb 100644 --- a/scenes/weapons/droppable_sp.tscn +++ b/weapons/gun/sp/droppable_sp.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://dgfqppi21c2u0"] -[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://scripts/weapon_system/dropped_weapon.gd" id="1_jym52"] -[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://scenes/weapons/starting_pistol.tscn" id="2_jym52"] +[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://systems/weapon_system/dropped_weapon.gd" id="1_jym52"] +[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://weapons/gun/sp/starting_pistol.tscn" id="2_jym52"] [ext_resource type="PackedScene" uid="uid://d3sjs6efbshpk" path="res://models/weapons/starting_pistol.glb" id="3_jym52"] [sub_resource type="BoxShape3D" id="BoxShape3D_hsebh"] diff --git a/scenes/weapons/starting_pistol.tscn b/weapons/gun/sp/starting_pistol.tscn similarity index 85% rename from scenes/weapons/starting_pistol.tscn rename to weapons/gun/sp/starting_pistol.tscn index b8b522c..bc9310e 100644 --- a/scenes/weapons/starting_pistol.tscn +++ b/weapons/gun/sp/starting_pistol.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=8 format=3 uid="uid://djwjl8xll53vn"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"] -[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://scripts/weapon_system/gun/idle_state.gd" id="2_cmn6f"] -[ext_resource type="Script" uid="uid://vj13r83l3xyq" path="res://scripts/weapon_system/gun/semi_auto_shoot_state.gd" id="3_016ti"] -[ext_resource type="Script" uid="uid://hmekwp8444ao" path="res://scripts/weapon_system/gun/reload_state.gd" id="4_hoqxt"] -[ext_resource type="Script" uid="uid://bmj0bwy2tlian" path="res://scripts/weapon_system/gun/intro_state.gd" id="5_ud1dr"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"] +[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://weapons/gun/idle_state.gd" id="2_cmn6f"] +[ext_resource type="Script" uid="uid://vj13r83l3xyq" path="res://weapons/gun/semi_auto_shoot_state.gd" id="3_016ti"] +[ext_resource type="Script" uid="uid://hmekwp8444ao" path="res://weapons/gun/reload_state.gd" id="4_hoqxt"] +[ext_resource type="Script" uid="uid://bmj0bwy2tlian" path="res://weapons/gun/intro_state.gd" id="5_ud1dr"] [sub_resource type="Curve" id="Curve_cmn6f"] _limits = [0.0, 0.1, 0.0, 20.0] @@ -21,7 +21,7 @@ point_count = 5 [node name="StartingPistol" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_g7s1i") animation_prefix = &"baked_sp_" -index = &"sp" +registry_entry = &"sp" visibility_target = &"sp" max_ammo = 20 speed_modifier = 0.9 diff --git a/scenes/weapons/knife.tscn b/weapons/knife/knife.tscn similarity index 76% rename from scenes/weapons/knife.tscn rename to weapons/knife/knife.tscn index 4310408..b587fc8 100644 --- a/scenes/weapons/knife.tscn +++ b/weapons/knife/knife.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=6 format=3 uid="uid://ts4xccpkjd3g"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_2xf1r"] -[ext_resource type="Script" uid="uid://dhmgd83rhjtyq" path="res://scripts/weapon_system/knife/knife_intro.gd" id="2_6fi8m"] -[ext_resource type="Script" uid="uid://cn6wyj4v5xeej" path="res://scripts/weapon_system/knife/knife_idle.gd" id="3_7hrnw"] -[ext_resource type="Script" uid="uid://d0r2fu21ei4hy" path="res://scripts/weapon_system/knife/knife_attack.gd" id="4_7hrnw"] -[ext_resource type="Script" uid="uid://ctx2rjjs48nrc" path="res://scripts/weapon_system/knife/knife_attack_heavy.gd" id="5_c20fe"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_2xf1r"] +[ext_resource type="Script" uid="uid://dhmgd83rhjtyq" path="res://weapons/knife/knife_intro.gd" id="2_6fi8m"] +[ext_resource type="Script" uid="uid://cn6wyj4v5xeej" path="res://weapons/knife/knife_idle.gd" id="3_7hrnw"] +[ext_resource type="Script" uid="uid://d0r2fu21ei4hy" path="res://weapons/knife/knife_attack.gd" id="4_7hrnw"] +[ext_resource type="Script" uid="uid://ctx2rjjs48nrc" path="res://weapons/knife/knife_attack_heavy.gd" id="5_c20fe"] [node name="Knife" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_2xf1r") diff --git a/scripts/weapon_system/knife/knife_attack.gd b/weapons/knife/knife_attack.gd similarity index 100% rename from scripts/weapon_system/knife/knife_attack.gd rename to weapons/knife/knife_attack.gd diff --git a/scripts/weapon_system/knife/knife_attack.gd.uid b/weapons/knife/knife_attack.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_attack.gd.uid rename to weapons/knife/knife_attack.gd.uid diff --git a/scripts/weapon_system/knife/knife_attack_heavy.gd b/weapons/knife/knife_attack_heavy.gd similarity index 100% rename from scripts/weapon_system/knife/knife_attack_heavy.gd rename to weapons/knife/knife_attack_heavy.gd diff --git a/scripts/weapon_system/knife/knife_attack_heavy.gd.uid b/weapons/knife/knife_attack_heavy.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_attack_heavy.gd.uid rename to weapons/knife/knife_attack_heavy.gd.uid diff --git a/scripts/weapon_system/knife/knife_idle.gd b/weapons/knife/knife_idle.gd similarity index 100% rename from scripts/weapon_system/knife/knife_idle.gd rename to weapons/knife/knife_idle.gd diff --git a/scripts/weapon_system/knife/knife_idle.gd.uid b/weapons/knife/knife_idle.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_idle.gd.uid rename to weapons/knife/knife_idle.gd.uid diff --git a/scripts/weapon_system/knife/knife_intro.gd b/weapons/knife/knife_intro.gd similarity index 100% rename from scripts/weapon_system/knife/knife_intro.gd rename to weapons/knife/knife_intro.gd diff --git a/scripts/weapon_system/knife/knife_intro.gd.uid b/weapons/knife/knife_intro.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_intro.gd.uid rename to weapons/knife/knife_intro.gd.uid diff --git a/scripts/weapon_system/molikman/molik/idle_state.gd b/weapons/molikman/molik/idle_state.gd similarity index 100% rename from scripts/weapon_system/molikman/molik/idle_state.gd rename to weapons/molikman/molik/idle_state.gd diff --git a/scripts/weapon_system/molikman/molik/idle_state.gd.uid b/weapons/molikman/molik/idle_state.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/idle_state.gd.uid rename to weapons/molikman/molik/idle_state.gd.uid diff --git a/scripts/weapon_system/molikman/molik/intro_state.gd b/weapons/molikman/molik/intro_state.gd similarity index 100% rename from scripts/weapon_system/molikman/molik/intro_state.gd rename to weapons/molikman/molik/intro_state.gd diff --git a/scripts/weapon_system/molikman/molik/intro_state.gd.uid b/weapons/molikman/molik/intro_state.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/intro_state.gd.uid rename to weapons/molikman/molik/intro_state.gd.uid diff --git a/scripts/weapon_system/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd similarity index 68% rename from scripts/weapon_system/molikman/molik/molik.gd rename to weapons/molikman/molik/molik.gd index 2ebac1c..3129f40 100644 --- a/scripts/weapon_system/molikman/molik/molik.gd +++ b/weapons/molikman/molik/molik.gd @@ -3,10 +3,10 @@ extends RigidBody3D var contacts: int = 0 -func _on_body_entered(body: Node) -> void: +func _on_body_entered(_body: Node) -> void: contacts += 1 if contacts > 2: var grenade = load("res://scenes/projectiles/molikman/molikman_molotov_fire.tscn").instantiate() - Session.dynamic_objects_spawner.get_parent().add_child(grenade) + Session.dynamic_objects_parent.add_child(grenade,true) grenade.global_position = global_position queue_free() diff --git a/scripts/weapon_system/molikman/molik/molik.gd.uid b/weapons/molikman/molik/molik.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/molik.gd.uid rename to weapons/molikman/molik/molik.gd.uid diff --git a/scripts/weapon_system/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd similarity index 92% rename from scripts/weapon_system/molikman/molik/throw.gd rename to weapons/molikman/molik/throw.gd index 67319da..66b6e0d 100644 --- a/scripts/weapon_system/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -23,6 +23,6 @@ func fire() -> void: if is_multiplayer_authority(): var molotov: RigidBody3D = molik.instantiate() - Session.dynamic_objects_spawner.get_parent().add_child(molotov) + Session.dynamic_objects_parent.add_child(molotov,true) molotov.global_transform = machine.player_camera.global_transform molotov.apply_impulse(-molotov.global_basis.z * 10) diff --git a/scripts/weapon_system/molikman/molik/throw.gd.uid b/weapons/molikman/molik/throw.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/throw.gd.uid rename to weapons/molikman/molik/throw.gd.uid diff --git a/weapons/molikman_molotov.tres b/weapons/molikman_molotov.tres index c943c7d..65b897b 100644 --- a/weapons/molikman_molotov.tres +++ b/weapons/molikman_molotov.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="WeaponResource" load_steps=4 format=3 uid="uid://b081hg7uxx1wu"] [ext_resource type="Texture2D" uid="uid://bmnqvop2dy5pm" path="res://textures/prototype_yellow_256x256.png" id="1_hmyxe"] -[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="1_ktfgd"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="1_ktfgd"] [ext_resource type="PackedScene" uid="uid://c5q7e5dj86187" path="res://scenes/weapons/molikman_molik.tscn" id="3_6mu31"] [resource] diff --git a/weapons/sp.tres b/weapons/sp.tres index b44c072..ae78851 100644 --- a/weapons/sp.tres +++ b/weapons/sp.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="WeaponResource" load_steps=5 format=3 uid="uid://2jxguk5jxlim"] -[ext_resource type="PackedScene" uid="uid://dgfqppi21c2u0" path="res://scenes/weapons/droppable_sp.tscn" id="1_vpohq"] +[ext_resource type="PackedScene" uid="uid://dgfqppi21c2u0" path="res://weapons/gun/sp/droppable_sp.tscn" id="1_vpohq"] [ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="2_c0lu7"] -[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="3_eyl1o"] -[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://scenes/weapons/starting_pistol.tscn" id="4_vpohq"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="3_eyl1o"] +[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://weapons/gun/sp/starting_pistol.tscn" id="4_vpohq"] [resource] script = ExtResource("3_eyl1o")