From 9cbd293e1020466d0b21c6089bba2e3c93949312 Mon Sep 17 00:00:00 2001 From: food-please Date: Mon, 21 Aug 2023 08:10:25 -0300 Subject: [PATCH] rebuild project; incorporate Dialogic2 --- .gitattributes | 2 + .gitignore | 23 + CHANGELOG.md | 19 + CREDITS.md | 18 + LICENSE | 21 + README.md | 37 + .../char_edit_p_section_exports.gd | 101 ++ .../char_edit_p_section_exports.tscn | 21 + .../char_edit_p_section_layout.gd | 40 + .../char_edit_p_section_layout.tscn | 65 + .../char_edit_p_section_main.gd | 39 + .../char_edit_p_section_main.tscn | 80 ++ .../char_edit_section_general.gd | 36 + .../char_edit_section_general.tscn | 69 ++ .../char_edit_section_portraits.gd | 66 + .../char_edit_section_portraits.tscn | 59 + .../CharacterEditor/character_editor.gd | 560 +++++++++ .../CharacterEditor/character_editor.tscn | 416 +++++++ .../character_editor_main_settings_section.gd | 20 + ...racter_editor_portrait_settings_section.gd | 19 + .../character_editor_portrait_tree.gd | 138 +++ addons/dialogic/Editor/Common/DCSS.gd | 60 + .../ReferenceManager_AddReplacementPanel.gd | 137 ++ .../Editor/Common/TitleBgStylebox.tres | 8 + .../Common/broken_reference_manager.tscn | 289 +++++ .../Editor/Common/hint_tooltip_icon.gd | 9 + .../Editor/Common/hint_tooltip_icon.tscn | 21 + .../Editor/Common/reference_manager.gd | 299 +++++ .../Editor/Common/reference_manager_window.gd | 169 +++ addons/dialogic/Editor/Common/side_bar.tscn | 91 ++ addons/dialogic/Editor/Common/sidebar.gd | 154 +++ addons/dialogic/Editor/Common/toolbar.gd | 50 + addons/dialogic/Editor/Events/BranchEnd.gd | 75 ++ addons/dialogic/Editor/Events/BranchEnd.tscn | 49 + .../Editor/Events/EventBlock/event_block.gd | 437 +++++++ .../Editor/Events/EventBlock/event_block.tscn | 140 +++ .../EventBlock/event_right_click_menu.gd | 19 + addons/dialogic/Editor/Events/Fields/Array.gd | 49 + .../dialogic/Editor/Events/Fields/Array.tscn | 33 + .../Editor/Events/Fields/ArrayValue.gd | 27 + .../Editor/Events/Fields/ArrayValue.tscn | 32 + addons/dialogic/Editor/Events/Fields/Bool.gd | 19 + .../dialogic/Editor/Events/Fields/Bool.tscn | 6 + .../Editor/Events/Fields/ComplexPicker.gd | 264 ++++ .../Editor/Events/Fields/ComplexPicker.tscn | 134 ++ .../Editor/Events/Fields/ConditionPicker.gd | 227 ++++ .../Editor/Events/Fields/ConditionPicker.tscn | 91 ++ .../Editor/Events/Fields/FilePicker.gd | 84 ++ .../Editor/Events/Fields/FilePicker.tscn | 87 ++ addons/dialogic/Editor/Events/Fields/Label.gd | 11 + .../dialogic/Editor/Events/Fields/Label.tscn | 18 + .../Editor/Events/Fields/MultilineText.gd | 60 + .../Editor/Events/Fields/MultilineText.tscn | 34 + .../dialogic/Editor/Events/Fields/Number.gd | 81 ++ .../dialogic/Editor/Events/Fields/Number.tscn | 45 + .../Editor/Events/Fields/OptionSelector.gd | 63 + .../Editor/Events/Fields/OptionSelector.tscn | 13 + .../Editor/Events/Fields/SinglelineText.gd | 29 + .../Editor/Events/Fields/SinglelineText.tscn | 10 + .../dialogic/Editor/Events/Fields/Vector2.gd | 26 + .../Editor/Events/Fields/Vector2.tscn | 24 + .../Events/styles/InputFieldsStyle.tres | 50 + .../Events/styles/ResourceMenuHover.tres | 11 + .../Events/styles/ResourceMenuNormal.tres | 13 + .../styles/ResourceMenuPanelBackground.tres | 17 + .../Editor/Events/styles/SectionPanel.tres | 17 + .../styles/SettingsFieldBackground.tres | 18 + .../Events/styles/SimpleButtonHover.tres | 17 + .../Events/styles/SimpleButtonNormal.tres | 17 + .../Editor/Events/styles/TextBackground.tres | 12 + .../Events/styles/selected_styleboxflat.tres | 16 + .../Events/styles/unselected_stylebox.tres | 4 + addons/dialogic/Editor/HomePage/home_page.gd | 86 ++ .../dialogic/Editor/HomePage/home_page.tscn | 363 ++++++ addons/dialogic/Editor/HomePage/icon_bg.png | Bin 0 -> 150354 bytes .../Editor/HomePage/icon_bg.png.import | 34 + addons/dialogic/Editor/HomePage/tips.txt | 11 + .../Editor/Images/Dropdown/default.svg | 3 + .../Editor/Images/Dropdown/default.svg.import | 38 + .../Editor/Images/Dropdown/divide.svg | 10 + .../Editor/Images/Dropdown/divide.svg.import | 38 + .../dialogic/Editor/Images/Dropdown/join.svg | 3 + .../Editor/Images/Dropdown/join.svg.import | 38 + .../dialogic/Editor/Images/Dropdown/leave.svg | 3 + .../Editor/Images/Dropdown/leave.svg.import | 38 + .../dialogic/Editor/Images/Dropdown/minus.svg | 10 + .../Editor/Images/Dropdown/minus.svg.import | 38 + .../Editor/Images/Dropdown/multiply.svg | 10 + .../Images/Dropdown/multiply.svg.import | 38 + .../dialogic/Editor/Images/Dropdown/plus.svg | 10 + .../Editor/Images/Dropdown/plus.svg.import | 38 + .../dialogic/Editor/Images/Dropdown/set.svg | 10 + .../Editor/Images/Dropdown/set.svg.import | 38 + .../Editor/Images/Dropdown/update.svg | 5 + .../Editor/Images/Dropdown/update.svg.import | 38 + .../Editor/Images/Pieces/add-folder.svg | 4 + .../Images/Pieces/add-folder.svg.import | 38 + .../Editor/Images/Pieces/closed-icon.svg | 3 + .../Images/Pieces/closed-icon.svg.import | 38 + .../Editor/Images/Pieces/expand-icon.svg | 5 + .../Images/Pieces/expand-icon.svg.import | 38 + .../Editor/Images/Pieces/open-icon.svg | 3 + .../Editor/Images/Pieces/open-icon.svg.import | 38 + .../Editor/Images/Pieces/variable.svg | 3 + .../Editor/Images/Pieces/variable.svg.import | 38 + .../Editor/Images/Pieces/variable_icon.png | Bin 0 -> 639 bytes .../Images/Pieces/variable_icon.png.import | 34 + .../dialogic/Editor/Images/Pieces/warning.svg | 3 + .../Editor/Images/Pieces/warning.svg.import | 38 + .../Editor/Images/Resources/character.svg | 4 + .../Images/Resources/character.svg.import | 38 + .../Images/Resources/icon_character.png | Bin 0 -> 569 bytes .../Resources/icon_character.png.import | 34 + .../Editor/Images/Resources/portrait.svg | 3 + .../Images/Resources/portrait.svg.import | 38 + .../Editor/Images/Toolbar/add-character.svg | 4 + .../Images/Toolbar/add-character.svg.import | 38 + .../Editor/Images/Toolbar/add-timeline.svg | 7 + .../Images/Toolbar/add-timeline.svg.import | 38 + addons/dialogic/Editor/Images/Unknown.png | Bin 0 -> 3331 bytes .../dialogic/Editor/Images/Unknown.png.import | 34 + .../dialogic/Editor/Images/dialogic-logo.svg | 18 + .../Editor/Images/dialogic-logo.svg.import | 37 + addons/dialogic/Editor/Images/plugin-icon.svg | 3 + .../Editor/Images/plugin-icon.svg.import | 38 + .../Editor/Images/preview_character.png | Bin 0 -> 63720 bytes .../Images/preview_character.png.import | 34 + .../Images/preview_character_speaker.png | Bin 0 -> 40709 bytes .../preview_character_speaker.png.import | 34 + .../Editor/Settings/HintLabelStylingScript.gd | 13 + .../Editor/Settings/settings_editor.gd | 169 +++ .../Editor/Settings/settings_editor.tscn | 59 + .../Editor/Settings/settings_general.gd | 235 ++++ .../Editor/Settings/settings_general.tscn | 277 +++++ .../Editor/Settings/settings_modules.gd | 404 ++++++ .../Editor/Settings/settings_modules.tscn | 236 ++++ .../dialogic/Editor/Settings/settings_page.gd | 35 + .../Editor/Settings/settings_translation.gd | 254 ++++ .../Editor/Settings/settings_translation.tscn | 300 +++++ addons/dialogic/Editor/Theme/MainTheme.tres | 3 + addons/dialogic/Editor/Theme/PickerTheme.tres | 7 + .../TextEditor/CodeCompletionHelper.gd | 269 ++++ .../TextEditor/syntax_highlighter.gd | 153 +++ .../TextEditor/timeline_editor_text.gd | 235 ++++ .../TextEditor/timeline_editor_text.tscn | 40 + .../VisualEditor/AddEventButton.gd | 64 + .../VisualEditor/AddEventButton.tscn | 46 + .../VisualEditor/TimelineArea.gd | 145 +++ .../VisualEditor/timeline_editor_visual.gd | 1087 ++++++++++++++++ .../VisualEditor/timeline_editor_visual.tscn | 111 ++ .../TimelineEditor/test_timeline_scene.gd | 37 + .../TimelineEditor/test_timeline_scene.tscn | 23 + .../Editor/TimelineEditor/timeline_editor.gd | 178 +++ .../TimelineEditor/timeline_editor.tscn | 131 ++ addons/dialogic/Editor/dialogic_editor.gd | 64 + addons/dialogic/Editor/directory_holder.gd | 91 ++ addons/dialogic/Editor/editor_main.gd | 183 +++ addons/dialogic/Editor/editor_main.tscn | 154 +++ addons/dialogic/Editor/editors_manager.gd | 262 ++++ .../Example Assets/Fonts/Roboto-Bold.ttf | Bin 0 -> 170348 bytes .../Fonts/Roboto-Bold.ttf.import | 33 + .../Example Assets/Fonts/Roboto-Italic.ttf | Bin 0 -> 173516 bytes .../Fonts/Roboto-Italic.ttf.import | 33 + .../Example Assets/Fonts/Roboto-Regular.ttf | Bin 0 -> 171272 bytes .../Fonts/Roboto-Regular.ttf.import | 33 + .../Example Assets/already_read_indicator.gd | 12 + .../Example Assets/backgrounds/BubbleEnd.png | Bin 0 -> 1619 bytes .../backgrounds/BubbleEnd.png.import | 34 + .../backgrounds/new-default-dialog.png.import | 34 + .../Example Assets/backgrounds/rpg_box.webp | Bin 0 -> 1812 bytes .../backgrounds/rpg_box.webp.import | 34 + .../dialogic/Example Assets/default_event.gd | 48 + .../next-indicator-dialogic-1.png | Bin 0 -> 2825 bytes .../next-indicator-dialogic-1.png.import | 34 + .../next-indicator/next-indicator.png | Bin 0 -> 4189 bytes .../next-indicator/next-indicator.png.import | 34 + .../portraits/Antonio/pl5 blink.png | Bin 0 -> 64904 bytes .../portraits/Antonio/pl5 blink.png.import | 34 + .../portraits/Antonio/pl5 doubt.png | Bin 0 -> 65461 bytes .../portraits/Antonio/pl5 doubt.png.import | 34 + .../portraits/Antonio/pl5 hate.png | Bin 0 -> 67008 bytes .../portraits/Antonio/pl5 hate.png.import | 34 + .../portraits/Antonio/pl5 plot.png | Bin 0 -> 65154 bytes .../portraits/Antonio/pl5 plot.png.import | 34 + .../portraits/Antonio/pl5 sad.png | Bin 0 -> 66584 bytes .../portraits/Antonio/pl5 sad.png.import | 34 + .../portraits/Antonio/pl5 scoff.png | Bin 0 -> 66038 bytes .../portraits/Antonio/pl5 scoff.png.import | 34 + .../portraits/Antonio/pl5 shy.png | Bin 0 -> 67080 bytes .../portraits/Antonio/pl5 shy.png.import | 34 + .../portraits/Antonio/pl5 surprise.png | Bin 0 -> 66519 bytes .../portraits/Antonio/pl5 surprise.png.import | 34 + .../Example Assets/portraits/Antonio/pl5.png | Bin 0 -> 65862 bytes .../portraits/Antonio/pl5.png.import | 34 + .../CustomPortrait_AnimatedSprite.gd | 18 + .../CustomPortrait_AnimatedSprite.tscn | 56 + .../portraits/CustomPortrait_FaceAtlas.gd | 56 + .../portraits/CustomPortrait_FaceAtlas.tscn | 67 + .../portraits/Jane/pl3 avoid.png | Bin 0 -> 83484 bytes .../portraits/Jane/pl3 avoid.png.import | 34 + .../portraits/Jane/pl3 blink.png | Bin 0 -> 83051 bytes .../portraits/Jane/pl3 blink.png.import | 34 + .../portraits/Jane/pl3 concept.png | Bin 0 -> 84581 bytes .../portraits/Jane/pl3 concept.png.import | 34 + .../portraits/Jane/pl3 confusion.png | Bin 0 -> 83708 bytes .../portraits/Jane/pl3 confusion.png.import | 34 + .../portraits/Jane/pl3 doubt.png | Bin 0 -> 83418 bytes .../portraits/Jane/pl3 doubt.png.import | 34 + .../portraits/Jane/pl3 happy.png | Bin 0 -> 83641 bytes .../portraits/Jane/pl3 happy.png.import | 34 + .../portraits/Jane/pl3 plot.png | Bin 0 -> 83605 bytes .../portraits/Jane/pl3 plot.png.import | 34 + .../Example Assets/portraits/Jane/pl3 sad.png | Bin 0 -> 84668 bytes .../portraits/Jane/pl3 sad.png.import | 34 + .../Example Assets/portraits/Jane/pl3 shy.png | Bin 0 -> 84186 bytes .../portraits/Jane/pl3 shy.png.import | 34 + .../portraits/Jane/pl3 surprise.png | Bin 0 -> 83571 bytes .../portraits/Jane/pl3 surprise.png.import | 34 + .../Example Assets/portraits/Portrait1.png | Bin 0 -> 33867 bytes .../portraits/Portrait1.png.import | 34 + .../Example Assets/portraits/Portrait2.png | Bin 0 -> 37957 bytes .../portraits/Portrait2.png.import | 34 + .../portraits/Princess/anger.png | Bin 0 -> 20766 bytes .../portraits/Princess/anger.png.import | 34 + .../portraits/Princess/frown.png | Bin 0 -> 18664 bytes .../portraits/Princess/frown.png.import | 34 + .../Example Assets/portraits/Princess/joy.png | Bin 0 -> 14174 bytes .../portraits/Princess/joy.png.import | 34 + .../portraits/Princess/neutral.png | Bin 0 -> 19825 bytes .../portraits/Princess/neutral.png.import | 34 + .../portraits/Princess/princess_blank.png | Bin 0 -> 744931 bytes .../Princess/princess_blank.png.import | 34 + .../portraits/Princess/shock.png | Bin 0 -> 21616 bytes .../portraits/Princess/shock.png.import | 34 + .../portraits/Princess/smile.png | Bin 0 -> 19829 bytes .../portraits/Princess/smile.png.import | 34 + .../portraits/rpg_portraits/base1.png | Bin 0 -> 1329 bytes .../portraits/rpg_portraits/base1.png.import | 34 + .../portraits/rpg_portraits/base2.png | Bin 0 -> 1312 bytes .../portraits/rpg_portraits/base2.png.import | 34 + .../portraits/rpg_portraits/base3.png | Bin 0 -> 1127 bytes .../portraits/rpg_portraits/base3.png.import | 34 + .../portraits/rpg_portraits/base4.png | Bin 0 -> 1358 bytes .../portraits/rpg_portraits/base4.png.import | 34 + .../Example Assets/sound-effects/LICENSE.txt | 4 + .../Example Assets/sound-effects/typing1.wav | Bin 0 -> 25516 bytes .../sound-effects/typing1.wav.import | 24 + .../Example Assets/sound-effects/typing2.wav | Bin 0 -> 21932 bytes .../sound-effects/typing2.wav.import | 24 + .../Example Assets/sound-effects/typing3.wav | Bin 0 -> 21356 bytes .../sound-effects/typing3.wav.import | 24 + .../Example Assets/sound-effects/typing4.wav | Bin 0 -> 23404 bytes .../sound-effects/typing4.wav.import | 24 + .../Example Assets/sound-effects/typing5.wav | Bin 0 -> 24876 bytes .../sound-effects/typing5.wav.import | 24 + addons/dialogic/Modules/Audio/event_music.gd | 85 ++ addons/dialogic/Modules/Audio/event_sound.gd | 80 ++ addons/dialogic/Modules/Audio/icon_music.png | Bin 0 -> 552 bytes .../Modules/Audio/icon_music.png.import | 34 + addons/dialogic/Modules/Audio/icon_sound.png | Bin 0 -> 524 bytes .../Modules/Audio/icon_sound.png.import | 34 + addons/dialogic/Modules/Audio/index.gd | 10 + .../dialogic/Modules/Audio/subsystem_audio.gd | 109 ++ .../Modules/Background/default_background.gd | 20 + .../Background/default_background.tscn | 21 + .../Modules/Background/dialogic_background.gd | 31 + .../Modules/Background/event_background.gd | 74 ++ addons/dialogic/Modules/Background/icon.png | Bin 0 -> 512 bytes .../Modules/Background/icon.png.import | 34 + addons/dialogic/Modules/Background/index.gd | 10 + .../Background/node_background_holder.gd | 6 + .../Background/subsystem_backgrounds.gd | 78 ++ .../Modules/CallNode/event_call_node.gd | 114 ++ addons/dialogic/Modules/CallNode/icon.png | Bin 0 -> 554 bytes .../dialogic/Modules/CallNode/icon.png.import | 34 + addons/dialogic/Modules/CallNode/index.gd | 6 + .../Character/DefaultAnimations/bounce.gd | 11 + .../Character/DefaultAnimations/bounce_in.gd | 13 + .../Character/DefaultAnimations/bounce_out.gd | 15 + .../Character/DefaultAnimations/fade_in_up.gd | 14 + .../DefaultAnimations/fade_out_down.gd | 12 + .../Character/DefaultAnimations/heartbeat.gd | 7 + .../DefaultAnimations/instant_in_or_out.gd | 5 + .../Character/DefaultAnimations/shake_x.gd | 17 + .../Character/DefaultAnimations/shake_y.gd | 17 + .../DefaultAnimations/slide_in_down.gd | 10 + .../DefaultAnimations/slide_in_left.gd | 10 + .../DefaultAnimations/slide_in_right.gd | 10 + .../DefaultAnimations/slide_in_up.gd | 10 + .../DefaultAnimations/slide_out_down.gd | 9 + .../DefaultAnimations/slide_out_left.gd | 9 + .../DefaultAnimations/slide_out_right.gd | 9 + .../DefaultAnimations/slide_out_up.gd | 9 + .../Character/DefaultAnimations/tada.gd | 19 + .../Character/DefaultAnimations/zoom_in.gd | 15 + .../DefaultAnimations/zoom_in_center.gd | 15 + .../Character/DefaultAnimations/zoom_out.gd | 13 + .../DefaultAnimations/zoom_out_center.gd | 12 + .../Character/class_dialogic_animation.gd | 47 + .../Modules/Character/default_portrait.gd | 29 + .../Modules/Character/default_portrait.tscn | 14 + .../Modules/Character/dialogic_portrait.gd | 53 + .../Modules/Character/event_character.gd | 533 ++++++++ .../Modules/Character/event_position.gd | 106 ++ .../Modules/Character/icon.png.import | 34 + .../Modules/Character/icon_character.png | Bin 0 -> 569 bytes .../Character/icon_character.png.import | 34 + .../Modules/Character/icon_position.png | Bin 0 -> 1017 bytes .../Character/icon_position.png.import | 34 + addons/dialogic/Modules/Character/index.gd | 21 + .../Character/node_portrait_container.gd | 194 +++ .../Modules/Character/preview_character.tres | 30 + .../Modules/Character/settings_portraits.gd | 70 ++ .../Modules/Character/settings_portraits.tscn | 95 ++ .../Modules/Character/subsystem_portraits.gd | 557 +++++++++ .../dialogic/Modules/Choice/event_choice.gd | 195 +++ addons/dialogic/Modules/Choice/icon.svg | 311 +++++ .../dialogic/Modules/Choice/icon.svg.import | 37 + addons/dialogic/Modules/Choice/index.gd | 14 + .../Modules/Choice/node_button_sound.gd | 52 + .../Modules/Choice/node_choice_button.gd | 20 + .../Modules/Choice/settings_choices.gd | 67 + .../Modules/Choice/settings_choices.tscn | 176 +++ .../Modules/Choice/subsystem_choices.gd | 163 +++ .../dialogic/Modules/Choice/ui_choice_end.gd | 14 + .../Modules/Choice/ui_choice_end.tscn | 13 + .../dialogic/Modules/Comment/event_comment.gd | 67 + addons/dialogic/Modules/Comment/icon.png | Bin 0 -> 398 bytes .../dialogic/Modules/Comment/icon.png.import | 34 + addons/dialogic/Modules/Comment/index.gd | 6 + .../Modules/Condition/event_condition.gd | 149 +++ addons/dialogic/Modules/Condition/icon.svg | 256 ++++ .../Modules/Condition/icon.svg.import | 37 + addons/dialogic/Modules/Condition/index.gd | 6 + .../Modules/Condition/ui_condition_end.gd | 45 + .../Modules/Condition/ui_condition_end.tscn | 26 + .../Converter/custom_event_converter.gd | 18 + .../Modules/Converter/icon.png.import | 34 + addons/dialogic/Modules/Converter/index.gd | 5 + .../Modules/Converter/settings_converter.gd | 1041 ++++++++++++++++ .../Modules/Converter/settings_converter.tscn | 74 ++ .../dialogic/Modules/Core/event_end_branch.gd | 68 + addons/dialogic/Modules/Core/icon.png | Bin 0 -> 558 bytes addons/dialogic/Modules/Core/icon.png.import | 34 + addons/dialogic/Modules/Core/index.gd | 13 + .../Modules/Core/subsystem_animation.gd | 23 + .../Modules/Core/subsystem_expression.gd | 66 + .../Default/DialogicDefaultLayout.gd | 101 ++ .../Default/DialogicDefaultLayout.tscn | 577 +++++++++ .../Default/ExampleGlossaryPopup.gd | 21 + .../DefaultStyles/Default/animations.gd | 31 + .../Default/autoadvance_indicator.gd | 8 + .../Modules/DefaultStyles/Default/preview.png | Bin 0 -> 1121480 bytes .../DefaultStyles/Default/preview.png.import | 34 + .../Modules/DefaultStyles/Default/style.cfg | 5 + .../DefaultStyles/ExampleHistoryItem.gd | 25 + .../DefaultStyles/ExampleHistoryItem.tscn | 48 + .../DefaultStyles/ExampleHistoryScene.gd | 95 ++ .../DefaultStyles/ExampleHistoryScene.tscn | 84 ++ .../Modules/DefaultStyles/HideWithChild.gd | 8 + .../RPG_BoxPortrait/DialogicRPGLayout.gd | 91 ++ .../RPG_BoxPortrait/DialogicRPGLayout.tscn | 166 +++ .../DefaultStyles/RPG_BoxPortrait/preview.png | Bin 0 -> 33012 bytes .../RPG_BoxPortrait/preview.png.import | 34 + .../DefaultStyles/RPG_BoxPortrait/style.cfg | 5 + .../TextBubble/DialogicTextBubbleLayout.gd | 166 +++ .../TextBubble/DialogicTextBubbleLayout.tscn | 36 + .../DefaultStyles/TextBubble/TextBubble.gd | 111 ++ .../DefaultStyles/TextBubble/TextBubble.tscn | 172 +++ .../DefaultStyles/TextBubble/preview.png | Bin 0 -> 7477 bytes .../TextBubble/preview.png.import | 34 + .../TextBubble/speech_bubble.gdshader | 24 + .../DefaultStyles/TextBubble/style.cfg | 5 + .../dialogic/Modules/DefaultStyles/index.gd | 4 + addons/dialogic/Modules/End/event_end.gd | 41 + addons/dialogic/Modules/End/icon.png | Bin 0 -> 558 bytes addons/dialogic/Modules/End/icon.png.import | 34 + addons/dialogic/Modules/End/index.gd | 6 + .../Modules/Glossary/add-glossary.svg | 4 + .../Modules/Glossary/add-glossary.svg.import | 38 + .../Modules/Glossary/event_glossary.gd | 43 + .../Modules/Glossary/glossary_editor.gd | 243 ++++ .../Modules/Glossary/glossary_editor.tscn | 320 +++++ .../Modules/Glossary/glossary_resource.gd | 12 + .../dialogic/Modules/Glossary/icon.png.import | 34 + addons/dialogic/Modules/Glossary/icon.svg | 3 + .../dialogic/Modules/Glossary/icon.svg.import | 38 + addons/dialogic/Modules/Glossary/index.gd | 14 + .../Modules/Glossary/subsystem_glossary.gd | 76 ++ .../dialogic/Modules/History/definition.svg | 3 + .../Modules/History/definition.svg.import | 37 + .../dialogic/Modules/History/event_history.gd | 77 ++ addons/dialogic/Modules/History/icon.svg | 351 ++++++ .../dialogic/Modules/History/icon.svg.import | 37 + addons/dialogic/Modules/History/index.gd | 13 + .../Modules/History/settings_history.gd | 23 + .../Modules/History/settings_history.tscn | 86 ++ .../Modules/History/subsystem_history.gd | 86 ++ addons/dialogic/Modules/Jump/event_jump.gd | 159 +++ addons/dialogic/Modules/Jump/event_label.gd | 89 ++ addons/dialogic/Modules/Jump/event_return.gd | 74 ++ addons/dialogic/Modules/Jump/icon.png.import | 34 + addons/dialogic/Modules/Jump/icon_jump.png | Bin 0 -> 730 bytes .../Modules/Jump/icon_jump.png.import | 34 + addons/dialogic/Modules/Jump/icon_label.png | Bin 0 -> 466 bytes .../Modules/Jump/icon_label.png.import | 34 + addons/dialogic/Modules/Jump/icon_return.svg | 346 ++++++ .../Modules/Jump/icon_return.svg.import | 37 + addons/dialogic/Modules/Jump/index.gd | 9 + .../dialogic/Modules/Jump/subsystem_jump.gd | 57 + .../LayoutEditor/Components/StyleItem.gd | 28 + .../LayoutEditor/Components/StyleItem.tscn | 1100 +++++++++++++++++ .../LayoutEditor/Components/StyleList.gd | 32 + .../LayoutEditor/Components/StyleList.tscn | 13 + addons/dialogic/Modules/LayoutEditor/index.gd | 4 + .../Modules/LayoutEditor/layout_editor.gd | 253 ++++ .../Modules/LayoutEditor/layout_editor.tscn | 118 ++ .../Modules/LayoutEditor/styles_icon.svg | 1 + .../LayoutEditor/styles_icon.svg.import | 38 + addons/dialogic/Modules/Save/event_save.gd | 65 + addons/dialogic/Modules/Save/icon.svg | 193 +++ addons/dialogic/Modules/Save/icon.svg.import | 37 + addons/dialogic/Modules/Save/index.gd | 14 + addons/dialogic/Modules/Save/settings_save.gd | 46 + .../dialogic/Modules/Save/settings_save.tscn | 92 ++ .../dialogic/Modules/Save/subsystem_save.gd | 279 +++++ .../Modules/Settings/event_setting.gd | 219 ++++ addons/dialogic/Modules/Settings/icon.svg | 346 ++++++ .../dialogic/Modules/Settings/icon.svg.import | 37 + addons/dialogic/Modules/Settings/index.gd | 10 + .../Modules/Settings/subsystem_settings.gd | 63 + .../dialogic/Modules/Signal/event_signal.gd | 55 + addons/dialogic/Modules/Signal/icon.png | Bin 0 -> 700 bytes .../dialogic/Modules/Signal/icon.png.import | 34 + addons/dialogic/Modules/Signal/index.gd | 7 + .../Modules/Style/character_settings_style.gd | 13 + .../Style/character_settings_style.tscn | 29 + addons/dialogic/Modules/Style/event_style.gd | 56 + addons/dialogic/Modules/Style/icon.png | Bin 0 -> 553 bytes addons/dialogic/Modules/Style/icon.png.import | 34 + addons/dialogic/Modules/Style/index.gd | 14 + addons/dialogic/Modules/Style/node_style.gd | 13 + .../Modules/Style/subsystem_styles.gd | 40 + .../Text/DNextIndicator_icon.svg.import | 39 + .../character_moods_settings.gd | 220 ++++ .../character_moods_settings.tscn | 235 ++++ .../character_portrait_mood_settings.gd | 33 + .../character_portrait_mood_settings.tscn | 25 + .../Modules/Text/default_input_handler.gd | 80 ++ addons/dialogic/Modules/Text/event_text.gd | 369 ++++++ addons/dialogic/Modules/Text/icon.png | Bin 0 -> 314 bytes addons/dialogic/Modules/Text/icon.png.import | 34 + addons/dialogic/Modules/Text/index.gd | 39 + .../dialogic/Modules/Text/node_dialog_text.gd | 95 ++ .../dialogic/Modules/Text/node_name_label.gd | 23 + .../Modules/Text/node_next_indicator.gd | 59 + .../Modules/Text/node_next_indicator_icon.svg | 3 + .../Text/node_next_indicator_icon.svg.import | 37 + .../dialogic/Modules/Text/node_type_sound.gd | 125 ++ addons/dialogic/Modules/Text/settings_text.gd | 120 ++ .../dialogic/Modules/Text/settings_text.tscn | 278 +++++ .../dialogic/Modules/Text/subsystem_text.gd | 443 +++++++ .../Modules/TextInput/event_text_input.gd | 99 ++ addons/dialogic/Modules/TextInput/icon.png | Bin 0 -> 437 bytes .../Modules/TextInput/icon.png.import | 34 + addons/dialogic/Modules/TextInput/index.gd | 11 + .../Modules/TextInput/node_text_input.gd | 57 + .../Modules/TextInput/subsystem_text_input.gd | 34 + .../Modules/Variable/add-variable.svg | 4 + .../Modules/Variable/add-variable.svg.import | 38 + .../Modules/Variable/event_variable.gd | 290 +++++ addons/dialogic/Modules/Variable/icon.png | Bin 0 -> 639 bytes .../dialogic/Modules/Variable/icon.png.import | 34 + addons/dialogic/Modules/Variable/index.gd | 12 + .../Modules/Variable/subsystem_variables.gd | 205 +++ addons/dialogic/Modules/Variable/variable.svg | 3 + .../Modules/Variable/variable.svg.import | 38 + .../variables_editor/variable_drag_preview.gd | 11 + .../variable_drag_preview.tscn | 41 + .../variables_editor/variable_field.gd | 115 ++ .../variables_editor/variable_field.tscn | 61 + .../variables_editor/variable_group.gd | 308 +++++ .../variables_editor/variable_group.tscn | 167 +++ .../variables_editor/variables_editor.gd | 55 + .../variables_editor/variables_editor.tscn | 72 ++ addons/dialogic/Modules/Voice/event_voice.gd | 69 ++ addons/dialogic/Modules/Voice/icon.png | Bin 0 -> 1808 bytes addons/dialogic/Modules/Voice/icon.png.import | 34 + addons/dialogic/Modules/Voice/index.gd | 10 + .../dialogic/Modules/Voice/subsystem_voice.gd | 81 ++ addons/dialogic/Modules/Wait/event_wait.gd | 67 + addons/dialogic/Modules/Wait/icon.png | Bin 0 -> 546 bytes addons/dialogic/Modules/Wait/icon.png.import | 34 + addons/dialogic/Modules/Wait/index.gd | 6 + .../Modules/WaitInput/event_wait_input.gd | 48 + addons/dialogic/Modules/WaitInput/icon.svg | 340 +++++ .../Modules/WaitInput/icon.svg.import | 37 + addons/dialogic/Modules/WaitInput/index.gd | 6 + addons/dialogic/Other/DialogicGameHandler.gd | 466 +++++++ addons/dialogic/Other/DialogicUtil.gd | 322 +++++ addons/dialogic/Other/Dialogic_Subsystem.gd | 23 + addons/dialogic/Other/index_class.gd | 95 ++ .../Resources/CharacterResourceLoader.gd | 52 + .../Resources/CharacterResourceSaver.gd | 26 + .../Resources/TimelineResourceLoader.gd | 35 + .../Resources/TimelineResourceSaver.gd | 60 + addons/dialogic/Resources/character.gd | 38 + addons/dialogic/Resources/event.gd | 455 +++++++ addons/dialogic/Resources/timeline.gd | 204 +++ addons/dialogic/plugin.cfg | 8 + addons/dialogic/plugin.gd | 117 ++ assets/characters/apothecary.atlastex | Bin 0 -> 279 bytes assets/characters/character_generic.png | Bin 0 -> 1212 bytes .../characters/character_generic.png.import | 34 + assets/characters/gobot_field.png | Bin 0 -> 1234 bytes assets/characters/gobot_field.png.import | 34 + assets/characters/knight.atlastex | Bin 0 -> 277 bytes assets/characters/lady.atlastex | Bin 0 -> 276 bytes assets/characters/player.atlastex | Bin 0 -> 275 bytes assets/characters/smith.atlastex | Bin 0 -> 275 bytes assets/characters/wizard.atlastex | Bin 0 -> 274 bytes assets/gui/default.theme | Bin 0 -> 250 bytes assets/gui/font/SourceCodePro-Bold.ttf | Bin 0 -> 211716 bytes assets/gui/font/SourceCodePro-Bold.ttf.import | 33 + assets/gui/icons/app_icon.png | Bin 0 -> 14526 bytes assets/gui/icons/app_icon.png.import | 34 + assets/gui/path_destination_marker.tres | 7 + assets/terrain/dungeon_tilemap.png | Bin 0 -> 5533 bytes assets/terrain/dungeon_tilemap.png.import | 34 + assets/terrain/tilesets/kenney_obstacles.tres | 460 +++++++ assets/terrain/tilesets/kenney_terrain.tres | 130 ++ assets/terrain/town_tilemap.png | Bin 0 -> 5395 bytes assets/terrain/town_tilemap.png.import | 34 + data/default_gameboard.tres | 9 + data/field/characters/apothercary_gfx.tscn | 16 + .../characters/default_animations/RESET.anim | Bin 0 -> 477 bytes .../characters/default_animations/idle_e.anim | Bin 0 -> 420 bytes .../characters/default_animations/idle_n.anim | Bin 0 -> 423 bytes .../characters/default_animations/idle_s.anim | Bin 0 -> 418 bytes .../characters/default_animations/idle_w.anim | Bin 0 -> 423 bytes .../characters/default_animations/run_e.anim | Bin 0 -> 456 bytes .../characters/default_animations/run_n.anim | Bin 0 -> 451 bytes .../characters/default_animations/run_s.anim | Bin 0 -> 449 bytes .../characters/default_animations/run_w.anim | Bin 0 -> 449 bytes .../standard_animations.res | Bin 0 -> 759 bytes .../characters/generic_character_gfx.tscn | 24 + data/field/characters/gobot_gfx.tscn | 24 + data/field/characters/knight_gfx.tscn | 59 + data/field/characters/lady_gfx.tscn | 60 + data/field/characters/smith_gfx.tscn | 60 + data/field/characters/wizard_gfx.tscn | 60 + icon.svg | 1 + icon.svg.import | 37 + media/.gdignore | 0 media/Open-RPG.png | Bin 0 -> 159918 bytes project.godot | 77 ++ src/common/collision_finder.gd | 45 + src/common/globals/directions.gd | 18 + src/common/globals/global_field_events.gd | 52 + src/field/field.gd | 68 + src/field/field_cursor.gd | 96 ++ src/field/gameboard/debug_map_boundaries.gd | 41 + src/field/gameboard/gameboard.gd | 103 ++ src/field/gameboard/pathfinder.gd | 138 +++ .../animation/gamepiece_animation.gd | 176 +++ .../animation/gamepiece_animation.tscn | 21 + .../controllers/gamepiece_controller.gd | 171 +++ .../controllers/path_loop_ai_controller.gd | 126 ++ .../controllers/player_controller.gd | 156 +++ src/field/gamepieces/gamepiece.gd | 230 ++++ src/field/gamepieces/gamepiece.tscn | 22 + src/field/player_path_destination_marker.gd | 12 + src/main.tscn | 162 +++ 573 files changed, 37162 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 CREDITS.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd create mode 100644 addons/dialogic/Editor/Common/DCSS.gd create mode 100644 addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd create mode 100644 addons/dialogic/Editor/Common/TitleBgStylebox.tres create mode 100644 addons/dialogic/Editor/Common/broken_reference_manager.tscn create mode 100644 addons/dialogic/Editor/Common/hint_tooltip_icon.gd create mode 100644 addons/dialogic/Editor/Common/hint_tooltip_icon.tscn create mode 100644 addons/dialogic/Editor/Common/reference_manager.gd create mode 100644 addons/dialogic/Editor/Common/reference_manager_window.gd create mode 100644 addons/dialogic/Editor/Common/side_bar.tscn create mode 100644 addons/dialogic/Editor/Common/sidebar.gd create mode 100644 addons/dialogic/Editor/Common/toolbar.gd create mode 100644 addons/dialogic/Editor/Events/BranchEnd.gd create mode 100644 addons/dialogic/Editor/Events/BranchEnd.tscn create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_block.gd create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_block.tscn create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd create mode 100644 addons/dialogic/Editor/Events/Fields/Array.gd create mode 100644 addons/dialogic/Editor/Events/Fields/Array.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/ArrayValue.gd create mode 100644 addons/dialogic/Editor/Events/Fields/ArrayValue.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/Bool.gd create mode 100644 addons/dialogic/Editor/Events/Fields/Bool.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/ComplexPicker.gd create mode 100644 addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/ConditionPicker.gd create mode 100644 addons/dialogic/Editor/Events/Fields/ConditionPicker.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/FilePicker.gd create mode 100644 addons/dialogic/Editor/Events/Fields/FilePicker.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/Label.gd create mode 100644 addons/dialogic/Editor/Events/Fields/Label.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/MultilineText.gd create mode 100644 addons/dialogic/Editor/Events/Fields/MultilineText.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/Number.gd create mode 100644 addons/dialogic/Editor/Events/Fields/Number.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/OptionSelector.gd create mode 100644 addons/dialogic/Editor/Events/Fields/OptionSelector.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/SinglelineText.gd create mode 100644 addons/dialogic/Editor/Events/Fields/SinglelineText.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/Vector2.gd create mode 100644 addons/dialogic/Editor/Events/Fields/Vector2.tscn create mode 100644 addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres create mode 100644 addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres create mode 100644 addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres create mode 100644 addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres create mode 100644 addons/dialogic/Editor/Events/styles/SectionPanel.tres create mode 100644 addons/dialogic/Editor/Events/styles/SettingsFieldBackground.tres create mode 100644 addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres create mode 100644 addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres create mode 100644 addons/dialogic/Editor/Events/styles/TextBackground.tres create mode 100644 addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres create mode 100644 addons/dialogic/Editor/Events/styles/unselected_stylebox.tres create mode 100644 addons/dialogic/Editor/HomePage/home_page.gd create mode 100644 addons/dialogic/Editor/HomePage/home_page.tscn create mode 100644 addons/dialogic/Editor/HomePage/icon_bg.png create mode 100644 addons/dialogic/Editor/HomePage/icon_bg.png.import create mode 100644 addons/dialogic/Editor/HomePage/tips.txt create mode 100644 addons/dialogic/Editor/Images/Dropdown/default.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/default.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/divide.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/divide.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/join.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/join.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/leave.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/leave.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/minus.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/minus.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/multiply.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/multiply.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/plus.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/plus.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/set.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/set.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/update.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/update.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/add-folder.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/add-folder.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/closed-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/expand-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/open-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/open-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/variable.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/variable.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/variable_icon.png create mode 100644 addons/dialogic/Editor/Images/Pieces/variable_icon.png.import create mode 100644 addons/dialogic/Editor/Images/Pieces/warning.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/warning.svg.import create mode 100644 addons/dialogic/Editor/Images/Resources/character.svg create mode 100644 addons/dialogic/Editor/Images/Resources/character.svg.import create mode 100644 addons/dialogic/Editor/Images/Resources/icon_character.png create mode 100644 addons/dialogic/Editor/Images/Resources/icon_character.png.import create mode 100644 addons/dialogic/Editor/Images/Resources/portrait.svg create mode 100644 addons/dialogic/Editor/Images/Resources/portrait.svg.import create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-character.svg create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-character.svg.import create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-timeline.svg create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import create mode 100644 addons/dialogic/Editor/Images/Unknown.png create mode 100644 addons/dialogic/Editor/Images/Unknown.png.import create mode 100644 addons/dialogic/Editor/Images/dialogic-logo.svg create mode 100644 addons/dialogic/Editor/Images/dialogic-logo.svg.import create mode 100644 addons/dialogic/Editor/Images/plugin-icon.svg create mode 100644 addons/dialogic/Editor/Images/plugin-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/preview_character.png create mode 100644 addons/dialogic/Editor/Images/preview_character.png.import create mode 100644 addons/dialogic/Editor/Images/preview_character_speaker.png create mode 100644 addons/dialogic/Editor/Images/preview_character_speaker.png.import create mode 100644 addons/dialogic/Editor/Settings/HintLabelStylingScript.gd create mode 100644 addons/dialogic/Editor/Settings/settings_editor.gd create mode 100644 addons/dialogic/Editor/Settings/settings_editor.tscn create mode 100644 addons/dialogic/Editor/Settings/settings_general.gd create mode 100644 addons/dialogic/Editor/Settings/settings_general.tscn create mode 100644 addons/dialogic/Editor/Settings/settings_modules.gd create mode 100644 addons/dialogic/Editor/Settings/settings_modules.tscn create mode 100644 addons/dialogic/Editor/Settings/settings_page.gd create mode 100644 addons/dialogic/Editor/Settings/settings_translation.gd create mode 100644 addons/dialogic/Editor/Settings/settings_translation.tscn create mode 100644 addons/dialogic/Editor/Theme/MainTheme.tres create mode 100644 addons/dialogic/Editor/Theme/PickerTheme.tres create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/timeline_editor.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn create mode 100644 addons/dialogic/Editor/dialogic_editor.gd create mode 100644 addons/dialogic/Editor/directory_holder.gd create mode 100644 addons/dialogic/Editor/editor_main.gd create mode 100644 addons/dialogic/Editor/editor_main.tscn create mode 100644 addons/dialogic/Editor/editors_manager.gd create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf.import create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import create mode 100644 addons/dialogic/Example Assets/already_read_indicator.gd create mode 100644 addons/dialogic/Example Assets/backgrounds/BubbleEnd.png create mode 100644 addons/dialogic/Example Assets/backgrounds/BubbleEnd.png.import create mode 100644 addons/dialogic/Example Assets/backgrounds/new-default-dialog.png.import create mode 100644 addons/dialogic/Example Assets/backgrounds/rpg_box.webp create mode 100644 addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import create mode 100644 addons/dialogic/Example Assets/default_event.gd create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator.png create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 blink.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 blink.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 sad.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 sad.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 scoff.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 scoff.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 shy.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 shy.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5.png create mode 100644 addons/dialogic/Example Assets/portraits/Antonio/pl5.png.import create mode 100644 addons/dialogic/Example Assets/portraits/CustomPortrait_AnimatedSprite.gd create mode 100644 addons/dialogic/Example Assets/portraits/CustomPortrait_AnimatedSprite.tscn create mode 100644 addons/dialogic/Example Assets/portraits/CustomPortrait_FaceAtlas.gd create mode 100644 addons/dialogic/Example Assets/portraits/CustomPortrait_FaceAtlas.tscn create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 avoid.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 avoid.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 blink.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 blink.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 concept.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 concept.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 confusion.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 confusion.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 doubt.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 doubt.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 happy.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 happy.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 plot.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 plot.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 sad.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 sad.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 shy.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 shy.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 surprise.png create mode 100644 addons/dialogic/Example Assets/portraits/Jane/pl3 surprise.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Portrait1.png create mode 100644 addons/dialogic/Example Assets/portraits/Portrait1.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Portrait2.png create mode 100644 addons/dialogic/Example Assets/portraits/Portrait2.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/anger.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/anger.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/frown.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/frown.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/joy.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/joy.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/neutral.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/neutral.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/princess_blank.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/princess_blank.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/shock.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/shock.png.import create mode 100644 addons/dialogic/Example Assets/portraits/Princess/smile.png create mode 100644 addons/dialogic/Example Assets/portraits/Princess/smile.png.import create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base1.png create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base1.png.import create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base2.png create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base2.png.import create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base3.png create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base3.png.import create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base4.png create mode 100644 addons/dialogic/Example Assets/portraits/rpg_portraits/base4.png.import create mode 100644 addons/dialogic/Example Assets/sound-effects/LICENSE.txt create mode 100644 addons/dialogic/Example Assets/sound-effects/typing1.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing1.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing2.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing2.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing3.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing3.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing4.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing4.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing5.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing5.wav.import create mode 100644 addons/dialogic/Modules/Audio/event_music.gd create mode 100644 addons/dialogic/Modules/Audio/event_sound.gd create mode 100644 addons/dialogic/Modules/Audio/icon_music.png create mode 100644 addons/dialogic/Modules/Audio/icon_music.png.import create mode 100644 addons/dialogic/Modules/Audio/icon_sound.png create mode 100644 addons/dialogic/Modules/Audio/icon_sound.png.import create mode 100644 addons/dialogic/Modules/Audio/index.gd create mode 100644 addons/dialogic/Modules/Audio/subsystem_audio.gd create mode 100644 addons/dialogic/Modules/Background/default_background.gd create mode 100644 addons/dialogic/Modules/Background/default_background.tscn create mode 100644 addons/dialogic/Modules/Background/dialogic_background.gd create mode 100644 addons/dialogic/Modules/Background/event_background.gd create mode 100644 addons/dialogic/Modules/Background/icon.png create mode 100644 addons/dialogic/Modules/Background/icon.png.import create mode 100644 addons/dialogic/Modules/Background/index.gd create mode 100644 addons/dialogic/Modules/Background/node_background_holder.gd create mode 100644 addons/dialogic/Modules/Background/subsystem_backgrounds.gd create mode 100644 addons/dialogic/Modules/CallNode/event_call_node.gd create mode 100644 addons/dialogic/Modules/CallNode/icon.png create mode 100644 addons/dialogic/Modules/CallNode/icon.png.import create mode 100644 addons/dialogic/Modules/CallNode/index.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce_in.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_in_up.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_out_down.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/instant_in_or_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_in_down.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_in_left.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_in_right.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_in_up.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_out_down.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_out_left.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_out_right.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_out_up.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/tada.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_in.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_center.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_out_center.gd create mode 100644 addons/dialogic/Modules/Character/class_dialogic_animation.gd create mode 100644 addons/dialogic/Modules/Character/default_portrait.gd create mode 100644 addons/dialogic/Modules/Character/default_portrait.tscn create mode 100644 addons/dialogic/Modules/Character/dialogic_portrait.gd create mode 100644 addons/dialogic/Modules/Character/event_character.gd create mode 100644 addons/dialogic/Modules/Character/event_position.gd create mode 100644 addons/dialogic/Modules/Character/icon.png.import create mode 100644 addons/dialogic/Modules/Character/icon_character.png create mode 100644 addons/dialogic/Modules/Character/icon_character.png.import create mode 100644 addons/dialogic/Modules/Character/icon_position.png create mode 100644 addons/dialogic/Modules/Character/icon_position.png.import create mode 100644 addons/dialogic/Modules/Character/index.gd create mode 100644 addons/dialogic/Modules/Character/node_portrait_container.gd create mode 100644 addons/dialogic/Modules/Character/preview_character.tres create mode 100644 addons/dialogic/Modules/Character/settings_portraits.gd create mode 100644 addons/dialogic/Modules/Character/settings_portraits.tscn create mode 100644 addons/dialogic/Modules/Character/subsystem_portraits.gd create mode 100644 addons/dialogic/Modules/Choice/event_choice.gd create mode 100644 addons/dialogic/Modules/Choice/icon.svg create mode 100644 addons/dialogic/Modules/Choice/icon.svg.import create mode 100644 addons/dialogic/Modules/Choice/index.gd create mode 100644 addons/dialogic/Modules/Choice/node_button_sound.gd create mode 100644 addons/dialogic/Modules/Choice/node_choice_button.gd create mode 100644 addons/dialogic/Modules/Choice/settings_choices.gd create mode 100644 addons/dialogic/Modules/Choice/settings_choices.tscn create mode 100644 addons/dialogic/Modules/Choice/subsystem_choices.gd create mode 100644 addons/dialogic/Modules/Choice/ui_choice_end.gd create mode 100644 addons/dialogic/Modules/Choice/ui_choice_end.tscn create mode 100644 addons/dialogic/Modules/Comment/event_comment.gd create mode 100644 addons/dialogic/Modules/Comment/icon.png create mode 100644 addons/dialogic/Modules/Comment/icon.png.import create mode 100644 addons/dialogic/Modules/Comment/index.gd create mode 100644 addons/dialogic/Modules/Condition/event_condition.gd create mode 100644 addons/dialogic/Modules/Condition/icon.svg create mode 100644 addons/dialogic/Modules/Condition/icon.svg.import create mode 100644 addons/dialogic/Modules/Condition/index.gd create mode 100644 addons/dialogic/Modules/Condition/ui_condition_end.gd create mode 100644 addons/dialogic/Modules/Condition/ui_condition_end.tscn create mode 100644 addons/dialogic/Modules/Converter/custom_event_converter.gd create mode 100644 addons/dialogic/Modules/Converter/icon.png.import create mode 100644 addons/dialogic/Modules/Converter/index.gd create mode 100644 addons/dialogic/Modules/Converter/settings_converter.gd create mode 100644 addons/dialogic/Modules/Converter/settings_converter.tscn create mode 100644 addons/dialogic/Modules/Core/event_end_branch.gd create mode 100644 addons/dialogic/Modules/Core/icon.png create mode 100644 addons/dialogic/Modules/Core/icon.png.import create mode 100644 addons/dialogic/Modules/Core/index.gd create mode 100644 addons/dialogic/Modules/Core/subsystem_animation.gd create mode 100644 addons/dialogic/Modules/Core/subsystem_expression.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/DialogicDefaultLayout.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/DialogicDefaultLayout.tscn create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/ExampleGlossaryPopup.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/animations.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/autoadvance_indicator.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/preview.png create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultStyles/Default/style.cfg create mode 100644 addons/dialogic/Modules/DefaultStyles/ExampleHistoryItem.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/ExampleHistoryItem.tscn create mode 100644 addons/dialogic/Modules/DefaultStyles/ExampleHistoryScene.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/ExampleHistoryScene.tscn create mode 100644 addons/dialogic/Modules/DefaultStyles/HideWithChild.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/RPG_BoxPortrait/DialogicRPGLayout.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/RPG_BoxPortrait/DialogicRPGLayout.tscn create mode 100644 addons/dialogic/Modules/DefaultStyles/RPG_BoxPortrait/preview.png create mode 100644 addons/dialogic/Modules/DefaultStyles/RPG_BoxPortrait/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultStyles/RPG_BoxPortrait/style.cfg create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/DialogicTextBubbleLayout.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/DialogicTextBubbleLayout.tscn create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/TextBubble.gd create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/TextBubble.tscn create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/preview.png create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/speech_bubble.gdshader create mode 100644 addons/dialogic/Modules/DefaultStyles/TextBubble/style.cfg create mode 100644 addons/dialogic/Modules/DefaultStyles/index.gd create mode 100644 addons/dialogic/Modules/End/event_end.gd create mode 100644 addons/dialogic/Modules/End/icon.png create mode 100644 addons/dialogic/Modules/End/icon.png.import create mode 100644 addons/dialogic/Modules/End/index.gd create mode 100644 addons/dialogic/Modules/Glossary/add-glossary.svg create mode 100644 addons/dialogic/Modules/Glossary/add-glossary.svg.import create mode 100644 addons/dialogic/Modules/Glossary/event_glossary.gd create mode 100644 addons/dialogic/Modules/Glossary/glossary_editor.gd create mode 100644 addons/dialogic/Modules/Glossary/glossary_editor.tscn create mode 100644 addons/dialogic/Modules/Glossary/glossary_resource.gd create mode 100644 addons/dialogic/Modules/Glossary/icon.png.import create mode 100644 addons/dialogic/Modules/Glossary/icon.svg create mode 100644 addons/dialogic/Modules/Glossary/icon.svg.import create mode 100644 addons/dialogic/Modules/Glossary/index.gd create mode 100644 addons/dialogic/Modules/Glossary/subsystem_glossary.gd create mode 100644 addons/dialogic/Modules/History/definition.svg create mode 100644 addons/dialogic/Modules/History/definition.svg.import create mode 100644 addons/dialogic/Modules/History/event_history.gd create mode 100644 addons/dialogic/Modules/History/icon.svg create mode 100644 addons/dialogic/Modules/History/icon.svg.import create mode 100644 addons/dialogic/Modules/History/index.gd create mode 100644 addons/dialogic/Modules/History/settings_history.gd create mode 100644 addons/dialogic/Modules/History/settings_history.tscn create mode 100644 addons/dialogic/Modules/History/subsystem_history.gd create mode 100644 addons/dialogic/Modules/Jump/event_jump.gd create mode 100644 addons/dialogic/Modules/Jump/event_label.gd create mode 100644 addons/dialogic/Modules/Jump/event_return.gd create mode 100644 addons/dialogic/Modules/Jump/icon.png.import create mode 100644 addons/dialogic/Modules/Jump/icon_jump.png create mode 100644 addons/dialogic/Modules/Jump/icon_jump.png.import create mode 100644 addons/dialogic/Modules/Jump/icon_label.png create mode 100644 addons/dialogic/Modules/Jump/icon_label.png.import create mode 100644 addons/dialogic/Modules/Jump/icon_return.svg create mode 100644 addons/dialogic/Modules/Jump/icon_return.svg.import create mode 100644 addons/dialogic/Modules/Jump/index.gd create mode 100644 addons/dialogic/Modules/Jump/subsystem_jump.gd create mode 100644 addons/dialogic/Modules/LayoutEditor/Components/StyleItem.gd create mode 100644 addons/dialogic/Modules/LayoutEditor/Components/StyleItem.tscn create mode 100644 addons/dialogic/Modules/LayoutEditor/Components/StyleList.gd create mode 100644 addons/dialogic/Modules/LayoutEditor/Components/StyleList.tscn create mode 100644 addons/dialogic/Modules/LayoutEditor/index.gd create mode 100644 addons/dialogic/Modules/LayoutEditor/layout_editor.gd create mode 100644 addons/dialogic/Modules/LayoutEditor/layout_editor.tscn create mode 100644 addons/dialogic/Modules/LayoutEditor/styles_icon.svg create mode 100644 addons/dialogic/Modules/LayoutEditor/styles_icon.svg.import create mode 100644 addons/dialogic/Modules/Save/event_save.gd create mode 100644 addons/dialogic/Modules/Save/icon.svg create mode 100644 addons/dialogic/Modules/Save/icon.svg.import create mode 100644 addons/dialogic/Modules/Save/index.gd create mode 100644 addons/dialogic/Modules/Save/settings_save.gd create mode 100644 addons/dialogic/Modules/Save/settings_save.tscn create mode 100644 addons/dialogic/Modules/Save/subsystem_save.gd create mode 100644 addons/dialogic/Modules/Settings/event_setting.gd create mode 100644 addons/dialogic/Modules/Settings/icon.svg create mode 100644 addons/dialogic/Modules/Settings/icon.svg.import create mode 100644 addons/dialogic/Modules/Settings/index.gd create mode 100644 addons/dialogic/Modules/Settings/subsystem_settings.gd create mode 100644 addons/dialogic/Modules/Signal/event_signal.gd create mode 100644 addons/dialogic/Modules/Signal/icon.png create mode 100644 addons/dialogic/Modules/Signal/icon.png.import create mode 100644 addons/dialogic/Modules/Signal/index.gd create mode 100644 addons/dialogic/Modules/Style/character_settings_style.gd create mode 100644 addons/dialogic/Modules/Style/character_settings_style.tscn create mode 100644 addons/dialogic/Modules/Style/event_style.gd create mode 100644 addons/dialogic/Modules/Style/icon.png create mode 100644 addons/dialogic/Modules/Style/icon.png.import create mode 100644 addons/dialogic/Modules/Style/index.gd create mode 100644 addons/dialogic/Modules/Style/node_style.gd create mode 100644 addons/dialogic/Modules/Style/subsystem_styles.gd create mode 100644 addons/dialogic/Modules/Text/DNextIndicator_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/character_settings/character_moods_settings.gd create mode 100644 addons/dialogic/Modules/Text/character_settings/character_moods_settings.tscn create mode 100644 addons/dialogic/Modules/Text/character_settings/character_portrait_mood_settings.gd create mode 100644 addons/dialogic/Modules/Text/character_settings/character_portrait_mood_settings.tscn create mode 100644 addons/dialogic/Modules/Text/default_input_handler.gd create mode 100644 addons/dialogic/Modules/Text/event_text.gd create mode 100644 addons/dialogic/Modules/Text/icon.png create mode 100644 addons/dialogic/Modules/Text/icon.png.import create mode 100644 addons/dialogic/Modules/Text/index.gd create mode 100644 addons/dialogic/Modules/Text/node_dialog_text.gd create mode 100644 addons/dialogic/Modules/Text/node_name_label.gd create mode 100644 addons/dialogic/Modules/Text/node_next_indicator.gd create mode 100644 addons/dialogic/Modules/Text/node_next_indicator_icon.svg create mode 100644 addons/dialogic/Modules/Text/node_next_indicator_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/node_type_sound.gd create mode 100644 addons/dialogic/Modules/Text/settings_text.gd create mode 100644 addons/dialogic/Modules/Text/settings_text.tscn create mode 100644 addons/dialogic/Modules/Text/subsystem_text.gd create mode 100644 addons/dialogic/Modules/TextInput/event_text_input.gd create mode 100644 addons/dialogic/Modules/TextInput/icon.png create mode 100644 addons/dialogic/Modules/TextInput/icon.png.import create mode 100644 addons/dialogic/Modules/TextInput/index.gd create mode 100644 addons/dialogic/Modules/TextInput/node_text_input.gd create mode 100644 addons/dialogic/Modules/TextInput/subsystem_text_input.gd create mode 100644 addons/dialogic/Modules/Variable/add-variable.svg create mode 100644 addons/dialogic/Modules/Variable/add-variable.svg.import create mode 100644 addons/dialogic/Modules/Variable/event_variable.gd create mode 100644 addons/dialogic/Modules/Variable/icon.png create mode 100644 addons/dialogic/Modules/Variable/icon.png.import create mode 100644 addons/dialogic/Modules/Variable/index.gd create mode 100644 addons/dialogic/Modules/Variable/subsystem_variables.gd create mode 100644 addons/dialogic/Modules/Variable/variable.svg create mode 100644 addons/dialogic/Modules/Variable/variable.svg.import create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_drag_preview.gd create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_drag_preview.tscn create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_field.gd create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_field.tscn create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_group.gd create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_group.tscn create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variables_editor.gd create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variables_editor.tscn create mode 100644 addons/dialogic/Modules/Voice/event_voice.gd create mode 100644 addons/dialogic/Modules/Voice/icon.png create mode 100644 addons/dialogic/Modules/Voice/icon.png.import create mode 100644 addons/dialogic/Modules/Voice/index.gd create mode 100644 addons/dialogic/Modules/Voice/subsystem_voice.gd create mode 100644 addons/dialogic/Modules/Wait/event_wait.gd create mode 100644 addons/dialogic/Modules/Wait/icon.png create mode 100644 addons/dialogic/Modules/Wait/icon.png.import create mode 100644 addons/dialogic/Modules/Wait/index.gd create mode 100644 addons/dialogic/Modules/WaitInput/event_wait_input.gd create mode 100644 addons/dialogic/Modules/WaitInput/icon.svg create mode 100644 addons/dialogic/Modules/WaitInput/icon.svg.import create mode 100644 addons/dialogic/Modules/WaitInput/index.gd create mode 100644 addons/dialogic/Other/DialogicGameHandler.gd create mode 100644 addons/dialogic/Other/DialogicUtil.gd create mode 100644 addons/dialogic/Other/Dialogic_Subsystem.gd create mode 100644 addons/dialogic/Other/index_class.gd create mode 100644 addons/dialogic/Resources/CharacterResourceLoader.gd create mode 100644 addons/dialogic/Resources/CharacterResourceSaver.gd create mode 100644 addons/dialogic/Resources/TimelineResourceLoader.gd create mode 100644 addons/dialogic/Resources/TimelineResourceSaver.gd create mode 100644 addons/dialogic/Resources/character.gd create mode 100644 addons/dialogic/Resources/event.gd create mode 100644 addons/dialogic/Resources/timeline.gd create mode 100644 addons/dialogic/plugin.cfg create mode 100644 addons/dialogic/plugin.gd create mode 100644 assets/characters/apothecary.atlastex create mode 100644 assets/characters/character_generic.png create mode 100644 assets/characters/character_generic.png.import create mode 100644 assets/characters/gobot_field.png create mode 100644 assets/characters/gobot_field.png.import create mode 100644 assets/characters/knight.atlastex create mode 100644 assets/characters/lady.atlastex create mode 100644 assets/characters/player.atlastex create mode 100644 assets/characters/smith.atlastex create mode 100644 assets/characters/wizard.atlastex create mode 100644 assets/gui/default.theme create mode 100644 assets/gui/font/SourceCodePro-Bold.ttf create mode 100644 assets/gui/font/SourceCodePro-Bold.ttf.import create mode 100644 assets/gui/icons/app_icon.png create mode 100644 assets/gui/icons/app_icon.png.import create mode 100644 assets/gui/path_destination_marker.tres create mode 100644 assets/terrain/dungeon_tilemap.png create mode 100644 assets/terrain/dungeon_tilemap.png.import create mode 100644 assets/terrain/tilesets/kenney_obstacles.tres create mode 100644 assets/terrain/tilesets/kenney_terrain.tres create mode 100644 assets/terrain/town_tilemap.png create mode 100644 assets/terrain/town_tilemap.png.import create mode 100644 data/default_gameboard.tres create mode 100644 data/field/characters/apothercary_gfx.tscn create mode 100644 data/field/characters/default_animations/RESET.anim create mode 100644 data/field/characters/default_animations/idle_e.anim create mode 100644 data/field/characters/default_animations/idle_n.anim create mode 100644 data/field/characters/default_animations/idle_s.anim create mode 100644 data/field/characters/default_animations/idle_w.anim create mode 100644 data/field/characters/default_animations/run_e.anim create mode 100644 data/field/characters/default_animations/run_n.anim create mode 100644 data/field/characters/default_animations/run_s.anim create mode 100644 data/field/characters/default_animations/run_w.anim create mode 100644 data/field/characters/default_animations/standard_animations.res create mode 100644 data/field/characters/generic_character_gfx.tscn create mode 100644 data/field/characters/gobot_gfx.tscn create mode 100644 data/field/characters/knight_gfx.tscn create mode 100644 data/field/characters/lady_gfx.tscn create mode 100644 data/field/characters/smith_gfx.tscn create mode 100644 data/field/characters/wizard_gfx.tscn create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 media/.gdignore create mode 100644 media/Open-RPG.png create mode 100644 project.godot create mode 100644 src/common/collision_finder.gd create mode 100644 src/common/globals/directions.gd create mode 100644 src/common/globals/global_field_events.gd create mode 100644 src/field/field.gd create mode 100644 src/field/field_cursor.gd create mode 100644 src/field/gameboard/debug_map_boundaries.gd create mode 100644 src/field/gameboard/gameboard.gd create mode 100644 src/field/gameboard/pathfinder.gd create mode 100644 src/field/gamepieces/animation/gamepiece_animation.gd create mode 100644 src/field/gamepieces/animation/gamepiece_animation.tscn create mode 100644 src/field/gamepieces/controllers/gamepiece_controller.gd create mode 100644 src/field/gamepieces/controllers/path_loop_ai_controller.gd create mode 100644 src/field/gamepieces/controllers/player_controller.gd create mode 100644 src/field/gamepieces/gamepiece.gd create mode 100644 src/field/gamepieces/gamepiece.tscn create mode 100644 src/field/player_path_destination_marker.gd create mode 100644 src/main.tscn diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c8c2ba8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ + +# Godot-specific ignores +.import/ +export.cfg +export_presets.cfg + +# Imported translations (automatically generated from CSV files) +*.translation + +# Mono-specific ignores +.mono/ +data_*/ +mono_crash.*.json + +# System/tool-specific ignores +.directory +*~ + +# Project-specific ignores +/visuals +/audio +/godot/debug/save +.godot/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..2e26215 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +## v0.1.0 Project Demo 🏃 2023-05-19 + +### New + +The initial demo is to verify the direction of the 4.0 rewrite. The codebase is rewritten from scratch, being refactored to include Godot 4 updates as well as GDQuest best practices. + +This first demo tackles player movement throughout the gameworld. This is accomplished primarily via Godot's built-in physics engine, which is used to govern "where everything is and may be". + +Gamepiece movement is grid-based (as in the original Final Fantasy and similar games) and concurrent (gamepieces may move simultaneously). The player may move via gamepad, touch screen, or mouse + keyboard. The source code is documented and should provide a robust starting point for any RPG or Roguelike. + +Please turn on 'Debug/Visible Collision Shapes' in the editor to better see where everything is located on the grid. + +### Changes + +- Changed game assets to use Kenney's Tiny Town set. The art is upscaled 5x in-game. +- Updated the changelog and reset the versioning, as this is essentially a new project. +- Added a credits file providing attribution to project assets. diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 0000000..c4987a8 --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,18 @@ +# Credits for external assets. + +Insect Factory +Author: Zane Little Music +URL: https://opengameart.org/content/insect-factory-wii-style-music (accessed 2023-06-06) +License: [CC0](https://creativecommons.org/publicdomain/zero/1.0/) + +Tiny Series (Tiny Town & Tiny Dungeon) +Author: Kenney +URL: https://kenney.nl/assets/tiny-town & https://kenney.nl/assets/tiny-dungeon (accessed 2023-02-22) +License: [CC0](https://creativecommons.org/publicdomain/zero/1.0/) + +Tiny Town - Animated Characters +Author: food_please; derived from Tiny Town (Kenney) & DawnLike (DragonDePlatino) +URL: N/A +License: [CC0](https://creativecommons.org/publicdomain/zero/1.0/) + +Please see the [license](LICENSE). diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..92ed087 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 GDquest + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d206b2b --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# Godot 4 Open RPG + +![Godot Open RPG banner](media/Open-RPG.png) + +OpenRPG is a tool and a demo to create Role Playing Games with turn-based combat. + +➡ Follow us on [Twitter](https://twitter.com/NathanGDQuest) and [YouTube](https://www.youtube.com/c/gdquest/) for free game creation tutorials, tips, and news! Get one of our [Godot game creation courses](https://gdquest.mavenseed.com/courses) to support our work on Free Software. + +## Project Goal + +The goal of this project is to provide the gamedev community with a demo that shows how game systems work together in a complete 2D Godot game demo. + +The demo draws inspiration from RPG Maker and older JRPGs like Final Fantasy or Dragon Quest as well as the Godot 3 OpenRPG. + +Throughout the project, heavy emphasis is to be placed on code that is... + +- Updated to take advantage of what GDScript 4 has to offer. +- Simple, to best serve as a starting point for those diving into the project. +- Made to conform to GDQuest's [GDScript guidelines](https://gdquest.gitbook.io/gdquests-guidelines/godot-gdscript-guidelines). + +## Our Mission + +Together, we're creating a codebase and tools to show you some of the best practices to create: + +- Turn-based games +- A combat system +- An inventory system +- Character progression +- User interface with multiple menus + +And more! Do you want to contribute and improve your programming skills with Godot? Check out the open issues, suggest improvements and report bugs by opening new ones, and be sure to check the contributing guidelines below. + +## Contributing Guidelines + +All contributors are welcome 🙂. To ensure a smooth and a productive experience for everyone working together, we came up with some guidelines we all follow here. + +Check our [Contributors Guide](https://gdquest.gitbook.io/gdquests-guidelines/contributing-to-gdquest-projects/) for more information 😄 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd new file mode 100644 index 0000000..106d2ce --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd @@ -0,0 +1,101 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Tab that allows setting values of exported scene variables +## for custom portrait scenes + +var current_portrait_data := {} + +func _ready() -> void: + add_theme_stylebox_override('panel', get_theme_stylebox("Background", "EditorStyles")) + + $Label.add_theme_color_override("font_color", get_theme_color("readonly_color", "Editor")) + + +func _load_portrait_data(data:Dictionary) -> void: + _recheck(data) + +func _recheck(data:Dictionary): + if data.get('scene', '').is_empty(): + hide() + get_parent().get_child(get_index()-1).hide() + get_parent().get_child(get_index()+1).hide() + else: + get_parent().get_child(get_index()-1).show() + + current_portrait_data = data + load_portrait_scene_export_variables() + + +func load_portrait_scene_export_variables(): + var scene = null + if !current_portrait_data.get('scene', '').is_empty(): + scene = load(current_portrait_data.get('scene')) + + if !scene: + return + + for child in $Grid.get_children(): + child.queue_free() + + scene = scene.instantiate() + for i in scene.script.get_script_property_list(): + if i['usage'] & PROPERTY_USAGE_EDITOR: + var label = Label.new() + label.text = i['name'] + label.add_theme_stylebox_override('normal', get_theme_stylebox("CanvasItemInfoOverlay", "EditorStyles")) + $Grid.add_child(label) + + var current_value :Variant = scene.get(i['name']) + if current_portrait_data.has('export_overrides') and current_portrait_data['export_overrides'].has(i['name']): + current_value = str_to_var(current_portrait_data['export_overrides'][i['name']]) + + var input :Node = DialogicUtil.setup_script_property_edit_node( + i, current_value, + {'bool':_on_export_bool_submitted, 'color':_on_export_color_submitted, 'enum':_on_export_int_enum_submitted, + 'int':_on_export_number_submitted, 'float':_on_export_number_submitted, 'file':_on_export_file_submitted, + 'string':_on_export_input_text_submitted, "string_enum": _on_export_string_enum_submitted}) + + input.size_flags_horizontal = SIZE_EXPAND_FILL + $Grid.add_child(input) + if i['usage'] & PROPERTY_USAGE_GROUP: + var title := Label.new() + title.text = i['name'] + title.add_theme_stylebox_override('normal', get_theme_stylebox("ContextualToolbar", "EditorStyles")) + $Grid.add_child(title) + $Grid.add_child(Control.new()) + + $Label.visible = $Grid.get_child_count() == 0 + + +func set_export_override(property_name:String, value:String = "") -> void: + var data:Dictionary = selected_item.get_metadata(0) + if !data.has('export_overrides'): + data['export_overrides'] = {} + if !value.is_empty(): + data['export_overrides'][property_name] = value + else: + data['export_overrides'].erase(property_name) + changed.emit() + update_preview.emit() + +func _on_export_input_text_submitted(text:String, property_name:String) -> void: + set_export_override(property_name, var_to_str(text)) + +func _on_export_bool_submitted(value:bool, property_name:String) -> void: + set_export_override(property_name, var_to_str(value)) + +func _on_export_color_submitted(color:Color, property_name:String) -> void: + set_export_override(property_name, var_to_str(color)) + +func _on_export_int_enum_submitted(item:int, property_name:String) -> void: + set_export_override(property_name, var_to_str(item)) + +func _on_export_number_submitted(value:float, property_name:String) -> void: + set_export_override(property_name, var_to_str(value)) + +func _on_export_file_submitted(property_name:String, value:String) -> void: + set_export_override(property_name, var_to_str(value)) + +func _on_export_string_enum_submitted(value:int, property_name:String, list:PackedStringArray): + set_export_override(property_name, list[value]) diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn new file mode 100644 index 0000000..e42b92d --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd" id="1_isys8"] + +[node name="Exports" type="VBoxContainer"] +custom_minimum_size = Vector2(0, 35) +offset_right = 367.0 +offset_bottom = 82.0 +script = ExtResource("1_isys8") + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +text = "There are no exported variables to override. Add @export properties to the root script of your scene and make sure it's in @tool mode." +autowrap_mode = 3 + +[node name="Grid" type="GridContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/h_separation = 10 +columns = 2 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd new file mode 100644 index 0000000..f2547c1 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd @@ -0,0 +1,40 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Tab that allows setting size, offset and mirror of a portrait. + + +func _load_portrait_data(data:Dictionary) -> void: + %IgnoreScale.button_pressed = data.get('ignore_char_scale', false) + + %PortraitScale.value = data.get('scale', 1.0)*100 + %PortraitOffset.set_value(data.get('offset', Vector2())) + %PortraitMirror.button_pressed = data.get('mirror', false) + + +func _on_portrait_scale_value_changed(value) -> void: + var data:Dictionary = selected_item.get_metadata(0) + data['scale'] = value/100.0 + update_preview.emit() + changed.emit() + + +func _on_portrait_mirror_toggled(button_pressed:bool)-> void: + var data:Dictionary = selected_item.get_metadata(0) + data['mirror'] = button_pressed + update_preview.emit() + changed.emit() + + +func _on_ignore_scale_toggled(button_pressed:bool) -> void: + var data:Dictionary = selected_item.get_metadata(0) + data['ignore_char_scale'] = button_pressed + update_preview.emit() + changed.emit() + + +func _on_portrait_offset_value_changed(property:String, value:Vector2) -> void: + var data:Dictionary = selected_item.get_metadata(0) + data['offset'] = value + update_preview.emit() + changed.emit() diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn new file mode 100644 index 0000000..797de88 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=3 format=3 uid="uid://crke8suvv52c6"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd" id="1_76vf2"] +[ext_resource type="PackedScene" uid="uid://dtimnsj014cu" path="res://addons/dialogic/Editor/Events/Fields/Vector2.tscn" id="2_c8kyi"] + +[node name="Layout" type="HFlowContainer"] +offset_right = 428.0 +offset_bottom = 128.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_76vf2") + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +text = "Ignore Main Scale: " + +[node name="IgnoreScale" type="CheckBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "This portrait will ignore the main scale." + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer"] +layout_mode = 2 +text = "Scale:" + +[node name="PortraitScale" type="SpinBox" parent="HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "A scale to be applied on top of the main scale +(unless ignore main scale is pressed)." +value = 100.0 +allow_greater = true +suffix = "%" + +[node name="HBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label2" type="Label" parent="HBoxContainer2"] +layout_mode = 2 +text = "Offset:" + +[node name="PortraitOffset" parent="HBoxContainer2" instance=ExtResource("2_c8kyi")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Offset that is applied on top of the main portrait offset." + +[node name="MirrorOption" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="MirrorOption"] +layout_mode = 2 +text = "Mirror:" + +[node name="PortraitMirror" type="CheckBox" parent="MirrorOption"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Mirroring that is applied on top of the main portrait mirror." + +[connection signal="toggled" from="IgnoreScale" to="." method="_on_ignore_scale_toggled"] +[connection signal="value_changed" from="HBoxContainer/PortraitScale" to="." method="_on_portrait_scale_value_changed"] +[connection signal="value_changed" from="HBoxContainer2/PortraitOffset" to="." method="_on_portrait_offset_value_changed"] +[connection signal="toggled" from="MirrorOption/PortraitMirror" to="." method="_on_portrait_mirror_toggled"] diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd new file mode 100644 index 0000000..ebc14cd --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd @@ -0,0 +1,39 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Tab that allows setting an image file on a portrait. + + +func _ready() -> void: + %ImagePicker.file_filter = "*.png, *.svg" + %ImagePicker.resource_icon = get_theme_icon('Image', 'EditorIcons') + + %ScenePicker.file_filter = "*.tscn, *.scn; Scenes" + %ScenePicker.resource_icon = get_theme_icon('PackedScene', 'EditorIcons') + %ScenePicker.placeholder = 'Default scene' + + +func _load_portrait_data(data:Dictionary) -> void: + %ScenePicker.set_value(data.get('scene', '')) + %ImagePicker.set_value(data.get('image', '')) + update_image_picker_visibility(data['scene'].is_empty()) + + +func _on_image_picker_value_changed(prop_name:String, value:String): + var data:Dictionary = selected_item.get_metadata(0) + data['image'] = value + changed.emit() + update_preview.emit() + + +func _on_scene_picker_value_changed(prop_name:String, value:String) -> void: + var data:Dictionary = selected_item.get_metadata(0) + data['scene'] = value + update_image_picker_visibility(data['scene'].is_empty()) + update_preview.emit() + changed.emit() + + +func update_image_picker_visibility(show= true) -> void: + %ImagePicker.visible = show + %ImageLabel.visible = show diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn new file mode 100644 index 0000000..1778366 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn @@ -0,0 +1,80 @@ +[gd_scene load_steps=7 format=3 uid="uid://djq4aasoihexj"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd" id="1_ht8lu"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/FilePicker.tscn" id="2_k8xs0"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rimrq"] +content_margin_left = 4.0 +content_margin_top = 0.0 +content_margin_right = 4.0 +content_margin_bottom = 0.0 +bg_color = Color(0.1, 0.1, 0.1, 0.6) +border_width_bottom = 2 +border_color = Color(0, 0, 0, 0.6) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[sub_resource type="Image" id="Image_4x7i8"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 93, 93, 55, 255, 97, 97, 58, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_y34ar"] +image = SubResource("Image_4x7i8") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bvmrg"] +content_margin_left = 4.0 +content_margin_top = 0.0 +content_margin_right = 4.0 +content_margin_bottom = 0.0 +bg_color = Color(0.1, 0.1, 0.1, 0.6) +border_width_bottom = 2 +border_color = Color(0, 0, 0, 0.6) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[node name="General" type="GridContainer"] +offset_right = 298.0 +offset_bottom = 86.0 +size_flags_horizontal = 3 +columns = 2 +script = ExtResource("1_ht8lu") + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +text = "Scene: " + +[node name="ScenePicker" parent="." instance=ExtResource("2_k8xs0")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_rimrq") +file_filter = "*.tscn, *.scn; Scenes" +placeholder = "Default scene" +resource_icon = SubResource("ImageTexture_y34ar") + +[node name="ImageLabel" type="Label" parent="."] +unique_name_in_owner = true +layout_mode = 2 +text = "Image: " + +[node name="ImagePicker" parent="." instance=ExtResource("2_k8xs0")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_bvmrg") +file_filter = "*.png, *.svg" +resource_icon = SubResource("ImageTexture_y34ar") + +[connection signal="value_changed" from="ScenePicker" to="." method="_on_scene_picker_value_changed"] +[connection signal="value_changed" from="ImagePicker" to="." method="_on_image_picker_value_changed"] diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd new file mode 100644 index 0000000..a9dc834 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd @@ -0,0 +1,36 @@ +@tool +extends DialogicCharacterEditorMainSection + +## The general character settings tab + + +func _ready() -> void: + # Connecting all necessary signals + %ColorPickerButton.color_changed.connect(character_editor.something_changed) + %DisplayNameLineEdit.text_changed.connect(character_editor.something_changed) + %NicknameLineEdit.text_changed.connect(character_editor.something_changed) + %DescriptionTextEdit.text_changed.connect(character_editor.something_changed) + + +func _load_character(resource:DialogicCharacter) -> void: + %DisplayNameLineEdit.text = resource.display_name + %ColorPickerButton.color = resource.color + + %NicknameLineEdit.text = "" + for nickname in resource.nicknames: + %NicknameLineEdit.text += nickname +", " + %NicknameLineEdit.text = %NicknameLineEdit.text.trim_suffix(', ') + + %DescriptionTextEdit.text = resource.description + + +func _save_changes(resource:DialogicCharacter) -> DialogicCharacter: + resource.display_name = %DisplayNameLineEdit.text + resource.color = %ColorPickerButton.color + var nicknames := [] + for n_name in %NicknameLineEdit.text.split(','): + nicknames.append(n_name.strip_edges()) + resource.nicknames = nicknames + resource.description = %DescriptionTextEdit.text + + return resource diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn new file mode 100644 index 0000000..5984286 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn @@ -0,0 +1,69 @@ +[gd_scene load_steps=2 format=3 uid="uid://bnkck3hocbkk5"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd" id="1_3e1i1"] + +[node name="General" type="GridContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 7.5 +offset_top = 38.5 +offset_right = -7.5 +offset_bottom = -7.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/h_separation = 1 +theme_override_constants/v_separation = 6 +columns = 2 +script = ExtResource("1_3e1i1") + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Display Name: " + +[node name="DisplayName" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="DisplayNameLineEdit" type="LineEdit" parent="DisplayName"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "This name will be displayed on the name label. You can use a dialogic variable. E.g. :{Player.name}" +expand_to_text_length = true +caret_blink = true +caret_blink_interval = 0.5 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="DisplayName"] +unique_name_in_owner = true +custom_minimum_size = Vector2(30, 0) +layout_mode = 2 +tooltip_text = "This color can be used on the name label and for occurences of the characters name in text (autocolor names)." +color = Color(1, 1, 1, 1) +edit_alpha = false + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Nicknames:" + +[node name="NicknameLineEdit" type="LineEdit" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "If autocolor names is enabled, these will be colored in the characters color as well." +caret_blink = true +caret_blink_interval = 0.5 + +[node name="Label4" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Description:" + +[node name="DescriptionTextEdit" type="TextEdit" parent="."] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 65) +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "No effect, just for you." +wrap_mode = 1 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd new file mode 100644 index 0000000..0905ed9 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd @@ -0,0 +1,66 @@ +@tool +extends DialogicCharacterEditorMainSection + +## The general portrait settings section +var loading := false + +func _ready() -> void: + # Connecting all necessary signals + %DefaultPortraitPicker.value_changed.connect(default_portrait_changed) + %MainScale.value_changed.connect(main_portrait_settings_update) + %MainOffset.value_changed.connect(main_portrait_settings_update) + %MainMirror.toggled.connect(main_portrait_settings_update) + + # Setting up Default Portrait Picker + %DefaultPortraitPicker.resource_icon = load("res://addons/dialogic/Editor/Images/Resources/portrait.svg") + %DefaultPortraitPicker.get_suggestions_func = suggest_portraits + + + +# Make sure preview get's updated when portrait settings change +func main_portrait_settings_update(_something=null, _value=null) -> void: + if loading: + return + character_editor.current_resource.scale = %MainScale.value/100.0 + character_editor.current_resource.offset = %MainOffset.current_value + character_editor.current_resource.mirror = %MainMirror.button_pressed + character_editor.update_preview() + character_editor.something_changed() + + +func default_portrait_changed(property:String, value:String) -> void: + character_editor.current_resource.default_portrait = value + character_editor.update_default_portrait_star(value) + + +func _load_character(resource:DialogicCharacter) -> void: + loading = true + %DefaultPortraitPicker.set_value(resource.default_portrait) + + %MainScale.value = 100*resource.scale + %MainOffset.set_value(resource.offset) + %MainMirror.button_pressed = resource.mirror + loading = false + +func _save_changes(resource:DialogicCharacter) -> DialogicCharacter: + # Portrait settings + if %DefaultPortraitPicker.current_value in resource.portraits.keys(): + resource.default_portrait = %DefaultPortraitPicker.current_value + elif !resource.portraits.is_empty(): + resource.default_portrait = resource.portraits.keys()[0] + else: + resource.default_portrait = "" + + resource.scale = %MainScale.value/100.0 + resource.offset = %MainOffset.current_value + resource.mirror = %MainMirror.button_pressed + return resource + + +# Get suggestions for DefaultPortraitPicker +func suggest_portraits(search:String) -> Dictionary: + var suggestions := {} + for portrait in character_editor.get_updated_portrait_dict().keys(): + suggestions[portrait] = {'value':portrait} + return suggestions + diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn new file mode 100644 index 0000000..a899bc1 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd" id="1_6sxsl"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn" id="2_birla"] +[ext_resource type="PackedScene" uid="uid://dtimnsj014cu" path="res://addons/dialogic/Editor/Events/Fields/Vector2.tscn" id="3_vcvin"] + +[node name="Portraits" type="GridContainer"] +offset_right = 453.0 +offset_bottom = 141.0 +theme_override_constants/h_separation = 1 +theme_override_constants/v_separation = 6 +columns = 2 +script = ExtResource("1_6sxsl") + +[node name="Label5" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Default:" + +[node name="DefaultPortraitPicker" parent="." instance=ExtResource("2_birla")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Select Default Portrait" +fit_text_length = false + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Main Scale:" + +[node name="MainScale" type="SpinBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +value = 100.0 +allow_greater = true +alignment = 1 +suffix = "%" + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Main Offset:" + +[node name="MainOffset" parent="." instance=ExtResource("3_vcvin")] +unique_name_in_owner = true +layout_mode = 2 +alignment = 2 + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Main Mirror:" + +[node name="MainMirror" type="CheckBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor.gd b/addons/dialogic/Editor/CharacterEditor/character_editor.gd new file mode 100644 index 0000000..9c81893 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor.gd @@ -0,0 +1,560 @@ +@tool +extends DialogicEditor + +## Editor for editing character resources. + +signal character_loaded(resource_path:String) +signal portrait_selected() + + +# Current state +var loading := false +var current_previewed_scene = null + +# References +var selected_item: TreeItem + +var def_portrait_path :String= DialogicUtil.get_module_path('Character').path_join('default_portrait.tscn') + +############################################################################## +## RESOURCE LOGIC +############################################################################## + +# Method is called once editors manager is ready to accept registers. +func _register() -> void: + # Makes the editor open this when a .dch file is selected. + # Then _open_resource() is called. + editors_manager.register_resource_editor("dch", self) + # Add an "add character" button + var add_character_button = editors_manager.add_icon_button( + load("res://addons/dialogic/Editor/Images/Toolbar/add-character.svg"), + 'Add Character', + self) + add_character_button.pressed.connect(_on_create_character_button_pressed) + add_character_button.shortcut = Shortcut.new() + add_character_button.shortcut.events.append(InputEventKey.new()) + add_character_button.shortcut.events[0].keycode = KEY_2 + add_character_button.shortcut.events[0].ctrl_pressed = true + $NoCharacterScreen.show() + + +func _get_title() -> String: + return "Character" + + +func _get_icon() -> Texture: + return load("res://addons/dialogic/Editor/Images/Resources/character.svg") + + +# Called when a character is opened somehow +func _open_resource(resource:Resource) -> void: + # update resource + current_resource = (resource as DialogicCharacter) + + # make sure changes in the ui won't trigger saving + loading = true + + ## Load other main tabs + for child in %MainSettingsSections.get_children(): + if child is DialogicCharacterEditorMainSection: + child._load_character(current_resource) + + + # Portrait section + %PortraitSearch.text = "" + load_portrait_tree() + + loading = false + character_loaded.emit(resource.resource_path) + + for character in editors_manager.resource_helper.character_directory.values(): + if character.resource == resource: + %CharacterName.text = character.unique_short_path + + $NoCharacterScreen.hide() + %PortraitChangeInfo.hide() + + +func _open(extra_info:Variant="") -> void: + %PortraitChangeInfo.hide() + + +func _save() -> void: + if ! visible or not current_resource: + return + + # Portrait list + current_resource.portraits = get_updated_portrait_dict() + + # Main tabs + for child in %MainSettingsSections.get_children(): + if child is DialogicCharacterEditorMainSection: + current_resource = child._save_changes(current_resource) + + ResourceSaver.save(current_resource, current_resource.resource_path) + current_resource_state = ResourceStates.SAVED + editors_manager.resource_helper.rebuild_character_directory() + + +# Saves a new empty character to the given path +func new_character(path: String) -> void: + var resource := DialogicCharacter.new() + resource.resource_path = path + resource.display_name = path.get_file().trim_suffix("."+path.get_extension()) + resource.color = Color(1,1,1,1) + resource.default_portrait = "" + resource.custom_info = {} + ResourceSaver.save(resource, path) + editors_manager.resource_helper.rebuild_character_directory() + editors_manager.edit_resource(resource) + + +############################################################################## +## INTERFACE +############################################################################## + +func _ready() -> void: + + $NoCharacterScreen.color = get_theme_color("dark_color_2", "Editor") + $NoCharacterScreen.show() + setup_portrait_list_tab() + + _on_fit_preview_toggle_toggled(DialogicUtil.get_editor_setting('character_preview_fit', true)) + %PreviewLabel.add_theme_color_override("font_color", get_theme_color("readonly_color", "Editor")) + + %PortraitChangeWarning.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + + %RealPreviewPivot.texture = get_theme_icon("EditorPivot", "EditorIcons") + + %MainSettingsCollapse.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + + await find_parent('EditorView').ready + + # Add general tabs + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn").instantiate(), %MainSettingsSections) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn").instantiate(), %MainSettingsSections) + + + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn").instantiate(), %PortraitSettingsSection) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn").instantiate(), %PortraitSettingsSection) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn").instantiate(), %PortraitSettingsSection) + + # Load custom sections from modules + for indexer in DialogicUtil.get_indexers(): + for path in indexer._get_character_editor_sections(): + var scene :Control = load(path).instantiate() + if scene is DialogicCharacterEditorMainSection: + add_settings_section(scene, %MainSettingsSections) + elif scene is DialogicCharacterEditorPortraitSection: + add_settings_section(scene, %PortraitSettingsSection) + + +func add_settings_section(edit:Control, parent:Node) -> void: + edit.changed.connect(something_changed) + edit.character_editor = self + if edit.has_signal('update_preview'): + edit.update_preview.connect(update_preview) + + var button := Button.new() + button.flat = true + button.theme_type_variation = "DialogicSection" + button.alignment = HORIZONTAL_ALIGNMENT_LEFT + button.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN + button.text = edit.name + button.icon_alignment = HORIZONTAL_ALIGNMENT_RIGHT + button.pressed.connect(_on_section_button_pressed.bind(button)) + button.focus_mode = Control.FOCUS_NONE + button.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + button.add_theme_color_override('icon_normal_color', get_theme_color("font_color", "DialogicSection")) + parent.add_child(button) + parent.add_child(edit) + parent.add_child(HSeparator.new()) + if !edit.name == "General": + _on_section_button_pressed(button) + + +func get_settings_section_by_name(name:String, main:=true) -> Node: + if main: + return %MainSettingsSections.get_node(name) + else: + return %PortraitSettingsSection.get_node(name) + + +func _on_section_button_pressed(button:Button) -> void: + if button.get_parent().get_child(button.get_index()+1).visible: + button.icon = get_theme_icon("CodeFoldedRightArrow", "EditorIcons") + button.get_parent().get_child(button.get_index()+1).visible = false + else: + button.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + button.get_parent().get_child(button.get_index()+1).visible = true + + if button.get_parent().get_child_count() > button.get_index()+2 and button.get_parent().get_child(button.get_index()+2) is Separator: + button.get_parent().get_child(button.get_index()+2).visible = button.get_parent().get_child(button.get_index()+1).visible + + +func something_changed(fake_argument = "", fake_arg2 = null) -> void: + if not loading: + current_resource_state = ResourceStates.UNSAVED + + + +############################################################################## +## PORTRAIT SECTION +############################################################################## + +func setup_portrait_list_tab() -> void: + %PortraitTree.editor = self + + ## Portrait section styling/connections + %AddPortraitButton.icon = get_theme_icon("Add", "EditorIcons") + %AddPortraitButton.pressed.connect(add_portrait) + %AddPortraitGroupButton.icon = load("res://addons/dialogic/Editor/Images/Pieces/add-folder.svg") + %AddPortraitGroupButton.pressed.connect(add_portrait_group) + %ImportPortraitsButton.icon = get_theme_icon("Load", "EditorIcons") + %ImportPortraitsButton.pressed.connect(open_portrait_folder_select) + %PortraitSearch.right_icon = get_theme_icon("Search", "EditorIcons") + %PortraitSearch.text_changed.connect(filter_portrait_list) + + %PortraitTree.item_selected.connect(load_selected_portrait) + %PortraitTree.item_edited.connect(_on_item_edited) + %PortraitTree.item_activated.connect(_on_item_activated) + + +func open_portrait_folder_select() -> void: + find_parent("EditorView").godot_file_dialog( + import_portraits_from_folder, "*", + EditorFileDialog.FILE_MODE_OPEN_DIR) + + +func import_portraits_from_folder(path:String) -> void: + var parent: TreeItem = %PortraitTree.get_root() + if %PortraitTree.get_selected() and %PortraitTree.get_selected().get_metadata(0).has('group'): + parent = %PortraitTree.get_selected() + + var dir := DirAccess.open(path) + dir.list_dir_begin() + var file_name :String = dir.get_next() + while file_name != "": + if not dir.current_is_dir(): + var file_lower = file_name.to_lower() + if '.svg' in file_lower or '.png' in file_lower: + if not '.import' in file_lower: + var final_name: String= path+ "/" + file_name + %PortraitTree.add_portrait_item(file_name.trim_suffix('.'+file_name.get_extension()), + {'scene':"",'image':final_name, 'scale':1, 'offset':Vector2(), 'mirror':false}, parent) + file_name = dir.get_next() + something_changed() + + +func add_portrait(portrait_name:String='New portrait', portrait_data:Dictionary={'scene':"", 'image':'', 'scale':1, 'offset':Vector2(), 'mirror':false}) -> void: + var parent: TreeItem = %PortraitTree.get_root() + if %PortraitTree.get_selected(): + if %PortraitTree.get_selected().get_metadata(0).has('group'): + parent = %PortraitTree.get_selected() + else: + parent = %PortraitTree.get_selected().get_parent() + var item :TreeItem = %PortraitTree.add_portrait_item(portrait_name, portrait_data, parent) + item.set_meta('new', true) + item.set_editable(0, true) + item.select(0) + %PortraitTree.call_deferred('edit_selected') + something_changed() + + +func add_portrait_group() -> void: + var parent_item :TreeItem = %PortraitTree.get_root() + if %PortraitTree.get_selected() and %PortraitTree.get_selected().get_metadata(0).has('group'): + parent_item = %PortraitTree.get_selected() + var item :TreeItem = %PortraitTree.add_portrait_group("Group", parent_item) + item.set_meta('new', true) + item.set_editable(0, true) + item.select(0) + %PortraitTree.call_deferred('edit_selected') + + +func load_portrait_tree() -> void: + %PortraitTree.clear_tree() + var root:TreeItem = %PortraitTree.create_item() + + for portrait in current_resource.portraits.keys(): + var portrait_label = portrait + var parent = %PortraitTree.get_root() + if '/' in portrait: + parent = %PortraitTree.create_necessary_group_items(portrait) + portrait_label = portrait.split('/')[-1] + + %PortraitTree.add_portrait_item(portrait_label, current_resource.portraits[portrait], parent) + + update_default_portrait_star(current_resource.default_portrait) + + if root.get_child_count(): + root.get_first_child().select(0) + while %PortraitTree.get_selected().get_child_count(): + %PortraitTree.get_selected().get_child(0).select(0) + else: + # Call anyways to clear preview and hide portrait settings section + load_selected_portrait() + + +func filter_portrait_list(filter_term:String = '') -> void: + filter_branch(%PortraitTree.get_root(), filter_term) + + +func filter_branch(parent:TreeItem, filter_term:String) -> bool: + var anything_visible := false + for item in parent.get_children(): + if item.get_metadata(0).has('group'): + item.visible = filter_branch(item, filter_term) + anything_visible = item.visible + elif filter_term.is_empty() or filter_term.to_lower() in item.get_text(0).to_lower(): + item.visible = true + anything_visible = true + else: + item.visible = false + return anything_visible + + +# this is used to save the portrait data +func get_updated_portrait_dict() -> Dictionary: + return list_portraits(%PortraitTree.get_root().get_children()) + + +func list_portraits(tree_items:Array[TreeItem], dict:Dictionary = {}, path_prefix = "") -> Dictionary: + for item in tree_items: + if item.get_metadata(0).has('group'): + dict = list_portraits(item.get_children(), dict, path_prefix+item.get_text(0)+"/") + else: + dict[path_prefix +item.get_text(0)] = item.get_metadata(0) + return dict + + +func load_selected_portrait(): + if selected_item and is_instance_valid(selected_item): + selected_item.set_editable(0, false) + + selected_item = %PortraitTree.get_selected() + + + if selected_item and selected_item.get_metadata(0) != null and !selected_item.get_metadata(0).has('group'): + %PortraitSettingsSection.show() + var current_portrait_data :Dictionary = selected_item.get_metadata(0) + portrait_selected.emit(%PortraitTree.get_full_item_name(selected_item), current_portrait_data) + + update_preview() + + for child in %PortraitSettingsSection.get_children(): + if child is DialogicCharacterEditorPortraitSection: + child.selected_item = selected_item + child._load_portrait_data(current_portrait_data) + + else: + %PortraitSettingsSection.hide() + update_preview() + +# if selected_item: +# await get_tree().create_timer(0.01).timeout +# selected_item.set_editable(0, true) + + +func delete_portrait_item(item:TreeItem) -> void: + if item.get_next_visible(true): + item.get_next_visible(true).select(0) + item.free() + something_changed() + + +func duplicate_item(item:TreeItem) -> void: + %PortraitTree.add_portrait_item(item.get_text(0)+'_duplicated', item.get_metadata(0).duplicate(true), item.get_parent()).select(0) + + +func _input(event:InputEvent) -> void: + if !is_visible_in_tree() or (get_viewport().gui_get_focus_owner()!= null and !name+'/' in str(get_viewport().gui_get_focus_owner().get_path())): + return + if event is InputEventKey and event.pressed: + if event.keycode == KEY_F2 and %PortraitTree.get_selected(): + %PortraitTree.get_selected().set_editable(0, true) + %PortraitTree.edit_selected() + get_viewport().set_input_as_handled() + elif event.keycode == KEY_DELETE and get_viewport().gui_get_focus_owner() is Tree and %PortraitTree.get_selected(): + delete_portrait_item(%PortraitTree.get_selected()) + get_viewport().set_input_as_handled() + +func _on_portrait_right_click_menu_index_pressed(id:int) -> void: + # RENAME BUTTON + if id == 0: + _on_item_activated() + # DELETE BUTTON + if id == 2: + delete_portrait_item(%PortraitTree.get_selected()) + # DUPLICATE ITEM + elif id == 1: + duplicate_item(%PortraitTree.get_selected()) + + +# this removes/and adds the DEFAULT star on the portrait list +func update_default_portrait_star(default_portrait_name:String) -> void: + var item_list : Array = %PortraitTree.get_root().get_children() + if item_list.is_empty() == false: + while true: + var item = item_list.pop_back() + if item.get_button_by_id(0, 2) != -1: + item.erase_button(0, item.get_button_by_id(0, 2)) + if %PortraitTree.get_full_item_name(item) == default_portrait_name: + item.add_button(0, get_theme_icon('Favorites', 'EditorIcons'), 2, true, 'Default') + item_list.append_array(item.get_children()) + if item_list.is_empty(): + break + + +func _on_item_edited(): + selected_item = %PortraitTree.get_selected() + something_changed() + if selected_item: + if %PreviewLabel.text.trim_prefix('Preview of "').trim_suffix('"') == current_resource.default_portrait: + current_resource.default_portrait = %PortraitTree.get_full_item_name(selected_item) + selected_item.set_editable(0, false) + + if !selected_item.has_meta('new') and %PortraitTree.get_full_item_name(selected_item) != selected_item.get_meta('previous_name'): + report_name_change(selected_item) + %PortraitChangeInfo.show() + update_preview() + + +func _on_item_activated(): + if %PortraitTree.get_selected() == null: + return + %PortraitTree.get_selected().set_editable(0, true) + %PortraitTree.edit_selected() + + +func report_name_change(item:TreeItem) -> void: + if item.get_metadata(0).has('group'): + for s_item in item.get_children(): + if s_item.get_metadata(0).has('group') or !s_item.has_meta('new'): + report_name_change(s_item) + else: + if item.get_meta('previous_name') == %PortraitTree.get_full_item_name(item): + return + editors_manager.reference_manager.add_portrait_ref_change( + item.get_meta('previous_name'), + %PortraitTree.get_full_item_name(item), + [editors_manager.resource_helper.get_character_short_path(current_resource)]) + item.set_meta('previous_name', %PortraitTree.get_full_item_name(item)) + %PortraitChangeInfo.show() + + +############################################################################## +## PREVIEW +############################################################################## + +func update_preview() -> void: + %ScenePreviewWarning.hide() + if selected_item and is_instance_valid(selected_item) and selected_item.get_metadata(0) != null and !selected_item.get_metadata(0).has('group'): + %PreviewLabel.text = 'Preview of "'+%PortraitTree.get_full_item_name(selected_item)+'"' + + var current_portrait_data: Dictionary = selected_item.get_metadata(0) + var mirror:bool = current_portrait_data.get('mirror', false) != current_resource.mirror + var scale:float = current_portrait_data.get('scale', 1) * current_resource.scale + if current_portrait_data.get('ignore_char_scale', false): + scale = current_portrait_data.get('scale', 1) + var offset:Vector2 =current_portrait_data.get('offset', Vector2()) + current_resource.offset + + if current_previewed_scene != null \ + and current_previewed_scene.get_meta('path', '') == current_portrait_data.get('scene') \ + and current_previewed_scene.has_method('_should_do_portrait_update') \ + and is_instance_valid(current_previewed_scene.get_script()) \ + and current_previewed_scene._should_do_portrait_update(current_resource, selected_item.get_text(0)): + pass # we keep the same scene + else: + for node in %RealPreviewPivot.get_children(): + node.queue_free() + current_previewed_scene = null + if current_portrait_data.get('scene', '').is_empty(): + if FileAccess.file_exists(def_portrait_path): + current_previewed_scene = load(def_portrait_path).instantiate() + current_previewed_scene.set_meta('path', '') + else: + if FileAccess.file_exists(current_portrait_data.get('scene')): + current_previewed_scene = load(current_portrait_data.get('scene')).instantiate() + current_previewed_scene.set_meta('path', current_portrait_data.get('scene')) + if current_previewed_scene: + %RealPreviewPivot.add_child(current_previewed_scene) + + if current_previewed_scene != null: + var scene = current_previewed_scene + scene.show_behind_parent = true + + for prop in current_portrait_data.get('export_overrides', {}).keys(): + scene.set(prop, str_to_var(current_portrait_data['export_overrides'][prop])) + + if is_instance_valid(scene.get_script()) and scene.script.is_tool(): + if scene.has_method('_update_portrait'): + scene._update_portrait(current_resource, %PortraitTree.get_full_item_name(selected_item)) + if scene.has_method('_set_mirror'): + scene._set_mirror(mirror) + if !%FitPreview_Toggle.button_pressed: + scene.position = Vector2() + offset + scene.scale = Vector2(1,1)*scale + else: + if is_instance_valid(scene.get_script()) and scene.script.is_tool() and scene.has_method('_get_covered_rect'): + var rect :Rect2= scene._get_covered_rect() + var available_rect:Rect2 = %FullPreviewAvailableRect.get_rect() + scene.scale = Vector2(1,1) * min(available_rect.size.x/rect.size.x, available_rect.size.y/rect.size.y) + %RealPreviewPivot.position = (rect.position)*-1*scene.scale + %RealPreviewPivot.position.x = %FullPreviewAvailableRect.size.x/2 + scene.position = Vector2() + else: + %ScenePreviewWarning.show() + else: + %PreviewLabel.text = 'Nothing to preview' + for child in %PortraitSettingsSection.get_children(): + if child is DialogicCharacterEditorPortraitSection: + child._recheck(current_portrait_data) + else: + %PreviewLabel.text = 'No portrait to preview.' + for node in %RealPreviewPivot.get_children(): + node.queue_free() + current_previewed_scene = null + + + +func _on_full_preview_available_rect_resized(): + if %FitPreview_Toggle.button_pressed: + update_preview() + + +func _on_create_character_button_pressed(): + editors_manager.show_add_resource_dialog( + new_character, + '*.dch; DialogicCharacter', + 'Create new character', + 'character', + ) + + +func _on_fit_preview_toggle_toggled(button_pressed): + %FitPreview_Toggle.set_pressed_no_signal(button_pressed) + if button_pressed: + %FitPreview_Toggle.icon = get_theme_icon("ScrollContainer", "EditorIcons") + %FitPreview_Toggle.tooltip_text = "Real scale" + else: + %FitPreview_Toggle.tooltip_text = "Fit into preview" + %FitPreview_Toggle.icon = get_theme_icon("CenterContainer", "EditorIcons") + DialogicUtil.set_editor_setting('character_preview_fit', button_pressed) + update_preview() + + +func _on_reference_manger_button_pressed(): + editors_manager.reference_manager.open() + + +func _on_main_settings_collapse_toggled(button_pressed): + %MainSettingsTitle.visible = !button_pressed + %MainSettingsScroll.visible = !button_pressed +# %MainHSplit.collapsed = button_pressed + if button_pressed: + %MainSettings.hide() + %MainSettingsCollapse.icon = get_theme_icon("GuiVisibilityHidden", "EditorIcons") + else: + %MainSettings.show() + %MainSettingsCollapse.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor.tscn b/addons/dialogic/Editor/CharacterEditor/character_editor.tscn new file mode 100644 index 0000000..4663c2e --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor.tscn @@ -0,0 +1,416 @@ +[gd_scene load_steps=9 format=3 uid="uid://dlskc36c5hrwv"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/character_editor.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_uhhqs"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd" id="2_vad0i"] +[ext_resource type="Texture2D" uid="uid://babwe22dqjta" path="res://addons/dialogic/Editor/Images/Pieces/add-folder.svg" id="3_v1qnr"] + +[sub_resource type="Image" id="Image_0tb86"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_6kogb"] +image = SubResource("Image_0tb86") + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_es2rd"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_4xgdx"] + +[node name="CharacterEditor" type="Control"] +self_modulate = Color(0, 0, 0, 1) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.3 +theme_override_constants/separation = 0 + +[node name="TopSection" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="NameContainer" type="HBoxContainer" parent="VBoxContainer/TopSection"] +layout_mode = 2 + +[node name="CharacterName" type="Label" parent="VBoxContainer/TopSection/NameContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicTitle" +text = "My Character" + +[node name="NameTooltip" parent="VBoxContainer/TopSection/NameContainer" instance=ExtResource("2_uhhqs")] +layout_mode = 2 +tooltip_text = "This name is determined from the file name. Use this name in timelines to reference this character." +texture = SubResource("ImageTexture_6kogb") +hint_text = "This name is determined from the file name. Use this name in timelines to reference this character." + +[node name="MainSettingsCollapse" type="Button" parent="VBoxContainer/TopSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +toggle_mode = true +text = "Main Settings" +icon = SubResource("ImageTexture_6kogb") + +[node name="MainHSplit" type="HSplitContainer" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MainSettings" type="VBoxContainer" parent="VBoxContainer/MainHSplit"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 + +[node name="MainSettingsTitle" type="Label" parent="VBoxContainer/MainHSplit/MainSettings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicSubTitle" +text = "Main Settings" + +[node name="MainSettingsScroll" type="ScrollContainer" parent="VBoxContainer/MainHSplit/MainSettings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_es2rd") +horizontal_scroll_mode = 0 + +[node name="MainSettingsSections" type="VBoxContainer" parent="VBoxContainer/MainHSplit/MainSettings/MainSettingsScroll"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Split" type="HSplitContainer" parent="VBoxContainer/MainHSplit"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MainHSplit/Split"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 +theme_override_constants/separation = 0 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainHSplit/Split/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 +theme_override_constants/margin_bottom = 10 + +[node name="PortraitListSection" type="PanelContainer" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="Portraits" type="VBoxContainer" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection"] +layout_mode = 2 + +[node name="PortraitsTitle" type="Label" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Portraits" + +[node name="PortraitListTools" type="HBoxContainer" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +layout_mode = 2 + +[node name="AddPortraitButton" type="Button" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Add portrait" +icon = SubResource("ImageTexture_6kogb") + +[node name="AddPortraitGroupButton" type="Button" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Add Group" +icon = ExtResource("3_v1qnr") + +[node name="ImportPortraitsButton" type="Button" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Import images from folder" +icon = SubResource("ImageTexture_6kogb") + +[node name="PortraitSearch" type="LineEdit" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +placeholder_text = "Search" +expand_to_text_length = true +clear_button_enabled = true +right_icon = SubResource("ImageTexture_6kogb") +caret_blink = true +caret_blink_interval = 0.5 + +[node name="PortraitTreePanel" type="PanelContainer" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_4xgdx") + +[node name="PortraitTree" type="Tree" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel"] +unique_name_in_owner = true +layout_mode = 2 +allow_rmb_select = true +hide_root = true +drop_mode_flags = 3 +script = ExtResource("2_vad0i") + +[node name="PortraitRightClickMenu" type="PopupMenu" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree"] +size = Vector2i(118, 100) +item_count = 3 +item_0/text = "Rename" +item_0/icon = SubResource("ImageTexture_6kogb") +item_0/id = 2 +item_1/text = "Duplicate" +item_1/icon = SubResource("ImageTexture_6kogb") +item_1/id = 0 +item_2/text = "Delete" +item_2/icon = SubResource("ImageTexture_6kogb") +item_2/id = 1 + +[node name="PortraitChangeInfo" type="HBoxContainer" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="PortraitChangeWarning" type="Label" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitChangeInfo"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "Some portraits were renamed. Make sure no references broke!" +autowrap_mode = 3 + +[node name="ReferenceMangerButton" type="Button" parent="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitChangeInfo"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +text = "Reference +Manager" + +[node name="RightSection" type="VBoxContainer" parent="VBoxContainer/MainHSplit/Split"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Spacer" type="Control" parent="VBoxContainer/MainHSplit/Split/RightSection"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 + +[node name="RightSection" type="VSplitContainer" parent="VBoxContainer/MainHSplit/Split/RightSection"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.5 + +[node name="PortraitPreviewSection" type="Panel" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection"] +unique_name_in_owner = true +show_behind_parent = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelB" + +[node name="ClipRect" type="Control" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection"] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Node2D" type="Node2D" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection/ClipRect"] +position = Vector2(13, 17) + +[node name="RealPreviewPivot" type="Sprite2D" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection/ClipRect/Node2D"] +unique_name_in_owner = true +position = Vector2(330, 405) +texture = SubResource("ImageTexture_6kogb") + +[node name="ScenePreviewWarning" type="Label" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -143.0 +offset_top = -44.5 +offset_right = 143.0 +offset_bottom = 85.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "Custom scenes can only be viewed in \"Full mode\" if they are in @tool mode and override _get_covered_rect" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 +metadata/_edit_layout_mode = 1 + +[node name="PreviewReal" type="CenterContainer" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -302.0 +offset_top = -80.0 +offset_right = 302.0 +grow_horizontal = 2 +grow_vertical = 0 +metadata/_edit_layout_mode = 1 + +[node name="Control" type="Control" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection/PreviewReal"] +layout_mode = 2 + +[node name="RealSizeRemotePivotTransform" type="RemoteTransform2D" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection/PreviewReal/Control"] +unique_name_in_owner = true +remote_path = NodePath("../../../ClipRect/Node2D/RealPreviewPivot") +update_position = false +update_rotation = false +update_scale = false + +[node name="FullPreviewAvailableRect" type="Control" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 10.0 +offset_top = 13.0 +offset_right = -10.0 +offset_bottom = -16.0 +grow_horizontal = 2 +grow_vertical = 2 +metadata/_edit_layout_mode = 1 + +[node name="PreviewLabel" type="Label" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +show_behind_parent = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = -1.0 +offset_top = -23.0 +offset_right = -1.0 +offset_bottom = 3.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "No portrait to preview." +horizontal_alignment = 2 +clip_text = true +text_overrun_behavior = 1 + +[node name="FitPreview_Toggle" type="Button" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -38.0 +offset_top = 8.0 +offset_right = -7.0 +offset_bottom = 39.0 +grow_horizontal = 0 +tooltip_text = "Real scale" +focus_mode = 0 +toggle_mode = true +button_pressed = true +icon = SubResource("ImageTexture_6kogb") +flat = true +metadata/_edit_layout_mode = 1 + +[node name="VBox" type="VBoxContainer" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection"] +layout_mode = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.4 + +[node name="Hbox" type="HBoxContainer" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/VBox"] +layout_mode = 2 + +[node name="PortraitSettingsTitle" type="Label" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/VBox/Hbox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Portrait Settings" + +[node name="Scroll" type="ScrollContainer" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/VBox"] +layout_mode = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.4 + +[node name="PortraitSettingsSection" type="VBoxContainer" parent="VBoxContainer/MainHSplit/Split/RightSection/RightSection/VBox/Scroll"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 + +[node name="NoCharacterScreen" type="ColorRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +color = Color(0, 0, 0, 1) + +[node name="CenterContainer" type="CenterContainer" parent="NoCharacterScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="NoCharacterScreen/CenterContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="NoCharacterScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "No character opened. +Create a character or double-click one in the file system dock." +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="CreateCharacterButton" type="Button" parent="NoCharacterScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "Create New Character" + +[connection signal="toggled" from="VBoxContainer/TopSection/MainSettingsCollapse" to="." method="_on_main_settings_collapse_toggled"] +[connection signal="item_mouse_selected" from="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree" to="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree" method="_on_item_mouse_selected"] +[connection signal="index_pressed" from="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree/PortraitRightClickMenu" to="." method="_on_portrait_right_click_menu_index_pressed"] +[connection signal="pressed" from="VBoxContainer/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitChangeInfo/ReferenceMangerButton" to="." method="_on_reference_manger_button_pressed"] +[connection signal="resized" from="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection/FullPreviewAvailableRect" to="." method="_on_full_preview_available_rect_resized"] +[connection signal="toggled" from="VBoxContainer/MainHSplit/Split/RightSection/RightSection/PortraitPreviewSection/FitPreview_Toggle" to="." method="_on_fit_preview_toggle_toggled"] +[connection signal="pressed" from="NoCharacterScreen/CenterContainer/VBoxContainer/CreateCharacterButton" to="." method="_on_create_character_button_pressed"] diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd b/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd new file mode 100644 index 0000000..238eedb --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd @@ -0,0 +1,20 @@ +@tool +class_name DialogicCharacterEditorMainSection +extends Control + +## Base class for all character editor main tabs. Methods should be overriden. + + +# Emit this, if something changed +signal changed + + +var character_editor:Control + + +func _load_character(resource:DialogicCharacter) -> void: + pass + + +func _save_changes(resource:DialogicCharacter) -> DialogicCharacter: + return resource diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd new file mode 100644 index 0000000..1e485bb --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd @@ -0,0 +1,19 @@ +@tool +class_name DialogicCharacterEditorPortraitSection +extends Control + +## Base class for all portrait settings tabs. Methods should be overriden. + +# Emit this, if something changed +signal changed +signal update_preview + +var character_editor:Control + +var selected_item :TreeItem = null + +func _load_portrait_data(data:Dictionary) -> void: + pass + +func _recheck(data:Dictionary) -> void: + pass diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd new file mode 100644 index 0000000..d9469d1 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd @@ -0,0 +1,138 @@ +@tool +extends Tree + +## Tree that displays the portrait list as a hirarchy + +var editor = find_parent('Character Editor') +var current_group_nodes := {} + + +func _ready() -> void: + $PortraitRightClickMenu.set_item_icon(0, get_theme_icon('Rename', 'EditorIcons')) + $PortraitRightClickMenu.set_item_icon(1, get_theme_icon('Duplicate', 'EditorIcons')) + $PortraitRightClickMenu.set_item_icon(2, get_theme_icon('Remove', 'EditorIcons')) + + +func clear_tree() -> void: + clear() + current_group_nodes = {} + + +func add_portrait_item(portrait_name:String, portrait_data:Dictionary, parent_item:TreeItem, previous_name:String = "") -> TreeItem: + var item :TreeItem = %PortraitTree.create_item(parent_item) + item.set_text(0, portrait_name) + item.set_metadata(0, portrait_data) + if previous_name.is_empty(): + item.set_meta('previous_name', get_full_item_name(item)) + else: + item.set_meta('previous_name', previous_name) + if portrait_name == editor.current_resource.default_portrait: + item.add_button(0, get_theme_icon('Favorites', 'EditorIcons'), 2, true, 'Default') + return item + + +func add_portrait_group(goup_name:String = "Group", parent_item:TreeItem = get_root(), previous_name:String = "") -> TreeItem: + var item :TreeItem = %PortraitTree.create_item(parent_item) + item.set_icon(0, get_theme_icon("Folder", "EditorIcons")) + item.set_text(0, goup_name) + item.set_metadata(0, {'group':true}) + if previous_name.is_empty(): + item.set_meta('previous_name', get_full_item_name(item)) + else: + item.set_meta('previous_name', previous_name) + return item + + +func get_full_item_name(item:TreeItem) -> String: + var item_name := item.get_text(0) + while item.get_parent() != get_root() and item != get_root(): + item_name = item.get_parent().get_text(0)+"/"+item_name + item = item.get_parent() + return item_name + + +# Will create all not yet existing folders in the given path. +# Returns the last folder (the parent of the portrait item of this path). +func create_necessary_group_items(path:String) -> TreeItem: + var last_item := get_root() + var item_path := "" + + for i in Array(path.split('/')).slice(0, -1): + item_path += "/"+i + item_path = item_path.trim_prefix('/') + if current_group_nodes.has(item_path+"/"+i): + last_item = current_group_nodes[item_path+"/"+i] + else: + var new_item:TreeItem = add_portrait_group(i, last_item) + current_group_nodes[item_path+"/"+i] = new_item + last_item = new_item + return last_item + + +func _on_item_mouse_selected(pos:Vector2, mouse_button_index:int) -> void: + if mouse_button_index == MOUSE_BUTTON_RIGHT: + $PortraitRightClickMenu.set_item_disabled(1, get_selected().get_metadata(0).has('group')) + $PortraitRightClickMenu.popup_on_parent(Rect2(get_global_mouse_position(),Vector2())) + + +################################################################################ +## DRAG AND DROP +################################################################################ + +func _get_drag_data(position:Vector2) -> Variant: + drop_mode_flags = DROP_MODE_INBETWEEN + var preview := Label.new() + preview.text = " "+get_selected().get_text(0) + preview.add_theme_stylebox_override('normal', get_theme_stylebox("Background", "EditorStyles")) + set_drag_preview(preview) + + return get_selected() + + +func _can_drop_data(position:Vector2, data:Variant) -> bool: + return data is TreeItem + + +func _drop_data(position:Vector2, item:Variant) -> void: + var to_item := get_item_at_position(position) + if to_item: + var test_item:= to_item + while true: + if test_item == item: + return + test_item = test_item.get_parent() + if test_item == get_root(): + break + + var drop_section := get_drop_section_at_position(position) + var parent := get_root() + if to_item: + parent = to_item.get_parent() + + if to_item and to_item.get_metadata(0).has('group') and drop_section == 1: + parent = to_item + + var new_item := copy_branch_or_item(item, parent) + + if to_item and !to_item.get_metadata(0).has('group') and drop_section == 1: + new_item.move_after(to_item) + + if drop_section == -1: + new_item.move_before(to_item) + + editor.report_name_change(new_item) + + item.free() + + +func copy_branch_or_item(item:TreeItem, new_parent:TreeItem) -> TreeItem: + var new_item :TreeItem = null + if item.get_metadata(0).has('group'): + new_item = add_portrait_group(item.get_text(0), new_parent, item.get_meta('previous_name')) + else: + new_item = add_portrait_item(item.get_text(0), item.get_metadata(0), new_parent, item.get_meta('previous_name')) + + for child in item.get_children(): + copy_branch_or_item(child, new_item) + return new_item + diff --git a/addons/dialogic/Editor/Common/DCSS.gd b/addons/dialogic/Editor/Common/DCSS.gd new file mode 100644 index 0000000..93e60f3 --- /dev/null +++ b/addons/dialogic/Editor/Common/DCSS.gd @@ -0,0 +1,60 @@ +@tool +class_name DCSS + +static func get_editor_scale() -> float: + return DialogicUtil.get_editor_scale() + +static func inline(style:Dictionary) -> StyleBoxFlat: + var scale:float = get_editor_scale() + var s := StyleBoxFlat.new() + for property in style.keys(): + match property: + 'border-left': + s.set('border_width_left', style[property] * scale) + 'border-radius': + var radius:float = style[property] * scale + s.set('corner_radius_top_left', radius) + s.set('corner_radius_top_right', radius) + s.set('corner_radius_bottom_left', radius) + s.set('corner_radius_bottom_right', radius) + 'background': + s.set('bg_color', style[property]) + 'border': + var width:float = style[property] * scale + s.set('border_width_left', width) + s.set('border_width_right', width) + s.set('border_width_top', width) + s.set('border_width_bottom', width) + 'border-color': + s.set('border_color', style[property]) + 'padding': + var value_v: float = 0.0 + var value_h: float = 0.0 + if style[property] is int: + value_v = style[property] * scale + value_h = value_v + else: + value_v = style[property][0] * scale + value_h = style[property][1] * scale + s.set('content_margin_top', value_v) + s.set('content_margin_bottom', value_v) + s.set('content_margin_left', value_h) + s.set('content_margin_right', value_h) + 'padding-right': + s.set('content_margin_right', style[property] * scale) + 'padding-left': + s.set('content_margin_left', style[property] * scale) + return s + +static func style(node, style:Dictionary) -> StyleBoxFlat: + var scale:float = get_editor_scale() + var s:StyleBoxFlat = inline(style) + + node.set('theme_override_styles/normal', s) + node.set('theme_override_styles/focus', s) + node.set('theme_override_styles/read_only', s) + node.set('theme_override_styles/hover', s) + node.set('theme_override_styles/pressed', s) + node.set('theme_override_styles/disabled', s) + node.set('theme_override_styles/panel', s) + return s diff --git a/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd b/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd new file mode 100644 index 0000000..f01da51 --- /dev/null +++ b/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd @@ -0,0 +1,137 @@ +@tool +extends PanelContainer + + +enum Modes {EDIT, ADD} + +var mode := Modes.EDIT +var item :TreeItem = null + + +func _ready() -> void: + hide() + get_parent().icon = get_theme_icon("Add", "EditorIcons") + get_parent().pressed.connect(_on_add_pressed) + var stl := get_theme_stylebox("PanelForeground", "EditorStyles").duplicate() + stl.set_content_margin_all(5) + stl.set_border_width_all(1) + stl.set_border_color(get_theme_color("accent_color", "Editor")) + add_theme_stylebox_override('panel',stl) + + %Character.resource_icon = load("res://addons/dialogic/Editor/Images/Resources/character.svg") + %Character.get_suggestions_func = get_character_suggestions + + +func _on_add_pressed() -> void: + if visible: + if mode == Modes.ADD: + hide() + return + elif mode == Modes.EDIT: + save() + + %AddButton.text = "Add" + mode = Modes.ADD + show() + %Type.selected = 0 + _on_type_item_selected(0) + %Where.selected = 2 + _on_where_item_selected(2) + %Old.text = "" + %New.text = "" + + _on_resized() + + +func open_existing(_item:TreeItem, info:Dictionary): + mode = Modes.EDIT + item = _item + show() + %AddButton.text = "Update" + %Type.selected = info.type + _on_type_item_selected(info.type) + if !info.character_names.is_empty(): + %Where.selected = 1 + %Character.set_value(info.character_names[0]) + else: + %Where.selected = 0 + _on_where_item_selected(%Where.selected) + + %Old.text = info.what + %New.text = info.forwhat + + _on_resized() + + +func _on_resized() -> void: + if !visible: + return + size = Vector2() + position = get_parent().get_global_transform().get_origin()-Vector2(1,0)*size.x+Vector2(0,1) *get_parent().size.y + + +func _on_type_item_selected(index:int) -> void: + match index: + 0: + %Where.select(0) + %Where.set_item_disabled(0, false) + %Where.set_item_disabled(1, false) + %Where.set_item_disabled(2, true) + 1: + %Where.select(0) + %Where.set_item_disabled(0, false) + %Where.set_item_disabled(1, false) + %Where.set_item_disabled(2, true) + 2: + %Where.select(1) + %Where.set_item_disabled(0, true) + %Where.set_item_disabled(1, false) + %Where.set_item_disabled(2, true) + 3,4: + %Where.select(0) + %Where.set_item_disabled(0, false) + %Where.set_item_disabled(1, true) + %Where.set_item_disabled(2, true) + %PureTextFlags.visible = index == 0 + _on_where_item_selected(%Where.selected) + + +func _on_where_item_selected(index:int) -> void: + %Character.visible = index == 1 + + +func get_character_suggestions(search_text:String) -> Dictionary: + var suggestions := {} + + #override the previous _character_directory with the meta, specifically for searching otherwise new nodes wont work + var _character_directory = Engine.get_main_loop().get_meta('dialogic_character_directory') + + var icon := load("res://addons/dialogic/Editor/Images/Resources/character.svg") + suggestions['(No one)'] = {'value':null, 'editor_icon':["GuiRadioUnchecked", "EditorIcons"]} + + for resource in _character_directory.keys(): + suggestions[resource] = { + 'value' : resource, + 'tooltip' : _character_directory[resource]['full_path'], + 'icon' : icon.duplicate()} + return suggestions + + +func save(): + if %Old.text.is_empty() or %New.text.is_empty(): + return + if %Where.selected == 1 and %Character.current_value == null: + return + + var previous := {} + if mode == Modes.EDIT: + previous = item.get_metadata(0) + item.get_parent() + item.free() + + var ref_manager := find_parent('ReferenceManager') + var character_names := [] + if %Character.current_value != null: + character_names = [%Character.current_value] + ref_manager.add_ref_change(%Old.text, %New.text, %Type.selected, %Where.selected, character_names, %WholeWords.button_pressed, %MatchCase.button_pressed, previous) + hide() diff --git a/addons/dialogic/Editor/Common/TitleBgStylebox.tres b/addons/dialogic/Editor/Common/TitleBgStylebox.tres new file mode 100644 index 0000000..f08bb2c --- /dev/null +++ b/addons/dialogic/Editor/Common/TitleBgStylebox.tres @@ -0,0 +1,8 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dmsjhgv22dns8"] + +[resource] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0.545098, 0.545098, 0.545098, 0.211765) diff --git a/addons/dialogic/Editor/Common/broken_reference_manager.tscn b/addons/dialogic/Editor/Common/broken_reference_manager.tscn new file mode 100644 index 0000000..efd22c5 --- /dev/null +++ b/addons/dialogic/Editor/Common/broken_reference_manager.tscn @@ -0,0 +1,289 @@ +[gd_scene load_steps=8 format=3 uid="uid://c7lmt5cp7bxcm"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Common/reference_manager.gd" id="1_3tomk"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd" id="2_vtwcs"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn" id="3_x5bo4"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hkp0w"] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(1, 1, 1, 1) + +[sub_resource type="Image" id="Image_bryma"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_lce2m"] +image = SubResource("Image_bryma") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_02ogm"] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0, 0, 0, 1) +corner_detail = 1 + +[node name="ReferenceManager" type="PanelContainer"] +self_modulate = Color(0, 0, 0, 1) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_hkp0w") +script = ExtResource("1_3tomk") + +[node name="VBoxContainer" type="VSplitContainer" parent="."] +layout_mode = 2 + +[node name="ChangeList" type="VBoxContainer" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="HBox2" type="HBoxContainer" parent="VBoxContainer/ChangeList"] +layout_mode = 2 + +[node name="Title" type="Label" parent="VBoxContainer/ChangeList/HBox2"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 16 +text = "Broken Reference Manager" + +[node name="TitleTooltip" type="TextureRect" parent="VBoxContainer/ChangeList/HBox2"] +unique_name_in_owner = true +modulate = Color(0, 0, 0, 1) +layout_mode = 2 +tooltip_text = "Because dialogics timelines are pure text files, it can often happen that +references (like variables, portraits, character names, etc.) break. + +This manager allows you to fix broken references by replacing them. + +Dialogic will automatically add items to this list, when you rename already +existing things. After such changes you should check if there are any +broken references." +texture = SubResource("ImageTexture_lce2m") +stretch_mode = 3 + +[node name="ChangesSection" type="PanelContainer" parent="VBoxContainer/ChangeList"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="VBox" type="VBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox"] +layout_mode = 2 + +[node name="SectionTitle" type="Label" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 16 +text = "Recent renames" + +[node name="AddButton" type="Button" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 10 +tooltip_text = "Add custom rename" + +[node name="ReplacementPanel" type="PanelContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton"] +unique_name_in_owner = true +visible = false +top_level = true +custom_minimum_size = Vector2(400, 0) +layout_mode = 0 +offset_left = -400.0 +offset_top = 24.0 +offset_bottom = 244.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_02ogm") +script = ExtResource("2_vtwcs") + +[node name="VBox" type="VBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel"] +layout_mode = 2 + +[node name="Title" type="Label" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"HeaderSmall" +text = "Custom Replacement" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox"] +layout_mode = 2 + +[node name="Old" type="LineEdit" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Old" + +[node name="Label2" type="Label" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer"] +layout_mode = 2 +text = "->" + +[node name="New" type="LineEdit" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "New" + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer3"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Type: " +horizontal_alignment = 2 + +[node name="Type" type="OptionButton" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer3"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "This decides the regexes for searching. Pure text allows you to enter your own regex into into \"Old\". " +item_count = 5 +selected = 0 +fit_to_longest_item = false +popup/item_0/text = "Pure Text" +popup/item_0/id = 0 +popup/item_1/text = "Variable" +popup/item_1/id = 1 +popup/item_2/text = "Portrait" +popup/item_2/id = 2 +popup/item_3/text = "Character (Ref)" +popup/item_3/id = 3 +popup/item_4/text = "Timeline (Ref)" +popup/item_4/id = 4 + +[node name="PureTextFlags" type="HBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +alignment = 2 + +[node name="MatchCase" type="CheckBox" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/PureTextFlags"] +unique_name_in_owner = true +layout_mode = 2 +button_pressed = true +text = "Match Case" + +[node name="WholeWords" type="CheckBox" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/PureTextFlags"] +unique_name_in_owner = true +layout_mode = 2 +text = "Whole Words" + +[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox"] +layout_mode = 2 + +[node name="Label4" type="Label" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer4"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Where: " +horizontal_alignment = 2 + +[node name="Where" type="OptionButton" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 3 +selected = 0 +fit_to_longest_item = false +popup/item_0/text = "Everywhere" +popup/item_0/id = 0 +popup/item_1/text = "Only for Character" +popup/item_1/id = 1 +popup/item_2/text = "Texts only" +popup/item_2/id = 2 + +[node name="Character" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer4" instance=ExtResource("3_x5bo4")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="AddButton" type="Button" parent="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Add/Save" + +[node name="ChangeTree" type="Tree" parent="VBoxContainer/ChangeList/ChangesSection/VBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/draw_relationship_lines = 1 +columns = 3 +hide_root = true + +[node name="CheckButton" type="Button" parent="VBoxContainer/ChangeList/ChangesSection/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +tooltip_text = "Search timelines for occurences of these renames" +text = "Check Selected" +icon = SubResource("ImageTexture_lce2m") + +[node name="ReplacementSection" type="PanelContainer" parent="VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +theme_type_variation = &"DialogicPanelA" + +[node name="FindList" type="VBoxContainer" parent="VBoxContainer/ReplacementSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="HBox" type="HBoxContainer" parent="VBoxContainer/ReplacementSection/FindList"] +layout_mode = 2 + +[node name="SectionTitle2" type="Label" parent="VBoxContainer/ReplacementSection/FindList/HBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 16 +text = "Found references" + +[node name="State" type="Label" parent="VBoxContainer/ReplacementSection/FindList/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 8 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "State" + +[node name="ReferenceTree" type="Tree" parent="VBoxContainer/ReplacementSection/FindList"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/draw_relationship_lines = 1 +columns = 2 +hide_root = true + +[node name="Replace" type="Button" parent="VBoxContainer/ReplacementSection/FindList"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +tooltip_text = "Replace all selected findings (Careful, no undo!)" +text = "Replace Selected" +icon = SubResource("ImageTexture_lce2m") + +[connection signal="resized" from="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel" to="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel" method="_on_resized"] +[connection signal="item_selected" from="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer3/Type" to="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel" method="_on_type_item_selected"] +[connection signal="item_selected" from="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/HBoxContainer4/Where" to="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel" method="_on_where_item_selected"] +[connection signal="pressed" from="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel/VBox/AddButton" to="VBoxContainer/ChangeList/ChangesSection/VBox/HBoxContainer/AddButton/ReplacementPanel" method="save"] +[connection signal="button_clicked" from="VBoxContainer/ChangeList/ChangesSection/VBox/ChangeTree" to="." method="_on_change_tree_button_clicked"] +[connection signal="item_edited" from="VBoxContainer/ChangeList/ChangesSection/VBox/ChangeTree" to="." method="_on_change_tree_item_edited"] +[connection signal="pressed" from="VBoxContainer/ChangeList/ChangesSection/VBox/CheckButton" to="." method="_on_check_button_pressed"] +[connection signal="pressed" from="VBoxContainer/ReplacementSection/FindList/Replace" to="." method="_on_replace_pressed"] diff --git a/addons/dialogic/Editor/Common/hint_tooltip_icon.gd b/addons/dialogic/Editor/Common/hint_tooltip_icon.gd new file mode 100644 index 0000000..940d2bd --- /dev/null +++ b/addons/dialogic/Editor/Common/hint_tooltip_icon.gd @@ -0,0 +1,9 @@ +@tool +extends TextureRect + +@export_multiline var hint_text = "" + +func _ready(): + texture = get_theme_icon("NodeInfo", "EditorIcons") + modulate = get_theme_color("readonly_color", "Editor") + tooltip_text = hint_text diff --git a/addons/dialogic/Editor/Common/hint_tooltip_icon.tscn b/addons/dialogic/Editor/Common/hint_tooltip_icon.tscn new file mode 100644 index 0000000..3ee10fb --- /dev/null +++ b/addons/dialogic/Editor/Common/hint_tooltip_icon.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=3 uid="uid://dbpkta2tjsqim"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.gd" id="1_x8t45"] + +[sub_resource type="Image" id="Image_eiyxd"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_lseut"] +image = SubResource("Image_eiyxd") + +[node name="HintTooltip" type="TextureRect"] +modulate = Color(0, 0, 0, 1) +texture = SubResource("ImageTexture_lseut") +stretch_mode = 3 +script = ExtResource("1_x8t45") diff --git a/addons/dialogic/Editor/Common/reference_manager.gd b/addons/dialogic/Editor/Common/reference_manager.gd new file mode 100644 index 0000000..49ae3dc --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager.gd @@ -0,0 +1,299 @@ +@tool +extends PanelContainer + +## This manager shows a list of changed references and allows searching for them and replacing them. + +var reference_changes :Array[Dictionary] = [] + + +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + %ReplacementSection.hide() + + %CheckButton.icon = get_theme_icon("Search", "EditorIcons") + %Replace.icon = get_theme_icon("ArrowRight", "EditorIcons") + %TitleTooltip.texture = get_theme_icon("NodeInfo", "EditorIcons") + %TitleTooltip.modulate = get_theme_color("readonly_color", "Editor") + + %State.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + + self_modulate = get_theme_color("background", "Editor") + + + %Title.add_theme_font_override("font", get_theme_font("title", "EditorFonts")) + %Title.add_theme_color_override("font_color", get_theme_color("accent_color", "Editor")) + %Title.add_theme_font_size_override("font_size", get_theme_font_size("doc_size", "EditorFonts")) + + + %SectionTitle.add_theme_font_override("font", get_theme_font("title", "EditorFonts")) + %SectionTitle.add_theme_font_size_override("font_size", get_theme_font_size("doc_size", "EditorFonts")) + + %SectionTitle2.add_theme_font_override("font", get_theme_font("title", "EditorFonts")) + %SectionTitle2.add_theme_font_size_override("font_size", get_theme_font_size("doc_size", "EditorFonts")) + + +func open() -> void: + show() + %ReplacementPanel.hide() + %ReplacementSection.hide() + %ChangeTree.clear() + %ChangeTree.create_item() + %ChangeTree.set_column_expand(0, false) + %ChangeTree.set_column_expand(2, false) + var categories := {null:%ChangeTree.get_root()} + for i in reference_changes: + var parent : TreeItem = null + if !i.get('category', null) in categories: + parent = %ChangeTree.create_item() + parent.set_text(1, i.category) + parent.set_custom_color(1, get_theme_color("disabled_font_color", "Editor")) + categories[i.category] = parent + else: + parent = categories[i.get('category')] + + var item :TreeItem = %ChangeTree.create_item(parent) + item.set_text(1, i.what+" -> "+i.forwhat) + item.add_button(1, get_theme_icon("Edit", "EditorIcons"), 1, false, 'Edit') + item.add_button(1, get_theme_icon("Remove", "EditorIcons"), 0, false, 'Remove Change from List') + item.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + item.set_checked(0, true) + item.set_editable(0, true) + item.set_metadata(0, i) + %CheckButton.disabled = reference_changes.is_empty() + + +func _on_change_tree_button_clicked(item:TreeItem, column:int, id:int, mouse_button_index:int) -> void: + if id == 0: + reference_changes.erase(item.get_metadata(0)) + if item.get_parent().get_child_count() == 1: + item.get_parent().free() + else: + item.free() + + %CheckButton.disabled = reference_changes.is_empty() + + if id == 1: + %ReplacementPanel.open_existing(item, item.get_metadata(0)) + + +func _on_change_tree_item_edited() -> void: + if !%ChangeTree.get_selected(): + return + %CheckButton.disabled = false + + +func _on_check_button_pressed() -> void: + var to_be_checked :Array[Dictionary]= [] + var item :TreeItem = %ChangeTree.get_root() + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + + if item.is_checked(0): + to_be_checked.append(item.get_metadata(0)) + to_be_checked[-1]['item'] = item + to_be_checked[-1]['count'] = 0 + + open_finder(to_be_checked) + %CheckButton.disabled = true + + +func open_finder(replacements:Array[Dictionary]) -> void: + %ReplacementSection.show() + var regexes : Array[Array] = [] + + for i in replacements: + if i.has('character_names') and !i.character_names.is_empty(): + i['character_regex'] = RegEx.create_from_string("(?m)^(Join|Update|Leave)?\\s*("+str(i.character_names).replace('"', '').replace(', ', '|').trim_suffix(']').trim_prefix('[').replace('/', '\\/')+")(?(1).*|.*:)") + + for regex_string in i.regex: + var regex := RegEx.create_from_string(regex_string) + regexes.append([regex, i]) + + var finds : Array[Dictionary] = [] + + for timeline_path in DialogicUtil.list_resources_of_type('.dtl'): + %State.text = "Loading '"+timeline_path+"'" + + var timeline_file := FileAccess.open(timeline_path, FileAccess.READ) + var timeline_text :String = timeline_file.get_as_text() + var timeline_events : PackedStringArray = timeline_text.split('\n') + timeline_file.close() + + for regex_info in regexes: + %State.text = "Searching '"+timeline_path+"' for "+regex_info[1].what+' -> '+regex_info[1].forwhat + for i in regex_info[0].search_all(timeline_text): + if regex_info[1].has('character_regex'): + if regex_info[1].character_regex.search(get_line(timeline_text, i.get_start()+1)) == null: + continue + + var line_number := timeline_text.count('\n', 0, i.get_start()+1)+1 + var line := timeline_text.get_slice('\n', line_number-1) + finds.append({ + 'match':i, + 'timeline':timeline_path, + 'info': regex_info[1], + 'line_number': line_number, + 'line': line, + 'line_start': timeline_text.rfind('\n', i.get_start()) + }) + regex_info[1]['count'] += 1 + + + for regex_info in regexes: + regex_info[1]['item'].set_text(2, str(regex_info[1]['count'])) + update_count_coloring() + + %State.text = str(len(finds))+ " occurrences found" + + %ReferenceTree.clear() + %ReferenceTree.set_column_expand(0, false) + %ReferenceTree.create_item() + + var timelines := {} + var height := 0 + for i in finds: + var parent : TreeItem = null + if !i.timeline in timelines: + parent = %ReferenceTree.create_item() + parent.set_text(1, i.timeline) + parent.set_custom_color(1, get_theme_color("disabled_font_color", "Editor")) + timelines[i.timeline] = parent + height += %ReferenceTree.get_item_area_rect(parent).size.y+10 + else: + parent = timelines[i.timeline] + + var item :TreeItem = %ReferenceTree.create_item(parent) + item.set_text(1, 'Line '+str(i.line_number)+': '+i.line) + item.set_tooltip_text(1, i.info.what+' -> '+i.info.forwhat) + item.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + item.set_checked(0, true) + item.set_editable(0, true) + item.set_metadata(0, i) + height += %ReferenceTree.get_item_area_rect(item).size.y+10 + var change_item :TreeItem = i.info.item + change_item.set_meta('found_items', change_item.get_meta('found_items', [])+[item]) + + + + %ReferenceTree.custom_minimum_size.y = min(height, 200) + + %ReferenceTree.visible = !finds.is_empty() + %Replace.disabled = finds.is_empty() + if finds.is_empty(): + %State.text = "Nothing found" + else: + %Replace.grab_focus() + + +func get_line(string:String, at_index:int) -> String: + return string.substr(max(string.rfind('\n', at_index), 0), string.find('\n', at_index)-string.rfind('\n', at_index)) + + +func update_count_coloring() -> void: + var item :TreeItem = %ChangeTree.get_root() + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + if int(item.get_text(2)) > 0: + item.set_custom_bg_color(1, get_theme_color("warning_color", "Editor").darkened(0.8)) + item.set_custom_color(1, get_theme_color("warning_color", "Editor")) + item.set_custom_color(2, get_theme_color("warning_color", "Editor")) + else: + item.set_custom_color(2, get_theme_color("success_color", "Editor")) + item.set_custom_color(1, get_theme_color("readonly_font_color", "Editor")) + if item.get_button_count(1): + item.erase_button(1, 1) + item.add_button(1, get_theme_icon("Eraser", "EditorIcons"), -1, true, "This reference was not found anywhere and will be removed from this list.") + + +func _on_replace_pressed() -> void: + var to_be_replaced :Array[Dictionary]= [] + var item :TreeItem = %ReferenceTree.get_root() + var affected_timelines :Array[String]= [] + + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + + if item.is_checked(0): + to_be_replaced.append(item.get_metadata(0)) + to_be_replaced[-1]['f_item'] = item + if !item.get_metadata(0).timeline in affected_timelines: + affected_timelines.append(item.get_metadata(0).timeline) + replace(affected_timelines, to_be_replaced) + + +func replace(timelines:Array[String], replacement_info:Array[Dictionary]) -> void: + var reopen_timeline := "" + var timeline_editor :DialogicEditor = find_parent('EditorView').editors_manager.editors['Timeline'].node + if timeline_editor.current_resource != null and timeline_editor.current_resource.resource_path in timelines: + reopen_timeline = timeline_editor.current_resource.resource_path + find_parent('EditorView').editors_manager.clear_editor(timeline_editor) + + replacement_info.sort_custom(func(a,b): return a.match.get_start() < b.match.get_start()) + + for timeline_path in timelines: + %State.text = "Loading '"+timeline_path+"'" + + var timeline_file := FileAccess.open(timeline_path, FileAccess.READ_WRITE) + var timeline_text :String = timeline_file.get_as_text() + var timeline_events := timeline_text.split('\n') + timeline_file.close() + + var idx := 1 + var offset_correction := 0 + for replacement in replacement_info: + if replacement.timeline != timeline_path: + continue + + %State.text = "Replacing in '"+timeline_path + "' ("+str(idx)+"/"+str(len(replacement_info))+")" + var group := 'replace' + if not 'replace' in replacement.match.names: + group = '' + + + timeline_text = timeline_text.substr(0, replacement.match.get_start(group) + offset_correction) + \ + replacement.info.regex_replacement + \ + timeline_text.substr(replacement.match.get_end(group) + offset_correction) + offset_correction += len(replacement.info.regex_replacement)-len(replacement.match.get_string(group)) + + replacement.info.count -= 1 + replacement.info.item.set_text(2, str(replacement.info.count)) + replacement.f_item.set_custom_bg_color(1, get_theme_color("success_color", "Editor").darkened(0.8)) + + timeline_file = FileAccess.open(timeline_path, FileAccess.WRITE) + timeline_file.store_string(timeline_text.strip_edges(false, true)) + timeline_file.close() + + if ResourceLoader.has_cached(timeline_path): + var tml := load(timeline_path) + tml.from_text(timeline_text) + + if !reopen_timeline.is_empty(): + find_parent('EditorView').editors_manager.edit_resource(load(reopen_timeline), false, true) + + update_count_coloring() + + %Replace.disabled = true + %CheckButton.disabled = false + %State.text = "Done Replacing" + + +func close() -> void: + var item :TreeItem = %ChangeTree.get_root() + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + if item.get_text(2) != "" and int(item.get_text(2)) == 0: + reference_changes.erase(item.get_metadata(0)) + diff --git a/addons/dialogic/Editor/Common/reference_manager_window.gd b/addons/dialogic/Editor/Common/reference_manager_window.gd new file mode 100644 index 0000000..660d17f --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager_window.gd @@ -0,0 +1,169 @@ +@tool +extends Window + +## This window manages communication with the replacement manager it contains. +## Other scripts can call the add_ref_change() method to register changes directly +## or use the helpers add_variable_ref_change() and add_portrait_ref_change() + +@onready var editors_manager := get_node("../Margin/EditorsManager") + +enum Where {EVERYWHERE, BY_CHARACTER, TEXTS_ONLY} +enum Types {TEXT, VARIABLE, PORTRAIT, CHARACTER_NAME, TIMELINE_NAME} + +var icon_button :Button = null + + +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + icon_button = editors_manager.add_icon_button(get_theme_icon("Unlinked", "EditorIcons"), 'Manage Broken References') + icon_button.pressed.connect(open) + + var dot := Sprite2D.new() + dot.texture = get_theme_icon("GuiGraphNodePort", "EditorIcons") + dot.scale = Vector2(0.8, 0.8) + dot.z_index = 10 + dot.position = Vector2(icon_button.size.x*0.8, icon_button.size.x*0.2) + dot.modulate = get_theme_color("warning_color", "Editor").lightened(0.5) + + icon_button.add_child(dot) + + var old_changes :Array = DialogicUtil.get_editor_setting('reference_changes', []) + if !old_changes.is_empty(): + $Manager.reference_changes = old_changes + + update_indicator() + + hide() + + get_parent().plugin_reference.get_editor_interface().get_file_system_dock().files_moved.connect(_on_file_moved) + get_parent().get_node('ResourceRenameWarning').confirmed.connect(open) + + +func add_ref_change(old_name:String, new_name:String, type:Types, where:=Where.TEXTS_ONLY, character_names:=[], + whole_words:=false, case_sensitive:=false, previous:Dictionary = {}) -> void: + var regexes := [] + var category_name := "" + match type: + Types.TEXT: + category_name = "Texts" + regexes = ['(?'+old_name.replace('/', '\\/')+')'] + if !case_sensitive: + regexes[0] = '(?i)'+regexes[0] + if whole_words: + regexes = ['\\b'+regexes[0]+'\\b'] + + Types.VARIABLE: + regexes = ['{(?\\s*'+old_name.replace('/', '\\/')+'\\s*)}', 'var\\s*=\\s*"(?\\s*'+old_name.replace('/', '\\/')+'\\s*)"'] + category_name = "Variables" + + Types.PORTRAIT: + regexes = ['(?m)^[^:(]*\\((?'+old_name.replace('/', '\\/')+')\\)', '\\[\\s*portrait\\s*=(?\\s*'+old_name.replace('/', '\\/')+'\\s*)\\]'] + category_name = "Portraits by "+character_names[0] + + Types.CHARACTER_NAME: + # for reference: ((Join|Leave|Update) )?(?NAME)(?!\B)(?(1)|(?!([^:\n]|\\:)*(\n|$))) + regexes = ['((Join|Leave|Update) )?(?'+old_name+')(?!\\B)(?(1)|(?!([^:\\n]|\\\\:)*(\\n|$)))'] + category_name = "Renamed Character Files" + + Types.TIMELINE_NAME: + regexes = ['timeline ?= ?" ?(?'+old_name+') ?"'] + category_name = "Renamed Timeline Files" + + if where != Where.BY_CHARACTER: + character_names = [] + + # previous is only given when an existing item is edited + # in that case the old one is removed first + var idx := len($Manager.reference_changes) + if previous in $Manager.reference_changes: + idx = $Manager.reference_changes.find(previous) + $Manager.reference_changes.erase(previous) + + if _check_for_ref_change_cycle(old_name, new_name, category_name): + update_indicator() + return + + $Manager.reference_changes.insert(idx, + {'what':old_name, + 'forwhat':new_name, + 'regex': regexes, + 'regex_replacement':new_name, + 'category':category_name, + 'character_names':character_names, + 'texts_only':where == Where.TEXTS_ONLY, + 'type':type + }) + + update_indicator() + + if visible: + $Manager.open() + + +## Checks for reference cycles or chains. +## E.g. if you first rename a portrait from "happy" to "happy1" and then to "Happy/happy1" +## This will make sure only a change "happy" -> "Happy/happy1" is remembered +## This is very important for correct replacement +func _check_for_ref_change_cycle(old_name:String, new_name:String, category:String) -> bool: + for ref in $Manager.reference_changes: + if ref['forwhat'] == old_name and ref['category'] == category: + if new_name == ref['what']: + $Manager.reference_changes.erase(ref) + else: + $Manager.reference_changes[$Manager.reference_changes.find(ref)]['forwhat'] = new_name + $Manager.reference_changes[$Manager.reference_changes.find(ref)]['regex_replacement'] = new_name + return true + return false + + +## Helper for adding variable ref changes +func add_variable_ref_change(old_name:String, new_name:String) -> void: + add_ref_change(old_name, new_name, Types.VARIABLE, Where.EVERYWHERE) + + +## Helper for adding portrait ref changes +func add_portrait_ref_change(old_name:String, new_name:String, character_names:PackedStringArray) -> void: + add_ref_change(old_name, new_name, Types.PORTRAIT, Where.BY_CHARACTER, character_names) + + +## Helper for adding character name ref changes +func add_character_name_ref_change(old_name:String, new_name:String) -> void: + add_ref_change(old_name, new_name, Types.CHARACTER_NAME, Where.EVERYWHERE) + + +## Helper for adding timeline name ref changes +func add_timeline_name_ref_change(old_name:String, new_name:String) -> void: + add_ref_change(old_name, new_name, Types.TIMELINE_NAME, Where.EVERYWHERE) + + +func open() -> void: + popup_centered_ratio(0.5) + move_to_foreground() + grab_focus() + $Manager.open() + + +func _on_close_requested() -> void: + hide() + $Manager.close() + update_indicator() + + +func update_indicator() -> void: + icon_button.get_child(0).visible = !$Manager.reference_changes.is_empty() + for i in $Manager.reference_changes: + i.item = null + DialogicUtil.set_editor_setting('reference_changes', $Manager.reference_changes) + + +## FILE MOVEMENT: +func _on_file_moved(old_file:String, new_file:String) -> void: + if old_file.ends_with('.dch') and new_file.ends_with('.dch'): + if old_file.get_file() != new_file.get_file(): + add_character_name_ref_change(old_file.get_file().trim_suffix('.dch'), new_file.get_file().trim_suffix('.dch')) + get_parent().get_node('ResourceRenameWarning').popup_centered() + elif old_file.ends_with('.dtl') and new_file.ends_with('.dtl'): + if old_file.get_file() != new_file.get_file(): + add_timeline_name_ref_change(old_file.get_file().trim_suffix('.dtl'), new_file.get_file().trim_suffix('.dtl')) + get_parent().get_node('ResourceRenameWarning').popup_centered() diff --git a/addons/dialogic/Editor/Common/side_bar.tscn b/addons/dialogic/Editor/Common/side_bar.tscn new file mode 100644 index 0000000..ac2934c --- /dev/null +++ b/addons/dialogic/Editor/Common/side_bar.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=5 format=3 uid="uid://cwe3r2tbh2og1"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Common/sidebar.gd" id="1_jnq65"] + +[sub_resource type="Theme" id="Theme_pn0f4"] +VBoxContainer/constants/separation = 4 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_gxwm6"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_n8rql"] + +[node name="SideBar" type="VSplitContainer"] +custom_minimum_size = Vector2(100, 130) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("Theme_pn0f4") +split_offset = 100 +script = ExtResource("1_jnq65") + +[node name="VBox" type="VBoxContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Margin" type="MarginContainer" parent="VBox"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_bottom = 5 + +[node name="VSplitContainer" type="VSplitContainer" parent="VBox/Margin"] +layout_mode = 2 + +[node name="VBox" type="VBoxContainer" parent="VBox/Margin/VSplitContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Logo" type="TextureRect" parent="VBox/Margin/VSplitContainer/VBox"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.623529) +texture_filter = 6 +custom_minimum_size = Vector2(0, 25) +layout_mode = 2 +expand_mode = 3 +stretch_mode = 4 + +[node name="CurrentResource" type="Label" parent="VBox/Margin/VSplitContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "No resource" +horizontal_alignment = 1 +vertical_alignment = 1 +text_overrun_behavior = 1 + +[node name="Search" type="LineEdit" parent="VBox/Margin/VSplitContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +placeholder_text = "Filter Resources" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="ResourcesList" type="ItemList" parent="VBox/Margin/VSplitContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +same_column_width = true + +[node name="ContentListSection" type="VBoxContainer" parent="VBox/Margin/VSplitContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ContentList" type="ItemList" parent="VBox/Margin/VSplitContainer/ContentListSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/selected = SubResource("StyleBoxEmpty_gxwm6") +theme_override_styles/selected_focus = SubResource("StyleBoxEmpty_n8rql") +allow_reselect = true +same_column_width = true + +[node name="CurrentVersion" type="Label" parent="VBox"] +unique_name_in_owner = true +layout_mode = 2 +clip_text = true + +[connection signal="gui_input" from="VBox/Margin/VSplitContainer/VBox/Logo" to="." method="_on_logo_gui_input"] +[connection signal="text_changed" from="VBox/Margin/VSplitContainer/VBox/Search" to="." method="_on_search_text_changed"] diff --git a/addons/dialogic/Editor/Common/sidebar.gd b/addons/dialogic/Editor/Common/sidebar.gd new file mode 100644 index 0000000..eaa5385 --- /dev/null +++ b/addons/dialogic/Editor/Common/sidebar.gd @@ -0,0 +1,154 @@ +@tool +extends Control + +## Script that handles the editor sidebar. + +signal file_activated(file_path) + +signal content_item_activated(item_name) + +@onready var editors_manager = get_parent().get_parent() + + +func _ready(): + if owner.get_parent() is SubViewport: + return + + ## CONNECTIONS + %ResourcesList.item_selected.connect(_on_resources_list_item_selected) + %ResourcesList.item_clicked.connect(_on_resources_list_item_clicked) + editors_manager.resource_opened.connect(_on_editors_resource_opened) + editors_manager.editor_changed.connect(_on_editors_editor_changed) + + %ContentList.item_selected.connect(func (idx:int): content_item_activated.emit(%ContentList.get_item_text(idx))) + + var editor_scale := DialogicUtil.get_editor_scale() + ## ICONS + %Logo.texture = load("res://addons/dialogic/Editor/Images/dialogic-logo.svg") + %Logo.custom_minimum_size.y = 30*editor_scale + %Search.right_icon = get_theme_icon("Search", "EditorIcons") + + %CurrentResource.add_theme_stylebox_override('normal', get_theme_stylebox('normal', 'LineEdit')) + + %ContentList.add_theme_color_override("font_hovered_color", get_theme_color("warning_color", "Editor")) + %ContentList.add_theme_color_override("font_selected_color", get_theme_color("property_color_z", "Editor")) + + ## MARGINS + $VBox/Margin.set("theme_override_constants/margin_left", 4 * editor_scale) + $VBox/Margin.set("theme_override_constants/margin_bottom", 4 * editor_scale) + + ## VERSION LABEL + var plugin_cfg := ConfigFile.new() + plugin_cfg.load("res://addons/dialogic/plugin.cfg") + %CurrentVersion.text = plugin_cfg.get_value('plugin', 'version', 'unknown version') + + + + +################################################################################ +## RESOURCE LIST +################################################################################ + +func _on_editors_resource_opened(resource:Resource) -> void: + update_resource_list() + + +func _on_editors_editor_changed(previous:DialogicEditor, current:DialogicEditor) -> void: + %ContentListSection.visible = current.current_resource is DialogicTimeline + update_resource_list() + + +func update_resource_list(resources_list:PackedStringArray = []) -> void: + var filter :String = %Search.text + var current_file := "" + if editors_manager.current_editor and editors_manager.current_editor.current_resource: + current_file = editors_manager.current_editor.current_resource.resource_path + + var character_directory: Dictionary = editors_manager.resource_helper.character_directory + var timeline_directory: Dictionary = editors_manager.resource_helper.timeline_directory + if resources_list.is_empty(): + resources_list = DialogicUtil.get_editor_setting('last_resources', []) + if !current_file in resources_list: + resources_list.append(current_file) + + %CurrentResource.text = "No Resource" + %CurrentResource.add_theme_color_override("font_color", get_theme_color("disabled_font_color", "Editor")) + + %ResourcesList.clear() + var idx := 0 + for character in character_directory.values(): + if character['full_path'] in resources_list: + if filter.is_empty() or filter.to_lower() in character['unique_short_path'].to_lower(): + %ResourcesList.add_item( + character['unique_short_path'], + load("res://addons/dialogic/Editor/Images/Resources/character.svg")) + %ResourcesList.set_item_metadata(idx, character['full_path']) + %ResourcesList.set_item_tooltip(idx, character['full_path']) + if character['full_path'] == current_file: + %ResourcesList.select(idx) + %ResourcesList.set_item_custom_fg_color(idx, get_theme_color("accent_color", "Editor")) + %CurrentResource.text = character['unique_short_path']+'.dch' + idx += 1 + for timeline_name in timeline_directory: + if timeline_directory[timeline_name] in resources_list: + if filter.is_empty() or filter.to_lower() in timeline_name.to_lower(): + %ResourcesList.add_item(timeline_name, get_theme_icon("TripleBar", "EditorIcons")) + %ResourcesList.set_item_metadata(idx, timeline_directory[timeline_name]) + if timeline_directory[timeline_name] == current_file: + %ResourcesList.select(idx) + %ResourcesList.set_item_custom_fg_color(idx, get_theme_color("accent_color", "Editor")) + %CurrentResource.text = timeline_name+'.dtl' + idx += 1 + if %CurrentResource.text != "No Resource": + %CurrentResource.add_theme_color_override("font_color", get_theme_color("font_color", "Editor")) + %ResourcesList.sort_items_by_text() + DialogicUtil.set_editor_setting('last_resources', resources_list) + + +func _on_resources_list_item_selected(index:int) -> void: + if %ResourcesList.get_item_metadata(index) == null: + return + editors_manager.edit_resource(load(%ResourcesList.get_item_metadata(index))) + + +func _on_resources_list_item_clicked(index: int, at_position: Vector2, mouse_button_index: int) -> void: + # If clicked with the middle mouse button, remove the item from the list + if mouse_button_index == 3: + var new_list := [] + for entry in DialogicUtil.get_editor_setting('last_resources', []): + if entry != %ResourcesList.get_item_metadata(index): + new_list.append(entry) + DialogicUtil.set_editor_setting('last_resources', new_list) + %ResourcesList.remove_item(index) + + +func _on_search_text_changed(new_text:String) -> void: + update_resource_list() + + +func set_unsaved_indicator(saved:bool = true) -> void: + if saved and %CurrentResource.text.ends_with('(*)'): + %CurrentResource.text = %CurrentResource.text.trim_suffix('(*)') + if not saved and not %CurrentResource.text.ends_with('(*)'): + %CurrentResource.text = %CurrentResource.text+"(*)" + + +func _on_logo_gui_input(event:InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + editors_manager.open_editor(editors_manager.editors['HomePage'].node) + + +func update_content_list(list:PackedStringArray) -> void: + %ContentList.clear() + %ContentList.add_item('~ Top') + for i in list: + if i.is_empty(): continue + %ContentList.add_item(i) + if list.is_empty(): + return + + for i in editors_manager.resource_helper.timeline_directory: + if editors_manager.resource_helper.timeline_directory[i] == editors_manager.get_current_editor().current_resource.resource_path: + editors_manager.resource_helper.label_directory[i] = list + editors_manager.resource_helper.label_directory[''] = list + DialogicUtil.set_editor_setting('label_ref', editors_manager.resource_helper.label_directory) diff --git a/addons/dialogic/Editor/Common/toolbar.gd b/addons/dialogic/Editor/Common/toolbar.gd new file mode 100644 index 0000000..1921802 --- /dev/null +++ b/addons/dialogic/Editor/Common/toolbar.gd @@ -0,0 +1,50 @@ +@tool +extends HBoxContainer + +# Dialogic Editor toolbar. Works together with editors_mangager. + +################################################################################ +## EDITOR BUTTONS/LABELS +################################################################################ +func _ready(): + if owner.get_parent() is SubViewport: + return + var editor_scale := DialogicUtil.get_editor_scale() + %CustomButtons.custom_minimum_size.y = 33*editor_scale + + for child in get_children(): + if child is Button: + child.queue_free() + + +func add_icon_button(icon: Texture, tooltip: String) -> Button: + var button := Button.new() + button.icon = icon + button.tooltip_text = tooltip + button.flat = true + button.size_flags_vertical = Control.SIZE_SHRINK_BEGIN + button.add_theme_color_override('icon_hover_color', get_theme_color('warning_color', 'Editor')) + button.add_theme_stylebox_override('focus', StyleBoxEmpty.new()) + add_child(button) + move_child(button, -2) + return button + + +func add_custom_button(label:String, icon:Texture) -> Button: + var button := Button.new() + button.text = label + button.icon = icon +# button.flat = true + + button.size_flags_vertical = Control.SIZE_SHRINK_BEGIN + %CustomButtons.add_child(button) +# custom_minimum_size.y = button.size.y + return button + + +func hide_all_custom_buttons() -> void: + for button in %CustomButtons.get_children(): + button.hide() + + + diff --git a/addons/dialogic/Editor/Events/BranchEnd.gd b/addons/dialogic/Editor/Events/BranchEnd.gd new file mode 100644 index 0000000..75ede9b --- /dev/null +++ b/addons/dialogic/Editor/Events/BranchEnd.gd @@ -0,0 +1,75 @@ +@tool +extends Control +## A scene shown at the end of events that contain other events + +var resource : DialogicEndBranchEvent + +# References +var parent_node : Control = null +var end_control :Control = null + +# Indent +var indent_size := 15 +var current_indent_level := 1 + +func _ready() -> void: + $Icon.icon = get_theme_icon("GuiSpinboxUpdown", "EditorIcons") + $Spacer.custom_minimum_size.x = 100*DialogicUtil.get_editor_scale() + visual_deselect() + parent_node_changed() + + +## Called by the visual timeline editor +func visual_select() -> void: + modulate = get_theme_color("highlighted_font_color", "Editor") + + +## Called by the visual timeline editor +func visual_deselect() -> void: + modulate = parent_node.resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.3) + + +## Called by the visual timeline editor +func highlight() -> void: + modulate = parent_node.resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.6) + + +## Called by the visual timeline editor +func unhighlight() -> void: + modulate = parent_node.resource.event_color + + +func update_hidden_events_indicator(hidden_events_count:int = 0) -> void: + $HiddenEventsLabel.visible = hidden_events_count > 0 + if hidden_events_count == 1: + $HiddenEventsLabel.text = "[1 event hidden]" + else: + $HiddenEventsLabel.text = "["+str(hidden_events_count)+ " events hidden]" + + +## Called by the visual timeline editor +func set_indent(indent: int) -> void: + $Indent.custom_minimum_size = Vector2(indent_size * indent, 0) + $Indent.visible = indent != 0 + current_indent_level = indent + queue_redraw() + + +## Called by the visual timeline editor if something was edited on the parent event block +func parent_node_changed() -> void: + if parent_node and end_control and end_control.has_method('refresh'): + end_control.refresh() + + +## Called on creation if the parent event provides an end control +func add_end_control(control:Control) -> void: + if !control: + return + add_child(control) + control.size_flags_vertical = SIZE_SHRINK_CENTER + if "parent_resource" in control: + control.parent_resource = parent_node.resource + if control.has_method('refresh'): + control.refresh() + end_control = control + diff --git a/addons/dialogic/Editor/Events/BranchEnd.tscn b/addons/dialogic/Editor/Events/BranchEnd.tscn new file mode 100644 index 0000000..e90f8fc --- /dev/null +++ b/addons/dialogic/Editor/Events/BranchEnd.tscn @@ -0,0 +1,49 @@ +[gd_scene load_steps=4 format=3 uid="uid://de13fdeebrkcb"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/BranchEnd.gd" id="1"] + +[sub_resource type="Image" id="Image_8tlok"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 93, 93, 55, 255, 97, 97, 58, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_vm1jl"] +image = SubResource("Image_8tlok") + +[node name="EndBranch" type="HBoxContainer"] +custom_minimum_size = Vector2(0, 40) +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 40.0 +grow_horizontal = 2 +mouse_filter = 0 +script = ExtResource("1") + +[node name="Indent" type="Control" parent="."] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Spacer" type="Control" parent="."] +custom_minimum_size = Vector2(75, 0) +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Icon" type="Button" parent="."] +unique_name_in_owner = true +custom_minimum_size = Vector2(20, 0) +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Click and drag" +focus_mode = 0 +mouse_filter = 1 +icon = SubResource("ImageTexture_vm1jl") +flat = true + +[node name="HiddenEventsLabel" type="Label" parent="."] +visible = false +layout_mode = 2 +text = "XX Events hidden" diff --git a/addons/dialogic/Editor/Events/EventBlock/event_block.gd b/addons/dialogic/Editor/Events/EventBlock/event_block.gd new file mode 100644 index 0000000..c6011ad --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_block.gd @@ -0,0 +1,437 @@ +@tool +extends MarginContainer + +## Scene that represents an event in the visual timeline editor. + +signal option_action(action_name) +signal content_changed() + +# Resource +var resource : DialogicEvent + +var selected : bool = false + +### internal node eferences +@onready var warning := %Warning +@onready var icon_texture := %IconTexture +@onready var header_content_container := %HeaderContent +@onready var body_container := %Body +@onready var body_content_container := %BodyContent + +# is the body visible +var expanded := true + +# was the body content loaded +var body_was_build := false + +# does the body have elements? +var has_any_enabled_body_content := false + +# list that stores visibility conditions +var field_list := [] + +# for choice and condition +var end_node:Node = null: + get: + return end_node + set(node): + end_node = node + %CollapseButton.visible = true if end_node else false + +var collapsed := false + +### extarnal node references +var editor_reference + +### Icon size +var icon_size := 28 + +### the indent size +var indent_size := 22 +var current_indent_level := 1 + +# Setting this to true will ignore the event while saving +# Useful for making placeholder events in drag and drop +var ignore_save := false + + +## ***************************************************************************** +## PUBLIC METHODS +## ***************************************************************************** + +func visual_select() -> void: + $PanelContainer.add_theme_stylebox_override('panel', load("res://addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres")) + selected = true + %IconPanel.self_modulate = resource.event_color + %IconTexture.modulate = get_theme_color("icon_saturation", "Editor") +# %IconTexture.self_modulate.a = 1 + + +func visual_deselect() -> void: + $PanelContainer.add_theme_stylebox_override('panel', load("res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres")) + selected = false + %IconPanel.self_modulate = resource.event_color.lerp(Color.DARK_SLATE_GRAY, 0.1) + %IconTexture.modulate = get_theme_color('font_color', 'Label') +# %IconTexture.self_modulate.a = 0.7 + + +func is_selected() -> bool: + return selected + +# called by the timeline before adding it to the tree +func load_data(data:DialogicEvent) -> void: + resource = data + + +func set_warning(text:String= "") -> void: + if !text.is_empty(): + warning.show() + warning.tooltip_text = text + else: + warning.hide() + + +func set_indent(indent: int) -> void: + add_theme_constant_override("margin_left", indent_size*indent) + current_indent_level = indent + + +## ***************************************************************************** +## PRIVATE METHODS +## ***************************************************************************** + +func _set_event_icon(icon: Texture) -> void: + icon_texture.texture = icon + var _scale := DialogicUtil.get_editor_scale() + var ip := %IconPanel + var ipc := icon_texture + + # Resizing the icon acording to the scale + + ip.custom_minimum_size = Vector2(icon_size, icon_size) * _scale + ipc.custom_minimum_size = ip.custom_minimum_size + + # Updating the theme properties to scale + var custom_style :StyleBox = ip.get_theme_stylebox('panel') + custom_style.corner_radius_top_left = 5 * _scale + custom_style.corner_radius_top_right = 5 * _scale + custom_style.corner_radius_bottom_left = 5 * _scale + custom_style.corner_radius_bottom_right = 5 * _scale + + +# called to inform event parts, that a focus is wanted +func focus(): + pass + + +func toggle_collapse(toggled:bool) -> void: + collapsed = toggled + var timeline_editor = find_parent('VisualEditor') + if (timeline_editor != null): + # @todo select item and clear selection is marked as "private" in TimelineEditor.gd + # consider to make it "public" or add a public helper function + timeline_editor.indent_events() + + +func build_editor(build_header:bool = true, build_body:bool = false) -> void: + var current_body_container :HFlowContainer = null + + if build_body and body_was_build: build_body = false + if build_body: + if body_was_build: + return + current_body_container = HFlowContainer.new() + %BodyContent.add_child(current_body_container) + body_was_build = true + + for p in resource.get_event_editor_info(): + field_list.append({'node':null, 'location':p.location}) + if p.has('condition'): + field_list[-1]['condition'] = p.condition + + if !build_body and p.location == 1: + continue + elif !build_header and p.location == 0: + continue + + ### -------------------------------------------------------------------- + ### 1. CREATE A NODE OF THE CORRECT TYPE FOR THE PROPERTY + var editor_node : Control + + ### LINEBREAK + if p.name == "linebreak": + field_list.remove_at(field_list.size()-1) + if !current_body_container.get_child_count(): + current_body_container.queue_free() + current_body_container = HFlowContainer.new() + %BodyContent.add_child(current_body_container) + continue + + ### STRINGS + elif p.dialogic_type == resource.ValueType.MULTILINE_TEXT: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/MultilineText.tscn").instantiate() + elif p.dialogic_type == resource.ValueType.SINGLELINE_TEXT: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/SinglelineText.tscn").instantiate() + editor_node.placeholder = p.display_info.get('placeholder', '') + elif p.dialogic_type == resource.ValueType.BOOL: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Bool.tscn").instantiate() + + elif p.dialogic_type == resource.ValueType.FILE: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/FilePicker.tscn").instantiate() + editor_node.file_filter = p.display_info.get('file_filter', '') + editor_node.placeholder = p.display_info.get('placeholder', '') + editor_node.resource_icon = p.display_info.get('icon', null) + if editor_node.resource_icon == null and p.display_info.has('editor_icon'): + editor_node.resource_icon = callv('get_theme_icon', p.display_info.editor_icon) + + elif p.dialogic_type == resource.ValueType.CONDITION: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/ConditionPicker.tscn").instantiate() + + ## Complex Picker + elif p.dialogic_type == resource.ValueType.COMPLEX_PICKER: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn").instantiate() + + editor_node.file_extension = p.display_info.get('file_extension', '') + editor_node.collapse_when_empty = p.display_info.get('collapse_when_empty', false) + editor_node.get_suggestions_func = p.display_info.get('suggestions_func', editor_node.get_suggestions_func) + editor_node.empty_text = p.display_info.get('empty_text', '') + editor_node.placeholder_text = p.display_info.get('placeholder', 'Select Resource') + editor_node.resource_icon = p.display_info.get('icon', null) + editor_node.enable_pretty_name = p.display_info.get('enable_pretty_name', false) + if editor_node.resource_icon == null and p.display_info.has('editor_icon'): + editor_node.resource_icon = callv('get_theme_icon', p.display_info.editor_icon) + + ## INTEGERS + elif p.dialogic_type == resource.ValueType.INTEGER: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Number.tscn").instantiate() + editor_node.use_int_mode() + editor_node.max = p.display_info.get('max', 9999) + editor_node.min = p.display_info.get('min', -9999) + elif p.dialogic_type == resource.ValueType.FLOAT: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Number.tscn").instantiate() + editor_node.use_float_mode() + editor_node.max = p.display_info.get('max', 9999) + editor_node.min = p.display_info.get('min', 0) + elif p.dialogic_type == resource.ValueType.DECIBEL: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Number.tscn").instantiate() + editor_node.use_decibel_mode() + elif p.dialogic_type == resource.ValueType.FIXED_OPTION_SELECTOR: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/OptionSelector.tscn").instantiate() + editor_node.options = p.display_info.get('selector_options', []) + editor_node.disabled = p.display_info.get('disabled', false) + editor_node.symbol_only = p.display_info.get('symbol_only', false) + + elif p.dialogic_type == resource.ValueType.VECTOR2: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Vector2.tscn").instantiate() + + elif p.dialogic_type == resource.ValueType.STRING_ARRAY: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Array.tscn").instantiate() + + elif p.dialogic_type == resource.ValueType.LABEL: + editor_node = Label.new() + editor_node.text = p.display_info.text + editor_node.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + editor_node.set('custom_colors/font_color', Color("#7b7b7b")) + editor_node.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + elif p.dialogic_type == resource.ValueType.BUTTON: + editor_node = Button.new() + editor_node.text = p.display_info.text + if typeof(p.display_info.icon) == TYPE_ARRAY: + editor_node.icon = callv('get_theme_icon', p.display_info.icon) + else: + editor_node.icon = p.display_info.icon + editor_node.flat = true + editor_node.custom_minimum_size.x = 30*DialogicUtil.get_editor_scale() + editor_node.pressed.connect(p.display_info.callable) + ## CUSTOM + elif p.dialogic_type == resource.ValueType.CUSTOM: + if p.display_info.has('path'): + editor_node = load(p.display_info.path).instantiate() + + ## ELSE + else: + editor_node = Label.new() + editor_node.text = p.name + editor_node.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + + ### -------------------------------------------------------------------- + ### 2. ADD IT TO THE RIGHT PLACE (HEADER/BODY) + var location :Control = %HeaderContent + if p.location == 1: + location = current_body_container + location.add_child(editor_node) + + ### -------------------------------------------------------------------- + ### 3. FILL THE NEW NODE WITH INFORMATION AND LISTEN TO CHANGES + field_list[-1]['node'] = editor_node + if "event_resource" in editor_node: + editor_node.event_resource = resource + if 'property_name' in editor_node: + editor_node.property_name = p.name + field_list[-1]['property'] = p.name + if editor_node.has_method('set_value'): + editor_node.set_value(resource.get(p.name)) + if editor_node.has_signal('value_changed'): + editor_node.value_changed.connect(set_property) + editor_node.tooltip_text = p.display_info.get('tooltip', '') + var left_label :Label = null + var right_label :Label = null + if !p.get('left_text', '').is_empty(): + left_label = Label.new() + left_label.text = p.get('left_text') + left_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + left_label.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + location.add_child(left_label) + location.move_child(left_label, editor_node.get_index()) + if !p.get('right_text', '').is_empty(): + right_label = Label.new() + right_label.text = p.get('right_text') + right_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + right_label.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + location.add_child(right_label) + location.move_child(right_label, editor_node.get_index()+1) + + if p.has('condition'): + field_list[-1]['condition'] = p.condition + if left_label: + field_list.append({'node': left_label, 'condition':p.condition, 'location':p.location}) + if right_label: + field_list.append({'node': right_label, 'condition':p.condition, 'location':p.location}) + + ### -------------------------------------------------------------------- + ### 4. GETTING THE PATH OF THE FIELD WE WANT TO FOCUS (in case we want) + if resource.created_by_button and p.display_info.get('autofocus', false) and editor_node.has_method('take_autofocus'): + editor_node.call_deferred('take_autofocus') + + if build_body: +# has_body_content = true + if current_body_container.get_child_count() == 0: +# has_body_content = false + expanded = false + body_container.visible = false + + recalculate_field_visibility() + + +func recalculate_field_visibility() -> void: + has_any_enabled_body_content = false + for p in field_list: + if !p.has('condition') or p.condition.is_empty(): + if p.node != null: + p.node.show() + if p.location == 1: + has_any_enabled_body_content = true + else: + var expr := Expression.new() + expr.parse(p.condition) + if expr.execute([], resource): + if p.node != null: + p.node.show() + if p.location == 1: + has_any_enabled_body_content = true + else: + if p.node != null: + p.node.hide() + if expr.has_execute_failed(): + printerr("[Dialogic] Failed executing visibility condition for '",p.get('property', 'unnamed'),"': " + expr.get_error_text()) + %ExpandButton.visible = has_any_enabled_body_content + + +func set_property(property_name:String, value:Variant) -> void: + resource.set(property_name, value) + content_changed.emit() + if end_node: + end_node.parent_node_changed() + + +func _on_resource_ui_update_needed() -> void: + for node_info in field_list: + if node_info.node.has_method('set_value'): + node_info.node.set_value(resource.get(node_info.property)) + + +func _update_color() -> void: + if resource.dialogic_color_name != '': + %IconPanel.self_modulate = DialogicUtil.get_color(resource.dialogic_color_name) + + +######################## OVERRIDES ############################################# +################################################################################ + +func _ready(): + resized.connect(get_parent().get_parent().queue_redraw) + + ## DO SOME STYLING + var _scale := DialogicUtil.get_editor_scale() + $PanelContainer.self_modulate = get_theme_color("accent_color", "Editor") + warning.texture = get_theme_icon("NodeWarning", "EditorIcons") + warning.size = Vector2(16 * _scale, 16 * _scale) + warning.position = Vector2(-5 * _scale, -10 * _scale) + + indent_size = indent_size * DialogicUtil.get_editor_scale() + + %ExpandButton.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + %ExpandButton.modulate = get_theme_color("readonly_color", "Editor") + + if resource: + if resource.event_name: + %TitleLabel.add_theme_color_override("font_color", resource.event_color.lightened(0.4)) + %TitleLabel.add_theme_font_override("font", get_theme_font("title", "EditorFonts")) + %TitleLabel.text = resource.event_name + %IconPanel.tooltip_text = resource.event_name + if resource._get_icon() != null: + _set_event_icon(resource._get_icon()) + resource.ui_update_needed.connect(_on_resource_ui_update_needed) + resource.ui_update_warning.connect(set_warning) + + %IconPanel.self_modulate = resource.event_color + + _on_ExpandButton_toggled(resource.expand_by_default) + + set_focus_mode(1) # Allowing this node to grab focus + + # signals + # TODO godot4 react to changes of the colors, the signal was removed + #ProjectSettings.project_settings_changed.connect(_update_color) + + # Separation on the header + %Header.add_theme_constant_override("custom_constants/separation", 5 * _scale) + + content_changed.connect(recalculate_field_visibility) + +# _on_Indent_visibility_changed() + %CollapseButton.toggled.connect(toggle_collapse) + %CollapseButton.icon = get_theme_icon("Collapse", "EditorIcons") + %CollapseButton.hide() + visual_deselect() + + +func _on_ExpandButton_toggled(button_pressed:bool) -> void: + if button_pressed and !body_was_build: + build_editor(false, true) + %ExpandButton.set_pressed_no_signal(button_pressed) + if button_pressed: + %ExpandButton.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + else: + %ExpandButton.icon = get_theme_icon("CodeFoldedRightArrow", "EditorIcons") + expanded = button_pressed + body_container.visible = button_pressed + body_container.add_theme_constant_override("margin_left", icon_size*DialogicUtil.get_editor_scale()) + + +func _on_EventNode_gui_input(event:InputEvent) -> void: + if event is InputEventMouseButton and event.is_pressed() and event.button_index == 1: + grab_focus() # Grab focus to avoid copy pasting text or events + if event.double_click: + if has_any_enabled_body_content: + _on_ExpandButton_toggled(!expanded) + # For opening the context menu + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed: + var popup :PopupMenu = get_parent().get_parent().get_node('EventPopupMenu') + popup.current_event = self + popup.popup_on_parent(Rect2(get_global_mouse_position(),Vector2())) + if resource.help_page_path == "": + popup.set_item_disabled(0, true) + else: + popup.set_item_disabled(0, false) diff --git a/addons/dialogic/Editor/Events/EventBlock/event_block.tscn b/addons/dialogic/Editor/Events/EventBlock/event_block.tscn new file mode 100644 index 0000000..ae19f0c --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_block.tscn @@ -0,0 +1,140 @@ +[gd_scene load_steps=8 format=3 uid="uid://bwaxj1n401fp4"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/EventBlock/event_block.gd" id="1"] +[ext_resource type="StyleBox" uid="uid://cl75ikyq2is7c" path="res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres" id="2_axj84"] +[ext_resource type="Texture2D" uid="uid://dybg3l5pwetne" path="res://addons/dialogic/Editor/Images/plugin-icon.svg" id="6"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_otutu"] +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="Image" id="Image_tmsys"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_wps7w"] +image = SubResource("Image_tmsys") + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ee4ub"] + +[node name="EventNode" type="MarginContainer"] +anchors_preset = 10 +anchor_right = 1.0 +grow_horizontal = 2 +size_flags_horizontal = 3 +size_flags_vertical = 9 +focus_mode = 1 +script = ExtResource("1") + +[node name="PanelContainer" type="PanelContainer" parent="."] +self_modulate = Color(0, 0, 0, 1) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +mouse_filter = 2 +theme_override_styles/panel = ExtResource("2_axj84") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="IconPanel" type="Panel" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +mouse_filter = 1 +mouse_default_cursor_shape = 6 +theme_override_styles/panel = SubResource("StyleBoxFlat_otutu") + +[node name="IconTexture" type="TextureRect" parent="PanelContainer/VBoxContainer/Header/IconPanel"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 0 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = ExtResource("6") +expand_mode = 1 +stretch_mode = 5 + +[node name="Warning" type="TextureRect" parent="PanelContainer/VBoxContainer/Header/IconPanel"] +unique_name_in_owner = true +visible = false +layout_mode = 0 +offset_left = -5.0 +offset_top = -10.0 +offset_right = 11.0 +offset_bottom = 6.0 +texture = SubResource("ImageTexture_wps7w") +stretch_mode = 5 + +[node name="TitleLabel" type="Label" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +vertical_alignment = 1 + +[node name="VSeparator" type="VSeparator" parent="PanelContainer/VBoxContainer/Header"] +visible = false +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_vertical = 4 + +[node name="HeaderContent" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ExpandButton" type="Button" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +modulate = Color(0, 0, 0, 1) +layout_mode = 2 +size_flags_horizontal = 0 +tooltip_text = "Fold/Unfold Settings" +theme_override_styles/focus = SubResource("StyleBoxEmpty_ee4ub") +toggle_mode = true +icon = SubResource("ImageTexture_wps7w") +flat = true + +[node name="CollapseButton" type="Button" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 10 +tooltip_text = "Collapse Contained Events" +toggle_mode = true +icon = SubResource("ImageTexture_wps7w") +flat = true + +[node name="Body" type="MarginContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 4 + +[node name="BodyContent" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Body"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +mouse_filter = 2 + +[connection signal="gui_input" from="." to="." method="_on_EventNode_gui_input"] +[connection signal="toggled" from="PanelContainer/VBoxContainer/Header/ExpandButton" to="." method="_on_ExpandButton_toggled"] diff --git a/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd b/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd new file mode 100644 index 0000000..120c880 --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd @@ -0,0 +1,19 @@ +@tool +extends PopupMenu + +var current_event : Node = null + +func _ready(): + clear() + add_icon_item(get_theme_icon("Help", "EditorIcons"), "Documentation") + add_separator() + add_icon_item(get_theme_icon("ArrowUp", "EditorIcons"), "Move up") + add_icon_item(get_theme_icon("ArrowDown", "EditorIcons"), "Move down") + add_separator() + add_icon_item(get_theme_icon("Remove", "EditorIcons"), "Delete") + + var menu_background := StyleBoxFlat.new() + menu_background.bg_color = get_parent().get_theme_color("base_color", "Editor") + add_theme_stylebox_override('panel', menu_background) + add_theme_stylebox_override('hover', get_theme_stylebox("FocusViewport", "EditorStyles")) + add_theme_color_override('font_color_hover', get_parent().get_theme_color("accent_color", "Editor")) diff --git a/addons/dialogic/Editor/Events/Fields/Array.gd b/addons/dialogic/Editor/Events/Fields/Array.gd new file mode 100644 index 0000000..57f5131 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Array.gd @@ -0,0 +1,49 @@ +@tool +extends VBoxContainer + +## Event block field for editing arrays. + +signal value_changed +var property_name : String + +const ArrayValue = "res://addons/dialogic/Editor/Events/Fields/ArrayValue.tscn" + +func _ready(): + %Add.icon = get_theme_icon("Add", "EditorIcons") + +func set_value(value:Array) -> void: + for child in %Values.get_children(): + child.queue_free() + + for item in value: + var x = load(ArrayValue).instantiate() + %Values.add_child(x) + x.set_value(item) + x.value_changed.connect(recalculate_values) + + +func _on_value_changed(value:Variant) -> void: + emit_signal("value_changed", property_name, value) + + +func recalculate_values() -> void: + var arr := [] + for child in %Values.get_children(): + if !child.is_queued_for_deletion(): + arr.append(child.get_value()) + _on_value_changed(arr) + + +func _on_AddButton_pressed() -> void: + var x :Control = load(ArrayValue).instantiate() + %Values.add_child(x) + x.set_value("") + x.value_changed.connect(recalculate_values) + recalculate_values() + + +## Overridable +func set_left_text(value:String) -> void: + %LeftText.text = str(value) + %LeftText.visible = value.is_empty() + diff --git a/addons/dialogic/Editor/Events/Fields/Array.tscn b/addons/dialogic/Editor/Events/Fields/Array.tscn new file mode 100644 index 0000000..930184e --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Array.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=3 format=3 uid="uid://btmy7ageqpyq1"] + +[ext_resource type="PackedScene" uid="uid://ch4j2lesn1sis" path="res://addons/dialogic/Editor/Events/Fields/ArrayValue.tscn" id="1"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/Array.gd" id="2"] + +[node name="Array" type="VBoxContainer"] +script = ExtResource("2") + +[node name="Editing" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +alignment = 2 + +[node name="LeftText" type="Label" parent="Editing"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Add" type="Button" parent="Editing"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Values" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value" parent="Values" instance=ExtResource("1")] +layout_mode = 2 + +[node name="Value2" parent="Values" instance=ExtResource("1")] +layout_mode = 2 + +[connection signal="pressed" from="Editing/Add" to="." method="_on_AddButton_pressed"] diff --git a/addons/dialogic/Editor/Events/Fields/ArrayValue.gd b/addons/dialogic/Editor/Events/Fields/ArrayValue.gd new file mode 100644 index 0000000..c8b3509 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/ArrayValue.gd @@ -0,0 +1,27 @@ +@tool +extends HBoxContainer + +## Event block field part for the Array field. + +signal value_changed() + + +func set_value(value:String): + $Value.text = str(value) + + +func get_value() -> String: + return $Value.text + + +func _ready() -> void: + $Delete.icon = get_theme_icon("Remove", "EditorIcons") + + +func _on_Delete_pressed() -> void: + queue_free() + value_changed.emit() + + +func _on_Value_text_changed(new_text:String) -> void: + value_changed.emit() diff --git a/addons/dialogic/Editor/Events/Fields/ArrayValue.tscn b/addons/dialogic/Editor/Events/Fields/ArrayValue.tscn new file mode 100644 index 0000000..bf2b221 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/ArrayValue.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=5 format=3 uid="uid://ch4j2lesn1sis"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/ArrayValue.gd" id="1"] +[ext_resource type="Theme" uid="uid://d3g4i4dshtdpu" path="res://addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres" id="2"] + +[sub_resource type="Image" id="Image_ov00m"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 93, 93, 55, 255, 97, 97, 58, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_oe0il"] +image = SubResource("Image_ov00m") + +[node name="Value" type="HBoxContainer"] +theme = ExtResource("2") +script = ExtResource("1") + +[node name="Value" type="LineEdit" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +expand_to_text_length = true + +[node name="Delete" type="Button" parent="."] +layout_mode = 2 +icon = SubResource("ImageTexture_oe0il") + +[connection signal="text_changed" from="Value" to="." method="_on_Value_text_changed"] +[connection signal="pressed" from="Delete" to="." method="_on_Delete_pressed"] diff --git a/addons/dialogic/Editor/Events/Fields/Bool.gd b/addons/dialogic/Editor/Events/Fields/Bool.gd new file mode 100644 index 0000000..8f352f6 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Bool.gd @@ -0,0 +1,19 @@ +@tool +extends CheckButton + +## Event block field for boolean values. + +signal value_changed +var property_name : String + + +func _ready() -> void: + toggled.connect(_on_value_changed) + + +func set_value(value:bool) -> void: + button_pressed = value + + +func _on_value_changed(value:bool) -> void: + value_changed.emit(property_name, value) diff --git a/addons/dialogic/Editor/Events/Fields/Bool.tscn b/addons/dialogic/Editor/Events/Fields/Bool.tscn new file mode 100644 index 0000000..93201b9 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Bool.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dm5hxmhyyxgq"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/Bool.gd" id="1"] + +[node name="Bool" type="CheckButton"] +script = ExtResource("1") diff --git a/addons/dialogic/Editor/Events/Fields/ComplexPicker.gd b/addons/dialogic/Editor/Events/Fields/ComplexPicker.gd new file mode 100644 index 0000000..c920b7d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/ComplexPicker.gd @@ -0,0 +1,264 @@ +@tool +extends Control + +## Event block field for resources/options. + +# this signal is on all event parts and informs the event that a change happened. +signal value_changed(property_name, value) +var property_name : String +var event_resource : DialogicEvent = null + +### SETTINGS FOR THE RESOURCE PICKER +@export var placeholder_text : String = "Select Resource" +var collapse_when_empty := false +var file_extension : String = "" +var get_suggestions_func : Callable = get_default_suggestions +var empty_text : String = "" +@export var enable_pretty_name : bool = false +@export var fit_text_length : bool = true + +var resource_icon : Texture = null: + get: + return resource_icon + set(new_icon): + resource_icon = new_icon + %Icon.texture = new_icon + +## STORING VALUE AND REFERENCE TO RESOURCE +var current_value :Variant # Dynamic +var editor_reference + +var current_selected = 0 + +################################################################################ +## BASIC EVENT PART FUNCTIONS +################################################################################ + +func set_value(value:Variant, text : String = '') -> void: + %Search.show() + if value == null or value.is_empty(): + %Search.text = empty_text + if collapse_when_empty: + %Search.hide() + elif file_extension != "" and file_extension != ".dch" and file_extension != ".dtl": + %Search.text = value.resource_path + %Search.tooltip_text = value.resource_path + elif value: + if enable_pretty_name: + %Search.text = DialogicUtil.pretty_name(value) + else: + %Search.text = value + else: + %Search.text = empty_text + if text: + %Search.text = text + + current_value = value + + +func changed_to_empty() -> void: + if file_extension != "" && file_extension != ".dch": + emit_signal("value_changed", property_name, null) + else: + emit_signal("value_changed", property_name, "") + + +################################################################################ +## BASIC +################################################################################ +func _ready(): + %Focus.add_theme_stylebox_override('panel', get_theme_stylebox('focus', 'DialogicEventEdit')) + %Search.text_changed.connect(_on_Search_text_changed) + %Search.text_submitted.connect(_on_Search_text_entered) + %SelectButton.icon = get_theme_icon("Collapse", "EditorIcons") + %Search.placeholder_text = placeholder_text + %Search.expand_to_text_length = fit_text_length + %Suggestions.add_theme_stylebox_override('bg', load("res://addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres")) + %Suggestions.hide() + %Suggestions.item_selected.connect(suggestion_selected) + %Suggestions.item_clicked.connect(suggestion_selected) + if resource_icon == null: + self.resource_icon = null + + editor_reference = find_parent('EditorView') + + +func _exit_tree(): + # Explicitly free any open cache resources on close, so we don't get leaked resource errors on shutdown + event_resource = null + + +func take_autofocus(): + %Search.grab_focus() + +################################################################################ +## SEARCH & SUGGESTION POPUP +################################################################################ +func _on_Search_text_entered(new_text:String) -> void: + if %Suggestions.get_item_count(): + if %Suggestions.is_anything_selected(): + suggestion_selected(%Suggestions.get_selected_items()[0]) + else: + suggestion_selected(0) + else: + changed_to_empty() + + +func _on_Search_text_changed(new_text:String, just_update:bool = false) -> void: + %Suggestions.clear() + + if new_text == "" and !just_update: + changed_to_empty() + else: + %Search.show() + + var suggestions :Dictionary = get_suggestions_func.call(new_text) + + var line_length:int = 0 + var idx:int = 0 + for element in suggestions: + if new_text.is_empty() or new_text.to_lower() in element.to_lower() or new_text.to_lower() in str(suggestions[element].value).to_lower() or new_text.to_lower() in suggestions[element].get('tooltip', '').to_lower(): + line_length = max(get_theme_font('font', 'Label').get_string_size(element, HORIZONTAL_ALIGNMENT_LEFT, -1, get_theme_font_size("font_size", 'Label')).x+80, line_length) + %Suggestions.add_item(element) + if suggestions[element].has('icon'): + %Suggestions.set_item_icon(idx, suggestions[element].icon) + elif suggestions[element].has('editor_icon'): + %Suggestions.set_item_icon(idx, get_theme_icon(suggestions[element].editor_icon[0],suggestions[element].editor_icon[1])) + + %Suggestions.set_item_tooltip(idx, suggestions[element].get('tooltip', '')) + %Suggestions.set_item_metadata(idx, suggestions[element].value) + idx += 1 + + if not %Suggestions.visible: + %Suggestions.show() + %Suggestions.global_position = $PanelContainer.global_position+Vector2(0,1)*$PanelContainer.size.y + #%Suggestions.position = Vector2() + %Suggestions.size.x = max(%Search.size.x, line_length) + %Suggestions.size.y = min(%Suggestions.get_item_count()*35*DialogicUtil.get_editor_scale(), 200*DialogicUtil.get_editor_scale()) + if %Suggestions.get_item_count(): + %Suggestions.select(0) + current_selected = 0 + else: + current_selected = -1 + %Search.grab_focus() + + +func get_default_suggestions(input:String) -> Dictionary: + if file_extension.is_empty(): return {'Nothing found!':{'value':''}} + var suggestions: Dictionary = {} + if file_extension == ".dch": + suggestions['(No one)'] = {'value':'', 'editor_icon':["GuiRadioUnchecked", "EditorIcons"]} + + for resource in editor_reference.character_directory.keys(): + suggestions[resource] = {'value': resource, 'tooltip': editor_reference.character_directory[resource]['full_path']} + else: + var resources: Array = DialogicUtil.list_resources_of_type(file_extension) + + for resource in resources: + suggestions[resource] = {'value':resource, 'tooltip':resource} + + return suggestions + + +func suggestion_selected(index : int, position:=Vector2(), button_index:=MOUSE_BUTTON_LEFT) -> void: + if button_index != MOUSE_BUTTON_LEFT: + return + if %Suggestions.is_item_disabled(index): + return + + %Search.text = %Suggestions.get_item_text(index) + + if %Suggestions.get_item_metadata(index) == null: + current_value = null + + # if this is a resource, then load it instead of assigning the string: + elif file_extension != "" and file_extension != ".dch" and file_extension != ".dtl": + var file = load(%Suggestions.get_item_metadata(index)) + current_value = file + else: + current_value = %Suggestions.get_item_metadata(index) + + hide_suggestions() + + %Search.grab_focus() + emit_signal("value_changed", property_name, current_value) + +func _input(event:InputEvent): + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + if %Suggestions.visible: + if !%Suggestions.get_global_rect().has_point(get_global_mouse_position()) and \ + !%SelectButton.get_global_rect().has_point(get_global_mouse_position()): + hide_suggestions() + + +func hide_suggestions() -> void: + %SelectButton.set_pressed_no_signal(false) + %Suggestions.hide() + if !current_value and collapse_when_empty: + %Search.hide() + + +func _on_SelectButton_toggled(button_pressed:bool) -> void: + if button_pressed: + _on_Search_text_changed('', true) + else: + hide_suggestions() + +func _on_focus_entered(): + %Search.grab_focus() + + +func _on_search_gui_input(event): + if event is InputEventKey and (event.keycode == KEY_DOWN or event.keycode == KEY_UP) and event.pressed: + if !%Suggestions.visible: + _on_Search_text_changed('', true) + current_selected = -1 + if event.keycode == KEY_DOWN: + current_selected = wrapi(current_selected+1, 0, %Suggestions.item_count) + if event.keycode == KEY_UP: + current_selected = wrapi(current_selected-1, 0, %Suggestions.item_count) + %Suggestions.select(current_selected) + %Suggestions.ensure_current_is_visible() + + +func _on_search_focus_entered(): + if %Search.text == "" or current_value == null or (typeof(current_value) == TYPE_STRING and current_value.is_empty()): + _on_Search_text_changed("") + %Search.call_deferred('select_all') + %Focus.show() + + +func _on_search_focus_exited(): + %Focus.hide() + if !%Suggestions.get_global_rect().has_point(get_global_mouse_position()): + hide_suggestions() + +################################################################################ +## DRAG AND DROP +################################################################################ + +func _can_drop_data(position, data) -> bool: + if typeof(data) == TYPE_DICTIONARY and data.has('files') and len(data.files) == 1: + if file_extension: + if data.files[0].ends_with(file_extension): + return true + else: + return false + return false + +func _drop_data(position, data) -> void: + if data.files[0].ends_with('dch'): + for character in editor_reference.character_directory.keys(): + if editor_reference.character_directory[character]["full_path"] == data.files[0]: + set_value(character) + break + elif data.files[0].ends_with('dtl'): + for timeline in editor_reference.timeline_directory.keys(): + if editor_reference.timeline_directory[timeline] == data.files[0]: + set_value(timeline) + break + else: + var file = load(data.files[0]) + set_value(file) + emit_signal("value_changed", property_name, file) + diff --git a/addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn b/addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn new file mode 100644 index 0000000..c05473d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn @@ -0,0 +1,134 @@ +[gd_scene load_steps=7 format=3 uid="uid://dpwhshre1n4t6"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/ComplexPicker.gd" id="1"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tmt5n"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vennf"] + +[sub_resource type="Image" id="Image_tmsys"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_wps7w"] +image = SubResource("Image_tmsys") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j1gic"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="ComplexPicker" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -2.0 +offset_top = -2.0 +offset_right = -1005.0 +offset_bottom = -622.0 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 2 +script = ExtResource("1") +placeholder_text = "" + +[node name="PanelContainer" type="MarginContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 0 + +[node name="BG" type="Panel" parent="PanelContainer"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 +theme_type_variation = &"DialogicEventEdit" +metadata/_edit_use_anchors_ = true + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 2 +theme_override_constants/margin_top = 2 +theme_override_constants/margin_right = 2 +theme_override_constants/margin_bottom = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="Icon" type="TextureRect" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 2 +stretch_mode = 5 + +[node name="Search" type="LineEdit" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +focus_neighbor_bottom = NodePath("Suggestions") +focus_mode = 1 +mouse_filter = 1 +theme_override_styles/normal = SubResource("StyleBoxEmpty_tmt5n") +theme_override_styles/focus = SubResource("StyleBoxEmpty_vennf") +expand_to_text_length = true +flat = true +caret_blink = true + +[node name="Suggestions" type="ItemList" parent="PanelContainer/MarginContainer/HBoxContainer/Search"] +unique_name_in_owner = true +visible = false +top_level = true +custom_minimum_size = Vector2(-1086, 0) +layout_mode = 0 +offset_left = -5.0 +offset_top = 36.0 +offset_right = 195.0 +offset_bottom = 71.0 +size_flags_vertical = 0 +auto_translate = false +focus_neighbor_top = NodePath("..") +max_text_lines = 3 +item_count = 1 +item_0/text = "Hello" + +[node name="SelectButton" type="Button" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +focus_mode = 0 +toggle_mode = true +shortcut_in_tooltip = false +icon = SubResource("ImageTexture_wps7w") +flat = true + +[node name="Focus" type="Panel" parent="PanelContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_j1gic") +metadata/_edit_use_anchors_ = true + +[connection signal="focus_entered" from="." to="." method="_on_focus_entered"] +[connection signal="focus_entered" from="PanelContainer/MarginContainer/HBoxContainer/Search" to="." method="_on_search_focus_entered"] +[connection signal="focus_exited" from="PanelContainer/MarginContainer/HBoxContainer/Search" to="." method="_on_search_focus_exited"] +[connection signal="gui_input" from="PanelContainer/MarginContainer/HBoxContainer/Search" to="." method="_on_search_gui_input"] +[connection signal="gui_input" from="PanelContainer/MarginContainer/HBoxContainer/Search/Suggestions" to="." method="_on_suggestions_gui_input"] +[connection signal="toggled" from="PanelContainer/MarginContainer/HBoxContainer/SelectButton" to="." method="_on_SelectButton_toggled"] diff --git a/addons/dialogic/Editor/Events/Fields/ConditionPicker.gd b/addons/dialogic/Editor/Events/Fields/ConditionPicker.gd new file mode 100644 index 0000000..9f989a6 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/ConditionPicker.gd @@ -0,0 +1,227 @@ +@tool +extends Control + +## Event block field for displaying conditions in either a simple or complex way. + +signal value_changed +var property_name : String +var event_resource : DialogicEvent = null + +var _current_value1 :Variant = "" +var _current_value2 :Variant = "" + +func _ready() -> void: + + for i in [%Value1Type, %Value2Type]: + i.options = [{ + 'label': 'String', + 'icon': ["String", "EditorIcons"], + 'value': 0 + },{ + 'label': 'Number', + 'icon': ["float", "EditorIcons"], + 'value': 1 + },{ + 'label': 'Variable', + 'icon': load("res://addons/dialogic/Editor/Images/Pieces/variable.svg"), + 'value': 2 + },{ + 'label': 'Expression', + 'icon': ["Variant", "EditorIcons"], + 'value': 3 + } +# ,{ +# 'label': 'Random Number', +# 'icon': ["RandomNumberGenerator", "EditorIcons"], +# 'value': 4 +# } + ] + i.symbol_only = true + i.value_changed.connect(value_type_changed.bind(i.name)) + i.value_changed.connect(something_changed) + i.tooltip_text = "Change type" + + + for i in [%Value1Variable, %Value2Variable]: + i.get_suggestions_func = get_variable_suggestions + i.value_changed.connect(something_changed) + + %Value1Number.value_changed.connect(something_changed) + %Value2Number.value_changed.connect(something_changed) + %Value1Text.value_changed.connect(something_changed) + %Value2Text.value_changed.connect(something_changed) + + %ToggleComplex.icon = get_theme_icon("Enum", "EditorIcons") + + %Operator.value_changed.connect(something_changed) + %Operator.options = [ + {'label': '==', 'value': '=='}, + {'label': '>', 'value': '>'}, + {'label': '<', 'value': '<'}, + {'label': '<=', 'value': '<='}, + {'label': '>=', 'value': '>='}, + {'label': '!=', 'value': '!='} + ] + + +func set_value(value:String) -> void: + var too_complex := is_too_complex(value) + %ToggleComplex.disabled = too_complex + %ToggleComplex.button_pressed = too_complex + %ComplexEditor.visible = too_complex + %SimpleEditor.visible = !too_complex + %ComplexEditor.text = value + if not too_complex: + load_simple_editor(value) + + +func load_simple_editor(condition_string:String) -> void: + var data := complex2simple(condition_string) + %Value1Type.set_value(get_value_type(data[0], 2)) + _current_value1 = data[0] + value_type_changed('', get_value_type(data[0], 2), 'Value1') + %Operator.set_value(data[1].strip_edges()) + %Value2Type.set_value(get_value_type(data[2], 0)) + _current_value2 = data[2] + value_type_changed('', get_value_type(data[2], 0), 'Value2') + + +func value_type_changed(property:String, value_type:int, value_name:String) -> void: + value_name = value_name.trim_suffix('Type') + get_node('%'+value_name+'Variable').hide() + get_node('%'+value_name+'Text').hide() + get_node('%'+value_name+'Number').hide() + var current_val :Variant = "" + if '1' in value_name: + current_val = _current_value1 + else: + current_val = _current_value2 + match value_type: + 0: + get_node('%'+value_name+'Text').show() + get_node('%'+value_name+'Text').set_value(trim_value(current_val, value_type)) + 1: + get_node('%'+value_name+'Number').show() + get_node('%'+value_name+'Number').set_value(float(current_val.strip_edges())) + 2: + get_node('%'+value_name+'Variable').show() + get_node('%'+value_name+'Variable').set_value(trim_value(current_val, value_type)) + 3: + get_node('%'+value_name+'Text').show() + get_node('%'+value_name+'Text').set_value(str(current_val)) + + + +func get_value_type(value:String, default:int) -> int: + value = value.strip_edges() + if value.begins_with('"') and value.ends_with('"') and value.count('"')-value.count('\\"') == 2: + return 0 + elif value.begins_with('{') and value.ends_with('}') and value.count('{') == 1: + return 2 + else: + if value.is_empty(): + return default + if value.is_valid_float(): + return 1 + else: + return 3 + + +func prep_value(value:Variant, value_type:int) -> String: + if value != null: value = str(value) + else: value = "" + value = value.strip_edges() + match value_type: + 0: return '"'+value.replace('"', '\\"')+'"' + 2: return '{'+value+'}' + _: return value + + +func trim_value(value:Variant, value_type:int) -> String: + value = value.strip_edges() + match value_type: + 0: return value.trim_prefix('"').trim_suffix('"').replace('\\"', '"') + 2: return value.trim_prefix('{').trim_suffix('}') + _: return value + + +func something_changed(fake_arg1=null, fake_arg2 = null): + if %ComplexEditor.visible: + value_changed.emit(property_name, %ComplexEditor.text) + + else: + match %Value1Type.current_value: + 0: _current_value1 = prep_value(%Value1Text.text, %Value1Type.current_value) + 1: _current_value1 = str(%Value1Number.get_value()) + 2: _current_value1 = prep_value(%Value1Variable.current_value, %Value1Type.current_value) + _: _current_value1 = prep_value(%Value1Text.text, %Value1Type.current_value) + + match %Value2Type.current_value: + 0: _current_value2 = prep_value(%Value2Text.text, %Value2Type.current_value) + 1: _current_value2 = str(%Value2Number.get_value()) + 2: _current_value2 = prep_value(%Value2Variable.current_value, %Value2Type.current_value) + _: _current_value2 = prep_value(%Value2Text.text, %Value2Type.current_value) + + if event_resource: + if not %Operator.text in ['==', '!='] and get_value_type(_current_value2, 0) == 0: + event_resource.ui_update_warning.emit("This operator doesn't work with strings.") + else: + event_resource.ui_update_warning.emit("") + + value_changed.emit(property_name, get_simple_condition()) + + +func is_too_complex(condition:String) -> bool: + return !(condition.is_empty() + or ' and ' in condition + or ' or ' in condition + or ' not ' in condition + or condition.count('==') != 1 + or condition.count('>') != 1 + or condition.count('<') != 1 + or condition.count('<=') != 1 + or condition.count('>=') != 1 + or condition.count('!=') != 1) + + +## Combines the info from the simple editor fields into a string condition +func get_simple_condition() -> String: + return _current_value1 +" "+ %Operator.text +" "+ _current_value2 + + +func complex2simple(condition:String) -> Array: + if is_too_complex(condition) or condition.strip_edges().is_empty(): + return ['', '==',''] + + for i in ['==', '!=', '<=', '<', '>', '>=']: + if i in condition: + var cond_split := Array(condition.split(i, false)) + return [cond_split[0], i, cond_split[1]] + + return ['', '==',''] + + +func _on_toggle_complex_toggled(button_pressed:bool) -> void: + if button_pressed: + %ComplexEditor.show() + %SimpleEditor.hide() + %ComplexEditor.text = get_simple_condition() + else: + if !is_too_complex(%ComplexEditor.text): + %ComplexEditor.hide() + %SimpleEditor.show() + load_simple_editor(%ComplexEditor.text) + + +func _on_complex_editor_text_changed(new_text:String) -> void: + %ToggleComplex.disabled = is_too_complex(%ComplexEditor.text) + something_changed() + + +func get_variable_suggestions(filter:String) -> Dictionary: + var suggestions := {} + var vars :Dictionary= ProjectSettings.get_setting('dialogic/variables', {}) + for var_path in DialogicUtil.list_variables(vars): + suggestions[var_path] = {'value':var_path, 'editor_icon':["ClassList", "EditorIcons"]} + return suggestions + diff --git a/addons/dialogic/Editor/Events/Fields/ConditionPicker.tscn b/addons/dialogic/Editor/Events/Fields/ConditionPicker.tscn new file mode 100644 index 0000000..da4a21d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/ConditionPicker.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=8 format=3 uid="uid://ir6334lqtuwt"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/ConditionPicker.gd" id="1_q5p62"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn" id="1_rr7mq"] +[ext_resource type="PackedScene" uid="uid://d3bhehatwoio" path="res://addons/dialogic/Editor/Events/Fields/OptionSelector.tscn" id="4_27ir8"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/Number.tscn" id="4_al48y"] +[ext_resource type="PackedScene" uid="uid://c0vkcehgjsjy" path="res://addons/dialogic/Editor/Events/Fields/SinglelineText.tscn" id="4_b5vlr"] + +[sub_resource type="Image" id="Image_tmsys"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_wps7w"] +image = SubResource("Image_tmsys") + +[node name="ConditionPicker" type="HBoxContainer"] +offset_right = 77.0 +offset_bottom = 31.0 +script = ExtResource("1_q5p62") + +[node name="SimpleEditor" type="HBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Type" parent="SimpleEditor" instance=ExtResource("4_27ir8")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Change type" +text = "" + +[node name="Value1Text" parent="SimpleEditor" instance=ExtResource("4_b5vlr")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Number" parent="SimpleEditor" instance=ExtResource("4_al48y")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Variable" parent="SimpleEditor" instance=ExtResource("1_rr7mq")] +unique_name_in_owner = true +layout_mode = 2 +placeholder_text = "Variable" + +[node name="Operator" parent="SimpleEditor" instance=ExtResource("4_27ir8")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value2Type" parent="SimpleEditor" instance=ExtResource("4_27ir8")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Change type" +text = "" + +[node name="Value2Text" parent="SimpleEditor" instance=ExtResource("4_b5vlr")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value2Number" parent="SimpleEditor" instance=ExtResource("4_al48y")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value2Variable" parent="SimpleEditor" instance=ExtResource("1_rr7mq")] +unique_name_in_owner = true +layout_mode = 2 +placeholder_text = "Variable" + +[node name="ComplexEditor" type="LineEdit" parent="."] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(150, 0) +layout_mode = 2 +mouse_filter = 1 +theme_type_variation = &"DialogicEventEdit" +text = "VAR.Player.Health > 20 and VAR.Counter < 3 and randi()%3 == 2" +placeholder_text = "Enter condition" +expand_to_text_length = true + +[node name="ToggleComplex" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Use complex expression" +toggle_mode = true +icon = SubResource("ImageTexture_wps7w") + +[connection signal="text_changed" from="ComplexEditor" to="." method="_on_complex_editor_text_changed"] +[connection signal="toggled" from="ToggleComplex" to="." method="_on_toggle_complex_toggled"] diff --git a/addons/dialogic/Editor/Events/Fields/FilePicker.gd b/addons/dialogic/Editor/Events/Fields/FilePicker.gd new file mode 100644 index 0000000..de2776d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/FilePicker.gd @@ -0,0 +1,84 @@ +@tool +extends Control + +## Event block field for selecting a file or directory. + +signal value_changed(property_name:String, value:String) +var property_name : String + +@export var file_filter := "" +@export var placeholder := "" +@export var file_mode : EditorFileDialog.FileMode = EditorFileDialog.FILE_MODE_OPEN_FILE +@export var resource_icon:Texture = null: + get: + return resource_icon + set(new_icon): + resource_icon = new_icon + %Icon.texture = new_icon + if new_icon == null: + %Field.theme_type_variation = "" + else: + %Field.theme_type_variation = "LineEditWithIcon" + +var max_text_length := 16 +var current_value : String +var hide_reset:bool = false + +func _ready() -> void: + $FocusStyle.add_theme_stylebox_override('panel', get_theme_stylebox('focus', 'DialogicEventEdit')) + %OpenButton.icon = get_theme_icon("Folder", "EditorIcons") + %ClearButton.icon = get_theme_icon("Reload", "EditorIcons") + %OpenButton.button_down.connect(_on_OpenButton_pressed) + %ClearButton.button_up.connect(clear_path) + %ClearButton.visible = !hide_reset + %Field.set_drag_forwarding(Callable(), self._can_drop_data_fw, self._drop_data_fw) + %Field.placeholder_text = placeholder + + +func set_value(value:String) -> void: + current_value = value + if file_mode != EditorFileDialog.FILE_MODE_OPEN_DIR: + %Field.text = value.get_file() + if len(value.get_file()) > max_text_length: + %Field.custom_minimum_size.x = get_theme_font('font', 'Label').get_string_size(value.get_file()).x + %Field.expand_to_text_length = false + %Field.size.x = 0 + else: + %Field.custom_minimum_size.x = 0 + %Field.expand_to_text_length = true + %Field.tooltip_text = value + %ClearButton.visible = !value.is_empty() and !hide_reset + else: + %Field.text = value + + +func _on_OpenButton_pressed() -> void: + find_parent('EditorView').godot_file_dialog(_on_file_dialog_selected, file_filter, file_mode, "Open "+ property_name) + + +func _on_file_dialog_selected(path:String) -> void: + set_value(path) + emit_signal("value_changed", property_name, path) + + +func clear_path() -> void: + set_value("") + emit_signal("value_changed", property_name, "") + +func _can_drop_data_fw(at_position: Vector2, data: Variant) -> bool: + if typeof(data) == TYPE_DICTIONARY and data.has('files') and len(data.files) == 1: + if file_filter: + if '*.'+data.files[0].get_extension() in file_filter: + return true + else: return true + return false + +func _drop_data_fw(at_position: Vector2, data: Variant) -> void: + _on_file_dialog_selected(data.files[0]) + + +func _on_field_focus_entered(): + $FocusStyle.show() + +func _on_field_focus_exited(): + $FocusStyle.hide() diff --git a/addons/dialogic/Editor/Events/Fields/FilePicker.tscn b/addons/dialogic/Editor/Events/Fields/FilePicker.tscn new file mode 100644 index 0000000..80c73ae --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/FilePicker.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=8 format=3 uid="uid://7mvxuaulctcq"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/FilePicker.gd" id="1_838yp"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tr837"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wq6bt"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6b7on"] + +[sub_resource type="Image" id="Image_pqmjp"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_fyskv"] +image = SubResource("Image_pqmjp") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ias3t"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="FilePicker" type="MarginContainer"] +offset_right = 160.0 +offset_bottom = 40.0 +theme_type_variation = &"DialogicEventEdit" +script = ExtResource("1_838yp") + +[node name="BG" type="PanelContainer" parent="."] +layout_mode = 2 +theme_type_variation = &"DialogicEventEdit" + +[node name="HBox" type="HBoxContainer" parent="BG"] +layout_mode = 2 +alignment = 2 + +[node name="Icon" type="TextureRect" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +mouse_filter = 2 + +[node name="Field" type="LineEdit" parent="BG/HBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 1 +theme_override_styles/normal = SubResource("StyleBoxEmpty_tr837") +theme_override_styles/focus = SubResource("StyleBoxEmpty_wq6bt") +theme_override_styles/read_only = SubResource("StyleBoxEmpty_6b7on") +expand_to_text_length = true + +[node name="OpenButton" type="Button" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_fyskv") +flat = true + +[node name="ClearButton" type="Button" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_fyskv") +flat = true + +[node name="FocusStyle" type="Panel" parent="."] +visible = false +layout_mode = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ias3t") + +[connection signal="focus_entered" from="BG/HBox/Field" to="." method="_on_field_focus_entered"] +[connection signal="focus_exited" from="BG/HBox/Field" to="." method="_on_field_focus_exited"] +[connection signal="text_submitted" from="BG/HBox/Field" to="." method="_on_file_dialog_selected"] diff --git a/addons/dialogic/Editor/Events/Fields/Label.gd b/addons/dialogic/Editor/Events/Fields/Label.gd new file mode 100644 index 0000000..b1625f1 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Label.gd @@ -0,0 +1,11 @@ +@tool +extends Control + + +@export var text: String = "Hello World" + + +func _ready(): + $Label.text = text + $Label.set('custom_colors/font_color', Color("#7b7b7b")) + diff --git a/addons/dialogic/Editor/Events/Fields/Label.tscn b/addons/dialogic/Editor/Events/Fields/Label.tscn new file mode 100644 index 0000000..6eae67b --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Label.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/dialogic/Editor/Events/Fields/Label.gd" type="Script" id=1] + +[node name="Control" type="CenterContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 1 +script = ExtResource( 1 ) + +[node name="Label" type="Label" parent="."] +margin_left = 474.0 +margin_top = 293.0 +margin_right = 550.0 +margin_bottom = 307.0 +size_flags_horizontal = 3 +custom_colors/font_color = Color( 0.482353, 0.482353, 0.482353, 1 ) +text = "Hello World" diff --git a/addons/dialogic/Editor/Events/Fields/MultilineText.gd b/addons/dialogic/Editor/Events/Fields/MultilineText.gd new file mode 100644 index 0000000..25c313c --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/MultilineText.gd @@ -0,0 +1,60 @@ +@tool +extends CodeEdit + +## Event block field that allows entering multiline text (mainly text event). + +var property_name : String +signal value_changed + +func _ready() -> void: + text_changed.connect(_on_text_changed) + syntax_highlighter = load('res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd').new() + syntax_highlighter.mode = syntax_highlighter.Modes.TEXT_EVENT_ONLY + + +func _on_text_changed(value := "") -> void: + emit_signal("value_changed", property_name, text) + request_code_completion(true) + + +func set_value(value:Variant) -> void: + text = str(value) + + +func take_autofocus() -> void: + grab_focus() + + +################################################################################ +## AUTO COMPLETION +################################################################################ + +# Called if something was typed +func _request_code_completion(force:bool): + $CodeCompletionHelper.request_code_completion(force, self) + + +# Filters the list of all possible options, depending on what was typed +# Purpose of the different Kinds is explained in [_request_code_completion] +func _filter_code_completion_candidates(candidates:Array) -> Array: + return $CodeCompletionHelper.filter_code_completion_candidates(candidates, self) + + +# Called when code completion was activated +# Inserts the selected item +func _confirm_code_completion(replace:bool) -> void: + $CodeCompletionHelper.confirm_code_completion(replace, self) + + +################################################################################ +## SYMBOL CLICKING +################################################################################ + +# Performs an action (like opening a link) when a valid symbol was clicked +func _on_symbol_lookup(symbol, line, column): + $CodeCompletionHelper.symbol_lookup(symbol, line, column) + + +# Called to test if a symbol can be clicked +func _on_symbol_validate(symbol:String) -> void: + $CodeCompletionHelper.symbol_validate(symbol, self) diff --git a/addons/dialogic/Editor/Events/Fields/MultilineText.tscn b/addons/dialogic/Editor/Events/Fields/MultilineText.tscn new file mode 100644 index 0000000..120afbe --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/MultilineText.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=6 format=3 uid="uid://dyp7m2nvab1aj"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/MultilineText.gd" id="1"] +[ext_resource type="StyleBox" path="res://addons/dialogic/Editor/Events/styles/TextBackground.tres" id="1_dkxlh"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd" id="1_wj4ha"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd" id="3_mmga0"] + +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_42qr1"] +script = ExtResource("1_wj4ha") + +[node name="MultilineText" type="CodeEdit"] +offset_right = 1152.0 +offset_bottom = 648.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/normal = ExtResource("1_dkxlh") +wrap_mode = 1 +syntax_highlighter = SubResource("SyntaxHighlighter_42qr1") +scroll_fit_content_height = true +symbol_lookup_on_click = true +delimiter_strings = Array[String]([]) +code_completion_enabled = true +code_completion_prefixes = Array[String](["[", "{"]) +indent_automatic_prefixes = Array[String]([":", "{", "[", ")"]) +auto_brace_completion_enabled = true +auto_brace_completion_pairs = { +"[": "]", +"{": "}" +} +script = ExtResource("1") + +[node name="CodeCompletionHelper" type="Node" parent="."] +script = ExtResource("3_mmga0") +mode = 0 diff --git a/addons/dialogic/Editor/Events/Fields/Number.gd b/addons/dialogic/Editor/Events/Fields/Number.gd new file mode 100644 index 0000000..3ebc70d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Number.gd @@ -0,0 +1,81 @@ +@tool +extends Control + +## Event block field for integers and floats. Improved version of the native spinbox. + +signal value_changed +var property_name : String + +@export var allow_string :bool = false +@export var step:float = 0.1 +@export var enforce_step:bool = true +@export var min:float = 0 +@export var max:float= 999 +@export var value = 0 +@export var suffix := "" + +func _ready(): + if $Value.text.is_empty(): + set_value(value) + $Spin.icon = get_theme_icon("updown", "SpinBox") + +func set_value(new_value) -> void: + _on_value_text_submitted(str(new_value)) + $Value.tooltip_text = tooltip_text + +func get_value(): + return value + +func use_timestamp_mode(): + step = 0.1 + suffix = ' sec' + max = 9999 #2.7 hours. Enough, or is more needed? + +func use_float_mode(): + step = 0.1 + suffix = "" + enforce_step = false + +func use_int_mode(): + step = 1 + suffix = "" + +func use_decibel_mode(): + max = 6 + suffix = "dB" + min = -80 + +func set_max_value(value): + max = value + +func set_min_value(value): + min = value + +func _on_spin_gui_input(event): + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + if event.position.y < size.y/2.0: + _on_value_text_submitted(str(value+step)) + else: + _on_value_text_submitted(str(value-step)) + + +func _on_value_text_submitted(new_text): + new_text = new_text.trim_suffix(suffix) + if new_text.is_valid_float(): + var temp:float = min(max(new_text.to_float(), min), max) + if !enforce_step or is_equal_approx(temp/step, round(temp/step)): + value = temp + else: + value = snapped(temp, step) + elif allow_string: + value = new_text + $Value.text = str(value)+suffix + value_changed.emit(property_name, value) + + +func _on_value_focus_exited(): + _on_value_text_submitted($Value.text) + + +func take_autofocus(): + $Value.grab_focus() diff --git a/addons/dialogic/Editor/Events/Fields/Number.tscn b/addons/dialogic/Editor/Events/Fields/Number.tscn new file mode 100644 index 0000000..e41eceb --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Number.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=4 format=3 uid="uid://kdpp3mibml33"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/Number.gd" id="1"] + +[sub_resource type="Image" id="Image_yitwe"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 75, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 99, 255, 255, 255, 191, 255, 255, 255, 191, 255, 255, 255, 99, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 122, 255, 255, 255, 191, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 191, 255, 255, 255, 121, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 12, 255, 255, 255, 142, 255, 255, 255, 191, 255, 255, 255, 181, 255, 255, 255, 53, 255, 255, 255, 54, 255, 255, 255, 181, 255, 255, 255, 191, 255, 255, 255, 142, 255, 255, 255, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 71, 255, 255, 255, 191, 255, 255, 255, 171, 255, 255, 255, 36, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 36, 255, 255, 255, 171, 255, 255, 255, 191, 255, 255, 255, 71, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 86, 255, 255, 255, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 22, 255, 255, 255, 86, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 86, 255, 255, 255, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 22, 255, 255, 255, 86, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 71, 255, 255, 255, 191, 255, 255, 255, 171, 255, 255, 255, 36, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 36, 255, 255, 255, 171, 255, 255, 255, 191, 255, 255, 255, 71, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 12, 255, 255, 255, 142, 255, 255, 255, 191, 255, 255, 255, 181, 255, 255, 255, 54, 255, 255, 255, 54, 255, 255, 255, 182, 255, 255, 255, 191, 255, 255, 255, 142, 255, 255, 255, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 121, 255, 255, 255, 191, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 191, 255, 255, 255, 121, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 98, 255, 255, 255, 191, 255, 255, 255, 191, 255, 255, 255, 98, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_uwu06"] +image = SubResource("Image_yitwe") + +[node name="NumberValue" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -1036.0 +offset_bottom = -615.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 +script = ExtResource("1") +value = 0.0 + +[node name="Value" type="LineEdit" parent="."] +layout_mode = 2 +theme_type_variation = &"DialogicEventEdit" +theme_override_constants/minimum_character_width = 0 +text = "0" +expand_to_text_length = true + +[node name="Spin" type="Button" parent="."] +layout_mode = 2 +size_flags_vertical = 4 +focus_mode = 0 +icon = SubResource("ImageTexture_uwu06") +flat = true + +[connection signal="focus_exited" from="Value" to="." method="_on_value_focus_exited"] +[connection signal="text_submitted" from="Value" to="." method="_on_value_text_submitted"] +[connection signal="gui_input" from="Spin" to="." method="_on_spin_gui_input"] diff --git a/addons/dialogic/Editor/Events/Fields/OptionSelector.gd b/addons/dialogic/Editor/Events/Fields/OptionSelector.gd new file mode 100644 index 0000000..3f21955 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/OptionSelector.gd @@ -0,0 +1,63 @@ +@tool +extends MenuButton + +## Event block field for constant options. For varying options use ComplexPicker. + +signal value_changed +var property_name : String + +var options : Array = [] + +## if true, only the symbol will be displayed. In the dropdown text will be visible. +## Useful for making UI simpler +var symbol_only := false: + set(value): + symbol_only = value + if value: text = "" + +var current_value :Variant = -1 + +func _ready() -> void: +# add_theme_stylebox_override("normal", get_theme_stylebox("normal", "LineEdit")) +# add_theme_stylebox_override("hover", get_theme_stylebox("normal", "LineEdit")) + +# add_theme_stylebox_override("focus", get_theme_stylebox("focus", "LineEdit")) +# add_theme_stylebox_override("disabled", get_theme_stylebox("normal", "LineEdit")) + add_theme_color_override("font_disabled_color", get_theme_color("font_color", "MenuButton")) + about_to_popup.connect(insert_options) + get_popup().index_pressed.connect(index_pressed) + + +func set_value(value) -> void: + for option in options: + if option['value'] == value: + if typeof(option.get('icon')) == TYPE_ARRAY: + option.icon = callv('get_theme_icon', option.get('icon')) + if !symbol_only: + text = option['label'] + icon = option.get('icon', null) + current_value = value + + +func get_value() -> Variant: + return current_value + + +func insert_options() -> void: + get_popup().clear() + + var idx := 0 + for option in options: + if typeof(option.get('icon')) == TYPE_ARRAY: + option.icon = callv('get_theme_icon', option.get('icon')) + get_popup().add_icon_item(option.get('icon', null), option['label']) + get_popup().set_item_metadata(idx, option['value']) + idx += 1 + + +func index_pressed(idx:int) -> void: + current_value = idx + if !symbol_only: + text = get_popup().get_item_text(idx) + icon = get_popup().get_item_icon(idx) + value_changed.emit(property_name, get_popup().get_item_metadata(idx)) diff --git a/addons/dialogic/Editor/Events/Fields/OptionSelector.tscn b/addons/dialogic/Editor/Events/Fields/OptionSelector.tscn new file mode 100644 index 0000000..15c2458 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/OptionSelector.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=3 uid="uid://d3bhehatwoio"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/OptionSelector.gd" id="1"] + +[node name="OptionSelector" type="MenuButton"] +offset_right = 137.0 +offset_bottom = 43.0 +focus_mode = 2 +theme_type_variation = &"DialogicEventEdit" +theme_override_colors/font_disabled_color = Color(0.875, 0.875, 0.875, 1) +text = "Placeholder Text" +flat = false +script = ExtResource("1") diff --git a/addons/dialogic/Editor/Events/Fields/SinglelineText.gd b/addons/dialogic/Editor/Events/Fields/SinglelineText.gd new file mode 100644 index 0000000..0dddfdf --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/SinglelineText.gd @@ -0,0 +1,29 @@ +@tool +extends LineEdit + +## Event block field for a single line of text. + +signal value_changed +var property_name : String + +var placeholder :String= "": + set(value): + placeholder = value + placeholder_text = placeholder + + +func _ready() -> void: + text_changed.connect(_on_text_changed) +# add_theme_stylebox_override('normal', get_theme_stylebox('normal', 'LineEdit')) +# add_theme_stylebox_override('focus', get_theme_stylebox('focus', 'LineEdit')) + + +func _on_text_changed(value := "") -> void: + value_changed.emit(property_name, text) + + +func set_value(value:String) -> void: + text = str(value) + +func take_autofocus(): + grab_focus() diff --git a/addons/dialogic/Editor/Events/Fields/SinglelineText.tscn b/addons/dialogic/Editor/Events/Fields/SinglelineText.tscn new file mode 100644 index 0000000..327083c --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/SinglelineText.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://c0vkcehgjsjy"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/SinglelineText.gd" id="1"] + +[node name="SingleLineText" type="LineEdit"] +offset_right = 1152.0 +offset_bottom = 81.0 +theme_type_variation = &"DialogicEventEdit" +expand_to_text_length = true +script = ExtResource("1") diff --git a/addons/dialogic/Editor/Events/Fields/Vector2.gd b/addons/dialogic/Editor/Events/Fields/Vector2.gd new file mode 100644 index 0000000..3c02d2e --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Vector2.gd @@ -0,0 +1,26 @@ +@tool +extends Control + +## Event block field for a vector. + +signal value_changed +var property_name : String + +var current_value := Vector2() + +func _ready() -> void: + $X.value_changed.connect(_on_value_changed) + $Y.value_changed.connect(_on_value_changed) + + +func _on_value_changed(property:String, value:float) -> void: + current_value = Vector2($X.value, $Y.value) + emit_signal("value_changed", property_name, current_value) + + +func set_value(value:Vector2) -> void: + $X.tooltip_text = tooltip_text + $Y.tooltip_text = tooltip_text + $X.set_value(value.x) + $Y.set_value(value.y) + current_value = value diff --git a/addons/dialogic/Editor/Events/Fields/Vector2.tscn b/addons/dialogic/Editor/Events/Fields/Vector2.tscn new file mode 100644 index 0000000..6e55d69 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/Vector2.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://dtimnsj014cu"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/Fields/Vector2.gd" id="1_288li"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/Number.tscn" id="3_l3bum"] + +[node name="Vector2" type="HBoxContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +theme_override_constants/separation = -7 +script = ExtResource("1_288li") + +[node name="X" parent="." instance=ExtResource("3_l3bum")] +layout_mode = 2 +step = 1.0 +min = -9999.0 +max = 9999.0 +suffix = "x" + +[node name="Y" parent="." instance=ExtResource("3_l3bum")] +layout_mode = 2 +step = 1.0 +min = -9999.0 +max = 9999.0 +suffix = "y" diff --git a/addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres b/addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres new file mode 100644 index 0000000..fa952ee --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres @@ -0,0 +1,50 @@ +[gd_resource type="Theme" load_steps=3 format=3 uid="uid://d3g4i4dshtdpu"] + +[sub_resource type="StyleBoxFlat" id="1"] +content_margin_left = 30.0 +content_margin_top = 5.0 +content_margin_right = 20.0 +content_margin_bottom = 5.0 +bg_color = Color(0.12549, 0.141176, 0.192157, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.0980392, 0.113725, 0.152941, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="2"] +content_margin_left = 11.0 +content_margin_top = 5.0 +content_margin_right = 20.0 +content_margin_bottom = 5.0 +bg_color = Color(0.12549, 0.141176, 0.192157, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.0980392, 0.113725, 0.152941, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[resource] +LineEdit/colors/clear_button_color = Color(0, 0, 0, 1) +LineEdit/colors/clear_button_color_pressed = Color(0, 0, 0, 1) +LineEdit/colors/cursor_color = Color(1, 1, 1, 1) +LineEdit/colors/font_color = Color(1, 1, 1, 1) +LineEdit/colors/font_color_selected = Color(1, 1, 1, 1) +LineEdit/colors/font_color_uneditable = Color(1, 1, 1, 1) +LineEdit/colors/selection_color = Color(1, 1, 1, 0.235294) +LineEdit/constants/minimum_spaces = 10 +LineEdit/fonts/font = null +LineEdit/icons/clear = null +LineEdit/styles/focus = SubResource("1") +LineEdit/styles/normal = SubResource("2") +LineEdit/styles/read_only = SubResource("1") +LineEditWithIcon/base_type = &"LineEdit" +LineEditWithIcon/styles/normal = SubResource("1") diff --git a/addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres b/addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres new file mode 100644 index 0000000..ecf8376 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres @@ -0,0 +1,11 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 25.0 +content_margin_right = 10.0 +content_margin_top = 4.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.466667, 0.466667, 0.466667, 0.141176 ) +border_width_bottom = 2 +corner_radius_top_left = 4 +corner_radius_top_right = 4 diff --git a/addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres b/addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres new file mode 100644 index 0000000..d14860a --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 25.0 +content_margin_right = 10.0 +content_margin_top = 4.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.180392, 0.180392, 0.180392, 0.219608 ) +draw_center = false +border_width_bottom = 2 +border_color = Color( 0.8, 0.8, 0.8, 0.286275 ) +corner_radius_top_left = 4 +corner_radius_top_right = 4 diff --git a/addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres b/addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres new file mode 100644 index 0000000..314544b --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://c8k6tbipodsg"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(0, 0, 0, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.8, 0.8, 0.8, 0.109804) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 diff --git a/addons/dialogic/Editor/Events/styles/SectionPanel.tres b/addons/dialogic/Editor/Events/styles/SectionPanel.tres new file mode 100644 index 0000000..b886c6e --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SectionPanel.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 6.0 +content_margin_right = 6.0 +content_margin_top = 5.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.6, 0.6, 0.6, 0 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.2, 0.227451, 0.309804, 1 ) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 diff --git a/addons/dialogic/Editor/Events/styles/SettingsFieldBackground.tres b/addons/dialogic/Editor/Events/styles/SettingsFieldBackground.tres new file mode 100644 index 0000000..91b4b38 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SettingsFieldBackground.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 30.0 +content_margin_right = 25.0 +content_margin_top = 5.0 +content_margin_bottom = 5.0 +bg_color = Color( 0.12549, 0.141176, 0.192157, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.0980392, 0.113725, 0.152941, 1 ) +border_blend = true +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 diff --git a/addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres b/addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres new file mode 100644 index 0000000..5be19d4 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 3.0 +content_margin_right = 3.0 +content_margin_top = 3.0 +content_margin_bottom = 3.0 +bg_color = Color( 0.2, 0.231373, 0.309804, 0.317647 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 diff --git a/addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres b/addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres new file mode 100644 index 0000000..e5c06b4 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 3.0 +content_margin_right = 3.0 +content_margin_top = 3.0 +content_margin_bottom = 3.0 +bg_color = Color( 0.2, 0.231373, 0.309804, 0.235294 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 diff --git a/addons/dialogic/Editor/Events/styles/TextBackground.tres b/addons/dialogic/Editor/Events/styles/TextBackground.tres new file mode 100644 index 0000000..0d74e3d --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/TextBackground.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://cu8otiwksn8ma"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 13.0 +content_margin_bottom = 2.0 +bg_color = Color(1, 1, 1, 0.0784314) +border_color = Color(0.454902, 0.454902, 0.454902, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 diff --git a/addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres b/addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres new file mode 100644 index 0000000..603fe13 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres @@ -0,0 +1,16 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://obyrr26pqk2p"] + +[resource] +content_margin_left = 7.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.776471, 0.776471, 0.776471, 0.207843) +border_width_left = 3 +border_color = Color(1, 1, 1, 1) +corner_radius_top_left = 1 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 1 +expand_margin_top = 3.0 +expand_margin_bottom = 3.0 diff --git a/addons/dialogic/Editor/Events/styles/unselected_stylebox.tres b/addons/dialogic/Editor/Events/styles/unselected_stylebox.tres new file mode 100644 index 0000000..f7cf0af --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/unselected_stylebox.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxEmpty" format=3 uid="uid://cl75ikyq2is7c"] + +[resource] +content_margin_left = 7.0 diff --git a/addons/dialogic/Editor/HomePage/home_page.gd b/addons/dialogic/Editor/HomePage/home_page.gd new file mode 100644 index 0000000..a2044e5 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/home_page.gd @@ -0,0 +1,86 @@ +@tool +extends DialogicEditor + +## A Main page in the dialogic editor. + +var tips : Array = [] + + + +func _get_icon() -> Texture: + return load("res://addons/dialogic/Editor/Images/plugin-icon.svg") + + +func _ready(): + self_modulate = get_theme_color("font_color", "Editor") + self_modulate.a = 0.2 + + var edit_scale := DialogicUtil.get_editor_scale() + %HomePageBox.custom_minimum_size = Vector2(600, 350)*edit_scale + %TopPanel.custom_minimum_size.y = 100*edit_scale + %VersionLabel.set('theme_override_font_sizes/font_size', 10 * edit_scale) + var plugin_cfg := ConfigFile.new() + plugin_cfg.load("res://addons/dialogic/plugin.cfg") + %VersionLabel.text = plugin_cfg.get_value('plugin', 'version', 'unknown version') + + %BottomPanel.self_modulate = get_theme_color("dark_color_3", "Editor") + + %RandomTipLabel.add_theme_color_override("font_color", get_theme_color("property_color_z", "Editor")) + %RandomTipMoreButton.icon = get_theme_icon("ExternalLink", "EditorIcons") + + + +func _register(): + editors_manager.register_simple_editor(self) + + self.alternative_text = "Welcome to dialogic!" + + + +func _open(extra_info:Variant="") -> void: + if tips.is_empty(): + var file := FileAccess.open('res://addons/dialogic/Editor/HomePage/tips.txt', FileAccess.READ) + tips = file.get_as_text().split('\n') + tips = tips.filter(func(item): return !item.is_empty()) + + randomize() + var tip :String = tips[randi()%len(tips)] + var text := tip.get_slice(';',0).strip_edges() + var action := tip.get_slice(';',1).strip_edges() + if action == text: + action = "" + show_tip(text, action) + + +func show_tip(text:String='', action:String='') -> void: + if text.is_empty(): + %TipBox.hide() + %RandomTipLabel.hide() + return + + %TipBox.show() + %RandomTipLabel.show() + %RandomTip.text = '[i]'+text + + if action.is_empty(): + %RandomTipMoreButton.hide() + return + + %RandomTipMoreButton.show() + + if %RandomTipMoreButton.pressed.is_connected(_on_tip_action): + %RandomTipMoreButton.pressed.disconnect(_on_tip_action) + %RandomTipMoreButton.pressed.connect(_on_tip_action.bind(action)) + + +func _on_tip_action(action:String) -> void: + if action.begins_with('https://'): + OS.shell_open(action) + return + elif action.begins_with('editor://'): + var editor_name := action.trim_prefix('editor://').get_slice('->',0) + var extra_info := action.trim_prefix('editor://').get_slice('->',1) + if editor_name in editors_manager.editors: + editors_manager.open_editor(editors_manager.editors[editor_name].node, false, extra_info) + return + print("Tip button doesn't do anything (", action, ")") diff --git a/addons/dialogic/Editor/HomePage/home_page.tscn b/addons/dialogic/Editor/HomePage/home_page.tscn new file mode 100644 index 0000000..81481e9 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/home_page.tscn @@ -0,0 +1,363 @@ +[gd_scene load_steps=23 format=3 uid="uid://cqy73hshqqgga"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/HomePage/home_page.gd" id="1_6g38w"] +[ext_resource type="Texture2D" uid="uid://cvmlp5nxb2rer" path="res://addons/dialogic/Editor/HomePage/icon_bg.png" id="1_ed1g1"] +[ext_resource type="Texture2D" uid="uid://bt87p6qlso0ya" path="res://addons/dialogic/Editor/Images/dialogic-logo.svg" id="3_3leok"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_imi2d"] +draw_center = false +corner_radius_top_left = 15 +corner_radius_top_right = 15 +shadow_color = Color(0.796078, 0.572549, 0.933333, 0.0627451) +shadow_size = 24 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n2afh"] +corner_radius_top_left = 15 +corner_radius_top_right = 15 + +[sub_resource type="Gradient" id="Gradient_lt7uf"] +colors = PackedColorArray(0.296484, 0.648457, 1, 1, 0.732014, 0.389374, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_2klx3"] +gradient = SubResource("Gradient_lt7uf") +fill_from = Vector2(0.151515, 0.272727) +fill_to = Vector2(1, 1) + +[sub_resource type="Gradient" id="Gradient_1gns2"] +offsets = PackedFloat32Array(0.302013, 0.872483) +colors = PackedColorArray(0.365323, 0.360806, 0.260695, 0, 0.615686, 0.615686, 0.615686, 0.592157) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_u0aw3"] +gradient = SubResource("Gradient_1gns2") +fill = 1 +fill_from = Vector2(0.497835, 0.493506) +fill_to = Vector2(1, 1) + +[sub_resource type="FontVariation" id="FontVariation_vepxx"] +variation_embolden = 2.0 + +[sub_resource type="LabelSettings" id="LabelSettings_w8q1h"] +font = SubResource("FontVariation_vepxx") +font_size = 40 +outline_size = 14 +outline_color = Color(0.0901961, 0.0901961, 0.0901961, 0.258824) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p7ka2"] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(1, 1, 1, 1) +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_es88k"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ce6uo"] +content_margin_left = 7.0 +content_margin_top = 7.0 +content_margin_right = 7.0 +content_margin_bottom = 14.0 +bg_color = Color(0.803922, 0.352941, 1, 0.141176) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="FontVariation" id="FontVariation_elu6e"] +variation_embolden = 1.1 + +[sub_resource type="FontVariation" id="FontVariation_5kbdj"] +variation_transform = Transform2D(1, 0.239, 0, 1, 0, 0) + +[sub_resource type="FontVariation" id="FontVariation_g0m61"] +variation_embolden = 1.43 +variation_transform = Transform2D(1, 0.343, 0, 1, 0, 0) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_a8dvw"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ckyhx"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.470588, 0.196078, 0.6, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_l1doy"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.470588, 0.196078, 0.6, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="Image" id="Image_2imc3"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_udy8i"] +image = SubResource("Image_2imc3") + +[node name="HomePage" type="TextureRect"] +self_modulate = Color(0, 0, 0, 0.2) +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -2.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_ed1g1") +expand_mode = 1 +stretch_mode = 3 +script = ExtResource("1_6g38w") + +[node name="CenterContainer" type="CenterContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HomePageBox" type="VBoxContainer" parent="CenterContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(450, 262.5) +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="TopPanel" type="Panel" parent="CenterContainer/HomePageBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 75) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_imi2d") + +[node name="Header2" type="Panel" parent="CenterContainer/HomePageBox/TopPanel"] +clip_children = 1 +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.4 +theme_override_styles/panel = SubResource("StyleBoxFlat_n2afh") + +[node name="BG" type="TextureRect" parent="CenterContainer/HomePageBox/TopPanel/Header2"] +modulate = Color(0.65098, 0.65098, 0.65098, 1) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 +texture = SubResource("GradientTexture2D_2klx3") +expand_mode = 1 + +[node name="Vignette" type="TextureRect" parent="CenterContainer/HomePageBox/TopPanel/Header2"] +modulate = Color(0, 0, 0, 1) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -166.0 +offset_bottom = 166.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_u0aw3") +expand_mode = 1 + +[node name="Logo" type="TextureRect" parent="CenterContainer/HomePageBox/TopPanel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 19.0 +offset_top = 10.0 +offset_right = -23.0 +offset_bottom = -10.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 +texture = ExtResource("3_3leok") +expand_mode = 1 +stretch_mode = 5 + +[node name="Label" type="Label" parent="CenterContainer/HomePageBox/TopPanel/Logo"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 155.0 +offset_top = -37.0 +offset_right = 185.0 +offset_bottom = 21.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = -0.201447 +text = "2" +label_settings = SubResource("LabelSettings_w8q1h") + +[node name="BottomPanel" type="PanelContainer" parent="CenterContainer/HomePageBox"] +unique_name_in_owner = true +self_modulate = Color(0, 0, 0, 1) +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_p7ka2") + +[node name="VersionLabel" type="Label" parent="CenterContainer/HomePageBox/BottomPanel"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.501961) +layout_mode = 2 +size_flags_vertical = 8 +theme_override_font_sizes/font_size = 7 +text = "2.0-Alpha-8 (for Godot 4.0.2 stable)" +horizontal_alignment = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="CenterContainer/HomePageBox/BottomPanel"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 50 + +[node name="CenterContainer" type="VBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer"] +layout_mode = 2 +size_flags_stretch_ratio = 0.4 + +[node name="Label" type="Label" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +theme_override_constants/line_spacing = 0 +text = "Documentation" + +[node name="WikiButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Wiki" +underline = 2 +uri = "https://github.com/coppolaemilio/dialogic/wiki" + +[node name="WikiGettingStartedButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Getting Started" +underline = 2 +uri = "https://github.com/coppolaemilio/dialogic/wiki/Tutorial:-Getting-Started" + +[node name="Separator" type="Control" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +custom_minimum_size = Vector2(0, 10) +layout_mode = 2 + +[node name="Label2" type="Label" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Get in touch" + +[node name="BugRequestButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Bug / Request" +underline = 2 +uri = "https://github.com/coppolaemilio/dialogic/issues/new/choose" + +[node name="DiscordButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Discord" +underline = 2 +uri = "https://discord.gg/2hHQzkf2pX" + +[node name="DonateButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Donate" +underline = 2 +uri = "https://www.patreon.com/coppolaemilio" + +[node name="CenterContainer2" type="VBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 15 + +[node name="WelcomeText" type="RichTextLabel" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2"] +visible = false +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxEmpty_es88k") +bbcode_enabled = true +text = "[center]Welcome to dialogic, a plugin that let's you easily create stories and dialogs for your game!" +fit_content = true + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2"] +layout_mode = 2 +theme_override_constants/separation = -4 +alignment = 1 + +[node name="RandomTipLabel" type="Label" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSection" +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "Random Tip" + +[node name="TipBox" type="PanelContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ce6uo") + +[node name="RandomTip" type="RichTextLabel" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/VBoxContainer/TipBox"] +unique_name_in_owner = true +clip_contents = false +layout_mode = 2 +theme_override_fonts/bold_font = SubResource("FontVariation_elu6e") +theme_override_fonts/italics_font = SubResource("FontVariation_5kbdj") +theme_override_fonts/bold_italics_font = SubResource("FontVariation_g0m61") +theme_override_styles/normal = SubResource("StyleBoxEmpty_a8dvw") +bbcode_enabled = true +text = "[i]You can[/i] [b]create custom[/b] events, [i][b]subsystems, text effects and even editors for[/b][i] [code]dialogic!" +fit_content = true + +[node name="RandomTipMoreButton" type="Button" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/VBoxContainer/TipBox/RandomTip"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -30.0 +offset_top = 1.0 +offset_right = -8.0 +offset_bottom = 23.0 +grow_horizontal = 0 +grow_vertical = 0 +tooltip_text = "Check it out!" +theme_override_styles/normal = SubResource("StyleBoxFlat_ckyhx") +theme_override_styles/hover = SubResource("StyleBoxFlat_l1doy") +icon = SubResource("ImageTexture_udy8i") +expand_icon = true diff --git a/addons/dialogic/Editor/HomePage/icon_bg.png b/addons/dialogic/Editor/HomePage/icon_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..77f127d8e6683e4fa520d7e48df25435ab78d531 GIT binary patch literal 150354 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/HomePage/icon_bg.png.import b/addons/dialogic/Editor/HomePage/icon_bg.png.import new file mode 100644 index 0000000..f4c58ef --- /dev/null +++ b/addons/dialogic/Editor/HomePage/icon_bg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvmlp5nxb2rer" +path="res://.godot/imported/icon_bg.png-5937ce0a857c4a8a9d624ea9ebf09a97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/HomePage/icon_bg.png" +dest_files=["res://.godot/imported/icon_bg.png-5937ce0a857c4a8a9d624ea9ebf09a97.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Editor/HomePage/tips.txt b/addons/dialogic/Editor/HomePage/tips.txt new file mode 100644 index 0000000..334fa65 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/tips.txt @@ -0,0 +1,11 @@ +Dialogic variables can be changed from timelines [b]and[/b] scripts! They can be used in conditions and inside of texts!; editor://VariablesEditor +You can create [b]custom modules[/b] for dialogic, including events, subsystems, text effects, ui layouts and even editors!; editor://Settings->General +If there are events you never need, you can hide them from the list in the editor!; editor://Settings->Modules +Did you know that dialogic supports translations? It does!; editor://Settings->Translations +You can use [b]bbcode effects[/b] in text events! What are they though???; https://docs.godotengine.org/en/latest/tutorials/ui/bbcode_in_richtextlabel.html +Writing [/i][i] in a text event will pick a random one of the three strings! +There are a number of cool text effects like [pause=x], [speed=x] and [portrait=x]. Try them out!; editor://Settings->DialogText +You can use scenes as portraits! This gives you basically limiteless freedom.; https://github.com/coppolaemilio/dialogic/wiki/Tutorial:-Custom-Portraits +You can use scenes as backgrounds. This way they can be animated or whatever you want! +Dialogic has a built in save and load system! It's pretty powerful!; editor://Settings->Saving +You can add multiple glossary files, each containing words that can be hovered for information!; editor://GlossaryEditor diff --git a/addons/dialogic/Editor/Images/Dropdown/default.svg b/addons/dialogic/Editor/Images/Dropdown/default.svg new file mode 100644 index 0000000..1437dbc --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/default.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/default.svg.import b/addons/dialogic/Editor/Images/Dropdown/default.svg.import new file mode 100644 index 0000000..e8c82b0 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/default.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsx8dtqf3vych" +path="res://.godot/imported/default.svg-3f34de5e45bef5de4d9c15ef78c00c6c.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/default.svg" +dest_files=["res://.godot/imported/default.svg-3f34de5e45bef5de4d9c15ef78c00c6c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/divide.svg b/addons/dialogic/Editor/Images/Dropdown/divide.svg new file mode 100644 index 0000000..7fb881f --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/divide.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/divide.svg.import b/addons/dialogic/Editor/Images/Dropdown/divide.svg.import new file mode 100644 index 0000000..9a64c5f --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/divide.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5laykjsxaxtl" +path="res://.godot/imported/divide.svg-4928f878a07ba93ebc44d8ae73ad4c1f.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/divide.svg" +dest_files=["res://.godot/imported/divide.svg-4928f878a07ba93ebc44d8ae73ad4c1f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/join.svg b/addons/dialogic/Editor/Images/Dropdown/join.svg new file mode 100644 index 0000000..9eb7aa9 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/join.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/join.svg.import b/addons/dialogic/Editor/Images/Dropdown/join.svg.import new file mode 100644 index 0000000..8342607 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/join.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7j220k0ewh35" +path="res://.godot/imported/join.svg-2f0d7b9e8e01cf0e62b8c3a85aff6213.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/join.svg" +dest_files=["res://.godot/imported/join.svg-2f0d7b9e8e01cf0e62b8c3a85aff6213.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/leave.svg b/addons/dialogic/Editor/Images/Dropdown/leave.svg new file mode 100644 index 0000000..e234619 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/leave.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/leave.svg.import b/addons/dialogic/Editor/Images/Dropdown/leave.svg.import new file mode 100644 index 0000000..bd1bff5 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/leave.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cspjyvye6c0r6" +path="res://.godot/imported/leave.svg-c936f6e3d601b8c12c23f205a765084e.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/leave.svg" +dest_files=["res://.godot/imported/leave.svg-c936f6e3d601b8c12c23f205a765084e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/minus.svg b/addons/dialogic/Editor/Images/Dropdown/minus.svg new file mode 100644 index 0000000..eb5d732 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/minus.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/minus.svg.import b/addons/dialogic/Editor/Images/Dropdown/minus.svg.import new file mode 100644 index 0000000..d44178a --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/minus.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwy14qrkfoeb" +path="res://.godot/imported/minus.svg-29f22d1aa24635bae2c03057c07be8bc.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/minus.svg" +dest_files=["res://.godot/imported/minus.svg-29f22d1aa24635bae2c03057c07be8bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/multiply.svg b/addons/dialogic/Editor/Images/Dropdown/multiply.svg new file mode 100644 index 0000000..d4327d1 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/multiply.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/multiply.svg.import b/addons/dialogic/Editor/Images/Dropdown/multiply.svg.import new file mode 100644 index 0000000..a23c37b --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/multiply.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddmapfkunbtg7" +path="res://.godot/imported/multiply.svg-0e9db99aafb66d43ee14adcca26c5b47.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/multiply.svg" +dest_files=["res://.godot/imported/multiply.svg-0e9db99aafb66d43ee14adcca26c5b47.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/plus.svg b/addons/dialogic/Editor/Images/Dropdown/plus.svg new file mode 100644 index 0000000..adf5179 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/plus.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/plus.svg.import b/addons/dialogic/Editor/Images/Dropdown/plus.svg.import new file mode 100644 index 0000000..e86414b --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/plus.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqqtygfbvgtag" +path="res://.godot/imported/plus.svg-e094b0b8505b5d910717883d06553532.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/plus.svg" +dest_files=["res://.godot/imported/plus.svg-e094b0b8505b5d910717883d06553532.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/set.svg b/addons/dialogic/Editor/Images/Dropdown/set.svg new file mode 100644 index 0000000..16c6a8b --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/set.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/set.svg.import b/addons/dialogic/Editor/Images/Dropdown/set.svg.import new file mode 100644 index 0000000..6c31572 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/set.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddcfl67v0r1lw" +path="res://.godot/imported/set.svg-f100fad003be2285d5d0da5c58417203.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/set.svg" +dest_files=["res://.godot/imported/set.svg-f100fad003be2285d5d0da5c58417203.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/update.svg b/addons/dialogic/Editor/Images/Dropdown/update.svg new file mode 100644 index 0000000..44f1f3c --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/update.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/addons/dialogic/Editor/Images/Dropdown/update.svg.import b/addons/dialogic/Editor/Images/Dropdown/update.svg.import new file mode 100644 index 0000000..17546a6 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/update.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t1roknwygcf3" +path="res://.godot/imported/update.svg-cefa0fe6bfa50911bb9a77982288e485.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/update.svg" +dest_files=["res://.godot/imported/update.svg-cefa0fe6bfa50911bb9a77982288e485.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/add-folder.svg b/addons/dialogic/Editor/Images/Pieces/add-folder.svg new file mode 100644 index 0000000..7331b61 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/add-folder.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Editor/Images/Pieces/add-folder.svg.import b/addons/dialogic/Editor/Images/Pieces/add-folder.svg.import new file mode 100644 index 0000000..b7765a4 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/add-folder.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://babwe22dqjta" +path="res://.godot/imported/add-folder.svg-41a970370f904038e63c13bddbdb6450.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/add-folder.svg" +dest_files=["res://.godot/imported/add-folder.svg-41a970370f904038e63c13bddbdb6450.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/closed-icon.svg b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg new file mode 100644 index 0000000..4032eab --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import new file mode 100644 index 0000000..146327e --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dx3o2ild56i76" +path="res://.godot/imported/closed-icon.svg-b4f16653b91d6792313a130565319b2f.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/closed-icon.svg" +dest_files=["res://.godot/imported/closed-icon.svg-b4f16653b91d6792313a130565319b2f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/expand-icon.svg b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg new file mode 100644 index 0000000..3ec3def --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import new file mode 100644 index 0000000..0813669 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl03vrbj5wsjk" +path="res://.godot/imported/expand-icon.svg-26099b197ab0f314e2253848fcc22962.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/expand-icon.svg" +dest_files=["res://.godot/imported/expand-icon.svg-26099b197ab0f314e2253848fcc22962.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/open-icon.svg b/addons/dialogic/Editor/Images/Pieces/open-icon.svg new file mode 100644 index 0000000..c66c422 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/open-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Pieces/open-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/open-icon.svg.import new file mode 100644 index 0000000..eaec29c --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/open-icon.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mc7a24bcvjo3" +path="res://.godot/imported/open-icon.svg-1a2ae6d0121a79b624c0fb87cc9ceea2.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/open-icon.svg" +dest_files=["res://.godot/imported/open-icon.svg-1a2ae6d0121a79b624c0fb87cc9ceea2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/variable.svg b/addons/dialogic/Editor/Images/Pieces/variable.svg new file mode 100644 index 0000000..236ca35 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/variable.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Pieces/variable.svg.import b/addons/dialogic/Editor/Images/Pieces/variable.svg.import new file mode 100644 index 0000000..80be2ae --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/variable.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dih1coellhwm8" +path="res://.godot/imported/variable.svg-50a50248b9d47e5556571e4111e8d5b4.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/variable.svg" +dest_files=["res://.godot/imported/variable.svg-50a50248b9d47e5556571e4111e8d5b4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/variable_icon.png b/addons/dialogic/Editor/Images/Pieces/variable_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..779e80f04b53c193feea0e0782266087d9bd1e5f GIT binary patch literal 639 zcmV-_0)YLAP)Y;O7P%A>F_c=mw7926Y43KsV409Dxz)25|%2;BRsXB~b7MwFTn)?sC0?yh}oO z34urmA%qY@2qA<)H&eEzXw+=H)4ehOjH!_F4ew(stp>#V z3_7vTo~FQ5WEoLe_&fO)5pRn)ipB}#O)!RC`EAF zXFo%o>4c0@gXU|mofdDc4K(JG5KTo_+;fZOmRI4AachGe%|XzxLsv)mhMt0kt%Gx; zJqinY0$;)QM#kBciz!!A>@d#!U+c11EZ&3b?QtEPZ?kbe%r%$RHDr!mX>5q!%&e%6 z7~Ck(egqv*e|Z}J@xbrROitbtCuR?^ZTt-s#DB=Jj!dkWJ;aK}6lMs-e;7GN#^YX@ ztuv;wQiK};nyK(+V9Z;cYCC9JYXi7EQ0>`Qw6Cn9JNS52N0dHxMnVW7gb+dqA%qYQ Z`UX0hjmKjP#Bcxr002ovPDHLkV1lEG4<`Ts literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/Pieces/variable_icon.png.import b/addons/dialogic/Editor/Images/Pieces/variable_icon.png.import new file mode 100644 index 0000000..7f8b408 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/variable_icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ikdhcat2nq2r" +path="res://.godot/imported/variable_icon.png-df9d711980209a7752dc8762037e39ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/variable_icon.png" +dest_files=["res://.godot/imported/variable_icon.png-df9d711980209a7752dc8762037e39ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Editor/Images/Pieces/warning.svg b/addons/dialogic/Editor/Images/Pieces/warning.svg new file mode 100644 index 0000000..a252bde --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/warning.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/Pieces/warning.svg.import b/addons/dialogic/Editor/Images/Pieces/warning.svg.import new file mode 100644 index 0000000..ada5976 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/warning.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4n3j4lvatwxb" +path="res://.godot/imported/warning.svg-a48ae93c4663637f2aca88d055604495.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/warning.svg" +dest_files=["res://.godot/imported/warning.svg-a48ae93c4663637f2aca88d055604495.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=3.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Resources/character.svg b/addons/dialogic/Editor/Images/Resources/character.svg new file mode 100644 index 0000000..8871f5e --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/character.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Editor/Images/Resources/character.svg.import b/addons/dialogic/Editor/Images/Resources/character.svg.import new file mode 100644 index 0000000..37eeb11 --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/character.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbea0efx0ybu7" +path="res://.godot/imported/character.svg-48bc1c93fa13733a935ca2c669d933a7.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Resources/character.svg" +dest_files=["res://.godot/imported/character.svg-48bc1c93fa13733a935ca2c669d933a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Resources/icon_character.png b/addons/dialogic/Editor/Images/Resources/icon_character.png new file mode 100644 index 0000000000000000000000000000000000000000..5858854742aa5e2f19debcb1c6310581a24ded7f GIT binary patch literal 569 zcmV-90>=G`P)Rw?;Sajb_<}tIOL=%hJ`8885m9gTr!hcxyeVg~SrG&blX(OCwcdqJPY5LUuhoe|8S zpnw87EsGyfza3n>HhEL*; + + diff --git a/addons/dialogic/Editor/Images/Resources/portrait.svg.import b/addons/dialogic/Editor/Images/Resources/portrait.svg.import new file mode 100644 index 0000000..eea180b --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/portrait.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfi7fhfc4dbc3" +path="res://.godot/imported/portrait.svg-7d29c7cfe3e086d65dce33c3d66c48cd.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Resources/portrait.svg" +dest_files=["res://.godot/imported/portrait.svg-7d29c7cfe3e086d65dce33c3d66c48cd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Toolbar/add-character.svg b/addons/dialogic/Editor/Images/Toolbar/add-character.svg new file mode 100644 index 0000000..9a42063 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-character.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Editor/Images/Toolbar/add-character.svg.import b/addons/dialogic/Editor/Images/Toolbar/add-character.svg.import new file mode 100644 index 0000000..5f2b494 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-character.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://my600mb32ydt" +path="res://.godot/imported/add-character.svg-a658b65c1225b02657a50d5c965e0d5e.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Toolbar/add-character.svg" +dest_files=["res://.godot/imported/add-character.svg-a658b65c1225b02657a50d5c965e0d5e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg new file mode 100644 index 0000000..5fa7ac1 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import new file mode 100644 index 0000000..807fec0 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bymlbr4o2m3jc" +path="res://.godot/imported/add-timeline.svg-86961b528ebdf01f585931a15fea1755.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Toolbar/add-timeline.svg" +dest_files=["res://.godot/imported/add-timeline.svg-86961b528ebdf01f585931a15fea1755.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Unknown.png b/addons/dialogic/Editor/Images/Unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..87ab9137a7d2ab521b1004222cb7070decd02141 GIT binary patch literal 3331 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 N002ovPDHLkV1mh%7zY3V literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/Unknown.png.import b/addons/dialogic/Editor/Images/Unknown.png.import new file mode 100644 index 0000000..7be217a --- /dev/null +++ b/addons/dialogic/Editor/Images/Unknown.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbf2dlmbn12h0" +path="res://.godot/imported/Unknown.png-1cc7645f56036e8d378a70ac1dd772bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Unknown.png" +dest_files=["res://.godot/imported/Unknown.png-1cc7645f56036e8d378a70ac1dd772bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Editor/Images/dialogic-logo.svg b/addons/dialogic/Editor/Images/dialogic-logo.svg new file mode 100644 index 0000000..d6e5b69 --- /dev/null +++ b/addons/dialogic/Editor/Images/dialogic-logo.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/dialogic-logo.svg.import b/addons/dialogic/Editor/Images/dialogic-logo.svg.import new file mode 100644 index 0000000..cc2421b --- /dev/null +++ b/addons/dialogic/Editor/Images/dialogic-logo.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt87p6qlso0ya" +path="res://.godot/imported/dialogic-logo.svg-e43201cabc9573eeb3f78fd91ea9d909.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/dialogic-logo.svg" +dest_files=["res://.godot/imported/dialogic-logo.svg-e43201cabc9573eeb3f78fd91ea9d909.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/dialogic/Editor/Images/plugin-icon.svg b/addons/dialogic/Editor/Images/plugin-icon.svg new file mode 100644 index 0000000..6f542b6 --- /dev/null +++ b/addons/dialogic/Editor/Images/plugin-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/plugin-icon.svg.import b/addons/dialogic/Editor/Images/plugin-icon.svg.import new file mode 100644 index 0000000..e6f203a --- /dev/null +++ b/addons/dialogic/Editor/Images/plugin-icon.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dybg3l5pwetne" +path="res://.godot/imported/plugin-icon.svg-aa6701e8ed73f5fe5d177dfddce3a0e3.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/plugin-icon.svg" +dest_files=["res://.godot/imported/plugin-icon.svg-aa6701e8ed73f5fe5d177dfddce3a0e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/preview_character.png b/addons/dialogic/Editor/Images/preview_character.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef6e853644a7d2bb7a1bf98e487c5f15847c3f6 GIT binary patch literal 63720 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๝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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/preview_character.png.import b/addons/dialogic/Editor/Images/preview_character.png.import new file mode 100644 index 0000000..abf95b1 --- /dev/null +++ b/addons/dialogic/Editor/Images/preview_character.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://41634vnjwsfw" +path="res://.godot/imported/preview_character.png-54f0625ad8281c635fea35a4930d95b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/preview_character.png" +dest_files=["res://.godot/imported/preview_character.png-54f0625ad8281c635fea35a4930d95b6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Editor/Images/preview_character_speaker.png b/addons/dialogic/Editor/Images/preview_character_speaker.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1562663021c908e055e76ae398a52d9c051b32 GIT binary patch literal 40709 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 n)H4^ml#% literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/preview_character_speaker.png.import b/addons/dialogic/Editor/Images/preview_character_speaker.png.import new file mode 100644 index 0000000..6f21e66 --- /dev/null +++ b/addons/dialogic/Editor/Images/preview_character_speaker.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp7np6b4ipm0a" +path="res://.godot/imported/preview_character_speaker.png-c0667c648e2901adcbe8bf93ddda7f06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/preview_character_speaker.png" +dest_files=["res://.godot/imported/preview_character_speaker.png-c0667c648e2901adcbe8bf93ddda7f06.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd b/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd new file mode 100644 index 0000000..1b51f30 --- /dev/null +++ b/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd @@ -0,0 +1,13 @@ +@tool +extends Label + +# Called when the node enters the scene tree for the first time. +func _ready(): + # don't load the label settings when opening as a scene + # prevents HUGE diffs + if owner.get_parent() is SubViewport: + return + label_settings = LabelSettings.new() + label_settings.font = get_theme_font("doc_italic", "EditorFonts") + label_settings.font_size = get_theme_font_size('font_size', 'Label') + label_settings.font_color = get_theme_color("accent_color", "Editor") diff --git a/addons/dialogic/Editor/Settings/settings_editor.gd b/addons/dialogic/Editor/Settings/settings_editor.gd new file mode 100644 index 0000000..fef6f39 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_editor.gd @@ -0,0 +1,169 @@ +@tool +extends DialogicEditor + +## Editor that contains all settings + +var button_group := ButtonGroup.new() +var registered_sections :Array[DialogicSettingsPage] = [] + + +func _get_title() -> String: + return "Settings" + + +func _get_icon() -> Texture: + return get_theme_icon("PluginScript", "EditorIcons") + + +func _register(): + editors_manager.register_simple_editor(self) + self.alternative_text = "Customize dialogic and it's behaviour" + + +func _ready(): + if get_parent() is SubViewport: + return + + register_settings_section("res://addons/dialogic/Editor/Settings/settings_general.tscn") + register_settings_section("res://addons/dialogic/Editor/Settings/settings_translation.tscn") + register_settings_section("res://addons/dialogic/Editor/Settings/settings_modules.tscn") + + for indexer in DialogicUtil.get_indexers(): + for settings_page in indexer._get_settings_pages(): + register_settings_section(settings_page) + + add_registered_sections() + %SettingsTabs.get_child(0).button_pressed = true + %SettingsContent.get_child(0).show() + + +func register_settings_section(path:String) -> void: + var section :Control = load(path).instantiate() + + registered_sections.append(section) + + +func add_registered_sections() -> void: + for i in %SettingsTabs.get_children(): + i.queue_free() + for i in %FeatureTabs.get_children(): + i.queue_free() + + for i in %SettingsContent.get_children(): + i.queue_free() + + + registered_sections.sort_custom(section_sort) + for section in registered_sections: + + section.name = section._get_title() + + var vbox := VBoxContainer.new() + vbox.set_meta('section', section) + vbox.size_flags_vertical = Control.SIZE_EXPAND_FILL + var hbox := HBoxContainer.new() + + var title := Label.new() + title.text = section.name + title.theme_type_variation = 'DialogicSectionBig' + hbox.add_child(title) + vbox.add_child(hbox) + + + if !section.short_info.is_empty(): + var tooltip_hint :Control = load("res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn").instantiate() + tooltip_hint.hint_text = section.short_info + hbox.add_child(tooltip_hint) + + + var scroll := ScrollContainer.new() + scroll.size_flags_horizontal = Control.SIZE_EXPAND_FILL + scroll.size_flags_vertical = Control.SIZE_EXPAND_FILL + var inner_vbox := VBoxContainer.new() + inner_vbox.size_flags_horizontal = Control.SIZE_EXPAND_FILL + inner_vbox.size_flags_vertical = Control.SIZE_EXPAND_FILL + scroll.add_child(inner_vbox) + var panel := PanelContainer.new() + panel.theme_type_variation = "DialogicPanelA" + panel.size_flags_horizontal = Control.SIZE_EXPAND_FILL + if section.size_flags_vertical == Control.SIZE_EXPAND_FILL: + panel.size_flags_vertical = Control.SIZE_EXPAND_FILL + inner_vbox.add_child(panel) + + + var info_section :Control = section._get_info_section() + if info_section != null: + inner_vbox.add_child(Control.new()) + inner_vbox.get_child(-1).custom_minimum_size.y = 50 + + inner_vbox.add_child(title.duplicate()) + inner_vbox.get_child(-1).text = "Information" + var info_panel := panel.duplicate() + info_panel.theme_type_variation = "DialogicPanelDarkA" + + inner_vbox.add_child(info_panel) + info_section.get_parent().remove_child(info_section) + info_panel.add_child(info_section) + + panel.add_child(section) + vbox.add_child(scroll) + + + var button := Button.new() + button.text = " "+section.name + button.tooltip_text = section.name + button.toggle_mode = true + button.button_group = button_group + button.expand_icon = true + button.alignment = HORIZONTAL_ALIGNMENT_LEFT + button.flat = true + button.add_theme_color_override('font_pressed_color', get_theme_color("property_color_z", "Editor")) + button.add_theme_color_override('font_hover_color', get_theme_color('warning_color', 'Editor')) + button.add_theme_color_override('font_focus_color', get_theme_color('warning_color', 'Editor')) + button.add_theme_stylebox_override('focus', StyleBoxEmpty.new()) + button.pressed.connect(open_tab.bind(vbox)) + if section._is_feature_tab(): + %FeatureTabs.add_child(button) + else: + %SettingsTabs.add_child(button) + + vbox.hide() +# if section.has_method('_get_icon'): +# icon.texture = section._get_icon() + %SettingsContent.add_child(vbox) + + +func open_tab(tab_to_show:Control) -> void: + for tab in %SettingsContent.get_children(): + tab.hide() + + tab_to_show.show() + + +func section_sort(item1:DialogicSettingsPage, item2:DialogicSettingsPage) -> bool: + if !item1._is_feature_tab() and item2._is_feature_tab(): + return true + if item1._get_priority() > item2._get_priority(): + return true + return false + + + +func _open(extra_information:Variant = null) -> void: + refresh() + # TODO recreate scroll to behaviour! +# if typeof(extra_information) == TYPE_STRING and has_node('Tabs/'+extra_information): +# $Tabs.current_tab = get_node('Tabs/'+extra_information).get_index() + + +func _close(): + for child in %SettingsContent.get_children(): + if child.get_meta('section').has_method('_about_to_close'): + child.get_meta('section')._about_to_close() + + +func refresh(): + for child in %SettingsContent.get_children(): + if child.get_meta('section').has_method('_refresh'): + child.get_meta('section')._refresh() + diff --git a/addons/dialogic/Editor/Settings/settings_editor.tscn b/addons/dialogic/Editor/Settings/settings_editor.tscn new file mode 100644 index 0000000..01d385f --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_editor.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=2 format=3 uid="uid://dganirw26brfb"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Settings/settings_editor.gd" id="1"] + +[node name="Settings" type="HSplitContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1") + +[node name="TabList" type="ScrollContainer" parent="."] +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="Margin" type="MarginContainer" parent="TabList"] +layout_mode = 2 +theme_override_constants/margin_top = 3 + +[node name="VBox" type="VBoxContainer" parent="TabList/Margin"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="TabList/Margin/VBox"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Settings" + +[node name="SettingsTabs" type="VBoxContainer" parent="TabList/Margin/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="Control" type="Control" parent="TabList/Margin/VBox"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 + +[node name="Title2" type="Label" parent="TabList/Margin/VBox"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Features" + +[node name="FeatureTabs" type="VBoxContainer" parent="TabList/Margin/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="SettingsContent" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 diff --git a/addons/dialogic/Editor/Settings/settings_general.gd b/addons/dialogic/Editor/Settings/settings_general.gd new file mode 100644 index 0000000..62076e8 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_general.gd @@ -0,0 +1,235 @@ +@tool +extends DialogicSettingsPage + +## Settings tab that holds genreal dialogic settings. + + +func _get_title() -> String: + return "General" + + +func _get_priority() -> int: + return 99 + +func _ready() -> void: + var s := DCSS.inline({ + 'padding': 5, + 'background': Color(0.545098, 0.545098, 0.545098, 0.211765) + }) + %ExtensionsFolderPicker.resource_icon = get_theme_icon("Folder", "EditorIcons") + + # Signals + %ExtensionsFolderPicker.value_changed.connect(_on_ExtensionsFolder_value_changed) + %PhysicsTimerButton.pressed.connect(_on_physics_timer_button_toggled) + + # Colors + %ResetColorsButton.icon = get_theme_icon("Reload", "EditorIcons") + %ResetColorsButton.button_up.connect(_on_reset_colors_button) + + # Extension creator + %ExtensionCreator.hide() + + +func _refresh() -> void: + %PhysicsTimerButton.button_pressed = DialogicUtil.is_physics_timer() + %LayoutNodeEndBehaviour.select(ProjectSettings.get_setting('dialogic/layout/end_behaviour', 0)) + %ExtensionsFolderPicker.set_value(ProjectSettings.get_setting('dialogic/extensions_folder', 'res://addons/dialogic_additions')) + + update_color_palette() + + %SectionList.clear() + %SectionList.create_item() + var cached_events :Array[DialogicEvent] = find_parent('Settings').editors_manager.resource_helper.event_script_cache + var sections := [] + var section_order :Array = DialogicUtil.get_editor_setting('event_section_order', ['Main', 'Logic', 'Timeline', 'Audio', 'Godot','Other', 'Helper']) + for ev in cached_events: + if !ev.event_category in sections: + sections.append(ev.event_category) + var item :TreeItem = %SectionList.create_item(null) + item.set_text(0, ev.event_category) + item.add_button(0, get_theme_icon("ArrowUp", "EditorIcons")) + item.add_button(0, get_theme_icon("ArrowDown", "EditorIcons")) + if ev.event_category in section_order: + + item.move_before(item.get_parent().get_child(min(section_order.find(ev.event_category),item.get_parent().get_child_count()-1))) + + %SectionList.get_root().get_child(0).set_button_disabled(0, 0, true) + %SectionList.get_root().get_child(-1).set_button_disabled(0, 1, true) + + +func _on_section_list_button_clicked(item:TreeItem, column, id, mouse_button_index): + if id == 0: + item.move_before(item.get_parent().get_child(item.get_index()-1)) + else: + item.move_after(item.get_parent().get_child(item.get_index()+1)) + + for child in %SectionList.get_root().get_children(): + child.set_button_disabled(0, 0, false) + child.set_button_disabled(0, 1, false) + + %SectionList.get_root().get_child(0).set_button_disabled(0, 0, true) + %SectionList.get_root().get_child(-1).set_button_disabled(0, 1, true) + + var sections := [] + for child in %SectionList.get_root().get_children(): + sections.append(child.get_text(0)) + + DialogicUtil.set_editor_setting('event_section_order', sections) + force_event_button_list_reload() + + +func force_event_button_list_reload() -> void: + find_parent('EditorsManager').editors['Timeline'].node.get_node('VisualEditor').load_event_buttons() + + +func update_color_palette() -> void: + # Color Palette + for child in %Colors.get_children(): + child.queue_free() + var _scale := DialogicUtil.get_editor_scale() + for color in DialogicUtil.get_color_palette(): + var button := ColorPickerButton.new() + button.custom_minimum_size = Vector2(50 ,50)*scale + %Colors.add_child(button) + button.color = DialogicUtil.get_color(color) + button.color_changed.connect(_on_color_change) + + +func _on_color_change(color:Color) -> void: + var new_palette := {} + for i in %Colors.get_children(): + new_palette['Color'+str(i.get_index()+1)] = i.color + DialogicUtil.set_editor_setting('color_palette', new_palette) + + + +func _on_reset_colors_button() -> void: + DialogicUtil.set_editor_setting('color_palette', null) + update_color_palette() + + +func _on_physics_timer_button_toggled(button_pressed:bool) -> void: + ProjectSettings.set_setting('dialogic/timer/process_in_physics', button_pressed) + ProjectSettings.save() + + +func _on_ExtensionsFolder_value_changed(property:String, value:String) -> void: + if value == null or value.is_empty(): + value = 'res://addons/dialogic_additions' + ProjectSettings.set_setting('dialogic/extensions_folder', value) + ProjectSettings.save() + + +func _on_layout_node_end_behaviour_item_selected(index:int) -> void: + ProjectSettings.set_setting('dialogic/layout/end_behaviour', index) + ProjectSettings.save() + + +################################################################################ +## EXTENSION CREATOR +################################################################################ + +func _on_create_extension_button_pressed() -> void: + %CreateExtensionButton.hide() + %ExtensionCreator.show() + + %NameEdit.text = "" + %NameEdit.grab_focus() + + +func _on_submit_extension_button_pressed() -> void: + if %NameEdit.text.is_empty(): + return + + var extensions_folder :String = ProjectSettings.get_setting('dialogic/extensions_folder', 'res://addons/dialogic_additions') + + extensions_folder = extensions_folder.path_join(%NameEdit.text.to_pascal_case()) + DirAccess.make_dir_recursive_absolute(extensions_folder) + var mode :int= %ExtensionMode.selected + + var file : FileAccess + var indexer_content := "@tool\nextends DialogicIndexer\n\n" + if mode != 1: # don't add event in Subsystem Only mode + indexer_content += """func _get_events() -> Array: + return [this_folder.path_join('event_"""+%NameEdit.text.to_snake_case()+""".gd')]\n\n""" + file = FileAccess.open(extensions_folder.path_join('event_'+%NameEdit.text.to_snake_case()+'.gd'), FileAccess.WRITE) + file.store_string( +"""@tool +extends DialogicEvent +class_name Dialogic"""+%NameEdit.text.to_pascal_case()+"""Event + +# Define properties of the event here + +func _execute() -> void: + # This will execute when the event is reached + finish() # called to continue with the next event + + +################################################################################ +## INITIALIZE +################################################################################ + +# Set fixed settings of this event +func _init() -> void: + event_name = \""""+%NameEdit.text.capitalize()+"""\" + event_category = "Other" + +\n +################################################################################ +## SAVING/LOADING +################################################################################ +func get_shortcode() -> String: + return \""""+%NameEdit.text.to_snake_case()+"""\" + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + #"my_parameter" : {"property": "property", "default": "Default"}, + } + +# You can alternatively overwrite these 3 functions: to_text(), from_text(), is_valid_event() + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + pass""") + + if mode != 0: # don't add subsystem in event only mode + indexer_content += """func _get_subsystems() -> Array: + return [{'name':'"""+%NameEdit.text.to_pascal_case()+"""', 'script':this_folder.path_join('subsystem_"""+%NameEdit.text.to_snake_case()+""".gd')}]""" + file = FileAccess.open(extensions_folder.path_join('subsystem_'+%NameEdit.text.to_snake_case()+'.gd'), FileAccess.WRITE) + file.store_string( +"""extends DialogicSubsystem + +## Describe the subsystems purpose here. + + +#################################################################################################### +## STATE +#################################################################################################### + +func clear_game_state(clear_flag:=Dialogic.ClearFlags.FULL_CLEAR): + pass + +func load_game_state(): + pass + + +#################################################################################################### +## MAIN METHODS +#################################################################################################### + +# Add some useful methods here. + +""") + file = FileAccess.open(extensions_folder.path_join('index.gd'), FileAccess.WRITE) + file.store_string(indexer_content) + + %ExtensionCreator.hide() + %CreateExtensionButton.show() + + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + force_event_button_list_reload() + diff --git a/addons/dialogic/Editor/Settings/settings_general.tscn b/addons/dialogic/Editor/Settings/settings_general.tscn new file mode 100644 index 0000000..fb24630 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_general.tscn @@ -0,0 +1,277 @@ +[gd_scene load_steps=6 format=3 uid="uid://b873ho41sklv8"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Settings/settings_general.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_kqhx5"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/FilePicker.tscn" id="3_i7rug"] + +[sub_resource type="Image" id="Image_pqmjp"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_fyskv"] +image = SubResource("Image_pqmjp") + +[node name="General" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2") + +[node name="PaletteTitle" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionPaletteTitle" type="Label" parent="PaletteTitle"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Color Palette" + +[node name="HintTooltip" parent="PaletteTitle" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "These colors are used for the events." +texture = SubResource("ImageTexture_fyskv") +hint_text = "These colors are used for the events." + +[node name="ResetColorsButton" type="Button" parent="PaletteTitle"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 0 +tooltip_text = "Reset Colors to default" +icon = SubResource("ImageTexture_fyskv") +flat = true + +[node name="ScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 2 +horizontal_scroll_mode = 3 +vertical_scroll_mode = 0 + +[node name="Colors" type="HBoxContainer" parent="ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionBehaviourTitle" type="Label" parent="HBoxContainer2"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Layout Node Behaviour" + +[node name="HintTooltip" parent="HBoxContainer2" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "The layout scene configured in the Layout editor is automatically +instanced when calling Dialogic.start(). Depending on your game, +you might want it to be deleted after the dialogue, be hidden +(as reinstancing often is wasting resources) or kept visible. " +texture = SubResource("ImageTexture_fyskv") +hint_text = "The layout scene configured in the Layout editor is automatically +instanced when calling Dialogic.start(). Depending on your game, +you might want it to be deleted after the dialogue, be hidden +(as reinstancing often is wasting resources) or kept visible. " + +[node name="HBoxContainer3" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer3"] +layout_mode = 2 +text = "On timeline end" + +[node name="LayoutNodeEndBehaviour" type="OptionButton" parent="HBoxContainer3"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 3 +selected = 0 +fit_to_longest_item = false +popup/item_0/text = "Delete Layout Node" +popup/item_0/id = 0 +popup/item_1/text = "Hide Layout Node" +popup/item_1/id = 1 +popup/item_2/text = "Keep Layout Node" +popup/item_2/id = 2 + +[node name="HSeparator4" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer6" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="HBoxContainer4" type="VBoxContainer" parent="HBoxContainer6"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer5" type="HBoxContainer" parent="HBoxContainer6/HBoxContainer4"] +layout_mode = 2 + +[node name="SectionExtensionsTitle" type="Label" parent="HBoxContainer6/HBoxContainer4/HBoxContainer5"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Extensions" + +[node name="HintTooltip" parent="HBoxContainer6/HBoxContainer4/HBoxContainer5" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "Configure where dialogic looks for custom modules. + +You will have to restart the project to see the change take action." +texture = SubResource("ImageTexture_fyskv") +hint_text = "Configure where dialogic looks for custom modules. + +You will have to restart the project to see the change take action." + +[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer6/HBoxContainer4"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer6/HBoxContainer4/HBoxContainer"] +layout_mode = 2 +text = "Extensions folder" + +[node name="ExtensionsFolderPicker" parent="HBoxContainer6/HBoxContainer4/HBoxContainer" instance=ExtResource("3_i7rug")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder = "res://addons/dialogic_additions/Events" +file_mode = 2 +resource_icon = SubResource("ImageTexture_fyskv") + +[node name="VSeparator" type="VSeparator" parent="HBoxContainer6"] +layout_mode = 2 + +[node name="ExtensionsPanel" type="PanelContainer" parent="HBoxContainer6"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="VBox" type="VBoxContainer" parent="HBoxContainer6/ExtensionsPanel"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer6" type="HBoxContainer" parent="HBoxContainer6/ExtensionsPanel/VBox"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer6/ExtensionsPanel/VBox/HBoxContainer6"] +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Extension Creator " + +[node name="HintTooltip" parent="HBoxContainer6/ExtensionsPanel/VBox/HBoxContainer6" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "Use the Exension Creator to quickly setup custom modules!" +texture = SubResource("ImageTexture_fyskv") +hint_text = "Use the Exension Creator to quickly setup custom modules!" + +[node name="CreateExtensionButton" type="Button" parent="HBoxContainer6/ExtensionsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Create New Extension" + +[node name="ExtensionCreator" type="VBoxContainer" parent="HBoxContainer6/ExtensionsPanel/VBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="ExtensionCreatorOptions" type="GridContainer" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator"] +layout_mode = 2 +columns = 2 + +[node name="NameLabel" type="Label" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +layout_mode = 2 +text = "Name:" + +[node name="NameEdit" type="LineEdit" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "e.g. \"Print\", \"Item\", \"Door\", \"Quest\"" + +[node name="ModeLabel" type="Label" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +layout_mode = 2 +text = "Setup mode:" + +[node name="ExtensionMode" type="OptionButton" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 4 +selected = 0 +popup/item_0/text = "Event only" +popup/item_0/id = 0 +popup/item_1/text = "Event+Subsystem" +popup/item_1/id = 1 +popup/item_2/text = "Subsystem only" +popup/item_2/id = 2 +popup/item_3/text = "Complex" +popup/item_3/id = 3 + +[node name="SubmitExtensionButton" type="Button" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator"] +unique_name_in_owner = true +layout_mode = 2 +text = "Create" + +[node name="HSeparator2" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer7" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="TimerTitle" type="Label" parent="HBoxContainer7"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Timer processing" + +[node name="HintTooltip" parent="HBoxContainer7" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "Change whether dialogics timers process in physics_process (frame-rate independent) or process." +texture = SubResource("ImageTexture_fyskv") +hint_text = "Change whether dialogics timers process in physics_process (frame-rate independent) or process." + +[node name="HBoxContainer4" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer4"] +layout_mode = 2 +text = "Process timers in physics_process" + +[node name="PhysicsTimerButton" type="CheckBox" parent="HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator5" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionSections" type="Label" parent="HBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Section Order" + +[node name="HintTooltip" parent="HBoxContainer" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "You can change the order of the event sections here. " +texture = SubResource("ImageTexture_fyskv") +hint_text = "You can change the order of the event sections here. " + +[node name="SectionList" type="Tree" parent="."] +unique_name_in_owner = true +custom_minimum_size = Vector2(150, 150) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/button_margin = 0 +allow_reselect = true +allow_rmb_select = true +hide_folding = true +hide_root = true +drop_mode_flags = 1 + +[connection signal="item_selected" from="HBoxContainer3/LayoutNodeEndBehaviour" to="." method="_on_layout_node_end_behaviour_item_selected"] +[connection signal="pressed" from="HBoxContainer6/ExtensionsPanel/VBox/CreateExtensionButton" to="." method="_on_create_extension_button_pressed"] +[connection signal="pressed" from="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/SubmitExtensionButton" to="." method="_on_submit_extension_button_pressed"] +[connection signal="button_clicked" from="SectionList" to="." method="_on_section_list_button_clicked"] diff --git a/addons/dialogic/Editor/Settings/settings_modules.gd b/addons/dialogic/Editor/Settings/settings_modules.gd new file mode 100644 index 0000000..f7a523a --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_modules.gd @@ -0,0 +1,404 @@ +@tool +extends DialogicSettingsPage + + +func _get_title() -> String: + return "Modules" + +func _get_priority() -> int: + return 0 + +func _is_feature_tab() -> bool: + return true + + +func _ready() -> void: + if get_parent() is SubViewport: + return + %Refresh.icon = get_theme_icon("Loop", "EditorIcons") + %Search.right_icon = get_theme_icon("Search", "EditorIcons") + + %Filter_Events.icon = get_theme_icon("Favorites", "EditorIcons") + %Filter_Subsystems.icon = get_theme_icon("Callable", "EditorIcons") + %Filter_Styles.icon = get_theme_icon("PopupMenu", "EditorIcons") + %Filter_EffectsAndModifiers.icon = get_theme_icon("RichTextEffect", "EditorIcons") + %Filter_Editors.icon = get_theme_icon("ConfirmationDialog", "EditorIcons") + %Filter_Settings.icon = get_theme_icon("PluginScript", "EditorIcons") + %Collapse.icon = get_theme_icon("CollapseTree", "EditorIcons") + + %EventDefaultsPanel.add_theme_stylebox_override('panel', get_theme_stylebox("Background", "EditorStyles")) + + %ExternalLink.icon = get_theme_icon("Help", "EditorIcons") + + +func _refresh() -> void: + %EventDefaultsPanel.hide() + load_modules_tree() + + +func _on_refresh_pressed() -> void: + load_modules_tree() + + +func filters_updated(fake_arg:Variant) -> void: + load_modules_tree() + + +func _on_collapse_toggled(button_pressed:bool) -> void: + for item in %Tree.get_root().get_children(): + item.collapsed = button_pressed + + if button_pressed: + %Collapse.icon = get_theme_icon("ExpandTree", "EditorIcons") + %Collapse.tooltip_text = "Expand All" + else: + %Collapse.icon = get_theme_icon("CollapseTree", "EditorIcons") + %Collapse.tooltip_text = "Collapse All" + + +func _on_search_text_changed(new_text:String) -> void: + for filter in [%Filter_Events, %Filter_Subsystems, %Filter_Editors, %Filter_EffectsAndModifiers, %Filter_Settings, %Filter_Styles]: + filter.text = "" + filter.set_meta("counter", 0) + + var hidden_events :Array= DialogicUtil.get_editor_setting('hidden_event_buttons', []) + + for child in %Tree.get_root().get_children(): + if new_text.to_lower() in child.get_text(0).to_lower() or new_text.is_empty(): + for sub_child in child.get_children(): + sub_child.visible = sub_child.get_meta('filter_button').button_pressed + sub_child.get_meta('filter_button').set_meta('counter', sub_child.get_meta('filter_button').get_meta('counter')+1) + sub_child.get_meta('filter_button').text = str(sub_child.get_meta('filter_button').get_meta('counter')) + child.visible = true + else: + for sub_child in child.get_children(): + sub_child.visible = sub_child.get_meta('filter_button').button_pressed and new_text.to_lower() in sub_child.get_text(0).to_lower() + + if new_text.to_lower() in sub_child.get_text(0).to_lower(): + sub_child.get_meta('filter_button').set_meta('counter', sub_child.get_meta('filter_button').get_meta('counter')+1) + sub_child.get_meta('filter_button').text = str(sub_child.get_meta('filter_button').get_meta('counter')) + + for i in range(child.get_button_count(0)): + child.erase_button(0, child.get_button_count(0)-1) + var any_visible := false + var counter := 0 + for sub_child in child.get_children(): + if sub_child.visible: + child.add_button(0, sub_child.get_icon(0), counter, false, sub_child.get_text(0)) + if sub_child.get_metadata(0)['type'] == 'Event' and sub_child.get_metadata(0)['hidden']: + var color : Color = sub_child.get_icon_modulate(0) + color.a = 0.5 + child.set_button_color(0, counter, color) + else: + child.set_button_color(0, counter, sub_child.get_icon_modulate(0)) + counter += 1 + any_visible = true + child.visible = any_visible + + + +func load_modules_tree() -> void: + %Tree.clear() + var root :TreeItem = %Tree.create_item() + var cached_events :Array = find_parent('EditorsManager').resource_helper.event_script_cache + var hidden_events :Array= DialogicUtil.get_editor_setting('hidden_event_buttons', []) + var indexers := DialogicUtil.get_indexers() + for i in indexers: + var module_item :TreeItem = %Tree.create_item(root) + module_item.set_text(0, i.get_script().resource_path.trim_suffix('/index.gd').get_file()) + module_item.set_metadata(0, {'type':'Module'}) + + # Events + for ev in i._get_events(): + var event_item : TreeItem = %Tree.create_item(module_item) + event_item.set_icon(0, get_theme_icon("Favorites", "EditorIcons")) + for cached_event in cached_events: + if cached_event.get_script().resource_path == ev: + event_item.set_text(0, cached_event.event_name + " Event") + event_item.set_icon_modulate(0, cached_event.event_color) + var hidden :bool = cached_event.event_name in hidden_events + event_item.set_metadata(0, {'type':'Event', 'event':cached_event, 'hidden':hidden}) + event_item.add_button(0, get_theme_icon("GuiVisibilityVisible", "EditorIcons"), 0, false, "Toggle Event Button Visibility") + if hidden: + event_item.set_button(0, 0, get_theme_icon("GuiVisibilityHidden", "EditorIcons")) + event_item.set_meta('filter_button', %Filter_Events) + event_item.visible = %Filter_Events.button_pressed + + # Subsystems + for subsys in i._get_subsystems(): + var subsys_item : TreeItem = %Tree.create_item(module_item) + subsys_item.set_icon(0, get_theme_icon("Callable", "EditorIcons")) + subsys_item.set_text(0, subsys.name + " Subsystem") + subsys_item.set_icon_modulate(0, get_theme_color("readonly_color", "Editor")) + subsys_item.set_metadata(0, {'type':'Subsystem', 'info':subsys}) + subsys_item.set_meta('filter_button', %Filter_Subsystems) + subsys_item.visible = %Filter_Subsystems.button_pressed + + # Style scenes + for style in i._get_layout_scenes(): + var style_item : TreeItem = %Tree.create_item(module_item) + style_item.set_icon(0, get_theme_icon("PopupMenu", "EditorIcons")) + style_item.set_text(0, style.name) + style_item.set_icon_modulate(0, get_theme_color("property_color_x", "Editor")) + style_item.set_metadata(0, {'type':'Style', 'info':style}) + style_item.set_meta('filter_button', %Filter_Styles) + style_item.visible = %Filter_Styles.button_pressed + + # Text Effects + for effect in i._get_text_effects(): + var effect_item : TreeItem = %Tree.create_item(module_item) + effect_item.set_icon(0, get_theme_icon("RichTextEffect", "EditorIcons")) + effect_item.set_text(0, "Text effect ["+effect.command+"]") + effect_item.set_icon_modulate(0, get_theme_color("property_color_z", "Editor")) + effect_item.set_metadata(0, {'type':'Effect', 'info':effect}) + effect_item.set_meta('filter_button', %Filter_EffectsAndModifiers) + effect_item.visible = %Filter_EffectsAndModifiers.button_pressed + + # Text Modifiers + for mod in i._get_text_modifiers(): + var mod_item : TreeItem = %Tree.create_item(module_item) + mod_item.set_icon(0, get_theme_icon("RichTextEffect", "EditorIcons")) + mod_item.set_text(0, mod.method.capitalize()) + mod_item.set_icon_modulate(0, get_theme_color("property_color_z", "Editor")) + mod_item.set_metadata(0, {'type':'Modifier', 'info':mod}) + mod_item.set_meta('filter_button', %Filter_EffectsAndModifiers) + mod_item.visible = %Filter_EffectsAndModifiers.button_pressed + + # Settings + for settings in i._get_settings_pages(): + var settings_item : TreeItem = %Tree.create_item(module_item) + settings_item.set_icon(0, get_theme_icon("PluginScript", "EditorIcons")) + settings_item.set_text(0, module_item.get_text(0) + " Settings") + settings_item.set_icon_modulate(0, get_theme_color("readonly_color", "Editor")) + settings_item.set_metadata(0, {'type':'Settings', 'info':settings}) + settings_item.set_meta('filter_button', %Filter_Settings) + settings_item.visible = %Filter_Settings.button_pressed + + # Editors + for editor in i._get_editors(): + var editor_item : TreeItem = %Tree.create_item(module_item) + editor_item.set_icon(0, get_theme_icon("ConfirmationDialog", "EditorIcons")) + editor_item.set_text(0, editor.get_file().trim_suffix('.tscn').capitalize()) + editor_item.set_icon_modulate(0, get_theme_color("readonly_color", "Editor")) + editor_item.set_metadata(0, {'type':'Editor', 'info':editor}) + editor_item.set_meta('filter_button', %Filter_Editors) + editor_item.visible = %Filter_Editors.button_pressed + + module_item.collapsed = %Collapse.button_pressed + + _on_search_text_changed(%Search.text) + if %Tree.get_root().get_child_count(): %Tree.set_selected(%Tree.get_root().get_child(0), 0) + + +func _on_tree_button_clicked(item:TreeItem, column:int, id:int, mouse_button_index:int) -> void: + match item.get_metadata(0)['type']: + 'Module': + item.collapsed = false + %Tree.set_selected(item.get_child(id), 0) + 'Event': + # Visibility item clicked + if id == 0: + var meta :Dictionary= item.get_metadata(0) + if meta['hidden']: + item.set_button(0, 0, get_theme_icon("GuiVisibilityVisible", "EditorIcons")) + item.get_parent().set_button_color(0, item.get_index(), item.get_icon_modulate(0)) + if item == %Tree.get_selected(): + %VisibilityToggle.button_pressed = true + else: + item.set_button(0, 0, get_theme_icon("GuiVisibilityHidden", "EditorIcons")) + var color : Color = item.get_icon_modulate(0) + color.a = 0.5 + item.get_parent().set_button_color(0, item.get_index(), color) + if item == %Tree.get_selected(): + %VisibilityToggle.button_pressed = false + meta['hidden'] = !meta['hidden'] + item.set_metadata(0, meta) + change_event_visibility(meta['event'], !meta['hidden']) + + +func _on_tree_item_selected() -> void: + var selected_item :TreeItem = %Tree.get_selected() + + var metadata :Variant = selected_item.get_metadata(0) + + %Title.text = selected_item.get_text(0) + %EventDefaultsPanel.hide() + %Icon.texture = null + %ExternalLink.hide() + %VisibilityToggle.hide() + + if metadata is Dictionary: + match metadata.type: + 'Event': + %GeneralInfo.text = "Events can be used in timelines and do all kinds of things. They often interact with subsystems and dialogic nodes." + + load_event_settings(metadata.event) + if %EventDefaults.get_child_count(): + %EventDefaultsPanel.show() + + if metadata.event.help_page_path: + %ExternalLink.show() + %ExternalLink.set_meta('url', metadata.event.help_page_path) + %Icon.texture = metadata.event._get_icon() + if !metadata.event.disable_editor_button: + %VisibilityToggle.show() + %VisibilityToggle.button_pressed = !metadata.event.event_name in DialogicUtil.get_editor_setting('hidden_event_buttons', []) + if %VisibilityToggle.button_pressed: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + else: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityHidden", "EditorIcons") + # ------------------------------------------------- + 'Subsystem': + %GeneralInfo.text = "Subsystems hold specialized functionality. They mostly manage communication between events and dialogic nodes. Often they provide handy methods that can be accessed by the user like this: Dialogic.Subsystem.a_method()." + # ------------------------------------------------- + 'Effect': + %GeneralInfo.text = "Text effects can be used in text events. They will be executed once reached and can take a single argument." + # ------------------------------------------------- + 'Modifier': + %GeneralInfo.text = "Modifiers can modify text from text events before it is shown." + # ------------------------------------------------- + 'Style': + %GeneralInfo.text = "Style presets can be activated and modified in the Styles editor. They provide the design of the dialog interface in your game." + # ------------------------------------------------- + 'Editor': + %GeneralInfo.text = "Editors provide a user interface for editing dialogic data." + # ------------------------------------------------- + 'Settings': + %GeneralInfo.text = "Settings pages provide settings that are usually used by subsystems, events and dialogic nodes." + # ------------------------------------------------- + '_': + %GeneralInfo.text = "" + + +func _on_external_link_pressed(): + if %ExternalLink.has_meta('url'): + OS.shell_open(%ExternalLink.get_meta('url')) + + +func change_event_visibility(event:DialogicEvent, visibility:bool) -> void: + if event: + var list :Array= DialogicUtil.get_editor_setting('hidden_event_buttons', []) + if visibility: + list.erase(event.event_name) + else: + list.append(event.event_name) + DialogicUtil.set_editor_setting('hidden_event_buttons', list) + force_event_button_list_update() + + +func _on_visibility_toggle_toggled(button_pressed:bool) -> void: + change_event_visibility(%Tree.get_selected().get_metadata(0).event, button_pressed) + + if button_pressed: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + %Tree.get_selected().set_button(0, 0, get_theme_icon("GuiVisibilityVisible", "EditorIcons")) + %Tree.get_selected().get_parent().set_button_color(0, %Tree.get_selected().get_index(), %Tree.get_selected().get_icon_modulate(0)) + else: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityHidden", "EditorIcons") + %Tree.get_selected().set_button(0, 0, get_theme_icon("GuiVisibilityHidden", "EditorIcons")) + var color : Color = %Tree.get_selected().get_icon_modulate(0) + color.a = 0.5 + %Tree.get_selected().get_parent().set_button_color(0, %Tree.get_selected().get_index(), color) + + + +func force_event_button_list_update() -> void: + find_parent('EditorsManager').editors['Timeline'].node.get_node('%VisualEditor').load_event_buttons() + +################################################################################ +## EVENT DEFAULT SETTINGS +################################################################################ +func load_event_settings(event:DialogicEvent) -> void: + for child in %EventDefaults.get_children(): + child.queue_free() + + var event_default_overrides :Dictionary = ProjectSettings.get_setting('dialogic/event_default_overrides', {}) + + var params := event.get_shortcode_parameters() + for prop in params: + # Label + var label := Label.new() + label.text = prop.capitalize() + %EventDefaults.add_child(label) + + # Editing field + var editor_node :Node = null + var current_value :Variant = params[prop].default + if event_default_overrides.get(event.event_name, {}).has(params[prop].property): + current_value = event_default_overrides.get(event.event_name, {}).get(params[prop].property) + + match typeof(event.get(params[prop].property)): + TYPE_STRING: + editor_node = LineEdit.new() + editor_node.custom_minimum_size.x = 150 + editor_node.text = str(current_value) + editor_node.text_changed.connect(_on_event_default_string_submitted.bind(params[prop].property)) + TYPE_INT, TYPE_FLOAT: + if params[prop].has('suggestions'): + editor_node = OptionButton.new() + for i in params[prop].suggestions.call(): + editor_node.add_item(i, int(params[prop].suggestions.call()[i].value)) + editor_node.select(int(current_value)) + editor_node.item_selected.connect(_on_event_default_option_selected.bind(editor_node, params[prop].property)) + else: + editor_node = SpinBox.new() + + editor_node.allow_greater = true + editor_node.allow_lesser = true + if typeof(event.get(params[prop].property)) == TYPE_INT: + editor_node.step = 1 + else: + editor_node.step = 0.001 + + editor_node.value = float(current_value) + editor_node.value_changed.connect(_on_event_default_number_changed.bind(params[prop].property)) + + TYPE_VECTOR2: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Vector2.tscn").instantiate() + editor_node.set_value(current_value) + editor_node.property_name = params[prop].property + editor_node.value_changed.connect(_on_event_default_value_changed) + + TYPE_BOOL: + editor_node = CheckBox.new() + editor_node.button_pressed = bool(current_value) + editor_node.toggled.connect(_on_event_default_bool_toggled.bind(params[prop].property)) + + TYPE_ARRAY: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/Array.tscn").instantiate() + editor_node.set_value(current_value) + editor_node.property_name = params[prop].property + editor_node.value_changed.connect(_on_event_default_value_changed) + + %EventDefaults.add_child(editor_node) + + +func set_event_default_override(prop:String, value:Variant) -> void: + var event_default_overrides :Dictionary = ProjectSettings.get_setting('dialogic/event_default_overrides', {}) + var event :DialogicEvent = %Tree.get_selected().get_metadata(0).event + + if not event_default_overrides.has(event.event_name): + event_default_overrides[event.event_name] = {} + + event_default_overrides[event.event_name][prop] = value + + ProjectSettings.set_setting('dialogic/event_default_overrides', event_default_overrides) + + + + +func _on_event_default_string_submitted(text:String, prop:String) -> void: + set_event_default_override(prop, text) + +func _on_event_default_option_selected(index:int, option_button:OptionButton, prop:String) -> void: + set_event_default_override(prop, option_button.get_item_id(index)) + +func _on_event_default_number_changed(value:float, prop:String) -> void: + set_event_default_override(prop, value) + +func _on_event_default_value_changed(prop:String, value:Vector2) -> void: + set_event_default_override(prop, value) + +func _on_event_default_bool_toggled(value:bool, prop:String) -> void: + set_event_default_override(prop, value) + diff --git a/addons/dialogic/Editor/Settings/settings_modules.tscn b/addons/dialogic/Editor/Settings/settings_modules.tscn new file mode 100644 index 0000000..bd5bf0a --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_modules.tscn @@ -0,0 +1,236 @@ +[gd_scene load_steps=7 format=3 uid="uid://o7ljiritpgap"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Settings/settings_modules.gd" id="1_l2hk0"] + +[sub_resource type="Image" id="Image_pu0o6"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_lce2m"] +image = SubResource("Image_pu0o6") + +[sub_resource type="Image" id="Image_g84xy"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 93, 93, 55, 255, 97, 97, 58, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_137g7"] +image = SubResource("Image_g84xy") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_315cl"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="ModuleManagement" type="HSplitContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = -157.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 0 +script = ExtResource("1_l2hk0") +short_info = "Here you can manage modules: +- change event defaults +- hide events from the event list" + +[node name="Overview" type="VBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="Overview"] +layout_mode = 2 +size_flags_horizontal = 3 +follow_focus = true +horizontal_scroll_mode = 3 +vertical_scroll_mode = 0 + +[node name="HBox" type="HBoxContainer" parent="Overview/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 8 +alignment = 2 + +[node name="Filter_Events" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Events" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Subsystems" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Subsystems" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_EffectsAndModifiers" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Text Effects and Modifiers" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Styles" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Preset Style Scenes" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Settings" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Settings Pages" +toggle_mode = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Editors" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Editors" +toggle_mode = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Search" type="LineEdit" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +placeholder_text = "Search" +clear_button_enabled = true + +[node name="Refresh" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Refresh" + +[node name="Collapse" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Collapse All" +toggle_mode = true + +[node name="Tree" type="Tree" parent="Overview"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +allow_reselect = true +hide_root = true + +[node name="Scroll" type="ScrollContainer" parent="."] +show_behind_parent = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +size_flags_stretch_ratio = 0.75 +horizontal_scroll_mode = 3 +vertical_scroll_mode = 0 + +[node name="Settings" type="VBoxContainer" parent="Scroll"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBox" type="HBoxContainer" parent="Scroll/Settings"] +layout_mode = 2 + +[node name="Icon" type="TextureRect" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +layout_mode = 2 +expand_mode = 3 + +[node name="Title" type="Label" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" + +[node name="ExternalLink" type="Button" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +icon = SubResource("ImageTexture_lce2m") +flat = true + +[node name="VisibilityToggle" type="Button" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +toggle_mode = true +button_pressed = true +icon = SubResource("ImageTexture_137g7") +flat = true + +[node name="EventDefaultsPanel" type="PanelContainer" parent="Scroll/Settings"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_315cl") + +[node name="VBox" type="VBoxContainer" parent="Scroll/Settings/EventDefaultsPanel"] +layout_mode = 2 + +[node name="Title" type="Label" parent="Scroll/Settings/EventDefaultsPanel/VBox"] +layout_mode = 2 +text = "Edit event defaults:" + +[node name="EventDefaults" type="GridContainer" parent="Scroll/Settings/EventDefaultsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +columns = 2 + +[node name="GeneralInfo" type="Label" parent="Scroll/Settings"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicHintText2" +autowrap_mode = 3 + +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Events" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Subsystems" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_EffectsAndModifiers" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Styles" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Settings" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Editors" to="." method="filters_updated"] +[connection signal="text_changed" from="Overview/ScrollContainer/HBox/Search" to="." method="_on_search_text_changed"] +[connection signal="pressed" from="Overview/ScrollContainer/HBox/Refresh" to="." method="_on_refresh_pressed"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Collapse" to="." method="_on_collapse_toggled"] +[connection signal="button_clicked" from="Overview/Tree" to="." method="_on_tree_button_clicked"] +[connection signal="item_selected" from="Overview/Tree" to="." method="_on_tree_item_selected"] +[connection signal="pressed" from="Scroll/Settings/HBox/ExternalLink" to="." method="_on_external_link_pressed"] +[connection signal="toggled" from="Scroll/Settings/HBox/VisibilityToggle" to="." method="_on_visibility_toggle_toggled"] diff --git a/addons/dialogic/Editor/Settings/settings_page.gd b/addons/dialogic/Editor/Settings/settings_page.gd new file mode 100644 index 0000000..b11a1fc --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_page.gd @@ -0,0 +1,35 @@ +@tool +extends Control +class_name DialogicSettingsPage + +@export_multiline var short_info := "" + +## Called to get the title of the page +func _get_title() -> String: + return name + + +## Called to get the ordering of the page +func _get_priority() -> int: + return 0 + + +## Called to know whether to put this in the features section +func _is_feature_tab() -> bool: + return false + + +## Called when the settings editor is opened +func _refresh() -> void: + pass + + +## Called before the settings editor closes (another editor is opened) +## Can be used to safe stuff +func _about_to_close() -> void: + pass + + +## Return a section with information. +func _get_info_section() -> Control: + return null diff --git a/addons/dialogic/Editor/Settings/settings_translation.gd b/addons/dialogic/Editor/Settings/settings_translation.gd new file mode 100644 index 0000000..43458dc --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_translation.gd @@ -0,0 +1,254 @@ +@tool +extends DialogicSettingsPage + +## Settings tab that allows enabeling and updating translation csv-files. + + +enum TranslationModes {PER_PROJECT, PER_TIMELINE} +var loading := false +@onready var settings_editor :Control = find_parent('Settings') + + +func _get_icon(): + return get_theme_icon("Translation", "EditorIcons") + +func _get_info_section() -> Control: + return $InfoSection + +func _is_feature_tab() -> bool: + return true + + +func _ready() -> void: + %TransEnabled.toggled.connect(store_changes) + %OrigLocale.get_suggestions_func = get_locales + %OrigLocale.resource_icon = get_theme_icon("Translation", "EditorIcons") + %OrigLocale.value_changed.connect(store_changes) + %TestingLocale.get_suggestions_func = get_locales + %TestingLocale.resource_icon = get_theme_icon("Translation", "EditorIcons") + %TestingLocale.value_changed.connect(store_changes) + %TransFolderPicker.value_changed.connect(store_changes) + + %UpdateCsvFiles.pressed.connect(update_csv_files) + %CollectTranslations.pressed.connect(collect_translations) + %TransRemove.pressed.connect(_on_erase_translations_pressed) + + + +func _refresh() -> void: + loading = true + %TransEnabled.button_pressed = ProjectSettings.get_setting('dialogic/translation/enabled', false) + %TranslationSettings.visible = %TransEnabled.button_pressed + %OrigLocale.set_value(ProjectSettings.get_setting('dialogic/translation/original_locale', TranslationServer.get_tool_locale())) + %TransMode.select(ProjectSettings.get_setting('dialogic/translation/file_mode', 1)) + %TransFolderPicker.set_value(ProjectSettings.get_setting('dialogic/translation/translation_folder', '')) + %TestingLocale.set_value(ProjectSettings.get_setting('internationalization/locale/test', '')) + loading = false + + +func store_changes(fake_arg = "", fake_arg2 = "") -> void: + if loading: return + ProjectSettings.set_setting('dialogic/translation/enabled', %TransEnabled.button_pressed) + %TranslationSettings.visible = %TransEnabled.button_pressed + ProjectSettings.set_setting('dialogic/translation/original_locale', %OrigLocale.current_value) + ProjectSettings.set_setting('dialogic/translation/file_mode', %TransMode.selected) + ProjectSettings.set_setting('dialogic/translation/translation_folder', %TransFolderPicker.current_value) + ProjectSettings.set_setting('internationalization/locale/test', %TestingLocale.current_value) + ProjectSettings.save() + + +func get_locales(filter:String) -> Dictionary: + var suggestions := {} + suggestions['Default'] = {'value':'', 'tooltip':"Will use the fallback locale set in the project settings."} + suggestions[TranslationServer.get_tool_locale()] = {'value':TranslationServer.get_tool_locale()} + for locale in TranslationServer.get_all_languages(): + suggestions[locale] = {'value':locale, 'tooltip':TranslationServer.get_language_name(locale)} + return suggestions + + +func update_csv_files() -> void: + var orig_locale :String= %OrigLocale.current_value.strip_edges() + if orig_locale.is_empty(): + orig_locale = ProjectSettings.get_setting('internationalization/locale/fallback') + %OrigLocale.set_value(orig_locale) + + var translation_mode :int = %TransMode.selected + + var counts := [0,0,0,0] # [new events, new_timelines, updated_events, updated_timelines] + var file : FileAccess + var csv_lines := [] # collects all current lines + var old_csv_lines := {} # contains already existing csv_lines as [key] = [value, value, ...] dict + + settings_editor.editors_manager.clear_editor(settings_editor.editors_manager.editors['Timeline']['node']) + + # collect old lines in per project mode + if translation_mode == TranslationModes.PER_PROJECT: + var file_path :String= ProjectSettings.get_setting('dialogic/translation/translation_folder', 'res://').path_join('dialogic_translations.csv') + if FileAccess.file_exists(file_path): + file = FileAccess.open(file_path,FileAccess.READ_WRITE) + counts[3] += 1 + while !file.eof_reached(): + var line := file.get_csv_line() + old_csv_lines[line[0]] = line + else: + counts[1] += 1 + csv_lines.append(['keys', orig_locale]) + + for timeline_path in DialogicUtil.list_resources_of_type('.dtl'): + + # collect old lines in per timeline mode + var file_path :String= timeline_path.trim_suffix('.dtl')+'_translation.csv' + if translation_mode == TranslationModes.PER_TIMELINE: + if FileAccess.file_exists(file_path): + file = FileAccess.open(file_path,FileAccess.READ_WRITE) + while !file.eof_reached(): + var line := file.get_csv_line() + old_csv_lines[line[0]] = line + csv_lines.append(['keys', orig_locale]) + + # load and process timeline (make events to resources) + var tml : DialogicTimeline = load(timeline_path) + await tml.process() + + # now collect all the current csv_lines from timeline + for event in tml.events: + if event.can_be_translated(): + if event._translation_id.is_empty(): + event.add_translation_id() + event.update_text_version() + for property in event._get_translatable_properties(): + csv_lines.append([event.get_property_translation_key(property), event._get_property_original_translation(property)]) + + # in case new translation_id's were added, we save the timeline again + tml.set_meta("timeline_not_saved", true) + ResourceSaver.save(tml, timeline_path) + + # for per_timeline mode save the file now, then reset for next timeline + if translation_mode == TranslationModes.PER_TIMELINE: + if !FileAccess.file_exists(file_path): + pass#counts[1] += 1 + elif len(csv_lines): + counts[3] += 1 + file = FileAccess.open(file_path, FileAccess.WRITE) + for line in csv_lines: + # in case there might be translations for this line already, + # add them at the end again (orig locale text is replaced). + if line[0] in old_csv_lines: + file.store_csv_line(line+Array(old_csv_lines[line[0]]).slice(2)) + counts[2] += 1 + else: + file.store_csv_line(line) + counts[0] += 1 + + csv_lines.clear() + old_csv_lines.clear() + + if translation_mode == TranslationModes.PER_PROJECT: + var file_path :String = ProjectSettings.get_setting('dialogic/translation/translation_folder', 'res://').path_join('dialogic_translations.csv') + if FileAccess.file_exists(file_path): + counts[3] += 1 + else: + counts[1] += 1 + file = FileAccess.open(file_path, FileAccess.WRITE) + for line in csv_lines: + # in case there might be translations for this line already, + # add them at the end again (orig locale text is replaced). + if line[0] in old_csv_lines: + file.store_csv_line(PackedStringArray(line)+old_csv_lines[line[0]].slice(2)) + counts[2] += 1 + else: + file.store_csv_line(line) + counts[0] += 1 + + ## ADD CREATION/UPDATE OF CHARACTER NAMES FILE HERE! + + # trigger reimport + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + %StatusMessage.text = "Indexed "+str(counts[0])+" new events ("+str(counts[2])+" were updated). \nAdded "+str(counts[1])+" new csv files ("+str(counts[3])+" were updated)." + + +func collect_translations() -> void: + var trans_files := [] + var translation_mode :int = %TransMode.selected + + if translation_mode == TranslationModes.PER_TIMELINE: + for timeline_path in DialogicUtil.list_resources_of_type('.dtl'): + for file in DialogicUtil.listdir(timeline_path.get_base_dir()): + file = timeline_path.get_base_dir().path_join(file) + if file.ends_with('.translation'): + if not file in trans_files: + trans_files.append(file) + + if translation_mode == TranslationModes.PER_PROJECT: + var trans_folder :String = ProjectSettings.get_setting('dialogic/translation/translation_folder', 'res://') + for file in DialogicUtil.listdir(trans_folder): + file = trans_folder.path_join(file) + if file.ends_with('.translation'): + if not file in trans_files: + trans_files.append(file) + + var all_trans_files : Array = ProjectSettings.get_setting('internationalization/locale/translations', []) + var orig_file_amount := len(all_trans_files) + for file in trans_files: + if not file in all_trans_files: + all_trans_files.append(file) + + ProjectSettings.set_setting('internationalization/locale/translations', PackedStringArray(all_trans_files)) + ProjectSettings.save() + + %StatusMessage.text = "Collected "+str(len(all_trans_files)-orig_file_amount) + " new translation files." + + +func _on_erase_translations_pressed(): + $EraseConfirmationDialog.popup_centered() + + +func erase_translations() -> void: + var trans_files := Array(ProjectSettings.get_setting('internationalization/locale/translations', [])) + var translation_mode : int = %TransMode.selected + + var counts := [0,0] # csv files, translation files + + if translation_mode == TranslationModes.PER_PROJECT: + var trans_path :String = ProjectSettings.get_setting('dialogic/translation/translation_folder', 'res://') + DirAccess.remove_absolute(trans_path+'dialogic_translations.csv') + DirAccess.remove_absolute(trans_path+'dialogic_translations.csv.import') + counts[0] += 1 + for x_file in DialogicUtil.listdir(trans_path): + if x_file.ends_with('.translation'): + trans_files.erase(trans_path.get_base_dir().path_join(x_file)) + DirAccess.remove_absolute(trans_path.get_base_dir().path_join(x_file)) + counts[1] += 1 + + for timeline_path in DialogicUtil.list_resources_of_type('.dtl'): + # in per project mode, remove all translation files/resources next to the timelines + if translation_mode == TranslationModes.PER_TIMELINE: + DirAccess.remove_absolute(timeline_path.trim_suffix('.dtl')+'_translation.csv') + DirAccess.remove_absolute(timeline_path.trim_suffix('.dtl')+'_translation.csv.import') + counts[0] += 1 + for x_file in DialogicUtil.listdir(timeline_path.get_base_dir()): + if x_file.ends_with('.translation'): + trans_files.erase(timeline_path.get_base_dir().path_join(x_file)) + DirAccess.remove_absolute(timeline_path.get_base_dir().path_join(x_file)) + counts[1] += 1 + + # clear the timeline events of their translation_id's + var tml:DialogicTimeline = load(timeline_path) + await tml.process() + + for event in tml.events: + if event._translation_id: + event.remove_translation_id() + event.update_text_version() + tml.set_meta("timeline_not_saved", true) + ResourceSaver.save(tml, timeline_path) + + ProjectSettings.set_setting('dialogic/translation/id_counter', 16) + ProjectSettings.set_setting('internationalization/locale/translations', PackedStringArray(trans_files)) + ProjectSettings.save() + + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + + %StatusMessage.text = "Removed "+str(counts[0])+" csv files, "+str(counts[1])+" translations and all translation id's." + _refresh() + diff --git a/addons/dialogic/Editor/Settings/settings_translation.tscn b/addons/dialogic/Editor/Settings/settings_translation.tscn new file mode 100644 index 0000000..9cc1142 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_translation.tscn @@ -0,0 +1,300 @@ +[gd_scene load_steps=7 format=3 uid="uid://chpb1mj03xjxv"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/Settings/settings_translation.gd" id="1_dvmyi"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_k2lou"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/ComplexPicker.tscn" id="3_dq4j2"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/FilePicker.tscn" id="4_kvsma"] + +[sub_resource type="Image" id="Image_o33h3"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_w0vi3"] +image = SubResource("Image_o33h3") + +[node name="Translations" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -101.0 +offset_bottom = 102.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_dvmyi") + +[node name="HBox" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Basics" type="VBoxContainer" parent="HBox"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Title" type="Label" parent="HBox/Basics"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Basics" + +[node name="VBox4" type="HBoxContainer" parent="HBox/Basics"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBox/Basics/VBox4"] +layout_mode = 2 +text = "Enable translations" + +[node name="TransEnabled" type="CheckBox" parent="HBox/Basics/VBox4"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator5" type="VSeparator" parent="HBox"] +layout_mode = 2 + +[node name="Testing" type="VBoxContainer" parent="HBox"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Title2" type="Label" parent="HBox/Testing"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Testing" + +[node name="VBox3" type="HBoxContainer" parent="HBox/Testing"] +layout_mode = 2 + +[node name="Label3" type="Label" parent="HBox/Testing/VBox3"] +layout_mode = 2 +text = "Testing locale" + +[node name="HintTooltip8" parent="HBox/Testing/VBox3" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Change this locale to test your game in a different language (only in-editor). +Equivalent of the testing local project setting. " +texture = SubResource("ImageTexture_w0vi3") +hint_text = "Change this locale to test your game in a different language (only in-editor). +Equivalent of the testing local project setting. " + +[node name="TestingLocale" parent="HBox/Testing/VBox3" instance=ExtResource("3_dq4j2")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator4" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="TranslationSettings" type="HBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="TranslationSettings"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Title2" type="Label" parent="TranslationSettings/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Settings" + +[node name="Grid" type="GridContainer" parent="TranslationSettings/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="VBox" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="Label3" type="Label" parent="TranslationSettings/VBoxContainer/Grid/VBox"] +layout_mode = 2 +text = "Default locale" + +[node name="HintTooltip" parent="TranslationSettings/VBoxContainer/Grid/VBox" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "This should be the local of the language your game is written in." +texture = SubResource("ImageTexture_w0vi3") +hint_text = "This should be the local of the language your game is written in." + +[node name="OrigLocale" parent="TranslationSettings/VBoxContainer/Grid" instance=ExtResource("3_dq4j2")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="VBox2" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="Label2" type="Label" parent="TranslationSettings/VBoxContainer/Grid/VBox2"] +layout_mode = 2 +text = "Translation file mode" + +[node name="HintTooltip2" parent="TranslationSettings/VBoxContainer/Grid/VBox2" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "You can either create one csv with all the strings from the whole +project or one csv file per timeline (will be placed next to that timeline). " +texture = SubResource("ImageTexture_w0vi3") +hint_text = "You can either create one csv with all the strings from the whole +project or one csv file per timeline (will be placed next to that timeline). " + +[node name="TransMode" type="OptionButton" parent="TranslationSettings/VBoxContainer/Grid"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 2 +selected = 0 +popup/item_0/text = "Per Project" +popup/item_0/id = 0 +popup/item_1/text = "Per Timeline" +popup/item_1/id = 1 + +[node name="TransFile" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="Label" type="Label" parent="TranslationSettings/VBoxContainer/Grid/TransFile"] +layout_mode = 2 +text = "Translations folder" + +[node name="HintTooltip3" parent="TranslationSettings/VBoxContainer/Grid/TransFile" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Choose a folder general translations will be saved to. " +texture = SubResource("ImageTexture_w0vi3") +hint_text = "Choose a folder general translations will be saved to. " + +[node name="TransFolderPicker" parent="TranslationSettings/VBoxContainer/Grid" instance=ExtResource("4_kvsma")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +file_mode = 2 + +[node name="HSeparator6" type="VSeparator" parent="TranslationSettings"] +layout_mode = 2 + +[node name="VBoxContainer2" type="VBoxContainer" parent="TranslationSettings"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="TranslationSettings/VBoxContainer2"] +layout_mode = 2 + +[node name="Title3" type="Label" parent="TranslationSettings/VBoxContainer2/HBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Actions" + +[node name="HintTooltip4" parent="TranslationSettings/VBoxContainer2/HBoxContainer" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Check the Information to learn more about the individual actions." +texture = SubResource("ImageTexture_w0vi3") +hint_text = "Check the Information to learn more about the individual actions." + +[node name="Actions" type="GridContainer" parent="TranslationSettings/VBoxContainer2"] +layout_mode = 2 +columns = 2 + +[node name="UpdateCsvFiles" type="Button" parent="TranslationSettings/VBoxContainer2/Actions"] +unique_name_in_owner = true +layout_mode = 2 +text = "Update CSV files" + +[node name="HintTooltip5" parent="TranslationSettings/VBoxContainer2/Actions" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Will check all timelines for events that haven't been added to the csv file(s) and adds them. " +texture = SubResource("ImageTexture_w0vi3") +hint_text = "Will check all timelines for events that haven't been added to the csv file(s) and adds them. " + +[node name="CollectTranslations" type="Button" parent="TranslationSettings/VBoxContainer2/Actions"] +unique_name_in_owner = true +layout_mode = 2 +text = "Collect translations" + +[node name="HintTooltip6" parent="TranslationSettings/VBoxContainer2/Actions" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "When you've added translations to a csv file, +godot will import them as .translation files. +These have to be added to a list (Project Settings > Localization) +and this is a quick way to do so." +texture = SubResource("ImageTexture_w0vi3") +hint_text = "When you've added translations to a csv file, +godot will import them as .translation files. +These have to be added to a list (Project Settings > Localization) +and this is a quick way to do so." + +[node name="HSeparator3" type="HSeparator" parent="TranslationSettings/VBoxContainer2/Actions"] +layout_mode = 2 + +[node name="HSeparator4" type="HSeparator" parent="TranslationSettings/VBoxContainer2/Actions"] +layout_mode = 2 + +[node name="TransRemove" type="Button" parent="TranslationSettings/VBoxContainer2/Actions"] +unique_name_in_owner = true +layout_mode = 2 +text = "Remove translations" + +[node name="HintTooltip7" parent="TranslationSettings/VBoxContainer2/Actions" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Be very careful with this button. It will try to delete any +.csv and .translation files that are related to dialogic. +It will also remove translation ids from all events. " +texture = SubResource("ImageTexture_w0vi3") +hint_text = "Be very careful with this button. It will try to delete any +.csv and .translation files that are related to dialogic. +It will also remove translation ids from all events. " + +[node name="StatusMessage" type="Label" parent="TranslationSettings/VBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +autowrap_mode = 3 + +[node name="InfoSection" type="VBoxContainer" parent="."] +layout_mode = 2 + +[node name="Setup" type="VBoxContainer" parent="InfoSection"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SetupTitle" type="Label" parent="InfoSection/Setup"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Setting up translations" + +[node name="Label2" type="Label" parent="InfoSection/Setup"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "1. Enable translations +2. Set default locale (the language you used) and file mode. For per-project-mode also select a folder. In per-timeline mode files will be put next to timelines (and need to stay there!). +3. Hit \"Update CSV files\". This will create new csv files containing all translatable strings from your timelnes as well as one for the character names. +4. Wait until reimport is finnished. Then click \"Collect translations\"" +autowrap_mode = 3 + +[node name="HSeparator" type="HSeparator" parent="InfoSection"] +layout_mode = 2 + +[node name="Workflow" type="VBoxContainer" parent="InfoSection"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="WorkflowTitle" type="Label" parent="InfoSection/Workflow"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "How to work with translations" + +[node name="Label" type="Label" parent="InfoSection/Workflow"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Editing: +You can edit the csv files in most table editors (like google sheets or libre office calc). You can add new languages by creating a new column with a valid locale in the first cell. After doing this you will have to hit \"Collect translations\" again. + +Updating: +If you make changes to your timelines after having created translations, just hit \"Update CSV files\" again, it will not remove changes already made to the file. + +Testing: +You can test in different languages by editing the testing locale. + +" +autowrap_mode = 3 + +[node name="EraseConfirmationDialog" type="ConfirmationDialog" parent="."] +size = Vector2i(200, 187) +ok_button_text = "Yes" +dialog_text = "This will permanently delete all translation files created by dialogic. Are you sure this is what you want?" +dialog_autowrap = true + +[connection signal="confirmed" from="EraseConfirmationDialog" to="." method="erase_translations"] diff --git a/addons/dialogic/Editor/Theme/MainTheme.tres b/addons/dialogic/Editor/Theme/MainTheme.tres new file mode 100644 index 0000000..bd77e0f --- /dev/null +++ b/addons/dialogic/Editor/Theme/MainTheme.tres @@ -0,0 +1,3 @@ +[gd_resource type="Theme" format=3 uid="uid://cqst728xxipcw"] + +[resource] diff --git a/addons/dialogic/Editor/Theme/PickerTheme.tres b/addons/dialogic/Editor/Theme/PickerTheme.tres new file mode 100644 index 0000000..36b1955 --- /dev/null +++ b/addons/dialogic/Editor/Theme/PickerTheme.tres @@ -0,0 +1,7 @@ +[gd_resource type="Theme" format=2] + +[resource] +Button/colors/font_color = Color( 1, 1, 1, 1 ) +Button/colors/font_color_disabled = Color( 0.901961, 0.901961, 0.901961, 0.2 ) +Button/colors/font_color_hover = Color( 0.870588, 0.870588, 0.870588, 1 ) +Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd b/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd new file mode 100644 index 0000000..f21dd42 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd @@ -0,0 +1,269 @@ +@tool +extends Node + +enum Modes {TEXT_EVENT_ONLY, FULL_HIGHLIGHTING} +@export var mode := Modes.FULL_HIGHLIGHTING + +# These RegEx's are used to deduce information from the current line for auto-completion + +# To find the currently typed word and the symbol before +var completion_word_regex := RegEx.new() +# To find the shortcode of the current shortcode event (basically the type) +var completion_shortcode_getter_regex := RegEx.new() +# To find the parameter name of the current if typing a value +var completion_shortcode_param_getter_regex := RegEx.new() + +# Stores references to all shortcode events for parameter and value suggestions +var shortcode_events := {} +var custom_syntax_events := [] +var text_event :DialogicTextEvent = null + +func _ready(): + # Compile RegEx's + completion_word_regex.compile("(?(\\W)|^)(?\\w*)\\x{FFFF}") + completion_shortcode_getter_regex.compile("\\[(?\\w*)") + completion_shortcode_param_getter_regex.compile("(?\\w*)\\W*=\\s*\"?(\\w|\\s)*"+String.chr(0xFFFF)) + +################################################################################ +## AUTO COMPLETION +################################################################################ + +# Helper that gets the current line with a special character where the caret is +func get_code_completion_line(text:CodeEdit) -> String: + return text.get_line(text.get_caret_line()).insert(text.get_caret_column(), String.chr(0xFFFF)).strip_edges() + + +# Helper that gets the currently typed word +func get_code_completion_word(text:CodeEdit) -> String: + var result := completion_word_regex.search(get_code_completion_line(text)) + return result.get_string('word') if result else "" + + +# Helper that gets the symbol before the current word +func get_code_completion_prev_symbol(text:CodeEdit) -> String: + var result := completion_word_regex.search(get_code_completion_line(text)) + return result.get_string('s') if result else "" + + +func get_line_untill_caret(line:String) -> String: + return line.substr(0, line.find(String.chr(0xFFFF))) + + +# Called if something was typed +# Adds all kinds of options depending on the +# content of the current line, the last word and the symbol that came before +# Triggers opening of the popup +func request_code_completion(force:bool, text:CodeEdit) -> void: + ## TODO remove this once https://github.com/godotengine/godot/issues/38560 is fixed + if mode != Modes.FULL_HIGHLIGHTING: + return + + # make sure shortcode event references are loaded + if mode == Modes.FULL_HIGHLIGHTING: + var hidden_events :Array= DialogicUtil.get_editor_setting('hidden_event_buttons') + if shortcode_events.is_empty(): + for event in text.timeline_editor.editors_manager.resource_helper.event_script_cache: + if event.get_shortcode() != 'default_shortcode': + shortcode_events[event.get_shortcode()] = event + + else: + custom_syntax_events.append(event) + if event.event_name in hidden_events: + event.set_meta('hidden', true) + if event is DialogicTextEvent: + text_event = event + # this is done to force-load the text effects regex which is used below + event.load_text_effects() + + # fill helpers + var line := get_code_completion_line(text) + var word := get_code_completion_word(text) + var symbol := get_code_completion_prev_symbol(text) + + + ## Note on use of KIND types for options. + # These types are mostly useless for us. + # However I decidede to assign some special cases for them: + # - KIND_PLAIN_TEXT is only shown if the beginnging of the option is already typed + # !word.is_empty() and option.begins_with(word) + # - KIND_CLASS is only shown if anything from the options is already typed + # !word.is_empty() and word in option + # - KIND_CONSTANT is shown and checked against the beginning + # option.begins_with(word) + # - KIND_MEMBER is shown and searched completely + # word in option + + ## Note on VALUE key + # The value key is used to store a potential closing letter for the completion. + # The completion will check if the letter is already present and add it otherwise. + + # Shortcode event suggestions + if line.begins_with('[') and !text_event.text_effects_regex.search(line.get_slice(' ', 0)) and mode == Modes.FULL_HIGHLIGHTING: + if symbol == '[': + # suggest shortcodes if a shortcode event has just begun + var shortcodes := shortcode_events.keys() + shortcodes.sort() + for shortcode in shortcodes: + if shortcode_events[shortcode].get_meta('hidden', false): + continue + if shortcode_events[shortcode].get_shortcode_parameters().is_empty(): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, shortcode, shortcode, shortcode_events[shortcode].event_color.lerp(text.syntax_highlighter.normal_color, 0.3), shortcode_events[shortcode]._get_icon()) + else: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, shortcode, shortcode+" ", shortcode_events[shortcode].event_color.lerp(text.syntax_highlighter.normal_color, 0.3), shortcode_events[shortcode]._get_icon()) + else: + var current_shortcode := completion_shortcode_getter_regex.search(line) + if !current_shortcode: + text.update_code_completion_options(false) + return + + var code := current_shortcode.get_string('code') + if !code in shortcode_events.keys(): + text.update_code_completion_options(false) + return + + # suggest parameters + if symbol == ' ': + var parameters :Array = shortcode_events[code].get_shortcode_parameters().keys() + for param in parameters: + if !param+'=' in line: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, param, param+'="' , shortcode_events[code].event_color.lerp(text.syntax_highlighter.normal_color, 0.3), text.get_theme_icon("MemberProperty", "EditorIcons")) + + # suggest values + elif symbol == '=' or symbol == '"' or get_code_completion_prev_symbol(text) == '"': + var current_parameter_gex := completion_shortcode_param_getter_regex.search(line) + if !current_parameter_gex: + text.update_code_completion_options(false) + return + + var current_parameter := current_parameter_gex.get_string('param') + if !shortcode_events[code].get_shortcode_parameters().has(current_parameter): + text.update_code_completion_options(false) + return + if !shortcode_events[code].get_shortcode_parameters()[current_parameter].has('suggestions'): + if typeof(shortcode_events[code].get_shortcode_parameters()[current_parameter].default) == TYPE_BOOL: + suggest_bool(text, shortcode_events[code].event_color.lerp(text.syntax_highlighter.normal_color, 0.3)) + elif len(word) > 0: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, word, word, shortcode_events[code].event_color.lerp(text.syntax_highlighter.normal_color, 0.3), text.get_theme_icon("GuiScrollArrowRight", "EditorIcons"), '" ') + text.update_code_completion_options(true) + return + + var suggestions : Dictionary= shortcode_events[code].get_shortcode_parameters()[current_parameter]['suggestions'].call() + for key in suggestions.keys(): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, key, suggestions[key].value, shortcode_events[code].event_color.lerp(text.syntax_highlighter.normal_color, 0.3), suggestions[key].get('icon', null), '" ') + + # Force update and showing of the popup + text.update_code_completion_options(true) + return + + + for event in custom_syntax_events: + if mode == Modes.TEXT_EVENT_ONLY and !event is DialogicTextEvent: + continue + + if ! ' ' in line: + event._get_start_code_completion(self, text) + + if event.is_valid_event(line): + event._get_code_completion(self, text, line, word, symbol) + break + + # Force update and showing of the popup + text.update_code_completion_options(true) + + + +# Helper that adds all characters as options +func suggest_characters(text:CodeEdit, type := CodeEdit.KIND_MEMBER) -> void: + for character in text.timeline_editor.editors_manager.resource_helper.character_directory: + text.add_code_completion_option(type, character, character, text.syntax_highlighter.character_name_color, load("res://addons/dialogic/Editor/Images/Resources/character.svg")) + + +# Helper that adds all timelines as options +func suggest_timelines(text:CodeEdit, type := CodeEdit.KIND_MEMBER, color:=Color()) -> void: + for timeline in text.timeline_editor.editors_manager.resource_helper.timeline_directory: + text.add_code_completion_option(type, timeline, timeline+'/', color, text.get_theme_icon("TripleBar", "EditorIcons")) + + +func suggest_labels(text:CodeEdit, timeline:String='', end:='', color:=Color()) -> void: + if timeline in Engine.get_main_loop().get_meta('dialogic_label_directory', {}): + for i in Engine.get_main_loop().get_meta('dialogic_label_directory')[timeline]: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, i, i+end, color, load("res://addons/dialogic/Modules/Jump/icon_label.png")) + + +# Helper that adds all portraits of a given character as options +func suggest_portraits(text:CodeEdit, character_name:String, end_check:=')') -> void: + if !character_name in text.timeline_editor.editors_manager.resource_helper.character_directory: + return + var character_resource :DialogicCharacter= text.timeline_editor.editors_manager.resource_helper.character_directory[character_name]['resource'] + for portrait in character_resource.portraits: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, portrait, portrait, text.syntax_highlighter.character_portrait_color, load("res://addons/dialogic/Editor/Images/Resources/character.svg"), end_check) + if character_resource.portraits.is_empty(): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, 'Has no portraits!', '', text.syntax_highlighter.character_portrait_color, load("res://addons/dialogic/Editor/Images/Pieces/warning.svg")) + + +# Helper that adds all variable paths as options +func suggest_variables(text:CodeEdit): + for variable in DialogicUtil.list_variables(ProjectSettings.get_setting('dialogic/variables')): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, variable, variable, text.syntax_highlighter.variable_color, text.get_theme_icon("MemberProperty", "EditorIcons"), '}') + + +# Helper that adds true and false as options +func suggest_bool(text:CodeEdit, color:Color): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, 'true', 'true', color, text.get_theme_icon("GuiChecked", "EditorIcons"), '" ') + text.add_code_completion_option(CodeEdit.KIND_MEMBER, 'false', 'false', color, text.get_theme_icon("GuiUnchecked", "EditorIcons"), '" ') + + +# Filters the list of all possible options, depending on what was typed +# Purpose of the different Kinds is explained in [_request_code_completion] +func filter_code_completion_candidates(candidates:Array, text:CodeEdit) -> Array: + var valid_candidates := [] + var current_word := get_code_completion_word(text) + for candidate in candidates: + if candidate.kind == text.KIND_PLAIN_TEXT: + if !current_word.is_empty() and candidate.insert_text.begins_with(current_word): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_MEMBER: + if current_word.is_empty() or current_word.to_lower() in candidate.insert_text.to_lower(): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_CONSTANT: + if current_word.is_empty() or candidate.insert_text.begins_with(current_word): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_CLASS: + if !current_word.is_empty() and current_word.to_lower() in candidate.insert_text.to_lower(): + valid_candidates.append(candidate) + return valid_candidates + + +# Called when code completion was activated +# Inserts the selected item +func confirm_code_completion(replace:bool, text:CodeEdit) -> void: + # Note: I decided to ALWAYS use replace mode, as dialogic is supposed to be beginner friendly + var word := get_code_completion_word(text) + var code_completion := text.get_code_completion_option(text.get_code_completion_selected_index()) + text.remove_text(text.get_caret_line(), text.get_caret_column()-len(word), text.get_caret_line(), text.get_caret_column()) + text.set_caret_column(text.get_caret_column()-len(word)) + text.insert_text_at_caret(code_completion.insert_text)# + if code_completion.has('default_value') and typeof(code_completion['default_value']) == TYPE_STRING: + var next_letter := text.get_line(text.get_caret_line()).substr(text.get_caret_column(), 1) + if next_letter != code_completion['default_value']: + text.insert_text_at_caret(code_completion['default_value']) + else: + text.set_caret_column(text.get_caret_column()+1) + + +################################################################################ +## SYMBOL CLICKING +################################################################################ + +# Performs an action (like opening a link) when a valid symbol was clicked +func symbol_lookup(symbol:String, line:int, column:int) -> void: + if symbol in shortcode_events.keys(): + if !shortcode_events[symbol].help_page_path.is_empty(): + OS.shell_open(shortcode_events[symbol].help_page_path) + + +# Called to test if a symbol can be clicked +func symbol_validate(symbol:String, text:CodeEdit) -> void: + if symbol in shortcode_events.keys(): + if !shortcode_events[symbol].help_page_path.is_empty(): + text.set_symbol_lookup_word_as_valid(true) diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd b/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd new file mode 100644 index 0000000..4989ea0 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd @@ -0,0 +1,153 @@ +@tool +extends SyntaxHighlighter + +## Syntax highlighter for the dialogic text timeline editor and text events in the visual editor. + +enum Modes {TEXT_EVENT_ONLY, FULL_HIGHLIGHTING} +var mode := Modes.FULL_HIGHLIGHTING + + +## RegEx's +var word_regex := RegEx.new() +var region_regex := RegEx.new() +var number_regex := RegEx.create_from_string("(\\d|\\.)+") +var shortcode_regex := RegEx.create_from_string("\\W*\\[(?\\w*)(?[^\\]]*)?") +var shortcode_param_regex := RegEx.create_from_string('((?[^\\s=]*)\\s*=\\s*"(?([^=]|\\\\=)*)(? Dictionary: + var str_line := get_text_edit().get_line(line) + + if shortcode_events.is_empty(): + for event in Engine.get_main_loop().get_meta('dialogic_event_cache', []): + if event.get_shortcode() != 'default_shortcode': + shortcode_events[event.get_shortcode()] = event + else: + custom_syntax_events.append(event) + if event is DialogicTextEvent: + text_event = event + text_event.load_text_effects() + + var dict := {} + dict[0] = {'color':normal_color} + + dict = color_translation_id(dict, str_line) + + if mode == Modes.FULL_HIGHLIGHTING: + if str_line.strip_edges().begins_with("[") and !text_event.text_effects_regex.search(str_line.get_slice(' ', 0)): + var result:= shortcode_regex.search(str_line) + if result: + if result.get_string('id') in shortcode_events: + dict[result.get_start('id')] = {"color":shortcode_events[result.get_string('id')].event_color.lerp(normal_color, 0.4)} + dict[result.get_end('id')] = {"color":normal_color} + + if result.get_string('args'): + color_shortcode_content(dict, str_line, result.get_start('args'), result.get_end('args'), shortcode_events[result.get_string('id')].event_color) + return fix_dict(dict) + + else: + for event in custom_syntax_events: + if event.is_valid_event(str_line.strip_edges()): + dict = event._get_syntax_highlighting(self, dict, str_line) + return fix_dict(dict) + + else: + dict = text_event._get_syntax_highlighting(self, dict, str_line) + return fix_dict(dict) + + +func fix_dict(dict:Dictionary) -> Dictionary: + var d := {} + var k := dict.keys() + k.sort() + for i in k: + d[i] = dict[i] + return d + + +func color_condition(dict:Dictionary, line:String, from:int = 0, to:int = 0) -> Dictionary: + dict = color_word(dict, code_flow_color, line, 'or', from, to) + dict = color_word(dict, code_flow_color, line, 'and', from, to) + dict = color_word(dict, code_flow_color, line, '==', from, to) + dict = color_word(dict, code_flow_color, line, '!=', from, to) + if !">=" in line: + dict = color_word(dict, code_flow_color, line, '>', from, to) + else: + dict = color_word(dict, code_flow_color, line, '>=', from, to) + if !"<=" in line: + dict = color_word(dict, code_flow_color, line, '<', from, to) + else: + dict = color_word(dict, code_flow_color, line, '<=', from, to) + dict = color_region(dict, variable_color, line, '{', '}', from, to) + dict = color_region(dict, string_color, line, '"', '"', from, to) + + + return dict + + +func color_translation_id(dict:Dictionary, line:String) -> Dictionary: + dict = color_region(dict, translation_id_color, line, '#id:', '') + return dict + + +func color_word(dict:Dictionary, color:Color, line:String, word:String, from:int= 0, to:int = 0) -> Dictionary: + word_regex.compile("\\W(?"+word+")\\W") + if to <= from: + to = len(line)-1 + for i in word_regex.search_all(line.substr(from, to-from+2)): + dict[i.get_start('word')+from] = {'color':color} + dict[i.get_end('word')+from] = {'color':normal_color} + return dict + + +func color_region(dict:Dictionary, color:Color, line:String, start:String, end:String, from:int = 0, to:int = 0) -> Dictionary: + if end.is_empty(): + region_regex.compile("(? Dictionary: + if to <= from: + to = len(line)-1 + var args_result:= shortcode_param_regex.search_all(line.substr(from, to-from+2)) + for x in args_result: + dict[x.get_start()+from] = {"color":base_color.lerp(normal_color, 0.5)} + dict[x.get_start('value')+from-1] = {"color":base_color.lerp(normal_color, 0.7)} + dict[x.get_end()+from] = {"color":normal_color} + return dict diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd new file mode 100644 index 0000000..e1148c0 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd @@ -0,0 +1,235 @@ +@tool +extends CodeEdit + +## Sub-Editor that allows editing timelines in a text format. + +@onready var timeline_editor := get_parent().get_parent() + +var label_regex := RegEx.create_from_string('label +(?[^\n]+)') + +func _ready(): + syntax_highlighter = load("res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd").new() + + await find_parent('EditorView').ready + timeline_editor.editors_manager.sidebar.content_item_activated.connect(_on_content_item_clicked) + +func _on_text_editor_text_changed(): + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.UNSAVED + request_code_completion(true) + $UpdateTimer.start() + + +func clear_timeline(): + text = '' + update_content_list() + + +func load_timeline(timeline:DialogicTimeline) -> void: + clear_timeline() + + text = timeline.as_text() + + timeline_editor.current_resource.set_meta("timeline_not_saved", false) + await get_tree().process_frame + update_content_list() + + +func save_timeline(): + if !timeline_editor.current_resource: + return + + var text_array:Array = text_timeline_to_array(text) + + timeline_editor.current_resource.events = text_array + timeline_editor.current_resource.events_processed = false + ResourceSaver.save(timeline_editor.current_resource, timeline_editor.current_resource.resource_path) + + timeline_editor.current_resource.set_meta("timeline_not_saved", false) + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.SAVED + timeline_editor.editors_manager.resource_helper.rebuild_timeline_directory() + + +func text_timeline_to_array(text:String) -> Array: + # Parse the lines down into an array + var events := [] + + var lines := text.split('\n', true) + var idx := -1 + + while idx < len(lines)-1: + idx += 1 + var line :String = lines[idx] + var line_stripped :String = line.strip_edges(true, true) + events.append(line) + + return events + + +################################################################################ +## HELPFUL EDITOR FUNCTIONALITY +################################################################################ + +func _gui_input(event): + if not event is InputEventKey: return + if not event.is_pressed(): return + match event.as_text(): + "Ctrl+K": + toggle_comment() + "Alt+Up": + move_line(-1) + "Alt+Down": + move_line(1) + "Ctrl+Shift+D": + duplicate_line() + _: + return + get_viewport().set_input_as_handled() + +# Toggle the selected lines as comments +func toggle_comment() -> void: + var cursor: Vector2 = Vector2(get_caret_column(), get_caret_line()) + var from: int = cursor.y + var to: int = cursor.y + if has_selection(): + from = get_selection_from_line() + to = get_selection_to_line() + + var lines: PackedStringArray = text.split("\n") + var will_comment: bool = not lines[from].begins_with("# ") + for i in range(from, to + 1): + lines[i] = "# " + lines[i] if will_comment else lines[i].substr(2) + + text = "\n".join(lines) + select(from, 0, to, get_line_width(to)) + set_caret_line(cursor.y) + set_caret_column(cursor.x) + text_changed.emit() + + +# Move the selected lines up or down +func move_line(offset: int) -> void: + offset = clamp(offset, -1, 1) + + var cursor: Vector2 = Vector2(get_caret_column(), get_caret_line()) + var reselect: bool = false + var from: int = cursor.y + var to: int = cursor.y + if has_selection(): + reselect = true + from = get_selection_from_line() + to = get_selection_to_line() + + var lines := text.split("\n") + + if from + offset < 0 or to + offset >= lines.size(): return + + var target_from_index: int = from - 1 if offset == -1 else to + 1 + var target_to_index: int = to if offset == -1 else from + var line_to_move: String = lines[target_from_index] + lines.remove_at(target_from_index) + lines.insert(target_to_index, line_to_move) + + text = "\n".join(lines) + + cursor.y += offset + from += offset + to += offset + if reselect: + select(from, 0, to, get_line_width(to)) + set_caret_line(cursor.y) + set_caret_column(cursor.x) + text_changed.emit() + + +func duplicate_line() -> void: + var cursor: Vector2 = Vector2(get_caret_column(), get_caret_line()) + var from: int = cursor.y + var to: int = cursor.y+1 + if has_selection(): + from = get_selection_from_line() + to = get_selection_to_line()+1 + + var lines := text.split("\n") + var lines_to_dupl: PackedStringArray = lines.slice(from, to) + + text = "\n".join(lines.slice(0, from)+lines_to_dupl+lines.slice(from)) + + set_caret_line(cursor.y+to-from) + set_caret_column(cursor.x) + text_changed.emit() + + +# Allows dragging files into the editor +func _can_drop_data(at_position:Vector2, data:Variant) -> bool: + if typeof(data) == TYPE_DICTIONARY and 'files' in data.keys() and len(data.files) == 1: + return true + return false + +# Allows dragging files into the editor +func _drop_data(at_position:Vector2, data:Variant) -> void: + if typeof(data) == TYPE_DICTIONARY and 'files' in data.keys() and len(data.files) == 1: + set_caret_column(get_line_column_at_pos(at_position).x) + set_caret_line(get_line_column_at_pos(at_position).y) + insert_text_at_caret('"'+data.files[0]+'"') + + + +func _on_update_timer_timeout(): + update_content_list() + + +func update_content_list(): + var labels :PackedStringArray = [] + for i in label_regex.search_all(text): + labels.append(i.get_string('name')) + timeline_editor.editors_manager.sidebar.update_content_list(labels) + + +func _on_content_item_clicked(label:String) -> void: + if label == "~ Top": + set_caret_line(0) + set_caret_column(0) + adjust_viewport_to_caret() + return + + for i in label_regex.search_all(text): + if i.get_string('name') == label: + set_caret_column(0) + set_caret_line(text.count('\n', 0, i.get_start()+1)) + center_viewport_to_caret() + return + + +################################################################################ +## AUTO COMPLETION +################################################################################ + +# Called if something was typed +func _request_code_completion(force:bool): + $CodeCompletionHelper.request_code_completion(force, self) + + +# Filters the list of all possible options, depending on what was typed +# Purpose of the different Kinds is explained in [_request_code_completion] +func _filter_code_completion_candidates(candidates:Array) -> Array: + return $CodeCompletionHelper.filter_code_completion_candidates(candidates, self) + + +# Called when code completion was activated +# Inserts the selected item +func _confirm_code_completion(replace:bool) -> void: + $CodeCompletionHelper.confirm_code_completion(replace, self) + + +################################################################################ +## SYMBOL CLICKING +################################################################################ + +# Performs an action (like opening a link) when a valid symbol was clicked +func _on_symbol_lookup(symbol, line, column): + $CodeCompletionHelper.symbol_lookup(symbol, line, column) + + +# Called to test if a symbol can be clicked +func _on_symbol_validate(symbol:String) -> void: + $CodeCompletionHelper.symbol_validate(symbol, self) diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn new file mode 100644 index 0000000..417b675 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=5 format=3 uid="uid://defdeav8rli6o"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd" id="1_1kbx2"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd" id="1_5qfro"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd" id="3_3bgmj"] + +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_yb1h4"] +script = ExtResource("1_5qfro") + +[node name="TimelineTextEditor" type="CodeEdit"] +offset_top = 592.0 +offset_right = 1024.0 +offset_bottom = 600.0 +theme_override_constants/line_spacing = 10 +highlight_current_line = true +draw_tabs = true +syntax_highlighter = SubResource("SyntaxHighlighter_yb1h4") +minimap_draw = true +caret_blink = true +line_folding = true +gutters_draw_line_numbers = true +gutters_draw_fold_gutter = true +code_completion_enabled = true +code_completion_prefixes = Array[String](["[", "{"]) +indent_automatic = true +auto_brace_completion_enabled = true +auto_brace_completion_highlight_matching = true +script = ExtResource("1_1kbx2") + +[node name="UpdateTimer" type="Timer" parent="."] +one_shot = true + +[node name="CodeCompletionHelper" type="Node" parent="."] +script = ExtResource("3_3bgmj") + +[connection signal="code_completion_requested" from="." to="." method="_on_code_completion_requested"] +[connection signal="symbol_lookup" from="." to="." method="_on_symbol_lookup"] +[connection signal="symbol_validate" from="." to="." method="_on_symbol_validate"] +[connection signal="text_changed" from="." to="." method="_on_text_editor_text_changed"] +[connection signal="timeout" from="UpdateTimer" to="." method="_on_update_timer_timeout"] diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd new file mode 100644 index 0000000..db48ec1 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd @@ -0,0 +1,64 @@ +@tool +extends Button + +@export var visible_name:String = "" +@export var event_id:String = '' +@export var event_icon:Texture : + get: + return event_icon + set(texture): + event_icon = texture + icon = event_icon +@export var event_sorting_index:int = 0 +@export var resource:DialogicEvent +@export var dialogic_color_name:String = '' + + +func _ready() -> void: + tooltip_text = visible_name + + custom_minimum_size = Vector2(get_theme_font("font", 'Label').get_string_size(text).x+35,30)* DialogicUtil.get_editor_scale() + + add_theme_color_override("font_color", get_theme_color("font_color", "Editor")) + add_theme_color_override("font_color_hover", get_theme_color("accent_color", "Editor")) + apply_base_button_style() + + +func apply_base_button_style() -> void: + var scale := DialogicUtil.get_editor_scale() + var nstyle :StyleBoxFlat= get_parent().get_theme_stylebox('normal', 'Button').duplicate() + nstyle.border_width_left = 5 *scale + add_theme_stylebox_override('normal', nstyle) + var hstyle :StyleBoxFlat= get_parent().get_theme_stylebox('hover', 'Button').duplicate() + hstyle.border_width_left = 5 *scale + add_theme_stylebox_override('hover', hstyle) + set_color(resource.event_color) + + +func set_color(color:Color) -> void: + var style := get_theme_stylebox('normal', 'Button') + style.border_color = color + add_theme_stylebox_override('normal', style) + style = get_theme_stylebox('hover', 'Button') + style.border_color = color + add_theme_stylebox_override('hover', style) + + +func toggle_name(on:= false) -> void: + if !on: + text = "" + custom_minimum_size = Vector2(40, 40)*DialogicUtil.get_editor_scale() + var style := get_theme_stylebox('normal', 'Button') + style.bg_color = style.border_color.darkened(0.2) + add_theme_stylebox_override('normal', style) + style = get_theme_stylebox('hover', 'Button') + style.bg_color = style.border_color + add_theme_stylebox_override('hover', style) + else: + text = visible_name + custom_minimum_size = Vector2(get_theme_font("font", 'Label').get_string_size(text).x+35,30)* DialogicUtil.get_editor_scale() + apply_base_button_style() + + +func _on_button_down(): + find_parent('VisualEditor').get_node('%TimelineArea').start_dragging(1, resource) diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn new file mode 100644 index 0000000..2aad5ef --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=4 format=3 uid="uid://depcrpeh3f4rv"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd" id="1_s43sc"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qx31r"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.1, 0.1, 0.1, 0.6) +border_width_left = 3 +border_color = Color(0.231373, 0.545098, 0.94902, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n1o16"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.225, 0.225, 0.225, 0.6) +border_width_left = 3 +border_color = Color(0.231373, 0.545098, 0.94902, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[node name="AddEventButton" type="Button"] +custom_minimum_size = Vector2(44, 30) +offset_right = 97.0 +offset_bottom = 42.0 +tooltip_text = "S" +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_styles/normal = SubResource("StyleBoxFlat_qx31r") +theme_override_styles/hover = SubResource("StyleBoxFlat_n1o16") +alignment = 0 +expand_icon = true +script = ExtResource("1_s43sc") +visible_name = "S" + +[connection signal="button_down" from="." to="." method="_on_button_down"] diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd b/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd new file mode 100644 index 0000000..7479891 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd @@ -0,0 +1,145 @@ +@tool +extends ScrollContainer + +# Script of the TimelineArea (that contains the event blocks). +# Manages the drawing of the event lines and event dragging. + + +enum DragTypes {NOTHING, NEW_EVENT, EXISTING_EVENTS} + +var drag_type : DragTypes = DragTypes.NOTHING +var drag_data : Variant +var drag_to_position := 0 +var dragging := false + + +signal drag_completed(type, index, data) +signal drag_canceled() + + +func _ready() -> void: + resized.connect(add_extra_scroll_area_to_timeline) + %Timeline.child_entered_tree.connect(add_extra_scroll_area_to_timeline) + + # This prevents the view to turn black if you are editing this scene in Godot + if find_parent('EditorView'): + %TimelineArea.get_theme_color("background_color", "CodeEdit") + + +################### EVENT DRAGGING ############################################# +################################################################################ + +func start_dragging(type:DragTypes, data:Variant) -> void: + dragging = true + drag_type = type + drag_data = data + + +func _input(event:InputEvent) -> void: + if !dragging: + return + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: + if !event.is_pressed(): + finish_dragging() + + +func _process(delta:float) -> void: + if !dragging: + return + + for child in %Timeline.get_children(): + if (child.global_position.y < get_global_mouse_position().y) and \ + (child.global_position.y+child.size.y > get_global_mouse_position().y): + + if get_global_mouse_position().y > child.global_position.y+(child.size.y/2.0): + drag_to_position = child.get_index()+1 + queue_redraw() + else: + drag_to_position = child.get_index() + queue_redraw() + + +func finish_dragging(): + dragging = false + if get_global_rect().has_point(get_global_mouse_position()): + drag_completed.emit(drag_type, drag_to_position, drag_data) + else: + drag_canceled.emit() + queue_redraw() + + + +##################### LINE DRAWING ############################################# +################################################################################ + +func _draw() -> void: + var _scale := DialogicUtil.get_editor_scale() + var line_width := 5 * _scale + var horizontal_line_length := 100*_scale + var color_multiplier := Color(1,1,1,0.5) + var selected_color_multiplier := Color(1,1,1,1) + for idx in range($Timeline.get_child_count()): + var event : Control = $Timeline.get_child(idx) + + if not "resource" in event: + continue + + if not event.visible: + continue + + if event.resource is DialogicEndBranchEvent: + continue + + if not (event.has_any_enabled_body_content or event.resource.can_contain_events): + continue + + var icon_panel_height := 32*_scale + var rect_position :Vector2= event.get_node('%IconPanel').global_position+Vector2(0,1)*event.get_node('%IconPanel').size+Vector2(0,-4) + var color :Color= event.resource.event_color + if event.is_selected(): + color *= selected_color_multiplier + else: + color *= color_multiplier + + if idx < $Timeline.get_child_count()-1 and event.current_indent_level < $Timeline.get_child(idx+1).current_indent_level: + var end_node :Node= event.end_node + var sub_idx := idx + + if !end_node: # this doesn't have an end node (e.g. text event with choices in it) + while sub_idx < $Timeline.get_child_count()-1: + sub_idx += 1 + if $Timeline.get_child(sub_idx).current_indent_level == event.current_indent_level: + end_node = $Timeline.get_child(sub_idx-1) + break + var rect_size := Vector2() + if end_node != null: + rect_size = Vector2(line_width, end_node.global_position.y+end_node.size.y-rect_position.y) + if end_node.resource is DialogicEndBranchEvent and event.resource.can_contain_events: + rect_size = Vector2(line_width, end_node.global_position.y+end_node.size.y/2-rect_position.y) + else: + rect_size = Vector2(line_width, $Timeline.get_child(-1).global_position.y+$Timeline.get_child(-4).size.y-rect_position.y) + + draw_rect(Rect2(rect_position-global_position, rect_size), color) + draw_rect(Rect2(Vector2(event.get_node('%IconPanel').global_position.x+line_width, rect_position.y+rect_size.y-line_width)-global_position, Vector2(horizontal_line_length, line_width)), color) + + elif event.expanded: + draw_rect(Rect2(rect_position-global_position, Vector2(line_width, event.size.y-event.get_node('%IconPanel').size.y+10*_scale)), color.darkened(0.5)) + + if dragging and get_global_rect().has_point(get_global_mouse_position()): + var height :int = 0 + if drag_to_position == %Timeline.get_child_count(): + height = %Timeline.get_child(-1).global_position.y+%Timeline.get_child(-1).size.y-global_position.y-(line_width/2.0) + else: + height = %Timeline.get_child(drag_to_position).global_position.y-global_position.y-(line_width/2.0) + + draw_line(Vector2(0, height), Vector2(size.x*0.9, height), get_theme_color("accent_color", "Editor"), line_width*0.2) + +##################### SPACE BELOW ############################################## +################################################################################ + +func add_extra_scroll_area_to_timeline(fake_arg:Variant=null) -> void: + if %Timeline.get_children().size() > 4: + %Timeline.custom_minimum_size.y = 0 + %Timeline.size.y = 0 + if %Timeline.size.y + 200 > %TimelineArea.size.y: + %Timeline.custom_minimum_size = Vector2(0, %Timeline.size.y + 200) diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd new file mode 100644 index 0000000..cbf9680 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd @@ -0,0 +1,1087 @@ +@tool +extends Container + +## Visual mode of the timeline editor. + + +################################################################################ +## EDITOR NODES +################################################################################ +var TimelineUndoRedo := UndoRedo.new() +@onready var timeline_editor := get_parent().get_parent() +var event_node +var sidebar_collapsed := false + +################################################################################ +## SIGNALS +################################################################################ +signal selection_updated +signal batch_loaded +signal timeline_loaded + + +################################################################################ +## TIMELINE LOADING +################################################################################ +var _batches := [] +var _building_timeline := false +var _timeline_changed_while_loading := false + + +################################################################################ +## TIMELINE EVENT MANAGEMENT +################################################################################ +var selected_items : Array = [] + + +################################################################################ +## CREATE/SAVE/LOAD +################################################################################ + +func something_changed(): + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.UNSAVED + + +func save_timeline() -> void: + if !is_inside_tree(): + return + + # return if resource is unchanged + if timeline_editor.current_resource_state != DialogicEditor.ResourceStates.UNSAVED: + return + + # create a list of text versions of all the events with the right indent + var new_events := [] + var indent := 0 + for event in %Timeline.get_children(): + if 'event_name' in event.resource: + event.resource.update_text_version() + new_events.append(event.resource) + + if !timeline_editor.current_resource: + return + + timeline_editor.current_resource.events = new_events + timeline_editor.current_resource.events_processed = true + var error :int = ResourceSaver.save(timeline_editor.current_resource, timeline_editor.current_resource.resource_path) + if error != OK: + print('[Dialogic] Saving error: ', error) + + timeline_editor.current_resource.set_meta("unsaved", false) + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.SAVED + timeline_editor.editors_manager.resource_helper.rebuild_timeline_directory() + + +func _notification(what): + if what == NOTIFICATION_WM_CLOSE_REQUEST: + save_timeline() + + +func load_timeline(resource:DialogicTimeline) -> void: + if _building_timeline: + _timeline_changed_while_loading = true + await batch_loaded + _timeline_changed_while_loading = false + _building_timeline = false + + clear_timeline_nodes() + + if timeline_editor.current_resource.events.size() == 0: + pass + else: + await timeline_editor.current_resource.process() + + if timeline_editor.current_resource.events.size() == 0: + return + + var data := resource.events + var page := 1 + var batch_size := 10 + _batches = [] + _building_timeline = true + while batch_events(data, batch_size, page).size() != 0: + _batches.append(batch_events(data, batch_size, page)) + page += 1 + batch_loaded.emit() + # Reset the scroll position + %TimelineArea.scroll_vertical = 0 + + +func batch_events(array, size, batch_number): + return array.slice((batch_number - 1) * size, batch_number * size) + + +# a list of all events like choice and condition events (so they get connected to their end events) +var opener_events_stack := [] + +func load_batch(data:Array) -> void: + var current_batch :Array = _batches.pop_front() + if current_batch: + for i in current_batch: + if i is DialogicEndBranchEvent: + create_end_branch_event(%Timeline.get_child_count(), opener_events_stack.pop_back()) + else: + var piece := add_event_node(i, %Timeline.get_child_count()) + if i.can_contain_events: + opener_events_stack.push_back(piece) + batch_loaded.emit() + +func _on_batch_loaded(): + if _timeline_changed_while_loading: + return + if _batches.size() > 0: + indent_events() + await get_tree().process_frame + load_batch(_batches) + return + + if opener_events_stack: + for ev in opener_events_stack: + create_end_branch_event(%Timeline.get_child_count(), ev) + opener_events_stack = [] + indent_events() + update_content_list() + _building_timeline = false + + +func clear_timeline_nodes(): + deselect_all_items() + for event in %Timeline.get_children(): + event.free() + + +##################### SETUP #################################################### +################################################################################ + +func _ready(): + DialogicUtil.get_dialogic_plugin().dialogic_save.connect(save_timeline) + event_node = load("res://addons/dialogic/Editor/Events/EventBlock/event_block.tscn") + + batch_loaded.connect(_on_batch_loaded) + + await find_parent('EditorView').ready + timeline_editor.editors_manager.sidebar.content_item_activated.connect(_on_content_item_clicked) + + +func _on_content_item_clicked(label:String) -> void: + if label == "~ Top": + %TimelineArea.scroll_vertical = 0 + return + + for event in %Timeline.get_children(): + if 'event_name' in event.resource and event.resource is DialogicLabelEvent: + if event.resource.name == label: + scroll_to_piece(event.get_index()) + return + + +func update_content_list(): + var labels :PackedStringArray = [] + for event in %Timeline.get_children(): + if 'event_name' in event.resource and event.resource is DialogicLabelEvent: + labels.append(event.resource.name) + timeline_editor.editors_manager.sidebar.update_content_list(labels) + + +func load_event_buttons() -> void: + # Clear previous event buttons + for child in %RightSidebar.get_child(0).get_children(): + if child is FlowContainer: + for button in child.get_children(): + button.queue_free() + + var scripts: Array = timeline_editor.editors_manager.resource_helper.get_event_scripts() + + # Event buttons + var buttonScene := load("res://addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn") + + var hidden_buttons :Array = DialogicUtil.get_editor_setting('hidden_event_buttons', []) + var sections := {} + + for child in %RightSidebar.get_child(0).get_children(): + child.queue_free() + + for event_script in scripts: + var event_resource: Variant + + if typeof(event_script) == TYPE_STRING: + event_resource = load(event_script).new() + else: + event_resource = event_script + + if event_resource.disable_editor_button == true: + continue + + if event_resource.event_name in hidden_buttons: + continue + + var button :Button = buttonScene.instantiate() + button.resource = event_resource + button.visible_name = event_resource.event_name + button.event_icon = event_resource._get_icon() + button.set_color(event_resource.event_color) + button.dialogic_color_name = event_resource.dialogic_color_name + button.event_sorting_index = event_resource.event_sorting_index + + button.button_up.connect(_add_event_button_pressed.bind(event_resource)) + + if !event_resource.event_category in sections: + var section := VBoxContainer.new() + section.name = event_resource.event_category + + var section_header := HBoxContainer.new() + section_header.add_child(Label.new()) + section_header.get_child(0).text = event_resource.event_category + section_header.get_child(0).size_flags_horizontal = SIZE_SHRINK_BEGIN + section_header.get_child(0).theme_type_variation = "DialogicSection" + section_header.add_child(HSeparator.new()) + section_header.get_child(1).size_flags_horizontal = SIZE_EXPAND_FILL + section.add_child(section_header) + + var button_container := FlowContainer.new() + section.add_child(button_container) + + sections[event_resource.event_category] = button_container + %RightSidebar.get_child(0).add_child(section) + + + sections[event_resource.event_category].add_child(button) + + # Sort event button + while event_resource.event_sorting_index < sections[event_resource.event_category].get_child(max(0, button.get_index()-1)).resource.event_sorting_index: + sections[event_resource.event_category].move_child(button, button.get_index()-1) + + var sections_order :Array= DialogicUtil.get_editor_setting('event_section_order', + ['Main', 'Flow', 'Logic', 'Audio', 'Godot','Other', 'Helper']) + + # Sort event sections + for section in sections_order: + if %RightSidebar.get_child(0).has_node(section): + %RightSidebar.get_child(0).move_child(%RightSidebar.get_child(0).get_node(section), sections_order.find(section)) + + # Resize RightSidebar + var _scale := DialogicUtil.get_editor_scale() + %RightSidebar.custom_minimum_size.x = 50 * _scale + + $View.split_offset = -200*_scale + _on_right_sidebar_resized() + + +#################### CLEANUP ################################################### +################################################################################ + +func _exit_tree() -> void: + # Explicitly free any open cache resources on close, so we don't get leaked resource errors on shutdown + clear_timeline_nodes() + + +################# DRAG&DROP + DRAGGING EVENTS ################################### +################################################################################# + +# SIGNAL handles input on the events mainly for selection and moving events +func _on_event_block_gui_input(event, item: Node): + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: + if event.is_pressed(): + if not _is_item_selected(item) and not len(selected_items) > 1: + select_item(item) + + else: + if len(selected_items) > 1: + select_item(item) + + if len(selected_items) > 0 and event is InputEventMouseMotion: + if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): + if !%TimelineArea.dragging: + %TimelineArea.start_dragging(%TimelineArea.DragTypes.EXISTING_EVENTS, get_events_indexed(selected_items, EndBranchMode.ONLY_SINGLE)) + + +func _on_timeline_area_drag_completed(type:int, index:int, data:Variant) -> void: + if type == %TimelineArea.DragTypes.NEW_EVENT: + var resource :DialogicEvent = data.duplicate() + resource._load_custom_defaults() + + TimelineUndoRedo.create_action("[D] Add "+resource.event_name+" event.") + if resource.can_contain_events: + TimelineUndoRedo.add_do_method(add_event_with_end_branch.bind(resource, index, true, true)) + TimelineUndoRedo.add_undo_method(remove_events_at_index.bind(index, 2)) + else: + TimelineUndoRedo.add_do_method(add_event_node.bind(resource, index, true, true)) + TimelineUndoRedo.add_undo_method(remove_events_at_index.bind(index, 1)) + TimelineUndoRedo.commit_action() + + elif type == %TimelineArea.DragTypes.EXISTING_EVENTS: + # if the index is after some selected events, correct it + var c := 0 + for i in data.keys(): + if i void: + # we protect this with is_visible_in_tree to not + # invoke a shortcut by accident + if !((event is InputEventKey or !event is InputEventWithModifiers) and is_visible_in_tree()): + return + + if "pressed" in event: + if !event.pressed: + return + + ## Some shortcuts should always work + match event.as_text(): + "Ctrl+T": # Add text event + _add_event_button_pressed(DialogicTextEvent.new(), true) + get_viewport().set_input_as_handled() + + "Ctrl+Shift+T", "Ctrl+Alt+T", "Ctrl+Option+T": # Add text event with current or previous character + get_viewport().set_input_as_handled() + var ev := DialogicTextEvent.new() + ev.character = get_previous_character(event.as_text() == "Ctrl+Alt+T" or event.as_text() == "Ctrl+Option+T") + _add_event_button_pressed(ev, true) + + "Ctrl+E": # Add character join event + _add_event_button_pressed(DialogicCharacterEvent.new(), true) + get_viewport().set_input_as_handled() + + "Ctrl+Shift+E": # Add character update event + var ev := DialogicCharacterEvent.new() + ev.action = DialogicCharacterEvent.Actions.UPDATE + _add_event_button_pressed(ev, true) + get_viewport().set_input_as_handled() + + "Ctrl+Alt+E", "Ctrl+Option+E": # Add character leave event + var ev := DialogicCharacterEvent.new() + ev.action = DialogicCharacterEvent.Actions.LEAVE + _add_event_button_pressed(ev, true) + get_viewport().set_input_as_handled() + + "Ctrl+J": # Add jump event + _add_event_button_pressed(DialogicJumpEvent.new(), true) + get_viewport().set_input_as_handled() + "Ctrl+L": # Add label event + _add_event_button_pressed(DialogicLabelEvent.new(), true) + get_viewport().set_input_as_handled() + + ## Some shortcuts should be disabled when writing text. + if get_viewport().gui_get_focus_owner() is TextEdit || get_viewport().gui_get_focus_owner() is LineEdit: + return + + match event.as_text(): + "Ctrl+Z": # UNDO + TimelineUndoRedo.undo() + indent_events() + get_viewport().set_input_as_handled() + + "Ctrl+Shift+Z", "Ctrl+Y": # REDO + TimelineUndoRedo.redo() + indent_events() + get_viewport().set_input_as_handled() + + "Up": #select previous + if (len(selected_items) == 1): + var prev := maxi(0, selected_items[0].get_index() - 1) + var prev_node := %Timeline.get_child(prev) + if (prev_node != selected_items[0]): + selected_items = [] + select_item(prev_node) + get_viewport().set_input_as_handled() + + "Down": #select next + if (len(selected_items) == 1): + var next := mini(%Timeline.get_child_count() - 1, selected_items[0].get_index() + 1) + var next_node := %Timeline.get_child(next) + if (next_node != selected_items[0]): + selected_items = [] + select_item(next_node) + get_viewport().set_input_as_handled() + + "Delete": + if (len(selected_items) != 0): + var events_indexed := get_events_indexed(selected_items) + TimelineUndoRedo.create_action("[D] Deleting "+str(len(selected_items))+" event(s).") + TimelineUndoRedo.add_do_method(delete_events_indexed.bind(events_indexed)) + TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed)) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + "Ctrl+A": # select all + if (len(selected_items) != 0): + select_all_items() + get_viewport().set_input_as_handled() + + "Ctrl+Shift+A": # deselect all + if (len(selected_items) != 0): + deselect_all_items() + get_viewport().set_input_as_handled() + + "Ctrl+C": + copy_selected_events() + get_viewport().set_input_as_handled() + + "Ctrl+V": + var events_list := paste_check() + var paste_position := -1 + if selected_items: + paste_position = selected_items[-1].get_index()+1 + else: + paste_position = %Timeline.get_child_count()-1 + if events_list: + TimelineUndoRedo.create_action("[D] Pasting "+str(len(events_list))+" event(s).") + TimelineUndoRedo.add_do_method(add_events_at_index.bind(events_list, paste_position)) + TimelineUndoRedo.add_undo_method(remove_events_at_index.bind(paste_position+1, len(events_list))) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + "Ctrl+X": + var events_indexed := get_events_indexed(selected_items) + TimelineUndoRedo.create_action("[D] Cut "+str(len(selected_items))+" event(s).") + TimelineUndoRedo.add_do_method(cut_events_indexed.bind(events_indexed)) + TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed)) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + "Ctrl+D": + if len(selected_items) > 0: + var events := get_events_indexed(selected_items).values() + var at_index :int= selected_items[-1].get_index() + TimelineUndoRedo.create_action("[D] Duplicate "+str(len(events))+" event(s).") + TimelineUndoRedo.add_do_method(add_events_at_index.bind(events, at_index)) + TimelineUndoRedo.add_undo_method(remove_events_at_index.bind(at_index, len(events))) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + "Alt+Up", "Option+Up": + if len(selected_items) > 0: + TimelineUndoRedo.create_action("[D] Move event(s) up.") + TimelineUndoRedo.add_do_method(move_blocks_by_index.bind(selected_items.map(func(x):return x.get_index()), -1)) + TimelineUndoRedo.add_do_method(indent_events) + TimelineUndoRedo.add_do_method(something_changed) + TimelineUndoRedo.add_undo_method(move_blocks_by_index.bind(selected_items.map(func(x):return x.get_index()-1), 1)) + TimelineUndoRedo.add_undo_method(indent_events) + TimelineUndoRedo.add_undo_method(something_changed) + TimelineUndoRedo.commit_action() + + get_viewport().set_input_as_handled() + + "Alt+Down", "Option+Down": + if len(selected_items) > 0: + TimelineUndoRedo.create_action("[D] Move event(s) down.") + TimelineUndoRedo.add_do_method(move_blocks_by_index.bind(selected_items.map(func(x):return x.get_index()), 1)) + TimelineUndoRedo.add_do_method(indent_events) + TimelineUndoRedo.add_do_method(something_changed) + TimelineUndoRedo.add_undo_method(move_blocks_by_index.bind(selected_items.map(func(x):return x.get_index()+1), -1)) + TimelineUndoRedo.add_undo_method(indent_events) + TimelineUndoRedo.add_undo_method(something_changed) + TimelineUndoRedo.commit_action() + + get_viewport().set_input_as_handled() + + +func get_previous_character(double_previous := false) -> DialogicCharacter: + var character :DialogicCharacter = null + var idx :int = %Timeline.get_child_count() + if idx == 0: + return null + if len(selected_items): + idx = selected_items[0].get_index() + var one_skipped := false + idx += 1 + for i in range(selected_items[0].get_index()+1): + idx -= 1 + if !('resource' in %Timeline.get_child(idx) and 'character' in %Timeline.get_child(idx).resource): + continue + if %Timeline.get_child(idx).resource.character == null: + continue + if double_previous: + if %Timeline.get_child(idx).resource.character == character: + continue + if character != null: + if one_skipped: + one_skipped = false + else: + character = %Timeline.get_child(idx).resource.character + break + character = %Timeline.get_child(idx).resource.character + else: + character = %Timeline.get_child(idx).resource.character + break + return character + + +#################### DELETING, COPY, PASTE ##################################### +################################################################################ + +enum EndBranchMode {FORCE_NO_SINGLE, ONLY_SINGLE} +# FORCE_NO_SINGLE = End branches are effected if their parent is selected, not alone +# -> for delete, copy, cut, paste (to avoid lonly end branches) +# ONLY_SINGLE = Single End branches are allowed alone and are not effected if only the parent is selected +# -> for moving events + +func get_events_indexed(events:Array, end_branch_mode:=EndBranchMode.FORCE_NO_SINGLE) -> Dictionary: + var indexed_dict := {} + for event in events: + # do not collect selected end branches (e.g. on delete, copy, etc.) + if event.resource is DialogicEndBranchEvent and end_branch_mode == EndBranchMode.FORCE_NO_SINGLE: + continue + + indexed_dict[event.get_index()] = event.resource.to_text() + + # store an end branch if it is selected or connected to a selected event + if end_branch_mode == EndBranchMode.FORCE_NO_SINGLE: + if 'end_node' in event and event.end_node: + event = event.end_node + indexed_dict[event.get_index()] = event.resource.to_text() + + if event.resource is DialogicEndBranchEvent: + if event.parent_node in events: # add local index + indexed_dict[event.get_index()] += str(events.find(event.parent_node)) + else: # add global index + indexed_dict[event.get_index()] += '#'+str(event.parent_node.get_index()) + return indexed_dict + + +func select_indexed_events(indexed_events:Dictionary) -> void: + selected_items = [] + for event_index in indexed_events.keys(): + selected_items.append(%Timeline.get_child(event_index)) + + +func add_events_indexed(indexed_events:Dictionary) -> void: + var indexes := indexed_events.keys() + indexes.sort() + + var events := [] + for event_idx in indexes: + deselect_all_items() + + var event_resource :Variant + if timeline_editor.editors_manager.resource_helper: + for i in timeline_editor.editors_manager.resource_helper.get_event_scripts(): + if i._test_event_string(indexed_events[event_idx]): + event_resource = i.duplicate() + break + else: + printerr("[Dialogic] Unable to access resource_helper!") + continue + event_resource.set_meta('editor_character_directory', timeline_editor.editors_manager.resource_helper.character_directory) + event_resource.from_text(indexed_events[event_idx]) + if event_resource is DialogicEndBranchEvent: + var idx :String= indexed_events[event_idx].trim_prefix('<>') + if idx.begins_with('#'): # a global index + events.append(create_end_branch_event(%Timeline.get_child_count(), %Timeline.get_child(int(idx.trim_prefix('#'))))) + else: # a local index (index in the added events list) + events.append(create_end_branch_event(%Timeline.get_child_count(), events[int(idx)])) + %Timeline.move_child(events[-1], event_idx) + else: + events.append(add_event_node(event_resource)) + %Timeline.move_child(events[-1], event_idx) + + selected_items = events + visual_update_selection() + indent_events() + + +func delete_events_indexed(indexed_events:Dictionary) -> void: + select_indexed_events(indexed_events) + delete_selected_events() + indent_events() + + +func delete_selected_events() -> void: + if len(selected_items) == 0: + return + + # get next element + var next := mini(%Timeline.get_child_count() - 1, selected_items[-1].get_index() + 1) + var next_node := %Timeline.get_child(next) + if _is_item_selected(next_node): + next_node = null + + for event in selected_items: + if 'end_node' in event and event.end_node != null and is_instance_valid(event.end_node): + if !is_instance_valid(event.end_node.get_parent()): return + event.end_node.get_parent().remove_child(event.end_node) + event.end_node.queue_free() + if is_instance_valid(event): + if !is_instance_valid(event.get_parent()): return + event.get_parent().remove_child(event) + event.queue_free() + + # select next + if (next_node != null): + select_item(next_node, false) + else: + if (%Timeline.get_child_count() > 0): + next_node = %Timeline.get_child(max(0, %Timeline.get_child_count() - 1)) + if (next_node != null): + select_item(next_node, false) + else: + deselect_all_items() + something_changed() + indent_events() + + +func cut_selected_events() -> void: + copy_selected_events() + delete_selected_events() + indent_events() + + +func cut_events_indexed(indexed_events:Dictionary) -> void: + select_indexed_events(indexed_events) + cut_selected_events() + indent_events() + + +func copy_selected_events() -> void: + if len(selected_items) == 0: + return + var event_copy_array := [] + for item in selected_items: + event_copy_array.append(item.resource.to_text()) + if item.resource is DialogicEndBranchEvent: + if item.parent_node in selected_items: # add local index + event_copy_array[-1] += str(selected_items.find(item.parent_node)) + else: # add global index + event_copy_array[-1] += '#'+str(item.parent_node.get_index()) + var _json := JSON.new() + DisplayServer.clipboard_set(_json.stringify( + { + "events":event_copy_array, + "project_name": ProjectSettings.get_setting("application/config/name") + })) + + +func paste_check() -> Array: + var _json := JSON.new() + var clipboard_parse :Variant= _json.parse(DisplayServer.clipboard_get()) + if clipboard_parse == OK: + clipboard_parse = _json.get_data() + if clipboard_parse.has("project_name"): + if clipboard_parse.project_name != ProjectSettings.get_setting("application/config/name"): + print("[D] Be careful when copying from another project!") + if clipboard_parse.has('events'): + return clipboard_parse.events + return [] + + +func remove_events_at_index(at_index:int, amount:int = 1)-> void: + selected_items = [] + something_changed() + for i in range(0, amount): + selected_items.append(%Timeline.get_child(at_index + i)) + delete_selected_events() + indent_events() + + +func add_events_at_index(event_list:Array, at_index:int) -> void: + var new_items := [] + for c in range(len(event_list)): + var item :String = event_list[c] + var resource: Variant + if timeline_editor.editors_manager.resource_helper: + for i in timeline_editor.editors_manager.resource_helper.get_event_scripts(): + if i._test_event_string(item): + resource = i.duplicate() + break + resource.set_meta('editor_character_directory', timeline_editor.editors_manager.resource_helper.character_directory) + resource.from_text(item) + else: + printerr("[Dialogic] Unable to access resource_helper!") + continue + if resource is DialogicEndBranchEvent: + var idx :String= item.trim_prefix('<>') + if idx.begins_with('#'): # a global index + new_items.append(create_end_branch_event(at_index+c, %Timeline.get_child(int(idx.trim_prefix('#'))))) + else: # a local index (index in the added events list) + new_items.append(create_end_branch_event(at_index+c, new_items[int(idx)])) + else: + new_items.append(add_event_node(resource, at_index+c)) + selected_items = new_items + something_changed() + sort_selection() + visual_update_selection() + indent_events() + + +#################### BLOCK SELECTION ########################################### +################################################################################ + +func _is_item_selected(item: Node) -> bool: + return item in selected_items + + +func select_item(item: Node, multi_possible:bool = true) -> void: + if item == null: + return + + if Input.is_key_pressed(KEY_CTRL) and multi_possible: + # deselect the item if it is selected + if _is_item_selected(item): + selected_items.erase(item) + else: + selected_items.append(item) + elif Input.is_key_pressed(KEY_SHIFT) and multi_possible: + + if len(selected_items) == 0: + selected_items = [item] + else: + var index :int= selected_items[-1].get_index() + var goal_idx := item.get_index() + while true: + if index < goal_idx: index += 1 + else: index -= 1 + if not %Timeline.get_child(index) in selected_items: + selected_items.append(%Timeline.get_child(index)) + + if index == goal_idx: + break + else: + if len(selected_items) == 1: + if _is_item_selected(item): + selected_items.erase(item) + else: + selected_items = [item] + else: + selected_items = [item] + + sort_selection() + visual_update_selection() + + +# checks all the events and sets their styles (selected/deselected) +func visual_update_selection() -> void: + for item in %Timeline.get_children(): + item.visual_deselect() + if 'end_node' in item and item.end_node != null: + item.end_node.unhighlight() + for item in selected_items: + item.visual_select() + if 'end_node' in item and item.end_node != null: + item.end_node.highlight() + + +## Sorts the selection using 'custom_sort_selection' +func sort_selection() -> void: + selected_items.sort_custom(custom_sort_selection) + + +## Compares two event blocks based on their position in the timeline +func custom_sort_selection(item1, item2) -> bool: + return item1.get_index() < item2.get_index() + + +func select_all_items() -> void: + selected_items = [] + for event in %Timeline.get_children(): + selected_items.append(event) + visual_update_selection() + + +func deselect_all_items() -> void: + selected_items = [] + visual_update_selection() + +############ CREATING NEW EVENTS USING THE BUTTONS ############################# +################################################################################ + +# Event Creation signal for buttons +# If force_resource is true, the event will be added with the actual resource +func _add_event_button_pressed(event_resource:DialogicEvent, force_resource := false): + if %TimelineArea.get_global_rect().has_point(get_global_mouse_position()) and !force_resource: + return + + var at_index := -1 + if selected_items: + at_index = selected_items[-1].get_index()+1 + else: + at_index = %Timeline.get_child_count() + + + var resource :DialogicEvent = null + if force_resource: + resource = event_resource + else: + resource = event_resource.duplicate() + resource._load_custom_defaults() + + resource.created_by_button = true + + TimelineUndoRedo.create_action("[D] Add "+event_resource.event_name+" event.") + if event_resource.can_contain_events: + TimelineUndoRedo.add_do_method(add_event_with_end_branch.bind(resource, at_index, true, true)) + TimelineUndoRedo.add_undo_method(remove_events_at_index.bind(at_index, 2)) + else: + TimelineUndoRedo.add_do_method(add_event_node.bind(resource, at_index, true, true)) + TimelineUndoRedo.add_undo_method(remove_events_at_index.bind(at_index, 1)) + TimelineUndoRedo.commit_action() + + resource.created_by_button = false + + something_changed() + scroll_to_piece(at_index) + indent_events() + + +################# CREATING THE TIMELINE ######################################## +################################################################################ + +# Adding an event to the timeline +func add_event_node(event_resource:DialogicEvent, at_index:int = -1, auto_select: bool = false, indent: bool = false) -> Control: + if event_resource is DialogicEndBranchEvent: + return create_end_branch_event(at_index, %Timeline.get_child(0)) + + if event_resource['event_node_ready'] == false: + if event_resource['event_node_as_text'] != "": + event_resource._load_from_string(event_resource['event_node_as_text']) + + var piece :Control = event_node.instantiate() + piece.resource = event_resource + event_resource._editor_node = piece + piece.content_changed.connect(something_changed) + if event_resource.event_name == "Label": + piece.content_changed.connect(update_content_list) + piece.tree_exited.connect(update_content_list) + if at_index == -1: + if len(selected_items) != 0: + selected_items[0].add_sibling(piece) + else: + %Timeline.add_child(piece) + else: + %Timeline.add_child(piece) + %Timeline.move_child(piece, at_index) + + piece.gui_input.connect(_on_event_block_gui_input.bind(piece)) + + # Building editing part + piece.build_editor(true, event_resource.expand_by_default) + + if auto_select: + select_item(piece, false) + + # Indent on create + if indent: + indent_events() + + if not _building_timeline: + piece.focus() + + return piece + + +func create_end_branch_event(at_index:int, parent_node:Node) -> Node: + var end_branch_event :Control = load("res://addons/dialogic/Editor/Events/BranchEnd.tscn").instantiate() + end_branch_event.resource = DialogicEndBranchEvent.new() + end_branch_event.gui_input.connect(_on_event_block_gui_input.bind(end_branch_event)) + parent_node.end_node = end_branch_event + end_branch_event.parent_node = parent_node + end_branch_event.add_end_control(parent_node.resource.get_end_branch_control()) + %Timeline.add_child(end_branch_event) + %Timeline.move_child(end_branch_event, at_index) + return end_branch_event + + +# combination of the above that establishes the correct connection between the event and it's end branch +func add_event_with_end_branch(resource, at_index:int=-1, auto_select:bool = false, indent:bool = false): + var event := add_event_node(resource, at_index, auto_select, indent) + create_end_branch_event(at_index+1, event) + + +##################### BLOCK GETTERS ############################################ +################################################################################ + +func get_block_above(block:Node) -> Node: + if block.get_index() > 0: + return %Timeline.get_child(block.get_index() - 1) + return null + + +func get_block_below(block:Node) -> Node: + if block.get_index() < %Timeline.get_child_count() - 1: + return %Timeline.get_child(block.get_index() + 1) + return null + + +##################### BLOCK MOVEMENT ########################################### +################################################################################ + +func move_blocks_by_index(block_idxs:Array, offset:int): + move_blocks(block_idxs.map(func(x): return %Timeline.get_child(x)), offset) + + +func move_blocks(blocks:Array, offset:int) -> void: + if offset > 0: + blocks = blocks.duplicate() + blocks.reverse() + for block in blocks: + var to_idx := maxi(min(block.get_index()+offset, %Timeline.get_child_count()-1), 0) + if !%Timeline.get_child(to_idx) in blocks: + move_block_to_index(block.get_index(), to_idx) + + +func move_block_up(block:Node) -> void: + if block.get_index() < 1: return + %Timeline.move_child(block, block.get_index() - 1) + %TimelineArea.queue_redraw() + + +func move_block_down(block:Node) -> void: + %Timeline.move_child(block, block.get_index() + 1) + %TimelineArea.queue_redraw() + + +func move_block_to_index(block_index:int, index:int) -> void: + %Timeline.move_child(%Timeline.get_child(block_index), index) + something_changed() + indent_events() + + + +################### VISIBILITY/VISUALS ######################################### +################################################################################ + +func scroll_to_piece(piece_index:int) -> void: + await get_tree().process_frame + var height :float = %Timeline.get_child(piece_index).position.y + if height < %TimelineArea.scroll_vertical or height > %TimelineArea.scroll_vertical+%TimelineArea.size.y-(200*DialogicUtil.get_editor_scale()): + %TimelineArea.scroll_vertical = height + + +func indent_events() -> void: + var indent: int = 0 + var event_list: Array = %Timeline.get_children() + + if event_list.size() < 2: + return + + var currently_hidden := false + var hidden_count := 0 + var hidden_until :Control= null + + # will be applied to the indent after the current event + var delayed_indent: int = 0 + + for event in event_list: + if (not "resource" in event): + continue + + if (not currently_hidden) and event.resource.can_contain_events and event.end_node and event.collapsed: + currently_hidden = true + hidden_until = event.end_node + hidden_count = 0 + elif currently_hidden and event == hidden_until: + event.update_hidden_events_indicator(hidden_count) + currently_hidden = false + hidden_until = null + elif currently_hidden: + event.hide() + hidden_count += 1 + else: + event.show() + if event.resource is DialogicEndBranchEvent: + event.update_hidden_events_indicator(0) + + delayed_indent = 0 + + if event.resource.can_contain_events: + delayed_indent = 1 + + if event.resource.needs_parent_event: + var current_block_above := get_block_above(event) + while current_block_above != null and current_block_above.resource is DialogicEndBranchEvent: + if current_block_above.parent_node == event: + break + current_block_above = get_block_above(current_block_above.parent_node) + + if current_block_above != null and event.resource.is_expected_parent_event(current_block_above.resource): + indent += 1 + event.set_warning() + else: + event.set_warning('This event needs a specific parent event!') + + elif event.resource is DialogicEndBranchEvent: + event.parent_node_changed() + delayed_indent -= 1 + if event.parent_node.resource.needs_parent_event: + delayed_indent -= 1 + + if indent >= 0: + event.set_indent(indent) + else: + event.set_indent(0) + indent += delayed_indent + + %TimelineArea.queue_redraw() + + + +################ SPECIAL BLOCK OPERATIONS ###################################### +################################################################################ + +func _on_event_popup_menu_index_pressed(index:int) -> void: + var item :Control = %EventPopupMenu.current_event + if index == 0: + if not item.resource.help_page_path.is_empty(): + OS.shell_open(item.resource.help_page_path) + elif index == 2 or index == 3: + if index == 2: + TimelineUndoRedo.create_action("[D] Move event up.") + TimelineUndoRedo.add_do_method(move_blocks_by_index.bind([item].map(func(x):return x.get_index()), -1)) + TimelineUndoRedo.add_undo_method(move_blocks_by_index.bind([item].map(func(x):return x.get_index()-1), 1)) + else: + TimelineUndoRedo.create_action("[D] Move event down.") + TimelineUndoRedo.add_do_method(move_blocks_by_index.bind([item].map(func(x):return x.get_index()), 1)) + TimelineUndoRedo.add_undo_method(move_blocks_by_index.bind([item].map(func(x):return x.get_index()+1), -1)) + TimelineUndoRedo.add_do_method(indent_events) + TimelineUndoRedo.add_do_method(something_changed) + TimelineUndoRedo.add_undo_method(indent_events) + TimelineUndoRedo.add_undo_method(something_changed) + TimelineUndoRedo.commit_action() + elif index == 5: + var events_indexed := get_events_indexed([item]) + TimelineUndoRedo.create_action("[D] Deleting 1 event.") + TimelineUndoRedo.add_do_method(delete_events_indexed.bind(events_indexed)) + TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed)) + TimelineUndoRedo.commit_action() + indent_events() + something_changed() + + +func _on_right_sidebar_resized(): + var _scale := DialogicUtil.get_editor_scale() + if %RightSidebar.size.x < 160*_scale and !sidebar_collapsed: + sidebar_collapsed = true + for section in %RightSidebar.get_node('EventContainer').get_children(): + for con in section.get_children(): + if con.get_child_count() == 0: + continue + if con.get_child(0) is Label: + con.get_child(0).hide() + elif con.get_child(0) is Button: + for button in con.get_children(): + button.toggle_name(false) + + elif %RightSidebar.size.x > 160*_scale and sidebar_collapsed: + sidebar_collapsed = false + for section in %RightSidebar.get_node('EventContainer').get_children(): + for con in section.get_children(): + if con.get_child_count() == 0: + continue + if con.get_child(0) is Label: + con.get_child(0).show() + elif con.get_child(0) is Button: + for button in con.get_children(): + button.toggle_name(true) diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn new file mode 100644 index 0000000..6ae7971 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn @@ -0,0 +1,111 @@ +[gd_scene load_steps=10 format=3 uid="uid://ysqbusmy0qma"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd" id="1_8smxc"] +[ext_resource type="Theme" uid="uid://cqst728xxipcw" path="res://addons/dialogic/Editor/Theme/MainTheme.tres" id="2_x0fhp"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd" id="3_sap1x"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd" id="4_ugiq6"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_phyjj"] +content_margin_top = 10.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_207c8"] +bg_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ias3t"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[sub_resource type="Image" id="Image_pqmjp"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_fyskv"] +image = SubResource("Image_pqmjp") + +[node name="TimelineVisualEditor" type="MarginContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 +script = ExtResource("1_8smxc") + +[node name="View" type="HSplitContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("2_x0fhp") + +[node name="TimelineArea" type="ScrollContainer" parent="View"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_phyjj") +script = ExtResource("3_sap1x") + +[node name="Timeline" type="VBoxContainer" parent="View/TimelineArea"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="EventPopupMenu" type="PopupMenu" parent="View/TimelineArea"] +unique_name_in_owner = true +size = Vector2i(165, 124) +theme_override_styles/panel = SubResource("StyleBoxFlat_207c8") +theme_override_styles/hover = SubResource("StyleBoxFlat_ias3t") +item_count = 6 +item_0/text = "Documentation" +item_0/icon = SubResource("ImageTexture_fyskv") +item_0/id = 0 +item_1/text = "" +item_1/id = -1 +item_1/separator = true +item_2/text = "Move up" +item_2/icon = SubResource("ImageTexture_fyskv") +item_2/id = 2 +item_3/text = "Move down" +item_3/icon = SubResource("ImageTexture_fyskv") +item_3/id = 3 +item_4/text = "" +item_4/id = -1 +item_4/separator = true +item_5/text = "Delete" +item_5/icon = SubResource("ImageTexture_fyskv") +item_5/id = 5 +script = ExtResource("4_ugiq6") + +[node name="RightSidebar" type="ScrollContainer" parent="View"] +unique_name_in_owner = true +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +size_flags_stretch_ratio = 0.2 +horizontal_scroll_mode = 0 + +[node name="EventContainer" type="VBoxContainer" parent="View/RightSidebar"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.2 + +[connection signal="drag_completed" from="View/TimelineArea" to="." method="_on_timeline_area_drag_completed"] +[connection signal="index_pressed" from="View/TimelineArea/EventPopupMenu" to="." method="_on_event_popup_menu_index_pressed"] +[connection signal="resized" from="View/RightSidebar" to="." method="_on_right_sidebar_resized"] diff --git a/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd new file mode 100644 index 0000000..8c75f9d --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd @@ -0,0 +1,37 @@ +extends Control + +func _ready() -> void: + print("[Dialogic] Testing scene was started.") + if !ProjectSettings.get_setting('internationalization/locale/test', "").is_empty(): + print("Testing locale is: ", ProjectSettings.get_setting('internationalization/locale/test')) + $PauseIndictator.hide() + var dialog_scene_path: String = ProjectSettings.get_setting( + 'dialogic/layout/layout_scene', + DialogicUtil.get_default_layout() + ) + var scene: Node = load(dialog_scene_path).instantiate() + DialogicUtil.apply_scene_export_overrides(scene, ProjectSettings.get_setting('dialogic/layout/export_overrides', {})) + add_child(scene) + if not scene is CanvasLayer: + if scene is Control: + scene.position = get_viewport_rect().size/2.0 + if scene is Node2D: + scene.position = get_viewport_rect().size/2.0 + + randomize() + var current_timeline: String = DialogicUtil.get_editor_setting('current_timeline_path') + Dialogic.start_timeline(current_timeline) + Dialogic.timeline_ended.connect(get_tree().quit) + Dialogic.signal_event.connect(recieve_event_signal) + Dialogic.text_signal.connect(recieve_text_signal) + +func recieve_event_signal(argument:String) -> void: + print("[Dialogic] Encountered a signal event: ", argument) + +func recieve_text_signal(argument:String) -> void: + print("[Dialogic] Encountered a signal in text: ", argument) + +func _input(event:InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + Dialogic.paused = !Dialogic.paused + $PauseIndictator.visible = Dialogic.paused diff --git a/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn new file mode 100644 index 0000000..926b23f --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=2 format=3 uid="uid://ud18ke1g2nw4"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd" id="1_bamud"] + +[node name="TestTimelineScene" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource("1_bamud") + +[node name="PauseIndictator" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -65.0 +offset_top = 7.0 +offset_right = -8.0 +offset_bottom = 33.0 +grow_horizontal = 0 +text = "Paused" +metadata/_edit_layout_mode = 1 diff --git a/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd b/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd new file mode 100644 index 0000000..c8a5249 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd @@ -0,0 +1,178 @@ +@tool +extends DialogicEditor + +## Editor that holds both the visual and the text timeline editors. + +# references +var current_editor_mode: int = 0 # 0 = visal, 1 = text +var play_timeline_button : Button = null + +## Overwrite. Register to the editor manager in here. +func _register() -> void: + resource_unsaved.connect(_on_resource_unsaved) + resource_saved.connect(_on_resource_saved) + + # register editor + editors_manager.register_resource_editor('dtl', self) + # add timeline button + var add_timeline_button: Button = editors_manager.add_icon_button( + load("res://addons/dialogic/Editor/Images/Toolbar/add-timeline.svg"), + "Add Timeline", + self) + add_timeline_button.pressed.connect(_on_create_timeline_button_pressed) + add_timeline_button.shortcut = Shortcut.new() + add_timeline_button.shortcut.events.append(InputEventKey.new()) + add_timeline_button.shortcut.events[0].keycode = KEY_1 + add_timeline_button.shortcut.events[0].ctrl_pressed = true + # play timeline button + play_timeline_button = editors_manager.add_custom_button( + "Play Timeline", + get_theme_icon("PlayScene", "EditorIcons"), + self) + play_timeline_button.pressed.connect(play_timeline) + play_timeline_button.tooltip_text = "Play the current timeline (CTRL+F5)" + + %VisualEditor.load_event_buttons() + + current_editor_mode = DialogicUtil.get_editor_setting('timeline_editor_mode', 0) + + match current_editor_mode: + 0: + %VisualEditor.show() + %TextEditor.hide() + %SwitchEditorMode.text = "Text Editor" + 1: + %VisualEditor.hide() + %TextEditor.show() + %SwitchEditorMode.text = "Visual Editor" + + $NoTimelineScreen.show() + play_timeline_button.disabled = true + + +func _get_title() -> String: + return "Timeline" + + +func _get_icon() -> Texture: + return get_theme_icon("TripleBar", "EditorIcons") + + +## If this editor supports editing resources, load them here (overwrite in subclass) +func _open_resource(resource:Resource) -> void: + current_resource = resource + current_resource_state = ResourceStates.SAVED + match current_editor_mode: + 0: + %VisualEditor.load_timeline(current_resource) + 1: + %TextEditor.load_timeline(current_resource) + $NoTimelineScreen.hide() + for t in editors_manager.resource_helper.timeline_directory.keys(): + if editors_manager.resource_helper.timeline_directory[t] == current_resource.resource_path: + %TimelineName.text = t + play_timeline_button.disabled = false + + +## If this editor supports editing resources, save them here (overwrite in subclass) +func _save() -> void: + match current_editor_mode: + 0: + %VisualEditor.save_timeline() + 1: + %TextEditor.save_timeline() + + +func _input(event: InputEvent) -> void: + + if event is InputEventKey and event.keycode == KEY_F5 and event.pressed: + if Input.is_key_pressed(KEY_CTRL): + play_timeline() + + +## Method to play the current timeline. Connected to the button in the sidebar. +func play_timeline(): + _save() + + var dialogic_plugin = DialogicUtil.get_dialogic_plugin() + + # Save the current opened timeline + DialogicUtil.set_editor_setting('current_timeline_path', current_resource.resource_path) + + DialogicUtil.get_dialogic_plugin().get_editor_interface().play_custom_scene("res://addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn") + + +## Method to switch from visual to text editor (and vice versa). Connected to the button in the sidebar. +func toggle_editor_mode(): + match current_editor_mode: + 0: + current_editor_mode = 1 + %VisualEditor.save_timeline() + %VisualEditor.hide() + %TextEditor.show() + %TextEditor.load_timeline(current_resource) + %SwitchEditorMode.text = "Visual Editor" + 1: + current_editor_mode = 0 + %TextEditor.save_timeline() + %TextEditor.hide() + %VisualEditor.load_timeline(current_resource) + %VisualEditor.show() + %SwitchEditorMode.text = "Text Editor" + + DialogicUtil.set_editor_setting('timeline_editor_mode', current_editor_mode) + + +func _on_resource_unsaved(): + if current_resource: + current_resource.set_meta("timeline_not_saved", true) + + +func _on_resource_saved(): + if current_resource: + current_resource.set_meta("timeline_not_saved", false) + + +func new_timeline(path:String) -> void: + _save() + var new_timeline := DialogicTimeline.new() + new_timeline.resource_path = path + new_timeline.set_meta('timeline_not_saved', true) + var err := ResourceSaver.save(new_timeline) + editors_manager.resource_helper.rebuild_timeline_directory() + editors_manager.edit_resource(new_timeline) + + +func _ready(): + $NoTimelineScreen.add_theme_stylebox_override("panel", get_theme_stylebox("Background", "EditorStyles")) + + # switch editor mode button + %SwitchEditorMode.text = "Text editor" + %SwitchEditorMode.icon = get_theme_icon("ArrowRight", "EditorIcons") + %SwitchEditorMode.pressed.connect(toggle_editor_mode) + var _scale := DialogicUtil.get_editor_scale() + %SwitchEditorMode.custom_minimum_size.x = 200 * _scale + + + + + +func _on_create_timeline_button_pressed(): + editors_manager.show_add_resource_dialog( + new_timeline, + '*.dtl; DialogicTimeline', + 'Create new timeline', + 'timeline', + ) + + +func _clear(): + current_resource = null + current_resource_state = ResourceStates.SAVED + match current_editor_mode: + 0: + %VisualEditor.clear_timeline_nodes() + 1: + %TextEditor.clear_timeline() + $NoTimelineScreen.show() + play_timeline_button.disabled = true diff --git a/addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn b/addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn new file mode 100644 index 0000000..a3d0c1b --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn @@ -0,0 +1,131 @@ +[gd_scene load_steps=10 format=3 uid="uid://crce0na84rhfd"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/timeline_editor.gd" id="1_4aceh"] +[ext_resource type="PackedScene" uid="uid://ysqbusmy0qma" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn" id="2_qs7vc"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_yqd26"] +[ext_resource type="PackedScene" uid="uid://defdeav8rli6o" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn" id="3_up2bn"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd" id="4_1t6bf"] + +[sub_resource type="Image" id="Image_pnrtc"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ajdpw"] +image = SubResource("Image_pnrtc") + +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_7lpql"] +script = ExtResource("4_1t6bf") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dumog"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="Timeline" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_4aceh") + +[node name="VBox" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBox" type="HBoxContainer" parent="VBox"] +layout_mode = 2 + +[node name="TimelineName" type="Label" parent="VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicTitle" +text = "Cool Name" + +[node name="NameTooltip" parent="VBox/HBox" instance=ExtResource("2_yqd26")] +layout_mode = 2 +tooltip_text = "The name of the timeline is determined from the file name. +This is what you should use in a jump event to reference this timeline. + +Besides the file path, you can also use this name in Dialogic.start()" +texture = SubResource("ImageTexture_ajdpw") +hint_text = "The name of the timeline is determined from the file name. +This is what you should use in a jump event to reference this timeline. + +Besides the file path, you can also use this name in Dialogic.start()" + +[node name="SwitchEditorMode" type="Button" parent="VBox/HBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +tooltip_text = "Switch between Text Editor and Visual Editor" +text = "Text editor" +icon = SubResource("ImageTexture_ajdpw") + +[node name="VisualEditor" parent="VBox" instance=ExtResource("2_qs7vc")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 0 + +[node name="TextEditor" parent="VBox" instance=ExtResource("3_up2bn")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +syntax_highlighter = SubResource("SyntaxHighlighter_7lpql") +symbol_lookup_on_click = true +line_folding = false +gutters_draw_fold_gutter = false + +[node name="NoTimelineScreen" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_dumog") + +[node name="CenterContainer" type="CenterContainer" parent="NoTimelineScreen"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="NoTimelineScreen/CenterContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="NoTimelineScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "No timeline opened. +Create a timeline or double-click one in the file system dock." +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="CreateTimelineButton" type="Button" parent="NoTimelineScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "Create New Timeline" + +[connection signal="pressed" from="NoTimelineScreen/CenterContainer/VBoxContainer/CreateTimelineButton" to="." method="_on_create_timeline_button_pressed"] diff --git a/addons/dialogic/Editor/dialogic_editor.gd b/addons/dialogic/Editor/dialogic_editor.gd new file mode 100644 index 0000000..5b731d2 --- /dev/null +++ b/addons/dialogic/Editor/dialogic_editor.gd @@ -0,0 +1,64 @@ +@tool +class_name DialogicEditor +extends Control + +## Base class for all dialogic editors. + +# These signals will automatically be emitted if current_resource_state is changed. +signal resource_saved() +signal resource_unsaved() + +var current_resource: Resource + +## State of the current resource +enum ResourceStates {SAVED, UNSAVED} +var current_resource_state: ResourceStates: + set(value): + current_resource_state = value + if value == ResourceStates.SAVED: + resource_saved.emit() + else: + resource_unsaved.emit() + +var editors_manager: Control +# text displayed on the current resource label on non-resource editors +var alternative_text: String = "" + +## Overwrite. Register to the editor manager in here. +func _register() -> void: + pass + + +## Used on the tab +func _get_icon() -> Texture: + return null + +## Used on the tab +func _get_title() -> String: + return "" + + +## If this editor supports editing resources, load them here (overwrite in subclass) +func _open_resource(resource:Resource) -> void: + pass + + +## If this editor supports editing resources, save them here (overwrite in subclass) +func _save() -> void: + pass + + +## Overwrite. Called when this editor is shown. (show() doesn't have to be called) +func _open(extra_info:Variant = null) -> void: + pass + + +## Overwrite. Called when another editor is opened. (hide() doesn't have to be called) +func _close(): + pass + + +## Overwrite. Called to clear all current state and resource from the editor. +## Although rarely used, sometimes you just want NO timeline to be open. +func _clear(): + pass diff --git a/addons/dialogic/Editor/directory_holder.gd b/addons/dialogic/Editor/directory_holder.gd new file mode 100644 index 0000000..a2517e4 --- /dev/null +++ b/addons/dialogic/Editor/directory_holder.gd @@ -0,0 +1,91 @@ +@tool +extends Node + +## Node that holds timeline and character directories for use in editor. + +# barebones instance of DGH, with local Editor references to the event cache and charcater directory +var dialogic_handler: Node + +var event_script_cache: Array[DialogicEvent] = [] +var character_directory: Dictionary = {} +var timeline_directory: Dictionary = {} +var label_directory :Dictionary = {}: + set(value): + label_directory = value + Engine.get_main_loop().set_meta("dialogic_label_directory", value) + + + +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + + ## DIRECTORIES SETUP + #initialize DGH, and set the local variables to references of the DGH ones + #since we're not actually adding it to the event node, we have to manually run the commands to build the cache's + dialogic_handler = load("res://addons/dialogic/Other/DialogicGameHandler.gd").new() + rebuild_character_directory() + rebuild_timeline_directory() + rebuild_event_script_cache() + label_directory = DialogicUtil.get_editor_setting('label_ref', {}) + for i in label_directory: + if !i in timeline_directory: + label_directory.erase(i) + + find_parent('EditorView').plugin_reference.get_editor_interface().get_file_system_dock().files_moved.connect(_on_file_moved) + + +func _on_file_moved(old_name:String, new_name:String) -> void: + if old_name.ends_with('.dch'): + rebuild_character_directory() + elif old_name.ends_with('.dtl'): + rebuild_timeline_directory() + + +func rebuild_event_script_cache() -> Array: + event_script_cache = [] + if dialogic_handler != null: + dialogic_handler.collect_subsystems() + event_script_cache = dialogic_handler._event_script_cache + else: + for indexer in DialogicUtil.get_indexers(): + # build event cache + for event in indexer._get_events(): + if not 'event_end_branch.gd' in event and not 'event_text.gd' in event: + event_script_cache.append(load(event).new()) + + # Events are checked in order while testing them. EndBranch needs to be first, Text needs to be last + event_script_cache.push_front(DialogicEndBranchEvent.new()) + event_script_cache.push_back(DialogicTextEvent.new()) + + Engine.get_main_loop().set_meta("dialogic_event_cache", event_script_cache) + + return event_script_cache + + +func rebuild_character_directory() -> void: + character_directory = {} + if dialogic_handler != null: + dialogic_handler.rebuild_character_directory() + character_directory = dialogic_handler.character_directory + + +func get_character_short_path(resource:DialogicCharacter) -> String: + for chr in character_directory.values(): + if chr.resource == resource: + return chr.unique_short_path + return resource.resource_path.get_file().trim_suffix(resource.resource_path.get_extension()) + + +func rebuild_timeline_directory() -> void: + timeline_directory = {} + if dialogic_handler != null: + dialogic_handler.rebuild_timeline_directory() + timeline_directory = dialogic_handler.timeline_directory + + +func get_event_scripts() -> Array: + if event_script_cache.size() > 0: + return event_script_cache + else: + return rebuild_event_script_cache() diff --git a/addons/dialogic/Editor/editor_main.gd b/addons/dialogic/Editor/editor_main.gd new file mode 100644 index 0000000..484dbe6 --- /dev/null +++ b/addons/dialogic/Editor/editor_main.gd @@ -0,0 +1,183 @@ +@tool +extends ColorRect + +## Editor root node. Most editor functionality is handled by EditorsManager node! + +var plugin_reference: EditorPlugin = null +var editors_manager: Control = null + +var editor_file_dialog: EditorFileDialog + +## Styling +@export var editor_tab_bg := StyleBoxFlat.new() + + +func _ready() -> void: + if get_parent() is SubViewport: + return + + ## REFERENCES + editors_manager = $Margin/EditorsManager + + ## STYLING + color = get_theme_color("base_color", "Editor") + editor_tab_bg.border_color = get_theme_color("base_color", "Editor") + editor_tab_bg.bg_color = get_theme_color("dark_color_2", "Editor") + $Margin/EditorsManager.editors_holder.add_theme_stylebox_override('panel', editor_tab_bg) + + # File dialog + editor_file_dialog = EditorFileDialog.new() + add_child(editor_file_dialog) + + var info_message := Label.new() + info_message.add_theme_color_override('font_color', get_theme_color("warning_color", "Editor")) + editor_file_dialog.get_line_edit().get_parent().add_sibling(info_message) + info_message.get_parent().move_child(info_message, info_message.get_index()-1) + editor_file_dialog.set_meta('info_message_label', info_message) + + $SaveConfirmationDialog.add_button('No Saving Please!', true, 'nosave') + $SaveConfirmationDialog.hide() + update_theme_additions() + + +func update_theme_additions(): + if theme == null: + theme = Theme.new() + theme.clear() + + theme.set_type_variation('DialogicTitle', 'Label') + theme.set_font('font', 'DialogicTitle', get_theme_font("title", "EditorFonts")) + theme.set_color('font_color', 'DialogicTitle', get_theme_color('warning_color', 'Editor')) + theme.set_font_size('font_size', 'DialogicTitle', get_theme_font_size("doc_size", "EditorFonts")) + + theme.set_type_variation('DialogicSubTitle', 'Label') + theme.set_font('font', 'DialogicSubTitle', get_theme_font("title", "EditorFonts")) + theme.set_font_size('font_size', 'DialogicSubTitle', get_theme_font_size("doc_size", "EditorFonts")) + theme.set_color('font_color', 'DialogicSubTitle', get_theme_color('accent_color', 'Editor')) + + theme.set_type_variation('DialogicPanelA', 'PanelContainer') + var panel_style := DCSS.inline({ + 'border-radius': 10, + 'border': 0, + 'border_color':get_theme_color("dark_color_3", "Editor"), + 'background': get_theme_color("base_color", "Editor"), + 'padding': [5, 5], + }) + theme.set_stylebox('panel', 'DialogicPanelA', panel_style) + theme.set_stylebox('normal', 'DialogicPanelA', panel_style) + + var dark_panel := panel_style.duplicate() + dark_panel.bg_color = get_theme_color("dark_color_3", "Editor") + theme.set_stylebox('panel', 'DialogicPanelDarkA', dark_panel) + + + + # panel used for example for portrait previews in character editor + theme.set_type_variation('DialogicPanelB', 'PanelContainer') + var side_panel :StyleBoxFlat= panel_style.duplicate() + side_panel.corner_radius_top_left = 0 + side_panel.corner_radius_bottom_left = 0 + side_panel.expand_margin_left = 8 + side_panel.bg_color = get_theme_color("dark_color_2", "Editor") + side_panel.set_border_width_all(1) + side_panel.border_width_left = 0 + side_panel.border_color = get_theme_color("contrast_color_2", "Editor") + theme.set_stylebox('panel', 'DialogicPanelB', side_panel) + + + theme.set_type_variation('DialogicEventEdit', 'Control') + var edit_panel := StyleBoxFlat.new() + edit_panel.draw_center = true + edit_panel.bg_color = get_theme_color("accent_color", "Editor") + edit_panel.bg_color.a = 0.05 + edit_panel.border_width_bottom = 2 + edit_panel.border_color = get_theme_color("accent_color", "Editor").lerp(get_theme_color("dark_color_2", "Editor"), 0.4) + edit_panel.content_margin_left = 5 + edit_panel.content_margin_right = 5 + edit_panel.set_corner_radius_all(1) + theme.set_stylebox('panel', 'DialogicEventEdit', edit_panel) + theme.set_stylebox('normal', 'DialogicEventEdit', edit_panel) + + var focus_edit := edit_panel.duplicate() + focus_edit.border_color = get_theme_color("property_color_z", "Editor") + focus_edit.draw_center = false + theme.set_stylebox('focus', 'DialogicEventEdit', focus_edit) + + var hover_edit := edit_panel.duplicate() + hover_edit.border_color = get_theme_color("warning_color", "Editor") + theme.set_stylebox('hover', 'DialogicEventEdit', hover_edit) + + var disabled_edit := edit_panel.duplicate() + disabled_edit.border_color = get_theme_color("property_color", "Editor") + theme.set_stylebox('disabled', 'DialogicEventEdit', disabled_edit) + + theme.set_type_variation('DialogicHintText', 'Label') + theme.set_color('font_color', 'DialogicHintText', get_theme_color("readonly_color", "Editor")) + theme.set_font('font', 'DialogicHintText', get_theme_font("doc_italic", "EditorFonts")) + + theme.set_type_variation('DialogicHintText2', 'Label') + theme.set_color('font_color', 'DialogicHintText2', get_theme_color("property_color_w", "Editor")) + theme.set_font('font', 'DialogicHintText2', get_theme_font("doc_italic", "EditorFonts")) + + theme.set_type_variation('DialogicSection', 'Label') + theme.set_font('font', 'DialogicSection', get_theme_font("main_msdf", "EditorFonts")) + theme.set_color('font_color', 'DialogicSection', get_theme_color("property_color_z", "Editor")) + theme.set_font_size('font_size', 'DialogicSection', get_theme_font_size("doc_size", "EditorFonts")) + + theme.set_type_variation('DialogicSettingsSection', 'DialogicSection') + theme.set_font('font', 'DialogicSettingsSection', get_theme_font("main_msdf", "EditorFonts")) + theme.set_color('font_color', 'DialogicSettingsSection', get_theme_color("property_color_z", "Editor")) + theme.set_font_size('font_size', 'DialogicSettingsSection', get_theme_font_size("doc_size", "EditorFonts")) + + theme.set_type_variation('DialogicSectionBig', 'DialogicSection') + theme.set_color('font_color', 'DialogicSectionBig', get_theme_color("accent_color", "Editor")) + theme.set_font_size('font_size', 'DialogicSectionBig', get_theme_font_size("doc_title_size", "EditorFonts")) + + theme.set_type_variation('DialogicLink', 'LinkButton') + theme.set_color('font_hover_color', 'DialogicLink', get_theme_color("warning_color", "Editor")) + + theme.set_type_variation('DialogicMegaSeparator', 'HSeparator') + theme.set_stylebox('separator', 'DialogicMegaSeparator', DCSS.inline({ + 'border-radius': 10, + 'border': 0, + 'background': get_theme_color("accent_color", "Editor"), + 'padding': [5, 5], + })) + theme.set_constant('separation', 'DialogicMegaSeparator', 50) + + + + theme.set_icon('Plugin', 'Dialogic', load("res://addons/dialogic/Editor/Images/plugin-icon.svg")) +# theme.set_icon('Character', 'Dialogic', load("res://addons/dialogic/Editor/Images/Resources/character.svg")) +# theme.set_icon('Portrait', 'Dialogic', load("res://addons/dialogic/Editor/Images/Resources/portrait.svg")) +# theme.set_icon('Timeline', 'Dialogic', get_theme_icon("TripleBar", "EditorIcons")) + + + + +func godot_file_dialog(callable:Callable, filter:String, mode := EditorFileDialog.FILE_MODE_OPEN_FILE, window_title := "Save", current_file_name := 'New_File', saving_something := false, extra_message:String = "") -> EditorFileDialog: + for connection in editor_file_dialog.file_selected.get_connections(): + editor_file_dialog.file_selected.disconnect(connection.callable) + for connection in editor_file_dialog.dir_selected.get_connections(): + editor_file_dialog.dir_selected.disconnect(connection.callable) + editor_file_dialog.file_mode = mode + editor_file_dialog.clear_filters() + editor_file_dialog.popup_centered_ratio(0.6) + editor_file_dialog.add_filter(filter) + editor_file_dialog.title = window_title + editor_file_dialog.current_file = current_file_name + editor_file_dialog.disable_overwrite_warning = !saving_something + if extra_message: + editor_file_dialog.get_meta('info_message_label').show() + editor_file_dialog.get_meta('info_message_label').text = extra_message + else: + editor_file_dialog.get_meta('info_message_label').hide() + + if mode == EditorFileDialog.FILE_MODE_OPEN_FILE or mode == EditorFileDialog.FILE_MODE_SAVE_FILE: + editor_file_dialog.file_selected.connect(callable) + elif mode == EditorFileDialog.FILE_MODE_OPEN_DIR: + editor_file_dialog.dir_selected.connect(callable) + elif mode == EditorFileDialog.FILE_MODE_OPEN_ANY: + editor_file_dialog.dir_selected.connect(callable) + editor_file_dialog.file_selected.connect(callable) + return editor_file_dialog diff --git a/addons/dialogic/Editor/editor_main.tscn b/addons/dialogic/Editor/editor_main.tscn new file mode 100644 index 0000000..47825d7 --- /dev/null +++ b/addons/dialogic/Editor/editor_main.tscn @@ -0,0 +1,154 @@ +[gd_scene load_steps=16 format=3 uid="uid://de6yhw4r8jqb3"] + +[ext_resource type="Script" path="res://addons/dialogic/Editor/editor_main.gd" id="1_x88ov"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/editors_manager.gd" id="2_pe2tl"] +[ext_resource type="Texture2D" uid="uid://dybg3l5pwetne" path="res://addons/dialogic/Editor/Images/plugin-icon.svg" id="2_scwcl"] +[ext_resource type="PackedScene" uid="uid://cwe3r2tbh2og1" path="res://addons/dialogic/Editor/Common/side_bar.tscn" id="3_lp6hj"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/Common/toolbar.gd" id="4_6cx8s"] +[ext_resource type="Texture2D" uid="uid://bbea0efx0ybu7" path="res://addons/dialogic/Editor/Images/Resources/character.svg" id="6_8yp76"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/directory_holder.gd" id="7_1xvr0"] +[ext_resource type="Texture2D" uid="uid://b5xwnxdb7064n" path="res://addons/dialogic/Modules/Glossary/icon.svg" id="7_45ytg"] +[ext_resource type="Texture2D" uid="uid://1mccycya6eua" path="res://addons/dialogic/Modules/LayoutEditor/styles_icon.svg" id="8_jj1i6"] +[ext_resource type="Texture2D" uid="uid://ckilxvwc34s84" path="res://addons/dialogic/Modules/Variable/variable.svg" id="9_k4reh"] +[ext_resource type="PackedScene" uid="uid://c7lmt5cp7bxcm" path="res://addons/dialogic/Editor/Common/broken_reference_manager.tscn" id="10_l1rf8"] +[ext_resource type="Script" path="res://addons/dialogic/Editor/Common/reference_manager_window.gd" id="10_xbkrt"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7lxu4"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 6.0 +content_margin_bottom = 6.0 +bg_color = Color(0.1155, 0.132, 0.1595, 1) +border_width_left = 2 +border_width_bottom = 2 +border_color = Color(0.21, 0.24, 0.29, 1) +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +expand_margin_left = 2.0 +expand_margin_top = 2.0 + +[sub_resource type="Image" id="Image_7vepm"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_drcn6"] +image = SubResource("Image_7vepm") + +[node name="EditorView" type="ColorRect"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +color = Color(0, 0, 0, 1) +script = ExtResource("1_x88ov") +editor_tab_bg = SubResource("StyleBoxFlat_7lxu4") + +[node name="Margin" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 2 + +[node name="EditorsManager" type="Control" parent="Margin"] +layout_mode = 2 +script = ExtResource("2_pe2tl") + +[node name="HSplit" type="HSplitContainer" parent="Margin/EditorsManager"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 0 +split_offset = 150 + +[node name="Sidebar" parent="Margin/EditorsManager/HSplit" instance=ExtResource("3_lp6hj")] +unique_name_in_owner = true +custom_minimum_size = Vector2(20, 0) +layout_mode = 2 +split_offset = 0 + +[node name="VBox" type="VBoxContainer" parent="Margin/EditorsManager/HSplit"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Toolbar" type="HBoxContainer" parent="Margin/EditorsManager/HSplit/VBox"] +layout_mode = 2 +size_flags_vertical = 0 +mouse_filter = 2 +alignment = 2 +script = ExtResource("4_6cx8s") + +[node name="EditorTabBar" type="TabBar" parent="Margin/EditorsManager/HSplit/VBox/Toolbar"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 8 +tab_count = 7 +tab_0/title = "" +tab_0/icon = ExtResource("2_scwcl") +tab_1/title = "Timeline" +tab_1/icon = SubResource("ImageTexture_drcn6") +tab_2/title = "Character" +tab_2/icon = ExtResource("6_8yp76") +tab_3/title = "Glossary" +tab_3/icon = ExtResource("7_45ytg") +tab_4/title = "Layouts" +tab_4/icon = ExtResource("8_jj1i6") +tab_5/title = "Variables" +tab_5/icon = ExtResource("9_k4reh") +tab_6/title = "Settings" +tab_6/icon = SubResource("ImageTexture_drcn6") + +[node name="CustomButtons" type="HBoxContainer" parent="Margin/EditorsManager/HSplit/VBox/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Editors" type="PanelContainer" parent="Margin/EditorsManager/HSplit/VBox"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ResourceHelper" type="Node" parent="Margin/EditorsManager"] +script = ExtResource("7_1xvr0") + +[node name="SaveConfirmationDialog" type="AcceptDialog" parent="."] +size = Vector2i(207, 100) + +[node name="ResourceRenameWarning" type="AcceptDialog" parent="."] +initial_position = 5 +title = "Dialogic resource renamed!" +size = Vector2i(494, 135) +ok_button_text = "Check for broken references" +dialog_text = "You renamed a dialogic resource. If this resource was referenced in timelines, you should check that no references where broken." +dialog_autowrap = true + +[node name="ReferenceManager" type="Window" parent="."] +disable_3d = true +initial_position = 2 +title = "Reference Manager" +size = Vector2i(858, 442) +visible = false +wrap_controls = true +content_scale_mode = 1 +content_scale_aspect = 4 +script = ExtResource("10_xbkrt") + +[node name="Manager" parent="ReferenceManager" instance=ExtResource("10_l1rf8")] + +[connection signal="confirmed" from="SaveConfirmationDialog" to="." method="_on_SaveConfirmationDialog_confirmed"] +[connection signal="custom_action" from="SaveConfirmationDialog" to="." method="_on_SaveConfirmationDialog_custom_action"] +[connection signal="close_requested" from="ReferenceManager" to="ReferenceManager" method="_on_close_requested"] diff --git a/addons/dialogic/Editor/editors_manager.gd b/addons/dialogic/Editor/editors_manager.gd new file mode 100644 index 0000000..79830d8 --- /dev/null +++ b/addons/dialogic/Editor/editors_manager.gd @@ -0,0 +1,262 @@ +@tool +extends Control + +## Node that manages editors, the toolbar and the sidebar. + +signal resource_opened(resource) +signal editor_changed(previous, current) + +### References +@onready var sidebar = $HSplit/Sidebar +@onready var editors_holder = $HSplit/VBox/Editors +@onready var toolbar = $HSplit/VBox/Toolbar +@onready var tabbar = $HSplit/VBox/Toolbar/EditorTabBar +var resource_helper: Node: + get: + return get_node("ResourceHelper") +var reference_manager: Node: + get: + return get_node("../../ReferenceManager") +## Information on supported resources and registered editors +var current_editor: DialogicEditor = null +var previous_editor: DialogicEditor = null +var editors := {} +var resources := [] +var used_resources_cache : Array = [] + +################################################################################ +## REGISTERING EDITORS +################################################################################ + +## Asks all childs of the editor holder to register +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + + tabbar.clear_tabs() + + # Load base editors + _add_editor("res://addons/dialogic/Editor/HomePage/home_page.tscn") + _add_editor("res://addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn") + _add_editor("res://addons/dialogic/Editor/CharacterEditor/character_editor.tscn") + + + # Load custom editors + for indexer in DialogicUtil.get_indexers(): + for editor_path in indexer._get_editors(): + _add_editor(editor_path) + _add_editor("res://addons/dialogic/Editor/Settings/settings_editor.tscn") + + tabbar.tab_clicked.connect(_on_editors_tab_changed) + + # Needs to be done here to make sure this node is ready when doing the register calls + for editor in editors_holder.get_children(): + editor.editors_manager = self + editor._register() + + await get_parent().get_parent().ready + await get_tree().process_frame + load_saved_state() + used_resources_cache = DialogicUtil.get_editor_setting('last_resources', []) + for res in used_resources_cache: + if !FileAccess.file_exists(res): + used_resources_cache.erase(res) + sidebar.update_resource_list(used_resources_cache) + + find_parent('EditorView').plugin_reference.get_editor_interface().get_file_system_dock().files_moved.connect(_on_file_moved) + + +func _add_editor(path:String) -> void: + var editor :DialogicEditor = load(path).instantiate() + editors_holder.add_child(editor) + editor.hide() + tabbar.add_tab(editor._get_title(), editor._get_icon()) + + +## Call to register an editor/tab that edits a resource with a custom ending. +func register_resource_editor(resource_extension:String, editor:DialogicEditor) -> void: + editors[editor.name] = {'node':editor, 'buttons':[], 'extension': resource_extension} + resources.append(resource_extension) + editor.resource_saved.connect(_on_resource_saved.bind(editor)) + editor.resource_unsaved.connect(_on_resource_unsaved.bind(editor)) + + +## Call to register an editor/tab that doesn't edit a resource +func register_simple_editor(editor:DialogicEditor) -> void: + editors[editor.name] = {'node': editor, 'buttons':[]} + + +## Call to add an icon button. These buttons are always visible. +func add_icon_button(icon:Texture, tooltip:String, editor:DialogicEditor=null) -> Node: + var button: Button = toolbar.add_icon_button(icon, tooltip) + if editor != null: + editors[editor.name]['buttons'].append(button) + return button + + +## Call to add a custom action button. Only visible if editor is visible. +func add_custom_button(label:String, icon:Texture, editor:DialogicEditor) -> Node: + var button: Button = toolbar.add_custom_button(label, icon) + editors[editor.name]['buttons'].append(button) + return button + + +func can_edit_resource(resource:Resource) -> bool: + return resource.resource_path.get_extension() in resources + + +################################################################################ +## OPENING/CLOSING +################################################################################ + +func _on_editors_tab_changed(tab:int) -> void: + open_editor(editors_holder.get_child(tab)) + + +func edit_resource(resource:Resource, save_previous:bool = true, silent:= false) -> void: + if resource: + if current_editor and save_previous: + current_editor._save() + + if !resource.resource_path in used_resources_cache: + used_resources_cache.append(resource.resource_path) + sidebar.update_resource_list(used_resources_cache) + + ## Open the correct editor + var extension: String = resource.resource_path.get_extension() + for editor in editors.values(): + if editor.get('extension', '') == extension: + editor['node']._open_resource(resource) + if !silent: + open_editor(editor['node'], false) + if !silent: + resource_opened.emit(resource) + else: + # The resource doesn't exists, show an error + print('[Dialogic] The resource you are trying to edit doesn\'t exists any more.') + + +## Only works if there was a different editor opened previously +func toggle_editor(editor) -> void: + if editor.visible: + open_editor(previous_editor, true) + else: + open_editor(editor, true) + + +## Shows the given editor +func open_editor(editor:DialogicEditor, save_previous: bool = true, extra_info:Variant = null) -> void: + if current_editor and save_previous: + current_editor._save() + + if current_editor: + current_editor._close() + current_editor.hide() + + if current_editor != previous_editor: + previous_editor = current_editor + + editor._open(extra_info) + current_editor = editor + editor.show() + tabbar.current_tab = editor.get_index() + + if editor.current_resource: + var text:String = editor.current_resource.resource_path.get_file() + if editor.current_resource_state == DialogicEditor.ResourceStates.UNSAVED: + text += "(*)" + + ## This makes custom button editor-specific + ## I think it's better without. +# toolbar.hide_all_custom_buttons() +# for button in editors[current_editor.name]['buttons']: +# button.show() + + save_current_state() + editor_changed.emit(previous_editor, current_editor) + + +## Rarely used to completely clear a editor. +func clear_editor(editor:DialogicEditor, save:bool = false) -> void: + if save: + editor._save() + + editor._clear() + +## Shows a file selector. Calls [accept_callable] once accepted +func show_add_resource_dialog(accept_callable:Callable, filter:String = "*", title = "New resource", default_name = "new_character", mode = EditorFileDialog.FILE_MODE_SAVE_FILE) -> void: + find_parent('EditorView').godot_file_dialog( + accept_callable, + filter, + mode, + title, + default_name, + true, + "Do not use \"'()!;:/\\*# in character or timeline names!" + ) + + +## Called by the plugin.gd script on CTRL+S or Debug Game start +func save_current_resource() -> void: + current_editor._save() + + +## Change the resource state +func _on_resource_saved(editor:DialogicEditor): + sidebar.set_unsaved_indicator(true) + + +## Change the resource state +func _on_resource_unsaved(editor:DialogicEditor): + sidebar.set_unsaved_indicator(false) + + +## Tries opening the last resource +func load_saved_state() -> void: + var current_resources: Dictionary = DialogicUtil.get_editor_setting('current_resources', {}) + for editor in current_resources.keys(): + editors[editor]['node']._open_resource(load(current_resources[editor])) + + var current_editor: String = DialogicUtil.get_editor_setting('current_editor', 'HomePage') + open_editor(editors[current_editor]['node']) + + +func save_current_state() -> void: + DialogicUtil.set_editor_setting('current_editor', current_editor.name) + var current_resources: Dictionary = {} + for editor in editors.values(): + if editor['node'].current_resource != null: + current_resources[editor['node'].name] = editor['node'].current_resource.resource_path + DialogicUtil.set_editor_setting('current_resources', current_resources) + + +func _on_file_moved(old_name:String, new_name:String) -> void: + if !old_name.get_extension() in resources: + return + + used_resources_cache = DialogicUtil.get_editor_setting('last_resources', []) + if old_name in used_resources_cache: + used_resources_cache.insert(used_resources_cache.find(old_name), new_name) + used_resources_cache.erase(old_name) + + sidebar.update_resource_list(used_resources_cache) + + for editor in editors: + if editors[editor].node.current_resource != null and editors[editor].node.current_resource.resource_path == old_name: + editors[editor].node.current_resource.take_over_path(new_name) + edit_resource(load(new_name), true, true) + + save_current_state() + + +################################################################################ +## HELPERS +################################################################################ + + +func get_current_editor() -> DialogicEditor: + return current_editor + + +func _exit_tree(): + DialogicUtil.set_editor_setting('last_resources', used_resources_cache) diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf b/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d998cf5b468413ca1c950096dc9d0f5dfdb1359f GIT binary patch literal 170348 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:f9GtU8uF-v@^NtnjKN=O5W$DEfkgs*!Mew10?fp}I`W0Q*}%*;VrGd6J7o1f zp)CM-(E_bx3%uwNCYP-4a>_UG9_$sq7ykOsd@p|L!FnpMv%fsmJc*2RS-vh`BB*5W z+dV)PAl2~ln+Ym$ZC%6aQ27AyUK5;v3r=V0tR+w6pYTMMr^L%^iU)Xpm+i_fTp$R zcdMa)9Hui(=SSp<)*axwWC=wB%D|e0#gqvYswtCPWx3+2RlEapTTcIb@rLa_eUntO zP+0=l6?BeJO9AnQE;H3@z~&~fGbKz#6yTUV zbtf*Io#{wIn8Q1)UTxj+PxuXMCVf{G`3t2Bu5FdlOfuuQdW9N86a>YF%UDPQC@2KM zFFAAcM^^a~tNeqyhv&*yJx}4=SV^q12Aw7fYC_@|x`4S+53AhcTDh-#Rqu>r0pe?X!R7cUc|v1C~QJyD2n{75S%F z_;NG6S8{=YU6g?$?CDJ8Mzjd$X_4@7V{r+)Yd24&e`?adSzR{7> z9A_SnGuH>6!cnsvra8-3AeuO-1mP`V>OQ5813&8Vj_%ECmJlJ(LE`BN@sy!H1N zC&f<1CX?kSWG93HT*@p+FrvO_4^e!yT%*GfnT4~d7ia&>AF`mIKm1eX_vIm-h7KS0 zS&zJNCx)^#raB+7NCI3-=FJsGL zPfDhanm=P_pW({%$zxmtMv}Iw0O7xGje?B-EgL|KH(RPuOCo&$odQYwB)C= zz*0#j5803ag7&1&C?|9sRAx3r8wWv~L{ef@6czX0+P(YJH|us+lC$<+y{Zhm(&za5 zkv9XkbiY!(m2^`x-c3ye{>vfTzfem~t4R1yw!1@o_&0$k*po3G&73fzCEp&&b7g+s;1`2#(f%VP_)CzX->k!6^-CMWnf#QH#o5eKh z(xp-3E?p$KWH)ck4&%BZuw|_^#YH3ovz5lb;!^r`g^>b^trWb@8VPMF* zKoe(!blDEYU$@x()+?=>W~D83b>G-s08_O5l?#p^0+*}P{9u7H<3X8Tz)XnL%quYB z+Pc7)G=lCb2`2QXUjoQiLb-yTU>J<)7xvExB126Se0uX4>_vWzX(RY?t5kfXC2Pj( zd6of!xuD1{Kw!>Q=@957@L^k^7$5dRZk-Ehsvu3*RH4hf2QW#Ia3FQGnsBTiK%B-2 z`Eu%f=kIW^iTb@oJh|Zw8WbG*A#qq2$v^%@N9lYBe@f>^HaBq6xlh|oyzD;Auea>| zbOz%$TJ@Zj%WtT)XRO@6|Ki7ugUMxu9Q{VID=TjdMYrso^-6L+YZ1_F zJDbjBI*RV0i=zm0Nj?pt9xsm>Gul3wqsf|-!Z{;w@;iqQ$|N^4>k)Kwp8Mc^Pc!*g zpUxvZ769e5c})OSD7smi`MO!qm?CUmsb8fdTE}gH!!NJoG8w{M(moW@N-kF<4_~`2e*Z;0p(Q6Evsjwjm#gY%;+o%&rcfiLHgAg|LZ_2_zHtECJ-%YC+=Z|MZ3; z$r~aAP0V2QhSYlBpWQbULJ$%(^2PVA^BbdwEzQhc`ibm(#4k_evgONBb2(Z8t(*3Z z;LS!0OyeXDoFoh<8LPRxCxLfC-rRrqz+@%FvGkMp{R}HvVl7BK8Lb4_y2mII0d~$s zk;6eY!0%^R8-IWP=x`_J*N5ym`y)#jJ9trU&ND;C$!R65;-dUVsmznlsyy1ZXB0a< zY>!tq<;#LwT4-t*d1qeO1!Fvs3ZNnV7#ZUT6@8UP|^%F;YnV?)l;OtTDjD;(yN=uUMl5sIpK!|2Z(ki82oU9{fFX@ zD%9e<@1Z9t$^RZiDJwON8X-vj^;Y5NXqT^#9C?}OXc$!a`{e=;2E!4AlDt4=@+(Dv=!tnA9SFf{`ioM5mqgDj@Ikp1gq7<1tQud(@1p;r8XG8o zQFLBtXSAqW&f=#hW_k24H8Glr=k?18Nfvk#2nZI+#^QYn5>H-8k`%<$BFj^L6?5^s z4=!H3k8szu^8BZ4nOsnGUVhQjU9IiuAd4JS6l@1s5p#}52TSC5^cSW;ShpaW6y(kE zc%L56@c=d6yc6&fe4J(Tk60uA!PztXeLP=eIr87EiRU-ZHP(e6mMh8;poqd-s|*m? zrKTF-%Ocw7kUP~?%7_gD^Z8#C}mgGN<4b#x{2 zMJ$(Xk#`rx*1F>Sie=R9sn!D=t-u){0SzgAe6#$twH{)`s+v>8h!U(2N4)}`-y_xb(` zCW4rB1jTUbju4rn|8(pk8=lGfpyctu`WC^O2v{crRu^FP=Hew(pV6D3IYiRK?MN?( zFu-bwpcYhg{!#%vH#Iw(f(IlvqBElq3dxql&FYC0>gJlS9AoNHEr9PjpL6%hcRhOi z^yx3Pc4vJ5+SLo6eEJ37GnlSDicM4BRq7xrMgLq_It5q}rbb(8>@zg+kk^a>hcMF2 zz?PWVfpM@#r3p<;DmPnw_w{wH=DpCocFU`;ZfrMyZ<9K$l`^mYTx;i$cJk}r)!jC# z4O!axd^LKn+5$%*Qif&~Ia_45-O|^k$u?bhjgCJlScXm}XC|02(n=FU8PPA@Pk;o} z>9e8_ylr`2vE7o=q+7Se=mKKW;F4f9#*!)}kOogoDwP4zwWqV75Kbrqx2@2~g*4fM z<{TK1HVJ+B>~sC~C`{D9vG)&u)9~jVqTexyu!9{}RjMzl;8oCC1NYR5s`DCfCdvtA!5cTtWb-N5P2)K|exxzKcbwOGqQAT5t!u*p@OYCV?YwY~s!yOA&E*Ua*&B|5VVD8tf zT0eTw@>Rt%#+)8M?(~>3Z;hYu)|k=r=03A#+4gro+P!YgbCag5e{R#x56*61`J6m! z>W5RNd^mO5`;#ZXPjrC^RvSRVqosUJ67i(h$1)|*bx&NAf<=M;_2Lh8Wz$XU~WWSFUAB0CexIQ1s0#ozjp-(>OpCW=5G zvkd<6LlhXQY+0)Vrq>`@tVhD*>@ z<}(#JMU_8L$`${hyeI!f-_VEG#oXLEbjQ|`7HhG!>kuVl?e1EjBu+{0h^WTV*Jas6 z87|9Iiq&Li7X1xQALfr%v|uN7Bxu!QMG#fZUQo&KW|?Z0yq7VS>a@g4)XYpOi8w$- z8(p?=p@{>MsaKZRgu3c)?)}Z|XlNfjZu)pO@tuC2YOOoZzTT<#RQB!hp2J>$`NHQPvY!20H)zyp=(vre zj`baW^3bL4-tRuTUDLc)gT`%{RB3Rt))kwi_pRT)B5>AE{aoo~xdK}li99)Vd)gF# z$_sS&(%MPgn!b@pWKF$(F6lcqsa?JLZQ9Ikd#PjXI_>dn>6)F_YDDYSSvh&Fva?#Z zhDN1&|97AZO|<1o8??BZqMZ>Fje&(U*O&$R5OJy?@~)z5ku1E(B8N!MszL~s(~pIt z*AD$YK~)5ig3^ykLG~d0A~Z<&j4%b>;sHsoOMju2mEn)pa#unAE69H`5I)uaQXDQG zw#$34BnpT1ZnNx^EIBy|U6J+(H9k2a1#Lo93iq`esC{4NXHK2ovG>UKK0W#jWyAXP z?8RQ#$bZ|rli%CE4aKj9%(?l|y*F5EHlMYA<1K#T^jUu5O}WeFJ)a%RKl<7J4Ffta z$)7c4NykBpUSJgt?Srr!<~I+##NrQpz_BfkIqd#o4n_%itwB^0osh z>Ua~9N=q4;$anhfY?LF?<*j2_!NGE$AY0qnQx_gQGHi0Aydy6!U9!C_-&L_oxlwJp z$!E(w)oIqqaWgXKWmXRxv0%+2er{mLr&G!-Wp!)xK#y}*)FBBwckpTjjd&a zM22TBo2r~uQc$+UEEei$!tPQY!4M#Vim2?PY;^WL&myG>nqgFUUur4;g`u91fu6s$ zUUn1yx6W?5a-=}m=|3}7bIST(YO%r}hZ@o16`?)j!G-bmcyM86Y&;=6GrgdK;SW+P zWYTY;g{l_1E9*?@j<*-o@qbFBUyWS#7|S_uENVhV!#(svR1$PYYEl|GH&7Hw-5%#H zi{o+r^Q3HIWi}nnuUEqsv@Nu8+Z{_=^>5L4rToQX9QNU39N3$`taMs7cS8NR@%x&( z?1{VDG+Ep*t9cy;n{&`&gXTC2`7Q$%BTFwv(Ih_`fgVJSUY>R`MokWYd*>><H)}SkWuEGu zxM%l|&p#j7B0H;1n-MKZYI>q}{;S1;SSTFb*J73r`ld8c4uqfggxNldl8tu25=KD? zoeHK-a2h;koKW76g7a%0UclO;*iyVp8K4}!&)2gt_gVKx#dm|n=L_p z)w7<()vVD!qt3^NmaO01a?EPB1tasDM;sE}ABs4Hq~@D?~;1_%7yVXPATtp5*iLS(juZZ16^nO8Voso9y7wtzsS z;R`xVt5u^?or^CneD2VajVIQxI{b0dth(7V`>6Rnk}Abj7&dF#=xG^GtsXgV(Zs|W z*-3p+TxZfyRG5c~-19PGWKmZ3CQr0*2~{pdtSe}k5Ui9_Dl2uA)=F<>v@%Osu542d zDQ_qrDqksglp@96_y6HD`Tq}}nMf2xS-TQik?!2FO8f&rxf~h6c8Fagq>fsslV*Cn zob=x$upUf^)QX-7)LGs*#GwV-h>EzHH}ymQ6%`jL-NFuc9K4|>OW=Q4doCT;k`lt6 z=jKiuDHj!;Z`!jeZ)w4l9Ftljq8 zMs5&V7oY9$BmbKP{m3fG0sQmNN*;Bf?_D9svCB#qcqe5vo3Bd|pHf)S zXI0;R&0F@CPhwj2*{-59eGt!Jx6pkNiY``*FZ)P!StxKT%KC`#gquq}2U>_t$Ql#n zN;vdh-by2uOUq?FgEyXd!8V~u>o{BOa%;!UKhUvKoMkmZxdhT}w;VyHsS&y$=xpB8 zi$KV9dXgE{KS1hd?a~2KSTGv~NM-v+r`S{{zBu`*9W$W8rplU98Jd&kXtTXvFA^2_ zdM&V=@PE)CZ1;a7rO*sx{z7}k8^`w{E&BM<)YB~I%$v{ecwhEmoCDKsj!p2!%lG51u zlI!wjJVWJ30n8@H%SU0s?PipSd8RJ-n|HxA_^k9Nx_;9S zN#AycJ|V{|2-hW>94A$iw*fEB_&nrt+96^{kh*CBBBG`t7@85nqztL9IJiV{kcNWt zezrl$#vPLmwJK_Fq*e_seX#hg78yg@6=D$?rbHp{h}Hoy{|M(D)BL%m;l8}J{?1wz zwzln!Y^40)(r0(K49rNAS+XzwU$|)B`j)M#Jm0J1nX4bZxpPb3s)Ks63|~S3CqUPe zEe}`-hfL4%Vo48r1o*nxh!=XMPD9TDfTLWD!2tq0n-3!TvS_i#V}lGvs}|ww+DgE@ z3$>9&CD6bpg1Q97mRCG4j5j{Ok0=q!Kc1Ju*~kWk5d2|ZnfYznKzY8^zHG4~)E?=Bof$`A3QBK0lVZOOL$ z1{)iXexI&hOqyC>OOaRBE;5@*;>n$4cb6-4Bb+zP%DBtYW)Si(9~*k4CgU_)Qf{gk zAQdGNTQn+GE-Fe`ZI-MwMs_IIl1=@_`xbV6bM?DuI6nUJ@>Xvwex~eiAhHjvMeovGy6O^ zB^3EFw7jBl2OQdI!pM7A!6~}F(H&Z7Tj8jpXUgvV2~Dzw5pt>w7}$ZVKxV9rnAHXk z$AK3aSX`0DUifj(z4`pk?+>Vmdt=Je^Cno_{7*Li;^Ge;TKKnk5yIO{JvUt@eTZ7X zdsY{y&`XP{R2fhjg#Ynku3&4u=Bfo-Xa$8a>!ZavMHUHZBg2HaC;{s(4h79VH^A4o z0EpoulY5MI0Ctey_~*ORKaH-}W7CgUJMO5MGiXNpF3mb^9M`kyPK(<1>)$RM8gsO5 zO8a(;*B87SAM-<2UW01g8&BUj;MMlcJAX#Jg)SfKO0@${lqJ=bu4{6=`h+fG)hdj0R^4KL1l{qukRIM}gmr~Y6UOX20obKkr2z%wLx z`INQ`ySL4|T70s`_{_VbfU;C6paoLLr1?dw zjLvX+U4uGd45d!WC>z`Nkoz(BTt_$&(vph_j-r}qsz~yI(OkJMg@oQaVUVqKEMbd& zTes%N1%G|KbWDvYr`v6wyuSBu+M%|Go36{BG=0$UnU*sA5ue`bF#m1SylD;VI=PsUT-w#4kCIap=i0{gy<8_3liWmZll%~}2nCOFB=we+s^sNP& zOBI>6IPpZOA((0CVB`1}s^9UH@i(u8@HP;jUJYd&Dfv`1^J!&WDN`@O(5}sQ4}Xu} zzTLlL%iY62VF^z$HM#Pr$?SAWi46JPR?R)TR}coY`Z+)LhVe#dDe-nKz6|)I zVJlZ_abo6<&`r}U&L_aH*Te+;;xOdLr#lfAh0{Z{Ollir^~U{Tnkx2=X<_1tvd8Ez zMD`d?ijkl=w?Y2Ejj%hSx6vWQEt`7l5~4DZLicq#sxR;GbvaVYV{tJ{+);eY*Y2pk zT~wbM9a#vqJ>EXCWJ&R+(w@h7_?s9yME|r4y=D$O2AKA@-r z2p7R+NQ#R&Z8$JggfZ5nz@ex~L75_ZiW%()s!aLTeZZo6k3$lNf0oRdGsWcI<@|hB zm1g&fm&RxNvm=Omh{s>&@e;GT2ts^hni zqmjy$Vhn~BS5+OD6U+Ett^d%cR4}5ZV2( zYEJK}31_-#RuRsaq4Sx}XHf0rg&86b5?`DXLwC@B)6KYL)t zQGR!evWZ2xXB|)`d-}@_JZI&-MWgzSn9yV6K6W5-9SeSu)jPr*8zV94eTUDi5USh_ zJ9&hE=zbGgq%*wQJMd~Nz^|==Jx|sQk*h{dB#A@{zO9$4|FgOf{w`@uYk=@ktBEIf zH8`i$$T_W+UQIT)h9jeA#8(;bA0!AfZ}9K2#6n~&K=}W7onQj%V_kwNKJT;h%%8XZ zv|{nq&;RmFv@aaqb#bTmd0$TZWyQ0+8m)ZFA2Vv=z*va|7hVe5;QZ`dSr zes@RyoP?@x)NZt419r_R0o(TO*0${1w{PO;vI9|oVA2#Y&tCMDhe(;4VwmU>xY1QZ zDT|n8k2=K3rSf)%JEnYcy5WGBD%tDRjVIoVx)HRcXdH27Yu{8Xb>#QcBwt6qj|5NT zL?pCC62Ov9Y-q?}koRw7IJo_$I=Y26D~Oc}*usaQcgaEJEZS$2K!Xsc_*H&FId1#- z%tt3`G-P2@SYwvIhu?g8(Mu7Y83!ZTFxGb4n-?1V9a{sdY)(CUnqNG^EXQ`oZQg;| zo^N<-`A1-?0(u0ThF)CJ;hv^BN|M zujy>qNb1uQ$Oa2*ORc4PW4`?2C+zIuc8$Wz&&}AqTmJOT1_NR$)q3s|Wmxg(H$QOv z5YoQ2vgyi@SI$M<4BFTWROtY!ykU(+ekm1HQN4Zo@MDvFgfZpCOHG44ROB}hX-E63 zJe2-6Y~LaUZ3xkz=8O}}r0}rG4a+2>T^3_GGS^bkILUl`*|(kYa?agqFaIy&%maHz zteMOYw%va@z(3TCJ+p|QPN+NK1t#KbPVd|>ng(@UXp;NV5Z$T@Uk@EiA%?R#%}yQ8 z7VlS!eo^+Gh?a;#$4P0WHF1Pd4d>k6^6QFf@$P~;bAH-(liv=eX5Ueh>7Sgor+C@6 z3NyO#-#g5DK59?#QWkwTdF$Ri?u`d%g9TToXgCf?We_0HCJNhuGO_aNzeA_3JExp|AXQ!Y^kU;J5NXUPi2l-oNd%&i{#M(xJMOJF?)h`zR2 z>etFNc$5L?Orer|xQa9nyh9tB8f)&@w`Jn$VEz*;7fAVhUv*cpN)wQ852BgN0@?OZ>=_%S zUQ}W&f58@}X@Ndlh;7&53W9<_gJW)m7m<#pE?h0ritY+uiB5^d&VbVwTQ_dh%JSEu zeS4NPXx6L&onfl_IopA`m_T@EK!g@BqwZ;sVkGl)eP8sFKqtTDUP1#cB-0O9Y)RFVd3|t6>_!*A5vgBbS@4 z411=3YMl|)$|cn}xUhe0_Vj9Hk}@q1^S3x^hGtX?8oxcfc1VqCz-BG=k}?Od&^EY+ zk5xpEg`))!%RG^2QoyVVm=y-ug8ncXGIo0j4`^+8(NsLV#|~r0SSmNHSg~Q{TEkWi8nAZAk@!lL;u9-ZmRRw8EG1X~SyYgr0$1bP z%ZP7B5FjI&>n;3()zE9r7tlO$UGF?G^K?@`DCwsEB~4V5c=;xgOA&#;#94V+teCxh zTNG_eN{R=nH%mGJmo{mC5toUd2zL_^Ya-J=q66 z{WbOMSp6_i$|;y60xitmF9S?I&Pnk@$BLM;bv@tMc6OUK_3O2hN4Bq1yCYs$ukvF# z=wlnvDla>`RUZ9F`q5XJmaW)wNV@A8|2|{ZL$eB`(RVVekzsOAmMhnL)Pil2SMoP# zRo#7M2)?lse2+?qfE8RN5mQC}eKFwY|7&ZECI?U&VKzt=bF8}D5dC<@JP=jUjG-;` zlsUIYIWMD|``@K9$|Al1JB0Teo!tMf>*@dVn*VKK50g+owv+<~t^esWB0o#?#UgGM z-c)HdMiSe4fIz|^(pMY!8U6m4{ zX_MqXJfXdnjm4wx-&eZ)qBQ%%%Z-*~KxiX>gAV+ESCkR(8%xR6#Y8JHrzM$RMn33@ zy35C&_Tx>s9o@H5w4{Gca1u2nj(UikDHi_NyC zWY5ljR@(OMv#k7Q=RPJqXL-?6;n{UIxo5zRmCJVpcn$`v2flG%7t3axItG=X5JS8m zoNS%xO!1A#%;@iwCUT=yQ45Y1=Z`kevx_V#3=C*4WAQ1TQY8hCbf^Sn!PH5tnzC)h zul!08|BA6H3npXH+{|eAZuSYU$p75Asw|($7DZy^XCS-8Ydl}zQfT&M7&zq@ObjF= z!n7Lt$;u$+FQda(nzJOzCE=YUl1+1Jjlz8pt&C}B31!)lJ4yseQgWQR-qx_FNbKlE z4|=L^rysU7x{%+np-El7aWsU@pOn8~&;TxdF?KfEO9KwQR%gX7k_BOGc3F2d^nL0=rkmMuqUwgq+VlY zT!wGQBnR)0tueI`Nnt-!An6P5VNFwNrde`5)WvEX3df-y&^-e%VM4-ba&QA~2CxZ} zgI(nximvdE>@_tBn5FGBEv?BS`#MyM6nzpXC4ry4*ArS)&zA{xM!bUDu^|nnr71#z zrJ;wzAIfUw(!@@5)TI(0OTr)%=88%cMQh9(L{X`fmT=_crlmT44V0;AiPkgUyfw5> z(+%BQcVqQ058*%k^b6LZFIC>$KXc^p>2n8;n5BNZ<)t!_*V8krc9?MR^BsS{l~4L7 zct>%Pb)e__Er$;u8UI?8n0%xAKcr)>Dpgvf#fa>g_jJNw=(&PqhJjoK}@;%K9l&3p`AJo>ecIw)91$a>@yZY!C!?pFo>S7WaPMdC{qfox0a|CXepi`kiJIhBj$X9?OO|Zeh-&zyC~JKZXw!6`gR*r3Kk( zqR+sEI-N|q%v95UJe>wMHMuQR!VwEPz@UniNwgbeh&pGLrEIArjePvXEg2X^ZNcyUQX;7(cYk6SLAt?5 zfAmHuAHy~b9rk7@HgH|$Cs}>mXGDR>H${uu7yo4P?Py|aUR^taaFa zj!_d{^_Bfb-yRSthOumRn58$WQnB4Y{s~qxcw*{i1z;FEo0=xE>7nE|wYQaGvd)^U z=R#rdVOn)RK)ldLu0^=yR}*M<_7)25f(y-+1i+EuVyMTg!iNuPh#09w?lu7crLJTcrhxMI!~qT_4~eL)MizNR*p=mRxe`794bu``u*H z_hjYg0dY)UVf+8Q-hzemvW4`1WmavzN53*QZ7M^9?2rYTh!Y z{=*NS+Fi7id`8+6HWwT~xNYaFnWG>CqIo$%C{P`@dfNk4jEuxbh-TDUAimf0ZearNH-6#9C$i}E z%HfHYV`?7sX(DP7;od44QmkZuV!V82LX9Avjwii9E@WD;Bgr(1;0AMpL?`7<;{7@p zsm){w<$v0TX0uzo{dh!V3)(agqLCJhk_YjJ{O0tL=NmMWS@6qGZ+o~FtAZa=$Ia8L zSawMr zG|4xeMB51<*t!IX7a~!jpG=H=>o0V}Vl0{=JxYjAcKEOk*d56tqO`jl%6w*5MzW9v z*!+i99ez}g)jbxrW7a9TL zM9fo_6%;Y}S2|E49@bx&2vGrsr2+_HRHa%#1!3?)3bnEhYGwfNGL|xCW;g&i?7z-F z@C+~pX~j|;hdmeRWLxJ}yI74~Z93W(u*eP9KOeWhdX0T!uU_APMyCgV9eEY0r0)Dh ze&dY;|KLWZ;H|Iumt#hZ7=vwsNi6;rbi)+rhLf;=vDhR$PP2+l!br!I?r%25%DQgQ zDptn^@0Md8y2>WwUpLNl4 z!6@})^+x>nZ?0jJgmdQb&V4@o6SbNi=j36YlfAmj?FYz>>>*ul@*)=c#jota*oAY( z_pHo9Pb9u}?VB_FQRJW97ss=*vzLH&B|jk}@VVs!3Y@~#$^pURA$OnN#JoCV6kQm5jcqk-OfKgvb1K0R%+*g7pt zAU|fYwLmAe#!(g;ek-!jXlXTf{Alr_!5i}iU^(b=@;!A9%gTlQW>^Pq^|B)JWWm4c zAA5?|?%TcL@Nt%K<_y1aoaCrN$vw+Eh*Qd9Z-CR#$7SL;K^Rh7q!4t%P$I^l_%$_3 za3dyjaX5ovMG^CHnai8te&uYI$d;c9_t@OP>eDNtc=kmhKVtpnUXHXyix=iG|a((E|4CwH3=Yv zBFk3PoO4kH$1*#b1)*6uOX7XBW8i+DC7wHcc1-xNb1${a$R8M5Mk%~EY1zW@%GnuT zFaMnXsh;w1EP4HGIlFHO|A|$Uw|nAv;*!xrpHXmDR7}KKoyg?w)|fZCLlKUuwZv(n z#-UTrv|yx^2kB#_2WPU#m!aV8z3ZU2?u}dK81G1kTT_cq(FD0^?uGc&czXeGvAGA4 zd}$wM#Hw4o7Q->bx6CcKU{xOMd9;jQedzg;vgPP2o%H*}XO~S@TFJwBz_c%xU*V4w zxu@pr4tJs@VEMLf8L;mLOvjEnFLARz;^ zQ}|{}6rc@89$ufK7A}HLCsRV&q#kvT(O6_~)BRIv>$Lvg6y%g!peWo0`WkXj)JQ%3 zr~}{3Mu1=D!ET(#wL^fbepr_rtYkH>MW(?qc_K)Xl<)mjSar;D|>c@XCU*RP(D9d=mxuXV8qN%Uq z;0=Q<>8nL}?-&6wquqT}b_Va7K-Oz|U`(=g7~eG3fxJ;3nilL-%`7mOK>;q{R5EiS za)HcDui#qV<9CYJ@>}+CJqJ1}DX+g&R3caAtINdlt!x~#CaypZV=%pzxGz9=~d%AYRj&XtU^w1CwM%v)e zT7Wm{fUG`lnduaX2po@k%Bd8M|7jm#rufm)?g+n9z~AA|vh&!KK7}>iz^bf8`C&5F z%b(`U7NoR@AbSYw-*2U6+gf^o0R;ju18JcDOmW5hWRuTIZ7QyVB46TujpNZ zRS^m8it{ScjT9^1!;@B05ffMj-%4|&R3uh|7B-hay+sP|3UL3;xM1?><_&u2M(J#& z!_%V&%;Q%U{rOxmi=8rN`h0$o@8kiU&yF* zXx_P>#-5tfZseHG69?Z>h^DAcTVg=dKz*mHNnAzTt`pcq#?qpwck>wndzvx!@fu8b zfwTFrEEQxUdQU}2XG=tiebL9j6} zVx%gJW(oJ1xok2*1j~Od4?z`&Xp(Nu^ThpgIu=Y5Av!bTuE5lSVYH_}1^CcrO-f56 zqKW-;`%wF8%9W?`e;KL7V36Jo&IVVRWVD>S({nzBI2T1 zRoqt=D_D^9j*1rL$tY+CxbZ>Wd(4R1B$&{^MP$4UnSC0F!tf4N!C<_xo5n7|E5TCv zWZcmZl}XIcU_6i9dm%pFf{F4)#32^7l^5{u`3>h0etXMi7V%)}?bz$DZ(w0ZUS^ToFtkl*q&KDq0_TZG#we7EIm;5HcD zQ2)1Oc%m_|`i%i@pzKKS8G{Rv{O2N!iIXuXYUFV+4M>p7$rn#GW%Fmaek zf9dR|g-N0jE(|O89_K8&-ys#4$fL`3SVH*aWgFnoeXC-kXxh3B%ZRt+iWMIGz&_?R z=Zvc$ZzNdeLvL0RXNOfJ9cThVIGs9onFLPf`N!+zgb2as#OwHv9l`i}Rknsz`L~;n z2QrMfBwd~Fu~9`loMxU;$^QQVfS$GgF90+=gCQo_1c{)E0h%+B{NcaH{SXz^^t{gc z5mc~#pbz>bgtZ>1F|W0TWz+AMWI~aS2u+rJ=9xI$AopYqjb6>;2Aj+tg%W0iT}FPh z)LwtXC(3UMdkri7hu2=K=i$Hl?6pGE)z-;?nC|rKlE!PY_dZ0hT*%MhQLpZrn95`n z^(?60w!=F|4NQED`&lP z`j2-`Em(bzMIPd3uk^=Vp_VWQk{IY(#4HirBi)6b+nE~f^Fj7L!JpGLoyo*0!cEpg zH(eRx)==JUI^noGv2mIMM>7PX6saWoISB;O8>)P>cR3WF{^tg0woK}%I>7(l?>s=^ z$)3RHF*tPmiT6Q!j@gfUPJyRpzssuaf9z&xa>*@l7b%|*c(#KzyVtXY&lcq4E^#28 zmO{|=qv`>;=J4Lr5bG#%%&TZT(=ZRR+35tQlz%iqBo4Xu=l34t(gRwv9~ zLlo|;UTgQugH3>ge#97WS;LsLg;9Z}U6y9}nlZy8Ys{`RmI*yJ+~7iDO1iWK$H3BK;b6oBs$_v{q+h+4DK&b89@m zqjK4eOBdgMcH6Vht$H?Q(Q@j9qN&d2$W(>FU#}o7(PZz$5HuB1O?cGrl5FZ*(5a!J z?gmtQ>!XFyH&GuwHX(XGs_n-bMt8s~te2o$%o>XB0pY?Qfnv7*f2_R+d=yppKRkD4 zb~gpWh9wCQN;V-0JwONvJs`dJ-g}dd6zRPe0qIhuBbzaZ1*Lb9NKsUzNKwE7DhMQd z^M22roz0B!Jiq7v`Ml!J?o4)P?mhS1(@V~hkrr+8T~nr$s8pu+2Dis3VaP9pbIspj z_Qa3B_U=A<)}3p=JXrJ2;}2K2Zo5^jvi_aMW23^SbzAiwJNo_LH|1k;kE#`jx1l3} z(gJg|MpYU%UBAGJ9br=PupJEpPD zx8=YG1HSx>^~&1sy@VzRpUGwAUeozEn0Y+7(We+|7}i;gOpt72WP+F&Cl))mA142! zE@qkAf7ig^>P7i!AwnX)1|*Q(Wq9dqQ&$~CK2TK@62RSm`$tM%#1w2#*( z*J)6te)U7Dj>l>ttfo~9Go~sCj&WjHz#J{iLF$(lDBgSsF0fqAgv5Rm4d;>mk0hE? zu(9=lD+}eA^t|txcxo=m*J0R#-4?f*<*7msCXx**0(7@SYyZFUy#+$Z5u?fb)Snv4 zzsF|qDW-I9ulFoQ6b_n2aL7Y?p()BlkR<~GhM+FcKF9QBL4$wAk^&;wYB35~E91rH zQw#B%*?B`fAM{d+HER%cKFe7We((M7_3?mckggAO428xX4ql2(u-eVlF>Mvr#PRXmi1LQ^CQ5cEd zg{1&K1xs!8F^Pv6!?5fTgPMzB7%~M^b$x3Dq9|V~iAkmkQDCNmHtK{)Ex>Q^HMC|J zNi=%a^nlN*8ADS&(F=xF${ImzjN-KqhRf>pkHT8q0EXUF_W4LL?q3v?{fW4Lh1bl| zkB+#diL!fCWSEdjBIW=W@)Q0(ZoNmjq_oQVKxqY^u>x;q58Dbv@)d+smLN^j9OcSm z>kzGmnv7#fNGY%D%w>VB5Z#PmM#ID`!0fjRfi9WC6v=}NJ1{EHy01n4-O*D#!-I&> zG8n8&L}UWsATN1CjVd1GKa9`ml;(={2W-~4`dPzj%w41Lp{w6~(zFJ@S*`K@D?uu% zh81!birF2K_4mQJ2zSAbJ>)QEV-*V{{vhytT!O#6n=mT=#H`oeoa2QZ$5WGwI_+MF<;Jw|i zw9MLvqW`t%c^$AE*?1o5=&DIaw@@C7@7%yEEw^q6M3*H~T?c`@M459`bhnbtZ?>%W z^f_v;u}-5JG{;+;JQ-(LSH87d%TSgn<_%sNE9Pz1&kbA_8{0UskYYnEHOr{LKLG@y zH^x6`<|VLwN-+1!Mm`t-4x&i}pfH3Vwo^n~9;u05^xrTL7|;CA1Ncw+c_8fp|KojX z`64k0xca`uV!T|DGZ1}2Fak(G(8?q5DK{uFv~s=k6twaXpX6@A1_J@0l?$^JW#?Fw zEbs@j-JIlhlZq=4MfaH4V*n~crHygR?Jh37GQ#^k59jCQb{E=p>C^#q=XkgMqxXCb z8hw&qYEiddYud|@aqSfUL3La6LnqgBWoZ|~9*(2oE3)ie5dvZWH-~=!?1tk=lR|t> zGK(yWKvIho=ktW=qc_ihZSzea3`}xg+!_vip! zV?wTt0e8#zjUl4}hcQZ%W=ovUWC{Tym|$!uSK>r^Z3%MvO~(pljag%N#eO|^weq+7r#7EG@;rW?Nz z$?A?{FPe4XkH?&!aF031-C2F+Z|3aUy#1hDB;*uU`m}F2^rL=AxaO`+FXr7p(t7aQ zzZI;q@j_8I$7!*h>!Vokd0(TehnM+Zk!xtO zEPeEl!J|dHt99od__|&F{WWh6?7Bwj@6_-LGpE#;r($1+K_gdnYa7ysLtnSAE%KFL z!ptKHt7sleyA92ui26rXrB5e5NDOpQ^f5FY(#KJXS$WED9n9cA{MvKiUtiiz9ctR6 z3+)8<7JM{2%B=0R;jGH-EN{!vDB;PnzeEig>I3MO=4&Cs(=DM?XO1Xi>|moif5;$6$%0mne~4KHZHv4XW=S+_sIl z5UMR;ji^W6bYH(sUGTA#!Z7x}Wvi+GrKhP@Ky*5th>*wp+L8inWcnWkvI{_sFIpf0 zZ`yub(he7ZZ_2U(MW2vY8=+Enjqq?eL9_^AV=qj+kAR<`2j`yYJwguUVdeSPxq72d z$gq$4vN)#Z6YWsj_0LQjGZc7;ocyI7ti8cc3Y6Unq6P!WwoKv9Lzm9@<*@ z%%!BKnNl78oel()H19Z=V@!#MI#nb!&Z-soV;Ex8yr*uz$oheYJ2*9!^WI+c5o#gOfh%Au!eIU?P0C}E1`PFO--%S9ZF3_Me#=Kef_t4&G$L2>S zkdcK(zADVcLRu{gYfM>72&2tPhx~a+g-7tDrCOXU>KxFd%-jyU6XvY^WPYa^>AN$h zU!kv>8d5d?w)Fd4ycmLDE;a2pbJI^X?ci#Pa2>|i2rV?2x`4k<4z@^S289&!e4R*$ zartF2*e92gK+HddjtBb<3B;MF_!`z9_`;;I*^eA9SWXK;`m&q)8VkA0u$T(GFitFS zAcl%3hGLKk%`Q>akwuabVZnMKM99lh62>PY81XIwVM84*{_N*_x5boQU+x*3rEzEvLxt>)zTN*P}xtUdx(;LySKG~1#shCM5#;;eT)G^*7H(HES zV*CdBTgGpIQgh@J<2Q+3dRQ}3DII!Rn=bH^OAf9%db6j>kIurgHW@;O`su0?-w3+0x}J&!2tG?He|L@k`m#h4!7>w}D`MUH*o@_Z?cf9c0D%HE(tPNr$ElI>@vh zld^xazqFl1ChTM_x5$Lm*CU2MX!z-jnOxHj^(fr4ly9jY4t4&B0bpo1*nz4{oLt2E8B{Ad{-pC2> zQ1!4zD^!q~YO;(|D5S|>p@kJ7e5TN(LPWEK=;v!RE&xN(0-}<*AqcLT6VB8t#AK=6 zIQUpy{;BKZ7Jbo;T+Tjxl|Ronn}k7m!uKz!_4vbszjth~>vraKUL9Kz{3s8!I+W^z zmJ}kj*AYNqud(KSYYKtKV!HCHc)3N(Ug~OWlJQ|~(L#(~zA@-{0g(@675@}vdXJZF z=kb#=Lw0;NRJLFiznpF5UFjvfe1d5n$a*mP-Z zd0scR#Q1oJe7))6x?N#oUjvJ7)A}lxmi(Wz|J$q>?oTRd}9KQPjfSn66 z%Oo9kVn_z;EP;m>`ehIZL5vMvE=~+>LJN}xCWv?r5@*c*O3)01cvG)4@g*V-0rrulG&{_iBAHA;d47+VZRYcn%MnzG9fDdaam(eAN{yE-49M%y&pOTy)7&OQPH7C- zyTGxhn&xJ}-Xf>`zs^l^lF&jVgJqbLPZ7C=%zg@DLx*bgOO41&Fra-PO3EA4(x^$1cF zZa4Hjp*a`}X_=p);)&%FU?55mkzXuV1VkD{YFnjG5r3x@)W3lW(k6#2=7ww`P;(>- z(X^loIq+7gSS%LQV1z5p_PQhX`_t6{NTJ}v;w-siCP2{OGwH5*w?}?X{@Ye zvc@JCUlYzEqJiN~nk8xgn5C`246Q(f4g^bzikKoQe^cg(Z-zLbCJ2~ejPm^GM=*kP z7{PCb_iu~N*7D&K{0}wG``hG9xkvanhYx%{tP3B<=5`x;=!@fDx!5&c6~WY)*Gj|y zQ;cL$WO8iLg7n;)APQyD(N##2#tMo>GfsrWVbF4mh~}RmLB&uW;W-i69Y_;2Ig_Xk zRPGE*(uxRz)}r)pL#sE1S;71mS`i*-@edP!bo@2u%>BclcEjE-|3+PV7aa!D%Y!PXp0Z9)`3z5a6k01^v^;K6qO5Q@l+5syq=G|$1#DUr-GlaB z)C-VO%~6js4(%(G6A>p+(M{2wl@y~Qo7`vESY*=3Ok%-zXD;MV9;dvytkv4xa{8`D z119hX3pVy2KHezWrsi+b`N^q|e(PFt&!kg7%Uya^NsBr1&cZb^>)Y!36Sc~6QALU z7vPIQ1`GjCxMdwC;3bN51pGO%LJsU2UFIy$Z_hkG{_}N>iPKun-6ZealGO9<$7?nm z9<}@#zw{CR`XBk}$jkD&MY|f;-o5ezS?89SsN0GdIzN=t3}Eq)51(*4wQPUUBd|Wp~z0Ep2SF+3=emK=^)a{R^gSpN#1uC zZw~U#58k?H@#bK8Oz>9u;47t*ybrIOJ9kBSc=7bNcYK0;uI4f8$6UyG2JYviQ?})J@ zhfN^8AsDZEn0A*)E2Egsh-~C?G+Njg?J?30ySiBcsWs5baR}9L0da#_-EZ z8J`Liis79$Po--bBQovI&69GK>mMv@5k}uuang(_nnS| z26cqxs_@`09R?5XFf3oI`DaUq_nY-gZdd__I~3SkOK8 z^F0>y*Z3JcV#fF}Q&~5@W$KvmGuVR}zZA^e;b-!W5(- zuzJ~Tm*HipMp+bEV7>YTcLoU4XxY0Dn@3 zCn>>GDg$gft)vOk;GIJBuz)|w=}FD-q$YUkW_aof@S|s_aA*kMIXpH3{36{Kg>H?s zUmx_*ISKi`1b)OTs5#(Qt6qA}9-REFPrpx2-dCPqZrY`3&6O-)%Q`iic5U)y{tl~G zC6*j8YvP-&S>#*Z8v^!f<7eNV`1bjV6@P#I<+slt3>$lF+|b8sH%%BmblkDA!`O@2 zC938d;EWwUa4h4?{P0E{SF(~i3PGzYCXF|WMA>uXUP~ygUkwK(61$q(cGv?%StQus zOpJ(V5;kk03{Rm1`T+cnNuVxY#S+qrn1EVL-_WQTK#gQxZ$FJqa-%SROw#M^s9EvK zXqmrz;J?~af1WjK$`sIDVNgI=4uXI&V+B<(1C<3Z(!B`FSb>hJg_S|K?i}k zUoAC5iz2Jle=)uqbN`P<*sQfmikfnGK`6_h}?3V>lYa+k3R*leF z4R+(V5xhe?C4mB(%8fV^6BQf3`SCX_Xz(!HZQDr zc_AcOs*K}7Ve!fC_=qrXu{0(}vou@OWcK?Ib{)SPXN$-li5>uXsd_2uaf9VJU|KY7 zGHg|BSopM1;v^*JI__FQ5FdzAC_)&MRH25;h>|xiVodaAY zs>rhoHgf_V-gj*U`6ByZL<#4TD76wHIyRzvNr{dKhxc7{oNr~jzGU-|I{5AmeD^)$ zyHxKs1M|Xngo*oIF6kTsJY=&upYEBGTT_G;lb*42jT}1YKYbqyzV_GNE_1Fwg4=0iM9?rD> zrt4s@DbBQ-Iae@Ps$Yu^xFFQ_Fq{xB`OY9Y`_5kZ)4zX}^P`+w;72)kpu2kukNRTt z@WgUu6WNW?UAvDNkyN&HVuLYVyN@28)FqLh$2EK^TPD%l-1wrm>1f|i_zmNWN%%m& zEt9DJ)n>qeHf58O%JD~S2J~-Rz9K#aw(UQlP5Fw+WxX%xuk?xE)xVcq)>hE}3)A=7 z_Sb(41JcXkyf@o#JB3c)fv|v+wX-nnN%2(s)SUotEM-MSCV1lXrLx$R!r=}H4~JGu z#v-wZP;pUyB?3E0iFYL`EZG(oiyf3?W67}*Hs-L!$13qkvWrEy910&5JfTOuD!Fiw z3+F~h%lQ1G=veXCnmDubiWJtV>>Gn;$~@V*pfluxVTi`94!+|8E)UlV>9)~AL{jvnwkU=c zxxfgL5g1`;YFeO^0xPr-@kZgQW(^#=n#nMODLM72h;p0m2oROLq^D8wzHm5T{a7BjHx)1%eL0leiGIQ6B=7|af7vapzWG0PZ(qjwML?UYTaC@ zpnVx^-L0Muq9WQ14SNuK3Gsc5Z4CIAxhl6IO!=8M3>GH07jEpktult^$K-y28%E@i zu&TJ{Ouko52PTE13V|XbDE(=d!bWBwkq9s&3pE@+rn_rOnCPDZ-UGGEYOUYpz8G-F3o0>r-8t{uNM#Ja}Wmn%jDZF-uqG8&xU$; zVw4nr`jhexH2g5Bi54Ux!~6-l7U#U-27z>F9dACNvnc2;onzFY(S>1jVc|0M$e_x* zVsJ`Ro|?cySSk6do#T2AWGkjr)KhQ{^6dM|d1lJd(o=g+p2S;YK%h>cd|kjKj51C_ zYzewLw{*a*jqCAzoue$i5-0txU$=cIuFvG_Y-Bu%lS}K@)k@;}biPh~F24UnzpkKB z3FbZ(wx0g@KJtC^O(TS9V}&eK%#RF&e}>BhDS5);gQz%DLY~I-{(z7(;N+#Udx0_v z{-f<}HqPf_#4&(q0;ov{WrA%DJMr3H82927$2``D4dpf2 zW4=ai?cJxIdg%Q`uJ3K`Wi&=O#%-qo&k(7Jk>@h)VU|ZvXd!Hv$#(}(+*N*Qu$I?XbIh0VCmclv1pSU8 zLRTXL4RP`!4-`Oyc4xA;63|Qm@8mKzS=9i;*O6}msjb)&D*<0>l-O5lTS@rtoSOSX z_(MBoZ$waSPM;p?&_!Ay#To$in=ok(f^g85W8oC84eiJhK?wJ+DRM=OSoM)~GF@x%Gq8^`d;%E0Xe#4Qe$*PF5g#1VfV-6$2J?ck&eozT2An6t2u7to6Gbm~*zYTZQ+Bu`oLbFB2+J+9jO`&eK3RYCEI*n) z^YOb~hq6n1t6dm&{O#G7$82xa&AX~Y+nG(;EVSjW)8qqI<;a!YEMkNA`0DSEJyOoH zgfG_f1@H1-_wMA6PCI2b>S*2B_m6FVhyMxbu5I>x^-oB5(eT9qKDsXs@QLxk$FgS% zLQ5%VtgitQvCj-(0X_u@!hjEaE2jJaf{)pL4fsUov}n>|W$`m;Cjk@t^qIX|o%Ye%^hZ4N;-WJPLfC|PJzK6^)@4|q_Mn8}poDb=C9LM7 zc;^Hq3jypB;$`qVRw444i7<>2@Q|9LgcPSIKm-bj?hNpRhWSJcDv-hgugk|z<>X%}EgnAf zuJLDJ0jl!=)jI;Jw{_^L0|Zn%0IJsoRA2a@-BUmnZU*%+zE71vRg4=cFsejBobFKF4McTV*LEGe9Z@5t`IUNaZGZ6sRkV2Z zk;8)#LwhsODZfhvSMmh?azD@C*Vq}N<(Pq}2^)?v+I{jjLD&)iVF@%hb_}AAMVJGm zIdi{ejMpc|xlQ9jq^U7n)yZ$fRoedfaTV%C_w8lNB0jTCfNkZPurnX9K78HONQiNN zt3fP_#)qg4TOeSV7hXNPsb;NEDh;$Wh9nTy&z;e~jW#h_E1KAf$f-v^5nt`LIH82i zW@Qrg)z-_lT}Ek|Ws4w9ejDWa^BzxRrzZ_9;-$Eu?0eY{Y#w;9$&%h*3)g$GBl5?n zW@+*18DrAidRtK>Q<#_oEvuVqJP?UBtB!E|nLJ`3vd~!&Cxr3`5r_$mz*(5?W1wob z3VCwDT9m{56yLOF$LaBGEem^}cRru9NtP4mMzB__R9wMZ>D$Zh zX5sHKzM6lyHtfJ>HU5b%rC$1MZP8U5F~dXfRBNE41rQ@M#S|msdL140&#;Kzm7+*O zdeI^YMX1F<5%}P{7eShY)8u?dQz;~ILJY)|O+-`+*MAO5YpMuA>_tMcXfbib!sf-i zMI9mkwBzFBXFv1nxficEFs3LAI(^gYZ4t6?$c}D{YyG&Z?ch9YncOEI%kxc zkTf#UuQT#FIIqUHE$wF`bQNa1KR zZ`PJI$witOjWXP?gz5@1bT7A(d)qFOR(cI!JcG)KyW3~6H|35M?(AI3vmvic>iL(^ ziX3#ZIBaXs&A?@TBzg#&+LY`of-ChGb=%{lKlSU%WLV8eo@^}oE9FDig z!Hgxan3Mz`GUAcMhBrZ9g$LdsSeM@8GPJS*kFFH_E3MSJgk@&NBX%%7|Ujn#0h zRX%hE%k}S>86t>VE24mT*vnv9mV&{ z>nm&f&bV$LAij@+mjV-h!HQFN=0~=&prll5rKc94$HO4ADcnbAEGusqLAC$Xk(8ie z@(YnnYxQ6e)kLIEJke57z=*6YE(-O5NG1m+81+=MEBWX5ld=P+6?UV`>$V-mC(pcbdf@@M?@1i zMLkNB-s3@#ooO;S)yv94j*6hoO8r$pCG~VqiWH1Vk{^3FDxWaE?&Guk#8<(=YBz7zA)+a*_!zZ2)+rL&kTC~e@iQU+0aeW+ z9_qdlYt@{E+rQIH=Nm z@dRClZlgfz!}Tycd6u}NE|M)UY^+9I(Sh9(q;pq)*D z-;iF-ga}O1q?q{#5iK>ECnUN;$(;ldQ0c|Wc<*e>nm31U`SbCpxid#7N7&<+EyiD8 zIRA$U-tz4FjQ#`Xzzir$qhV))`~uz{EwwfEDJc6hkMjwl;ryz;tjnR8kBm%p(xZ?x@WmqSXk*vOKy ziu8-APe#t2Ieh#Ni>|>H^Ek7%Ja1Cd??<=HZhW6Vu{|*+LXlNJ+h^PJBg(lXWRwD> zN)!ALy-l&JujmHCK4K&x8R5&~Yobj$iP|t=+)3Hociz2?$PbXLQVD36eeFv#(Ef!g*ge*_KyOclc zHt@*tpXBw`hxHkJVO(_w%23!@;uyJRX3wVWA$StyIg~M$*rETUj27Ildqint!LF|ElZ@xTNizHt=GB!yPnU&uB_P|C=2~B z`zM=A?6=-pl&QXvFmo6@)R1q?B~vs<2$?Iih1PDx|PJlh>BZybB9NW*x3jrT&`EIsiLN`f@ShE^}(S79|eu_%3r*@E!)ltd^u{= zw$E)$?k>+6yJq|Bsg=L{QyDR%!GP=Xn^PVtt=p_w+o;SQnp-WtS{;WqbW6SbSyz-W z0R_ymjQ-RzCf0%sPycNhC6RoNtTL0vf%Ws%4Rd1}B7QnFEYX3iK$Q4NjuG>m&iF4= zMxd_^tNRxVdGHrHG7W9Fs&tb5ay9jVTvv|@PmP+l>ffXM z=Yt+#E^qP$DiZ9(TvT5MnQtyaLNk`iG#60_<6m<@G>S=X)|~%wE~4;iJSI~?OeVrI zm$>+CEUQDut}XfH09N)IlQ!;Dktl-Ml&qrOjbzFPZ0fl>m8&&lzkIfNL%Y<^#blZc z8=QYy%jF7YlZvRRxmcNKsW0;RiUBwD-DR<~S*))`vDJ!VtC9F&UK|+WO%p3ev4hYG`cgcMY?nn|4nEs3X1HRayY3zyYT zxr$1QR~9KK5r3Bzl=o#`sNa6$aiVZy1SFl9HG55E&Gmx_;n#%* z#c017#%i+(Nec|sy1@@yO5G%B?n`3hYsJo@Qv3Fn@JI=p5`*ueX*28G30+UR8iVY_^wfq)RL4COCDg*XwYWL zHWvb)F?!Nhde^BUyI8?OOuhBRV}5!1?`uBoQMUKIfs^NcBPUlK-hF1{od;RD7e!V- zUs(HYl|751=LlX?H2Y^;AMB3;QUlFqL>LE_d;#n%A&t}GP1Wu#jxYaen*uDf*a*_| z^zfdg7hIX2*z zlT-GTEVsS)sqY6I9@nHt&sN7D^@he%oHw@D1m^hcIdU5ng}QwjQVpz_&z>W77>IY&?qThOhhaqwH1O3X}Lfp5mM+%3_~;e#ISHm;7VfihF!kjg7hTAa>+zcN)fm|}B~_}&_WvR^xsXcV zc~fpnoOS48O zOX$UWtQoon7%@Q2&$ip6p>?{o08@usL872~Xf|Di5;Kkvmimfl?>M)ea&MqLy7}CN zJKpVf75Ay4JYnPQq`g}2Bd9ywM+y{aPZVJ3iuc9wAH!|#_feiSpR;t=x=xn}Lu>Pk zY?^cr_i_2hL)A|7&`kZ8AT8(SHdB6QtT(^deDaC|+dFrZRjy#A#wYYEE3)%=PLFoT_2!COSSCrHUU~Mo}iX#RhIHRH9iUl{= zq(wgU^GryhW*#WqT7(G1`gDe_MxcYlO{4&IK`=#6rD4`VrQs7Q&_vJg1!EfR8W%Fh z#q))LWjx>VNTIzLgAva+%$a^ZM-wpIlNO&A90q3b5^#eJ2^mCoicS%}BDa6U`l!kO zrq;yBZ}9D`6TM&+?8!Ic)q`z%AoqVrQ-JS_W-*8TE%#FHA{HS+3ko57w*>E-N5mLk zi@e?u>m!0>^_+;fq&YJO44Ed+7&LH}%m+-K*tb;wNfQSH6J}*URo-VMKr8a1hyfy? z*)4$~xNaNczaFn&r@t#6U<#A^vg>S@V#g{L(3D&xE7SAS0`305U}FR#DI>0L`^Jsi z(@P#vyLIc@c){!;p`Vpwh_E-tV8>UKY9aRc15IwxlIW{UCN(<7iDPkbM2-lq)Q3%> zm_OFl(#OlN&3fS006=sKhuj_n)Q2RHJt8W@6NPwLXIiNo4>1{e%9~D+agvhZDev^u zz?YqAbxnUl8H^@5r@%V`GldR@!*vY7fGiB4nRKKCRR&mu%;TS}B7K42qOVVwB* zhVM^GY0tvtEnB`b|HFNYSF~)oY_Z2%YUiv)9?ybVyV;aQ^65pM21yg@q$Jm2r|Tt) z51DP>sFG56g8XcZv zs9m4~Z`o0emovq7MV;6q_NwiJx96aAO(r|@L38hSikrsM57cfRy70tHo3x^$=b=7u zi(F!GIW0aybkU2486gM9{uPQvu5#h5Lj?#=yg+Omh5zWIJg%ay1eelP+enTir|BLL zR!ntVwMZA0gQ3(bq{uj(dfK8pA|I7*fjKED9{I-NrQ@+rd_gi05`vV5{4uK`FUtI} zO9Oe!26fE}^`DDZ{^YmYw|t|W4Ib@#DvMxOioV_O$&6C3;ROB4H#WBujITXULv35dRGENK^L=GJ%J<6tc zOo!!O2njHs0T{9g7_i;jO{ehof+~YRz=#hb4f+BK&78=cq$BdFa2@$nxL!nj1_i-q z01m&3C8s}xx-h&Dt3V_jpi9C_KV$f811K5ZmR`Vr2lD?e=7vWYv;2ox`TWLJ49b~Wq4mMvTO0rV%57NP#*2tbeeXl~b{^*)-> zIoZk>1_!fP<^-cNlx%+#FRX7;PCIr=K{9oZffh$10IIn}xxxs2q7u?fmIX?( z*VE1*@0;Xh0Lap>ImWI!M0^Jl?}SMjwLK}8JSN88@8dGH%g40s2vb+zc>e6dn>>T9 z{*F0|_F(RhGusasGJ4FwK}tXG-Kt3r(bc*B?t{#mW%C^WkOiTW>d7&K`ws=Rn4bM> zKrg^3PD11?xK?|Wpk5q8ZHcK{;5bh3G#3Q-Xj6goB$62nUo3r(Y7<0m+bg zi_d=K!*_su_zs4O&&9;&xD2hhelOgpM21$%e^Oc?C;Y@fP6u9!TM;jPZ=D6Y=oaue^%m)~>K)Nrtq!Pqw6xrpv!GLT3#AggiRe*uxUlg@gR1B760(q3qM}4;HSA;1Ask;z z&rQFE%5U=V5Fsxt2zgOjaw8%m1}$KG)QI}RkfkL`0SymxE0cMeZTY%^ZHrBui3TGV z0(R}%wI`HSXZC?JigoME??ocbCyh0i)#WRS{#lqsX04vMI*UaV{VR&!Ts;v?jrNl5 z8un5_?51K;3073gCG>8D<`Kf;7$c6weS1hOsX@4n+!JV><^m+TdXZXK3UmfW1(pj; z4QvtEBXD@&)WD^In*u$7M*=efL%QnfPipR^woQopIbzE|2SPivc3Y|qMJI;a5Z|Ka zY&6=?@d>GJDc%_$6<;nsHNHiBkNDy7Q{$J$Z;JQCABoS1zZL&D-q|%Z;`QGNwi?~A zZ~>;<$*@X7O;mxsz$S$!_KP*JVS_ zCasJ(lFkmmm|Tec_DKSFRb(HQ-_9RbRraY58gxIk(i7u-86qcpR-PI!BV+;5`G|<3 zK2}9gT}coLOI(mqDoJyR+BXQTp`OGMFdam|m)rw~wEQ{4MB`bXP!%DlFI=b)2{6Tc zrtgFSnUQ-<*J+Kh-q@%RBuueUS`nKFp)NwChXNa*4TL(9l9TWXb%!N~Ip~ETx8x*s z^jd!B;L>+L!+)&Q3H-NaGm|sxU*U&5`Q#DRuT~$27c2Z(t*f=h)w)uPhseL&ZH#%> z!LBPWtZ_ZGV3RdYtfoOd4W=XjW57b37+hZq4-(#0Dyu~X2r?m>vvfr5^>E1rX%HoR zh+-m479nkUF?P4o_$IT-pqc}^@S9x*@|$CRTme5x&kB4gf8yD{>xXjQ4RW7yH}>t? zd4Lr=;=TszpNMf&BuWIR#SE>0UNaZkm{Fg?qJ$e>cn|OjVS;861QH$CAC@O50hAs# z^6o*yg0Smv;cM*9i{PbTir}Sikywm%vDj!NrRkEINNZEwxW?S*5Jtmcmcr!k_6eNatj zDeRC1vF|EMDX97!S-A?y7s$c`q;Z5~fnzeLB8nX(1OBie_|+IXiG{-|mLxM!7Hl;r zv7k6+SsqGBgoyyf8ssL{nO53#9e$q*Ij2BLQcp#kbCf@m7IteAzO3qMgrS|1rV33= zPTx3Z_O>l7*Onty%Os>ES14VD#dsDj-oJOr(hrU_s5GI@@H*bdq^_wYM!mazLH*e~ zR*flL8A@j5CMl)7)#kjvbxDKS?{A-{CO6ZS&Zk1Hlckc`kCc73?_pbZqkAmV%O^qR zrcThlIA_DsqB(L4Cpa>!?Iy|t5)1xsveSDU^mB6dS=Jj4hxjBrGOd#-$W$ons9%DK zD!v%_F!`4k{2A-mvu8*37wOQ_G87TLcsjUb_DvX6V#}xtD78;<&8J^pjd0; z#FDcc?TZi)_z{H@QO^{U0|^3XWQd1IEXrA5nsGkUDdHR>b51pPY!t9ii;E)DHE;oz zGAud}!DpfnYwiOD(ydXl6~Yn@jv3xPa$E1@Bdp@l&)07_yuWLU=AFAWYuXJ#S;u%M z{v&Gs?10p?dAVF{)0xvdYP@&m>{fg45hMH8>@{*^zs$YLhgnTgA)>Kz090VK@{aJU zQ%|*_I^7n!uK@weJ`hR?{-Uukp%pWb??CdPYYGz=P#iOW>ERPpB#`!dZZbcS{fjg= z&}fAG!{$cmU<{%!6!t`y3w7L~kl-IE+4EryhE08M%;c3*xog_uxonmCC*K5v+eWzv zU&@Aie_|SM$@Wv7x)tC!OW;omgD11EChNJi5YfYZ>uRwa8pcYkV2}vKDu`fbo8L4B z$vzEn+m?25Ij`t9XYrfD z`fn^wcwymyDMioFZjU<*u?Ul?J`wHEns<& zUpDE%nqROkj1L|;eDJ_AMMtW+Mx}pQu)xKF6?j`ds>VtF)hL2`u_XWS9Hul=izD&07 zqx)4xy;#J`!n=?x%*b>)6b{$Ln8NoqG zWf7-gcX($!TFGzj-OF#@<9DV$TDj=Aw(TA*zRjZe{kcOI^sEqStJb<_%E;L-SIipq zPTw*CdApCVGjy(;cY}8!OW|i&^7G)e*-KWfUb~W?`*Y!*mCYIycF*XMw0Hi3Js-AA zD%@m6evgljb6_pPUU#u?xtX;)w4L9o!<4@L#&&2mzio%Q z3(EAH+o|2c=I!S6?KfFmsy(xu@=k>mIj&CJ7Z_hTeW+?89lc3 zAy#z|?<^M^HMZqZeq=D)!zy2^vG&)Kzh15R?yo1oJt|4XmG$asFCYQ*Nb;=Z%i!J$wjo?fF;Y-+~FTXmEaGiK>3He*L zi?>Guv7N*V=S%z9*S2tQhrFPDpOSw|%BB2Cb$;oPEPy~Nf1;Nt|6-!WCI)MZL zxgJ~t(5J3#F31=VFA}|5x3Vf*x5|syUfzc7rM0V=J(#s&E>N)|!i$Svs0rF86oMLWxorzEwT z*qsGX!!tnW`JmJO8kT}YS$3&06QMX8Cl)o*5WNMB^GBdyA2HK*z%DZf`atZ0ksu!c z0Wk~e6_GD;QDcMaCUUT#1DiL?|Jyo6QsK)VtNu|q^uy9u zverVy1;j90wI61MDik`|72Z8#8vZpPGGtiWtb>J{&&<0J^XD*)U6&a{XiMY_&_8S& z8X4AU*XYEz-|`z6@h?|avDW;CEh=b7Lktk(ZFA^+)XQLkKE`SPO{_{u>8R$?sS*qY zhV4t(0VrXdSk}d&CkWkwRL55r$sEHD`@C7A!J2`&xiiR~ zO#Tdg<#H%982c;BNTLM(|6=pzuMbsguN14emG!}*&OTnU*PFDcaAL2w<@POXmygco zyA`;my?KF^eqxcu8VlIPOYdnelZWho1d|Bwd@W=IE)y^aJz@aBnEx9x*fHP=;0>@~ z0xW?t{ zuplttQjD}p3o&)O5EC_UNaVU1v$iBo3w$vCVwiiZn*wp<|AUhUnyZ;@lWPR5vH)!s zt2+m~oaT?28ynshny5bexNI$-D`(@znuAyHo7h7aKflHbeoPLWY88DBoGaf%uE`t< zsPxfJ4(7rmoB|Km4rCHEmhNeFn=}P=*EfGXtYJL^0yS|`)0n3P9F6doM#f((5Gakm zlqMu-^uIx%p2Y;H6|PA+4e7y!Bhl*3Q`4Cil|xIkDy3`UkDe;dv{=*C^5SZ`T0S3Y zW}}X1T1C?zYt(< ze@mKxh@0ui9G)*NM(a#ZbzN@}t4eDAJBp@-)JpF3y@+2u`SJ?VOQ3(em zJrOQy2D5Zb7)o6N>zLle+(jCk?hNaQ0VOKEI5Fact@!C-&);N8Cv3m6O2e|c zOzz+7JPY@BW?|kgET0^d^Z8KMx2ja@n)PIa_|FkNO#H{L^cp{|+nDYX$93Z$%CQZb zwu#DJugp5upl-8fb%)b|HRrRNb#2+YbEVQ*XIa&ABSxI#C+$U9;nBNxjplcDWqq`( zbt_eAG+O-kB1ONya-v0vBK&gJ$aLCcKn%Bob4WT0~++F7{)x ztZiPta+ADm**n|59MoG)uFzLumDcXqzI@-h-Fw#rzB}h+n_BZRss`DQl?>=kVX%#( zs)24B52r+Zeey!!HHtbK9v>|{kSgFzgaIPIS@K29tT2?KAf74rh#U*nf_TJWKv8sV z;*@MKm{+P4Um;n?Mod87-E+#v=SF8tz4DkJ;_2>H%iGTFm)NmU!%pqki5BNS8F_qo z=G~_JC_k#)PZ)5c_K@BkhO}6>%1kBj<?h)c?ulOMeaMwBydnQ+Ii0=SB@Wbz0G}(7e=o z^=iLSM`^vYb%{ki-}^9qL$5`}+r7W)!!+-Rnzd@xtWm$d96hSq&^oBgimo1#@`Jhv z7+ghT4yycRLS$pk1|oalT{H)(OEyw;F>F}pL7|l&cql@OAA4sjyOoDo;mX#Bz#4+` zV|5Gc14U6Y=GE@7VjCMz@_T(@;$%6d0;trKB1En?b7mgQq9$i2#)0zY4xKs)5GFY# zw?Z}$!DdkXBJRq`i2fV*oz6aaI}0h=&3~%ZIXt~F+NEy!ZN}ohm(us&eQ~EDtHj!S zr&TCg>13Zq&6@*8G=uK}qk@#1FS^(1FcM&SW#lMMWrmT1iIKxeWO7?;HV2hsAiJ&! z`88)=x~dh7pn?QY++ARNVm?kxrx+4FbdHA-y@Q*}H+k-&L)#s@@a(J45gq~y%Em2S zx^<}AHOs&4OXo|k?1@Q*(} zmv4KUuttRd*95@zJM6zW>^*b7rm)``a5ehHkp&t4mSKpT)3WJMlnzT68$qIrIlBzA zf;Se+5Nkr9e6fNA!@pZNLsJWb5h83hD(4F{dOhX~%)squ2EMd;f7U$0=0;BM)V5vI zx*hn%X zr1hL>INZvutWj)x`$ml$wdf2@_{5dpr+o6UobNcB+GJ8()%sl<@BitGy+b}-{tiZo z+zk1iIv+Hl)_CLP|=V+vImMXm4(j zWu)lVA#gaOu7luk21G0zF6SX6K%1&LURjz24gtV(o7-$ z0D_RDVBI(QX|zBam41cWOn4$lhGieg&9W-Vjl3T!Cw}>5wG#Xgz-F+bNosREF#z;f zJkdg0ERXl^O^Nw-9U|tS>7xBf+#jq8?~B!alcmV-u|K?ld=T3rKO#v*!4taR3Bgk9 z*F3=jZQ}_!Q-^{I|AlZK*!4F>B7dhAhy)w4^Yzk;3Kfc!i+#nK@wIF^-+kj-uCd|x z+*k=?VRsXw z6orE|m@8;_L3W~2zzYlyy%TYOuT?F-f`y~s)}sgJDP%#JobOs7J9REI)|^Nug>v&e2--B^vh}@7Y&f zuo3(y&}GH@H-B{O=%l8lGJxJKzLY63@F zOuk6XqioIUN<1DJNtg)}lzfO5YRbH~;FZ6Qf>MamxwR1eEf956wRSj={A!A)BzYHo z4Bh&->~4GkMHPzWY<~=?Vp&yao2t($fjSpd>4ccSQRzf})a%#H11h{c`7I0NH~Y75 z+N00t2WOvMUG{Jaiyk$qS!Y(cO1+et?M5_v_t^1WsqO0Yt64ZPea-p<-98xGwN)xf z=f{j>0Rv@QZf>l6SQJ9+C|0s;3yZ`e>2p^y*R!GRF zP8rtoL^^+3qU2xv^6clE-}`4CS`yA4H*xx$ac|9$6E^*xY$<~};OzUh_Y=l!jPKLQeL{q#1&dIZ1ytnbi zTxNjs#;kD@r_FqOG(fqBzg)bKDZ46K;kfl9f+G|7IudXUq^>!HiGn^E0~AYcoEThO ze9a)KnrtJot~taT@o)h>9Mq9u;}yw<&b|b3`^H-mGzK0l-&1W{#V+ZgF(F^-54Xto zg1{IL_k)VY=*L7lG1LH!iA{nchl2S8i8oR98I;HcuNuMuL)k5SaAVH@zI8?TruU>?p`zL)0sB{k7miPtn)1TmtXvM zQpez9E+c2qawiLn{X~^!W`vPL{Uv2fv&;I-#2I!!MbfxKiF*LP>J$QXFIE8Q$KBAf zc{lrT5?Bgrk5(`>%HJ9?4@?goc4SFXX+kd#lf65=hK z#&UZW{pgcRcUbiDsWKqw{rIP|pRE@e;cwwV1UE(U#no8W(Lf?0?YY@%8Z^G_!$jhB z!LYdscw4xQg*zBG$ypX6oq-auiiz;0p@$tpuTe7a2wb%36o`##3MQ>Yf4G1iAgEFi z=tP027XZssyb7Qe&2C^!4Y8X$V>cH;P2xhPEPTso{97R;NceJtU(27&BvUIaz6qaw z`jWyMVUABLlw(+@$SH7YNr6U6-JL{fG15!Hwv!R?=~g?};hEcB^6zad>hJqZir^1I zdJi5qgUw$!x$-SpSyaCrI^H4&UZEWoPS7?&>9nL0 z%I5X5{m!ZL=mNXoje0hf4P)1r_I~gnXjY#c?XUj+-Km4a2e-$Z?9fX$0f+KSqcq8+ zms%ulKT(!)iI~R#-LgT^Eg2IL6r4ZJW=aQv1Yyc8@`MPB8lsVG!W}PUJMw3WJOp1p z5TP2`5AZJ@-T=t!m)~OvKWi^TSulT!4gHh_2WLwk-)H6IGwh`I_O239+9fFQ2te>1^skQ zMoQfJU$zjef$jegP?REk0UN`5{3kJmoqjm|zX>X44J$=+nCczJ9A$)vm?^uSMg~I|UKG-#^vHUsgtzoAlt;IuPY=8gFF!Q+ z<3x8(`4Om$$yad1u-L$(OBM<9E|Rxv)bk}@fi72&sE@|&4x$W|yDhRS;? zpY*ok{O2DvBF~=}E_w3|9-Qa-)r)`TdCU9hgK+j|@VKErg!7PaT0fc_X@(KV6$m!@ zsVs95aY_bSS!j`9lwy`aBn4uY7SmoXF;6iEWaxky%aRDRmO}AabU|0z5ADMsjPtC= z{N@v$g{{ziG!B`0w|oGj!*~2SKbIf5(RuQ-WR@F=&{x-|<(HRY?jrzp`^90_Nr`dL9LbL(QG`Fm z_{p34beCtmJ$`!c{=CHJm*%|K@GGl0q~CE~{ErelmsMY~`rQ?!SEUvI^y(2zyo(Vp2u}@&ynP8*a)Wv(OGBO;e2DAAEyQcN5{)qvVh*D{3)=nZcTD zssc{bYSjt;OX!E+%z!y6^0iG^Wf_#WjFe}C$vJ6`X@{@q8695f89Wb4C+N29(y z`T6J9n>6j&t}wR&`b6hj0s4{1)(kRLg0)Ca#*Wl<8I&lDGl$@4E?wSqp_Vo>?B$W^ zOI#aWkdL#GXs_jQp{?~s*M7P_#5K_cE>PLk5N{U$2_!9(WT8bWB$Q#t{7Y7a85L6& zAs)$U%Ut}?Pk-?TDvNyb6LaR{H-mmSAITc=^xQ*-y*bRrmK?stN-$e(bb3tr>GY8o z52lUp&>dQI5d;U8#fnj8%>+%a`$yE5GHXaSw0PN!xr@ITIup6eOy*UX2F!I(wJ;Zn zglHdPVQrYB)kg%A8S#0$j5dey$u;C;7h2p@P!S=dTLm0t`QP`rlmCz_SC@}BBjlsr z8_|Jzl^z%Gv0!hlt6hf-?8ug+VO{w*&-sgS@^ALwW?MgGkNAS`ocz=74ePa&b(@hR z9<$AhHD0SRvBo6txLzkUSjdHcwgePo2Wm{z{?!|`9D(N}y&Owr#M@a5hDBHP(!dD3 zhu^~-SO+P`WCtOTnH*?7p$D_4>cB$W2O1lIKnbv2`K~!Ng$zzn$QUldN0y@4b31DiXuoA1w^b^AXEWqaf5;= z0*VzCM6l5mdlws0&OZO&%-U<8eL{HeeV_0Deb0A&Zo=7TGJDpnS+izMTNg0kqUSHj z^MHS&d2ndA&iw>wMfezbZI;)D+I`1qFd=JGS(7}&s^kH=t0k^Y4xyC_sqH7)?Ufi0 zg-FWAxe90haT%`u33mq<;b)(iyG57VN6Ixg#@yC^of|(k zC))ezRWq1$XD4KX$ zN|-GE;p&GqeZj0RU0w(weeO?(OElejcOPEeLyRzo)g7`_LQL?GcdKo{@(@z$gEJu_ zj3Znig~J7wW z`o$gIW!)B?<|zr4j1xgsl$MJ&8o@|di2orZa1lHp_{bSij1;UR)F$~dGT>j!f-_Yg zd`>hp$JQTrutiTjp-F=d70k|}nLb*tbz|;uql|F<;I7`lHG*ahx~?ZE2}h64(pDF- z|F|pgltN8}C_F54+6$`j?M1{JcqQk46l?x@qp{ozejwFlZ3cKV%IMtfd1g9>%uI-g zgz!Ke42=kM$HStH$aJ1ac^g9U78lF2qY(tOH!sc}ZC<uu{dzk?){&4NGBaF7 zCk@gcVUd~7u?1=#gx?A?>G=fort76N7~kS6cWeBX@l3Ki!eDpwF-l3h1LFv{Y}1f% zks60lij%!$F`IL_(FrMJ6SoKtA={nHWLxHBkZ33;2hEVa`ZyW2!yZ;qd&mfP^kxq6 zuBx0M_$o$T1)GJ-hHza-lt#H(qOT`^>g~5jm@kMfNyjG@c+88j zBKnIzaNGU&SH3iVDkD~n7&vFa4_8Nxc;^cQaQ~?XkLJlQ4)c5jen+=v8L?eyRFDzd z3c+m85c`DfX0>$%bu$bcCGj_RqH}Rc++Uad>^qL_VtcgdbRK~^IYXEwDoLC5LGY!E#QAzGUsjtehaK< z<&AS@6U=qhOK6I9%>3II68D9Z&Yf(nt1(8nTvv$us%+N~WuufH?@hMrGnx}o(3;!n ztTIFxSLMS^a&bt{A9BlozFXvqaeI{?EjF=7qy2>JA)ORMdNf9zOKg z=2x%ZDV{dRxyrZeDXR1!4GBHqt^j%?uzG|e;ufN*)n*Rm%+Y@+XJ@Y^H`GuR8O5Rg zHAorTgw(7Jq0NT+8}FMJ-h0oL>%Z{6_|VK0AMV#ZKbqfwia2wx_aLZ9#Q9QI*V%>F zA-e>dtx90n38Frz1O;ZL@60azy838yssFg>UXrm(JCwQC{VYZvg?vnGe2{g!L_Flk z#D`}!*pQ`Sk1wJ$x8}m+IGneJR*JIWi$ceTsc{U3jdlIPSKs{h=5^cX()*haE4roG zMbtuC0-!cl8*Ak>$lW4DszaO~A*Ax+XCGlS=NrqqPS|2jUr;G|xF|#JPE=9gUSYnn z*S>66EXmp0(6$P%XK&5nv-~@se=aRUaR6-qVJVVy)9HN){#h2c6lsn)eh9rGjw&VU zEILZ4;8Eknhf}*#NU#j zmhv)w@|B5Y1xR(x%Z`CEI$~Eda^V9w(il7l6 zTKMDR6K3ltj&0C?eEY-S^vBwc@juwF_YUsdAGIfd~HF{z!v8hd21^ zq1~zZ&vyeaZu5y<^EWq`{9)4vA6R@J>T&H{!gTQw?fQDU)&vJ*WB_8-JdJsc)Fv8X zmR05KSfF?lvTD>Rgr`=?rD}Q-#;s0pfjo!0oYNY?VS8FJDQeO1Dc8yk{NdBzo-Ljm zXs+dz6U+~+0{u3I=^bvMgaG`dwhT;2h@$;348M@THYEom#EL*`F;kGdNn{FoR-KMD z|GLrG+~#`4JOr;z3Y&uD$n|%C;|9D`wtDgVIz!Y?h~HmHoDmhywmOo*92%9J(C`Vw zVEw{(1hGl8nq0wkj^#|we=^-WwAy<9lv|{B>b$jWTe97wOMP@Q@}pxS&)hz0Sj6=k zzG&NqcaH||qH!1IEl+uB^JJFtmO*O9t#J}+BVqvDq3qa zWcF+(CCi&IlQW$gcM%Hi(7OoJht=os$&<(4Q9O)QSjD;zGA_QA4vPgzLUAb#LaxE| z!}@wL;e|K9?AE=^6IUNGMP<*8Qx!ymjgNPze}4DO6=n2@Wl=(WQ~L7B5i`Rd{Bo}O zlX>IN)y8Kl)OLNi?C#h*=VEN+#b1rF#ll*}dBBcqsk|^Aj#^fV+o5;U-8#|$^T27E zVJ-39be3yAB|RmT+PmOfAg`uNhd6XuZTg=Hm|uHcbt;%2tSRh}xKW5150>%&d7pa+ zy1ZT)Rd{W=h!xsv7)V%)8=3dbjh%rD&dGE1v+FwKB@sJnxm!h3Y+VrQq_uLNjYN6H zTVm$(2|<^T;YsAKZg5&UOfVxdfp%?-2`b;doG$45NyF82v;3D`lZ1JG&0h2BC35?azxIf5nrHwZow=)w8nEp8A2R?O7j!1 zo#e$uP&kfDmiE<)%ZVcgUmOhRoVZ?bxEAtc+!y#oTY@u&4j0#dNbo~et`C_%E}FBr zICrrGKmV7L=0=NO%grAJGNyI@px zc>K7pu97_EX*ax;tRfm?gcqaP<2~$!AMc{~H~cap@yM9(ML7i*TD+KyWaZYvHSEPb z;;=Y@e;@-K2`rAL#YQ3BdVmex7c6Qs3UNyem9;p#@svfM4|e*Z@s*d;KXgj;r*H`B zxA8OOq%kA~uMfu$KZNIQi)gy7%$Z-`e`Uk8$;8i&@SwipE`+W+ zYzWp>(pC#m<@PpccTqJ0_FyeK%ZxvjRa&j21X7Z;xRGu*+3D4kKM$Z^*BcUBv>G%d-kvkO! zR_eIQ;XGt@jW^fEZQZuNaw_HPid(jKgV2#x>pKHZxnNIJLbnpbs4RO~RYq0?T8&20mWH3|43~z? zuQVl*>G+VYK7`nnA-74T04#;P?+_Z8VCXT29l({D6Rx?UTvc3@-Qo%1GOgp7Agf3= zD+E6pRnn-%xKWLN!36~6V|SdZlHOQ0oKvP5^eGtw_~CoX|FYiRzx1%kI`XRd?$JGi z`}P{B59`@un7Ii_Np?Eymye3GkH2)_nHG;9IPkP*z_`)3=&2_RtqNxotK{qulhwAXu~yI)(|7WDcQCghr*uBjyjQsk-EO{m1a+9Q2W0@g zZuUinC5J&%C5L6A6{WKQD*mkW{LvB8*b7Xu*b@`-}CWHX*O)J&( zR@DlP%6ucXTwAP>RV^#GXd^R3#M2Q>#yd|!@w~VmfuAG7b;rJ5Vx+*(9un&*{#ixT z6Z&+Tct`(qqjUt9*Fm+UsrGwDxirpNOJc-Ef2^2&jg#8rPAm{v2n()hb) zO`g@D#;S?)mrPHs-#Be3Vxzj&7(b4<%5xoF7s&wDCyD`TOLCUp1!*gS!vKTAF}qYa zSGa_f-XV`P1I>mSHumXx0|&luK3hhN`@meiv8?E@wXpC$@taxybR1@)J!ay0(2%4} zHzFL_2P|)j5Ot2DkgTI>+3@LnHuhy&cYzfp*c|rwXs<^RIeP#?*P@Z+qrY<&HOe}T zjE3N-Ra!nEOI$IF%C~O6_<`q^FW9Gl;2xLPyk&!i5#k=PX5)QHi|@Mo$tB}D+|jUQ zQW$vI0pobxRSjOuN?M)~EAIxz`LB#+TeAJ7#-nyYG9DdGDh;o^Q{0R3c-LbiEQ+6-y&AH~|oj&>BiAP@k`F^bgnbpM_plHRR=BomPc6)hBPEhnEKZWbiZD;u2f_>VLX{4{KE0sL!UnY4;&U{(1btI7jN$Atr!|1xPD$cEqBp?t9~ zJ)a!HM;wNw1T=2Mh0aytsJNL^qPfhOII6GDU$ANQLt7W!u}*{)9-K6xX}!#*F#~QJ zaGRbpy-ACEr_7l%WkK_1)ADA|G;@3Ru3o2(n9{j(cgRM&z+d`qXq#9>yk;2XInTSO zJOy7Ro7o&!qqYw}dK4di^vr#Q`X1c*{bCutqF!5f4I}cSgXCjTI0k*Qi_Aug7R}ze^~vU+ zezvJ{o3-iP3p!-ejeaZj`(2$}IhfbVhCs54JPjL1V1hj_f@!ySFXX}1$=_aoS-*cj zWj{XT9;l!49_5`nk*XE2kNO}1R>#(yq}F;*+&`KR*;%F2un+4e^o#m$dO(kWQKQ2m z)Ntg=G*AjX42qU|O+$PV$k&wON%N^%SqwLuO4PBIQ@!GS;W7W(x3J*0es@kAFmU>` zM&0Vw>(kVJ~4&XKoxjqlPxg|l>VVzW0O?}uvq^p>!M-|mNSyT(o-k`J~ z38p%u$TZ6OIJ}OgnP0N5V%7i|%|w-XlyuBtFXJg^IEazWs;W>p~pe$@jD{uYJ%XH?e8!xA(od z+Q0VEOZSW)TxZ6Zslt6~a1SxnUpHs&gjtWS{<-Fa-re%XZ5-!XKVWj)x>Hd}sp%;~ zU%P6^j&U9C?a^~#M*XhSyVc(`Hg3!D*z0FfJ2!9NwF&O`J)G0OUv4ZeS!z$aU}tne z9R?mpK{rh^D#(*FA|4^t=!&GCj_S4889Q>A3Qb8H)ZIUDccT- zu&-MnudUIc?fy&tuXW8lz54#Pt2d#So~|v1U3cA61iP-XHpWPh8YdxG(aeD~)mAtp z!fvadcv;E@Z@WXPjWCUk8H5W%Qz*zhrGy@@FAgnUaXKPLV@5T(o2G~&^R%Axwu%i z7)KecpInW+02Se^H`Rxb$x!Zr|1x0#_BD?5!*-dcMeX~=SaG}ATKsN4rT67)OkdJF z`g{6eF$wJs@U;gD6hi4yO}Chy5{1L2M_ytIg;$KLWTnvhAwH@EieH8x!ziWqKd4~d zCGIl!iX&!@SG%!AJZ47wU$D4S5!?yW`oadI^R#4A$n3KIQcMb&YWwV{@l@kVaal^i zHS{2cX<^pT{E6D)Gcm*evECWJ@Fo7c(J*qpzQAACpK9@?1A3Abr-WawIKpHpUfqHc zFO%Srze-s(e@;psCZ32!;x==dc-h=8J~z|72{%@PC#C&|Ao&#GXvF%vJnAEHM}zr9UD^8471FUy+*z5AlyhCrb`Q4l#)mXvy3s~!Of!7WBMcJ)o1hb zAH7ds@}PU=3jez7LNl<+waMT9iA^oGKJ6m8Q8~7W$nOht__RVo7t9|zZer`MtMSJ28;i0WaHr&%m5E3HcxTk8Cj4*Wip)^%Pp-W_%+;godz!G^rfKFVl zU3-~#9lz@dk1_Gy`IEAmwP^Ip%bJevmM@!^yz_Bhir3aLO_88U5{84NH!~+P(wpqf z^tSf)^p5c6dwoP4Hf7{ak}(zGpb|t!IX=QHg!>A>aVP~trzayaPTY|b6B(Brml@YO zu4mkcxcs>JajW7=v)3V(UKN`hn;F|WwrA{!*!)<$3LcF3lZm(!B|(jiEaeQgFG-j( za9@jgX+-;`%W70ipFO;NttYA{RbTw!zO|l3-6poHUoExEl(zM&e)c-JzsUWwd%brd zPE}#(`e$<=of2|~+YD1fwVsTF*#Q6~!5pAZSV z4@R`gp5tBpaJ%Nh{qxeL-%gm0{$?%i7|^|5J72b>6`Xquv{ulz1Zj1HCl21&G|@lg zIAVh17~#qH%=fJFl*XY{k}O#lK}@6jS>}hW3iIMLLtaIQVnlL8W<=|Vo)IG=@*^OM z@QNWj8I9B7#E5l>IdZh(9UtLqs6fXcIRn|e9z$i;8g-R*`+7C4yD%-G(zqT?YAmgm zP}%+Sym?=qX)`3JW~EAPhPKMA1f7Fjz_kr`kNQx*=(<%km^u#8f^-~qKn0mG_)otN zMNFt+)T?@q`7c^kjL=7KvOX#Un|pAOt0hPx82Wr^#~|T+MW7US6W|{fQ!-k1oBhMRv?t;d^dJ*G`_I z3HRPRp?U+zq-5cS%%n!m;&7aC|o?;MxP<^9+~5a8VK;Z}WiTn=U#4=5@~@;7WDk;{Awl zQDg^Tx$`mk>=X?VvkN8xhjim}An4ZaY<|Tv<|#6l`|Jp5d5t zME#6Z351LFZ~#-cslf8UJ!3d^+5@pV0LX!mX$#k_C%ww_PLJ+6X1-bES}&>}6lgeE z!8{wi`ku8%Ki)HTW?Vq8y}w4!q^5>w`(B$fqT2!gcQfuWuYOhcQ}bGl_$%j0cjD}p zfYV7h^gQ}TN=qCHQbnYdVDXInuPpI$;JNNb?kerXWQi{pZ=4cc_P$^qIPuJq6W^Wx zz*Dr}Jot8v!(Dd`PaqN)8=oY>=%-1mxrj1MZH=lqm=A+S*lnc z9Yr;-2?|x++(*aJ?~$pt`si4cS8-G07e#m#qI=n0KOQzObm{Smd20JsQCG|swYTf$ znKw4Af8&_w@Vb8di23&DH@07mJ}CNrl<<-0bLb`0I9d9lC}UpvA?7^FJ0X81 zq?CIF_ED#2S=rBO@=I>t#%UZUdelL{m9MvzmRTCct8Jcg&%nGXYBo#hewd{NCmPmC=8!;j`iqRxKT$2W%QiPgZvJafG}3lvpE_bchE)5!88 zt*#EFAt~5C!L_t-xHwh1$45DGq(2>rbm;CuPmPKd=&BT)8cOJeRw8t7ZQp};e|lz9iIV6))5xJn|wm%(|QB&1fCXe zK6FBPoT#2O;$=h|3Bc->l#r~rk|W$SDN1Y5l5Is-Ze?i=sz{-)+ZtK*jFq`ysp0SXda|MSHI z=)4tWcif8l@yrkYa;5e6!qB{I(~IE1Nb|6JgnK=5kE)`xXQGU>q1PyRz+$Dy*-XG~ zT~63Wwh^X%#{%z^ffcD&hU(D?qli*_rorghEQsOAsQk^G0t5G z9OJ&T-(=4sCAX7}JOY(#T|9?fIIUi{p;(g1G@$M_1l1q%ahrQRaP|GihO%){zK+6` z?KuWq6*Ubz7ON^w-zQwScpK+Uy7q%$Kf~_chw1Oqr9}DzyD*RY-OY5b_Kb$VDE=9@ z9%y1Ke~+|pe1F3n%b(LVe1_Gq`D_^869NUzFa}(y?|ue0(I`nDUnHaUCKbtG%2nql z=P}htOy=M)vII*7qn2nXLB0)K0u$l_uBKFfTH|b30_Cx5vGB*cq>nK*Lob`tx=rV4 z6Z`IN-s55O8*%o`;5U!=c_9qk-7Mzm$Y+=YvXrW0xL zvYyDt9ZcPQetXxL9CJ;ijNNqNXI$fZ`_d-OmQJ3jM_(~dt(@c4{GSz=ADh=oJ-Ip0 zY&UTO?eDo5K_p^{6}0X~c}I6{KETTb4rew>)8uqpr1PWj zDbDWN7NxiCHPJ1iyr%!~59YTb?x*8dz2@)kyuK6f5N8H;+WsXPV2Iei(YxwMzlm#~ zN;cmDr-{yVo6`xB)9~%Pu}4^W_^f6X$#wz`NuV7!@^a&CBV6|1rW~8#Ig{ewA)Jok z&4O~a(@>X?s>^Ho=x!iy?(N4H6^<7v*JG#deEo_@nLTMi%NF-eo};I4^xt2gXI#_f ztP~CZcyQMwacDfpH*?MY?sV`u9@&xT*DW)-s|2GwEE$UUkRTMR2$E152`?;cC5FdK zn!qR?VEIP~LE-6`t-y?V!Z@y6)wv^H8` z#ztbqk;s&4Z@6U-59AWZV8&=DA=AaH1cNL-At4GvP6&zy*|^mjd#rRanvoWZ|9JXm zk+JCV+TYA`B4ttj?F$!9yM3XavChB3JQ>i+tiQfoH1L;xY}<~lD~op1+BHYIdvg>$ z2~qS!Ngq_H>X*tAq-KPDRO$mS2TE74hXKmb8;W~ThVw6WeFphWvK2BE7@pvE2Aw40 zX&K9Iu+}o}J@uW1o5#UKEL~>ebMK(#_Qkmq7d2_NDDQ5)+&cgA>89@ae9FD%C;xgM z**?l_JbDMM4~&N7i!{+xBe*_X7PoILUwrshqfzsK&?>o*j4=KcGAodzV#~ymB$Qr| ziN&*$Etkn3$9GPOy>4C@xBeI;=k7dY8{IqUZaw{)sJrBjYw6;8zNmkr)I&Q*h*QIN zVicVqGnFw4$^t-`O=bZ^7Q6LMO@p#{jU-vXos?;;qP)c9q|79AkSG%j$Whi>RB$$o z7-B!L}p6ZV@_(N!uguezk<`g!K_j+BFcn+tHe&@gD`}4ki?4s%K8NF_P$FwwNGg!Rk|*%f8ZDQd7N@8A=|#8Hdd+tUSi7nQPat*3RC!e60NFOga9$tiW=ul zVjdk1AtQyK8Z{Y)mYgH=ho+PAcaX(nC6b|l%om>p_qs1WCButLP%?a!(SuZ;c>8`H zz1-V>^{#zK@78aw-TLOL zf;{#1Y^t#hR7W7_4} zX0{L4E8I9)+FX}szO8q1z2X12lsI;y*{|iq52pFumtVS9et#OxEkDOfqZrV47!~yx z805&MP?=FIV~Xj#my(R>8Z%wbG$Q4{FeK+u4M*b;%Nj(=UO+y|>SmuVCs(B2b3yn_ z|JlV<9=c%gguL6_D>r|#+c+c6xis^QzFj)qCTK0>1m1!5d>FPs6?9UbWcX^w`(=DAHQr4<$Frz{Y1qzKM{sm*xnMh!y$uFz=xY`xTZ;p$J!C%e@p^e9vmd%Bg z&~-2ZL~J}=m`TpU3_)tIvFq0rZnUP{xUl!O2Uoe!M0?AHc1q;>_2ybxK_bj z*?ho^`&?I_ywZ%?RCc-J&8PfX)KI&7zJFR?SG`ny4@r3Mo5BH%!^mM(#kiAh#Cgs#?=@sKq9YyG}`;>Zz18n&7z59gj;Z5%xC{G(^}h5PkcyUe4<+Z{KL z?H2k%GykX0b1!^j&Mi*8wWs_i>hs;m*!lm<5JUh?x7>Abu1P>YXQ;KIJP`hFq_z8U)ae%Bd}s zS?3C-2pirC6jY%GQa%UG2*5Zw3Z;!|AVd!0IE@E&d3>)bZf3+4fA~KgROnjqDlV!d zqyI;XcV2qw^y#{7>Q%$#o*(+&d~@A8Pp8JOTA z<3eDId<{cP#-8LJwpr@5wJ{*%m~PKW&-`F zOqGm)?QhmcrtmSqWOyCc zm|MWC)3%m?QSnn^B)af^rt3APONTuF#&or0x=2FpRnH2I_#AG%ll)^|uLdkA5ujP2 zxg@&cGmC280;WJ@+c33Dgz;+Y>e(K5t}Y}cTGt8dF|BucwJl8p)*Bm#K%ABkI15hd zN@qh!>mZxfP1-5g9?%J(wc)vPZEqXK3#SK1If%q1DC?UavNE!ZiBPi~p64 ze`(qHq8I(E9)D~}a4iXre)Pf*sUh2%^i|T%G z5UGQet?`6H__P86_E<1V;zMD;L8v23Ci&<@98@yNupZ(M-bnn(rC7o?ynVapGM=uK za~YTsxU6vSS|%JyPb|e+UTH&nwSww4tnFA(T4F6=pR{3p+PXk$37D0ZcpA`8c;1k7 zu$E{UxQv;Z2+54(dGEt~+R~fn9Zgg#S$t{>X>7-wq#!a$BXAL)p!F-<0;WLpvSBKg z2m@Y%O%^Y0_o12_ekW5!?}Rk=VXE-PYEEp-Z9ovW$C5PWf!0W-b&y5t6ZqD83!7cU zZMFW3Ll+1XbSr4vWvDbkC^YED;w+9?=>dji>OcokHL&yg`jr4$!g#=>DdKn(jQ)JT6MLSmG+Q!MQt13 z2JLcCAKCcS{wnePW8>Q})*iX7N9xeL;B@FS2YZIXdW_Q&wOK|Y=fzM^OS4XgdM)B4N)elCpC+9fM0OqLfg1@LRcaK$LUx=~j6{A4LsO*TMrOLm zCm!cxavZr*&~yhsT+Q{AeqDOCP06g(dFa^ri%0qY7;7HYE7ufL_Irx1^{Uysahuq+ zwev^cHwZEP)1IOm`FaXQm1_=md*St~gL^BVHR78#qqifjpJ|QCW&_b)1OBcWYE;Zj zJ__QSU`;1LiiYc;7>B46M`I+G_;8Ex#pu!#w-tUExV)r$ z-_Cu_i!)9ye)}g;vtE#I({iR%nDSX!(alq%VZnhFI}eCfT?cn)Ieh()cV0AWJ=HVX z=Hnuf)U@8g$D^}4K#E~)xUc(KL5^VUL6a1SBchdBL+rsJ!AK6SaMwS)TA5j}6BRq1}{E7w1se*rCN-6+u8 zh*maeRWK4`Ya3&s_918mOn7EdO30Xng~zKEVpEq`6a-nXXMN28fpZ$TQmEB~Z76k! zLmPY0zeG!?`!0~7d(d6W{VQ|{Ze-%!m~iy*eghme7{@eiF02Pjm)&GtcfzbyW^Dq6 zP1+=dwTWXVWqiI&8{Y=)K+s;b@u?Gt#7Ejh;@bd4XT96rQ=Oyj$eZIQj&JR5$&k+XP>;%Ml1s*u3M#zjHEce zogyi7U$dkxXqXV z#m(@)<@x~i>^b@@^RCPG@|xe@Q}m~~1sbZ8IftVyRkhmM14g+zbxA{^GkG;=C@Xa( z7m>-xyWP zkuEDjySQpWr9|nzzJ|qgaXJNN=%T-J(K0ZT&E0@dbn5oCx>E$l-1=kl`n>NRy%6yC zEW2{b*5T$`{U=9?hxM_0hBUT0Fe*1jBwtM4B*b#_dowU|(!F!^xEWL8M^2=DQ%WYS z7Afh4+B0&sKz`H-kLAZpYfj2zVH;%ys+Bt&rzD;ARxOsWb(%wO*=G}Vl4*|!Q7Y@L zuDo8>;fP|%w{64KvSe3cZiIJB%p0`7g8IwGT-AbR%pO`f67z-$H)B>iyu?iUOJd$A zc0zw)=E9KuH{Ct0o>SbypaG2DO6qw@(Jcr@q|^v+lX&dO09P=Bj8g7v(S z@Z)dQ=)iqc#nUOiw#B!zLA}7%7%e?D4|!yX`sM-}Rv4&Rr1!@Oz+ox{J zQV+Za=oy~1HtuPG3PIe(?fSqe!p#~|;@%L*3v$B7ttdIdxWBV;ZwT}+!LqlYaY5ct zanw@;XyAsH-~12V)a5bMNVUBODY}<{Os)k zU8(#Db@kgQD@vPcc6A;1e23?R(WmvmO=I-DI`)T;c~0ued4pHz=CiG3-v*vAyXud4 zz6Axy#iCgbR1AEp=7c4lc44L47n;pH)p%@~^iD|MX7dEznQvBg59T%2(|X?3d?LOrxY5nf;UYBFOX@3H{oyjc|SE~P>^j?P^euAQgD+cASoct zOBBG`8ENY?J|>VP#9M3m;ZSPD!N73$FBY}xJO>NQQTEC1 zm~={#XUu7B)EQIRQH;+=rzD9F!SLW{YepUtAE6j04yy16_q4_7Lo)>OQANa z1X`4j0r4wWRo;V%7D&P?HYK)AsAjo6c(IX33FDYYxdxaaw`e4seDaF>AO^F|R-s zKd&CRg4NXCf5Qn6&9cEmasyoPxn!7~Slw~_;e+V&DCS39`m1+6mT1$c|4 zT-@GPe5-D{DE0$bWLlEW5-ZF#sQfm1!FSJ+80NnL4^=K8Q2)a7{SMPw-E12COCH;D z%?Db;%m(_-AiOq5dt2@rkkxltKKM;I$2=AsgRLo)2O{Q6(#V-0tKgy2i+5m4i|eLPCvF+SEH65lkf(8j0sB#DpohQv3m zrH$_<50j*iG>F8vK|329rR|SaZ^oj z(ibr@4umt;40EmfBh+kRK6R z_=Y>1eZ@`}RkX$ke^QJtCfa>+#q1`{l(Q$*^mB)mIes_%I<2>S-8`*hUFq%VlqF*R zavi$SdetHk=6VOLLZ#1O>~PIM{Vbz`MLjup_{2y9r4QU(RDEETp^lF#)Xre)tc9Rx zk;fhlBDdVmz=*2EL&aSSjv^scX%rh7yK^YZkQ`h1<@!B%R9fJhd}#N6U8Fqq2u@S> z;b`f=aSPu*s=wiHzkR%JUVjrS1{Ja1i>y7HvqY>D50xO1O4cjFfH69zcf|j^RgG=0n+T$hAt)L~{q`?U{G&qi8x55lg`8xaB0(OBMqyD03 ztDtSYs{GWjE4(Xt-$mqs_ELQ+WFPw^qBpIreR5b}gQv0YUSM2gaqXAcmtzxTHJRy;Y0$uuIx#K zuOUAXJNLY#{%&pAPF`{jjJ(5krrQK6Jj&HqZzxB61#O%z#KX{sBHliCl z@f;3+-s#74mm12~dxiNUJ(Ibp!L~=il1KbeJ9=^G0-T3!XkIS_tz!0}(BMyl$|R)@ zFAhWSNbzGXT|2_s_?vPtsQv72ifz*+KpgCbwI4W&NjgR zVpC^Bvy9UUg2h37p8m(k8KEc3gZEx#Z2WH`XYsLYY@o4TIY(ktq9%)uZ;qUC0xu$G z`Z@7oPSD`Ezq{2nDje;is9BV4b38EUB)UiWtBD6lS77G*5N}CW@L6pPH~<;MSxwpJ zp)i=ip*D}$q@p3KxUhtcv+->dozS^R;!}|u36pHWV7Hv1-l(v|(XQhq2-Nta=kYudAX)2d`xFU_)q-4I+uHmusoB`nb|b>v1-S<!hCmV@y?K!A-op9VZN`Mbh9idKf8nl-vzhW-wdrZorDJGE$EG+zb!dR z!*%wX?jf|ZNf?}dSDKIT={L-MjhzAb^I zpl-MK6Xo+Y06muUinUWs3xoxsi|sG4x&mv{v0w4Z`+;S&ytqte@BOt-s$-|{6vgL^UN zlgz#7AopBr7~dEC#)7go_iW2W`DTI5wT7_~EMbeauvzvP*9WX|KLq*}#Aeq$A^ufR z$0t`>bq-wcm)`5|O_b5)4+_FPohg(1Z~-h_n>O}9(MZ+FV2uA7WryRGPx%z953`5x%|8rFM4VW98Z*_^iZy|O5p!ILIY96EeX($b*SEFq?~QxNK8EpgBamJl1}+g!MXjRSj~Vabd0 zi?r86d_9EmHZMs6VI&{%r&1DvUL5Q$!_3Fr^pUX`Z92$URU6h` z&DKc-xHWfAwhCeYkyY55Y}RZ%b@Th+TQFwb2XOs-2wRMVHa)zEq%OnrmrEN`*DjIo^Pl4s<$4)0dyOL}nM^ z!KwoMe7x7s&ktJgpajpS&%-yfii)gs6PrME#VxBZmAw2NopP*6FkaZ z8WZ@s5IA4q&&cMnJ|i;&-(zg}+!^1m$)906dNlsr zf<6a!VJ9vr`rV}))Db9s(mX5Q@<8TcM@5MyPl;GNV-Ba>kcTQF`3 zgXo3QqEpOK?s$edDq*l5RP;{m$PZwi^1bAJrg`#eyTAP@WW|u@Qc33>pexFI3b4l+ zc2C@OYep-dLv0CNV3Q(elxFZ@?w0W&bA;nwh-!E#?gi?Xqk6dqe~MtA`7yMy9;WRCRsOC$dITV@}u(&+XKq88e;5n2|Z3ehTB7(&XHpiaz$;de2N;T z5NB!(nij;<6@2)WjSI28P)Qk-6PTXn%gB0h>f;SYeITltYYx@vR3#;`Qq_U^6LNAc z;nMk8JL}GGq6Z1bm@gT_U=#Wz0P({SN4t5HAZ7R&DRejZP-XT5%>ulVBUI8NZyi$8F(E}nQuIU;2Si|ZtaGgLF}jMY$Ru;g*7V#^LyaBnnRmm z>U`T5-n=&6=79b{V$@xMYb0A(mnv_TX0H!d3rJl;a!J(!i}AcA=W0C9e_McNYj(wj z9Xn*}40Fg4D9`nd6zjiMB1Jkw9kT^x4q^n?(?7YDbFKQgn0x-Jm36T>etzzD1qO0jw#vz+uELI z-q*;ht-N&j>zlNxQyUl8rg*!jD!=VT`|VEc3V5#f@j`Nly5icln0A%b1*}`zGkhof zJ$ed&-`FSc_t+oZ6*&j~cR3pEzTo=c(U1;NqbaVbsB1(^#@3HD6TYWf0-U>A8*z?` zGdnqyq?)l(;+(Tk8cN8~aLekLQWni!s0EIrV+wWG((CsctE1{`=KFKMH~$i0-yi>5 zH!tgB`;40~{>;G6x9=Y(GK3qQUusg%lt;Ey-uf^`%Fze;yj-O!4Xi z;*YDB=Q=dP&r<%hgF*h--gtH9;z%*`V*ulvioc;8A}?k9K))gHzoZ(1zy|bJ+R1P| z`0q&O7V}##%eRWYCA?M1zsz|52Q*@2*rhgLs*A^gl=P=T9-YyvTyZHFH?cE_l|5Av z(s;us4A?Yd4Y)VZfhjAR2K)<*k**uhaN z#=>)js2V?yX1?j*n=^ivi>fy}nq{xeFzXyuJbsot#-@Z%5JZWx1X{a36EWa~7yVFa z-Q>8=>OJ{0(unYRE^hn#nRC88Op!;gL(c>EBU|ek&LVq;XRwHZ-WK$epar@T8HMU>>@#Okbpbe9jp^J9 zpSBnD=b8&BKOfH_JmBb7^!$v%bCSgWzK&4pM#@(_#}wp>Y9;7K%M&d7n=rl5MUY#n zFtQ}U);!85DfJYsL#d~7wJpIFVM8m-utYs;Sc|^Ie9SddJsio~%GN&fhB-%Z>G4;y1V1~ zZ`Sjgfu)S6y0hvN@UI6}@_Va0Yq{_|hoAGhV1Be@I-<=Hm~HCkc8EV0+pQ6I)qK}@ zk7G}Uwn1+hoJaPc5PuS_b%dSBdyw~#Uzs}_gb|z@h9>SP=;H6<{g`vaAd%SNORl6* zI_AHwqyaZ1X3`!~)>Rd*#BmzWN!DRaavdIc*>eVT<1^9S0cTiit|IUhb49vPugdnQ zoE5T}F)Q?3JQ*OXxgC1XJnAcl=PYYDS3M|N;W;c)*ICx7Bx}Ilgt)*fnsa*Pik^lV zRJ+o_)~IUT$yK@)xM`Kb>)-XNTG4g{U%^UUL39H%(Wm{&bW0pWH*gRgw-ePe-;d@J zr%r~J^{Q-qY1&$F3|bhwpwiTG z$KC~u!z7Yu5OdiO(Znd(6gce)~lt@>ckO?6gLi!+JB&Zr^U>#BOE2Np3%7V{g{zqmr;U zvar*9v(*FakPq(1fH~rMSNg=}kg_auO-KV<6PQuR7HYNWZ%8K8-`FFmYwcWe99!&h zw9tORTD7=jzX5YV*ArM=@_O^_akLmI6ts;SGu+h4r6Bgkx57^CU`oK=xMb|j9oS3J znwN9XQu|KSRn$0X&v0P(xop~74!%lJ4#+zwZsNolZ{zF*iW`=M)ACKqd4*lXtH`VO z8fhwMCqJ55*m+*9npw;%@AS8vS9`~&dF7fNIj^Xlz2&^tvF3FleDvfKRsP;x?$aE1 z=wvSE(=S&lL67ZnKg1eF?(K&pJh1O@pOZQpkyYiP=94pP46;@UW`WcgH`VcF*?6{S zD}%cw$FfOdD2Zi^T%#@R-z^PT137$@pvzO;N2{_1y%QQ}nTS&yw(;3^DqGa=vj$>} zdUhRK1KBom%DEyb5dql3uoM{Hy!%MOGVXT4ePaiBzZV5l2o~tOUXkN*=`%Rdw*W9JEtol|l)_%+fLUg)6vtWO zfrlj9wSaTVrkamAs+j2ccwPzp&E=lDoMA8Rsa>ARyb{`)OWf`F97y&Qt&k@J*T6q% zf6<-_c%svjRzhWnI<2u)#%l#w2->|tt`$e5lQ8D`j2(-d!D)Cu%J`4D9V#wk7r^-EG-+Vo#OW zB{yhymDrnV?+15RCw6Ns5bYCKwk7taU2WNRVz=T05byZtt!(_A2L!YDj7% zw@J1o_GaB}*>+;LBH29iyt@LsMzW2rGMFQl041mPTU3;s<$`4!?;zRkO!Lapq5j5x zm&y|Ag*kYcSJ4`lf&%ej38zREk0Bd0nfzSVIFJSaJmzPIJ5X|E2lE1d%P?!@x>wm*_yj!O zew<(Zlr_(1gZb5o==_jKd!&lr_w#ZSG*tiumMqk^_^E1!tOO>t<6 zdy95Hh}-6gs`Zj||6t*URP?bi+Z<8+n_({W_T&6?U}mXE<=Mw9d$QfsPY8Tvsd$)Y zSvPmNe`Bd=X+8fyOU10Y%w+f?NGj;uNzyev@F<=`#^7-!sQ^6B_&F&RILoSfSm|e_ zvz9zrqdlc!+Q!UzsjQ0Heg?zY&$cjJh~9UQa_ zoao2v%|Kr}?UBGN+&Ey2tbjcDA|&P*Rp?*8)4wv&Fxe=?57`;1IxJ7SmW#Y{dQaw2 zviY>@GV|ge;sv~H|MK(u&8IzOn0I_i2K=-9d?4Th41d*vFXZQofxjigKW{yc;OF^( z@5S(lIS_vB4|*Q>#;oZnqCK0t><~T20;nVpyn-AbgZ6CE-NN%#;0bUz4|7BHsa~oF zhc$2ppWlR!x*WPVSp6YwUnd1-IQB@TLwXnohS37HY$W$6#2w?|j(&gWz>BgXG?GCt zSZB|81STE#sBkyMhE;H@wB}RYL>tOWztA97f9TSWxR$JrdFEgL`5ik%-Ak8#yYv1< z)7@>>UH#~^8PMHr_8&Olf62_5H)+hB5RVe+w|yJM=#QenHt3Jm`Cn+b>$upyDEwqm zG`Bqc|B`+Y_y+vPd?TLURR(+68YGQG)U!LExF1o9c^+|7Uq~bkp)Vx*bcZ<`L~y@W zZVE{)A@%jYo2Ls4T`&3X{9S+CKS_Ulzdq(q6DFt#yh*VvRAhy|pY-Sdt@oF2s4uu| zUfjN2|I*C4EZ#7ii#PU*SART>x4(z83{}O)YBNh1eaJ*ARxn+5L0ehL7s#Rrj^7C0 z$nADWC|XdWuPr*QmN{vZ<13_s-7~47Ep?(qV_4i8eg|$1fA2j}`}Nn0-5l=jvVYH> z{a;#_hYRXMhFne!^xx&6U)_go2aKGo451&3g}UsP%``5SrIxWFV_+%8C0GBuF<3W^ z>tcv`@%(v_a_CU#ZR73(`&X~t@BhWVah$a*=AbNc*TN#{rH-K}LA0ZQ&Y>7y$$fPG z^f>seoixI%FKBc@CNp!S zjCt{m2h3BV?#XvVUGvnMaI>G-x!*P0pQL|tV;NCs#ns_$w=`!6mqKoN43S=ThS92y z4(C-3P2}kIYPjW7A1kENCyfaHOl*`4WFjG^AoAyFVzIdiEn2=eH;Kg)hu~m0NJQhm zLFQwl^;P~mgbB8;+OJPC!^A)S$BF9lkXgjIi&3o@8gi@2EvPPABGvL~kZS%csdgbJ z2voa>wYWt%|1MG1eD~-P^Bqw(fAS5HWxOaF`)7)iWJNn0{(?Dpa8#?ne!%httL~PZ$ zXd(2bvnNHas4wi8w(WyZe(i}Em9r;BE?Jby?&O?#ntfIKBmJLgu%p zg%=Vj1$c?+GFr^X_uzq-`@z5$2Wx7l3zm<9w>^IF6KBekX$w%($CnQL@S_mCyPIgD z;BDF?&cT*o{9gipWyasx!hbo4-}arrPa{wH=1(vSdNY1_JqW*kJ&2zrn&|hOD=N+S z&CdYe+Ji`&9UI>AdJunbR%ZGi3G&B2BjY4)ovj7vZ^!iGl+5sm zq$>ROSup8b5na;-nSvyu#{=Qdvfwj<_-+0ts%rGW5YYb-(_=(q9P@a7W8W;4!jJvo+61-tz_crB3s zm2y!!Ck~&r+l16Tk#nmtCLS1Kk{jW;LkFAb?f;AhHs0rC`E##6;J+#%@%%d z5T0urV5^f}=tX8cS@l+LQ}l&!{5^8m$8oO(ypMBYRo?F|Pc4359_Wy(hb(4#-#UIy zYw$m1p;6p&u#f!lI3-~23&hiqMXY7iE+~)hLh~JGHy+^s3eiRC#(rJ110MFTG=~{jH-1D);cRXjWUT^F9c{wg~rL#K?PIa}| zYdDek!0>%6K0Lzk(lbTTM_vzlmiu3Eo01QEJ-}zzSjso}=04A7ePm=XPx5dcm-@}> zOT#x0we(y8PUMg=%+|maOHZoP9P#0ImJh5Go|l)Ip3&xG&fY2TZVut+?IAbL{vo^E zU$ERXF&8@ffqz+o zpLYTN_ZWV-_1>}c+>D36W`^eztow#o;y!VQ{}tj`;5;M&9!6BIL2`g+cfe(y2mC)6 z>%X294Ha$JEb!c{Xnuj`zXN`cr-GI)zP6snnV;b~_5*R6;Kf(g^LT;}+=kkXW$&K6$)_4pVt#sr*@H zzvDC27UFwoDtu2?gquE7O@ak~Cx8B$KhFfcR5|6P8Zqm8s`2s)_z2`@&nEtSQGMph zC@)n&;d`!5Lj8`Hs*|k0Z_M!L_;VG!pQ?1cRC909-;+Oo#NWH{{ZRgVn!jI;9i)Uh zYG5v@hJ!~-l^rx%SUy}6&UItkxUvIzQM_Vff|VV-Yf&YM%8BGkBOU>EU%aOnM*_E? zNUMU3x;aewCH_0m;x6E~f^+;Q}TRtk8*EQz{sGgZ5w$nh$FPZDmFB z=>OBKZ(~|8VmS*TQb4rLvg->l!+#)zJ3H^TNN!FI>qRlsCoLVqSb^n@H7%_a8C#*duGVy0Tlg$*Qwv z@7Bi#t*D;%;P8dJlFX{&V)E`q*=;(vTj@IL2B*frqu0w#_d-qO{2k(tT@+6r*rHa< zVnt48y>M4)3}r6*(k2*3(2;mwz3`lHeb~O7@Lu7#i_LirPiemR7AgFWTZ(az!toS? zQvWsd^uht3?%v^>cT&#dO675M=Z<@&nJO;a$brzIt3)l50_0wgG$O3rYlPc~O7=IC z1m2qD=m-~azt|;^pv!SlpHb08_l|))ua|j_8<3-ro9)JJmT9RjzSjeHllBgKW21TT zg|~H)bor8qiZw5Wo&DOEKW}QjN32?RI@zov&Quqb&bJaC(d5!wN6e#L_O2f|q9pBA z-mK!e=-vVS1524ap{{Vwi{$mjHK4TKkY_g8t}eG%n>rD(CLmayGy!1ya3!I`_uK~S z@o`>X*j-3N1%CG|!>nVEp|^@ldL%uUw}g?^rQb=<(d%Ub!}ASRq?z;r`JDPh08cYm zpN`r~Sf9Pw`b@_A>`FY~$wl8lf-nBOKz9e9bA25=xPYI8NG9O%7tqk73REeeawRqkH*>-2vVhTI zhXgg71#Eo4k1H>7JHM1 zTfn{ixwoeNTcPb2EyN3YSN)X!i>rdGlk0BRCfD1pix^KO?3NpFXVX2N*Sxj7k9uE2 z@1DKB*L@%P{w$SLs(Go6rF)fL9TpWfKJ2-$-@-G)*M(mQzgDJRnSwG;mH8neBVs|s ziL#kxmzTXBnI1Vla!us-Q4OQUMy-u{E$Z`VEjlB*P4tlHGv%6;TUqXhm;o`{W7A_N z$8L@NvwWlSy~@85=ZhN<_ey-__+jzK5~33ZCoE6+JTWbCLgMYOSL3Ie z3u+p*;%ePf>!;eiYHzFKtJ9>;`Z^!hxmwp(w_)ABbyw8gSNB?Gz0C2Mi!#?|ZqNLz zUUVMjxRD<>njx?;)@VKD)_WJBUoAhY1p~*i@TQr^5^tWc6n(b+x-n^js&nyEOwr|mXO#7EQWOP{H;cUmM z9jA1BvE$WFH9Gb0^i}7i&LcXn>-=?>7G2hN`KfE)t|zelU%oAhIjro4eUt>FreSGY>aoxwg zF+O?xwDEJtFB|{&gx(W|O_(^LV8Vh4-{p1A+nD!a-bZ;C^M0Dxd}86Gv`J4)_Dr5U z`P7uwQ+7oq6|} z*}I$k)8w*OAAj|YR~Nqe*{eII%$u@i%C0FVrsPg-IrZmhL#O3WE1mx1j2maHnEBF7 z`)fm9`{DJ-*LS?p>bpRN1s{EE9)Ok1&I#if|8F>l5kTG@1EtCg>>EL$~o)v?b*K7aS~+%LL* z@!{&mt8ZUDYxVIpx2zenCVB0>Yd>8Vwr=~E1HLT$>e;UfzHasPhhLYjk66F@8_PG5 z-%R~x=eI9^YyYn6ck{kGvLR%{&<$%glz;#B_j|t2+IYvtFE(avx^2@Nn||NiV)Nw9 zhc{<#_HEI&G}?0Kmgp@*xBU1+_z&ZLi2E_($A^FX^2f`uJ!8L$J+d`w>(H&~+q!Oh zZrf|ymTdcC+m>x{+fHuF+xGiU^?r)@>Gq%6{?zfO9zQ+&)0Ut0pWFYu{AcGceSV4m zHT2gRzn=ZA*KcvZ9o*h$`v=?q+|hr>ft{UpF6F&^XX&mXyMEdA=kD>l-`xHF?)AHW z-JQ7m)b66)zwZgz(_&B5p1ylV?U}LX{XHx9Y}%8!=jC6M>-toedMVlQ;sY?^7)Y;j_f^h_Gss$>yPd_ntHV0sClf;vB+axjtx5Y z+_725J~_7O*q&qQ$BK@J9B+TT$MNCECmmmK{PW}A9^Y~N!10sE-N((Ou%sqQ_ayaA z8kO`?(!8XVNt=@PCZ#5wPpUXk_eA80HYa+Wc=E)nC(fNHPS%reOujw2Q}Tf1ammw@ zbCb(bYNgmx?n&vHG9qPi%A%AtDc`5;OgWj7oASrWS|=k;-hHyq$ss4lpPYX3y_0KC zZatZJGVNsk$t$Trso|-2rFKp2llnyJ^Qp5^KT2JnCem(7Ym?SFZD87%v?*z`(w3%u zmiATJ4{1Bo4yI+M<)wMj%G0i<8|ih^8>Ziqep`C$^n25z(tD-%PamE>K7B^|;`CMN zvFQiWlhRM6XQk(#8ggpnsTWSYd20Eo^`~M_9kO?_N89_^huWXAPqfdszi0o%{)K(L zeV2Wo{g^$?e$IZuUSuz`UpcLxu5&u_bj#ECoSt)f@#$r!KR>sHnJH(MoLPJ3yE8wY*>xuMOvahgv-;W4vrW$4bN1o0qt4DaJL~Mi zvun=&dN%RwiL)7Joo6qet<11ygk&_zXp_+^qkqP@jMp<3WGu^w$yk^1TSijG*$hX9 zC*zNE#<{R_P0rnOuJ5^F=SH1->D-KSv(7C%xBT4dbKjr)`P{*Cr_WtD=gqWcMr5|k zyf3qN=3|-9WWJC&J#$g!%FL~qhck0Bf6ofdx;?8~)?-*?q z4RV_1bj<0SGdgEx&WAbQ=EUWk$|-gjj;4+-jzNy+9J3ssIyO7@IWinR$JN~6+=jWf z+G#Pvqw3Ubzr-p}~cw7g}9-;KINQ&t8~$VdaHyE^NK9=faT- zr!F`y6kqr=Pv(uu+nX=*yXUWSYR*TUYn_)}LtIa~UU9wVn&VpRTIPyzt#fT~#k#h; zj=C~kW$xPUNOxEF5ciAjdG1y2ZSJG)T=(UI`UNcuIu<-w@Myu41R0qc(YT^XMQ;`@D*CwS^P;bdHWmF;w5w=e(XpbmqH{$Tii(QLimrHc zPpGG{r-diV)63J}Gu$)UGt={d=QGb5&$pf*JO?~Uo>QJIPrj$vQ{lN*Y$;wEfC`)(oknAU-wPZd^6?f|EL=$7A=pxHSbG@;6MH?z+Y1hm$&L0K71ATzH zz7u!>j0X<@_4(u4gW_%NX3@o{FFG2Zh{Z;vcul_|+63Jt`dP+`APc`$Wr-4xTRMn& z#vCw~7w$Ql{&o@d^x2}dzFbJ{8*wkcB+$#4D<&DO#e>E?FjVx_ z&Wl@(kErhr@jSm$KT&IFerfa(lh~hSE#}-e>ElAqRo5*L4{AlwTSaH>XHi>SW7HA# zEDmuC{k_pJgbsZ~TQAzN+O`E6X=%szlpYjwj8$Tsu~&?t6b@N(?iWiD+X! z`%A^EmOA1=OQNtbtFqA84u5BeTeT@7!m^Hb&lfKT#f#BFoy1VBftYUjkb7S+vn*eT zLB_YDyX7Y_&2YfG9_AJ!N<6CnF5cAli^u%!f1kcL6*IJrVy5=IXr`YP)Ahchi}nt4 zRO0F!A+9|R9Rp=Vc!inJYeCvJkztGz&#L|z)5UztS<%okR}8VV6=B8_^!0l&AKKS? zr+C*(A7IF^+Z$aV)3xGKIbeGOM*6uIl-;O9BWH)v-MA8Ad&mM zqFc~=wD+KyXMBJx7KwTKlVTFrHnW}*cNn*zk4w?BdC1~D(a72Ws*V*Jh^Ce^^f8D1 zSHy7II4P)uc-a!owQD(VCb&yPTW2B5*Tr4N8|HD2yIaqT8?AX^dpVG+tTK|ybdkFDd-!#~AD%Xu-W)&TKoa9!%V1s(>8Tad?-@UXk( zHc?0Myz2PDpykv#6Md%@G`c`Cj1zF!OUJia=+z`}T++n$hKHxVj{m{#kVxIML(ZaGrbhUP;tUY~l zK)>bur;$^!c-cA;ztR%BVCBYmLfnWCinPoYZLGJ6C6=4SaLcRW73}+Y%L=j38e--f zht1uVd#L*(>h6v#S;4hzpbhAem48;W+{Zmu@!8kxV+Y1MY~U*~#5f^Z=$klq75Di< z+=z_%U0pHFnl7HS4#56y0?=sTyMq> zyNMUAbGi5HqLJQIJY_T#BA7MhYO3wPuQ8D?pQda!`*2Zy6$lgJr0~D+8?PuZ?+{~c zA|~n|2`RJ1^U}_LiCz^C%FW^-Jz7lGdyBq$7i{2B{Pmakk{q!J-?+e1Bo;6eG$Ck< zctV>cUe;a|gQz0{Uvr;6Ts(mvdzN2VZ(((a_k(|cAJf^th}>3)5teJBh0$5uX(S+< z>7p0?>R`zczaBn2Ond@A$DogWttZ73)*Slz3D>?W)>{nPGDUohuk92( zN{rM7n%^+jH-XO=qx&6IJi*5{)t(efiDggHr+Y13@!{u1L&GI*4VoB$rM0-#dO~zo z3<++H{oW^@)-K~mFN;OsA>&Tb7YqdLjXV5Q?RNlogU;YnFwkgEoEu=8#(1IAx2Edb zbH<1G)4{@KJS@86E635-9>gt0yBl^f&Ke}f={q?d56#4{hKd=+X^y`V59|A&>bm88 zv;I3_)ems2>QvW4(W6JO?QzC~qA#mUJuL52_et@HWfS*%M|2OGAR>ZB5=XXktj=4& z{=3-zWOVNl(ap%9>;;e}BJdAQ@Im8@??oT$k78WVD9&9WYFqE8>`m~FXm4HbryY$> zlsl;-o^u+3uZ7KOqfLWo+c}|I_i;b!0pqOgiFK)b)}Q;ScGDL_7Y_wfFMPif{@~#@t9y52U+za|6 z*m6DRQh8TRsC=si{P~v3ss0mGo~8Oz1Mp*m;scvKW`%U z(G_2s=nejynY{IXq<$SDx2;JtMQtT_)!+YH>d(nlUaWF*CA+HJT;<0qN3Tg$ zo~rUvf1avx(&^^MekdP{?f*yM4|V)VO=zKJjPke8_rbf$R{TCn`Kg*vKD;KBkFR+z z>c&6*h3UlOf80wQE1&*1;ODvTGO!KA(v}urnu-JdctBiGv7s9N_Ng}hvz;?2tA>gf zHKF)YjhcO^vG0#ns!s|khE>6DH*+e#v3ytgz4ln;M$0Pm1gKhb~s&8qQo^|<*z(Q4iLFLWLHtL#pV1FQJ2Y)0vC^%%zQ zr=@wy0`Q~x`jh5COElxar_2r2`sB9@rTfZO$C_nooIw8a_qm--=tsPmYHUI;q1R(! zbzJhx$aKT&D0uF`pA>2BE6-N(R9c!41B=Y3h#8|8hhDQpR4$-wp0YnRjwA1S@H(xE zr`55snpVZeiP!C^`raxpVNS?jS0L7ny&l`DVwZ|lYJN!hoN8Ka!__g!a=h{;{C<{k zQ{^Q~gG!&)ud>uQYCdKxsoZItGspU40=b*t*DD|D_wVHMlQ6{QP?TDu-3^g#6uKuNp6?c%^cDRkw;os{Zl#ES2Z0&s7=s z@aN+y?^pT08Z#7$8UCD6UC(`0EU1P$zuE?`+X!(_-J85j{illvdbzSL4`(mE+^+Jz zT8mUk%@?Ce-S|%1&1$x=tU`W5HVshyB=a_$st|bP@Q~#oVN*}q*;L6x0|!2&_RMQm z^^+*i2CdRKlxx*z2ET^LflcTfNa_x&RmY$*P17xwAgk1M!=mXr2h}fKW6ub-^0HX0 zR^4K?_zzTpl|75jcLI#S1#C6Vq6MpKb>5aBwWH}=#buh+2r^WeVc`x|gAWXgH7Ljk z=0mIhBCD0V=~hdvV9g4la*JVD3|ho3RQt)tDdSJ3_$(-h76o4Z`qgew5Vz!m+O;_+ zsFrFYN407N(Nc8>BXA$pE_GtCRc$#4=EGV+{E8R73knXZT}w4sy=w*4qRbk&x7t&6 zSZZ@34d8c6Ygudg_o+!WDu@#TAF0dy=URhRt#rv>5$&-WmRgoty5f{3B@g^rgA4>f z1_yWOoK}nO!kVDq+CjmpbzEc6m7ri+$xXPHnmJY1xMOgzHCWW*l0c#V6E><-ffqbC z;3{>i`W5wegX^d{a2lPi=7hQfg|H*=Q7tPqtCwn#y1VKXVm5>#G&%68?q{?rqEHLs zFKVy9XeM2)@iNc@#a{G+>eQ9~mpVgLR(%YuaS^=wdo8LZHQqJO{i_rW3%uzL>O`wF z80=Rpj;hW>I|I7*ACCP>QB}R4X@9kf?)xS8SIPA~^^sz?vIt(tp!)dwDb+jGGVrrP z@kBAD%EnZyX|igppD4y5=_-a*pH?`QsdslQr_UlXj#q}01w>DZ|*@K>su8YrkL_V+2E zJ$?=1beih7m4F$*dac?9G^O}T1iaV_uv;DYFR1bus-wJ^(ZER>s9h=qBrncg?Gqyawz}4`<$F5 zXUh-ea`~ldp0~`g{6v{YyPo-=QDTPw1(- z-DtrxxxI~n##m#L@w&0lSZjQ5Y&CWoCydjE!>F)GOPHlWgp7!eSP)SfQ5NxM(*d?x zwmP;OY&Y5>Y>~D*Z0&3vY+Y?pwqCYrw%NAzwvD#Uwyn0Ewmr=(%^Eao)GV^u?akUY z8yTrZS|dXv>qj<@jNrMUzLBFNC$u=~)h_M3VpOW{bMTBGcQt$2^C%Ro|%} z)lbrEVcgCy)Zzk_Dl8rM)u5k$o-w+`px<$;1SQl|IqMTj} zTWwpIt%2<(o6XjOUf*Nua=q7I+rG7JqSrfYyZ_efr>c5=LycaKr`M8ROL~2kUZVy4 z*H)f9V|U;23k^d&h_iU$TDO%)wKRITt~3jx#4e zXHCvWtTNBf{v_x1oB`Pz&u`9Nlf9Z1>5sD)Wxtd?EPL>|;s(Ff{@uDu+b0kC^Suut_=ZW0V`M9Di8-w zfZV{jf8T1Ue?JZ!X^ET<{x>gewl+tbtIgBi(dLV}+MC*k+A{4UZMpWb_KBD$-qAkQ zKGRlcG1^KopV|9W+UMFA+G=f$wpJ`;#(Sf-N!zS#(SFc=6pO_YEmqsAZPR{Y6?3Wf zhIp5?#J8B2y`bf3`I=L6X>Rd>R-hGXMVdz|*1TGY=HnU0Wm>6rQ7hBRwF>Q$_B;Ps zvRwN^`%}BDUD2*;*Tl!-6TPlpPY=^?(Ch0Bw70cc+5&Bz-b!z+x6#|`we>oBh#rb% z{-`hHyMK%H#rhJlRczCj=^yFK#ZTDTC*o)QQ~fjXi@rkqs>g`m^p*N5v0eXM><~Nk zFZ9*=8hx$44nOpj{AUqkdYm4wC+K^{ zd6BIrGH+kVf7*CNF{_(iJgJYYzEoV~KUB)~gQ7w|q#qWS_(Ra&@exk_nAG&+xXvW} zWU`(j4ITlu;yYY=D&OJ?mbHwzx?3-hH_32$vuvyv>P337?!iCZC0oi?#vIw2uMxN9 zi^T1WdB!_ zUanW@m*k^zpd2Iz%OQCCVe&D2^c(VV`Gg$K^SZ*&RDMkSxAFzsCyh6aw~QvnE%GV( zw0uU6#H%flqj>IgshlJy%ej)ZNaJ0(!k8gf^LuK%>g=x4+#WkXsih0tp#yPsP9|gxBbvwhyDQYW&$6AFBjqfRnLYVtioLAA&^Y@LTE|= z+M7_d7G|gXL+EL62FwFz0pBpuK82nK*a*1-?^@g;rJpkIH|13K>fIFVL_6usk7e2ml)tvOd6*YV=Ru9)Nfc zdPe}*sE~MD*^YBEpzQ2&=CQsUzcSZ>xZ5Vh40!S&RGLJ5`dt7?F>L?l%8s30f_IY zmm*!V*#PB0LH#qjUMm2x2^t!J(r>+a07}PobWW!qO2_eqe_;{(K+u03ebUh#bp-BN z`r0a}y4D3C$R>39?}w`U>j1=W(DmROpziZ+0Af2-@kl}4Q}O6~>fZrXJW~Br_gC$v zOzeX0tb(dr9Rsl+ij4F2>mEH0aRN~ zf>g?rq4)^}9(b;v2T)M{jAtc)$acmqNP*pk!u52Ouh--9Zo9gA9!a15kd} z=ox^LrO_(@<#&zV0VvrTeZWBK{{uQG0Nn{49DsfdIwSz8(B)h_MlD;(Q-;GuQ%XtD$V*N6IfkW5HHH z`;2X1C)X;uDcw?-4X|Zn59R%#aUdSN4H7^i^^`;R0puwkg({gH2Z{$u9w#V&9GVPH zbN=tpGXbby6=z;I013^g0xH2X48q6;8pr_->KOse1xoLfyp*1)`rZV8fImSKa2Z_V z{HLImzy$E#LcIzqE?T&s0&7UZ!aXcul#hnq5CH2e!cre#zY;x&;JOIT*SUX0HxSK! z4s;G!z#YQ_+ z47PE9TSNBeLT?N}>5lCtzIjFF0 z4M47e?f^R}UkgRYYax7&-p(<8wa3rnn-x8AZdGKs{qspJ+f~A z@+au%0MzI`ay*#8`M(I!0vRjF-*BxG&lfCRVn#*?PawD^`wf6RWk3l`WgKiPc-% z`o!uj`V1M~e1vVOZRx|~m)iQ+o*y$l)@b3Ud@y0@h`VjEV(9P}*bW=sEVlcICf9c- zj2O|iO{}4+;R?=PI)Vybtf~O&FS`3$n^;ThezsWs_Cdo3509PGt4VD4UL%?`Yi8>m zn=oj2Y(lRl%|?u96KlQRM%w!J3*mv*2DOg0wrmp{9H?RF@YwE6V#SE1OI3YChc|B) zJ7?+ACQIo-^>M=AkGD(l&w}nX3*bQS?Q+f_s)96c)C{!{e}+j zO%t2Z#M-T6BYU@rtZUXSUha_4iTxlCy!_n+nmPQ z7Ht|YCS(wjZ8t!|wl?jB(Jwss+M>bBT0HiN?Cv~6?LW^$OE zzAd^TWuw$)w%Xj?kPil`%_Oz?P;Gux8&hqXHVj-bU0pFEbQXhEEz+ zjus8I&xK8I#xty4S?hgYgt7kA&>Ajo#1GtHO%Ng0Y=MROU-iUSr2A53bpkI?wJ#Y5 zkF46)M6h_VYG3Euo>Qv!jT-wFaXVwgKs{E$G?!-L=Q?{h7P%Y)l~n{1TmE}r|=5~6ZjTETRxv8#)4_!LGUuAHOp+*OCR@N zHeDbp9qhh_w#2eHNHSis(pcbs=iL+eyYv=`D`5bdd1I!@tiZAeRcOK z>`$W(#ls$Odkp6Vj{bg4Yd-%sKD6`8Wg1s@6?gNV>3_GSp1$Xkjfye0D!pRtW$%q+2~^=vmVj@89h-jZm!i)}n_DfaS~VjpkG z?2MYPJ;qzA89BBojIt!7r8Kq~j5MTh@RrQI z+ekKMdyBk7=Ak7P2jqWo#>C z1>38#QZTg8XtP@0V;iIev8|=mVS9si1KUQ-QAn*ZvlCLg6FEq&6~0_*ZL~IQ+i4xx zj?%`leM8G-o6k63>hCkkmio8MVM^vN_ppuEGuWPIW<=^aj6*ZrvMnROmBv*vT*(SlJ$SD4MBv*5{}wCJm<_zY z=e?2lCf=LHX2o-PJ2O*~6!>-YVT;(J@(+#$D^mBMtwygt{fCLh<6fWgvS|F=lnF11 z#xIYV_KIjs4CIAIs=IKnag(P`79lT9nDUAsGxgV?wyG6YEzEx`(P2rw7IB+Ej^Z-M zwKOa$OMWb&QcZfU1U3mXiw7(4==x)C!yazvYuegt2AnPPLi!NB< z{US;{fCWsz;^w09^Tm72jeW#?7jx3goczpe$gj+BY-iSDCnNtf;s^7`jM2|9?)J|Z zGlph~LmVSIE`!EBOr) zev?`98gu*1moL;7X^XWb+EVRZ?LF;%?SqEZka!7X}(Zqp<6+w>Ot9r|6&<+srn24?PA5q#IbI`&~;{$9=A ztGRo9g&w13?e)+7^YvTwAFAiy^`Fq)U-VzqtUIfSJO4h@&MbSHeo8;BpGAj#`bD0} zsAn`_HhZ425X}sHw@nkZd%U5vTxpTK7?ctf9u*!`89ch%py=SJh#qabr3XJ7J%e}s z=+TPyXdC@iU88Plw5NMq_e)Xj9?0m?uwLJ8+oBVqGU|O0vOnZRbWC(ix7_H2=#0>m z?wMg7qn5HA6rIqcZP;fIgm)W6or7)&uivOac!SFgzv!OX@T=&Un-<^vM&p>q+Zu0g z9Cz#XTjOs1Bcg4@cH4uIb(`l#&uG!^_Kc`@cSWiDM=kTWW=6~Utr9r$w%*uga$BwK z_`4s8%DX!=YH7P|?K1EAH9DbV_l~nV?e4NPI-zr)&gq>iyA12HwA-L=xwJa7OKfz) z1L0A5QSG9Z(l7O%;otZ7FHjy8-X%lvA}YMci}#Pee_N07Q6WA0_ZZS+Jm?>IM~NOo z6psS$Xb<(*ct=HaOAovQEe>$6`s@cXx^1iZj>-tU74NFw-7~vqQscI2L`4MNN-9wq z{{;2N{BHi%xY%!tf~%&RkM&)#iYds3FGBCpe>I92KEHtCnju z2Nlo!ZzQj{pz4fT#@SW4eqIf(|F>oTB8QrC3H16ej#qQOns&<#a9wep)_RmyM#n^X z;YfWrbiGfCceFJlI#}5eHmKyO^!B=Rm0c>E^V?;n;z0LHNV4s9jeW67dtW3De1o;C zsA1(TMIB<3CK~WI@b@i=3d+yd!OwSOt*JBb8}aVZ#D?CY4^iP^@dy(x{dwEOK;F&7 zV19!yk}U0UqQ!9DcZes&GenJ1yjzQ4tsca z5eeivUH!RE6r+m+M3X~gIo*gAsoXi8*zgdsp@clMl=oO>GXEfJydtiWzg7||pC_}i zh?it-SzEj!>&bdz5-Wm@#bg;NBgIr!0NaUaDvpSmM3PS84WdaG@g@=Fe(@GDrI&b{ zJZ6}f&8ptxVh*uoxR}fO-AFM{&X)_s0=Y;o5sTy*c}6Ui8SR%#DveZ?vjsl*q=s<*`&;?*Z&t+rBI zCw|es(!LRUSYQ58?A3nOc8f#Aqd1X5OiBpK|o47{QY9T6#T6d6)-KF2fdhFeLXKCm?^@n7LK0qHR8|cII zVX~1vL4QHsq)*f*$y@Z-^w(rlV%)pZ#*-hb%mwokv`XTu!Ps$vZgLqaZO%5Zrosy3e-%iUXh;f;6 zxSp-&$){N_cFM784OosN?)l^d)^o4OXZ1?ml#^MhHRKedj!{?6Fv5&5$@kxkaQQmF zS=2|)G5Q*P<@fwc`V(@aG0GSvxAR2Gbh(37;h8dCt?9}Hl?BQ~W3Dkz?la~a^W_0! zp|MaNG*%d&%R|O$W3@calRN8VlJS-Cl}t9iH8#i;o@m)9(~Ql=4>H||HDcvyo^aVF z&lo=&JLOqpx3OF181Y8DbQp=oL78hDHV#Xdanv{_-8=`AEDOmmQ)LlP#GH{HBg@E= z#fIB(ORrIA6v`5#)F_ocqr#|=rPyv~bH7Lhc5^@fowr~1HuvixAPm$8d(HjEOc2jG z;n-Y5vN!b~3XSB=jO17H?F^f^U5|v`2HpjH8&h8m(kMR#_^n1}Pa842-jEEr5woX_ zn0;?#Oalu+BC`Pd!9nVkqJbGq9v4>W74<<2v%6?(w!`il^8b-owOPbJEftA}0sm?# zhJwey$=#Nz*N!0iRH|5`0eCHtP5p?BaM2pB;uC0mt|(m3r;qce6<9pq|-X zhC>^hZW#fM1YMX7co5nfIvP3#yaX0jdgW5^0r(IUnF+F(Zy955Hm1Mh(O zU;$WVp4UDHUx3wM4Ok1-fiKM>?JMv#SP#Ado4{tU1^fVh1hHnJwiRpxKY^c3xAqJ8 zmHL09p6$>b(4Ej-&^=re5B7q6-~c!T;DdGyB!Ogb5~P7s;55iL+i8D7uYhZ25%%5? zYj23HH`H%53-z18&7cXm6*L9SO}BoJnV`c5{a$b%=m z&{9yw{vUkyC!bx0UV)nYtGfgms0%_s7--0o^^HI{xRv7wv%AsMJa5>b&7hIc=Fr=q zEugnU?||M3y$jkB+6vkl+6LMddN;Hkv_145Xb0%M(EFgBxJMUoKX?E{gC3wK=neXT z0bn2)4A6N4oj0BUBfwMO888Zr0prX%yZ~MT6Tu|#Dt(#?rh}Q-+)CPjJ{n(e z-8!(IbH0b7bF2_GH1=`c0dUMrFj7IGnZRhSvzaZrnt9@W{>|nAet9*OW4oCxZ{~Tp zF3{efNQ4mMLWpM}+DbDEpOTGF$;PK->o)$^G?KF0z&#>F=N$cBa3AOhI)Tn$0C*G( z1n+Y0DzF;trH(Y}I0a6Fvy>H@dHO}ZPcRuw0n@-tGuv1QjfW=ko&WvdAm7D3#8 zMj#wC2Dg9+u+8-Hoe{4w9_;1%0c2%i`0y~YuZGNx)yF@&@sDo&qZ|L|#y7f|=W2jI zbmI@*_(0|V-1t8?KF^KMQ-02kpL65m-1s*){>_blbIbW6j7%m>E&_|e5)p=fa^s)e z_$N31$&G(<<6GSL7B{}djc;+|Tio~-H@?MUp(-|17AGw#RFeF@WlgPJn+Q>Up(-|17AGw z#RFeF@WlgPJn+Q>Up(-|17AGw#RFeF@Wlf!_^}&M3QV+D{RX@SLcpz{6X*i4MtI?Y z7yK77=n44GWq9F%7an-wffpWl;ei((c;R9GW~iA<#LGp};Y6BTB26xlCYMN)OQgxw z{sdRRH8U6QoQqe^#rx*sF>~>jxp=2syi+dTDHrdQi+9S!JLTe?a`8yHc$HkGrRIE5 z-<&TOf~DXC@F8W&4m{X_2Rra!2OjLegB^IV0}poK!45pwfd@PAU`WZy`se(Y+Hd2;6CsU_!z{1 zpTK@>G>z5-gPTATa4TpEnt>kRMOxJx^Z|Xr!(bs;20jAI0d;DhfZZStB!EPa0_cI3 z4(#9$a2Z^s2W`MoumZptoon=B;G^|*Ks^u&9s&KqqhJsi0)~Od!EgX~jimnCXGxfkBE~-wv5$W-#kQu4@9^2ko|$V~Fc zO7e(aX+*CyqE{M`D~&86k1=|f*#{f$Lr;_FVG=z|5{Iy-dS()K-3PnwgI)K*uKUo# zBzl-c50mI&5iQXmAyCiy-M6Z(QQ4+mKqV-9%I*C>%(c&apoJ5P0XmJuP zPNKz0v^a?tC(+_0TAW0SlW1`gElgtUu%CFo1D~FWPtU}sXX4W{#bBP!9|DG&b}HA3 z^MW|W`Nzo@lFW2*!aOHDobLmrpbV6Q3h+DU{{g)Wu7FB&FUu=?i6@!T0u3h`H8vf@ zmP}$xrffx7M-Tvvi*Z91)%rLJ^LHk-vr&y=Lh)wAjgNG@EsrRARcDweA_}l2~s)E01oz@l)Ios z9DCR=1!e4;W+w46)6hV$x!0%->Y8?9XQmMbZD>01>kcCv+`?zKQr-!40r!IkKs4w9 zdV=1dAJ+{41HoW`UJ>!^L_9mOHj`MJNvzEz`q_!MndIYHzX|+8`EOt!=N&*l-y-5=5b-k5b|2dAL)(35yASR5 zq1`2DcP84MiFW(YZXeoRf_D4R?o71WgRO+3(S>NV4~_Pr(I?R85;WR{#`@4sA6l7- zR{GFNA6n=`>wIXP53TbNRWpdH8AR0#qG|?FH3Lobp@}{;(T67b&_o{^SAxcspm8N= zTnQSNiNaMm&WFbN&^R9&=R@OsXjKVXRf1NP zpj9PkRS8;Ef>vdsRX#MT1Z~Phn@Z565;Vz&_W01AOti;`)?}hJnff_1gD9Utl+QqW zd}vN4n!|Jbpp1Q!-@KPV10kRxQfLIi!L1y30$srU-~kW~dVrpwHy8n)0?&XkV4PWk z7L=d`C1^njT2O)(l%NGAXh9}gkck##B7Gl{FG2D?B=1AwnMgd7`OGk8U+aU1kWgRn zFz5#!1D}AEU>8u5Jq$epem7l6(uEXVNYRB9T}aV|6kSNsB^Qdiaw+%#d?@N7K^GEq zAwd@sbRj_(l5!y_7m{)zDHoD*At@J=fl5!y_7m{)zDHoD*At@KqaKU{S+;_ow z7hHD1VHX^B!Ce>Jb-`U1+;zcG7aVoLQ5PI_!BH0+b-_^=9Cg7_7aVoLQ5PI_!BH2S za=|4RTyl|N9z~an853RNUnnaXy>%rspNO7IN)p%}B}>jHT)_ zmZ~e$L_KK-XBa7;C09L1i?e7snXfD|^Ek= zJ)_1BW<0X{uVXXjPly49#DGF#Kp`=Jxgt@AZ$s2UuK%lX8$P~Jy8^DMxgJr6xt@6D zdg7VuiP!G~9YH718FXPh+!OQyy+I%F5a`b@L=NEdN5Mcah_b<82p9^U1W$pd!82eY zcm+%XQ_Tu}8ki1dfY+EEm`i>0fErUWhoOH!O=(*6{0~pMf!F8T&QIopqTPQDe_AXhWV{Y6QZ;|IJvmAJ+^31HoW`o)Iq! zi5G?F^k3uDQ5>tW>Z{Z{6-)cm>F**GnbIUuezkNe;(=ph3uD7 zUJfdl;rJ7JnUROGf?TpA_$fvLFTgJ3z33IPk(BATgF8V>a1>nPS_2&6T%LSlbTtxq z$@uOCy#U8tb&;zsa@9qyy2w=*x#}WUU1X)_NweI4_4b5^qb2*;598X$~CoRX5mg70g@tozf zq>L3Ht9g`oc~o>JNAF6;7DY=`u1-cz3rmQVPFm*_seEn++)13L=MJK+lk>ftbICk{ zZ#gMznfc5Rr4t{W(q>*Dw^zL>Va6yGzq6k_za0LQFng3LA0o4R7{CGeRU*f7-8ig$ zJl^+Zb38uk2(k1ivGgdh^eD0PD6#aYrp5t3GkW=jQA!B;d>E(?)OesdWok^I#sh(| zK)J5Q0^d^p3zFN*d5Li72**c>fsBfDH9p9Io->aU_l^?xjxt-74mX|tF+&-&!q3$b z#th}iu*7J9^cyn5xe?k3dJ{ApdNWyw8Y8^Qz8WV?g{rZ_bm&aR8?W=Z8aKqVpJ=8d z2`95&=}5!LQ&v{|aUIavT#Y0SAqgLn*hHS5N}irdj-E>H%}O4hr<)Z>V>Qz7i7fWd zw2YWYYlU-oAva}d%R%4ht-82NW9`L`Oy`H}mm61QvrOtOu+#H<6R4k}s!{FQ<|(r;;zHBH7hQb~Tb+jbt|=)lEos z6H?v82+xO9H<2f&BGp2qx*DnS{YQ=uf#cvLILkTbm`l$D*}y@W3ly4%knAR;>O-PF z^50bQ-&CYph(rsKW+9TyC+|%~nwya1CZxCt39d$h`Q)RiNO2Q6X)5_=D*0zB5?zf% z4qZ!BT40tN|0tU(p-Zy6Od*y(o9C0 z%10MgumG?kB4Hmdw=2~tf)s>w*zgH%08)#JC% zTPT~%?+#4?)4)t~jo&WcqI@C8G0n)n4=WS{#Y z2?vsJAc;665r-t=@RTKR-GOH;f$MQ_+yTcOc*YX!#{tJ3c*hbvV+ovgz-b2_v4r@d zIO~A34m@B9-me7DSAwlL@OmY9yb@zNm}$mgCl0vjfSV4u>42MYc)Sw4T?tPncgE*+ zB|{C^h6~Qx;jEg8uwxsgaMTV*op97yWgA{>!wq+xaMzA)l)_;<9Ja$@I~=ydVLKd7 zfx~t=bdog3Fn>IfD0RNVFNB~ zz*S`fE~H_{2E0haS!Dxigm1?NN|A^iiP*6L7t*jJ4Lf@8LhoHwdS6L9ZA`dlpRSq(R&wq@8SvD7L2g& zfb*?D2XG(gY~~=n9K2e#c!%SUK@8Z&xj#XFhNkj4>l!?D5{49WctWuuPbY>|dAJ-= z%=*hkj{h`sc)~o4`A;{`n}o@mpf^+21WFz$n}TMb3uQf^y`d_5=nGXD#3RrF&_P@~ z7!1cg#$q$$&GYhEj$h=OmpOg~Z#IeJ$*k9~7NYe5eE|~IW>Yo?%mwqnJAic_jddPv zA)hY;AA#k7zB141M%vlhuYA58>;$_hivtND5u^atU$t~#2Y-Oe;3~Ovh?#>%}^sYlWc+IeIZ=K5&t; zKPbD*uann7y7fRPP?}s(QnaJopIdfeU*(j&p(-0ux#U=+JRStH z4 zYvp4b%5&vo8*bu79<~vJZG_5apkujiJb0GBq1Ztvb`Xjk zgklGwaM6jrhobMH=zHityqe0qo#<~UTy>(mp>Wozf6f?mHI#8R`WqVXZj_y+ESKX# z=taPo4809SZ$k~8@mT}LayNpTfXc;q?gZTpMR!Bd-B5Hl6x|I)cSF(LP;@sG-3>)| zL($z(bT*qRV{ig=F%jc=Dxq@}+q4 zrFinCc(}O*4z5Kf*P@ea(a9}va0}eq0_V2CwJlXS(OS5*h1@5e+$WygCmyaHfoogP z$C|l~lOAuO$6M&}7J9sv9y{sn7J9lCy*xrskMMn$&dkwAF;;kh)r(a2)7iH}&-zzo z^0BmhdR!nblEWLI1A5ej(OgexZ|EQ><8`bpA1lkJmw8xOzMRb52P-1<>H@vGK(8*) zt2}z8R%q1fOdgh&PtWq`Spm9m0ZYrLcWQMe4=c;Z%JS(|0ajLkl@-vVJbIKzkMiiz z1$vW5Z!YlEeP>!5$r%T9lREAkXo>M}eQ$n7jGRhJ% z$rAFG67m)wc}od-i^?EN$XQCr&wb?PYQ$Ay)CRYJw?GUaVSCC&< z(2H_fUQUbE+I0o3te_QYO!;qX*cIfz738=T%v=!vC738uNSW(S2>(>3tg3$ML+>|(riG5q$zZ!i4z!f!9VEQZ%!cUIw?^J1vH- zJ#}paYHj5pRIRV5wH39FQoV*!bN!?)GX`o6B@B8i^nY4A>Bo5kz(6nawYH+xOxCeqy=KCbjLd=-F$-G63}_MG5VA6Z$*<80R%VcL0_!IUte+(Ce0n|R z{u9(wFi1L~#@v5`Sjq7&pyvJ=p&IN$Av=X9I*i9XEq-UVK?jC;TB@gL)EWR! zsh|xB(#9NrB=kWrn9oN;$AEF1GXcEB{$$GMvj(sLECP$c67c_eZGh}gV?K#zPJJ2~ zpoSEA=G3RH179*f^%eLUtOwtKe|r+BdfnhRuGs;w2DCB(txVANf_>lsI0WF6#xsMg z4JEKPl)&0hf|dqOfzzPoQ$_#(tsx|!;ki|72)R6S>O<2L(DYn1J)vqHAwmCZ9iblU z2=!P;sHb1>TR}qAT0#PAT?x8cOZb!WE5PI#N(nTeo}dbWs;8*_zNV01G)1GEf##qE zxC7h;T7fp;ZqObukI6Hn%AyjCF5rIf0Eh-XKu^#c{C7`jjo|aAz%xKSu{8!-a}5IB z!NL--uv{!Gf%Ue8|MfaVs6U>l(J(QR*x@5y`1q!2Bmc;_D|uyKjvry&S&eWfvd<_M z|L()L`}hXQLwNMQ;9<}Y5JB+HUToEit$MLhFE*;8mKsllaF+|%sESe-h)&zN+Xd{^ z%iTh-Q7`tXqSH=nR7Iu>-1#hb4#8Hv*s2#BRgvietq8$Ryx55sJMm&CUhKq+{(I4X zFZ%CA|GntH7yb95|6cUpi~f7je=qv)MgP6%zZd=Y;zhmalox&S;yJx|PA{I*i@tc# z5idI8MMu2ohl*|&@S0v^>_x_2Wb8%8US#Y=#$IIXMaEt{qZc`Pk)szGs%Urtxp|S9 z7nynet1$^=8hA8t$(#dMyng=IGS881;IZI)SCen-((6Y6|J@}gkc~{_KMH=vYJWkS zn}cta6#$+HCfh*UK^a=n5Hteefag}pG7`u#638+VXpNUlBY{jKK{T&g7xK}Xa$3Xq zkBmrVcI1V$2>I|dTx0I6vNe^R4d!^H(gvPrtGQP6*ZPoJ+5hMIP#_EYAJ&Kb8G@Y* z!A_Q?o(r{;A=t?f>|_Xb{T#>y*+hUF$wqT%XAaz(0rwJVYZ|%QSvYr&w&uXS2-=$i z2NV5S&Pevh(e4T4ZxhYO$rf|S4s*y3bKp=STuCGXT{6d0n_8(jd%ZSQQ(smZRIXH` z2Chows#H;nt6t=agMYi?A7}gfcACBsWxxWk2rLFm%+vJkG<`cw-%hha_7G3R_5}}v zeqg9M8T*P6PnhB2DPrI!?5_m7z+rF%{BFizPcg*4$=Fj2_7sCH#b7@%*iQ`h6C?MU z;n+?LwiAQx#9%uy*iH;FW-?jMWU`#eWI2<`awcO>G1yZK_7sCX#b8e{*i#Jl6oWm* zU{5jFQw;VLgFVGyPchh24Dn>Lb_HBBC+ik7Tn_@ZKpjvItTAKo>66J?CS!Lo`0~lv zUJSMuqbKpX6Y2q_z%*m9zZmQ<1|K~c8;rq6PsRpgu)!E?FvhqaJOH9W56~0z2K_j1 z02l}c19(X0GMUU}GWHpRea2v)G5FcZ*k}y)8G~P)jE%-%qcKJtylx=z6!H`qs+}>* z88oLH{J~SJVW2)9q#@aTe>}x&&^ctUbJ?GVeWif&zyVk%FjQWyYRjj#Qfe!rwgPG^ zptb^PE1~Go9y+ig_yK27&gIJ-I{@HJzYsXYta7jKD9Uk6pnd zSW|!OZUAdL!YANb~XeNjZ+#mr@t zV5irZ1(n!N5Y~4KbKY&uEZL6ijM-e-9Xvuk19)a>l(|Q~z_~BeHuY4v8XqLES8P7d zb!zP3H1|=iR-V#n;R$9wT>qH)SV!wl@*Ty;%~|3pRw^e}mWsD3`IouMO=6)rQYbnGwu-5vxc}5I}s_zg?gwt;^D>Tc$Y0!!Sn6t#tt|d(3ivLNCTvB06rXr2PyPzE>f64-xkofXOUwTeY+^f zvOYJSwey$F@9EQFX=g1j9~}+m%0QM;3mdQzN4i4CK_`HT=#WlNz1;u*w0GWdR#n#? z-|Y@F!@v|k2Ba57L_oj_7En>C3W6eFR0JCxj4_soM)YG|VhMRcOd>{+DGVy2fQX8M zbi^)-QUxh0AR&S}=Y7{c_uK+Ag1-Fs-aenR@4CB}wb$8a?|pu22XS^ISHqJ;bBVW! z7T!&qJ;dP~LHL6cMexYOaDF~BcvclD-9Xx6E+t$Z%%=A~BHlbox}CVQ;G%blzm)h> zDY0<%7SdTs-YZFK1ug##?XiuLZlyiGr2hxv^I#tF)3owheAnW;mbQ_%K{?^I1df)|UA*N{jy*nJE@L8xcsq$#J>F-b zB+8(DzMw6H%eUaOixlPE{wv~5fU8+;SG+UPA3JD`^>FhB`fLLdjI{yf=nuLrt(VSQG4Hv|$LbI`}4dfZ2%{K{HX*M+G4F1#1I2 zIUwbs^Z}S_*vn`W`Tb1nbR+R1Lkq@DP?Rh&@e=Nl|Iz;jAj2KWgzXW?4AmRPJUCVr z$Ev(6QLCoLORZhfJ<2EPa%3uO`7m5ERrn&c{q`O?9a{6-ibBDaM>Ju~Fvrw<4~Ym? zUu1#-NXwrz>AaTO>pvMS;TddYrCbH9y@^w>ji=dBn_v(zKrakUz-oN(G4|TvreI;f zcUj1?e7=V$4OkbT->b#LZ5QsAwg~EQf8+W5hPdC4xUWjaAM{#6HI43 zPY>Esst1BAf_Xfj6>>W-cs7{LI7^HR#u=?1>1Z|Ue3V<@Wf9V zkxz1i*~Ocg;_3GjhLwe1V8ZtNIs8~zCUN<+PW*YQdC6Kq*u11$&^Jk^Qt=TiyxYr5 zl=xWXY3&X3HN{Evgb7BK4-cj%{)S<|(>z*}Dzz$)6LK3oS%cj72KNPD2JOqY%fHab z2r1uy-&4UH=FX98yNHrsku%KDgo~zOKft#RDJFP2`G@a#j%eb2SHXy^JZi-~9daU1 z)~|T(t`{!F2-mHsETv#f=bI!PlWK+Nwgp}Z2WDBSMkazy6jti)$ z6`SCM$enkXO3lxg-jyb$0#I2GH^FU{tZoxB$FYD(bd9m?%W#JO~?rfLxQ zi_JXh(D5F1s0DaKvq?!XhE4)uXdyU6f~44nGb|tQj{gx?JI=6t0tUi5&aiY)8+f-l z4ecbm$dkQkz61U@*SX*f{lNP|Ioc<>hz=5UzDFAB>XC*n^hiS&X~7uk?lFdXd5ob; zJ;qQUk1^EOV+?^X1jY~uLtqS{I|PiOD?G-~05FCg1dH@fe6useV+;-T=t9Fhy3q9= zUFb%SE;QVu3ytvTLZdyp&=`*{G}faFjq~V2w|I1+TR|6^rhelQg`NOWXpx%ck%M0H z$U(1rx=knrZ_Gc*m%Xpx_m%O(5abRhvP>tEaYrh}S@U;W36d zUuavZZGtO=Mi_8~z##%xNCh5O$aq{KYXw&*)8h(N^|(Sg9#^Qq;|ewLxI#@mu23_N zE7aWM3LPhUwsZ@RDAdj)3Y`L?&`RCWV+nQfSVHG}ETIcLmQYuZCDhGh30>l`gf0b3 z=zHDQqX_-VqX=E&QG|wi6rt-qiqH)nMQD^q5t{5#gdX!KLet%~?pj^su5;IcE+mLT zB_2`eIgcpxyhjvz!6ORI_J~3+c|@T(9#LqnM-*D%5rtm$h(fP>M4^QqQD~7z6k6;N zg_e3mp=BOXXt_reddDLQz3Uc&DD)nPLMuQT5-g$5JeJVs9!qGw#}eA$v4l2yETK&v zOK7vl5@HQPkN4xVjvt?O{P=9_$7f^4XLH8taa{Gl{5qbecMC4fSUUlk)|xAuQPzf- zZMg~=U!ZX^zB;giD7a$PITdmSVb0{L4+2p~P$xTa6@Wx^7Vns6bLBJUFQ5cnxvDVw zF9e}d#($b-@l5prTHwn&P)UQ&QL#8t&h ziiSvva@7!N5wPPT@}i-a7Y)6San*FH@=_P0qvjd~nNZdO4zzBZG)Fn3Hk^`YLeCYI@wVI(j1C z1UB~QWp(s}NSVf7$~5*;rm2@Q)sQk9R5QI%Zv;wzCrB^3dY9hCS}otJK?|x`121

=cWQXKBM7UvgRm;7X4R29_bCJV=0sHk1kMLl3=Lb8@coOKtg=BndyMZA zrD0L3jUczTD_>Uz~y|2bmo{jgq+LiJ!9sXdC)I&iqDw& zWXu(daVcs-vLJNYLMh?D3sg{@}H zWFZ>9_7ZZR*@rD!z8pBA-;w(PbAUP?G@!+z@9TT$AIuNXKbjw*1(mIqm#VeARITNu zs$hxot)Q2x)xA{B_EI(5OVw;IRkOWR&Gu3?+e_7Bk*ZDj8m_5rsHZ3f-kHdp!f zILirIL3D#|VL3@FxNgubk-~XM;kN93pKMQ7O>H|Qa;}%ieBp;g&J~G_?@&8bHL%0% zjjEZ*Wn92}Bm6`=Q5kSe?^iK!O&=a@>&PmJybd{kgOQbyNVnB~WK@jM1)ClxA=rUVIYBSLy z)5OlQvsAXAqmt%}oZf5>Mk-tcPU;-;oonY3W}cl#_ysn^{(X%cU$=0JT?isob+A+4 zAjdb+%aUOi*+nXor^Q?3vcxV?RqRr`RMiHHZW*~Rx647WT4CW9yV9;yb$Oz&j|cYZ zd+Jzuu3&>vhrQOWrTm}pm136tl(PkOc*d;9-e@;cqfMMBHFmSzOpaUZ7Rm;W9ck{c zJ5+u2ne8MNXm*rvkKIG=dqG{xvEZ2C{x43T7TEoEKPCB&lc>fXum?!zASY6d{oZ~L zU2e-sGq8cmtvC~F+)3^v=+>N#HE70c1KpN0vc{e4 zPKIvh+CjH>?V&rk4$!B#Q=m^pV@}MS=1!xIr@Pak&v0izpXtto?&vx~cXFMe&vIu$ zpN;mMm^;Uv1AVSL7rL|S4BZ8dIWc#hI}iGNcRut54&;8G>)mLp?yftn)Wh|F?&*3$ z_j0|Ud!sYQqRa9U=u6R+V_hHD2fDB03FR(xmqGV){h<51{?M1Z%b~#<#AcSDvSpTl zJsL#495;qD8(D5F$a*<$9N&*-x$z+E<+xk;jxtL@?jGDhDC86}2!+I&>?SMc9^?G5aZ?=gZuhu*oO(Thjv9^D&8d_D%tG{-KjWTJ z_1ttf9UdrhMfieWh+XE&NMWX%Nt&P-VuNC+3f+tDMcn7OIoNaETtd!s^FRT7*}Y5( zpc|4V=!TSbp<77p-T)u4zI&4sCs}S0IDz%uVz(IjE%z2$yum(H`EHq8#wn5IZaJx~ z0NpEB<}UJOEGS>OGIvo8WbUGx%G?DS97No~K_m<~h`b4CYWS~|Ro&$JZe5DBmdl%?MP$y8$a6%<02BHJ-RdrWzsA*Eb4% z97X)l)Qf^v`WuFjc#?Y*PlBiBRB7~thlEZqOTsISFrN29JI&)i{6~5_GP0hMypp^h z`3o;aS2mJMt{mQ4Qm;^Eh2u7iC-N$~V#q7GvbZvc7u~|6sdp&zL@uP?sbP|Qoh)CH zYMLYup`x)SvOq>~bf*Smwv2R6zhy*5cQ$pX=tiFvErRwKq{zoacze4_x@{r$V;2y7AYl0Z0mVS{z)t`BB4Xs9Lhq8Av-$qJc#&D!bQ9m%HPl>8^F5$c&?W3L&aX5es*ddb_bczfyak++OcYle>+GF*M=?RDPXg!5SSgz#uP;WD1^gDWuep|2BtMp2}LNC|L^io#f z+L@DCjccK|>M!&by;*N!{ceL^uRmu^Z=L=W9R+Jy-W&K^rhZz#+h5p zc=KyB*4%3Ppm%8}D}7(-uk|;2x89@oqJwE48kqL$f9vn`0ew(^k0z!cbvX^JUAZyn zVsa*CGSJ49i7uvWQ`K}d)mR(MHF@qk^fJ{jHBBuvGu1YQrj9w*)H4lCeOXUpHL0C# zZ#&pi?5XxNd%8Wto@qPUPWCK&wmrw5YdhO6tTLT%FR)$hh4vzQvF&EN+a9br^|HO~ zCH7L=$M$9Ish{m{FSl3N0rpBe&Sy~*Be zhqF30(vGsD?HD`OjEfj|q;v zd9HM;+-lxE*SL3h_k7R2?>=xJx{r7RUF$w^pSpFtg?{eVyA5um+vGO8E$$1q)os%O z@1@&$E8XdKxv$*U?i;t8x6{37h}y^d>He6FxmYZg;r{IoxP$HoQ`i0IzBf6hAXYUd zPvQU9%JkU(L9I;5k-tvuG-H0r7&q6Makj0Daoa|34oA6gu8j1Md(j~AQ8?n=I>!8N z;o$hlKPdbfjd&d(QiX5#!m$;O{8UL%p%kc%1o-tY9{2bBoRR;(9`}cj`i~jkGRniz z9m;?mel+iqag03NpE~Ac#HWvIQJq=B z)t8;De(Ymi&e`1o>}3sPA8RoCSNEYq@P0H1KB)en{-_>SkE%&(zIufnt5?-)>UH+4 z-avoOBDI(kuS?WYwTu(5E7VH03OzbI&;+=P^TuDJL1(wx!7M#ZbBDQ$U7W|w-^}05 zKg<(mD!V!VG*6kQ%{23jnQn?qF?%|tW`-#* zOJZ%zRoZN9BxYuVbijy=}aw+(G$c0P_{f1{;sWn0^S*eBRSc+x(_9>O$s z5T@HATg)Cpshz=k|026sG|jNWzl@dr6|Cs5va9Xec8z_9b^Z74hxTJu@V{XV{##bj zGhKDo#_wX)^EHlPe$vn3+m@%|eUFfy3^pnhwWe%a~Eg9SLhN0=}r2B7D+&uk|lZzyAixdvT{*P0>b zYOlF4LwM3`qy^RxQ{D-@=D>`0XoecAo>nu_<+oh@psTZ&*$sV$snJLKD-; z^g`#}-;m%N%wBe#TJyB;##448`#w|9TesS7aM`TGcXc4-;dqiSiM;5*y*t@ zu^zGhvAbg>vG-%;87*j0G?XxtLMM%CW$va9#j@w1%0T=us>n6ME(P(!s1nE8Hnr2N zLq7vmCKS7a#NY-elvQk_UuH#H{L<5XKti#1AnD$ZUBuo2>9T7e={}A~^OUaHLf6}!khgk8c6H;-9y16BuG zvLAmc>+}}aV)KZ^VpoIkhOZzfYY*&F^JnZ5_6DLBod;D6A7qoxF{+*^m;W%bwCH^3 zGWVnp8!x?;_t;{a?fn;sKev>=x_5cayBu1kh4C`|x5Q;XM9L)X&FKm3QcjXcnV!Oq zdSelE8T$!R!zkwu_*cwc0zT}+5j(Awghx1s;eFSNFZ(Of)8nz>4_`((*-*?rgp@j+ zPlOYS+3k{&O~Ec=w@X?}`n1G}OUQrIp+f$Xx<~w1>gz854oz3;RLriGr29|oB6h8$ zR2{KP+~2UnbbZTszLWO!Irwp%;2QTV?#1RypVRX`OvFz+yw5K0^MdyYYr9e0*~5|a zQu%4G55LccpCi6*GB#Lw*d>Rwi}Xh^yJAv)YDxKfVwW1>?h-c@J1qapP^nxL$bYMS z9x_tP*nyI;QD4Tqe^u}Qs`zsY7v*}F*S$-64@sSi-4O9HGM=O46>=~&c-4(bLyQ{Iw+?CixZV+~_%djxf`&H+)db}Za8*&n%Cn}>_%aixf`*I z+|AgfZUi>Fg~;G(P{Ql^oR~R*=f{bhz>9Grr~~rtRL=W=E5#Wfw16=SI)+(LPxeK6 zGxw1beFKqGGUsWjCUCV<_i~-Y{AVKPibRWY8)iU%M2<~XkAn-ehU*maj6b8`5WmKZ z7FJm`3|-}1VFtQSGhqfXcJ)bb_D?=@Wl9D(rye*XE zbh-KqRHAlTbUkZYEY)q4cN5*w$#CdV=0bmSq7CYCZl;xJM^3n8u+!Nt(3y;FP| za7yO_PWN;*7nzIA_2ve1qq)i4Y=)Z=gv#N}R}1>IJuM&3WxI0@OJ=Ugv^h~=Mw(GZ z%4X^1?&hWx-_~fGyV6``t}y+~<)*(GXa<% zQJG<880T(Ao6+n)|ItmN9LfAh(M>X=asQKh$UW>HF~i)W?$4yvi`2T4@=#UR^d-%1 zq-f$P_A^)UR7*>RvJ6fs*#Js)CES^+BUv;g*CdwAO-L^)F?mp4N|{m$DFY=<%fUV3 z9!-X!oPYLfRfX`xu|CcEtZmjJmT+9SYgZ2!O-{Y(vA)zIlXkm`Q&K~zRgFaIaIc=g zKlJVqGvo!Ccgieuxc@IZ2CRJQNqQ3Ai}eyxZD^X)!pRbLVkLEneoHULr;%yQoUW;9 jMwn!Xy7a=?>bK~2A8*bv=bFx@i#gAnPs-9J^wj?V$Lg${ literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import b/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import new file mode 100644 index 0000000..694a2ae --- /dev/null +++ b/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cc4xli25271fd" +path="res://.godot/imported/Roboto-Bold.ttf-a0c3395776dbc11ee676c5f1ea9c0579.fontdata" + +[deps] + +source_file="res://addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf" +dest_files=["res://.godot/imported/Roboto-Bold.ttf-a0c3395776dbc11ee676c5f1ea9c0579.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf b/addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b390ff950e6539bdfd4d84265fdb01e0c35f291 GIT binary patch literal 173516 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import b/addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import new file mode 100644 index 0000000..16d8db1 --- /dev/null +++ b/addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://vrrmdx83skor" +path="res://.godot/imported/Roboto-Regular.ttf-d9ce0640effe9e93230b445b37d8e692.fontdata" + +[deps] + +source_file="res://addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf" +dest_files=["res://.godot/imported/Roboto-Regular.ttf-d9ce0640effe9e93230b445b37d8e692.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/dialogic/Example Assets/already_read_indicator.gd b/addons/dialogic/Example Assets/already_read_indicator.gd new file mode 100644 index 0000000..926aa4c --- /dev/null +++ b/addons/dialogic/Example Assets/already_read_indicator.gd @@ -0,0 +1,12 @@ +extends Control + +func _ready(): + if Dialogic.has_subsystem('History'): + Dialogic.History.already_read_event_reached.connect(_on_already_read_event) + Dialogic.History.not_read_event_reached.connect(_on_not_read_event) + +func _on_already_read_event() -> void: + show() + +func _on_not_read_event() -> void: + hide() diff --git a/addons/dialogic/Example Assets/backgrounds/BubbleEnd.png b/addons/dialogic/Example Assets/backgrounds/BubbleEnd.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ff16161436f2bdeb104073c0143d26f7fcb017 GIT binary patch literal 1619 zcmV-Z2CVssP)EX>4Tx04R}tkvmAkP!xv$rbk+gL!Qw&2_3_#Ib|~k`N)IhB7L!5T#us#YBqEV;=rN$DbsZOs+B* zITlcb3d!+<|H1FsnuW;;Hz^ncx?gPjV+0870?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wT zj20<--Q(Roopby5PHTQYwkmSM*jm`400006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<_8!JG7!^SCK&(#02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00b*ZL_t(|+U=ZAh*eb_$3I`01f7V=nnhH!liW!3hm0tR z(wHnFEYOn57TTtE5iMG^Y8L}S3qi05G0U=|KrjRwr!+^3##|VQlTI_0O*2zHb-pd; z6a$Upd+(li-@W&pFU;n>d+#~t`?KQIi8 z0Areclmbebq3sR8R^YPaV`fbNeZUq;r!IA{F7}1( z)xi6}qU32)ngX@}uS*)O_ax2trR~RnoxpN&`E5AY4plYIZ5eg`&5+7aVobv+v-{hU(Q zoH_*D5(`G%5i%=v?E~&j901q>Y?L$=^P+Xno+LR%$$tgj%fPzWFdB-GS&^~_Sku9^ z#X3nJwyJ?v>aL=iieIYPoR%88P|7zq`4Vf!0vzt!myz&H!^=Cx|u zZXhEChcO=NjIWD+*Te!cR^TyChRFD;3^_FxkXk{T4&AXC%Ev1r#G?EpPK|>ZzEo15_bpt!QIpJY6Li zu_ENoHdWy3CGDbO%DTy65ikmL=h){zfX5|$Mg^5MLLSH&#!tXQk_M@$vOYr|$+544 zz#UbFk#)Me!1ih9qwTi4lk4*XS(yWfzie+xZr2B7XNzGRw|!f3x;_{;+CJAJ5Yx8b zw0(IedfV(Q>v`fWOwQI1%&bX$o^Jd4qodpQSPPyNui0Ll9Bv%QtC3;swS9APwmBF* zw#OrZ7_hx6xta|~Ujz_GZ9f`*J0&RtjODg#89?l_-J3wffzf6Aa1#)wY;UuDdvY-@ zkXIT6am4luwy#R=#fPz?&Q$eXn7S@YuC)%vwYE=Q1i*yt4{UF?eN%F)#g%&a=hJTB zhVaoT;LGrL5I895?_^6vD$ow^W{m7Dkw`ionq6gi;C!j8c)uWLaMnI@?l838-5|0^uPJ z7;%Wpph5t%bpyfzz7|=Ez#?o$7KBYZ5Vl}I1;)TcXm`J_W*7th;h($7{qFDn&iS41 z-1B|+@MF1LJ8OW{C^j#J7nWuV04y{+NMJ{R*vLqpj)=BE)XBw)JQ6Y~lo~ZZnoUnj z|A21&7gz%g%@A-Eit|(nhq%d@_vT||3<#KIGysdWxzCoYy(BYF3_zeGk8rU{twC6T zaA<)>h2e7uQ^nar3Br1WcdAi>2#;gD$b#oFoP}fjP*im?KN6jdig5nUWuoZ@(GUv>zymsnARlBP2Mq+E zRf(89;3GSG3%v`j=OL8{sbnBV3J&Ce0))68uy25T(AcPLo^*E*P7&eE3ug0rGl11yfIj7hK1T--_7CD~HaKPzfMW?jPyYrdst4#T1E5W)glZxF z9xL=DN~Hix?Ev=a0M54nY>!y#hHRJ}TJ8WOqgus}05qHj@XbQ8GqyN4843QY+e>|( z)h{BR7qbV62#zc>g~Co^#*Ub3N<)~_lg620&hkm(_uq2o_^UGu2VE9CO@@Jt3SL;_F=;VXiFC&`}hURPS%`v+QEntd8(trp&}ktwGNgm$F@ zN?=^y#ps!&-zy4VC$Ck$oBKBLf@f{C(q}T6vE=u#|C()yHp=}{{V87cP)o1Vf zsByTFS#i#$AW@q5VgQ2zUTc*%&((TlTvq>ivp(<@mk?Poz`t-vWd;BM literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import b/addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import new file mode 100644 index 0000000..3f5f239 --- /dev/null +++ b/addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dch8fuekijffp" +path="res://.godot/imported/rpg_box.webp-6ea0804b52e01599dbc94ffacc31d433.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/backgrounds/rpg_box.webp" +dest_files=["res://.godot/imported/rpg_box.webp-6ea0804b52e01599dbc94ffacc31d433.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/default_event.gd b/addons/dialogic/Example Assets/default_event.gd new file mode 100644 index 0000000..8bbebc3 --- /dev/null +++ b/addons/dialogic/Example Assets/default_event.gd @@ -0,0 +1,48 @@ +@tool +extends DialogicEvent + + +# DEFINE ALL PROPERTIES OF THE EVENT +# var MySetting :String = "" + +func _execute() -> void: + # I have no idea how this event works + finish() + + +################################################################################ +## INITIALIZE +################################################################################ + +# SET ALL VALUES THAT SHOULD NEVER CHANGE HERE +func _init() -> void: + event_name = "Default" + event_color = Color("#ffffff") + event_category = "Main" + event_sorting_index = 0 + + + +################################################################################ +## SAVING/LOADING +################################################################################ +func get_shortcode() -> String: + return "default_shortcode" + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_name + #"arg_name" : "NameOfProperty", + } + +# You can alternatively overwrite these 3 functions: +# - to_text(), +# - from_text(), +# - is_valid_event() + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + pass diff --git a/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png b/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f26ed34293eca439250bbefdbcaf84bec370c10d GIT binary patch literal 2825 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 bO`84>wo1V7cBIVo00000NkvXXu0mjfC_h_G literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import b/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import new file mode 100644 index 0000000..90ac646 --- /dev/null +++ b/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgn2ci6nu85t5" +path="res://.godot/imported/next-indicator-dialogic-1.png-694f122eff55e969b54cc43e62eb4758.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png" +dest_files=["res://.godot/imported/next-indicator-dialogic-1.png-694f122eff55e969b54cc43e62eb4758.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/next-indicator/next-indicator.png b/addons/dialogic/Example Assets/next-indicator/next-indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..896d3cfc0fc6426518645409ff223c15b9f67bc4 GIT binary patch literal 4189 zcmV-j5TfsiP)e~OX<|FAqS7)90?sHiAkGYP5r(;(VeXvO_g#Bk_gVYgFN)`hJLjCe*E#I{ z>}NmkWi1Dwh8k+9p@tf2sG)`$zIb3z0&Ll`Wy7^=*B)ey-OD*&i@Vms7YAc_-Y4&cTRFF*-U6tNpNY*?E}BzEITZH4OxdywGAizPS#1!CjIjgR7;-iL3$0oNBc z;B`IP+}z9t2M61rKomqQlDZvVp2DpGu3u~|hTOb~C8a`0>X!jT?l_YBKIDnKJeE8) z2!c=G%Y`xY-0$S;xr_1{jNY?7?pS?eBi#A3pYX44{XR6Uza3J*83*7gJjUgAP3&WI zOzvZ}kJEb=bCc;em^j2~Ncb`BcxHj9G4wm(zijp=KkjDzhu+|Q2M@D_I=FOXL!#j7*cdT(uGu+?uJS<(an#kgkKtY%y_*%#cD54FyW}kavngqcM z{hlE>?J~H3f3`7Z-}JyRfB&IvY-(`O`)$1T`%txQkRyT|$0ZgP7JlVBuo#v4z|QB9 z+|~GF;f2$WGI7G3F$nJ-nmG@|D-#C-2x$s8u}|)i7XnvF(-^p)sr!WGHUu|9+kLe#5m!f(KM5rY+w2Z9`qFGqi^ z%P@c&;)pP=Z9yuSTf{4MbE9rxfqXh`Yf!&$LY(-->_=biGsKuf@g&md4^;y5~ zdNY8?*}L{ZnE3c?HreNdY{ZhkE)l1|`H*iw*K4l}w=#YS>a(y0MUv&Sa=#92D$qfM zR4pwT{B+Qf-U@DT3(2>A*Dxeh&qyEYH>@KL+x-XM@LeWde;ee1TolXDV_{}y=BRJL ziGBNFJ~^4@r&cx~kEy`K!5*tfW>zo*F@~&zTiJviut5GR(ct8Mwv8bqo~Mno-%kw; z@!_`rfDhDKgglT_9*Z6e$z;;|!?VdGbnM;F(p3xAXA#J_tw^a{twu}LJmIQVO3HnY9tl4|FWV3lSi zbo!)HDY__;5pZP_){WqnHxp!bA#Q~DPD0)U@B|jyCZg|s=gOU*VEQIZ4GhA?L$NlH zcLO{ZVrL<=19tiHKXmAxwn;@DC?*WzPa+M+IEW)tGvPN&_ ziC8Y-<|*iI`D^U&%+Js7fIN|n*ah4sa7&>b2-VKc&c5jz_~F6BFflN|>_EgcA*LX( zG6bby28L+mvn)b73l*&MVDLx%5YdXux8MHW^uQoCVqOOy&;s_JIdkSbU|!o$W9;-T zlUgSxCY}b!Kex>#cqQrgNwGxk=;-JWW(cqN2KKd|fd1nhn#hEcyDHVuewA)%^1vck z-V|NQF{4~n&4q;G?M8luW%Qr>CdAs_jM9_MvJ`E~^8XDp_Sl zpvV;Ys(Sn*shQ3WWX8cF>Ne%FN~i2}%XfaNPe5Zwj-P(v@A^PlJ+|G zAY++SduaO(u>H~MZZSI>2%LU`(^|Azi5!d_nDouFc!+bfc0cU4hUi4pND%F4L z)TtfvdJ9HA#1e?aD|BX*C6H>bUcK7t8#s>9_B7_UCeoWU$^;%$T^a9WU|9lJp38K> zVBZjk+yG%KTt>4Fv1d2`!LY8@IH+6_gj6(E0N36toxS13au zJ0QOuA0OZ28%V1CA2w*h3$@A6Dr3=Zmqnbi2%dncL#5FN<2Y zZQE9~S^-=~&j(9UwRa%FV#m}51ao_-vSF=7L=)jcO%geL!!04>N(1c&kF8#1dw3yM)_3`79x>tw^dphN=x@?jBfeK;w%#!t=;9 zjny&?>wlwYre7t|LiONe4`JZz#(+9<$Nzsme2J8?Tvc@PJ1V0Ht37&$Z9(XZX=3B~{terLN1((ghFAjj zDdsMNEd9t5#>U2CRr~LjU0``8w;uIKU%}+HwokhIbWefXGr;P15|(Xzl%Xw%)#H;; zMClrbVu@9%9alTBUmM#DKS|B-!9nY>brxx`NRZ;T4_oOMGr>+Di#!Q>mO``zdt=&y zq}J~4?hm01D3(~lJgRmC)vCRAczC!qZt&lKyTeu@w|te$Jk{zU=;?1@rb)xyj6hX( z;HX{sb5~3;K)@z;S=0(p8e&uH)~%zK;uwUbE(NjJX7~kc&V1V5p_d{lzhtue6)6-P zRjYsmz|*n?TkWbhaTV42NqiIgoaO%w|98Y70>aRbLY+#H06>j zN=7VV0fQE)b_!2i^boLUcqLA?|CAYmQ5ys1^aViAZ^@p54pQcLy2@3xb~L7mO^p_` zDKg##C?iTqEJ3vuX+1*5X1Gu-s>)0hf}I6`n?Bj4te(DM%*t^CV+qiM71m_@lJ}yU z*tww8#HLoRTuFJYu3|DZ!w)>Z1Kda3UdWNQ^axacK^6v)H4EAj*ol^1{*w!v*uR4k zmacIqHL-Bz$`z$r@>;4OCeeTQ_{NT6)IM?WkV>IcN~IPpt9@L0DcB{jTKi?U9O?7f z*GR3grRy_LqV82Tl$=;FswJ-#3+gayIDqMm_iEn?o8hvd%`Bq0HN)V{66j`(YZ+l? zaeSvgZ>0%BEM4hf-it2^K{<$3s->bq2MCk}=+jft99Qrl3M73$YM-*f6S9KX$0vBXMoTqu8LCNlq|3r?peAKxYOzSjm0> zaM`_LNo)%qi&txJXJ_Y&PyugMC>OB=3SiV$6sncWlUlt4u|acm@5^BMs?~pW8!t-D zfjj-pJFyQDr&hede}oFE6`;JtI?ZsI*T%LL-`V$)P;InONSNB6GrizL1-fvfRgRq* zn%JjLpWX!(@>Yd%5=)p_x^$^%hN~TMZADV;J7Nk)HCn+P_H9({7^X@A`2NQbHJhLt<3iaJ14D4;&|&XC zPHn-iuCDi>3MeUwmOt*|LYBM4J8oq;N&(!>&oSR$3k6{^Mgrw>-FSaD|%1goJyAgLWgLqk8mbm`JX zsBo3#Lp6w1ivlSsEv6mw^Ye44+#_hY-e8suG$V{H!N;%|>47R#Sw2*QSi(X>L&G9e z8L3vJe3&WFwD|`}(vc-gme61I$Z8E#!QpqF#z6Hdek7$*Z=&jIB~&_i*&wyvirZJf zlTSA_HLbqsrklQ9Uthn@CYc)MSX}g=mmZ-xHQbfLF_-SS=boNI|DUXKpqj)ImLMr> zar$Nzk{76zG`WC^3>;69pH%uORA|a2S5(Ui6y{NZL>dnlM662FYN(-x n8fvJah8k+9p@tf2r~&bRJ*OLZFSggttAU_$@ARjKIfjZ&))k?yzV14VggzM2n0f`p{}eCfnb8aVnLv|;F~__ z!Xxkv!%JUH5mGfuzX^W8c2v+-fIw=K39qejz|Z*Z>Ly+g2tOP83&X!u&KLY6owtgy zw}G33x1Y7AJw(a=xmSP}vw^pdowFPBV>h?wo#jix5XkkZhO)wAe~ayWoIJ|4tB#Fb zb&btk{S-=eY~{@sHtcPZZIa6NxVgCqxn4!0CWx|LZ7LaADj9Z0CRs-7x!l5;gS*7; z>1V&w(~D5q?(No=MlrFL;mI*uZe$7k|Nr@abq8RC?7xFl^p?Zt+k&#*=@u()AP@*; z5-(5Bss5EGG&D4F{T@{TdMt0>z7kajiRoa=TFe# zzWS99No%s#^{eY7qJTNyi#ba!PEJ&APEPY^=p#K!>JozRk{&@UJd#SII=g`ftijc* zDWc?E*X^qNrfWl4jnAekolhH{{j?dNH~RSWr?f-J$-kddtpP`s;7)Th^^VCLdkxC- z%kY59#hYTyS3HK*7HyT^66yZ%W;S@Ns6M2`-KuU!)%otuI=|w1GWhgsaC3wG&>c1I zbA|b>Ef|Mp>w|#9)wR>tC2)QPDu_xvOW@hAd6|BxCb7!C1xsv{y^GoB=hHoG$*^%lj=pq(sUBuwEkhAw56=Wg>x=Je+me}E2q_o^g^_m7{k4`>BW@%N|Gx{Rrlond zZjWZ}WFV<{4Zl%^&3g2iXulSz9n9diwJ@MR-zW^LY`;bQ3Ear{tBfY3b{LpAE7_jS zOiew|p68`h!RJChGT~j(XOG{v1)U|O#GWC^o-pnpUVC( zmel0!o87sVSoVu5aruB{Jf>iI|8UQ4Et5b=Ha1(;`Fdmt_RD!^N{+6#Wo2dkyBO0m zKdLPYzsZ!XKH|>4XZqQAvP`?)VOX#(>;oK&;=Zu3v({U@Rjs(KzN=7Z@NN&UWXf9tyPCy}q-yzW$Z>kFg%M;cp#Y+5<%<|7SUtF)+@qv!S`U+0EYGeoiLj@;Kyl5?Mm2 za8NCvp8;p>YJX^BvmCiTlFJlwG$LlYGt=-gZePxQG5q9kNWgSV?zT0$FJd&Jm$;Q{ znCo|2kYDM~3Zt`(()y>LoDL2S*M@FKgQ82|^SU_ldR@xTp8eab%bhKKn05b`Wmwyj z_xh!+T&x|d1L@imX3+#xP&wnZ!B_Q#+!jSz#gD(kHx)>T}6kH5t z-kZGBja*X_H`oCYVc6klwuwL5q zBB`c?$E3SOjk9xegPy9Ye$&6=R?#~wW`wBVvwYq!AV|S?rBM+R~XHBtIdz;GMaI_KQ`t@Scv)$OE?+#GDlvHBY|hh|1ilI*2Zh04o28m!lNQx!(lJ|Ir0QKx_0 zOn0*2NLDAPyq==Grlw{eNXk0TepQ+8fI}!Ft|pfz7<-#(>MDfn`}_UP&Xctysok2; z+nY12!;1t>9i2iO0bb47H|S@9k)z57`RhSmqN-}ymE7uQOCAnl?Gn_AmA&+5;xVjr zs^*aiI(=&=sF4v)K9VaY&=P!cm~(1?g#ALtrvh_VA%3V^gVXntABke~POk(kW%uHt z^&wZjThoq(4UeRDL@GkAPES8zY8kxMFH(rY)gZjX_jme}^Q7isKnOTu7~ojJvd|a9 zNXyF$_83Ux=z9s%{fFeO60F^DO3BZEF&DJgW@u=b>GSi6(R4+zijC}xD`lwe=m%YB4=JXttkSv z<~-i`+HYw0XDXXoW}IEl0_x`KqubYuZ?c!9l;JDMaiRr(bF$oE&sFrr%nu8Erd8UM=f-9kkRnC-jOKq55)y?-*!V9C z!;B_*P`M5;YA^TH)zzC$!Co{<`ffW_t0sXIIQ6vAHD9B{>-=mX>|?Xn##5QV<2ZFQ zMr#vLDzis1;LxfCpI_!#?3x|kdYG!yLrDE?J+QRabmq+4{JQp)LEh?5peW`y(kj$6 zg`F?qZDrdg33Ux(ERCfUQalpxw7?fIzV)W1RB*1QWJ;1bHU7fIInWTQ_6ovbfquwV z=B^?Gef^0h5IH93@@d3Ih~*l3xyi+Ltzi`vaI|hx7<$PqfzMgMfPYs=>%FzdV@P;j zl7Ws)1A+%bvlad3C?lbWA(f_3rNo;Y#{%bS)q?j1U(KhpJ z;%&UiOKj0+KLoEp%;to6U`PMUFnHvV5iWUJS3>y^)UgaqvZb(KMa3?xo2xT{og8m! z=f8W&4P$l+#x+(E&X-YC7R{daZ|*81K{d{~VG6spKJBF)Ihjy3g*yn%WBtHdt`~DFwfAeZu zT=T6A%SBC-Qk7bx>)aqa2S+I}ldSaENin>a2qc!?sA8qqDe9%$r{)oo2kOFMs9=LX zI?GJ>e)N;iotCT0n0$EOW3P1E^^7WIge3r_L+$)jKBTbbC4;S$DnMOJxJsKE-n9t$y#x`&YteRf!stF z)9LP<3+!f9x^k|?&lFtwi^rMV?e&rBx!n0;)Km;HT|(O8G%2(G<7$h!?Kd7TN^sJ# zb83FqSa&PDfB#-*21FhoI$p4A%kTz9Lic;AEua7V@MOp$k)GG6O5^}V&Zc^|I0{q# z^G%+FS3*tL-{M%U*+K#c->s7f+j1*}gT3J0I3C)XnuDd_o%cwCZSWXN zVNrTI=(;Sikw-x_M4QQHV)Ocvd36a?B+)Ap2FdJBQM>DIf%a>gldWH4$7{(VR6LL2 zzUGjS=q(*_c@&CT8Gn39L9-T|HIAy(+zWDW0CPZPvO=bEWl+PK;{Is^OPKkl~p0Lc5A)k(>DZbE2`du@oc>PBqdzgxDh5)}QxnL7KI+-Fzdeji)* zzWy=J^P3MS_mGncKAZDfmvP3YzxVIQdt0!yAz7pxs2k!i!Fckv`+>)Q&oyFnksRpl z7$Q?Zgx(VJH!;8E_o+JtdBRt?tdW^hr{H-d>Y>00As5^4t*MVL3?4n?Wut|CJ=ZeP zaz*rc;MD59zwu)xB1_zl%4ODhYuz350>I%SjR;MxHw59ZEFwnfb2#}A16-oJRsi#k zS`ZTtWeJGw26CB@M0Z52es!KKGuipmDCaa_a5g41je-W)j9f(Df+aYVmX^{GO25`E z?pU}pHco!dROZLon>Ch!xvQ!%y+Q*lyJnFVS@Y~j-f!;jB|bRdnl02W$FUPxq0 zFNK5robzJ)cWpH1xgMwgga(%hx?M3U!D=t$M-*5j`bU#@c_;CK-t*qY z&L}!gPEOfwq7Z3FG47c-eh2_C!iG{bH`n}?*G85hKec`+rAXC~{K%o^yvC=iG^vkq zP&w5+mX8P3)}RZ>TubL26q@0#Hls^yZ;o zqkBq0f$Q?>kG(e#t4(2ZSMWB=-jfbOG`x+++41=;T7Q4p`+C)yd78?uer5gzLzPa= zI{psaNZ4Vxrc9^MwOX0FRr-@-=H5>%@AOYuR2-b(Y{t{+>+8qFlgY6B;0PnZBcT`U zdhPr5_`s2Evam7)A@d>xkC@iZ;%b1aFuMU1S89`~#%DiyCa)HVi^enVnNGn)zK0Xw zS8ae?we#xlWS#xPt&*4g&-6k0!+V0SYlHs;lF`I0A<>)&y*Ud!`NwfsQQ1cOG!&Gb zdPiTm#L&-f3$6$hz`Kbjd(c~OR!t4cw1gOL)G3c~t9<7hU5xzLb2nC3je}0NIv~KU8R2VuBqPlRVw`Wf2PWdXQCb$*1*y8> z<($9qV-Y^;JR>6`ZQg&!i@$IEcnc2&)k}X{LqkKt)Ynlrkh+TV0aR5JrJ6+V%ol94 zMzr1ewCtD^0x|dcNxJYn%*I6`UZjJR)gVtNO*SQ;w^$EWxIQ`2 z>MJv^5mC4co607=wE!>D<-c34uCFKYn}0dh%W$Dub0wujT!NOoUs%wPo8n4&NpS2t zB#!YGfo)kk2VQCZSet0Bb>en$f^F^{@M*7K|=(f04URl-lnKsFgTE2tBT26w0HH+(_yGK&W% zzLtZFYvTgl#xe-8w$2+@hN=CXoUV2pD{z?G%vMXInY;acZ4D4^Ia}a_aA)=>W?8h{IJd4mY?aadt1jj; z#W%T#R~%=*4TmHg_u7;plJPxJiXWxo5w2LI;ReKH_p(QHhGiZj)sNOkcGQZCO&eWR zStxP#S<#D)MK4yl^47p*s?r3@$U~fET}LaAPFBMiy6w4k=+G^GfXa3II!%8?NQJ$0 zYJrWJ=~rX#)fw4`gY!}YSsXsmrOQDjX%=>K0_Xl!`u6Sd=Pb(JCjh%pO2v>eJ^DCv zmv%?oWNRt%`&YZ`mDAFTv3RZmrzx&Sc~0w?*9*5dh3`rBsVl=m3(kD#0EQs=>qa07 zSMz7pRgc7R!)&HSyimj$To^A_3fRl-OJb-vd)n*sH%p(}mmajQPNkZ!p2f5TG48m> z->xKmV=a>)q51de!k!c2dMjVQ=J6tZ@lMrXv=y@j;|JPns}92O4&OA6D2&pW;6z<6 zu{6Szj0_R~-Pz{vg{yDj7w9cEw7PlO>(lqXynxnstFTz)N75t&_e^Lc@b`S^)eB*c zD!;uBnf3&{_3OC_NPoJ!rIDpVa~Fj|on6g1Aw-}9obKn<2;44(VCvPj28onqNstVX zRDfi$wKo!jm3nGfp4lXz9Q+O$y+GZPmR5y6141ewyfsFW_8eo zP1ts4|MR|IH0^8ohUe3D_1oRTk@|X=%2be2@y@vRD&ti&oG`_wfD$~rZt>f5P2xUb ziy5vA4(!6?Z6$w(pqPbjsC3hbA-K*f-}iLb!ua5xMD7HlX63#+GaT#d>#{x8^B+o- znQrd$^u}alWTaETU^7ApuG#To(z7toQ49+OxgMk04`&Q|f^3>a)pwoc+CoA{PD+yu zqimG(ab?=Mv^f0qx{3NsTHa zBw5MV=<^KZMOzg=Pj**qDpGh%tngK?ct`Rr90SmU`et{zG2cIL@!i?(-dBicB34s80st3g z4qmcN0h$F>*V2+s_IGDTz_7wYKEkzr9RlpI9h0QE=%PLY@Ks7mho7Nd z2^xtEr|0J8YMOn~DU?0cJeQXrKd1(M%+&e8igtyO6Ur zsiM#^HZzUzUBDi^XoVCLtWn}pVI1bmh>40ej7SqV?8z3Ijr(lw`1v^A_!FyzwvO7Gap31*$1EPL5+flst?Me)xy{K9$eizpT2Y>|&^syONpa8UjcOtS)ck4QC7j}f zhJp3r8&d4qpWY;ILm4n`(Onc8==v;0Q$MYD9DA_)H%Hj^e@nmla({n>FmlGnS~EHBiuVcZzD zQ)=Z{dd8%M$@EKDRJ3U|5GH+53BO0gWrjBz0D38@EI_|ZgQh+X1V60)aiwwUr`uSk zekC)}S>_JVNnve)Lnteb)j{{;aPsMCzTdnM|24X{&mNQKX~iiS=X+0RaKZ{z!D{{v4SeW?q>(37XD3uo^GI6Tn?b1@!Mj z15t%EHbxRujP4BsoEGu$k@ym#sOvsLMAxwEBLsq6MFZ730GpWNSjoOlV5x9p1JstS z;+l73Cr0p60;cWt7j@Q6DrXFutB_*+*rwvm)mTVRL%UTc=A>}A7rlh%TW2b*R!K6K z>{+bP-EOkpba$b|W@T;FsQpW0ah|Ri3ag(x3?}y!?`qy2Pb#SwQ1@R$jgAUJ^?taTEJmcy`+n7XUIPuL<`7LqSIh2_b_fiklywo9?xpS#$}X@)F{55G3O+k$N(yFSDZ_ z#bHH94g{l`4liyHG`g*1A0iYzxd^ltzJ~0)+E=XV0Zh@tF-ZFDjv(-B4Q}645~5E( zjGT6@hc!$K;SsOibGrm+7@=C%r(<1!2dr#d2>oMR*s~G8l}@7*3W+4|jHzIZj_~Rk zN!Dq}zHmGQc3OzU%F4jyJkdnq_gn zAiibyONIK9CD|uxPW-ej6`NJi=(=>_!ykVYQC3VTfh?l>9#X&`X7UL!kg)l@7>F(k z>jaXEVZ46hIQs19x-%Q-nLYCK^z^E|3=IJ(Bkj7DGHNO9A%87n@P4O~fjNj8{mz_j03YWMN@ZY&<9sl(L_hHUJLt%W=pE9eyOwWJ) z$F*f7&lE0y{zkX;`f#YsE)6kIW!`e?T?ffhRzrdEX6!O#bfmEU~i|&gxuvR2>i$WhKPCG{iW?I zNw0tLEfj%8l%%|(`ot-RQQ_={sO|bOS{1}^SqoB1)(o1AI~#eOIm}RmEZHhTi|iPo z@Q#SNwbK@*x_B1{UkBd>t_<~8!|&Kq^enY~Z;;>FBf}|-OF%_f^7wTy_T{NsB#p3x zu^SMLNc8L~fSSYo2W(-@8x{x$r}OucUMiq;ZBo8Bz9)3%vo(cd?zl^6_wx-T&wn}o zn@Yk-a_QJN5edyXGE`^Jmna+s4Oy%M&sM5Dfq`I~f!B5N&u&fBYF4=A)!k;BzQc*7 zRq+=CB^B@dk}04sSB!MWx5j|s<+R9eNC&c7y*gsNPLl9i&mM~o#>l`qk!137WqKbp7W)Lr9qK53HgdcGkEo0AUVBYSY*-s=}6s0smXm z29q6?y?V}e?orV~Rk;dim>h)M=qo|!D@b+Q>FX0vpmMR>-6P8()kK(uoSJZ$zmx6* z#=yTUS5Ht%{NJ?2=Il_i8Ax@7lQ_7#Bl7Sp2~<;SwIRr>Y}@`679US9uUuswRYH-r z&ch^Z&38T=EoU zy7ExAG_rNF*MLvd?5@-7LC2DW^11D$+H(lmu7lZ7(-$_3oLkq}z#!P}Auq&V!#^o7 zl(O77s!7fwTwaqVD&il0bEXd(exMQzRcg_clY}y}pN&qWF+1}XW1g$m67Iu0gg-_s zAg@uC<}If+x;RuYYRlkS=RjpIcAdPZH|{s)1+Q=;6fs$!a4a1{Qfzg{7j)E1y*5Sz z)Tr&_r>ZGea07y?!EBno4n@^bc(X? z#QQn5Ebq80h)%{CXt5Loiy>UKsiD|Q;exO^`pu&3LiOlu%HIEQ78&pRh#Nsx!QXwg zz`^0+UF4Bu+Brh{=;d-`(Wk^_D3Km3<)X8Rm&`)&(TLI)9Nd>H?>$Z{b17(^~({TCmYm^fkq?99Fl0|i)6OoXFgB;TyKCQ{6wSlh?_X7Yaa z?=QkFi-6@8DviuAib3kKW57x}u*gOUVg_IFGHLOh^b|NRp?XM5e*-cC_HtWE-LpOk zTjce7)5fY0%22XAksrmcs!TnwjTJP)3v~7Ub{c-s`pL=MaFb)J(pZL^{Nz*%C+~8N z7?Ye`;MLT8;c`p%Ji6LvZ@z6P8%G6S7%WpL*4QyV)q6mAPj-SVs_Y=eR0>n_;F)D0 z8(D7o&mADcyYjhsa-Uz{{qwSo>sfC-IT1n{icuuKHWpD-Q4D7a8+k1{ zH1~q}l}!}-1>NUL!#C)O&d>IH%dAIaP5w{0S-10t+ozq#tZnPea)}yIQN}fZW@U6kSmaUk>2c*%B91{z~VMQf~8t4J)njl;z zwxf-!noS(3fhR@rQbu)v5X2thSAL@eflI4Bud)Fe08?xHq+wg_5!a``9EC6CMM>m z0Kfk=1f!8J-a2)6EZH7tsnoU{s%&`0@Vwvc!|1vN#HsLA zA7jw)C8!nKj@Nx7Hx$s#e#gr;=wQpnV!m@}|vaKa9HsZWJ_V*!Iw^M`+7 zsqN9-o{0T$IG)ei%s*v$4pua*r)Q;X?@;7aWpq7f@UHHbWZPxX$~6gNkw}VAdwJ(x zozW~-rsRC8@ThpV1wOI=9gENl`;{Ac{Gt~%)#92@;gSzR0jlOSmHRP1tMS!=Ds=P{s5S?Of&i~ zVhA6&qOLE#QSCm@eei-nV;-V8s=<|S2M7(GcNk(z;jRG)uC8K4u^I3*FigdfvuTMh z0@_}54|-=~k9BW3mMOHxND1p8Opm9IlwQ0>9{WaQN}A%%ob-(zcfq>~jd%&5 zfPdF_{jqTj+I}7b&Q=)%GTa~UCv!+Kl!&Ms#r^>5*7*ittEnu@P-pGj2Rn=3wx*pT zhK{9b|7!g)&A_T#2Vw1Ep>`KbB|-)>HU-y^k4_UWGUXa8v|#!QEVpiq=hEFAv?Ub0 zqN1YDLyiu@-HD+%d}dAK!|IEHl(@fq*N1b~^FBPOaHzh-`&GalgRt1YruUomI2GRJWOjIUO{_DVAkPoF_S8w zCGR(D2d9y?x+>I2B zuwE*oyE@%KaGmKo`hm zS8y|IHn>Nw^%MI756u(cAI^ANfy{&lC?K~ zgD`PJuncwq9mf9O26x3vc7y~otex7WfaY>lNzh<%K4|ZryKY)~cK;S;Z~V|3Wj@o- z!$8sSyn4Y2l96poRRV!l=P2L5EQ@NR9$2>Aq$kNJ%elz#3zF z#t**83u@>7Z4YPlm~k$T{!|E=$F2+^-?#kpFmDe-nvTS`K&ebZHv@`J?G?jCZ_L;i z*Uf*7)9J)LIotX33yw|H(rKe+#oD7tOn^Ix#~7~;OVsNn+AIzxQz-)0gel-yc+rZH zBo;YK04=kdbp2*4>vbtWDbgT7=6;*L!a~qNAB2z7@k7Gq0!uURdcNN;Uw`=yI&CPs zzI9<`LDcZnLa`VIyT=OLyYM+jll`oK`t9*JPs1YHJqZ1qmBrymen@W(?^fAv_uYANqYs2z6zu! zuE9OD&k5gCaS)+xJ5PaI>UOvjLts|E=FuAas$k?k#I)1Z+e;R_q=SO#(qa(*B8SO@GK6Il%4C9D$bWA5q8r zerV|Fc_;&f=cXu6{VptkK=<_nWa|vdGn!OElycHYdOL-X!`so;D~%-{C9fh9hL_Zx zuxDgW?58ZcS$rnT=~UVa*8ttlsC|zJy&;u3P6=7%SEpUAC$O_&=g5B?xcE__vulV9 z>7qTc4!RS|{{H@^ycJLapS;@J%c^rz!sKQw0qn~ioWF6TvgaKkZH2FF;$y&@vI7n+ z?{Cxc3}3NIy?f%gYY91w3+=1UKA>U@#)UDt&RpdxzOMa7W_2mMeg4gGA-E%t_+vKpsy}W%fu2I zzAwZr<%`pfLM)@(VH)VbOt>Xng&v)R96SR7{(rs8L5;Tyt=G$^%y2yh|1=(=yb)wDzR;JFh*tUKmg z0u6~h!>2zDx-@VSB?n4KvM?;3hslb^902MiGT-UgK{-oWc_YrFK-+F zlU+W7pdFt$fT0+Rn$w}T$HT)~FEHOKQ~t-BAjZ#tOg>g{JtbiQ3G9!3_SC8f-+svk zSX;iC?t>JRv-%~nNEX$+Q6M~JFTO|{qzI2XlYbZB+&jl88a5pK(Y~2V-c(5t9|?|H>qLD5gKV;VfTcDgd*Bgt<{b_Qnqq_ z9qQ?^#-Z8A`@jqqraT^U_S48R$M#>(`^IWeAj$wov8%!yjoHUa^h8?Rm@M>{nOCC6 zJpdIpPX85K`JkOiWu`2O_kJwK%Y)Y~CCE?{c8gNgy(+=pXM`FLvN}g?f6^$ciy{gh zq}z1s$dH!(Q?gip)~G;^Oq&bulXvR&xH<|_`i>VK^W-omCrJ*F<+298a|0VrQx%4mA|3Br747F2|EPZ2@J#F{;7RUlm-<`sa484Ou>aa4zbZw- zJkVK!u~u2`3gn>E6kU6+ZH5d@)_qmCg|9aTX3GV&7Ga$w`7%MDLsl8%y5B60tH=4@ z*M!I%=sn#hTZDz}cjA%qV2Ci(-J2+querFNm?{VnK9MMN@46^DUnPz8?>3<6`nlJ% zwK>!0h0q~*7O+kF_?gv?!Tazvope^&D8Oy(WQ{G^eY`R%L3f73N&!z?U3a?^hJ5ay zqCxp(CE(;k3ZbaU(3_KAK3XZf!}jKsJ+orZ-8b^?NJHQlpH}RX$N!BNcPkXX952>N zK9~9xhr;ZPd@{rb^i_7Jw6H~9XfU4HNh=-;#s^;Ys-CTMx#UjEylcuTi9y&@DHruZMO%>GP4{ESl81{{pVqN%}0FC;zPQI}&Jw1qsJY+5%4sLGxoc zUsAaE@7rsywBA|VDi^hLTl|%8r+Jxi`z)wO4l)uLO{-Bf<*mUNo>!?-?vkRH6b}2t z`vQMAba8bFA_ww|)G&+hew7=UU>kWFM?D?lHi~V-6dEXi=~)z2oI9oUmX1f?qqT-($bGTOl}4`N6;6b6w!{ z4$p6X+#@{JaPN4sH~l2-Oah>_?Kg{7`YbXe2q~3wOUFA@y*L2aQS$a2hG|fSFT9h` z(a|p|1363_FWDA}n5ZXcafrtlYV<4#tY04{PN?u?z zl@$i8(;P{{-~quaiDIwM8yl4sD7n-Yzu?uk2SoqU(hBh9cXC<6|Fa5l8}@7aP6A(5(j5+~#@Qcz>|9*8MqBnr!1Jj>qG^KmUPzvcZz6*yYe6Y_ZAr2&q%y^u} zw*Os?DTnr=3lSn%b)c)%TJWIj>*rmcOI30AVP#poE^dD{b=s5ix(*72+*)Xfax447 z5FN0?d7#~9y-9#(V<2PMnRVADoVrel&j-%$R^u-l+Iiv!dq6j6=$8yLn{VZ$+_6@| zk7QhmHZ53{(_vAsXRx$60aB?LaiB%mjZZpP$5qjGih+E&EGPN$pzk3L8R}EL4`Cj4 z2!73KNW?Sf82MO%Cd02(n5No$sNDpMCKlF9<%sh~vV|__#ZY}`Sp5jME&-*1Q2Bg^ zeCwM;7Qm*-)?@DY3`!JqJNSuAEp4ecS0e;922uRwTKL}HI(AX`l{Ms3Z#r`yXnZ~|<( z5Eg>N)gr;Ao5dNK<8dX2#6kQp3dUwtpjcUOBlR0Uefl(hYHgT727Jh+#`gg!PzlVh z(wt%!tXn7`d-x8y2>fpHSWy8c=<`ss#b}PJrKe}!R4o{Mme_tMV^Kv~g*))a1fSd% z<{uO5nje5(($q1}Bc>TwntH^er=Td~B7I!rUZ{cu2@x}^L|Pt{hh6uz6QP!DxSUp@ z>|Eg0P9t^y*@xx_mwK}aAko#Xfs`xDEVhJySkqr5Q%%KtC`wL5+#48Vj!@u7h6~e- zM&L?;)!6Eq<0ug;BC%EK&Sj{mFCo}7=Wsb_Fzu~ia$yZ*5P~^LY&F0(p5Kf$&)jFd z+!K$J`2Pz&%kA(_kKD}ghDvjt}aJ*m$d zI3{)6qMRS-U@P_j;F$%Eyu%cKA=iVhZ~Ll*gSTXc1@ri3XG_^O>Sb;1wtn5jjAVl% zFC*905biaH450nCK7HiHcF3$;Y|K0OgTfyJN_dV*byr9Bf_?AyYjCXATwzHQ4KP}k zLiXwVr~CoigatgCuQ-4oCf6e>{a#X$hp7bfl)#2c{o!e5HAP(Y}pUj!_|Rx2{8pMW*$l?-lu0j2cP^TSc-Ib zq;kSuL>p<0Let)9mwB@!vJW>7fX`ABn0=PNig~evfskLYr*Ix@`L0DYzpfGbIq2!r znZO_uJ+ovmaycV2f!9wgfoBbJ=>YPV02{OLSZc0-l z8(f&EL2iSxYwH4dw&W)jfZ9l<_rp(so$5Jt^c#b~z)KvS>sQ8VZg$9JriDdCUz>hS zZy+c|7^D$V#>a=BJRn8G_tqk)X_0AGo-$7R_27WW!C?-E?_}FEqobo?99L&oY zN4!mzOWvAxz4@SwA9#N}k-UP*Y2^wa7TU%z>$RYxjWIF%yhCBjoM=Td9F`ZrdY5j$ z@JRNkZ^vGR+YlX-q55D-tWPEUTF~d;)%c+ak zO74v^tSSh&p+AB|)}wV{t0h!Vio`q%b8uMaxzg1`^D&eh5M9i)v^4&d*g_%M%-3EV zo`OGOX+sntTIaw)ILp$2DoCMr2dD#f%XP#w-+1h2W{KHbNo*+mQk-ZA~rm&10>{$o?9?J_$fh04-nLp98hKa-z=D=Zoa;! zI*qfQ4>9d+HP202d_TV5Q#(J~ob0oZ$wN!Z30n-J&nPvbG=M1^9toZl#tu#MX!WMIK0ee?nF9@pug@i+F8QyO?_ZHKIMt!a^xE5jDrZZIjJk6gQ%{-Tzn_6@2oHq=8)|dMx7hYT@?q&a0GK0F$>yrS?QJ+Xa-e`$_K#*&v=Yx|&ap z{&L7_Gso?#5nt=>mYxK&h$nO^T9bP;=ydT*NA7VPs0Y}Uj%#Vmz zLmUzHHBPS*2k_hk@rRzZXu`3pg(od?9cp3a~vIjm_8@;b4%D9Jr88ZvffB zWZV|mkcoGRK|xKkzrxFYm3l4az9_$P>8L6Xyb{j1$`nNtr)6*?=zzeE0ljpl?g;~! z$O%e9&jP*zBX`q);0|rwEX#$t>+pWiqbbZVGJIls^>x<$yZ-X89>6Q zqMyGsc}%H-UXduP)8{{=Tfc*1@a(gIpX;6RyO-H?^69VLyKCrY7r}uQRr1P9T+mKz ztxsfdn;znTy23PfqRt_B?+Aquo2ZwgERYq2R z-F!k%bYsUuUy0cbp?9^e%^S*^!83G3h#nymdR(vkEt;|R+N<&Tv<>5t6yX0H8KaB` zn_20-RQ~?q{q8vNR-+jx7|jxndS;$}J2S7YfWWt2;5o>>?sgCjlqbG3;8Ye)Rv8$O z+4(f-3C17Yl7K$2I}7w(G1H8y_Q}afFUEk?RK5#(Phct!t&zK<5-$bRd^n5h>WJo* zb%daTE<*PT=u52}n&Ay0Efhjf2Aid)APEX511X>q;K`gm=FFNW4bPrb0ADxo$&)L* zI5kEYAE3?nfDUrPz1VN0#IYvk6e<9&s4{y&Q;<^=ubAFpzcZ?~umOOR2RW|O1eA?* zS~1r=-e1d2OWm<9=@1Tnbg@xP)={~&AIfa=1TpF53LJ+`+jrr}wCVH;`4z^rGxQ8o z`hX6RWd=K2Q;7AdNShniH!s{pZ1+;F079JtY+kV7 zfZK4kP?=V;u?&6~gQT}$Vi4LE4aS8BDwip9k{N5~Pvz9DVLY5M74CRhHU z5GV<9%J||6mGcXGKu&z;xEPByd&SNm3%VLZu%yJGTcE88GhFRs>i#qO;_b|K?gyr< zId4KvryV(2QX5K`kJ>>jmdzK|VEjr^R#arDaa)i@v(gmS%bgP=(7EDhf@I zEmZ5#A-{k{%;m{e?s+@bAWi^TIP3nuit5*WVB|-g&or|Ovh}Xkw(kQ_au`5UtC{k) zwDg8uF%&61{OYE$?siDp+Qek#TjEe^Nb20}-@EY4zvy}e*AQO>PV9lYLZpOxN6_VF z`8^mtV9xNTz-Te)fh$?P<5Q*-tnivbVaFt&E_|-+6v%F%BBqLv$Fefp>=v;4YtoSK zN}nPupa^<;^pLq6?Bk2yf=4~TUQbZ@TQ_4F4f9|&0E#Dya$~k7nCz#{&YJZRF@w>UDXLMqArc-Ly<#>$5^!bO;eI(-t_nIach5_8m+Wdu_Y-kgH{% zVRvCD#SjT47lR2Mjq3!nt0C1y+BMT51r=^ibl9+{Vt*F$QF%xI)Xxz6Fi^P8@Kgq$ zHx5)g;|bnE5RcC#r<)T&2ipw|`a%qAFHaPl!_!#J6|#-dSjPGSOFRGdfl4AZVDi$R zgkuS~5o>8hoUAxGK0AHyf;tVJL2>-CwhH-Uz?9nh-7`64Kad9!Czd+4EP{4K--Itd z@n4LU{g!P>sYt8Qg z{JXNj=PX@+=!OO5O^R$F{Y=cClf^nQN*BRAidZp57yc(%SHPLyY=1ncH=J_yL$cn?sxqv+yjxPU+mDj3ojR0dMkAVJyUa&_ zYCd}O;2`+lE<;U^#=rC}t0eM{B&!Wabr}0r;h{W2L=*c?AaMMTxF91DUqP=t^JOJT ziiC&3pXwc>6_zyTu>3g~b=Hn50)Dxj#f#N)<#-rAAT5_AlmE@NG+GAGAz?%Ry+Ka! z83e}-R1qs#f;nPt^BB`R5!Fts~g~N_{`t57^xWD9wp=c&JN6v>j)DfVR-)=VU_x}naFY3 z*#$Ff)^~RX4CiH~p_<{)!7UYtP7si-V1T=|lcTV3Z$Ky9W@l&TZ<^&&Oqls^Wr})| zY}M}WfqA^1Yfye%k~Rlpa~G-_#o_~vFGY4(+`>;=!4Q)KyKp<){|2b#UgMV=XXINO zcX2j9HqO_5c>LbR3V_3%6SFT(&P*&G2|6D-gzof{wy-nxZ#1cyqYNH|i$I1~HOG#5YZ)d&6Xod>J z<;D~G-nVT8j1^q15~i%GwKCSs5A>Jchj2vdVlZH8FdpM%;AfC1l9Dvt;tREcrrIGB z0_Jik@~zdsGH+zL1MxnM=ywU2x;H}4aaN+MXID7XdG?t2FzMPR_WF5oVpKL0^OT5z zYe5ib`Lth}S1#yA{K@l_t-bWhyl3kBp;fHxCZz5OC5A~PZBW{E+={Su%0ePuk?Y)- z^$jqX6H>EEa`&)%D~}$+gH1Lsa#bu{t&z^j8P*|;SR|Ha0)Zv@cVgj-PsIs1SG2$6 zI3j=uTC^#C7aD~}n%OA2mn-%}T@NXN&gpl_6e6h>o`DfQ6pE>W&-5XATEMywMiKVg z@^ahK`J|VO5hL_Bt&Uhx;w@>zgFWL1|n{97j#2gD^h-!5b)!F0Oh&QT3wG;zpiiXcw`+;=XE% zx_IdIxl(9j`~T2%mSIu0U)LXc=%FN~V+bXchM_}g6f9aqQBvvdE>RSayb)BSERaq~ zK~V{jk`$2cn0H_PpZAj=JPw7KGxoXmTE8s=0dGCWL{lcVM}w?JDA&c71Xr;W)ehGT4i)@h^}+> zHbKwD=Cuz>tb*sD)Tdv0_eq;d>3(6dV?*lA=POf^O&gBCx~REXX)AVa?}dk}@S&XIo^&6UP-Dcbecam)YHK@I>bJ*QhUrI@iEks$FI|eFbe}fH8UO66|0l)C`>6jS=w9XiXsr8e!XFSiPSCddVqR#uS(}$2Wq$*+b-q3acq=_kLh3-}8)aSfUIGJqgCaliV)4dIxoi}_OP4*Z} z_|mT56#+~#{f?_=^#~W_)t4r4p&Kf`Vgt?2)r^VyV{iwF@~Qjxz*k}E2>ta~yI7$w za<`y|ry4(*i*=R65#ulJ*W9IhPBj^{%v5@}1m7uT=msZm{cTgq(Z)2y$jC;8f6k4;lDW%FFWZ}{E`;z<{w#;$9G=1HcZ zou&1k)DZ{2MAxYaG((>9%~0tTGb_eWYL6T9qejB|l^V)WD{!7)PezM3N^Q+-=XNK} z;cNTCxMDEYS&tv@nEUzpamm*m07@s&4t$QTuE5cFgzoNd`;&uRRlWLN1x~A1g5}QQ zs-Ca!&UxFecY9i2F1uc{550(|{@udG9K3lic6YNEqM3{gRC!R`Dn^z~p*4qwht_oj z>2&mkI-Ott4CzscQB)l*sx}>(Md`{FKwDUlH8ny*-u3WNey9WPkY~umB<>8dCw)3Q z`}%&FfRcjm7}yW79Q3~_q?)-@&l*G*;})z^qrmkvJR=ZgQ2-tZmWk5gwB) z%=WL|eB5N8tn6i+&z+w#u_(h$A;8ao7*y`xRO+UQ#X`gnsmW=}<1nf>;c*qjyx7xk zLT(%gT`=GFZ91FrI^RHj_#ZQ*aQ=%Dm>m)|sY&?K4X{mmRGO3a>xwQxV|z&+layG@ zhjG7Gw^=mp`0P{lK6_3cqm6vd6H^GlivcUVnv3nW%%6P{N5AxM2XpiB{T8pBlU~+n z#58ZR9l{zXwfgo~wI8XUO(O2*TaiV$*ruR#d2{&w0|e89fvZA0M!q&h`VEOcKdl4< z&Esi6xM+FZSAH5lb$Z^u;5Dqz`O_2vpo~fz#Ay<&)tjrC*!=?=1hPn9jp#3$!}i96 ztcdCB^gt)r@1CH!<#T1$WAwez0|iX3HzP`&U<0%FmhRiQ~1A zTl`fk`<>k$o=?tmud({;>hO`dvm%bPWZuck@x~{v9WE@X6P{;_f{>0#y{W{vpUj%@ zlNf~M4Mrv>1aA;3@pPkvok? zcq>VZv?1zK)kjZHyrDAiTiNYrRQ02}?)~e5<8p=UllA`PP~&rWVX8Eq^{buR@@3YI zK~u5ku>Yd3CM`Jd5s`y%Qr^=LTR+2WCn?Uj^d<~F+p|(s!F~A{TYA0nV|=L`a80zK zMUv&g;{N7bQM3|uooZ3^R1~QWC}Wj~&Jm{t-lkz&k+UB*A-+~Y>7L1f)W z3thorczbGZw;4fHNAC2J+-Wv`9+iRDV!ko6xhhnLdy{XUO#Q(sovbJ^od*sLkH&0! z@hclEnoI(u|9&qVv?q+9V~Wp`xt-SUiQ0Jh?AdV|`Wb!IgSQ##ah7jC_4srB9;xqV zK7g`JRq74p#dxb*Rww~K{v)PuThU$(3_^x)Pge0K{g#JFOv-)#kiv>6itZoRAeIUO zihB<69-Flsr02Y@n2dqBIBwb$M4UR^h|hN_t0q2Vs2eN+oN6Y9a5CdkPxS;4ES`L# zW|NUnpP<{5AuiCc4#NIomv&6p2F1~midCJwr{Y+GOqPQn|bXv)ua3CYs7=7q7)n1 z5AwC3k8IWLve$vHVMgTg3)A+kezFd{0(A&#b`pNrw=^7bHu}d%j9vA&DqJD;`_Gc9 z=*TNhpevR5(>iFC@Be@8aq&-80u=^{pXvoa$P5-_z* zx5xK21p041?v%9epxTs`oYCDW2eMa#K%Aw+8w``c#eaLg7+%K@A>}dDqtQK}t`$so zqK3!o>_K1RtKZV=4;RC8pfr8D(eSFgVHCY`__ww{eT5|6a;oEv@vu^u8}57aSdC|2 zX*eRunk$)?7*F+r21&e9Q!gK{RH(ecV?=O7ZrS^(yl$N z?iQgvXe6`3k{l8?Ap)!H<~I~u0^u}sjG-lbsHwa`i1`6M%WK9i!A4+cwU@S%8#~6I zo;i4;tu-T)?fGFKEgMf(X}|&L1<*1g zfHowss+0ptq{iaLgGa}A-Fm@;Gg|Fl_;f($C^rR%wKbQJCZovGX3>X`wWBg@x981t zj~m3@Tq4M3*boaktE$CwK--<3QBW1r|M3R`++9`A_bf>e>MfWPgM6i z{Kfaw1rha10IE1(6Eq$RL6jwpbYZhOJG!_LIDmpWtwd7b@DPZtkiWngBpfzRx?e*) zJp#39KHXQ#(&n(6hNZc-xVB^WSntKJ?FYbyTd^RfttW93zbF_am*0g+jMG$;dL5_y z`y@21rNx+kRB$t=0BxSWJG*%e{C(r9T9S$l@Tb6X24pk8a3K6eAoHXd{HQ^vZbE&& z-UTo@+Vu|%Y#4%xGm46b8gxe%NE(;)#vyRN93rslS*%A$Wdn>CRpU7wuOPTRo5@4l zPLTKbpKTMWuvs{{Wn6qaFlHnenp0=4I@E7;i>B{gDbDtY)7zpv=OdA%@CQ4nNI-HC zE85*h0)4RguKE28C5so3;$52A{BElOK`UgFu)r;~+La_6nxl3^T)Ag9*Pn~G2OiA_ z__S3{#d8fQwTxFfxxW}3KhG$!n_I1VZiB|~*$H&ZZFZW~S#yq_Js;)f7`TDNM`ats z8~Hd|R8_G$Z#5lN)B)4PF5@!h6BZz7y#fTK8mt-fPjNE{;=x(h#sU@Z-mp;5c@f}6 zy+J4DROJeOTI5|&Osz4zZKbB+`DBclLifO4_cMqScL0`E>2B=`;~OD2 zlblt)VK$5H^5H8bD`wYbODDK0GWakbs09X~Ct9D<`g?7JbX43Vy#hI1+qikLIZOoC z^u>l2H}+n^E$@L62z1D2zWkAtznY-Pxq0$!Ct@02d4%Vt4XF;S7_jnz#&%FL^$y9{ z$$epdL-B4i-JVlKp=qsvIAlyl4ZW)sGkCapPyye#LX;&rdnSnel5Ie-ah7o%Kk}nH zDUZ#Y#JgT0Zm>+~Ft9S8Q@H1U`(^m0({L?Eop3Ka8*UWJ{)BikHmJjH|LVcyBW*=M zq-2oWM^Kazw8mB(MT3R6T$@Wpaf73?&k`6`Zvr*CL@Q@qt?mW6p$ANvzq}@!eMa2C%{30HX`A-frihK#bs3&r}W*WPGQ)?X(8Cve-2+{Ryi*MN2f_3T&OXjW(a%j)qPnUk|9E6#JK&hmp zz5ZMPL9@ED!nvKhC%Adl>BEL^Ga$r)S2XXNgf%w{Y%W)NK6&fWL%V(Ha_&=>AMd{) z{{Zot7V_|f^n0OL0&nWm3g3ziQ{tu(!K7UvUF^z+9^FwfPbo`4_@ug%Z~W?S^1LqE zvcT@qfY<9nFOn=b{a3%3HhHTYE=wa4n##MwqIK#T!qBbLlinD@No7KUa`aiGSm0V- z(;?@dVkmq1Q*FK3{tG|?mhz)HktQ|C5;QP%UQFjGUoKlzFd-h-H8iAA>M@P=N30IJ zHc{=y3`vjTjCV;Qu0g91f$n9}y>AG?{Abhz7Pwi@Y|eZc(AqZ-5Sg-5Q(cJ!x`1db zEsDU9NsW6OZ%&IqcLYC8fss$9FL2y%>5SPnhO#C1gxtrlGq4&&){75N`rK2wu-BDR zl}PuOy9EUWbI$xsgZo7qTeB~c-k}S z85+6>othZ(V7Rq&m+*(kx^Lz3hSek=I+*?t!})Fe=kZ*9*v)LXzRM;=Pz0@tqcCMtVRIX3*{$NKNS$=xp%of*wqSjvC2xvUAdR%%BT zf*}X^)H|-J@!CoR((;nXvm%73GugM7XAZ9m)$b_ZdlBLUMBz9=xodR;=EM4{KJ{s`TG=8LT5K zY6=}A4z{i09%^RJH>l!>O-mO-coEU}%RRzK&U4LKzjNe45U0ZAsw z7t{%?Of&|k*Oy{dki%A!h3@DWnxNQqMID!&8va+80Fmc#aN4t1a+y$@k=#sS&NUGa zCa#6=myG1C^H}#G!zKl6izd-f*$5AHSDP~oVNJ6}FSz2uiCngTi@~-UUY?j%KpspP zn~aq{$zHAe#Mx6JM1LmC^-118lBIqGCLbXeX3b7fRgSR@Chg?-|JBQ@OWsgGd;JZB zIK*qXd)b@kdnUOu_sw6LcWwPGb~mymmj2}moYJ6vQX3jnATb3|WWS{j>Dm3} zZKJ0SCS~_!ajZf^F*G43bILIrPq4YRrog3=0Gd$%@?$K(+G~F~J=RNFHDO-z7_7o_<;kYTxqoH-#3geVjknE;>Kg?CI)pg}xCI@R+EH+Hjo%Rb=gkKn z#fzbvvB9{T9*}8c_F`xL?_!l99E3sQ^vo2Q9NV)_#iuqdS6< z;;O1`wLDL{eD`@gbNChX*D2ooA!rYeBNCg1TJ|b~;6=IRZHHlLHF1^&r+HD}f@0iu;Z{ z6i82qUmab7exKUOj%mS~6KBXY5*^l$L4eS(7B3_#?+lj$>p>BzQdFMi^1q!rDPD2L z=5HkuHx_hkJU)A4blLr>S+EMgZ#1M%DxZgw#OK^WS?6gO_#MOfnbYUmCJ?>hqQ z#gU7G2Z9`@(A)Uq)!^uwNxhdu{a5|3e{m=PSNei}{fdI?Sk0NYYM~G*> zf`rteCC9sWiD$Hp%@?+f-sBp;7g9M`DAXI5lUjua$3O24LGOCTjXQuC^{D?|KL6s&V0w}Dj}lKM(mQw03dzcTNDVB(Y9aLYh!BLtopFPx<^^+(hcyZz^BlI^ z8P_1FA;Ge2EqOE2aPJt2jvVDN8mGqbE(4E*U~jm$Gifj8>4cU` z5XTzpR6JvBrPhdDD??670t1CDZFsK$@3gfDdaCPyNQ$E;Y}>daq^>lSGxV2%zk`la z8y(GevPw?=ApJ0PAlinE4a4+fGFpPPo_GzFB8s^y9w=s|L~S_S%rKtoUcbfX0}cg) zh0wb}F9`xd8*hOlw&TD%Q?!PO9*^FY*pUDB_TJCOrcHNEhP!_PDv$}eMs?f%h>KD* z-59?!NEs%m+*bNb?8r_1H~=Cc2~37rHn?i$$NspnXALOBqejqZ9J$cuasv~bLv_E` z-J1B+0#zvnz}B6RHeD{Isr2k~aQdLu^i@)daaw&9z)@WF7nm`oury^9_I6hLN9QsL z(-hnPt!Z6}-;hzOcTsgt>O`e1e*`qF6jr-XhTKr`68N19U+Sd;a z^$O-4a1rOvo%E`5Pc-F2_kM2o;43TLQtltZI?5S^YStEZfZo#HZWS_G%S#y$9^x;r z(=dtqw-e|qE&JO)3j7}D!l2QRZFc6i`9A2%*_$v)9c8A&DG#%YZ{NDz5|9tO38`!OAJsQ5@HF8t%KJMXD z?Zl%C5<*`R={3n(&@-pOC;olwPvb&C{KXu#pzQT#l37ZhmUH|&M&GsI=3lwwy#bG) ztd~*7eg0UgnsNWx!;-!b#$06oh2g~ZD3KR~@qng+Ys#ed&tC-**X8mIIi0h64-43q zF$GPgp8{8%%l$~VB;qp4!gAIWyTXdUtwK!FMycw!Hy`ty`*sC3J_z0ef;yp%pN6am zzJzo|`IsFEJ5w?4E8ldO|7#gD&4!%vD0wh%*Nj+&v1iSk3r33h5uHNE)3WYx4EK)z z%tjgMUj8qk0_$U>eVX~QRgBxMwZsn{I#{i`qX~Xs>qVYzwp4Z7EnpkgUV*XIJ+nV zzS25mj}ynBYso$AjnEDWqU1hb-d}%46U_g|H)}8280qD$@U7a^Fh8bR?5z_QsZ1Fs z#!^H+;QlYT1sWcXFUg=wajX0zE#q^5Szm+Zc2Yfk5H$Fjl#gS;Bj*TcHd8rdMW7(Q zLW?0V-vtZg)*&84xC}@SH?1)?O13GaPdy?U-Kskk7DdiP3R#*wEH(T2-WfC_N&fQD znYhzdaCbh$#*h_OOw5w%zMbJXHprohLf&t$g_V_$8y_dfnIg0m_-_OS8x%mF8pD+a z7qccQH=KJZA)DJFW6lrGtgKIy-6SMK8THPg<5C&ii*YPm{Gq z(|!s*{sV4tb6y@CUi!!RD{EgaS`|idQf7Iz;e=Ee>30AVneFsyi3w?D>!Njq#i#h{|{R%KQb~hE`5ec3)u}vxYD_-_U_lxK5LU95qO|A z+gDAs%AX8zWuJ{eUo&w@Ae)3Z|9J|+04Vt#S4H!m+|ljg$szY6m6IcXFaRE%#-6i$ zB-9BApmorTwOs$dX2mL4i}awKwXO(g2}8t{v0Vq4X_i;TO3e@}aflrrH{nlm@{81ChT&3x`;%ELgx4QCR<%< zX@5Xg{e62CHyrjN;>$(j^i^i-vKziS|6A&Dw4Kz)ww1Ug0Go-}EcR>4b^mNRNArX0 zi8>lRd^Gv28YVdOx+n!?-XClmer67EBk&fEB&p8T#qv|6%FXfo|OgviF6y z1MvWvXUWE`pD{U3pYW%%uMoq6do!X4a-N{g1(o4HQ3#_+vIT8+K%eb9_q42h-V71EQf^R$QOPxm>%FO*~n$KEr<`+b7WfHDeOX?-fH%eb%YylJGe4@kL620NM?zvn&m(6u;Aj zxG(Q4-@T1~z~IBbfJPc?m1dtfu}6s~RbXEHHxB`Mjx($l_lf5df4FrtAN^HdLFv6q z;;ypax6&(~xyzj$=CmRIiiRRg8@=)y=PJxUD#4D6;63b*vv|q zl!M)NC(a*AnT}&HLA#XRd%i+KL4i^}if>t5LYlByWij{r?5hgqx83~+eC7nJPfz2& zc;Um%)Fge@Y`i}hm=`2L`Ibg&hp(zN*lEamW92rw_#Pri%fE=P0JVNd_Dr0f)uvVm zGigy|TT^|r5+3?9mg4nWX*HaX#s~@x-0U*I@z81YTDhz8`)Yf(6oyM*P)mQMaZ6ED zUj+W@70Ovbf#>+1zijZ5W?Fha!~-vxRrQmAKCUaE3W;Ms*q=&n$j^8_)l)hE7OQ($ZVe^Jr6J?>C$$ z?>U2y-0jyPQ`=7V@LOB~40U<_&P5DYM%W#9O`9p6H;w<=vW$sw0TQe5z!pZ+a^+xN zTAqE(6V`mYc1hc*nt@_Af&yifaSVVAhhH8&X9SzwW;#=Yc5&Pe(@{S@HsEr}WO?Fr zm%kZ_m}tQ7TuDc{od(M3eHcQMS5L15sUn#b+h0FWoeZTz##p5pI_|aDb(ogY%ckg6 zYC=(Q1mhI!wFpo``=6=Btm>-Gy}Z2cUNkl>h=QMq*LYX_@)~wzK0@lR5@=tCss3te z@>3BE%Y{w1f!=)E>poZsuE_qn|B!X!f^~55Y(=B-Gfekl*i?iPt?WDBIq65Mn_f_n zP#{JLI+!)!ZwPDLh<-`c0Wai+UmdP&{r)#N+W0=UEq=0&Ho0p{D2WSu|9fkAh}#22 ze$+={TRPVSEUH1^8rD4?a*tz!aBzOz6z2jkhYMD58%Y#thqSj~uSNYO&T2M1%C+d{>*9i0e8>nqM)7DL_CGZgrkTzvt!2S^rYg~cBDC(Kd5ys^k zZ|CFSps=SiWLUaFo#gjPswX}jSoT+P($a%IYJ?;td3k>bKd7k zbk5k=SS9a~XZ#<#dGY)8ts-0Rmd}jJt#}iK`l!A+Je{GMk4h8Po3+==An24k#ZQj*c_shNb16X!%kZf%@KM%kRT#B$S zTm?cnN!o_Ug{qm-l_4SaV)+z|CwR!0+qJusU%-e^C&qZg8Xt}Elf{Nm_%@|0_{jaO z{@tr`nS1>+bLR$^NRNQ5^mK zmoJ){A{zkt_m*Bl@p=9OwAOa?7xIo>u~JKX1_-%bCsL!8efs!h=3)wquKWy=*m({8 zT&pu|WnB9t&E^ad?4-=@IcK+aWGZ+6@8gVxIsn?h{hZ2v_btB`-3}JL{3MW3(Wc$+ z)z!R_eu$|q?M_4qsM@um&3>xh8J!{)O^vfc#RmPGwL(ZX zrRp@m{qP(f)T!ZD<7!iR*&bkS-HEH6^h8vH6~0~Wp~R|$3ZLrqfAEU2N@!~r*4|$< z9nDSf4$fPqcFXw0n^QxH4!(MTJT^F@3F*m@85ev5yW)|I-DAcm>KJ^Fg;|v%`e%4LaUKO|9T}fk}g9$ z>zf~F)!2EmV*}3Ky_}Av za5{!o=#sLPFypZY*1Z)n2Kx;YqAjYT*Tb)Y%5-O^k`15C@1y%!6(8`Bs(F8Vj#?B=r7x-j&8C(jW+kZH#utKk8?uklQN4`q-nW*86DJifHzOhiJ6$rsB@r3Ap zMIsC!B|H}iA<&OhlU2L=7pmAsh`DricS~I>A=4x2fnVZ+06)L^@CR3GG7wm4;OG{x zN;$M`S%Dr*Z;`M;b(2<~akgb9!6YeG`oGy#;1wjMh{v42=Qe3smPw<_Zo`O@6&9G3 zeA4ynVS0KAf*ocCFN76$tq3@3DY7mw4#{-g{d2O*Rkgs%1#`J*mO!C3y6pk_x{-(Xg~bC&u(`|H97?uFVaz7&QY$XiRrN zA1Z$l!^FlFuohbHfxR!>_NxJ)um0_)%}YD?0(U2$e`)*Q)*!oc8C=tCz;a>vv0D4v ztNp-~Fnr@3Y+y@hwMbkGdSVuGb7^id#6`XAQLPy~jYY79kw3)CkWG ze}Rt!n^V9~ev1%KmkN_rsw{43AYsF3=t!8}WmWQV^QU9%f-{8Lzi$|+_@EoUV#Aw9 zuk`K6>=bBO9U7VV6nCR*HnJB>2{UJb~4)B60faiUg5(sx9Mo=!8w^ULs7u5Em*Sma(tOB<$ z9gZxtoa^rE`<}*FWDM6(oB;6AUh)&pc%*gdMp4Mh6gRW|ckLOyLUoSi5W*tiIUB5E z7UA-ifk5wsj}Dm_c6one)?i~Awr1}@fs+~7SC2P>ac@i?AsbKlG1R%cG?g5pH=sWW z!1d;v2CDu7Z*4&GVGf~}Wh4A|ImFUzC`->z@r#(!H91YfZ|-~gE+aW4#sY9&iknG{ zvu?=Gb{g^_$vuCyNqaTB1&j`_UjL!LphnPC)j`x$ifWoBC3chH`I{TO#-JCsC0Y$u z56{9YtQ9`%c5lD@g^%H~c*wuoyFHEvDC=pz9^6l02U&dF?n(1OA;-mAs0iBYC%t4% z^)zTp#xkdQ0yo15-jkCMTw?6RJeJwCEUU|q61q{RD>coKECa$iSfE%!>Ed*Ynnw;KuAKpLxX32za3&$ z^guydD&ZF~FT3trj@7FHeZqYxkFfn5Y;#6-P44S_vUT0iw+r~2s>8`D8C)k_lce`R ze=nu~du3^2i1KW@SpqMnPZM|RuZmtC@{cvA;Xbl-d#CQTQ6kn$UVXLyQYXOZsrGsH z2{uS4o6~ z2%7tk!oXc;`TE+2^HvnL`Pd@bxUeb&yMErPKsQV$ZnY@;!UN=l1PWM@CCovM?Di;p zB`W)~4KZ%%19Cf;Ty<>NUB?;CT_@oXD|U#ysXoVBPNYvU$()lgP02#^j)$%-SbGnn zyHm-x?B?K5I>F4^?1BC5*&zb=+tyXPVi!$wx@xxe#jh9Xgvb&*6;tGS1&ri7O3)c3 zbE6zgxCxoCoi|e?wh=a8>6_NVE3}#v1VTX!P~ayJ|7v5)kU6Qek^1QAQ~8Hv1;hbD zwXc{V%eXWxJ@UqMN2Y+BhNUEk5$19*IX`oA}zfu_FQb5CO#UB?Tz~`3Y=lO!0QT9vY%Rw zC~D(}l_QxvW+_hhsxiVcT5u;>AP7+6nWO8_nC-4kXeF=z6H6dE6)l14dfa;hmy*Uj z8TBG0XIPrzWhPM;G>hp`k3Ghz65|+W^w1CbLJMZ#RG-DPWx9yeKKbLs7nb)0X5yt? zc=|*L0g0KAat3EN;NZ+_)qTr;d4v12;W<=dX!VZ6SS@)65v6LU*T6Rb?#Ro7-LD$P z3e8`B?HA*M@tWEF%C7P6&TAh4IFSczKxW6AH_v2beJ30le{}D8=?%xmwns1oVrBs{ z?%CIk=Yo;OCjPJyFRhO%8*&S&Wsd*6c(FJl7YtmP!-sIfClXG+Cr{YfpD~E8O5Hps zK(!GpBAV7!03$Ao>AvJ=Ru&Ay%6BvSa~&LXmpmT&U5dC_aQEI##n+H-66zl8kEc%& z{VBBZ@%Ls>i}wuV336+-b~IK@>r;4EM~q7Gu@2VIN-F@d<8ptF@@pg&TM_G#A3}_q z#$PNo<0Z01rK5_eB?!Ie4R_zx6)UKnhzH)~Vw>^zqdx>@r}kTOeo4vHVe?-w#&GVO zm@y*X#CSpvkF2xrju-Tisjok5qk2YdA)0jt!g5Our)-0e`7A%PxXz+{gHrAe^*lby z{^L`$-Dy>B*@7;JJq`=2AJ)}bkS33r_or^Ucy4qF`S-nKgK+X~mQBbO{uIr(hv$|y z!Q}CyPPN8BZ3*eva*0`Swv-H16mQ-)?AtggLj=GND}IdWP&EaY*c)|{9Uu=6_XsJ2VJK5duF zqf#RSXm6cTrNGJf6ZnJ)g{?lt5=J`_Yy{gS23S0#I8cSd!x4wTGcdn!-DSK!r_<{p^d-(%Ry7q=j;zzHQJ6wKbJXI|4RbrvK(aG1B_>DoRtk3)noPe29qEcDz_e?z# z2OiE}L-&1F-W_X`od|gNT#+39@azKkkw9D#pR4a)y}%!Bm6enRFB-%*{Fcfpi|B z?}>lI362ut%9jjo&4*3|6LOBdPdpt|)k^2^vu9YFuSYtljpP)tHCvrchuciBs&+q& z@@(g}&`#2T9AwK&CxQ;oI8cXmYI>VdDdfoQ4BPi{bEk(uaD4dHmq@%U?_J951|91- zCu2B;Hwx0%g0+!bAVki7046!kIJya*br<3xZ#D|2kC1!V`xzcK4<({gyx$`!oPvyf zYS}Rxu|?FGGA%ISDQYfOTcju1@~(9WScR8G1KFg1qy+$ zFnBjU?X8$9Z+|oEOWXrFn>_ZX52S3!-h6q~877Ma@a7Jpy9*h_u)QrG=9(PA>nlh= zdsC4OQ;>$=1nG$bgcJ9uF{(0*TCV1*-=tu7pC<&Ov^$Y`osPXCzkXC4j1cx+?@;(X zcd>I4u3(4D2W?P1T91LqpU;>ycn68T$}cc{rVy}7%YHcz`x4bg$7_DA`>)5Jl4pmh_VrQ&{Kjh9 zF*XQa;%I;KH8Qmmq0NvpBycK^Vi|7b2EM=DcL-F(ORj^@`_R`vY{*?BZa4>#=*(?? z8WxE>1ks!X!Aweec#9ozn9#T|-OS567NzpIcxL%7D=mWs^UvE8-`>1%pJ;+dHH1eFws=BiiSTBt{~9v37j9swzN@-l6*qgOUxPaN zWS(3=;^i(l;%92;y%INgCd)Wf0(=TA&zzgRuKMB8sc??Q4rJi3>LgYoXU%^v&@x=h zy-OhD$;&7h3fYI=z%?CgX-yfo#Q*Xe3dkrV|BD9-@_e`VW{MhaL-`eNZ3+1#1fL&0 zb{-6yv4#qU3O;1SVJCJ*_W9pxgZ7W_EjC@Qp70Bqkgq`vc+Kv`HAFJ4JW}-jd-oam zTK*A!8AH4$0*7Gy?U;LXYz+c;Ex4Y{uVg(1l3c-ChnQJ>9+uF%bKM#)$in|#G-U~& zCRit&4E33PWU>4`todr)S_`ECUoOI*vD&6>;k#}W{76VZW>~{JfjR!@k(0k2xUE0^ z-37YIJI7}2lZlnbH{PSCOQ_CZro@X=jNd@rJW6jV56qZp;u^J`lq}p8F;6m~6YGWm zU;iQ}x0U}5mG}WO7w@K{rq{73%cJ}PII4btK&rEEDm~KCX|T+BB}itfI&k*_hxCqBG$iA3Bi6QnC3+I70&boPivY4!0-g|@23p_Er{ieNVZh}UEB_VogavhaN(9Ib~Yfi05 z6=G;pC%>?)o_&0+6w-2R1j+Q1WxEF3szP=n}PAt_IwL*2zbYe0m=sM(?Z6PE^B?_DbH?I z!r}dd!gdJ5&4@lbd=coA0yRcTfQ221h$giY-8GL=J)P~jMB&?AR`jTOg8YTZ0MME6K z8JfI?P+1MG*pxKax+A!Yq;QfirB|dMa_FivhK)bvjg|_L4GGnrq28mkza35;i#>U$ zni2jKbCUiviml};)ZG_Oa!;Sn@BzV?eYU0^x{JwIX>cIpR?To6UGOl8L%t;fXg3$h z?o(7vpJtZ5XGYiQLmD>?3YGLB-Mkh2$Sg$W_H06Pc0P<|@ z_)EinzVzj?K7#SbKbq8Jkymwel6m)kYkLi15QFlo#B|SJy}02W;gog0A(B|{6ys96 z#~j%nk?MuI+?_@eU-s-D%`|`tpl&tm^+M*ypAb?B6|AScF?6<7I9Y%4H$465i(Jgt zW@IFrt-?{X-*e4>aq<6tT_&GVPiIew%%w*bpR9x%fxt4UbTB@{DqlZ;}W>gj_N*?v;`C zCF>f?fXkE1t<^iXH?LvpnB!14D8sepQJS37_|Ll}Yj#?Po}IY?e`1fU3n{o?z+NU1 zL8szQCWN}ry*fjCiNN?@-N+Mm)Cz1i1~`Itf?(yo0S<@pe_HCk9Qq;U<6%bwN+mFo zJMzaZPiY~qWOc$`vOLoeALYj?UH;W8w|~Y*_ItMd*=Oan2ItW8fRw}<;(~?Ab%}S! z-~g^{*qe^mh=|mH`>n5rgkmUSFF4PZPQYzL$ge<#G)tF_V#fb{Q;-iDCgA2NPX+BK z9a`DZ+pUeS2VVMDaZ5ib7O&lOdjFde-36~j(o$4!mTbS}A_>0^yVJDBu@{!-XYK$& zAniYbsf2bx?))StBUzsRb?%f4YMhbm+5;U7Z71t&^2VX=VE7-=`4V0cVQj-S4ez+G zSl-)UUNSkuOeYZX_|Yh}u{^X!p!_3Vd*sEK|99|~kI%rO{(kskcv_Sm^D#D!8;%$7b+x*3k#Do#aG9J6<5#=hYKf1aVmW9{S3eO1M8!FJDKzoMsWrlg zp6vvWwu(YfB1c3i^qJ)aa#F6d-NT$D@IS^|M86m8)lthY(ftbY9EW`L9CU=>MdsQ` zJ&8cQSMndZm|*4w*UKb!>tz>GbV`4?zndqUl81?fW{s!M8sCREZz6Mu3d$kQ{!$?t zbpul)?C+R|tWi{cwQJ@)`+S~dkaqSQ{_Z$vJt7aRkbSBd7 zss<7oQ*fxMTM_*tQa;4&QN&TknaDA`D!JQKzrwniWPz#L?>Vo>@_@*v8(Nh;1A(qr zakb!B(!6x-#g#X6oboy_--SaHPIUE?&0MkCHgGEKeXA$6Wp&EB_GhiKfs%+MWQ4FG ziI;{kVhceV0^_u>mtDQ+xhjdSFz)d_qqPO~Z~%~?c@nTFcV zKUxNcv-thLZv!SSX#IR>2ICSuJUH`RTVJ$^Atm}oZlm}igq99u8j|wmLve)cH-pEg zfAh~uzNQu68#6wy%g2{VHM<%R!+onHxsmYkOoy%v0dMOwOb28qS03#}2%4rpR9O2p zBmIB~S~fzp^dQWNY^f#$^v`S6S`Z8weg2KEmHzj2-g@GGJK@WAB<|A~uX%i?lx{5N zyS>zqiAZj(PKM02wimdy4;&IH6@WRmdyfpegp;_(T;BiONfW#JZ=qYjpe)CEn6-o+ zhHqL6AeAxM>~*K#rUrL=9y_*(5&3%2kw z0!e$AJS97gWEWOd$YyA8{7Nj)*^nZCN@AdpAcWa7{8WzoNd*l zII+I`>hitv?DF^J=19d&2U#jbZv6fyn92vt8?7Jw?)H>zeJed7`MRxr$)CegR3Bd~ zEX3IyT$g*r!m)Syt@a7Lsd}lxeMrQqJ;gfX(H8hfTpqu9URRRr9WBM=@RV$9+D*;d z%AiC{bHL9}Mfay4&T$(uBELAoR}3HW8#P-*yl`r25&*eQR;X7PiWM6 zr7K`F6MnF@bEqCGoj@+YZRMVc(i-(=7 zfarA^I>NR!>S-gjme6<}R}0b&@IWE6smnhSap|aA&_18gELj+rym!O|lWq(@i_;xV(@F3!@xBbuWMGr+0}i0&i6K)+7Pp1=`Es-Tnf;Ce ztmdzcQzUX~p9KyEA2M1%4V;~pn(F=mT`>walj3;p{ap0^e%0#{$O>Jqyz2=ZsE2*j z89~PYgnfQ&mWrqaj>+GXDunhaZ{~4}3+nkg929b6a)TH0qm8}(0RnwUkugX1@1oW7 zV;y}W(zNx7Ob9V5?W|)>E^VfosG0)Qr|7v7#AfK;3nju% zaZypdP=ybyD-L!$4F6m@NCu_ZeSAAwijc>D}Nv4VAsDxQN;0pInq_ zJh%j$c0Re*vCrGru8b(V?imlpTLP1i6FxV^k*;v!$ZTd_)0+xfI&JWL2`{Edr5I%U zYs(q}pFtd#C#Fm4xqa`C@Z^HJ?9Fb*L#&6*acXpk^MtkT=gr=o;$4DRhX^utljOu` zp3wvj`L90bS=`Jy@*k8H2AJ-yKJHN6SDRuKxcf5Dl6&LGZ=}G*cXgssbrBh}Bn86a zihkyH^;=$U5hzRvexk7ap=J1- z)!5;o1)~MDPd(5Akx;^?KUMbkBJaOk52e*RARW>TW~i8oSvQO=hsS>SO@brm4$o#k zH?n!Rxw>zizasSlX2lp4p4gW8Mg@Q5>1o(bqQaHQxn3jL+ts&*=Z6VhSnAR~sA;c% z2~Bnu8T#-cu%t~Ar21&?Q$vn5Pgg)7j2EuiU~Iq=$c%N-w%*sYl}HR%C;x4&w?p~< z4fpDlIpvyF`j^?R{$WZQz48`$rmJx6t6|NAt zLS(EHUmRB;pkP2 zo?zFcTZG)y561{!CjsQ!dp)sNl8i1WlaoEp&{Q z0E(7=Hqrb}_3i0g+2sKXlcz<8yuV~#N&sJ^GcdO+Pd^*nucjDEWu3Wc61P0*2}Df& z7t9k*`5TJ9J^dC-faYc-Q77A)ZG<7_y_~iYw?aJXKy!NC>8O+*9H~&;6#6+V6rQhH ze8Is50Hf^bkXDZj{b^&4kbhmvcqlGZm)Vz0DefZmQndkl8|8i&i);LGF*VLR{iv!&q;G&k*%!x0) z2XG7hq~A%T%MLm@D3cgzxc9~SJ59YJ+71?lBWC(QVA`VL)8k$qQgPI!;)*Uu0pk|9daU(C1} zTyy*gu;7ReD{)l5OA$wD9QY~r7TXrnMe8r|KKB%Fpwiw%rO$5M1b`N2o|RBAe}64m zTXYc9&5{#Gg}GZ(*7w|X)d?nSIz}2g3@lmpp|V~Z!ep3b0VQWab8FuQd|I9pa(^+c zxQEGtnal7KYIB%D7Z($QuRpPjr8pzp$?z@!m?b*XPN=nZ6m`lUr>_Z_Fa@7kUh!`M zqDIi&>~BJG)KUXpfu4nxqfHy=94bxACLHV5Vk-p#g6u|Rj5@uz64C`t(;}Lgh%n@ z&XeeD56g!f9*hB9QiBY(kpL`hh9V&}(C;@N$JL?);2D3~_e)xYb8%Dyv}#pLJ3LJ> znx{kIx^$8Qi)QmOFVP*#EsiNtRtj7uluXJemxg1DJOao=x`z$e;<7fcdm0fQDe!A3m9szZrldSr3Ihw6Mz-o|1 zK6(tD2rq|n^HLeNmDbDXyycy_d!+8I4LMmlsuHY2q>=6xb%}3%{6L~K(2`O&f@qou zubU`XDo^!@yH4Q)A^>b~Nb{Q%a=_)9 zV#Qkk8q4CSKs&h}b4@ASY-A{YhgKikhnYS>H99MYVn^u`UU9sCREF_y^CcuumOswZhq|n7nygS@9nR zgO{JA+N0+=8rvI`N+H5z&O_0P!S!;%c75Dgl+G$P;h%PZKTXGylIzO997b_pLp1nY zGez`S5H`JddT0c*t^oril)1=5bPRCA=N)840hoR#Z9AEEi#IGWd}`EW5v+ZJH`MUK zM5s`D?LjZ2%L0T9N7A3}4984jNIc{MGv_o=EWJADzpO zlv!?{rQe+JFF?G&miiSXmha0C9}9T~qzl!f4~EM1G`_Li8B<~JXhMG}r4P@ZiQ;xY z{G!D699#phRUYCrY`-+&BRBLpMO`#0E({Zeis}h7h_ym6lTk6d0mSRslES9^BRHOR zNl8iW{dl~=xiUtv>u!@cv(2}mL;6}0J$5UrVfikQoOB)eJ!}akFZ!sV1cnM)`&454 z%JGc{1u11U42@`4cSn{R$VfA=t~FQM0R4@9wu3axK=?@9B!axqL$yUxuRcL=vf9@{XaU~K6sezN|M83 z&U!v$jJlxaXXlhZJ}QSc-Tcw{W8z4}`3NDurRc-$9t0>z873;+3+H}8k9;q&;4)0M z?~~+Gf{>)Y{%j*jnHSD#Cbfi88G3M9u`&Io&9#CN4Q%Vp@zwFE;y{#Kr1Kq+$s^m% zg#eK`zqkNTcNN^VGY#n8CS}i;(90jYuZ6oL z;UaWn><>aqAJq<~tP1?j5Ewf$&C(q(XD4CT7GK6l{-jNf`1-yLh}qjnFfSSaf#HJ+ z+`^Ttb_FAVb}-g=6YH0Hn7jg~So<9j3IFQrT8VrQCPD61M*~zPe*1t> z>=X+|Z#6ElX>1x;)NB5Y1suTiIfnDJs=BHQqcEfp6G63m921xBI} ztpEeV@s)S4yL*URJq-r>7tQSA?c>wF>tbSp)*t^IrvoQt$~dZyLAZC7*s2;5!^y!! z$D@BFHuEwih0Ioh`K8m}Z3z*6bJx|U<9R`^K%fQ4@(A1JAi=y3 z&}JzFSdd@)R%(4Q*b!7Rk--R@mxeFP0{mOAkJN=kl5#(M&l9(OCq!`>maxwlNmk~B zi4W?EqWvmDj3^Y)9ajm1S*+&FeyGS(R?NeE=i-ym*UVQS;*xsV9i*R{0Pv{jl$)IM zIa1Cw`ImB*)qR5Rx&&YF?gC9=YJZ*Vcs!X zzcHBT-{%jYQq$oMoDLz3s6VUxU1`$bFKkwz791*DB1d9Kg1|tSUekTek?xp}rThcx zPm#ecpuTgKi3hY&+UUigHI1>tHb?JBX3S}W+g|x0c_2Rh7wS-FO zT|-{6LSA`r>pWAnF3Wt5&8V0j^UbOwn7iSSeMyvpiy111Uq3a#EDL7qv1|YiM45b` zwAqGyJBH!{;8%9sXncKhn|TZNjEOe@1v_jTnr1sMq?u3_?1dBYb2a$BogALk)_7km zZQoE`bdtLo$Qb#y@zz%{bWPQLRVr~H+}Uw^i$L&P)sqv7xWYJy#gfaiOdTZ}Dgk)e32b+k3w7@Z6>b@d z`tM@HhwWU^K~q)z5>=%PNHFZUf9j^}G2=0o4~H%9+f8fM^;9im@q3sNV=(U!MI<05 zz)3DNxN&t^1Sy^%_0V@lmHC74@MO;p&a1)Us!az|lP@MDXE52NC}jb!wM1o&64_9q zDCkn8RWpABZeZS<;!cFJ zfyO!70wBl(GU*F8cJ|pXVIje9;e``Ki_m61Rw9aTdIOz|B{qQiIJuTdfciP!0<#cDMtG8AA z?a!V99<(8tn~;Dem`xlkPO-GVfRQ6=O=zyCKHG^5rCUw*+si0@#~}DK@(!IICXe1- zn8Ax}QnH3vT6t~$4+T*!CtgnBF*_R`9+u+i&|dQsGb*=e*#On}{v%9CQM7{$EC7q? zJ>cy7huKjrbsw;IN|;=<27eDc3M6TN)kmvXP@F|xq=USR0H*@q$m>PN7ku}^eO>OO z5Zww+^=nw?ZGC~<7sKZ^WEt%r$z;L%75p$INQ>Eg6rTUU-1+4Gr;h+vG=qS;ACEl+ zoj}#fHIME~jqXRva7-3>#Zjc(u?38p48~3z%MV#bGr!4cTLrR+;RYbyy@w;N>-?r< zCjLg=d8KR3Pj=&`2}p9v8}YPx&4!F;h`F|Kpgt*A9!{$ zKLxDe=S5r;zQU*zE^9tNCoLY}OF@oWS|Z>vv`aq0#(zL|ZK|Tgf)gK?Tj>2j zgd9uSiB!Yk{P-t*_KoOV*3Knx5;!f*ko0u!1k11~31zd1Oe9diX^x&Bu6izlF?U1# zU-TCuS77y}A8u#Q4m>F7jxmQMkrT`0bmnFqgK733-|04Bc3Gu9wQWm0Ye{b*)pKPr zS%SIP9Gc?=fP7e5h4b#|Vrf=G=Ic+4Q~({PdaF>Mhtw%n<;5Bay#C7sS3fu#JZt^v zWO|2s;SacfBbGx$P%%s2rF2#Z|3MJe)_{u~SpcEqnYx8E2-Lwl1|a?#0}6tj{W-mz zWckeif#+TXHkE8Pu}P8?!(|R6Rif@_{UhQvY;agANzz&fyxs{y;WYm3%m^jQDdos7 z2BqJ1N0Od_x+!Wc6z6DRbM_~Je{y#AoVkBrDIp;FfP+O_%NB3FR*F>8fhTAfT+tn$ zt%2jb=ya@33?F*lxfJ}M{)YJcf>b1EI^j-kl}R4WOIwACo0mV!252gMl!$q2%4FEs z){B7S?REvoGwL^5eE>|!ejlJiy#b>)_m{dF9S}H^2z1l%uu!ZM138x}@$!Na8T$RC z8uI){ru6%Xex{~lBLf4f?FF1bn~-J_!-o4s=-u=tiq|>=y5_uYfPK5xKX(5C1(!5b z2FL=kK_^j6cY$_$N44_lKEkd(9yHIcRWII8>)coVn?1X5tuv65Pus=2fDnYMf(6p^IE*Jxpa5aw->w2?h zE~O#5+0>wqF`CQ#yfvkdVemBLIZoBL^bck8qxD_3MShxY2INmU;P6FOM>FWyM z?k5F~1d$#fbi-_J_9pkz3%NP6dDF~fsSN2QpP07{ROCU zY1=6lRO;3)Ip**eG{&f(vupD8VL*B(s+B;@h_MjWAd;ic<;#)i^hw5-VVUn?JcmxXqyd$Y=C5(dCtX~R!7 zvu@v2hu3Q1u>IRD0y*Ds#qDF*JBiF9nZYNitRpnLeJX0?dU^cxWBjuJ>ZvLo3X9A~Q7 ziqBN5URVHo0iHu8#0Vtb%`d#3QI`_{E=E1~klYw}Ps^@R|7~BevX`y(DwJ_FF0b$R zXd9E)`&cTOmb-x!_Oy6cUi_7FRvMeXLf*tK!D5bUq5tB=g3gpX@(kc|@mCDXk#Et) zAe-RK|7KG9``4Vb;H73z_0F=+XeaG&VEJ6Y*RE#0z$G^R9zG*PN20m*n;nHTQD4g* z5!YaA9Tx;&7M?F`S{e}k`3KoEP8(YdVB>p6(&TC^dFc8r2-0~I*VKXtGKZtG04fJR z&79r8CjJhT^P*{z_WoM5jsZ;BNRyy&%@~}G7ODe9Jg3hXIu5Cu4fDq>sqwPOw%yYRGI3HbKK|$L`q{^PZRSo)6GZ zF3`r*eKa@wLmmeO&Ja)nFZm!(L9@!=k%Ih>oGb9`t~7IIJ1n?u-VnHu4Lu9H$({k@)~j*^)|I{4SXyT0 zWk6M%d7YdMrY8f4Ia1dp!5#cgf-ZUHXS4ot$b(kPNY<#4PiJ3SR2C=bWQz|LdIy|& z!#>|z%0YnKsZbRA+QUHKwp(E$+&oZuoYeeM4GYf#s98?j!wE2Gl0t1I$>XEOWI;oU zRQh^K@9(~x)~PsGS@!$4JkPSb(ums}@-M0$IBYB6Pf7VInpHZ_bG2!g#Yyp7?C822 z>^>LjWFg<|Y1wDP3aAX|!SqkxJNA&C?8lzyZ*g*5ldbx~mP%l9vi(Ww$qtRz>$nD^ zKn5VrY_aD7vxJxAc90}JeuNt1Vy=9(;=1He^r?sRe5fzByP_&@O+b*I??ipP9(PCZ zVzakLCm2%^CWqFr0vC)sHSvkGozU))-J)`+-Y$>?_C6f`AkcV7-G{A$EBpZM`-k|MnjNwdY@Fn(ylcwz|>SCZM01NSNev=8w4 zr{3jDyAxp zEgMB+JZ}fZT7$JQpDEB1%}mSxnS7;9hW-T@MthaC?o0PgguiZKJrl@zrvnMjUXvz6 z=|__Bv6K+i@GryXM)AUMkK0v}7!RnEQZpz=9-b z%LNPZvS2LE0|h(5a+_)^Ukeb9Y?Rf9k`SY=fouY;xX2t%{U~vIO?^=`eS$_`VSDi0 z-bA3CkOTVoB*Qn^Jzu2ivU%iP^#nR(h{17Moi7m7HVX)RwTV38i3O9g{b8V(X+3oh zLZuwe1M&A4c4Bh*w^H*=6J>ZbmUYodFd2dI-bih)y<`I&(} z+1--zPy|~2&wz_{%1NEKg^i9r=pP(c^ zQZ!x!DFsZ6!3nA$BRdz&)%*Y}V5`>94ou01M4Z0c8N|~|7aXmdpqkU;3PcnC4t*|S zv`M$yk`Pr)8SnDD>9(qU)yj;>gmH&%&6Uq(~b^P4|i#(=J*F0ZqCt8ZkO%XqL2_Q>o9&IVwfZu%(g1i$4b^ zRK}>S@dEv=KOAAoY)%Q}(60(wcF1)po&osrd!9k-?ijw68`S7U_j0f8&i{>s0lcT? z3P>p^oxu?=p?OX6LThZqr}lp_SWw2`fGm^AIjJnLiyHN{#BFCw|Ad-Etl@|sp1OwE z$72UuOT+v>8hlC;vFVOL+rCa+LIxEy%FAp5$3R^v7+G%sMSioW6})3sku2OpwE|xZ zfj}jr{sZXBto?S7kK$ip#%c|e|Nqe(yWa>JLL;<=$4d~!xbBA+ZX!S zdne26d!w54En>+t1(&-S3gQRwmvMCe7~&Fp<@FOd)-GdY?4Q{bS$+g+DW+#h{X z0Ldo9#SBavfw@U()L&g_oripd3=?A_ucZ5!P-tL(L0}*HZL|K4YjBX64v9uTCC$46 zW-dXmD|;o|9p^#rO8Thl6iOTgn1VCc_!j6X!PlLOhxp@m5x;Ix5sF86Fv*Vx@w}nF zYgY+e^1q&uGGcrGEe8|%n`s$*s%AnIx$HsC>S76G&KJ4b3;h&{N6DMbXY`WY zXMpSI#(N#~;#!bo4S@vw@(LguWa+FOortagC>EU)6l0nR$F(~}MW;6qUA zX?XS(1hi~fgmH9quM5E%-KAtj#L~1ltte^nwszg=?`mt2Z-Vr;$xRAb5+2f>$@Wd< zfoa!nc|B2*0D$i69u)Ihwn~jyoJRQuXr+ubz5q+G8fIp7hhiUSYh~^e3_|FOQ3=Dt zY+gVDK70&hJgtY~Aj@xP?R`RY@V9o-W=i01$Yk2gaRSZsPyk5o(FS(190UlHuNA(= z!CJXCzDK>}i$p+LcEg;-!mT**ij^CB=Q1em(f7~eWh9LyuIocBy_1jo(rR7J>c&E>EBr5*hMTL>WXaTmT*E2V=u|c zdx$_fNLHkd%medCPXM9)@iCEuxG*QTP_9AF42Z$S%H~n}@=uGR`50_(ehp-9cdslw zr|?C#%KoeTHJ>+pD6PLjiDFg}xx2gn9^!>kK0`3kA&=6YXi&L8aG^MXp_nREFW*4M zxBh{lHNUeJ8QMzo8tFCAU*6~as)+SQq<`~t7tk)3;_n;99>mdBkf%FTed3N#I8iVr zyE}j1c%}1BJMn^OK@ATF8&1zC0Usg=gY*OrqBY_RzN0T%0-q#C9|CA;S$nQ0Ogf$D z(?&Ay$WQafetb2X_9uJ%5vlusUlDM-`Q)H5kvg^wV|H0Gv{B4wBz(}vIPWW2BCW0X<0PbJ8$rpp#fUPO~KBTt9KY0CWAknrj zPNYxG7e%E#mjin{^2)kjE)Uymd(6jGzfWP=3-_0bN#S#1A~Xvq77Q?UMud~)B)m2< zo(v0Egi3g9Q1vV=288Sx>X+tYW8h|)Ka;63#wMcoHCPZ*I%@Kz@cw(HTMTAb*?prx zPO&h~3ASGJ$`g0Ry!+?BpUoR1wmb3Q&zqQ4UJFoI4(ltrpCUCBJ{AXno3$Tzo%N~Pn zGjnxbHvu?5Ma6@S<|P@PU(UC~&q2Xxfs8$B@fa}Px#>_MTs0L1;=E|OVEUfG=?`!n zPpvkzPONM`Tnt+3T?B43{j|7GGjWh;Vmo=t(AtEA~dJY9$p*k>9v z9sllN0S{T}jpXYcDq!OMtIxtxbe{JfLf)eckoIn-AQ#+c@;%>=gqC-X=){Nbi z=ARr89}A%Qy~habY|8Qu+Q5I>CGt{GI*(S^8w>R&(>K)DVC%jggDmPq0nmTbRL3PL zI0kWIl29HZ@)Qq_D{;|tRhkv$lG<#Kz_C)Q!~e4mKrnb~0U8-SOfHTErha3|miDGF&TV#ExjN4Kj_Hlg}R zKDHRf4!Rr*=%Gccng^wCT&3U!A_p{a66~FX`K?nyowcr?Idoo&x-2}u0ZrkJ2Q%~M zy}*FK?xc%#nn~#mC2AKMlbWmtvzM~^y9MB3n*yNl?o>0Ew{fGM~8=tJNyLnS+%@+Eypvk)?UB(~JD^ypX!-(f{0=iux}2BEyBxHPe}+4Dfgi!kter?RI68e*LR2>^o?HkpL^K$uU^Ef8z9rFX-;fBHi3@{a#qVJm zI!%AwB5gHopvr^y;{L_w0c=Saz)~O}FzHKtMcUD>jAY2DK=AvK!~229>C#bl%7@U(Tc2piImtWmV8#^jDThLG$jZS;<^;x`4*WAK#D-%vRfiB8 zGlV1V$op}6TAJvB1#c2CP8$I=LVRd52@w{=VuSVqx}AH3SD#L6Y!q<21-7H!&T(T0bsXlQ64 zOsfi?#qjB(Rj&(`S6g>sY2wBUp-wmqAkpguU0ISShEd_rI^1gE0Zjo0Sqkma>xk*u z`HRk|WLd`Pzxv1RL@*Ywrqje?qpy!5eHQ@VElL9?>VFW;g5^6^g29DOxx%k6Z071K zq)UG(xRM;(5Zv;1a^zf~Svy<-c|p|h<(VA_QK&sQtygVeCJRDiT#Rf5T{d>m#6Tz| zBqixRbWUj5=}J)0Gh>y8z|=wmtXX1-Z($g9CLxNgDh7JLaP{gC&S6ieC<4vTexE8# zGv#_dyUPE+Phb@5eX!HDUiZo!!W?EhPgw+6`W(k5?jl8-Sf7?c8pT}u49GU$PLWUq znNRZo!KTOjNfB@|xH~60DSWC20%fuyN3G3VSKMxuHxM0h_`w1eQ9j*4rU}|IQCOI$ zJdOpK^%sc)bct_*TGaVj2n}k3C^7KNsZG?Z=DNb1*e&i26!K%R3jFCLgUmM8#@k?T z9!KU0lJ_5EV*yeMk@K1@l_Oxt)cI~`0)eF#=$q(971KDcyTT|+ja<^a#9ak{;e~9n z{7rN%f?bgdVZ zpfP^e;oKZidu^7H*`~;h-L55kJx@o54tj<`+#h+nbGDUns8Aa&p3VC#x0lOmN%GK$ z!V0#!_(1N`eaKj{Cc`swNRIeG;BvPuT&J@AuN%{1U)e?w2_@>rTEMNn(5_s2QU_|{ z?V9gF$BfbgJq7PT_o{ty-Cjj^~k& zeX0`%RG0SG=WNJFW#=#+aWHM3J_g~^k4+sWK+mfMgpd5j``=f@T?Xq=&rUf_83vMO z&#St(3);DuB^Kfux{4X0bbiI0h(Yx+iD|m_7}QpeXI_`fhvEKcoEnkTTY;jUHTc@Y z_lPuCJ)pnXO&urwTUTLHwovL5TJiy-n>q2pK4a#^HEM?0=u83W_eA#|=iXO|#0D>I ziagx!%pDnmMYW zLKZw%Ix@m<{?&}QE|DAhvc2={A-4}C>T*^->>kCDnGjjgvddNew&Ps=p@l@7;c5Q= zqE*8f(HcW;__-6%;RKj@^;-T4PLZx!O13`xLIrttAhBae#+?!@%Zw6*lb~f2y-BGk z0dP0qd4Z+4;ts29K;VN`$7vn(Wv_Tt&tNdDk=w(qO6OCN}+Q3kXOuZ+d#9 zBMoswVfFMNz?<-uRqXupvik%}VSxY)*4%T3&g0^N=OxCx+*3hbL=UQ`e`oZM!uH~w z3xUarxLi%Q01%?U|Fy}m#k@ycW+xsRP)IUGcWxGS=>vyUa%0pNCmz{EkQl!P-ta{2 z6&R_n7^o5|M`a9FAgJ32=_V0%9v@8Y5^BOELb94c(A!Ay7PB^?%hW>_kTR$G&!STK z0}`v4MKcFd4urD8-R zM1_BO-_|#~sF=0nN+1)3kz({v9tvajtXHArwf>}q-kyK`KF z+6#kBZk zqsn7l80k1QtbtyJB6;>tedN>yU>c>a1 z`Fuo(n(3jvb&sJrsVd9+uRw~jCyqp0Qh~Ul=+&h58XZ@(yUBu#K@>_Ct|kM{2b!EO z#c2mq_!#D|xPo)q_Q9D?R04<4WIVB^KtYq$gX-E)bnVULleSB+RhefwE*pq}7!~)3 zmO?U=z9q#s0?9oR%Wq!hT6Hjw1V34mc{ZHjZoSCu_{;!i6YI+6Oo7p+UY5F8?f1pt z(@Gp45_)hk8>MNdZjka3wJ@wHI0s6*?T729*XRF;YfCI_N5Mj^c4fVZ1QJw?5s9T` z6<;86RYZQpz!@O9`?gGBbmZc?DGRg61V#9z(|YHcmPC9Puh{m+l936ng9a&TuY;sA zSG2Lrjsy|)Z;uc?2b$lXsuaN5r$GDiRTndx@P9YMrqHsUWZAWx6fNQ*Ltt?GiZTv7 z-;RuQlrPN#0-IIj#J6IPyquFXwpa|macR4G$Q$^K1Dv6G1DzG#5)zEDa{os;LeS&W ziC0AKaE7ZxAtXQNe!Pgsl7rm>RaK@(v^^$c(s`CEB5FXiVN@ddzNXqWP{3A!>6mp{ z(=5spV;P9DF^j!Umir%rTnZegV=CWtihQQbCmzsvWy!b!GzXdJJr9;S=ec14(gZ+x zTun+s@^B(x8Nda(+<+~?1SK{FHM6HFm;o0vcPXWi_Q35;{ujhc52S0a7_sPi@$N0h zFGcjSB3*RSR7{wY(1gtu)jF!aDEf{<13{lS-cB7pw8%O$@z(nG`eF*;^`5r?{LzNU zgaZIH^xo74+}-jx$Z^!6E+2iw!M?35J|4_etl{n+3_UO9`QqL?DG#>9L1@MN8FXZf z2P`k{r(Tv|@{{J%OZ~(IXp%pB^JbP>wk-?}4=c)D*n&ab+t-nLQTI^0A-4PKGn!FF z!O}_Bf0Qr^2aF}Ct8IEG1G8Z-)v(C#CeQM}U2`Sc4BG(kp@L$2mt!tQUQD8}@sIK(v%y8tXMNpef>ML#C-difD> zL-JMp-~X{eF>HRjA9GQc;X>Nc;aZq1Cg-!Z(im_&01~GmYDXC|)(M#@gLD$EW$XVF zAE2=2pr{rkhymQ|KfIn{B*Lg)A8YcG$F8rtt~rb!Ns?#g042lVb&?`;b~0Gws|3l8 z9QqFAJ`$G3J&$0}SSo?wx0-7{u8BLwfY|pWAAy#vmd4%iUkhAFFA5uc;9x+_My_ib zq^hBaz*TM>kI_g0lIfW^snO;uZ_z0TH~6~vGDm<3)X!yeSoBbbkk~~LuF<# z(%n3F8qtG}+DIQdJNH!*P18Y?D;|E<;DMj+FS?|VomRr8#r3AAwbJLFGF&Qw2fN~$ zi`TS@)rDy=Py8@rGC9!W=|lnMpw)M7Azg$@awdAW%Tf2@64%QBCu#QDT3mtDbiJ1 zy>3GI4kaSoeZtapv_7QSatE68UwO=qGH>nySH%>{sL%^VY1|D$_-TW4aJ6Q(fIsay zka{{cEo)5}0mK8WHfdH33NuZux|zb;|+dl8D*fh=81Li%5ckLWmR# zZu`$uz5EFGnMb4X;+J9WFSb3memLEMBe5EwgaZ9dmlvbTZ$+oBq&}Z&#|h@u7HguE ze*!)b9bgYS);^|!pMn{z5tx(vZYduCz&suBH}g?^Leud@6}ZpW?%(JG3-#<UX$GDMRm>&$$ljf%DcBly;nn zpxX|hS7WHSgvuISd@w3+U%LDddgy0b_dMf5pltA z@Ql7@F$zDhbC#kS=T8BC-8*h^nF~BZRSUkyBW>$+pJQmnw6+za|ErPt0ewE)M)&J; z&=%FJx9K0A>w9W@l#|tAqqvj@2^C^s{sDwo(~m%f&`lNyT24#`d}MMm3l^MYx{%kA z6+A8s6gZ0=pdKjTPREdz!4CBW0Y#cgoX)noJko9kmjuoKk{MKlL zYB=6>SNb1Nbb8G0%QmCe+6gJ-yhIQ*^mnCMLl9`tF)HE`L!=SC7kA_or1P zU5?~n6P$<+=;S!4(7|*6*+@J(8F{Y{*Y|azk%?m3)dLx~hoGzO`Hs_&6WX!&+~g4P zNaX1c@%oMD&Rr8`Yc#oz^nk~PTELXitKLh;R40Vk?{1JFu|p9!_LXb5*eMhxF%z*7 z^6Spi+Qf>F8uU6*|C%}C;Nv~5FL=wL?!;xhA^G9MM<&M**U`isOJr4!Z&_>I5p9jn z*X5UO3#SER!2{fB5@&g zjQcklDdTf?ae|H{<2L91jsGzn?DZsP{hD7t%=MFYy?D=(ZKDKb%%Uq|OG9=<)vPeL zO_sQeU(B_AW9StI8rmD>+l^Fk2v`MMO}DhWhvRzr9a5ZiY6F@FsZdJF z&dzq(ee2c%2uA7yca&$E{Ca4pim$Si@S1d#F3?03^3ru{)a?tnp8j6E%$T@IzQxkJ zUCf^VI7UNkEI&E#dgKI?xA8?D2`OqOx_IV7C_cM8%RYT%rsri#9~w;eiJE!oI#lsH-cmd^(qdMj z%*pGqhP4B@^DoUblJ5BK?Xt1;g1s&BSygqlrtPh(SVDfW48`1En8+gvNok0UCKTpL z)khkT@{l;Qa`%o>#jZBeydaFk2&_9RG?i3Y6+}-i(rq~!=h54}f8Xp@uOEJ`YN1mv z3Pf-vYCR$=8ZD85bPj{~)BRe8K300%=R0=QoEE4*=@|$55|83w6DAe6ZdXFt59?V# zFt}W$>s>_H@#`g_m_qD!?YKDrnbq(_i?Is}BcVq9(ag|LjO0v)JsLlf-d}ULX+rvc zySMJ-Lhrgt2UgiC4Y2wf9v=DX#wn^EHQdi3ZmrZPWvk*;LS5DAe$8esa>z3GgaU%t zCPJ~mI*xU5G_qVLw-aoAtiB#q=OHkBU&K)9TywaJgGZ%znFi zAn~hKJj&W`mWR_C7#P`{sR91mz9A!(=-XB9rPDY0x;CEl9I|EE0q)=6Fn}BF@=f{l z+n0{Zc)M!0ln1)mzG`S>>s##r6uA50SGR82+JnC4`ybX&LXdC$1Ux%Dfl%<81P>UC z^F3|q>AWieXF{>xL)aO@P9(K~+crgH{NHnMA6#7|qX$;mvzzv^0wm^_feNxB)bjebK_1K(SMckzM$*n&n>{GW&hnspqp8xRk`A-Ir5rmJzTqsDuu zUFk(Yf#zY+X|uzYdGl%}h^=2Aum@@9z^n2HQyMFnFB_*rX7Tc#gugD-~pDK+zi7c>n ziw9@lTFd}Bj;gmG2>14|b*G0M2I$({d*R*EVr&CQ04eo~++wR)@kRJ&I?IP*0oMD` z-Mf*2Fx%TQ75|(%=AVOfUhIHiihEB{;uCm6Y<)Nc#TV$0Sm=mw;@|HAd3BAWPL0Q= z)-#|kZ~&>qW2L|jHva}lAx>i%WMwuRx66iT0L^?)fk;}|_%=LCkvQF{t%YROQSdFv zI}|TdoR~sZ@iKe|%MnuJFhWC5NP-v8XnF$DJhsppjCM1H1(K5=;{-c{KBrMvH~~u< z_5t`46H14jH8nMdr+PvErTOGbw79PiUIAagp&rOFuFkz6lA>gVk?{Vm;V2)ByRXT* z050kR{tAF%6c2FBR9J_2w}LwIzF0^bEt9tC6Mv=Hr$qkYXP-cU?%nb&R7)a0L_k3I zb8GT^hiIC6?Ec8`F!%Roh24axdmIU?Jp{R`QnK{qkWfgclJg(*_3+!s7ITFASNeo! zucEWcQ&~Viz3}-$Gd1Q?4tPBzcZ<-7G4mo}lhgLwKLImrJ4u~aKn+(`7NtB`0ErBB zqRw-UcijOAlEHb(f!}}w;j>9)!M|CTwv2JT#a6$OCk-!VMX!F|b-c1Ng34ke(5|J* zmEAt+GHkIe2bXceGk zbi-Wl`&m;FnlR4;wqy@O!4K?l*m+=H2H?bUfzdy2d_lEI4l2iAYVCJ++ZjnoRhFTy zpTM}7dMJmEI8)CJT)ySeU-H^gpZf0#GtKSdszBTrERbC=ciLDjw<~X0srNxCkuCpT`Eky`0&T zR0D_6;L!`4>GiPNwzYqKsT}&nsXHa_xJ?B&0X0ds@HuoJe<_VG3XBm=P;7?C8*Dr# zCbnCY0MKm35L$8gq%%H|(D@XCvGfy$Q$Tj_h3rWrc;Iru*r1kAOw7{@ARb9T+k*(N zs}3Z^c3(yZugUyoc+1QUjCl86m+d_&3Z+MVHw6sSfYZbpiuusTll#@DEEL;%#3o9j z1X1@V91Xf(k*T+agH|V)o0qZ58kZ;5-aM6-`WHjX9@X_1&-6*)z}?z-Umf4py294JBlLDEx@m)(=l)B#5E^Y#*Z` z#|X^lcT(>dE8#?ed`p)l{<&vIcAy5HLS?9b1@1Kq4jN9pH9rjxZZ?0^C6HWusBA21 ztobJzjccc6Y+Sbe>k`%&AFL}D=I&o&$plHrZ9s9-Ou^Td*$D-~>dOcUCHYQUxd5?L z48*frFKC?1?|oSX4lLBF#S&6KaQWr~kMl2q)jOAc^T6%;&m!~6X)jdMo~x&k_mqpr zX81NbZQ{)-%ry- zb6~t5s?7LW-kHRiWVV|KoE6loEYiOAl?FV!XDj*OyM$k(&)LFFfZ^`meA1{yi+0m= z+qA{A-K43Pl(y4}4n&X@iKLwG6K7nnUig}9vkj&3aCsdwu~ks%bht>3O1hMaGd1Ic zYG7bO2FO6F&5VJ7!%tH}$PeNVkvn`87g0Wv@qrTKmq)7YRwU|L!nqs5FPcI;4%K1hV815Hh)Jm5|HMU z0x@5>7<6~)3RhMR;fSU!<8t4h4-M?u*w_d@CI_!VE4^mS+z@74d~tCxDO*T1^d~G# z;{Sh|4XaLs-vj24)iG2BFW#7t*<5QXnm#Jgw2Jx3$o{ZDm36Fj>+_d5FtEN68MELX z4srBN!Q{nCAq>xFh>zxNMEv>lXMAd{J(+P)pc*2Gh5Cjz=V`XN8y7pQ32*&E=qZM( z&)G+AD3oM;IX#Xk+u987NW*rj}lWPOW(I=)rj!$a1BM%%vDHInL&g&Nki@%F_#7N zAI&QE_UjjhhK3)Qsd{hn4%C)g>0D~t58Hp^hf&Bj0=($IkK#3HNT(k3h+`c{f(BFg z{zF(`DFqabiJ%DQb+w_Jiy*&9;!7*`1^vAueYFd%(1@_R(1yFMtu43QCaSOx0ns=9 z_i1iEr10-~q~P&l@yMCG(69=D4=c6)3`t5-gJOf6P^$YWl1cRTlz8UzX)B}~0POgt zj$S(g7WmBW#FAeJ8szm64Rs>k$~X%2giKhCBtXn!D^txk6ePC}tUAz?^4#uN(P@WDYf@9l{bqc_Zz zNGP(Zw_0?ow*-@l3I-8)XwBTZ{rv%^75aNLsuY=w8vR1hM45jnFo>DkKtN#YmNEN{ zk|Aee&bUQ# zq`WNj<5+4;QVijEVq|F8@>(QkGGWZ2;9ri{N@VcgD5{Iq1#TlqyDh&dT|4M#)QSi^ ze*E}c+d2({btVY>Vl3))?$pPAk343QArJAgs0vq%qjbA}{hKj)$^P|^0q$wC(H=Do zO{4nj8^C2njy#b$&hTAt(MPi0W=nVk=icl*=>UvgA89kHZafXUC8qm21pFgI;-pRB zh72=?kNq$qS8(`kih=bdCefY!Ry6igApDgop5#Bs(m|et0Q6|)V3~8_a_U>A;ib$` zVmwIwx)=+os}r^DmpzQs#z5ggB72pQtKZsgc2)6cnYOJ9hOtw~dY?Rh@#3dYvfwI! zs}^eZ!>_AU9pI}!V>kJqetbesMM+&r7;TN<^z@VZE?)3s`@2zjy#ek_EL2>r1TRMGTbtHs8w$*% zvA3gUCqQcP#4|AlUml7S42hYNDSey4W=X9TV?W@W@cHv+AA7OSO12S!#PxH=J>B|@ zo&Jts-R=NlkYH`UE&UE~IH(lY>F~Y=nO4{+fNY(GxJnC?t4C*lp@*S?p8{)J<0ef@~ z9`LC@@sXSV-8Z79fbp*30yIYUt0a9Uph^yB9Gp{3+!U>3+7td@rw3)cc_GEC97iXx zn;c}E2T#X6A93;j@Ks;#HzOMEkX%ea%XQm%#`Eg+a~}84RVwjVhoA^gVtY{4jMc7s z@~y6}wV+R_+G+AWH;lE8`F&5I!CWB;F>YT^1>u0>wFtuzP`%~2Li4ccy&wyeFO=ea z%edAgZ^B?715$5pfidA)E1fd$OJSn3Z&xOwMKTHz|+-;xW5afj21Ji)?R zP}UYQSNf3%el86yMNiMOAh3*t)YjIPbI`D!*}H;9j z;p@zS5E<-p;jER?cL|*V*|_|NFW^G`dgd;fXBJn&7PYztdTU9QzQV{h{o!}_W)jv{ zDLh&`djvu14789BtdNxZ%y07>+AD6&HI(#{Z@IT5C*|^<|528unFDN*4xVpwHfWf# zXANVRmKTG@!>7wc0pj)lrp!V>*7z?wSo6^!SAAUHmoH!Lnp*J(U}O+h(*FLZ)Ekdf zXI|R0O23$d)Y(ABiK;X?KPvjRY7wzxgkR;qr58+vEZ*#SW*NwFTl^~)Yf%mOzz-DJ zf)DQ`7caCbz>#1nPI3>{dik@Q=1gYPZ`*7Ux2$0!Gq18zpdN5lbo^Xjg6g*eOz#dE zY(3P~)!jHlyil7n#!*76Dv{8LiPG;S?PB6Mt@#pMuh%EPNt70=)9qiXKXSy@hwgii z`Dj!!4&MbFgfIwiqhBv!%kuXGp`^b;yFprEHmd7;e3{}hm)|N z>lRZ*#ET3F93tAfXj76>xHx z%y92CQD2G=xc+eQIEA`bxbv*-?q;cKh!<}ZSnE9Kx`UwB8v#r z&}RfTCl;LE9sgR-TE=2_bj6m2EN`paHm9ejv4MfOiF#(}i9k*W&;$*Xaz>~Hdh>6U zmzB}qqodpTyR##ltBf&l3?g&Rt1mEgo#6IVw!xCbdru55VuCAr34GA)bgAhsJCXAI2}q z)nAG^&rxwdZanFJ0QqPf_!E2GXJ{VyU|)f9U4&T&qwCEv9&54=1iqh`C_7mClT590 zkR)BG7a_nc`2Tvk?m(#j|NlN5XW!YIJ7i^LmrX~XM3R(@vlTKTBjfCo%g9I)LbMRc z9%m#ayR2jjydR^u17yX;|tiiCR;F6 z4`St9easw!&u2S6}Lrb zR*))m)PN&XPyJ`p6sj@UD0uFwq)?&1dvMce&RHV|7E4RZ7{S2V`EAcpFn-5!hk@7WwkJ3IF@c6GAQTMuVf+MQwT zk887)75^=RJl8;>hdeo6fj@FA%m}W&*2d~was;?5G%G%Aw6#3qklG4P zK&yTOY<^#FZOr%eSXfxdruA$$&1wk9%jy%rc3n<-IE8U$AkoTpY%g_k^vGPLu0mGJ z@X~8cg?wxL@cHxSG{2kg5sfaOHgdJVmecT8lLk0jpdmg>*_y4gTOFGNdN^~RJ(Jk} z>E9G@+K7Uw+SCWE8QR)T%$J64O4W}g?RRa})z*&pkB;tYfkjS;>j*F$ci;^*G!!6f zMu(oS#c2Pa`(xq37W!V!aH2@gXYKytDI*KIrO0>DL<#Y_@E{ zg2>a&05Xm0FnLBiJ0)P`y8A^?9_Djn8_;44gA9fLVECQpU>)!%cYT^{F{R$W02F#} z1v$;e2DROuwcG8v##=TD<)3ly7j%-fiJYub+>~G_lP(a%I>sx~m@;gqtY>b02(5Vi z`qwWKgT3T}2F=Wv4!<-p$1(9mOX>5>cwtjrR-cXT5(Iq3`t zPp{x$8qj)9Lmozp@kD5KAT4QfRI#?m;n(Yq+pP$L><$lN|l>C(G zgf_a|kEIP$%F5xyTlzP*zEPvFOmj!5Xa<+RODD1+AVvu*QXhLueT z2h`{(a@>vQhWg~4KBQ{p&l`{KvYDeoyR2)V{M6tUP)|7N=ez4#zv`vU3ZN~{vv&fI7QTCZADicr!MxV zsd%34lBUw|hG9pDvK}+7H#HqJeTv>sPzs!Aq-EkW3=68{dLEvfoGjy!-ug+AR)C=X z>DViT+d0OX0l}wF~+n8}`ozwB2fj!3La(J;R-8|)+L+74OF}VKW z`vYn;6M3U_0=>Jpo!U-;5)NOp%W%Jq$9YEcCx|q|vCmw7dfNrzySuwMKsYmsiDDyv zW;&?bW=q!%>$N8GsoBrv3}oMUDsX2eEiKLT)9L}M4YP#TwcL^tnN2gfr~*dt#nSd! z&Yc`}(Thtu|szsn}kSl`cqNVaQqR29+2#fq8#d+UIJYT6q+s*j+KqgZs7W=L)J8QDcx21Yk` znG0GlbJ!WE#N;x5qSPkb1h@4>3Hv=3Xm1A({@4-JPTUv@?>n8mD^ok4SN`?$`pKrx ztsf~-;#?{aT81o?V?Rmi2*`ru0$gx0d2HawBTVUMu~MaveWfTpWVmlMlDtGVtW|CT z^u3o$v@IlCw2>i#B8J5Y?U)6G>h(Ky+CkQs#vadzD7=6A0^j(xo z!3IBl%3c3z%g3r!mh^kWM3;{IT+#cT)-Pkra&`Q=*>d00Eb{~2*X5@jAau6-@iolC zH2InwBWBC;xuh`51%~~Jv-M8Cz7;ym4zMRK$<*IJh;!-STS#D^h%X<2!Z$o+2cUOJ zjj9FzH1t8Y>epY0=XwyAGACj5a_4+l%pA#u$2t=42K)0pnm0|e=-VdWOda|;F{x@f zq0m2S#iCRZVA(miA6VcXZCB$V!mrKzW7H;Z!+xx+47Dz|Xd6yT0yA}?o?*BU33d2T zZ38eSJ}BcF@+x|3MAL(1ngRU#YMXXfUu%cXrb^&JFzyj++aydiMw688be`VM(Q(%3 z|9>_qeWz3P8yrtBivRVr%0Bj*ek)TOyQ4K!eSsz-X#g1eI40(qurVcL#2o=+RTA*SIzp=)Ode;=6~x}=7%8p>dy{(^n)3G`@(rwD*=t(G?@P+U>_45Fu|%$6cWlU3GUT4m(1OPAiuC^JJ5kag$LAie=UdYo52=u25o5Ry+) z_rD3{Ybi(Px`hAy7N7nAOJyjyFZ^3WL!vPquQs1eRAcAQl&cDVv)V(;c*bpwYVan<|9Jl5CvP> zu_p;soDO%Krdpy$KOVE9$5+#l%^d_XAs6*Y&X4vI7}}ufi;y_>aK7K((A(79JQ{CU z0@u!p1U|A8&|ijGF>H2WAnK{gM7o#w@BKVbpxlM7Z$722uiXnwO8c%we-u7IIt7WM z;{Y^NKL=P8Ml@7aw>>WYjHe(TT1)TeVZ={-!`Qb_!JPTWSo=9G-2Mt~TsUT>h73f2 zd_U-zdf?28C7n=j?%NJx<;D_<8kVs6!ado^0(p;(Y!n6zpN}u2DLz>9LZ@v%rIomh z=~&2Fz3dXt`0-ptI>a_o?iRqtS+PUr69Ptdf!!S-~QsbYorj+sh#;4hl>+FyL~M zV)eDDN>6upMG71aryX|jWXWLT5aB>2lRA#Uh@SR1mHr=bC2}48LPJm?3`b(-Kj}Dk z<1AbWZsm8|q0t8LH!62xZAv5MA%`naR5jW91muHczy10>1$VuE{e&6p>({SyRuVY2 zAM1<$m>`~wSMHLMl5<#V$M>f%v)v)D+k1+d6ocnn%{@6HEP|-8&~^ zgJf=zUk0ccFk2D&3@&_1I4Vc&rt>S%xszvIT~ZfhPRg?5K>--RXrhW_g!uDAR##|D z0w)PEd$v)s#lOf8!@Gf{ebRHAtzEwfr8`CzRm2)cv5w|Z1f2fkV(1KQ)S6e|8gD~; zhYweg(Sr;5u~A4Gvi&NYJh@w?yR+D_V4zNh<2H@#KAhnWUh zB0RQK@7vcH+vOSoe8sjsMCKDTR*95IdA59P?ZDk_c-9L#S0r%w zL&Hdj#MV948v7>g_#*773ZpLHAN3#xor=FgqM>GiM}pAoozis~3mDa^m!a*;!9o@7 zC|pqcB~#2M6lIHxK%V`RVK~^>E_WP!ROnGGIRpTn#tifIr-#>pH~}Gl0UJ}on`M}H zEEm(<4C@6RGFHIm#)mUXV(%Rq`hND)5p9LNb=@_6Jh56z-|Cy(ZY3kfY~SfX7MiW} zF_pcFGXwzfB3GK(v?anVcO=6BFYhT+K~ikyR>ljC$gc%m<*3%!?*=zsrdcQ1OCHo( zJ^UM-2n4D!cNP{;Bl~a+$I_Xoci?y{8L9%srABvf4k1kYR@evG3P;vp>Z?jSN(i~~ zP*D-!+6*}|O84@@IUx)rMJ=En&`b3IHgvP`TV|d>nJs=&_X~+p@Zd>Wo6T2NvXd8~ z&$4(-J^9*K z&Z~wAe_E-*~S+rbN@?8*VFBs zYXlhSO`7C-p8n4i(ICUWazW)=ltWLSJ(H&v&Cx`lpmm+_5=_i<9cE#j-QPdJC6IE1 zLO=6Nsq$&VJ7iT9#+EK4JgNghF`VDm*Egd=mb0&if5Fgv_xIc2`lxeBbJuE)9i905 zeQmcLeQ$+6ld$(X$T4#ByQEYBHxHS%21{|Zn*w%u05ZM&Udac1O&O^*H5c!Bcs z`i;YZ?`iU*dg>6Bw&h%7Je>N%E~Z}`i@J1caU~o3j6(MM?7<6ix963#)4KNnj26%Z z8ed~KSI){%rTQ-=a9+s<9W>W-&t3~Z3GaOjB*y&p>Rab%Y<(5t1-eFdcY_UWO!mUg zU~Y_Gxm4gij+l_V8f!L$ZVYsXswSdP?x*5i0uu1nxS_Hu@Dj*{*v0VhaD~l(*I|j< ze1WPa5`J`0la^^XXW+TlzN?S*VvSR2jZZBWXL#_S(4}gsHY5?W$N?FJJO3QQo929M zV7|W#>iLmi7GT0dr6jmMVzUs9kh3ifM_y1TCu(w*?=DHcy_o(`$t^wbNAR;rMOFiT zsOERKVnOrBOA14B`*E3g&$5gX22Lq zJ(#rxuIA|dENwIZJm#LGB5kyPQVs7~@sIOtI`}8m8)&&Cp5dV(mr6yJcKQnpa<$hG zRK%s-W0WgWTUTnohatFWfLA_sv!$E)zNHnl6k>32kQ$(B&KI+kr#pu3FY%>!?XC)9 zhX)m-?g$p5|HN$LtjA6>P&>6Vu%V9MEi63t+6KBnIe_I``W-*NkZzsWb#fnypwC9| z%0rUBF^nZ5B7fft9o8VgaV~U2p#2H4N#_BMSXozR$2$;7_xPz4tfhGM<&TTn#6#~8 zyEdDer!H^1_bJg%KwpAg&OB?UmHE1M;R~)8#VI%9$_bAkpX8jJY>pgEf6C8%_mbAx zhsnMD{S-%A?!3Y)Yp=}HFGnHGpg3|Qz9OOgNVcah-=OPoL(S>q+KfwS$`ntN!fNz~4{NxUP9*L?rZ-V-pE;wGi#Xk1h4zcGSjpu|YCdos~biyxd4zuvr zCNeC%xSyh2KNG%keBmS%VB+p`a7z-2x7%&+2z$*1Nu-WigfkO-~Cti3g`)oE`K5Jcaf0%GO=ANkvJ&4l|1z66JL_`Y)jrn z#SYV}?=dTN=l*5=qW1IG%VaBaO$4far<4#Wn)8U)euCW6($Zi1J!MC|nsXT1uJ)Uu z0<;KBHHTI6|A2>c84{4K26UZo>71~A!357eCekT>aO%WC$}3Dq@x$g3_J88SA^+n~ z!<=Vg_H}Q3{D$#XCN>Jt7&&JW3K!*+IP;Dzs8R(%gifIDvZzR3r_1*%JS=Wm%_B4t zB%sS*1s{)sn2VpB%Mc({w!%z7tgrIod$H(^PIV0;8#heQ@T?L^%&yR%SfkMu|N2YKj8me^cgXK|I~e1pLTxq=ji%91wTOvLQSvUlE?y#)Q~5D zKk7C68~UKk-ij^XYiu-zJ&iwzNw_5tBX}E^;^ZF5MBO*9K)B#g1N{YE42_ffmgPgV~1Ce~u$~ zHpkbNWk*-Jkq#>Ms{W#AFZ6!0ZcV#atPp+gxM9J7q-upN&4VNs5U@1DmNZU%WP=3e z8f%YCFzI~nKmfJSnCzfz21Ab}(Pj8bxUfUpHRhrJUq3!tWc^&`x9zI}NJIQScyZE!kMx1M`XE(Q{=$>cH9 zC7s1(ITi4n6(xZ~WcjT{UyR{xd&~?Bu2S3=-Hp>i9{q1$PBPtBR8MMcgK!$Rtxw!f z?Euj2By4_Y$IETET#CxdnK^NXvmoaK=?6*Sr2*!NPEPA@Sa`|63960itsK@>9MajgsdPlFE@V}US zZSlFyPi?Vpe)xE(ys4}lFVVUKm%m3@35Oc@-h(@HPxTwH9f3fRID`ZJ0M4n*`AuM; zL#nd!cQJ~s_;Ce`4Av-Bat1&hxNRF9a#@e5bt)c#mlB{ZDJpXD1%ygcDxgknWBhJ$ z8rd2&T*(Q~_jhN7wT6PSU`9Yg$a4E^NPr7Uf#C*GK4U*Vr?M+5U7x+OvWsVBNGE*v2VZnZVkV zNKftxDRXbqxIFT^)H^XDxbge9OS97_Nb{9dRS)r%p!W#}nhV>tql@E^)bfpY_4M?Fl^dYy@q&^a5!r~Xx59)R za!isG>+Lt(Cs+uz+@bk`OC{HoGHX@<6;{r@=jpFrEhMc>W^^sEeVj4jpyCoe$+#K> z05o!)L+V4|cHMmckA($!wI!rxhnd#Ft~v4nAF2A;ix<4?316~+AsF^kK90^0Iv0t2 zNA?mzF-47hu%y|JGOKl&u!0@53IERGVuB`|z_at!W0aUiFH?;()YPj}F2?D#ojH=} z*V82%R6sKz(31OfQ1t3oQ)T|pSy;PZekk#<2aNYH%dSM8u^9qA9#eZOWoq!G3K~4} zK5$?*LhW8LL`}~7tdvQgE|hw!c@-W zep>@UOApqMLf)sHCE+`@EXPCPp$pm`L0n;Mdpe_n9M2@8cv^EFV0B4)cJz zsDAMmzBlb~qE^X^yu3UeleY==6Td|aCW}%WsiE^Lof`lbc|RbJIKvH;fxc~(A&S3Q zIEg;&1@leM4qkf{g~@|Rs-(u3IB9`>^TF%-=XXO@JS)&sS!KD!;*rdwEsdw zYfDRI%Y;a0WojISeP%q8H~ix?2Q8r21%-kxM1#$X znBk8UBsT5-3DLqUvjVl)e-H!(k<>D`wzmk=Hm>I?q6Z$;=1CDt>m@ZCquU|}A=iJ< zmeBmg62rM_GhgZ8H4_eh35k1xo5q>9U#YuQT>s7WVNXcV$?6q-{ILhu&lrjTf!kg# z+`H%fhMMGvW0Q$_76@{KGcoPLkMhpxlP*iyt$Q<{amLKwwzeZ9pFoeIUwnwu+$y8S z+YFSXr>Bdwt|$Lz>Y~63mL~UI+UWv>8b5hyx@u*)a~z;3{Z5FUYxl@$xtFOXYCsLG zj5RROn+S^<2Kuks16YU>#b0vs#XX|KOuv;AwJEY;@G9;y!WY1yq^)}Gf8n1x=(VX% zlxpeT!%z#oSDPsy`7|pd`%JG%Q9~m9_@^zeeaI=z9MzvaEvxA9V>?5J?zQL7S4VCr z#}BndGYZ!Oz}o2qPw4Be*XM-MSS*%E z_gd|Vee*W&Y=~eluyBy}s+#!uDINdX_v(g=Bh2xc*SRbLVyRhk!FSVOX~fbOb5 zA-;Rr3dRwD(@Kv^)bgH5TWVQ7P#hgIvy`+aK5N<4zeRLN`D1!Sn2<5Rnols##fNM_ z;&DOH_-c$wMt^HZd=9`&)b1;a>y1rJlospTN#LfDI;%%8ju)QK9t2ZHK;ZApX=D8o IU0lTf0nIkyts)Ts=@E{Nfp}LyVBM1Z?{1yWO#Rk7TB3{r2zo20tv=v~l+I_k`(td0RWU!XCT2I(Jtr1wtT5R&^zX$9`rz`B-_6*M5iYW3$h3<%hq8 zF~jhnJABL*JRCkaQ=C@5Ru&0yG__%|C04A=FqUvwQD|&r(Q3bMf$#pB9B*sGq^I46 zbmzj_Xd8LJ#;BW4;d8F|68QiB@&D=ykm0la2~gHs4($lK<}j=>s&hgh5G=l)o}Ryl zc7J7OXD!An)nZ zM{oI8U9E?XKMyY42?+`wc2-qYot{09FZn|91VX_cO)Fxr8}X=2;}iK(0IjbvIrA{m z3A6J_F#_v@&+cDa^9pT-H^aAEzdq#7RMi+a^gpe&2s@o|?KE!n-T%DW{$|jm@l_15 zDbxEWA8b!ICkGrS-o~|C8He0mROkaPdk z#>3+%VX|Dy#IlAfewpksnr;S7iR(g#4Ub{S9jO@AF&DV8O^nL3x_jp{jPDHidV$!I2~XL zF?#rhw{GgAiLX2}$<)x-g#;`2(r7}8K88y4BKRIB^ZolD3wP*-eBzv+IsL4({N(g| z)N!Gs{ntBv&JT~@J(A{Uv$nG{QCC;@Bini1rNI2B$+hrxcDBQP^N!iSjSl)})z4bj z_oo}|%G!_{C12Vuw?5SD)fHC5H8AzS?wJl{2|gcknQJ-aB`r}@HY&GBV)7goRQcEB zGWR#w!1+~r`t#e<-{w=>HJvWECzCpGIzMa|Elo{RnV_o^*Q3HRxCR^Q7?`R!I&KNp zOX+`3=YI13F_z)Y4^^fY4_^HJ$!+qv%3oW3aUlfx>F#oaX?sL$p^=K;Ebsoqh4^|; zPg~n{!^<&U3idqIEAv^L{QFUMzB4WS$Yq`#QR|*B=}m@1Kx0w2l+3@GswN(A=1fM` z5OQ;b}_N@g2>3o6~|xiZSsT8ra3zH zosP`ZBUZaJ&0Y>(fp_v$BK6bxypbZgRjI?NnU(7F--i^TJ|rgc=g*(%*2q}s-AlHk zSM3W8c4Mh*3$HQZI)UeNzPQA?E?Mjkb*yb|M~6Zl>t$H{;7KY`%4%$Ed^|nJW77JS zST3($rhHYKD{mxM%!DcUqWFQ+n^(8OO0<6Wd3X}~mEubwWX%1^3?`0WqX~b< zN2MGzMHA3k<@@|~SQjkw1LxaDD@SBdMEP>Z+6pKGk5;ftt3f!uInln!Q+`wYi!BE z&R*65y|eqC$zLexv8v{@*cEnfgBY#xeh2dITAj)?Gc)u2rH{`UgRtG`tdm?7TthJ9 z=88o*j)mo>m7Rlw&+$h|AF0@^Tg0zo#h6$q^7i`NWK8Bf?-U#n6F>TY^hOh10X>1? z&su$+m^IjHxf)BBg6ClZHD^0`|bz{TJR7BlhT4g8R4F3a_wyNKVDx`+BClS&fjUDV5xi< ze#K15-up)@Xiq~!qosfVx%4$=CPgXwqe;_KLsR!CS|Ts7b(xiWVSRNTYZ}{woQ13O zyrbX0OR)!?4a_!U4&e?1|A-WORgnvbyrkoFJI`3Ngf9h74Q0HY;>wFIOMcPk;EalxZF; zSdApt7VkF0B`yrUdiUx1Kyuce6?i_y?Jyk1B8f*%m-Obzj53mve00k0XyEzc3uF62 zVs^}E9ymVsVEcY^wmV}Nbo$HitQ{GK?lvqq5cv!ZlFU3+907~VQH&w_SQl`<*L)Oo zR?GA#;|qckqI`%^cf%PAx$Hb1l_FN|GD{+$rKO!}7?X9X3W`|>z8?9qc749jbQUdF z_Apa42wMaFL|uIIZF*G#U(3H(A)6shYMY`$a1eV5QO`q6a8IN%5qhJVo}TVn`kisa zmSqI=E7wo13-e#<7;H!L)Z1HsRT&Ehum`3($=6$|>!F9@q3NwVuCK2L^J>V41Q_cr zql0_ahts>&`GA>u>AmNu#K6{Ub3^+*iH^G~C#T!1Qx3GTrB38s!}?gE>*>}n9u{~1 zNE>h*tt4@Z1jIuO&4awb;Sg5FrFp^6qYH?Qm_5h=Y~TZCDi&blKUb4Yoo5pKy6~S1F2aZ1lu0c%a`6!?EDpQHuf^^NlfU2NA1$MLA|CiGKhitb z?|q$*-rf(nx|9R8fMbPm-hYFEb#?HB6ZfDvhOz#hn2Yl|p{d_e6sadN0C8lg9%Guq zDDyHy3luUYK`W(>ZAAdHP)7m>GzuxxNMyn()>bd;NKX{L)(g3~5Vl$OLR-ZIYW~mt zNpyBY5O@8_)C#R!(X$U3x{4-tf2Dl)=i8rvdcJ{yO#pY5dkbgBMjZ=VQ1^d%czSkL z>6NOm&hBXUJbT-9r8+L$L4|gLf<^#thz@l{5X;*C`e^dI`nwa> zd3W`_tqr|)>eake!w>n>V3(qPlD<-l zYHID^p7+loL93u!3Rws`H>MMF5zz>@lM7YT1HGalrN23jN|VgG$Es8%3A>`KOvV;< z^5nsJA??j!m$NFcK~vUxrcB= zYHvz^B*w0wXQcX-c&rUgfxfRp+57t4yLZ&n-{Z-S!JhZZfZP0ny_L%@-`n6Zuagld z$qri)sWF8ichfsk-don#zf%v1XA6RrjCNt$G9)mvC>y36oIV!gVxx5*RB`f+G zkwFG(zlJF*_3>A*rVXf~d-Y`{xxw)37%0w8X~UsaFI9F6-1}+!TPjZWKm9gqc-m-h z`ON#*6C9!2cj!gTx}d@h2eH?SxX#a_ilH9*yw1ai3EGBmWn5;k|L#eq!*Z2iuY@sQ zz(1Nuu1k~!Vs(E)g3|u?oOe5czoS;vb>4aC_CK7JEVU;rDIez>Hbpo)*%L^{7n@2LB4n|7qk!&Frlj$8 z)2v4V?W73}0K>utNM-7^m~_&e)9v3)L{d8f`Ws^}tnLbWm~@G>Wln!q{=AbS!H!kA z=+;W*oB)sN1NQdkTY2_!&`#nW0(di_f_Zv^s?1yC#S!iI?io}WSZ$2NyND4*`137oF z)tc757KGik)IM!oGje|M50_!0uP(YuB8}eDj8@-9^;EJCsPn;K6_o<;bl^64uzO)t z8ntJnTTsWXHBOxZ=O;C0b5;cq7o_h(&~L9JPhS5XG?ONm2QwFkD+!thrJ4s9D=AIf zk1H)|lyL53pFw5X?;YZ?MsCs@gZqNB!>%011@6moJhNi7h=!(SU>fa}9|S?T=T3GN zP0Zv{ z-$YZNDFZF-Uu}^(nQ4pHJ8yuM0`Bj!s;8c{dSN7rCijrt*R8f4$*~#9lbAG%k zALH%(5U|PN04}E{fX!rL0IU#EGrx4Me0WEHw!h#S`CvD2b7f4WT+a9!8u0guh*A2F z^m%EDtdJ814iWF?DpbQMKkuZIFXl3=&eO9mL8Bzg8}r_tn&$aY@#KTS)a6Fuf{28~ zr7WoRMxe*C^Qoz;J8&Y9yRt!7u{YdyHPLVOJFZ7}vgdS43qf6?E$)0iK=k}pswV{0 z%BhphNi9`5GOYHn5BcZ2^K%S?>&?y0Q+so*rBvvU_o9`JMZd#Misa-0kgEZ3?dKCv z!M-q}Zh?GNKi&4vcly!woo->LI`vF*H?kLt7~6TE)LYyd0_+5)&flQUK?z!h4!?-m zw?v@-0E1rudrK+?1nffVv?@kFES);cj*VjR9j;Fgvn4~C#_`b+-#t-hqZ7#oT>ruG z48KSE`ePY$4jJ=NAL0nZU!`?|8%~Q~Xe5CVQ2U1KRxwmxRy6`P`%jy0ak)!hUI#(} z6m`Zper zi;FAfz5Dk;SZ|x#Ay`?u?}eQTx#qlqWWAuBlIuIFu`Iq-Pfwh=TF-Tr6)+y7`!c;r zD6bu6;ucM*+`u4U^Lmj$6OXEeZW&Gf9TfXWqq^-#Bjb}^iC1!CCS~6zaL6+3kB*M| z-*D-d6Rth&Yo5WtD()ygfk-^ZV;xxI zyEZ6Q#si9b72ck;;Dp4e=&t$f&j%%-mP-jNS8rNw?zLB$#_RVf^t5KKyi=X5C!0IJ zTYX&{_PmB!2NU-~obPI_2gxS&VR=IjVd6<~CAhEY>2Z!p5onjRkxmE&fS9%VR1t_C zOg%(OEm$0H)T67d_B^ba3lo_?WS?h*d%evSwo7(6h|uj7@}YpJTv-X~_Y7c4gcMKZ zDZdL8GpY`XHW1 za?HswidFbl1k>m8=(52w&kso`HfynWjZcZWbY_N${>Hb~#{BL1-xJiMii0w!@bRzsyVQx%%o zR_o|D3&`8TcSHx&RUu|$*DXna#=tqrMi35>7CSUq>IV z3~YZgaA&wGeXK!`Lc#{k9&3M>_6k&`OqY>gO6y`Bk`<#RUj%34hR(>1JNui?uziX8 z;K582n;G*STaM-c9afufJ!m2Sj@g{`=U~z*IvYDXVYXaI@Cl~`mj)Urq#6`PNGtcb zmq&w~F>_aTaKcY3BB9+unhlJf#peCKYQ}BPh`EjNuY^eiH;F)w*k(6=8R}LaD5dh! z@}8h~;UBD|$o=Ih4s#>v#PWB2LG<IOymH4Wu?NOE zA(^{u91?=ICc4?3sBZTk1>%3(FG&AFjoJjd5j9wC_XDeS70D|NK0ft+9ptB?%dHWL zT3t4p!`}=EHwRyd$INlbp?Hor0cSf7d-_|d1lh)yCy~Skeyl&CoL@+j6QadjpgIT7 z^y9(?*o<^nX%;CQ#dR1Yz0`)ke{U^pz5EbQ7IZRDnLz`}h>oV3+P^N60yo7N*;yot zZaSa#ES9_8Y0$!7)a@FEh#?4NU&O~{tJ3A{xzQINsE9aC4a41*LLD>kD7i&47Am#z zADc!19HYLx^Y@bz-9x_FKrnI}jO08>nkjrM?g6n!+lFHnhi-wee*@^+xkib& zLhA@j3N~lm@_*o_3`BZ4pw;(`IH@Mxqb%_M8NbX4S~PojMh3;r+5iBzk|E5AFg7*m zueStV$ggy6e;q2aue*=HET47s+3icIVwnCk3Ac`_0L+N%we={XR`;{2IJ49 zXW_UH!=nrcKoneDiDY4qs{wvHn>$d5W8^yk_%d5XB=Nd^vpg3e>UaUFqu~Dj6iMjh zzi)&xc;eX6m#N)Myk2|woR4(~7$h@RQ*keO;>n(Yvtw0&;z2n%I103+#mNwHVRA;D zUMT^9|N02V8lks6l6eO9aJSh#HiZ^66@kfgW+UB2wRHkJZw#%{wDj~CaDlGGXb^fm zpTt>30`!5!n4)Dy*VLi&Ox z3q@%ZRb2jfY`-y@&#cE0AD&0r_83&{8(T{D_u$y{O8fi!JM@-apKjaLL=t0SG9V>= zcI?|vCLWgm;$hfC;G#ptq#`0`2_*2qRMxbwOpFjb!GzHY(`-$BbZUbXF(QKB8? zGNiwGGc{}WD5Db9xR1Z}dBLVa;LBZoVF_9F!d2Q7Xp%(H_vYmcvLrmqgLqyFh{V+n zUhj9h)?h{-U*mdWlkImDoby z9;t zHv1B&Gt)XRM*su%28_OBf~cGH1|Ui^mMQxt0G2pe1U(%`>V#4NA5en_QMZQ5VKSA4 z7X}{1x#yBEsD?g&pkJSrmS#2EHEWx+<0hJcSx(F7JL}HD7Fx6@0dW5NC+{AW)#^x| zVEtwCbOzi+y;;ESgB4l@b%k%Np@&0WfH>It`{~29=V;c8alrAABbKCD8ucj3weuap zIU4eMqD0#De6fZ-IR>o{5ll|STr6)4D1l1?KwLH%_TX>GM~1LZn>A!ouv`6iV8Fk+ z$4`BIHNeD_Ex;X)cYZE7K>xgEHR7O0O5U)GvoLT18o=w{(xG>(6@?zoWEp#)BLDI` zle}f6ens-8z(09?SR}n-EZ*I%eW*>!nl=+=G=^o6Fm`sin$eOfy?f;0(0E~3(jQ3# z16FjJ7UPCLoP@K$uVm2QsL3UNkW=2_X|qS!Wm~f0TX9`(At9lv^^x3M%vO2kVFazk zTMCG5X0@jbGx_LdPS52$z`d?{E6+YjWE~pRYFJieH3#)#kW3Roh zACpoml=-H3-S@ze$}PD3QsMq;Ea$=ZHewAleI$v9SKaXqfl;T?P1GmR{`VZrwW=wM zdinh^;~NdE89I`iZ2E+u*R$Hr$F%);0sY9jSmV;4B&oi`IGwsrIG zhQwL+v6?p4g0cW3nJmUUy)^kN$G+ixm5yV%HQzKFel86qXvnsRGA_nX9m8r<|08l8 zY0_60a@Csw`|ZEkI!Te|yknk1%hPRPsXZ8>%U#M$4;hsqO~MG`8nk(gDqUIfX2Lcx zyl@PIa};@kzy-VR+A-8X#7hJ8Vy9}%!BjQ2awC{6s0*!=J{}gH($|q$ zd!R|Kp^Ik@_{v?6V8?F~iHX|^dYAyYWGPXEssj~)HsJR&-)Wwus7GRC3mjTG)-{n- zm@Eb8WDqXg-d`z@5+2y0dn9KMnGIw~^%Qb={)$!g?>>nH$t<{tF@r(!eyo+G{czz` zF$)=~o^(@eS-SA)&AOB#6$>d!vOX^Df+BG=4NQ%!Qca8I&Z8k7759=1Azi?Jdu~Tj zn+a%yRxDF$Lrrvz>w$>24s-=m8!$KiLD2&0y+@|*fM9L>@~wz&kebQE{rpc z3vuv%NeS0i+cjb#}+j29Ka6$`N1a7zD^_QWiLZ2uEmfb zL}t(rE+jW{Om9*|kgE$0w#Q)Vy`u9z!HrD56nGGlX6xVp|R~NPy6vw zFpbV#VqOMp9piID{M7vt*X6Yn<=%9C2oG1RWKSF4)f=^G&zJIT@x{ydk9&-hP=fhd z>VzA!xjBB%XM`+aKcvF{IbsG8y5{osN;{&5V(D_Lhd|OeWS9%X9(A|{@p00V5=0uR zu@PkAgwjX!$jVt30_||?)F=*q6`^lMii{tL=*=c(;`*L9)eL1e-EqNTFM^5KmF)5d z5ldrnX>@0B>1%!t{?fHAkBpL6xGZUbJuZ$67rR~IMAvDw_CPRlxRN)ne1^`HxAJHh;(NTq)MJw*tmA)J!fl-Ears{j%;p_|5 zXYDgw+@mQ{ccW7KA|v7UUKoLP&QQl8?ss#$LtLI--G|5%0U=znGTc+ad}1{4Lj64+q6Zt1G%R=;2E zNQA=V{jgcT^(2+P^^4dTe~j}R3A7b0=Q-NouQ!m2W6MgYG8v2+Pa3jRWnmGmV5yj( zCQmV2cv1Wx)oS&s9jeYZ^(r*y+=6575W3VG$KhccyFegu{h0kAG%^%9XGZFU9M#&*=X@$EtmtinpBdWolQG2(Pc4v-r*-2 z9+ry3456q9mmqo8;-zqT5ipu3v3E1^nk)vKZeAh&G+h1OsQfJ7w=g{dOVTZ+X5DUH z^n*_;=D(|-eFVy#2}%cZuM4@}ZL&3kG*EtHwdi%PL`c4RKLy3?&{r+yt?czMQ$mvv z5e0%KiW#DknDwN0WsCLF3SQ|?N_ubwbml)idp)>17n1@TI}Kx^!kD_1-#$P_w^1W; z8#&gQl5&g^T&W=vvl1@> z`JI(jH{%vr)hUD2*VosQ#rkvrM(ja) zY;JCzIm$*V07>b06)1myiHzc)D9Eg8W;S1#HGT^{76!;Shi^DombAXx zQzJ%kKfWozi8#;pxq5@p%4~Zgai;*OO0?w}deC{b^Cmg8YZ&9GUl%*@41ac0F;%>2nA$lKo?-U5jo?U(DhDDfgj zuy4wtBHuO%D2l`7$WG+7+;+b2yrB01R3zlSzvDmk9M9)8U3|v)YJbQ|LY*~5Ig3xm$GZ`B4Z0pq{(dC=7_g&f-*CJh@>2$E=$1cmXxw~c}Jjn$^cy^5i` z!=Bp)Z|eu9bf%v_v6REGW!akVo3;I6YZs*5kK-(;9hKbXbpmo7&S&?Peq&;plho60 z9Hy+K96t&=(V-o+c-q)OUEV4`;ucbbkE>5M=CB*)dp8$D{5M=|V1~ z04dpENEGeS4!ZV`<8*yl`!WOXOS|VTvWUVXanX!0r|RZ@=Z(UUjt8J*I{{vt!z|fG z+F^oi8^vwP_opZLGWeOVh#0uY?^mWqL-M6#4rmyR6ahBj~I%x zaF?Z?&p|PmW`u;jNac6mraMEBESGn3)+54}KSm~*UZ=&iPjjStl=+)I_E$@PX`F=*GU%ZUMnEV-7Uzw=8`!H;#7 z-CO8z0Dvr|w_X*xI_9M|XvR5kLE<93B4oNnX2F+hQfr4Z z!{H^7w1jBjp1*u~#qUu(&lGP|!%wlk&Id)Wgf9`ZeX(4#x-a!c)q`mW)3wEzU%|%%SWifp$ImhNgmpH$S1ML z^=d)E4|F#T=Km(1SKpFVVXRreJmXx0Ni>hwhIwazvB;v*+~uA8atr1w=;jdaCNNpvLMdp@d|QSD^{M?uxE~-EouGlQLsy zmc1KE1{3BAd3t@T5~)?HxT`>u3g~*B5*~^kN*!^7TTXX$nV%#9(ZseMi(c+phq{^` zd^yw$HadQ@7(=}Vs65f;dy8C;Z~I*OpLcj71fsNd@i99*d&Em1!ws3b5Y2qnH*%>P zun@7MXB8P=ltCrnc!j_DR23RUUZuf{nC(O2fEP(BSkCe_rdzMpz3x-4-*v~p$XazDu%SYxIP2 z>sil-7g(D0>}4E(R(27Y>Y)RPmz^UUNIU!WGZ(-_waO0#$G^fs@Oz(VMk*!^9x!=?)#haV6Z}NU7+j z^PNM+aS)|1C8phi&mi3i@AV!6xO!BQ(} zE76y5aTDZem?mY= z2R8m)p7+jN4qyiI8Vz9Vyx)qS&tX82n6}Ty%ERN-ZVbF-C=#wAmgLGHa%C^v03M!N zb=cFgfrZEweX(QGr+AZ#E#u|8JyDk6@Gqi^GdB-YnCy3~p%e^```pi^arkuhn}@IL zcR&pcFT(uJrtLn`xwidqX6x6B9(WHnM30p;q1e%BQTI@-bEEJ_sVe87>uO(bZ*Sz??RDaoO)q650g zJml6p1StP0_ksCP-|@S;bm@6ptvc`WDzIqCWWQ?Z4nHW<;*nXGX&6ZeFBcm|7eD*+ zTq{U=27nFwob}oztMW0K>4g}k;4kXd&%fr_rYtT=0PB&EjrUHR>Lhk%RRDqk&JLww ztY}Mp8c^j*LD&ZML-WhaM(Z8eRHD()wRJle{=Fc)l;Z3|K^18a%fELxyNFx-E_IT; z%aEiz)Z&zKlyZY$3~%wt((%FVE0S*;xMyO$0;OO~-EW}eF$iQ^*v~G3n1*?%O|ba$ zlwbz4P9fXRCMf|Wg(DwlVmLluEfD915KTZA{0UX4dPxD5oGdFZ&lwn%*r0Ei^O<>3KA%6)gCcfL zYV8~spQp(9bR{K~jh=Mrwyu)?4E!7}j*ucTl%QGfl$#M^3$>@Qa~ zVWK)L92+j16J@qZE`bF@jPqd@Fkg(6Xx*p5s+%#maC$cCdGFuPs^qd>y%J2Pizjms z!7S<(`CwQxzW_{Z53F7lMA{^oJpH`RV^HgiC$ zJOy{iQW_Ge78vFhpRN-oq)ZcajFLI&*dc4t{^Z&rVe*Tf9(QZ5r|(UhJ&cbOEBP!! zU*#oe0pq2N0}v#`GG*a_4+m$-znAP*DRRces>`Rx%=kF8HUxQBXGItSFznk<^2yMP zHrCl$%sL-l_4OTLh7`%b!wKGz$tewTXzPv zikOL$!Y;IFX1?EjV@(l}K}v`+u3StX&lR;D$j+{}_NE^K=I`Eq4F4P09vHM4~t_V#=jTPff(Ghag70s4WF zMrK>|05bb>`yGQwySpKG*&vWeDpT;|RW@aWb`q;|Sh z{rtu{u1A7Gwvli%8V|VrZ9>TsZg{THLl4$KhLpsOur1twbFEG4M{P^dbi+YyoOzrb zuCh)=MU6$N?LcK%7haNhb^iU;3RB*zSBG`CBFb@iz?rFm36vc2zMf|>wV@Mb4|PPu zFil9soq);~(sp;XeVGv4(?`eNWkN5NV_~_1+hwKfHo?=?pd}QZLF5liTmlkkMibqM z`et=jQ9(SNVrcs*xz9ANAG8k$Uro{-ru?kIlL#)Cfa(2azN^I;*TQj>fSqj>viP}%JdB%P&4Pk)@Y}bd zd2_x0)Yv!#Uwy8q%dB4{9IbV=M3xUYxZ`fe(aZqjD}%b<29bZt$T>9sXc>Iw*VXtp z1quZvUr7BD*R9jc=Z|$i_3%g%mBYg2S!NZ9WvtT{Ny3K(VXC3^vO_otWM|!9`V|Qe zUwV)RzL?uSNpf41RgWf$)IUfbPyJRngsww!M=X5+(dcEne1UZH22eY1I#qxoy3uCW=(fJGB3(U6}YCzv?Rf}A3sSB<#ue0i-J3C_j_FV3h z^Yl^N1E(nwR0Ly2UrguB-!eS%LE3^Y`YZ*qe4FWoO}5NpHfGEL%biXH%p8k#9=&C= z7&5M37>G8%kj)dC8J5(G&>+Ou#z>^HvdlGx`pLy(bnBSM_DD;>HT~qoeKkEXxjApN z{8s5l00a9Pt|0@8J*(V3J-tAA8E~Vl0rNEtfMkFX-%;Pxt&OeiUfM>%HJ}d)kf2WP ze8n<*T+dYPtz%e6*L9@qMxFSC^)0D&7@`dF?6mS;QOh!l57Cy|74anUBOnf=ljl0- zEKYxV)8j$^&jHL{5~PpSibQ@0hX+DJfLzP*43~Ov|9zC`mELS3>PoMHscD9vdg=G7 zZJk0u0gu6I0t?N(xYM(GXoNHc+P!hV36Lh4EFNuWG*{?m zX#ln3tSw12Z+BReDj%Ypn}-(tiL@c{EN<1%J3$bqF!S8V_g(+7F)wVEXp*PtFQ#zG z)H5_G6}By#S{>7;P%iT^cn*`1WJn|-VqG=Tt@en)UW-86ll2IuRBXgK^t03t4T^t( zPD$f+mwq0i8mw5pr}N(%$3KGl5m`Ic11o^S7_i(5{T*Az<}{&KSo!QBUuB-0fT@hV znMxCDl4mVrzJjd78+@tB#O6Lm$F{DQ7E`w0dwS?7o{sY_tLO;DX9Xyu(eP;W5gmsT zkH=>(#K=!}PHZxe{b?adF$w`xMmZFw2A1 z{f-&7n%(Szf{t!81B&0MH@oN>&K5Qt#Jba8?@PxG0oe}BpNev1sipGjFg$tbTK5%| zbPPQTqbndm7pX7qOgB^*UjsYKNCDZPYv=8h1LUwCiWEG1(T26F2Z?v&*NkAhVvRj8 zf0LIt`;Zsuf2J5uM*iPRrKP4G4CG08Cd%b!N#)PaKEk6O8^``bJN1}Eni({fDqK?W z(vWwHZqbtMpifL28ynjwHD9-bL}>?;34rdz1)PZ_!ULPMAs`mR_?V$ciSZ?q#S-P5OwQj20=e5mOVdVq|;0TN(+A>3V?x~R`;t!Zp{IPk^R&v!8* zJ|ulb4R%b>He5Etp@6;28UBO=rsAaF3?slvDj$-z;1BJUg6!5dk}gwzk}-#ZQWITC z(C@I1T8mS$pHV8ciFtednj9@;8tC~UV#E~MGJjbx_>d@-66JtuitG8o&dR!CN_nSI zRZ1#w;ah4J?Y&I-8}OURc(5vYvSV7D8jX6nJ0y{}G4iuD|j8il3yUF3`*< za$(#Nc)1S*7S6bd#cH$hcrqAjNtt5hvl4hNfbupeTEhqVJ}XQR(N!Sn{a*d56~G{( zLxLM{@RCmpbF;IJO<7|~9o|Q-bpp4>z}h9@e$d{D@HT?m}LT<)mz9W3O% z^)m#-Cu)HUe~dBY#=Q;wj8%hesm&00hpzx69?p>Krx3m_5_dz|+1Pyiyw9yMTLSJN zCPYL2(W8lGk7M%wfk&RzN<`6Dx}`eMP}~sE>cuOk7RZm#t6TRZmyy^p@|T zQdRQhI)xn^f`aai&{A(eos(oQKcyvMmc2dE7w*Wsr8G3vTODWR7Cj)*CA$DV(Azm1OqzM0|^3u*QD(9Ri@2p)roz0AtWCbB*8n6 z^vd^O_Z*cbOFAa`>*_7jqn;ZR#J*lc?Pwc;5CC6Xm_Oo?C*-{;!{nCRt#+sZWL z4+N(7fmYFovTrj0_5AF;??1e6u@+S!(n5@ZF8}vEd*p$qP{zu8bii@0BdE3gp0T~5 zCPCiQOQQm_KPAfe+aN&sDVmVZwua)r{6PN8t#?2Q+YNI90TwwByN-C507AGYsFctn zu;@D=i^}xCeOc)PNT{5#E=6HW40Bz8l1zLu=$rby9=Mh5PJsaR{^_Up?N941R3LHT zkq|0AQ~MlDK-t6XcK?1-2W=tWI_TByW92xfMm__*o-SO@JYAG!`|m`f!z34QZOUz- zd|=V+CZ#Hb*R)F!*3EW>K~o*R0)FVh7fU#-^l=}KXF=*QcZJ(AR9i$LtawSMyRKvY z0!VOGpeGvxYfb&U-wGk{V6G$zA9aA5J_ksH)+eLgX4miH0qq3^JEH06xRn8dzdv5^ zSpua-s&|XN863U`I)DMY1CTDVUHSmLT$3v$VL0V)@tz~#GN=W|QrZcqurYoFC4>b8 z*f$q=gTZhyKgo;0VQ8gs1II|HfX~pMT#&9qofa!HGP129gP?!o#SG1bp#3#~Yd-?6 zxMX@LvM!xyQM%u7>Y`D=I^*D@digbN3_{`LnuO-RpuO(#r=jZuoOLS^O|XDUkN|ISzvH0QX%G!QgBkDcf-5ehhqU^8i+)djn}9ch3)S$knF+r_!W! z13l1TPnGU3e5Ku}-a4*XM=d-X*%7)d|2gD*Z*HX0;ysgYWESlKDBVZx8R->stmh3% zwAYFmVV%~k63AciWFe@>D7MRNm&5EqV+qAZ@!yB2uXCz-F_yz<4m|0gM=poL&19ko*=@m#4Hopemv`?r!w8%^6KegREbvJd(JRs455-bUh zNS)@S*9j5anpR3^MfG7HLDI1QmKZKecuz#F3Y?`f5G9TTvmf6(^>hw@&`VWQXao_t zm~i(v)ERskxOKxiwQB$pgt@U(UliutfHl{Zq)4g)ZZk64I5z^rmG(+Bu1N7CQvSKQ@hWr;tkTKL#VXxks8ZVPVxl;@a?FKo~i49n%3DMm85Az!XC z`JOqVf`+Tywb3|5;o- zDk6+jA;cVkK-b#3{^k=t>w|ZA_>qa(glGDwOdk#Orn^=++CcoT>lqYz^U+xUNafec ze8^7SKozJg3-6z`esKhgE5KzZ7X+}=`3g2aZk1X4-?Xvke~;4U z#$Zepg>rK^AkX9srn&D|;LIgKd{xfslX1G#{~cp5p;uiujE%~*`_bA*D%~ugt+8-% zb#8LSLk7cj!APnkB~d>Dq{1g4?F009@JwJ%3?X5bd*-q}c;_^Ye8E^-wS!B}u{zZ8 z=j^2y0mZ|UIgp2b!$N-m4yMfvaUVU~qRe40ITdcQJnb?t=MWvakTg_CqJ2Y?|1*{= zHYSPUwACQK?flb7{c=sgo^~L5+8z-1~(MiYw>^BUE{`heMk z9(8UavwC}#o@>R+pSOp#r)Fku7!?aM`YncG{#{HXpypYe>I5fvSmhDx8}YIrqd7l} z_l7kt1p`4j#Ci)l{FuCcR<|sXS}d@=5N>i7*gIu<&AE{ajjiMJFS1m{TA=yf0_3Gh~lU+t5MW{F8l3Vv!1Ik!_)h za^E5NySZcv19P3g;96=uemhRC!Q`(4qZjb{htxoV|3M+G*J*XuTpH;33r~r-HE@9_ zql_!aQk(RS2eG!;(qNUkky|ZazprHkM!l83G&9g)d+8;on+flo!ge-4>D=4_l<*nA z#OGv}ARgsy5xxN8Wtz){ldhpzaw)}ZfhRvy4L}y@BT9uuxd}+eGxkaG4zQh{Gn{JE#!_x9--5=Zl*UeZ-<(7J0#3YZ}YV1D` zFN_B_KNp`*OW~mvM)O;1lR zEZX|MTvf&3*m5W6Jtf`qs47o~9R_agG1T^|Z>1kw?6HP2bdNfzk+E$T9?3_FXkb#c zOnz<>SNnGjq5vOFT-#4WC&CQFw$Mbop7+o!p}gNB&=z1>A*R<+0FHa|tCP*I{)}@# zqwPErrC@*aU!&F3)=u7Z;z0)`uO4KNY!COSm^b}M2!PqS)%ryjP>`6EApmLL@|Ve= z>-MPn$arFq{IR~!?@&FHg*nSeoiYE(mV`>j&_|>4#IqH+B=MMo!N9X9LVHc?Gaxsh zs7nuWtNEMEi@*dNg2447(LC2XZ8V+Bw}$}Y8c5Dv zlKf-aMPvUTqP{zv>i_-!;MjX*bL=A(A|vY%LUx5BTamI08Ryum>?qj{O{;-yksYO| z>`gY=f}iXjKzcj+2m$>C05({5#A*k4djTK#x=QT7B8G@Y3KJ!xVj6lF3cqI)b{IOYlUl=l)gFfz1hpl`kiBS+ zLsOdv&4aONZx8=E?#3G}-RVdDkpz~cTxGbxBp$^zAWX$hZ(5j)D{U$Tb}j|p3rL~s+a zbW~zXm<`8;nF_59Ya#S2-P(`fS&10Ehe=*}nqhN#)?@G7+pAq!PM>Rm9|?)}U=!^_ zj@QPs!KFqAyXs<})!*Jwh+P>K{!ItZ1c^iU+I}8RsITEJ2KBn^EPV(C= z_O4KplRVgO3B*)L>nTY1%lm zFl5U%5~z|0e>T82tq>P^<$Q!k2zQNN=R#;r;Ff%9e~mnJ(D$IOdXK=}Dy2^pF<4ZQpM`M>YI)|lo3-JTvd6xb|D^oKrp&v@s@jXyJK7JvW z*ThI3_E}fxbr;rtjb;CZ&){#brtqTh|JSsAXd=p|Kd)FPTnSEDTc>i`SwkQb-mbWu4WQC`GpA zn4qkblt&==uMQQWzEC!04ht&>xaMqK-EPJ-9_TSID75pFjA(8azIAqXR+So{qtlx-e((tCz{gXOziVp>zDi8I{5wiN&b=g9=vBU-H zEm~dchZ0A{H5iRi=@7+`#x}0KvZWe-29)>8PkInFEj7rBw5b^%G!oad_hP8#4229V z;-~IS9vfEY7h1R;Nn3SmKK(m%*P6r=qJHFp9l2WSXt^bPgzV^X%zSPR5qFDF=vU7% zD}|H7AD(!N=7&C;jE0;#a^J9!#1t#|a0LW%1(J?D$|42-Ec|SuD%BXx{U=cF?_PN# zRs5JGZ#qvSd@X)nxIT=WcK1Gj_iE0B&2NI31=?_@dN5o+G$EvN#?-fr`wi|_tny9O zbC_U|#;aF4rb*|sP-@mp{T_49$_*+uePl1`538G|l?rvpu#5Kn+rT)8aT;;xy7t@e zKoi{^zi{sUQFedRDxwOwxZh|omucVOWBRDAL5hj>Pe`%>VFig>_D}Vx(EE~m^6moV z2-M=fMvt_?sfx4IdNFduhR377e6eYCoYM7j5-jBPTV~|iv52{dZOgvXg;|Z`VW7PZ z`i6z+>B~rPh?{JF!O6w8*|RRaef^=^)sIn3G9MJ%%^w(R?sL(1uiO_iKAOxc>WqTf6Xlg))$d<0 zw8`~m!y%{h(jU#wRe`p%FgEU44P)2={j+vmO3cf z9`606#N~Th9~uy=z#37#xpys2K$W5hk`H8W|K#c1zP5>bo=IdQZ%gt&KDp1UYFAHK zY2yCRCylkoh>A}AgzhuLdE~pz8g1zVj`)pBrV(qRn`V|wuR`R^i!6tl&3V5=y=tPM z))s0&;md|9+f=38#5~WQ#*yb=>QS1>a!ezCM!GrQzg$00LuO32Y&>UQk>BtYNT~6l0T zF`5c3$NpELlL>7LBn>G!D5+)EjVp*uI*;aX%Z4B zQvJ?au6Mh{v|1@-GYq5UexTp2HTw`cAdIDZYiF6&Chu2|>DfptsrKk^I_*qW@2|f% zPAE-0wsSi#j)m;sHIGqMJ&1;6B?}-q|E%*8!X_st4OsG1k6B#{lz0-O9eB5TD>-Lq zFDM^Mv(4kORrT*?Z%vb%6r63ewKv4O%qTmzv&|C^mx*`Z|I0nes4E^lWyfh6&A_*C zzm>p(i8D^XD%7>4wNXtx*14-hle}$+qQ)yOnJP6AVcbddff2E2*}zO&hF1Zbl)j_ zuc^EcNgv+aJl$)rV1K1zYi2u@*%m1H|OW+oWV=@$%6p1YG^4MT6aWuocejMn@Vi*d~0XJ7`!Wemf`iFbP$P$5W87 ze+KPFSFPjOzv-EMotjbuWNR9Bcp-EU%%Wt7{q0?FpK~Ezl@if%w83e}=WIe1q*nC7Ss`YY* zu^O13>1DI8qkk1qY$VV4a{`wtpVfFl@D$)vTnX9xvkIL2L_u;Ohh3(VhcFMwBDoE7fsF z`65X^MpCi^v{SjSVGmt``|rKQC(2$5TmLcgUe6f$=12`6%vIr}G+q9PL8G+w9&dm! zt}PAM?EMB~YeL!^GmtR%BbhMK2Pd_?*paWosexVy7pfp0iC^zR8iEbHUsDY8Em#ao zP~$svuKa=~tfLCaI6E8e2()h>lH38#Z=$#elRhVVXJ=@^Gv=ria76ZGDtZ;TdPY25 zrsd@sBT;JUYv!=+oNq@i{_IH=b&P&rCcJysGCrvR`^|G~&Fsi2CDRBbYMJv^HdT5K zq>bIYzkhK#rssv=z!~Vp>5hCXh2$S+CQCqljq*a&Ekh1AEam}NdjAE=PHv8eI;!s| z7})(eIOUt3G??%fE414FlWsyPish$hM#krtlCjsWnl~aYk*mCaA))aF_|-p64&sFd zbW9s_z;pC-j9bhE(GkV5oJl)wwMohxr{vt8RyksGG!4;k#+E3ZaSu5WHgh@P3hC+s z#H4joxgP7YYd9(1*DZ}1KdfkiTIgypAkUk!VbQ~+?>NL*)w6n>Vsx|%Fb~a}bG(Q+ z4SRbm%gxjPV^j3ew!O83Hv@ot2oyZv>n-;faoU@UWAT!s#F;w8Kvh1KbnArX&P-xX}LFin7F`DR%q-JRM*EWPx@(9NDT&2Jl8fDXDFD^5t?IdUCrlfe= zX<|x=P(@|l31$no+W|rOU8@|KrVAty;iBi#EkRwNA{x>M1*{XxfhIlwUHO~89}H7t z?KG84-M>IerixWc4d3;xWy+AE9<% zPEARvEi!xBZfdz-G0nW0pdEiMd-Fp+p_15i@FLmI^UvS9y(Q(hj7Qp6CVeumhkN4u z8eo&O?9;2ARgA!Em?XHwb_PX2T`Yg&+mkl8wd|l$pcL2(46fLz8=5vIAn(P|$=P|# zF;{G078X#EkldY)!!wn+f?>6^59iaS+2!TH>zPk@q8>HL3pt>a&Fzdx$kVGjz)>FG zK-2ypx16q+K0_~qKY9dm%Yy7a+CS0Y%6ocJl?&*nemS5OluRdU({CmnuxV5CAVmS4 zP?$pj)z5DZm0!{ZY%jdIyn)u=ZPk=|=}WKcNv7W)*5H~P2pX5)lEiQo)c9tDX5bhs ztQ}SPpB$chy-$-AYp}+G$F1nl`V3MZXN6Qqv-)$&{^s-c2L|tL{*Ye=PQ-Tzt~5Kyxv!0%>~|eFcb@O{AG^zcPyVIUSZ+F09a9WB+_{$O z!DKLR6Gc@6YtcMcE!col_<|<`r%}X|I>dJcp4wd*N}j>Ff8O1gfB2^7neW^;aU||B z7#bYL)a6BEgs)-&9XVEpK=sndfw>lAE~AI{yHISSs`vVgVvCADk7k{ zzaxm?pe(?ja@%-hhnak3#-5j$d zp6wEa55`VYeZnE3X3RMb*}o;D!w6Su?!0$p=Ec5a*J+^ECc`9z8xWP3t9zX$m4)vP z(b4eR9BJruOY$krttp700j#=N+l1pp<9g7q^wyz^WvZ8ptScuVH!@q-k?UiZeX}rU zsQaz&?Z%IEjPg82Nifp~(3t<0to?-H9bdb^=^yUcM7shungPkf@E$Q845Hso4@$%y5y0VJ&-$wOO*Fvi-jt&2bipIJ$5?V%^ODAdlf!ZTm* z?xer#a{N?xb(p0cWIc%uek*f6Cr)=#|ARIlA!-m%lY3g@Xq>{o>lz8EY|&cD4J&b2 zp%0_YpE_QfC{7Sluh^7uTYvvK_sMC8E{{6Hb0i}>lc~n9RRcG-zb|EcR+ywgfAb^M zX;2ZisL<6y75lb#=AM%A9b!X8f*O^4l(B05$1+d3T^)jJv`@BM#W5S4ci4;8Z(BN) zu1LkzzXFdy=(S5ny%J%oj`Mexa9(dLHDmr$OYlTge5de-L9&f~986(^Nom21T&aZCMAq3VJu~ypZ!lp={+6;}%SBqe0=gyZ z${6)7!zJbSyN5Vyp2*OL`?cd#TE`4*J@xnOU`rrD7o96v1MXE_bm(2c9q-js{#lqS zW(@U5nQ;Hyze#+QljEL=NyhAe>><;v4%Wnoh~DS8`COlt0F|vlA6ho7R121{^wUF{aLd&82;(Q$%EtroT-UdlM8 zu~;+YF)V4B4rFQ7!}oX~ayZ=hdhaK0`Qb_?$nzvI?Ibj)w|~7xWEtyYN1)gA;8P!_ zJLIR258|?pC|d#CnWuaQviaPmSv`#)qRpY2U4(_AcMD^dlqv%ffZoQ3pN)o*q*I}6 zbem6-PjE!gXN#%8?UoQr(>QHaIAi%hI`EQe_h0Pw7;u<&-;4D&j}|>NHpS5SAKc}V zU0@$+cyG%~cPNnnjK#xgRV+Efq}VoXD!CG4E!EAGDc!UuDyyX}{L0Te#t_-}X7k14 z6`?~_evc^5S#D#cYjF=oA>yu+ed@R?^s&K2<@-FQbzVrqt z39;T~c)Ly<(gnH?zRBR-_D2GjRf~)6wC|91wE}OQx=OlDW{O;ha8^zNY5lq2sNz1Mj)ek0+GM>tPRWTUl67Cl%5s+b(H~IGZ{kQ(X~ca=UVO?x26mF*|JLBY`t$`^Kc#BiwLyKQf;z& zj2WtzHY{J|qso;uvo9Zv>u+GoKhgdRJ6fwOs7B?q;X?_L^HA}vguk~Zb7VZEv>|yN za+=e|vw{3sQ+MywGPNMRK2?pOjxVi))`@gxj^6MI_W-IsB+EUx^1J#D{+bWKkxC};0Nhu&V$WIwwh{O@(i9`T6$ty*A%dRDXZ@uYvH|sfeH}y6vGmfI` zRDB1_)MMzAvu&TxwsMfi;*H8xt5H}nBvD(g56$$;{tI%K&|LTafp7k51}xk8ft;Arv7q_xK%FX^R@0mw3J>1 zQ5#n2g-sCOB==N!Ip%g6v;6iX_HLd^GuhP%v-NTe=tz@r+^pz)p)Q~vvai8KwCrsN z(>6Xukm@OTu&oxJ;9fa(B$YRsbo89nC=wiEaGLI2q^C%O@~7$u(3AhLq2|4VOF|uG z%Tdh7Mk2RzL=0@@jr1Yi%IAB1pDgN0TgdM=^E3Fp$BK%j8=c7tV_K&)KKIb__P z@o7?(F%~6Uh?RspDve37kBB|dbSRgN2&6jI*fjH`O^z}BDF)Mz;0gbfKlN|>_$}lf z&O)N*7)gI!9oN3LX_h#tiM%cf9Weo&&(gX9nw!*gZ}}Hh>%F|^J@dI&)$?x{2Q@LD zO{z9MMa(H+L#`nf(gzb#Rqr5=b~50VtyIi;qQDom4I$3EJv$(OU%XG$FcVsGGDac*-Etq1-18Qw+L3?ToF)!vHAoI(f;Au`{1pSndA}6kQ z{DL6L8|AskK@l5Qu@5p|pLyuaPw7*t(gZ~c>PDOnTYSRl&Z!^aHw8PA&gEOaLZ*U; zdpnBj1O&XqS^Rs5m~;zD=J9~d>f5;(nFLE|O-0^Sys_@{$AgIxYG~yi!t>`8>Jc)t zq6A8Ub*Nq7oa5@at7jua&dTB4`KJO6h>2}B^hU@_lAzFT*_*%RAb7It{vb^(J|d8F zhxa;!IvGpYC18Q+gEK1*d7L5+8yT$RqqjZY&qZpa@;mey9SKp)52>}S3;9e_Xef;t zjBi)PEE(CN#1BWF=&`93=Kk9ADYHskO!<#zZY|zcxvq@bcR~_?6Avb<8 z0(IXff2Y0Va6to&Z+2cs4xno{NFdE^>9-;IN@$DnKff>GM#r|J?Cd;A;vFlNB9-^h;@{@EiR4u2<39y^NE6XTIMCX+SR^o zs;4nqt4B!l449-y^}`A?8g8y|&DKeKPqxNjB_J1n_yoRpk4jg&6shk>odDBN{r%yl zRSg6yZN@DpMMPWiy;9^(%8EXhYZNiOhT@GG+A~X!u9tinl6z}>6v(v_3mVE|vWv9C zCwCtfwA@8qCa+Rj&pk?+CfF`5tYKtiBx;&tRQkVng<`hf%C!E;O3F2%Piph-xJBV7 zf!I64Vuym?5#(hr$FF2CUO&qB>M%!!rLG4lTV%m$rf=$F5ON{^gA7D?B^E=JG`*lq zfAjXs=?)ueb+AoNW`x&LgWR;- zV+dLOOES7qcdRjrnw?x9XP<|q7f>6Vq++AYUkE!M$A@Giv5>FYv2BzOqGHo|AJ?^| zHuQkH@9`;T7<^JZ^|*lTpY#C*T1hF;vM5S1&5yW7IVO7CJKEV*C_~Rq4GQ(mKMid1 zXX<&3mI-#4W1$&OFjz?>Btwto$!g-G9bn1~V;x0anBEd_Or!9_6#{Lkn=hQvXIM4pk*#mgdmf&n8n}DqHkX8p-Cw{yAAacYzbHgMoP6Bs zg9rpV-zx!pSr>UY0?0HNuF?{t+VMC^(zpY%;Q7**XPCtqDO!FcYL4S_??fCCq`ACd z_Of+VCo@bhjEacF?#X>0;|%9AU~_j_-UlE}>*g^TegY)xom?uteHd53hA4-}g+Y?p zA0Ii82Rsf*VGb*gPC$&)ReyWMqC4G6Xe!3czrG7Uzup1UN~ey{BlUFD9ob9l||0=N$50>=gT}HRG?qq`HyV975D*t%MM`a~_UpkXI zZf$S8<-II&HUIn0WZoKh+_4@C*vbr+yRys)kezuie1q~C6DjEjjK4S%&%2j{k0_w2 zcNI3^Cq1B6G-n|WdJe~hduqRHVUgw4>p6;gYKfdM4zmO0Qd~r`lDpxdpQWizDKwRM z{Wu><==fN241ax*tl@1K#`1wg$@L#cSu^u4$Q&6B(z#ykV+!oid>vfmja68QI7$TY zk%4sd)mjF)ZMOWzZ8c_X6WuC6sky2D7q< z^z*#Rj708ST}HCy3CDNrUhyDf13ps;8_b>a1dO+;c6uaqAHAk5bZWbh)AJ16iT(&B zyZQyfkl#zfC7YUe;+e5bPxg{wse1hj*$#EZx5vMZ zf3;nCVsiS@gR`P3KLy3)D)R1|KXpQMDr^lU_Mcvgh=^D#K-6;HaS5G%hacbg`wZdA z7S4N&N@|9%`n(mc17|>z|IN+-Df>{hNw9@c4&YyLSU!ABGHG31KFCVw@kj+l-cB+h{(@S*|;FVM)l61>ZO>ZLW93>G{0 z$}_?MBV`xc>82MZsFt4l%pf-eA>|K$QIguA3nNRUkRVtDiN4{@gw5tr@_ushsXqHU zXIIP$MNSXWC%onxf=Cb*mW_#M*NGhV}U;A(EHQveMxDE9=U#nsNRW z-6Ss}^!Z$Fk6Z&o!$@(A#BtBv-4T$YK9dx>vi{)pY(Pks4JxOS+C6$3|89sldcgz) zI88%0S?@pp_rwW5>lWP8YnG>9b7bBA2%jMzsG!k@BqF(AW`k=o9wkMiPa7K=7#?tl zFk{Hc{-p&N&GRlJLEfw;x?0R{Ee09&a=vD*%#L=NF-`p${q-fz3&Y0lezxs-RFLzv#4USD-6=42iM{y~a zz0yGH{jTpGdFw^oC9jU>4yIZuPVw1dH2N2iI*#G$LJYGoiza(V^GPjf#hZRZRP=tD z`B^3;qjP0Mc+9VnR0k2x1nyJq%luRk27^79`#EOUN5!<5A&*i|^g2>~$~)xSSc2r= z2#M{q2)hQv$1~N}1Kg;9unlgS$Y>Q(w3^HzqK)JR`-CY?$v)Y^erW-UkQy{Yk$&RJ z<GUbDE-p&V4W$ho(2J zq7Za+PiAaSf;PO`7itxApE^$87uH5>;8BYr6%#am57>xkIYa!{0`05IeY?akv}_xri4cs5a^nL; z{;sLKxfc+lt6^vw8l3$Pa`$lgdiOtnXZzw4=!>&% zzpUPQ{a&UZT@AUqrF;UfNg{GSrKu$^7e`4qrfT16bgZY+=h~k6-{g@shMg_6b`WQt$J$DuY@O6xcVWLpl#3I$re^_I>edstl9JG)vLJR z16S6CbU|fpjbc(ZUIqF)Fi=hQI9K{^!P!IaF*ObbvL?YXTy;b`LEI@PZMLD@@!Qo}&FX-6Nv@=MyMIY!W7JiJ6?I+tZ8JyCnu=iwcnbY(z zJ|9?&jReyHOGeCwt+15Tawp7@h!VY$xmoTI`D@F8^0lSMMOwK%DDm%(JU4nNTi+TG2jtJ;Z^Fco_UO}_jPDwqsZ11y zl?UybS<0pELWItPoWo)3!{$&HT-hL!xDb&hm6TC$B3Ql#yQ8w`d#~XbRdWsUGx?w; zWf8o+3C!M+^bunD$n=a&k7FVP@`?-7WF2NJ~LtKL$&|upikn-%^}((TC}TR_wr|jEu7^dBpb_`h&<1 zwg7Y|Q)#Xjf}G8oZD=IYD)Uh$W*m24sbn&ZAhUH0H8HpL$7Y=gKRWjgp(f}<65@Uo zTr`SQ@lnZ~Qyu>}PFVNf5}e3sNMP-hTz z=Tr|-soSd3+P)U;=Gg&-V3(Tt1Th)S*oH`HQb-`;*m&8(bg4ZWdY}Kca)GBJrkwPFL?X{zi|dU~osXjuMlaRf0jwNXrRv)D zC#kh1&~Uu^=Np6WrS&x9fCs-D)BFWi6d74_?6-P|P`M1>^}PjSloPIOX()v>F-2j z#Xvbg{lyjG`u92OmiY(eGA+HN;CZg%7J=6k7Xb5t{XvbgyTxlMQE9C0{Et@|@4*87 zmOVm=-138a4#TY2q;;jFe0~McWoazNAVOjXxW1d(@8)0FZZ{)R2gVypDJJlG+kqfT zc>}=r?^ioeD1VKh8C2nIJ`M=*z)n*~qK@7G^lv6W=WVEIl(s6bu_X zJ$WJT0y|ne!Mma0CAkoF(QSRyP#-1gK_!NUAoc{S4X2D*0kgf#Q6(j%7tqK+gl-=1 z-OSsf{xKWyyoY_wk14uDw>+RWvECci#nFx;K0TwTND0Xkn9ZwZlFa`GN(dh@AwsJ+ zdGWc4;A@GmPN5#4>`yZNsBg!l5AxJR=EDe575jFf#A2|=z$lo%LH%)8fWFxx?CEq3ZVya10&(Vyhh-u`2zT{G#A_`9Ae5iMS zK-cQkV;Sew79j>w-;47QI8q{T??jgP&Oz0yGs)veVNK~D^Y&7sKDP>*N1DB5UUJlT zGN#kpOJMSHTRX~0zCit!WDw)RhJO6Vse3qw~Y zk^jmibgQUHYBC+WyNglyDc$nZqQ0JLrA7GdvFLE?!=OT{As2B{sHlYOprU#M0}>ug zHUsbfAYc3Iv!I=|y-6bB>eHkDp1Kfhpzb#gO6IjN4GS`i!#grVHuYT^0P=yncXv57 zRA_+B@lE<&P57jD;fWC8Ydx5FS5E)LvdFo9bE;doJvnkd?F^g(5?(OTPF1LCo>Q7t zB12`-&Fhk6J|#J-gPRfcmJ}7w!&Lt@q5|L0U@Ri>t#}lKGHvl!o$I0B|Ed!R5u+A0 zsDIaY8WtA+@3XfpdS%>UG~`aaJ;i*Yw{$iMlbYv_tN?23G{(-fq9B{HUWPdi5kD@l zcle{B2S?Hjz>0hP`WaH};|pva$n)X^P~|1el{1==@8e*d79ugnw%Ls>$#HgLI+=DO zNI20Ko*8hZ`YGY>8`N zvSFtG?6@~C(57IYCQ~W?VWmY@CJ<~ab@ATPc+pYLlViZRNbC}*a z)F;NqBP8=_=)M={XY$b1y5W(AE@2Z`+--C7z8mf_EGzdGiY%-BOWPP@L;zZG%5r$P zANb!xlIdO<`()L=^Z~SZ8Hf*X4v9V$xo4Pt`o}IX&1<=AIxwz6tb!#ZOPY4|cKtfb z;+?&)Bu=b;`{lhN4Yo)NZPWeek!KTvF=+7eev&$`Q2ojq3?96L4d(oKAl3G22ME8T!5@}dkHA=yN{BKi^smah_sh+X1IEkH7 zOIOcxU5%UwlM#qdMnax>BP@HnoH)+&-PB@|Q-cADYgpFxNr?QBYp)kh?BT!$nYeSt z-u|So*7WNIMV<`POwQdvg$94SG38$j4|ZYpo4A;W2(PN=XnpmcAB^AV8x!`g+;PPI zJFy^Ikkdr%`0>SR&@!@nmtGbbuqx|He;>bCSdjwb8Td_s6lSIE*e|v!FWSHpx9~dD z^&8v_o?8xIm9pp3R(fF~BWs{7g!r4H2IWJ)s^#p@naF!rKa0>fGG9K61Hr-YBhq z2)k#0`-M$w(iShKkH}V5j9kFr6-RvOeE@a&v_gr5#eGht)AKoaAFz^6&^KL&xz zyIdg_%XONk$Xwp4f+1}tSfX)%2?TSu3Yen7F6NNxn57k_){|95u(U+NJbCtw`$Y{>qyJS7GtNR zxRWw)9$}i#rRsLiz((iM;CN*nnqn?{+dnv#9zx1NbK)7fU?qJs zN*nbQ7qQdjun}^i@j#Pb0LgN%41RHAxoz`)wQc$hMuqF&U0Pd{h1cDyS3g^$mmy@r z;02p`YsXr(LcmSw7#1__+buDeyeW@TC0a0+zboZDqxx#d>%ffx=Oj4t>0xssDHDXI z=ZwaV`iaHWYg{Jm=UPhE{dm%Nm>9`g$khYRyaa$Jr%*3ZO%g&8R`F9GFPzAEA9J6B z^LmFJK!y3Hk9f1;YgzyURb2sDMgTGvV>s1V?IEJJ6W;(` z9kbs}s1RSrvWge@E~L|bi-l_7x?SC^Jh}8O*TI@Vzr7;Al4_7tJ40TWd;)&&KnTcGoVqRdc zmmAWnfSeC~7^p37dWuMO)v{9_{rR`M6Nl@!G;Bpc$@!XqKjz zM)l;&kI93EK#cMw<-pD1R9#A)6WZrg3b}J&)^&7Xr7o=S%=V=yz?u}gbAKvpPNbbT zf?j2#Kj{>e5bKbk%&h-7louz%2_~fGMb@sxIvj^1F(t=+clm=Q3N&CO_0br!Mk1HC z64gc2_+9AO%hTc;<|>-9BSg^Z^!iNW1}Bvv+rXfaS9ACm;=zfxnMVBNrBBG-RiuLi z?A zSe|1Xwz#Z_`vla!{H;0`LbStKV6S+%E^su_s3cFC*7lLIJY;gnQ~P5Fz7m-3@8|aO zqNbSOQOZs_c)p<86}i(-#sN`{psJPCJcMFQ!O?u~L)4G%BQDb?`?xr+X;L70nQy-p z!e}Jl>qbUjq=cGsLCCle_|rc62cTVUFCb9Tmk5up{9FXyFJR$Zz%cvf0IwD-^Uoa< z!bKJ1afB1k*DlW^iR*&*5R}t~p7%>GZ)&h{tOzz=j%0klm#sCn?ksCn$B0Hv?9@+| zDZiQWGVY`Bx?7eHlkCak3SiF*YQDd}a3Vk9cO}14pCp+fDZ5hy6#zolk^GiSXg-iU z$V}-5aQNRl>4hXR^i@N>=-&k}@V%y6lI1>HqgLR8&c9?lj)Yje1PnSl8w8WoGg&@H zMOaFO*poe<4p}KGjgN1IX8j0rg=A&Iuv(L3K@^WAKvivjl6fWm$hxkyAE>Fiezc!*NE;J z3*K5xXPsR_sqjh>5x-%W$=CGyc8%wxOyaHNWf|7!cKe6QimODZ&wolbhr0=ok0N7N z-7Cf@9;2BOVZ`M)BRh13B?)S~F6|ka9r8ve9Q@k7Ghob&cxrKdUM|$`JfX`yka0Z^ z85jATU)x(-OOPbP;=Tg{37G*t42k}5^4Oy-*4TDo$N2)telJ*Zghx26U*xS0Z57$5 zhAhesQZuZa%8TKG#F8>oGUgV3E5JbWG$T zF&M@@N2VPcJZ-pWamD!n&<5un9+1Tm`AttBHb1U+M50GH@Hz(xT(X}(PG`C?a8vnw z)#i9OBS=T3YO-m;2Ib7vylyb&UM=2c7$(z1g+?)@jjr6?S+|1z3U`5mM+P1!Wfm9&ZZ*d(nU@R*G{)=TZvK8( zYEeC5@O|P`epufN5yo#X{h&Jje9Jg@>yi7%wzNNE&PfxJk{o+9*rR_1D?mnT*xYze zVb}!;kD&5TLm6|Tz84w`Oo+j}>G>`lj{2~tco9~Z4m#qS_V!#wP}F9frFs6}AZ%^; z_%t<*21u|M0+XYqBlh`+OP2Zbz`#IkCDt7X#XL5Dg{3jOq!c9vnvs9swlz{h`*s`o zl^+$w!S{&5yb?1!G7e3lG-0^0#sdfs;F2OeqLQwX6N|{Cv7|_R$PbvGSnPgI|Ir4I-!x?%Xh;|oC$>7~PE_ldTCCJ?5TFIenRtm4HP zaj`1UdlUvs3b2*o&Y7Pf`4p?w!~bpkw6gLe_lvP>Rf(5bazzBxAMhl&TiJ5Xmz4Lk@AH~*0pHHY$xPYX&$;u$Fj7+8mb+9o`V?e(&(3fO z8r19fsf){WhBisFkrg`8F_J1VV!5#bHzKG}QiN+p8eT!5Zq$(|ORYU31@2QnID*OYJKxjD8+RF{f012>fQ##&IZu zO1UvZiwyVebI*IGTv++t4>l$h zr-dbGx?Xh@{YCVDbu3v_!YwUy_pbhLaU*hAUr?n-%yD1u=M(&0l&(2%2;7kNfpSofy<>OBmCVk!Umu=3QQ0Jt^yW&S$tU?b!6##LQRYHqMYp^8QP>QGrdigetfH(ZUN=?U zh5;Hb&5wkM%LUU%ufqXXWKG5brnQ${gfy_mF^NAZEbN_|{s=;JC87Pg#+yS>e>ga% zSdPkB<`39n5N1|K_sG=)vd7k@EG7G)TJ^m~%3Z!2kAEelj-FlP-wL>Ulq5p2oD$~0 zvvIxTTH)+*e_;NpV$*fqinE#{4t0e#Tzdwk#XnB`vP{0>puHD}eGv2~cHj0f4dw;l z%aKQ^l5vM4;_XVWBo!cAg#qao1jF`gz^>;AW%RC5s+eIJm{TlYYikDZ>Jy5G!@_!0 zo`V@iyYHHh3=%$0+DVybM(|fnS8EHbSacnTkL-4A`V&B34q;CY=ha$2Ta%jluJ}Lr zeF*TE705V#X*4$GL;m3OPtr&q&3*Nrk{A|6a#mGS?r=j9dh#`8E2j~a7??2kHODh| z|8uaE47H5^@^;P9IB_@+xH@|?hJMKntdd7KA?%_#3L>|J6)+OfR>ZAEKO=v}im_ zsHFtuVVNGM@Yil1PsTX19@P^}txqwDjr77U6Vwhw|9ia8>lK0YTMYafUJ_yAA}|hp z+*hoSE9iqvk8?1K64LMgrZ-U{z(pTrjb6Eb`$+y$ub;6BpFKAf5+q+KJ?&baITY9_+7+p^pKrLlRj>N?wz((hNM;H5%i)?Vr z(O07G&h_Mfa=$!xgwo5MWjW4!Bru#Ipy@iFMW6-~Fo<8|HU`E>wLxam>`yXFhI^)H zeku;tL!KO8c1@?Uu15>Y+k=UnJX_ZBgEq;yA&Wlb)7KM3G8K*Hi{Y&vUN#W8MdYZ8 zA)VB3T|O8E(z6JTk_5Y>53OU&5bI3tlM_cQ@(cr!87jwabgzEO!T1N@cUPiW+bJto z#tsXOQTn06x~*<`fqB;iNNqK|G-PP5Ik4ZSuP9e_9A2f-{9yM>jQX)V%J>(sh@2mn z4QXc~ee?74>yn60;CRdPMZ$e#E1qq|AF?`U`~;~|?#F)2F|wOJ=lIn6{7myu(pL5T zrcI$?NooMQ++zx!e^Y)}ynZ!gv{qarS%nhs#fD;G_(a~$+HwwyO4L(16WtOPmt=KR zdZ9Wc8!Q^yU$WCj0_R);y#Y12Xp)q?MW zA&-Iz-AAE(x66Pmo>?K{r`F{ljdy|Uo`;i)3~!ZLj{;rm6~&eDne&P*m2c;9&G!`& z;c2s`@dDJ_R#avYD*4pLSu|*T2MHN951RD&Rb?2A8VoI+!Tq-u6O7e@av|PghpT%u zA_}6sKZ(X=P-om(A%um$(4A>@X*4b9g|p)#68;b z`8v!bH;`Q%R;y6ihh`|hMDFVh#6>4(bN zZ)=|iJ}c zev4tdE807YWqP2-@#QE5w+n}&0rcxl&!8h_vgnXuICE@czI{UkEwl^?#af&PpYh#POM!FwuefJ#+&gcV&(V zO~F_E8F%vX>5UPcnLc05L5;~couejoj763hE_stbGA5T=TbsvQe3HB8YwfEhCFJZ9 z+V1aIlD)pNiuM;~>3bu^w0HF?is#A!WT;$~ryxz%^#}E4W_n$s%32H;+Ns=G6fVra@S% z>ulUBZ-Z?x<42?t;f|z_Yl`zlLCYR-Vv`-dI=MuHE=gTN}9TXICEd%FYx5? zn#6ZU#ixp>M^UoB>on!hfspf5gXxEc{B-^TLUVmj#Zi3pGhL6aMcAuoT#}&S=t>@p zD%T_M-#7s|aK2U~GzI%Cxvz5Z#<6|~4uK?o%L8%CZ%X#NlbjqJzo@<4 zm>Z3b32zo8seAZd*KDWLrpGhXS|*n|HDHpRnrVy^dV_{^H5*O=7b^v zvX+baCN2eB{P|Ckzv0qQ5ypBHTc-^P_4gV_G(r+>SkFzajx0Vh)&63igRNi9S325^ zbnUVb)e;Qz&OG8zdK&5I=y3ev?pS;59jaRm0R}0^tf`zCsxcSBJip{XZl=dE9||V> zor%qsFefS|;UrTRO;dILoAW&6ga;=pc||W#Z$klLs7U!Vp?kq0PBP=g<$TS^6~Ba| z6sCWC+`d0A{q^6v#8L`2dXc{|R3+!VG7AxN?j!NMmiS4*(cfDfDeEe459We#LR@2^ zCf^+=>|^8~>)bn;Lr=kbU&|$X9-I69pz7(Wv4)AFHuWR>k>hLuLE$${%d58*2QvP` zbCHK0%tbO#FV+$0Ck7#9<-HETMz1*B5^#ExbZgn8yxOkeN_Tx8PHI1bu7tM|$9krA z^S4`9AVqz|#!8TKZ(9c-+0Gdkq0&Ywio@ zzXG!S8y&W+O)^drm>?xUnSgumfDi9I_#uxt|QRf{` z_51$ubB=ZFJ&Np|Rb*uERaS)}J5(|gvW}I#DcK`rM5s{q$R;UK_DBQA%E&ms>-70P z9>4w$XWZ}mzV7RKy`C>$q!Fr@b4Bg)u7ZVxtCs?)%MzW2JVToePtEsA=xKgpyP_L{ zjV#d)aHH_@lsr<_)zJ|&Ah=r(<4d#qbBo#i2WudpSYUy7upnF8P}}PVD?u@(ruBQO0ahEVcPm+e&v4&Ar}xHd_l2 z0a=-TR{wp2PmtlDh0Tp3i;@#Yq8G)Q`489laxyX+>Oed(dbV^kAC9o)C0w|_q;Pr^ zOj0~);4FSt(P!wXI-unYP**M-GK9iEWw^JJ#PZb+oi8+!EAgOeJg(?c%FXBb!^&50 zJrG1T44#@D$X)7C$)}}WLC~Cx?jmGA3}-xO7j%}=kGVzjT=2SidGcu%M%N|W6+UAY zo-Y^5S(bct_OIcgvuWx{v7P4|(X4&%2ZQ>5V@l+^7W*pk`K9r5z^=`UXU#lWMQiJ= z$7H4nVDHXu`vlhv}%4q z*`xDSI+FDrtHTwqQs)P6ZzZVXyG5-x!CgT&0+S4e_gK*5MmCn)hVV#)P&~Zzp=L0u zC^h>6cm6bZFc>^&y<7cr3 z+11RQ*R{<(l&9$$qhY;R;QN4zC_7`)wlEDpp7hhMnfoi0@;lco9e>W~$ixfBz?$=z zb~^u@Zsp$#u^UNl^hL7$81$LE_2fFN`W9WXXa1aOnX;mK2ozc~aa{r298jvUDe6^lSxU)KJisxOX%Mu-;QQyZS+g+G zp!(2=++2a&9CzaQm`B5DD6?DkmK~0|*U9?l_kF3VZO|CqfFV?o(0teHbw{Jqy8J{6 zx~{a3TWtJOGqdD1Ia{-GU{39=*;4|i_tm7uvRnUqNYrWCae3&tW6$>UbS-lL&>a^< zYLYVMDg%1=E*P&IodK3UWe>x^Kz?Hyab)v85U+=tLJEn?ATODke-^Xyh^~WfiE&@@ z>Z6gqu67u;mB(4i&SnC;|4Pc&RQh>Gqg*`ipZ<~GdgIC^lVa9(9`!A5b_^^iR&f)N z`2ihgW0s1j!nv3@<3rpv6Og~t!}fFqzdfmnOuwl8)(E`A?ZdX>OS?@1ysgs!chEGT zxPQJuH;G$rC^~re$7ttU=*L{P_7N$CP`s(M01w)mFdO^>z-Jb5RQx^PM3pQABcU5X z&!s2onf(%1d(7}?FoL=tL{1deoknLYWZUUg>hkf9cdr4t_p$R#Mh0ksWX>Ug(g94U<2Oh~vLW>C4|Yc> zDfY5t|v4q7o|1wi|6Fc2Jv7%5VRFUbt@VY?go`&6-}wu96OQY=3`utdlsK^q$5-+p26SLvY=g&POJH0TAk@% zc(REgcuc-6p=#_vnL-l8eMh72<2IuiD;yGS?q2-R3pOF z6D!>pdqz~Vp`oSqUdZ#^%fYo6&vwJOkR-{>n=HTx#=_NZoI3;R|rLC^I(33}ZledZ+ z#Tw2cIs_alubhuMPveYY4Lswl)^(T*II5DZBHngv{>$0S0bLrt`ZTt^(cQrR{&339 z&Q1=u#20YJMUpH`e@bTlOwW14s6d6AE1!nbf$SY8Pt*k27ChVzJagegAZ#gx2I)Ji zcT2rQv%HK(g)9Seq(B^eE!1QGO42@e`JHr8iku;@0Xqms_^;%hH@YDo3|HeIKC-R1 zfJ83Rp|Nsjc%4F+N4cyOfLm)w=m|LUArD@k|QA_hUVek45){)MhETo28Z_H((w;jBnPi*KjcXg>^;~a z_G7vKx2Qansr40)SoFrbB0Vi7w;ILAiZ}GM85s}O*mH^~$F<_x6Yi7|)DDW#>jntNv)!Ado-7IwKubzuNzry~uMLCrQt*laKF!&UtSfA_wlc^1NdEoqId)V1C6*9eZ0`19cqzR1rY(6dZ<_fbsdS@v8 zpWhdBp1q`UUHX$|i>ZBQFyqTL1nw=xZa z(Hsl}ZS?KFww{a#)jxxhBTN0~=GI%)!g0U9BbAf9lEu_SkBg4$YxSWd=ta8!9xX zIr)d~%e7tP(?&AaFP7)Yd6oDjpi9{%A3EN;wS1Q}h#Pwd#rcK1c|by`x`r@%>-;@z z!-?i2;8C$=I**VB6v5otVd>bjf|P>Pg2-&2CRN@$Z?7AZ5$z=I!_)et4;TLiN{e2s zx0X?v7=dEr8l9m1PXaJk3|X_k)#^pPB)4spb=~Pj6INP0m1YXUb~izxw2H~ z6BGDNe2H7ha%PWU27gc4Eq}N1>WH*6|Iz`uN1&DAfR*)ocKglLok&iHuQqre13vxn z(lL({LUWKgLc+AY6Q5@uz}H$a1FwD#nKZk05N;oh+|FxroZF+vgTuUb%V1 zTrn95yRQnd(mY|fGN0oTDycGRW0T>;G8+qIg_Zh~djP;UtaCezZ^9C-<|Ku(wxhIt z>0?(c_sPkaW>`7|TBO&w%IM||iP}LxVUvQR5fh|IyPXoND#;oA5Zy%=V0AFfEF=26 z6=cL5nVPJ8+3rT3o}OpD)T8AAiWD9J95jI#lzX`Op+Ij$O)=Vlc*9)t+O%^ocN6{e&bw5=}a%$YuNTS({4?sC4cn3U+9Ye=aR4F}Mg3 z#bPWnuGx31-j!y1>J7u?!~~yUklg&Nix$+SwCa_kwRXnrZ(t2vrCp!aIA_DH>rY#L zZE4qa@=5BSCOG;CMan^%;1JuLVR<#DQ9&6C(xUz{Fdc0HI4tdK_2v5_rVmj~us|9C zcy3zQBr`r~Z})lTMwdHBUK07f{gzDivr7pdj<_^!Wfa7PB726%#T``xhmHj66lN=(lZ^!E-GB_-<$ zn(w2x4&~}Vz>(_Kw5jFK_jd|nd8K?#i^U9t&}Qfz;T;#(R!{v}UP9^RXU+-kMGkyF zlJ<#eJ5UcFTJbzooK#8{RUH>gxnTJu%;D~$AQgTdfzKuTh~}S~Lw)V^fvKCUD|EY6 zhwReH_aD-_|9R<2PNpS;*(h0}{*9}w8{X;*G_2+9$ad6q*s?E99Wwlk;6f-!7?74` z+ta(MB5fA2?zzTq+_&p`$W{9I61}p75ddRx>f@aq0+3GJ@}**u<>(OKvs0)QJnVm# zr$0%Cy6rY_ngcs^t-J~FIF#kwFR=?-N&oxGs_a1p?5)xE;PJgkL1JZDQ-6rekeIxj zx@J*h?kxI5z|{3MXsJ^_Xg``f*gBnABYVqqk~?ZWB{oawFZH8>(55f>&V$_DB@8 zv0_9RSI%%UL$*w=f}9h?hfxpUl0D!ytqtWv7lkJ>P&NFMA9p}d8o6n5`_HsAh92cs z8GN8~puC{Qfv@SwZUo*I*Sw(Ad!)VbQ5o5;@5if_NfnItHl*1d$~+c#qP&|!r}t|z zu#7F=CAC&Blh7E8rEDTk^VyPVxSU9A`JIiRgI%*rmue~Fr=rSMVbN8vZfWI${VQ30;*llICeoSwWcqRC8NwM3qA(LxLPcOF3$T+Z5U}AOKk3q*PW{6h zWMPZY@2E}%SY}Wb>)LWy(yUu5Y%11Ttd1k@I#S7Ac^j~P#8d617bVj7)dmph8LHtQ zrD{%2m77>pmPN&%o33+8)Lrekxz^P=O^ibC$*=D&5PI4M>`nW;7cO<2&Dzk`!3P4F zucsZz-OE3Ya7Wn^ot8ewpRs4xMlbrTj84Tbns39jSFSI8wp6CLj=P`g0OeW$1u3q7 z?{c-%AL1S^*i+7_!&UKotZQ$G3JLeEm)H?7g&TBlj{P>M?#_cgQHdarA%J&z z?y;Zo#teR@V;r6xVptGftMZ7pZ|}|)nH?zuf`g&jdfCr^*$};-CjUsr?^q)ZgQMs2XLNl)H#_y{UP$IrQ{nfs48+rO z?#K3h1C1gd|7!0C!vIX{x{7T5o#JMD1=WMEAW1FEZsqRz-S76K;6`y@m^-^EcmLw- zZ!>Rf6H8e$^K+5+uZjA3;i%Ny>g-z2;2QuZ;xx`p2z(=c0~RJ+>M>s}CDYl46+og{ zM5h>;KYq+I;fJL;TWXQ}&As+-&BwryhrzW6y69)n(BeD-MTh!!?tLsCAA20NK-x&l z*;=hU7_TO1R>h_$`oO4Qo*ym%32FfvCyIQzV7HCdbzV6e)7H%$CsbBAj3e^5;AWm2 zacEV2bGbHS2fyKtJLRx3*Ip&j zBKXq*GY(RjmsUY%<54-O1zr5`u*8rEQh^8ZS4Kug6rGCw;df7CHyeL4s{1_!B{^Ro zT>Q@EGL5QozO!?i{E`VLrFVwq4_^_QzxWidKKlHngo#!GUt*Tu10UGsNJ=C*yboi1 zT430EMek=AYU2}LLJVFn=FYN0vW~n)!Yzw~D+z}Ta_e%t>U!C5LPAa^C@33jzKC2a z|D-VaMfJy+w;=;T1pqAHYZ~w??iEq4J=9&dR}e2i5X$xW3lf^|8t}J{Irj|P$k?aS zItY?}`Vo7cVeI&TC))hOIP_wh%qoBAy{Tw5(m*!+0`$PUyTF=@aI(}w2ff4Ve>;Lx zkF5R%KyP3@MqiK?Dt66Hf=0}h&K%5dwh-M|i?=_JefKYsi43l>Q|d_DOCuDIJq{O# zNzxb+()X2F6%ioAdCe!`1h3I6KHO!E4?LN2B>J7p8G-e!`UYA-L$ zR}*2Zb^;~g-dEvTxHm3C4%o%FP@xzfc!)sO)?28-fBxNn5ztc#PTK1XlSzXEMt0Od z9gfKZ%M@i2`N?HFuD#B5gY%psnojkgr58X}FSU>)Qi@$RHZQ>)e*i zBhWF4X1VK zPU_Nq)$nXM1nrSUcjotnNfbG2{l#@}%azqKsx~!V!?x)9NLCSl1saOqsvGJ6PJRK| zFibaAstHNR7(O#@Db~|Ryu1dz$-42Xo4;Qp!_YG&g%WXG?dPZR^A$kKKaQWr1Q9&3 z^y~|9O%AWopk>(rg&F8-4i3)34$Q$x*v~SlK3$qK1D6Iz&oJig2%{GAR*;w+)aF z8C`Gj-hfQNi8Z#_|H*@5MT=C&(6GMi>v=y^L3m0ten@)hXXhVkbH6mc@@0-w3Kw~2 z?6I*LL6TV-$cen1oE#_dh%{*VnHwtpNyA&gGT5o;1q^n+c9p@6`2HK0WKasoND<}> zB0qrRP090|@~J%~*I;9G+`Amb@e@Et+@V`#dHSv7GHWWc3c0!EPM2NTJ0}b^nFc3~ zr;RXI=&Z5u%Z(eaoNa*sODCsPR~63uS9v3FVDGJU%cAz$vKp=CIm4E{SkT_xFs;NU zowhl8^FE%{iD49S+9w9@39ieiv_^qnG*Gl>ZCLJ$p84q6aQF_Owzc={AGDi-h+eiZO(W3TV)cOO6Ow%$AJ_yfKVG z77(94L5wIvw%7}v1lf)!Pj~cKILF08eZcU~@5eQxlQcVgzGl!OQdo|mBJU3M!8gZe zlFfqq@%yOHX#K|`Pm|%Fow$%kIP`Jp5T3L+?aDnpc-aljo`Psd9b`K7`cE1~3MV!ZT_dEy`>hqGc;|3rb*a$_TXu=11HB){dTk< zq9;-fnSV=Cjg6XqJt&C&#O5qwTLbwaXv8B5&>Jy%aV+NwtIQ9UW9w?sBuSV^@5I=B zs7ecNR&G*B+}H~x7t5E-_QogpLJ#;{b^Be6iILI1d@eGRg7zCE;S5|3LfVoro{UB$ zB_6SFX`ub@p_VuekNx08#ZCGU5Lb8NqXUEJyN-?-PcTk;(bjk-a1b{WTM*8=`>)~7 zg-3}Ik680kRMiO40S}33>I4ii=AtvGd>LhrKn8UG;08Kh$9bql-uBMI0_f6X7^l0f zwqlNgaycX&2OA4}iCi$Wr@0662wOp$vB$}mH2dVrEg;_9pjYeAhnY;GdRlm2s(_@z zoyTm4r1)!rGhKe+zAn5%?Wi_(g9okE(GL`;?+%Q8>SI@?6YBZXp7`;vgwHub-eeU}ds^{%?aWDN(us*0~DjeR_(n zgEBOtQmW?;Pc>#qwK738w+nw8lpoVsrZ4nQp87tcTzmoTHwNNaQudpPjIx;VBAui zY0uiRon&dxOP1*!Ynoh;lim^79}D+YU0q$ZC;8^=DEYz(bY`~VNEazpxHyqXFA=0+ z2Gocf%`MQ+drujsrjq?6AQZs0-@1yyAXQC#Fw+tQmy6@kt~)d{9t3YtW0unCL>^H= zKVud+T8(`;er*Yz$F*DB=9))z5b%=NH5Sn1vp~?_6V>k@ix`?<;l8(*03OfSnFJ+5 zJ>R*h{=M3dEx#q zaOPky%~!nwFxAvu9|ssiGUx7Ads`P&l8dXnERJYVYeBN3lt^;O$}ZZ(+jDXtCyFHI zj8)3ozNt*hjS=6r*DvCBiZwGz`7yN*y)%#Xmf^v{9V;J!UN>jg)}Z6JqunEv;D<`P ziH`u`b5#A0)W!j%wlxu^zbLoGYXn3@2-TQ$c2XM4hH6p{hQ~>dxK)_t2o+)Am>;gqsg3~1@|UyT`jm8v{;eR)v#?$hf_wb@%!P=u@oxq_X)tu!y z0D#0w-}-x* zD)7%6MxB4zqtHk0i^v7*13$o8JiGtwfs3sk^wS&Wj*cbrc654Ocy>_$?}ZEAS(Zx` zNgf<}FW>z9oq(dD!m8QIqGqyCn0%foS_ATFV+tb%wutsVP4^CpDdORHNrvc^LJ_&1 z;d^?&eZ?6_W}d8UvnxCq!R&>44c%oK?DA5W-`-LZ)Lzn<8=d=OcZNfjSmpM7gF>c+ z=#$n-dvI}oTRYVJ2&9E2r~#`2f0dQ~im+pI7tBxJg!4}JCIe<3wq^nRL!kr_lpkWa zGahg{sI8Us@FiS`CSnuvksVhKtpb|+Zhw0|f^+AGB+WfpDklS!>>ll^OM(nC``fB9 zp%MQ?Oz4WNKLdHV{K($U!wr@k4%)v{-{sm6?8dTH%z>M=HxI2vCsBIHk30>cHHq9BVu7=C~J&x-G-)|7hxx~ zm<|^+qA;O^t-zcoxw$7P&6XkrBvh6BWNot`tY4UVyYM#_wE^a9mmeRC2j+ok;I8Rc zNOuYk>)yv${ls0Gvek8HVm{i^TI z-aoSySpV8h*aIIrZ9?H`TiK&z>1rWB!f7Hq9_T@asQP6dy7<11Hrh*9u0YU4-f1}7 z&t25^T(94>WlMnHm&?|7W?K|{n4U_f#oWa&@0gXVC#0n+anDE)5d=u=y$zav$S>!k zIWfBG%#${!N&6;4K8Ul&bXd1}@5*7-f9tjT3PHW6EFrmRg^a!eo9wAo z&GyCQ9i4Ep9(DR?`+D4alvj@-_XTV_$I=uZA1|+lBSY~&b}55++!^^dY35olI+x$X zKSCj9EL*yT(5?b>jpVxNJTJG(KZHK^d1azfcRDl;lXsBFqT zjF9}!IA~YfnBu#-jM|*)h_0KHcBp@xoOwsZe=`R48ZU1};@^}HvCXwd>d$R%^Ca;I zxkTUeuS@FFo!jcoQ3{3{&0JJHvT#Y`cmxw)|!gg zr)WD;0ieOOTahXzyOPH){~CI$?R!yAMTD+wk*e_N$R135y{APGNwdUT`F{WZli|AJ zlfsc_%i0yO(w}Ij9WMxRYXE zH?lmc@IKoiox+EqGT)zxx<#$xktcd}!j`M`g1YhPlNz_T32?UqQN6`Ikmda&_MtUY zd}`eu5qTmC3lM3a`rHIXX@|?4?XZDb3~AXg8JgIe(uA(FF4a$be=OyIz?kY^^8|(B z%SK72$RWbdPc+?n8F_Y!R>FW8uVuz~ovtdUG;}5sLDgA8e6BSq z$yO#Kx5JwMx;?}ed8ekPjsS9*4Rw{khNA4|CIa%%Mx6ZTW6#YST^ulI$c_3jkq z8+G_myqv}O4+R&%sHo;9N%=lFm10aVcsgbZ`O(k$+7sH7Q3%$a&nG|Qu?4oGi3$?> z-ymH1p8Tt-*DnpbrEyqg*o(bW6gZZC^|_I%l8M!=!zz;w{8fa^=8%`P>FH|2w?AqQwZ%d-iEtv+_T-Os{va?aX_N;yUnk|9Ek&wre|J3X-VORn z%{N-tqRH@|GZGs72@K@TQerdiDn~huhohkr-VnPOSB%34u~Zz){Xt8-StHx1)F2BU zxdIdF)a8A>=mna|RYT=u`%3P9TOxQjq5s}ZQbvZeNkQkNQHff_4=Zchoq!gw!1gTh z%G#)Ee~h8JkUVI+VK$kxeL3$q6R(=RR~T_+8lR$4u$%I~-@%Ehp(thtIUbGczkSYsT$4Q@UtFu68jdORY$pN7I-kw5rQlPJ8SB~ZBbaLLG%yF>4{v8 z_m|1;=%Ors5TKQU!hsBw;5BYZu}g*fX0k@@+m0%fv;FL!r+B~3OSiXFa?&e@*xO8L zba+~>r{HwQbv>;kWxC^Efg#~4Dx`=s)Hl@CnD&!+7fGK0m0UNgm%yqs6SxkQ8S>tT z&y=zM1@5rLB?ryxg?Ba^pgB(mBFG40IrvnBrrL=zr3)PenIlP zttWraHX^EuVc|C*9#XJMizuYNWcY$_7W+!T##2&T!5~J2(7Eb$rC#wgA=kdo>V$2A z=wn8V&VpMskbh0KZ?Q*Jm!4ds#{w`-3dLU7c05`!wJ??Y@n|D}(%)G4Z?50q~nJ4p|kt;b5zTO@O>AMSi zEI-VTU)I*v8W{!6LS9At&B8P~kYPeLkmY`6gk&OXvTn$6>eKu$?Hi&U@>@ zBo9&f`!uLglePs?t>n~MOj&Csuo56-|{Y_tw^j{sNBD=D41@*&}8Z*Yy z`{3T$ZkkK4!_ha2Z1GR|nLqi`OQBI)X19PUxbpRXKT~t+oSnwa#(j9Ei4b#0bZIE9 zNWiW+HL?o@9P#%AVCmB`YYgkvh^0uC_fnUTkrSHWoTi*r*&;hwIad$K}JC~5{3LI3% z#Hm4tYcgtfe$Z%@>f~P9ejp=mq(=ywSwGG>e1p0a(f)33oL9wti(`tdL@)tsRTRYY&V6re}3! zw#i(G*7-$Z;RFm1?uh{J=1k3l)$|V?U5Xc5FM#LU%7Y^<QqQA8w1NXG zzvyhhz4>Fy-XE}CNv;*!{e)Ct&j>Qchf(f|>ThbKaB`p>U(@F4#ACmjaqv967|Pnt zIz9u4%yFQ(+)Q$WeuktbUr88-XEWvXEmP%vhLLI_{;@oH-h zc+3em>+CLDyNEMJ3qFz8*f3jqfS(?Ktvfp#GM_Fue`xy!=)js+#uPREWo>guMd6$N z|DsELI33Z+92Gq&vpxypfXXx)GOEmze{7|HLc+^sDQ?{DLC4O?2jm|pI-DX zhxGTQ;3byw%NY`?zcus$za$tV;n16;WoP{24%nAW8ti%pr+V(#Z{=pS+iA?@Bf=#) zxIY2zx93K^>&-3(4E#o}t0VNPaHGA-TZmX?u(fD!u@E^T{{5vovDSueXP=#B3#LCZ zy5$XD3@9tL4t1w)Cm_b&6on zt#D2R<9@X*>iEGNI^ZNz7DRt8t?R;h~;2xe55OV834R|=Zv|Rbp8AfQO|@#Ntv_^e0kAV$~8I6 z{{DJzd+h@+(tHB7wD4MUPaJ_>?3MRFv@{Al>wlNBaKEq=n#ccdS`FV%l%<~|+|?S< zW>4CU)E)gQ{SdO>b#}!$uN$_QSz8=X&cJeT_|6a+4V}AG`=^pV_HMn#{`!5xa zUl&`7o_{k;YXCIpq{|5(>Gbn$G;eq$xBk2$mmPqe{VHRh3CJMa**w4WK(lBMcx)Ef z8)dVCD(9~vGR|jIJU%kEGEKAEU^85euV&mx4x2YHyA3Y?HS zQK?k&A}-2$uQYtNCu&hvU`|F6>9&l`>`vR2fsOx?%t%3Met_d&6!WaKQ8X$32^~0p z8Jm;4GT#wjd{eU>UZcb*3Dc@s1&*vCKXSioY7;drS@ziNyqXQzT&u%%k;wpp4v{==&}1@0rc#-zPC zjUoBt8GB^-b4fn2@ht@RPoj+;0?v^&z7?q^u@Z?o+fL%QqWpchC&SQUTEvTjE`Tz; zB24)XQ;;ipAobJ!6zC5UkOxW#B?y(09`#4e7UxAv=s*r*!mS$K*(;?3hO zPe#@S4AwAAuOsJV*G_ijJP-LNb7PB5RMOIQ1Vm#@R<3X$Y#-n!Zxi+Qbks!B4{EP7 zR^$Jqe9wlVtf+Rlvxqsa;rNsR&s65qr+#_n4Xr&L9`YM!v_2Bd30wmfDC<}bg6Fzz zfd(i-@=xZ0n6k9?<<7k*BcyJBt@QIa#9dGS>mun$&&p&4t27?tlz^&e zr*JnB`n%DUdYk{=q$e%bfJjAFe}_gdoP|5tnME)Tm+n=gm*9~oR(zg4~yT0yx|;B-Cv2`XcdCwi!Ovp z_)lV5OWMQ=5`rF9Ar|cFSx?KxZ*LAR%1ykMjj?t3CMs-;SD3n<0>lJkW5zXf{bAnU z+x2R1T17M1>F1R{i+oKJyLmd+?TPkoeMS4 zg5PDWKKz&NnoNFU!U91+rou~)pbv(C7?@u2l=H(Psrw(BIEtt zZ2=O*tpS7DINcz8prx&lUSa})*gt%);`}b6;Tk4o$7y>GLhZ>e?=kcJ6u*2T%of~v z(bvSTJIjQ{bM^b2=F^` z#Wi1~lQ=>7Narz<&U51eA?L`UF~d+G2ssm94C}E+b(re~iQ`_m%?71{-VT4|^N6)< zi>yrycYlzIQW5!5a{?g_(TD!}zsl*(y53EZqwP;t8_o%=@LkHrHG`7nV})7ugL_4x z3o5tMwpr`Q;yeZMzvXfRk>q+Xp=(1Y1+rESzM2YoGqHUy*`RtelzZH8V*-QS=Q{bR zDIsFH#FAyH<;OMsa82wvc+uiAd45m&mC+H@%zRe5NwJfy*UB?~drr6?pv|r6CgK3e zO3=V460F9UOo7ZtY_Qg1A8O{-Pq&<^+gYFXPt0EFf@rTC8*!m?5TUAP2>|o2dSZ?} zlctsv`8Z|KtH&P9k*rFRLxCEC$G6}BRB$@gG0-jgfYLMWy*_OpuYAilsJCX<-dPD* zw;XYJ#$`bu9!=dgq90PoZk!sxWxfC3vA;mq$nwROV;!m3aKb9(Y%}Xc!oGeqvKE-^ z;NUPdk<#D628+ptd40E)kyaX~yHc(^FPfh9KUXe+5Z{W9AzleJnHK|KF~o z-{mRUa$w%?PR+=kcOdC+E#hiOsKK(`$bAs_HRkGFuO4|)==iMi_Uop@IX|JF+`hS+ z#4+!y)3D}(H>YZb6@u-BPRi5^C*-ZV>MbzC%T^P^VQO2VSbrAuk$ZVo>A@x|GT@8G5p^XIfs4RF!)EVX*WdVdbZDiYHb42Q34Tn$fRTp>#I5cLnI;3Kg!_{9;};{KX@db2nBat( zg4U-Rzc+xw?#?k7Pj=6qkTmk39}@b4ZmAMnxYyyvSV1cK2as3+PvG|aI`3FnmU>Wl z&Ktws_S;V>MjyIX@wM%Xklg$RT70jA-^ZQW`CBFplfAv&DpNH;W9Uuc6TW#HWvgfk z#-*$nF)-r8(zh>PxyMb0S#@=pX=Lsimlx5|5spR?dVy~aXbeW>8 zl3)0M?njBXqxcCvbjTl&Yg|HjF zYatdZCh~zZU(2rC^*>bbQILGYgpJEl(i(Yj&8c$t%@zLy>8rxX*TwbeH||!TZX~|e zCQ5VSR6+aE>eOPfha+xR+EyK~P)Xtb;Ht4sj&{bJO>&P zs;Z{*Ee?ke%}xSALTyU4k0hZtJm>mO&4ghP$$6Vl(Q<|Fm2~SW=dJ~>BV(4GX=|Nk zwm!4^eTTZq=!POjp(L)6pNy@5@gZEYwo zzf<6n#|G}GxfP|oM*4oHxg4bXK;nBClW|PJy@r3+S{O~5yz{@`hA|l=Q+|Jucangn zqk@){J7#!%I@BE6GbPYy+PPIXNiAmCAaTXmc=L_K>M5seTf5_;kR_#8$_d;elJ@T@ zT$7oO!A#~5!^;We>4^P^qe8@Zr{hT;xj^ii3`>8}#x@Pn_dd1jr>+(gB4A3?i zrnF|&I456^|4V4)x6GKzY=qWXP(MMG6B?8>H#hJda^)|{E4@+R)g@s-@Ot;gub-d3 z%=fFG!=9Mv!_<@lC-Ggcs1K?x6V8osllAT~rx-#kgK>f@k_|f__5bwFs@icWAR-W7 zlz;7QTK3cdnQ873t1EgYVEeM-`HRm*l2*-``7kDoLC71?;}N=|%C zkU};!C&1d_$@7S<`ubHgqIY%*Vq^yKw58THN_aee%K_6|$Cqv0t0)Cw_ku;dZPJPP z_*@i;5h6)y3pwRL-aPvE(fhdA8)G-)Zd#-$B6?S%uJl^TDLO1$A8; zuKciBcM(h3PuVmxglbx$D9p1M_>O`rS?YdC2_SyOjXLZy#~cmCdOV(BB&TCoWD>-; zj$$n#DwDalG20*XN6VsRg7??ZQrk}@Y(oeu08x(`jr+D98{g z!d)Ap@1^@TS7np30>jps`t|n(`c_0^9`4&28R|^~1WKui#2ASOFqJbli~lF^o$VyE0;GMN)_y}vTM_U@+1OdreK{1o-*ZoYdUAtyV*!j|p!Ai*TN#_eDSvK=5uGs}`W=r>w zb;d`#bb?jzgY5sk)|=$Wq;Y-~&SwQueXegVuE!Ir(R&CySh%o!<6=QNRwv4Q-!1Cc z%*>41f3{nMZKeJL*6G=#@(t3(i`wtz)IKnE{rTTl!&*YlDOAqrj#nCR=T9;1iM%tK z`}HO*PvRCdB~rbEH8c>G{B^jdXfmBHb>=o0nO;jwBW@x<)6=9-!>hUYGD`nOh$@Em z$-Ru3#*q*CP4Sn4gM(+{PS~JXlfxysRkt#dmsjs%M86r@mrDMTo|u>FI{{_LhZ_wv z!e`Ge7uWTz?P&C)V4bjvPyS%dW3aK|M0Bx4^zB#a-$Az#pGN&i^*aAcH+ehgh0FU` z<6-}id(JHV15-_n8#{5g$F_X1%|Mwat0H{<;)Uirr(LAZDOe^KKqJ|p=jzE^DtAJS z#6)ICnkrtE*z&3F&be((v2W>7*q26MQC>dNa(YC!*I#n-At>MO&v8GI0Tu_d(55Io#%-J(QJlzL@HYq!l5p%HTel9vtZE4dXX17C4 zBT}2*Z};j)`JbVKCV4MJZT@NtWKsMyMiv)4Xifrn#jEd>*mSdvf318pZt87h z^A=KU+~w~txdRKLeXnJ&d9E;4j12UaxpM>7C!YA@B7+PA8BGfr`oYlYY*(jNblBYv z!4@Q83zIZMmX7C_hWwV(%|5=<(IP8=9Z%KquFMbDJAK}d=Im;q`3_ zS_y(Dzsr*X$Q&m23^S#K%wO85ZlqTS@PP!2h>4`1wZ|Hgoi+f${_DpY!^gp2Rqxix zl>Uw;{&M#1+E?bT-mb1a`~_~dQ;WK^um&!RVDzPimK^&$*<%t2*c5y}?4LX(+3;~! z?32qW?`-PD7VIpAua1GbmWTtl-=l3Ai#wdfwX8SiK)Xy*7H}Q+r4)1s*~%)7;)36y zGe(pFFgKe#vbhYw2W&Tindo_ZZj%kaD3%=esNZJYxQcLau(&VO1zPDOji;xCwx{@| zyK+p^;)D@P0j!Awz)T<9_nl+xB~e4R;*PQ2_qhdGHPmc{qBg6a;FuE!>}ywB&8V(1 z{TStBS3#f{;zfef;>b%>7mys2O94Lb^rN%bWNC1#%|B-u4|*Ekx^_9} z?^qtY2QnXwbTl)}XEYO=s>zq-k6)vo2Pd!PLe+Yt8?2!a37dRqMb+Cog;PHqBP}~V zvr5$kOpz$>x6gk`7RB&BLM&L3$wr!LWH9n;7Zw%SyLo&6Y5Dr~YyAbvl;7upB`d%6 z;JJ&N8?|Y*)r+Dn2?+^zTYLLOb6Nz)4DcFqQg!YA{S83c+!V^nd^T*gh|(V>%Yj?w zX~hcxzPr4eY+vuJKhwpG{E!d_g+#{W*qG!RSP43XKY%!cSdezG2fjn^YK4444*-K# zzkmxzGds5s23|VqX_;cA=wr*vl6RV{Wy0JU#x0c`JwH==gw>kJm8vTS=r09g{jFyd zh_6yH5O|WjG(dP#CDnyoK%Q(wDrb-cJt9_BKG{qRGYnXu7nB)1`7YDi4kf1FGYhU# z{82zgv(hzm!>O%Ib9xUe5$4XOYgak_m;@23SM@@N>4_{L0cgt4a|76kew)m@amE-j zWR(slM~L%qM=N3fGQh}!j(=NIw`}KNGkPdxrfBe1vUa?KSD0|dcabt6p|rfB0^swM zx?oG;W$YcigS30`%;77oo8b+XHd89ZaF~J?<5g~@kq^_fA@g|S`(=SP>frs(lB+ba zX3Z;#*wNYE5zr>YjRwz!kc7fwBm`^M-HmB%(3gfik5!<(Qi{D>t5vc}j$7X+=U1QdfNlqti> zBR#f~-6_V&gHV^Hz(rNo3;FeDK0kHo?TJqgdjh5EBcz%UoF{XlvFk_pl)jspieIyMP?-KA; zASqXB5t0K?Gew#P?DvZJG;UB{Hl+us39XDU*Ux&x+|Y_W{(7BWAY z|MKP4*0B^bZ4~_oe3++*4xM)mtrEK*+WT!9cr5u;C7vx)o@>AEKj9#tCBXxhl?*o# zh7+&QT}13Cju&m9Aa)ifk9dFu<%!P@cNSO;iJ;R9g-5UaoYM@QYfGJ0hl@1u!_D-q z!Bd`wiVq^FqV9&2xJovVqlM{>AYSGuS@-JV;*cLYKcuQbcZI$FA4UWJV zKQWBJ*>po?TP_w{0ngrFvi{I`P%I-P`s{HK2-kmjApj-&1@RrtS}aIN zh*=z9uMlDtz$kYE_6_qWdBuk+s(dpr8mPrr4N5I5zm6v_WhwZssHW&d+YpJ+_@Qyx zY}g2c3!jjxC)r?UE^9_JRZ^==WlWyf>;t;&v{T#yo;6T4JB}Tv?ln`R=Tmb41KZ3A z$m)ns)Ayfo(rf~u%+SYjgLVNckQO*?Cpu^q4k$7X`JOe0Ro)Q}JnR_SeMAgQOJI>K>xVw`3AI7P&m>v}A*mbfTO0D;0A}OG}M+03|td%}Rc?7$`P8 zF8Zw$2y{>vt&o4k5uK2cT?mxF0BCV#0Uu@pCF%(l3{h(43j-a|cAbEpsbmST5Kex` z&wnYrv4w57m$!L|K|TlCAxLMM!-l*;RJeU}rGvIx%8*c+^}tAq)~9LZ`_rV4pFi_2 z&BQbKEdZ$-?C}1NyBS*vKn7ij?I80W27jYw&}Z!0+uu)fvZ$%lBru7AR(k*uaA9?| z-0|q-8STv>;lP~);9b>~zk4?yC@n3`N*T9RSkuOH5*y1@!%4Lfm$6v(HYsmJ#Wwel z?v*f+ETjaSVIZdLWyqV4voS+Dh|BDdpqOXHLSzM);hFp%uyh5z(I<> z2+sjbjALi*#Ics3P>+dz49xcX148KaUtmJfrOFAqZ*G1*pkr<;3pqoBJNG%8qaN*y zqF+#nw)~u5VvQGB{A9elt~th$eZl+|OWYt^I4n@(|rXyw`049derVq}B9pS&?Y92fN zvnv839D3iUz>u+_Zo;T>b(;!b^tUOJa&sD(y}e2Q{qa(M&?aZ+;2aNk9y*Aw6^hfYCIS2vF{z5&1U( zn2GUAMm@Qv0D~9?wa~8MLEqt;Fg1dW@D_WkHVJA&iJRJTBC%eiq@?oi!c_VuCr$mq zSf<>l+~c^yI3o0pwu`pW^9Mp(mnvmqTFGR!iS5f!zZF?5z6kwL&Hj*^J0{q4VUhB< z0m-{`ik!j2Exu)Hk5d_pUBkb2#UQ~=R=L}j=g~M+`t5e^RMkwWx)G3Quc%H^M(<$7 zxW>lD_@l-L_wF&pk4Qb9+{5^9GLJrKon@M09~x0wWLL=q*3m19zB*!>g(pxm(pvil zC2)9ZbzWL(##>B&aN@Hv82=Eo*1_Mih3a_8MsjInM3sE z;#M!+QV9hj7fXePp0J;RW_skOg390N@p7=i{{B}xN zQhNM->f?dY&6_dn@9B6{s2%{Lrug$gHlnELRJ|`3VH2 zzpjo8UU%L;scezu^o)8DEsn9?={|shv<70 zuzR7~Dmhxm3%u(pKn&DK6SlfiIuxQ>gy}5nT}>u_jPnhL?qvKS2tpE4xjZkWM7Uf4 z3*t^nO1fWsIfDq&M&}O%+BZ!IFegXS*LDrRS0E;5W}hFETKfBaCO;-8>s6&jToaer z)5ygqe?2VMLl3l~X;YQ)+hqAudv|!71aIS8%m}*xtr#8il=Ux-8@}4q% z;m_Ok@~B~Ev<;VStF7sJcdB|w5iSVaDnKo{-`A-rGj)6W-L+-WV@>aDdpyXT#QYP3 z8rttnuoJDsgTB;-MutscO=h?S1qA~sRZrijhLIC^scAoWkaGDWXQMZw2$1+0hAoBI z!;rXxoe%?EL_OgM{hXqWb`&{UhYbC_Jx;SS3jZurS&rL5T6=S|7lAOi<~N|~7@Zgz+E;a7 zkHG6ZGj=?A&A}%&&tcKT1$)nIMC~dh)W^==jeAy;bg}~gHzedN@*gyt62#B)lOVhs z47hb+L#JT>8pT2v*oaVa6 z03#LmW^OxY@$v38Z$Dq_M6*`$AY3SMwp}mV zcnvW7UGMU^dQq# z0s{XvCh!1X_j>@7EN&H}wt-=+SYo^;8M+;!W*jaL-2NHkhh7^kUx_6%jg!(R)WWS0ISr;(9keU^0AO741e=Ud!_z+RcACp*{e73VKP03uL-F{-nGGSONWh6#BF!JNs8yIt7!EcG2=>A5b_JZ3Vx ze(PfI`1qR6AXfB?rSWHQV>>JO)r_n~j?2hs=layWEr^DajijreYMr|q8_I}RscLyf zDGi{0hjoQwO0~zg7>$Xu6-(=qjSLUeQ6YyE4U0I0ug%G({#Ca-0k12LtaB+9E*B`nD`4 zWoDB}O}8{>)+~8<^SHF_TPW^9bV8IVR?TJ z57SFXNTi-YLU?e4P$ar^yLvVV0SE;8Zr5;4?@&_#s~dlzWpl~IoHXTjbSxMh-kUC5 zM*H#wy8Xer_A?@AGNp^^24!R#Xoqz(K>dqVe%DkFtCePEVCO2tY<$~^(2&-()#_Vj zZ1YBH>8*TC-*vI$34D4}>QOZT1E30!W2IP2iwWnCRDy84=*+(_3hnANJ}uVab_ns2 zxqlS6r3yKM9mD>}yYJv(*J2-0xSX=`+K_^B1|R2ifx+vBycw^9zlf}IwtDojAui(C zQO#X=*iM#$$F z$a-PVPQU)b=Vjj0yDk-siCtJ_6f%!T#{1!P1D_t$@FC{+M3|00=v`_A6wYCJm$cv< zAyx6Q_^B&HD8yxey3Q!1=FQ#~ceEmorRy_E-pz-nX-*IY9Udk6>8q&ls(DO%rZ-R!BRs=@2 zSkK+XgYLw_t!ayl4l{yAfYIU#>235fCBEM-5YBQ#u?*&5MViW*kXHiqLs6MHzwu@& zl_-58F?Fw6;Z=}a>-2%~kzKzuuU~Geb~DUD*746Y5z=T=ZMYqFtBCHAD>u8#`T3C^ z%DI=Dxt8pU2w9(y{ld2_8}EaSrZU|_sE-pPot~#Sq~KZniRq!!SWOD|(OYd{MO=n~ z1CrYbm(+c-ME>9xVQ_Q}y3eNC4(SdW0SSS9E-6!6dtz61^iei4Z4RBwu~ zys{RK5PdwYzst>@_md%KRdguh{hCNQ`?Y7nXGL%a#Wtcw}(S5*z( zB6Jw9k{kx*)P*WgeS|z77Xc5*%<@xk! zT5QmbU3s+$1Y%At;l@;Wd0#ZcWRc%~!9PcFf}^BSd;0^Q$BzgG-y%`RIfl+uQO;Dr zE$Bk5ikN~mV?>}MI0_mDBq$4WlOE&{YBJO{Q8t>e<-g3)9rwRh!Z|L(Rnlg$^;w#g z{sXZ{q$@rfKG5V%@T=tT8rvQgdu_|~e)>Zi1DpDuk#1NaaoqzMqR;d&$Mu_tC!O@T~c5(zAbwk zhC=vixRXBUEE5qjuPAxr%B_lM;1qG5kT21L4oMyfyZ50IcA%#JYt%q?Ev^CDQYdL(fBWti&8~?0JZ$gYeE#U+o}$#bGMPswh&K2L)dpy~5y=24nuv zX1Z7VLix`iOf1!T6e0b)q^WZ*u7W7oScpeA(=JkD%5CX~1%*Fh9Q zp~4T+w>SUc0tcOA772&0LdJ}uN3L*DuB^`oZ!x!#vk#KwoTVCl3%6?7vC1J0$N#oR z*r3?zn@sUXJ`X)iT5e36Qds98=YHH!fB$OIjk%`R`V!x6Yi@BARBQhWzql^fmmI{i$E1yf$3O6jG5AwN9X7*PEyQt2Y>kf{Rn zm}#Yp&0?-bvgJRtrx?=LWkGN1=$Tz&57ze|PT?G+4Av5^CNtK%wMn+-SO}E2)#3L1 zteV9Au%$|*q{{+(FC1kQ3KYf*`nM5HRc{@ui#wio_jXX?p$Gi&$H|G=*KvwL4Zq<` zWc)d=4;6Gt?g1rlzXU z@@s4agWAo?m*sXdf7BMe_rzU7yvTq`Ay0#Kx89J6@3#J(MU-7Z`ca%T&x7*FbV3D|7#} ztd`eYMd@9vj%?zNPd6BANWT$5eTM^FKz^s{H7Wg9;!X4%6@~uB2!xr3z{0y5VR5)f zuX$s_+7LCeIn_TnI8!sYI#yYt{m-A^H}TtQ)hQygM2IAO{wOMlUxVLfVDrg(3BST? z%OZ1gt4s&Bbp$*K*>IwZ8J5GznVbaJZ~g8?{RkdFk5 z6Io4w(FW|095fmQ8*+%S7F&+XI@RkmM;{&wzk%G z&^*eP<&9GN8t5=w7_=OB6;K##MO77QFo{=jNt9fsJ8-a$j>Fz4pLm9B2Hps8|H@`t zXX^6}N`CuR-8^@+Co4o&1!&mOG>I@hA(NV`V;sb9c0!%whJDhw@Ix5 zl-&onwQ1~#Q|dXVGpjJ+%(6OwB3K6zW?O7l?#I_OHHk<^fd(AW&7cxiFhu5ZnB8=Rt`o#uE5P&h$zFHEBm-j_}Ot>|;E9GMiJe z&yGnw9>zL49Vxq-*2D$J>fvF-dp)(#3efa^o_k_o%w(ZY zG5qJX*`MgIS`CF+0Y^(b$rNuW$`wfiiYApp@D&T>ZE%VJgmVXK6lcm}rbWXqD>aD6 zPDRe1xOF(_IXwJrx~n<=zRiP^n|@P84fNT5w4ewyU3NoSP~*02&%EQnOu|SQ)?$m+ zVbpdITcOZZ*z13llf%2Xy!`NO{T)5vf@U?!2(&;cBvuPw_Y|UOIoPs3f*a|p;&lVA9QbjyCoozm3jH!}Q)G#x_kBEPZ<5{q1uAl)Qq zraF%z_^(wSRxkcoTV0iqTtO;+xT|!y^O;Rd5nfI2LqZMJ8ONZm2#E#!K%ip8ECQOg{VPhyJVMk6AST-E~ zMF9BBzTVrdH9bHl8P4h zUlwzb+)UkMCVW!1`K{=QU6C`pKf%RH0(TN900U8m^7RH)a}qM|MLsFTSBB?j?iEBY z`;(wB@%mX|1frF!YLI=}8N?r7)6eGMwd<{XXC>qv(e#tH4i}&b>};-IZ)Whxg~(X^ z^JUtc@hOw6ojvcPf5h{j#HPW@%E}En!^E?BRaFk(PBtDNU*D&~0h`{u$c3@bW=BwI` zj6iyIueP8wJFa9{qtg@V_$!=1!R?MBkRF`tMKZ@DFSFV;nY3MR@vSwdy1Lp@2hZq> z9e{S)Mmg3us222nVKr~V5a+luNkr4c$(E;-P4qlrmNw~6e$ZZ|lpAKzXmb(N6}tqc zAWGUL-P8WrIfB%n=XtaH18{V@m#FT-c|jLNYiOQF4Z^qO)c^4YaX!)Cs3wTMD!ot} zt=N6$#&+2mr1OfNwiy5>#~Le-l%9oMt0&_xps14m_*gCQjdg{na`oBA6zIMN0VC3% zUqF2DHSJQ2Yq&87UZ{p>LWeJ=gi6_TMde=#LDfS+|DH^5un$k9l9Ml;x5Y(44PFLr7-8QvBRsSGmzQ%VaGAd~Wd zt?puRA~Q77EwPyYGDBahg5>0VNw{| zp=dW3>fIf+oByp-pGW@QR%K!C`z})B-P&pi&`t5+RC*>Ri7TBpTCLBvq}x{%KLAt( zMgY0ITwZ>xU)5|r-u(ej>+Wp2D+fm|^=QR|dAXN$b#?kXtWVbLxEntDV3531#xYlK zIy(#J-nc*Ps@M|gFGvuXK_XOPCSC>tUmFK_2z2cm(Pi3@m%X76%M5q_feGvmU&XL zTVmqN43MSsEue%?@Jde!IrolkP{0kZ4NPk%=(IRFmHR47~)n^*Krcz3?+9K;=hvNcWSm zeC8elxq5?ShJx|FKG;U23=6NwnTs#$y(h!BK q>kOeI#@ENkord3m;5rir;!KH|I6tIy`SAe+e%k7~YWXT=&;AEP9*l|r literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png.import b/addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png.import new file mode 100644 index 0000000..bfd6ca9 --- /dev/null +++ b/addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl38l2bv5ny4h" +path="res://.godot/imported/pl5 doubt.png-c657bfaf88fd5c06956ec703146704c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png" +dest_files=["res://.godot/imported/pl5 doubt.png-c657bfaf88fd5c06956ec703146704c8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png b/addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png new file mode 100644 index 0000000000000000000000000000000000000000..a4eb434b9ce317f1f62d5f940c96d643b79ecb79 GIT binary patch literal 67008 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ĶQb94h=^hzrK2oPm)R3T3J_bk+r?$aMx~*s{N{%OTY=$P|@g@AXTk;g>`<4R0|E!1uK+6@St{G~UTk z|6w*CP%cjn^_}pXN@6TL+);T}`Z#nPT_xUtD9B_wpxh@7fYiI&!q5NW&LxHi6FVfe z;&cd#2)&5zEL>!N{!r{;T#lHjx?Z8*3~1Ln>JCMflt%r3KSehclppM_O+<=^dOCm| zYWY0Ge~8IZ>bK&-Nqc(t?%lJh>{~cwD`ykMAdqII+wQo@))2$JW*ZH*IKZdY6HpfN4gCjgLBTgr!~_dmjUlXn z;6R_A>wlI>@xiky&`+~N{Q8U)FK^Ly{!;{FyD_l7LqZ{j_Mrc%#8~pjBs7)3ucHsT zt|NLwZ6MSL6oQ4prxMLD|HNKO<;Fuu{A6~{I0{SkjCj^H9MT?KA*ws zEO%#rb50G0DiQfm_iWHtj=hLQbI`AnVy%DRZT>#(Io-%TB ztguwhqckQQCu|@?8bH+G<(ny^=0jnTuH;!`#^(x8l0o8z&6 znsDeH@y^iRp8=;Ez}zr}46vs_L?n9a@QK~lk;0lnf{!3`3%QIpyMp{T6TaN|s#y-D z8lg8c?@TxXuIBdMT(?yv8mIhrF6@(oK<*5A-lL!DiadgZNu*&CLmQ3Gh;*jJFVDya zr2~8IpoAQDosh_c@ZTcK60>V7&PggmXpR}&CxSN#&=8)}WWc3>LK6+$9wt;0P@KX% zkKgmUw6479oOTr=MuP~$*Q3ia3f1gkC5$Nqj8PrV$YBwW7gG*u{LY6;A{ydH`7a=!-i%!}?c!AE{j zgY%YvoZH9L(vr!rES(sikh(!sd2$$w*h4;2h(PBk47pY_BBs~HYzBxu!%(mI5Kclf z879=kB#}ain;}m#vatqks;Rt#@726H;#Zug?N=O#bEP`oB=t{o;=_ar=MW0d^=R-@Jk< zuc_bCW)KX+ej5y$zkonpSiiIS%n;0esr!vECS!O?$I$*?L_Pnf)3o#HAGIUgZARN_ zeH??VD-Wmm=G)nW#ao4P_X%m|d%<3x@pxyg8-yu;r&fH@e6=xzB-l`TqGkU7^?Ukg zfEP8`q7Q%hf1=jA)xV8EV`xv>AIe_X<3$ZmQ_<}gn(8@<=mr+nGUhohk|?h2tYnvI zHm?2qXZU~r16DkNYFOvuL2|a@5OJ|L}#{%REeZ++X8MObd!Iosr-oTpB z*G}H*l|}cRLA)rst5W+VRnasXO#9MP6;r}^giz1^5MZaU&4+BtQNGQ7)8tWV49vff zf&r#cV)I6buF4Gm&&c0eKA-c=KEPbbRR0D2sg{PW(#BtRfoN`YtUB{c#PHCY5Q$Ll z#ypI$dCQsJ>qmgAzc05bMOf`Mp=#W?H4nny|2kd$7fhaWx=5x{OZ&_KK5yya_{h#@ ze^QXli4O$WIz5{@gZ%`th3D3|QL|%3z<<$pWBA{jW#9sbW@Cc&g(2#W?)DThr%ZRBMGVK@SIbr^!kxeK7fpGCa%17ZGy*h?+8g243$7ejpQk=IK@R}Y){1hf?OM=?u@2hbA6&N_osez31^B9gpD-(Eac$=x57w1JiuDQ4nVS_f_;@OF!!(8AWdq`^rX( zRo=8`l2#-Swo4SVo7&?wtjM7A^~i%0dNku26THWfjGUa(j|e(^@=y^A+(!>a>}AZz zak66@*B+(<@ts@N0mgd7_-oB6 znetARb*m5vZ{J(B8ds0DI@KLitR%rl#-kwKgt@&(=H^q|l!= z!2A!X%+MR7Ym;t7IpjXQB%?SJJHx1f=|BevDlju=0)q6G6}u>kYllN8^6-setINMvyPZlsu(A7y}i;Z%DCW05MToX%{sU5Q*x z@_Y^|a?^5sQzv|_Hce9bwK78Zf-o!f6xW-mb7ZOpdU<37s9p`6ADfuOeT)xdBf!2E z1%0%Tq3qyqv-1MgBI3VSbs}e%ci;J&lJz@+4E;n57rxupx;qz$4d{5w41ZnniptoX zM3nHYhMk=qmYi%;{)=|kuiddu*vYS9$4^wDU2yQM}8F><@6b-vf`6W)2hCR~IMpJ}J`Ef9ZTAZw5U13hw)`6 zQS*{c8fdaR8zc^=vAC*snSKCrnYJ_}VKP@s393u%n;Jt5{_o0-dCs4ZtrC?|r5-LF z+2_RL;A1Jx9Wn3=gURvcj9iwVwA-?G2ZllL&v0P^e5uOd2v^3XIl?gC=cQp$VWPeW z6NN<$ot$9k^#1)lX$xXSX9iY(5b@=lt5+UsTw>m=|K&b$n;-6t%p?nwp2pYdzW95F zCtb{D$fZSlfUYAVLA&&6hbG`Q-WF?5yuX$G@qo*M0DwH78kxh|)K4^S!06q15Yeip zd-2be0CS-ge0e}NU{;zhouWUW*>ypW0zC@o-f$vN302%puPv+m z=47$%BLf$S%A{StK3*Iu7M8-(qJ`i`94~Mxc+}p`P9D=F653k$?RWnV{ zJ5&RwddK^#1i2aRw2Oh@VzPh5Vb5yHQJ8(qiuO(Tp{-cz0l&8t{?4L>q;Nyw+kEVw zEy_4Xmqa3Rdv`&ik(EPCCc5Z;rGHA`iQ<`XVRqlfKX2`Wz|vJ_Snd6a9lSy^V|Hf$ z_kU=iGiNkdgsc=U?|I_se*!7DW;#wc2Wt0%go!sUJg1ZY*b>xTM-lMe3lth-8$|1b z6HRZ1wQ97q|5GLC)6NnG@U8yVrJ$Ej|FyxYM{xwRkKG?9X}c)0*xT)NJ%1_cDe|8} ze**)pcfT9|oSz-eS!=4f3`8sV6raPlV_bw-H%{HRU+*vwf?0zu`sD`*niXY_Bfk$q3fulAFojqj zNGQXUy~N5cun4a-y^IGxWITO(OIX@gi{JE&>HQ3|1pMKm?&;~t>@=BD)kk}ROtij8 zxJ_~`Hj2Mc2+ONo%^+H@-?qkqfKAjroA-Q`M~10qLs*y~Z&n42szcB^x#rT}%mni2 zm_0CnMm(7Qm%}<8jyyg2*As(FzLR!15iW_)@6HP&Zw}6`=yGj7`tAxN-XHd8 zi^sG$vgU`5ao8A3R%gtDJ3Izo(Dwh@;^~iIIqAnJ_5sQ$0TT0w>>-L(dkblTl%d;`OYL z&(od$ySue~jnw#Yo;wJIhv6PS-VKDcmVT6inFpbV^UNZdq_Q0dz>EzPV@#&Ceeisu z8~=P8%HrOk2-#Hb$;xMcS)242DF@t93y&%Biwq%iSHO8ax$gQrof`jfPThOeQbY+{ z{0!I~y!t57cA5wdf6-1+vQ`*}^;f+AS+>%cSRYA7BR5kx=YPc;=4Ge_hw&Dc5#d?lYo>f9{< z0O7~2(JYbEZT?2ago!24@L(c^plOuhu8e?cCEJm9Gcf3hnu$I>)b4Ybtoojg8E*2b z_f0yq!aj{BwRyT0{GV?SqVLy8+hA39vBw^tlW=T}tHOiU@GAT&Bb6PCn*cX{Au=Ua zGv)-ZoYXsyA<_d{%Q;Vx{p|bmNf~D0LkE~R!wVNWI$#a9l6BCv1eO0ATe8J z+*M~ChVS5EAzjH9N(kk?{j>AlLsBsRv#$i%fBW`L^@p8s%75)%nQh%8S#zZ&W)Mkerx%(KAyapmv^eUITea+B z+qG+Vl`*~}c8N&}2bX<4X;z2cjOGF)@)4CK!7w~;Hn7Rnu><${lXhJ}^4byfi4(Kr z{11^I44Uflc{%j*;J`pBga{n`NScIM_}C#BgT*aL^0)CN+;ErnK|N@o?<87KBU??56EHsj z{aF*BLSCV!=3Fcm6(zAhL);l); zu5u9{7Wxh{_5P04y$wv*U4H}yv&*1+**8cm=zwms+NhcV|4xx`Slr}c`tb@jNH4U6 z?|=OoQYt5~R>vxOftZ>C%eTed+5=ZgseR}^{|$;}_`*@I++xvT;~;i5MVv4>+Ke>X z@EnnX{ywJ4fo^+`6SWD#E?K=-wHvha7?kxI(m&J+88U>J;{3KoLo!+P$WG(3UdHH# z+BtoEcZDrI{o=BV*1Mdti9kzwcYmlmgF-3bCn0(!&y*Y*P?R({UWZV*RK=vw0SlkA@l*O6-=(ah4#I`u9dL zd(?ZINwHHWoBe-R7sJ3~4>y__(Pf9r^>xI31l;->mzC>I35wcgIMi~#RUTJHaQMj{GAEY`PP}ewsEhdfQ<4{7sk+c?{Wf|1V8~m=_O7t{FAI}u!6j`-{FSu^e{yMp=T^q|4L=q z3w?Sfsxl$r2A=H2ZTLee?poH1U8CMD-Kma&vgt`{Q^eylED~BuF0}bIj(*BC)`VBc z=vz}K+LZpK(k=Y&GjV&xHOIRI=MI%^MEQwN3!Q1MykPD~zP)P(uG2mJR~W)eG>{Jn zN`PW-?O1;}o9UiNId@njQwFZNe{UFEQ{lwMKx)La7!CS~9S#ek!7)`|Bi<#aI7zr{ z^GBWHj>7)jkPz|#gMhw9+M`EqY+E`X!q1%B*_braDekWt{zHKBqQE}?q>xKoC>z(8 z;C0%B<#}zmP4_=t2mqhkhjT*szI1XJ^sjIt5(ihk@&s$j(^mcj2$N`Cj=eijh`AHG zLx7sk6tVJr6rv=)Vd5|&n0*P4H`g!pBRKeF#%I|Jdkyan8ii z@HNRNoH&G{`|j#*pWoz?PZ*i>Z^Lj$&mA0z7jJ|7A!OOgn3!{N5Et&$Y7;d)M`z@_| z_KM7}XIaR)uR8yWZ>>tG^=gPBKoV$~cT+qskHnbg)m$I!Xk^X{u#h@(T+2}Sk4pWA z`5~!_XRcWdSS+K$pk!HsZMWeWgw|tER14!y?LCZlLx04^w-cVu42bkQF`~XJmgvOt z`)<5`8~!s`Ur1mv1?yx6@5;%`&|hzoSG*`+JkZ)RmWh{x8?t?RbSmX|-LFFs4-M~5)9ciwZgK2BNid6n57o-UTpd$`AZ5V0QwW4j)fTTXQJ&_( z;bnJCV$B(bvEK<#!h+lgZFTPK?1xsl+Y zvf^Y^s$Q3LyOp*^&czg-?&ga~6Kz~FMHY8TWF(X17iMpy<2hGy1uh4I_t(Cpdgu)~ zeaYOOKPvB)v8!$tOK|Ez!X_gUX&i_cF~h3r zR1kb;oiU(Qv85iS#UON-yKBhMuSgm6!anzcMnuKqLsQIiOMx&d;}?!+1I#=&UYvOl z?7uaq{Z-YA8nsk_Kv!yCkmhQan=tQ`G)s6whVVK4_RWZ8@AOAs-#WcY@R?Yx>Hhpj z!#&aHmjpbs$(~4T?(PR<&oPYT?_RPze}*BI=9x|04db#;R2lV|*QF8!K*e?eL>!Pi80;?MZ7ZeGpq?rxITjT>7XD>p>py1>bwUIXjn1#iBQ-AU41bk-D3u&4 z%l}g9_kiWSprHOH^Koz=EHYK2S=9-!)A|~ot|}QB^Nl(3JdMO2=gB=fHeU{r#t5_Q z^IFilAQ6O!pUHAM+PObV>W6#*AiJCvD!#b1RIf`z`vw0tTwu~J*xj>Ce?IODd+})! z-K(tH_${h$tnDFfn0J2*Xj2v%$Y&U*=;}%L6FUrOT~g16j)KkM){pt(^o)#KX=}A_ z8yd!b?I7Tp;-Js^)Pi}<8_r;VWqVmX?65m^i`ZsUhOi@cLD3UjgN-c{CU;?cQc3>pW>6E?Nj~s z8j<0reKmrapIoTv3;^I4SjG~+5Yfo3LjW5GSaeh#3b9U=%aG~dgBZ(o?L*v8g5Uc3 z@`V?SHUz$v2d`Q4CgRuVsHyhGs}CPO1nu-yh}yhg=8<}`BrGDbI|1==Gp}F2-jU!! z^pemK(~AG9+nN+rVz{m`eKjz!?sCim-pr)PuXJ}=GAvKVEwQ_&Iq*}L^Oc2u4XU>) z>ue3ZP@{a^(lJ;}U-Q8T2o(NZt5US+Fgw@_larH6{Bw@yAC>^?6wC51C_XN(Ean*k zM~m}GVLxd1)eN(sNs8J2VO&&RmgH++bjCfIr|8`~M#4!!Dk>_q@0y=@2pt+(1}C~^ zoWZuY(|GWsoGm5dCzKpp^FgOGT&L@x!PsWx!i~|g++$fEG*arx21VX3KGCXgKu~R8 zZ_8$N{G(0YF~K5P=_TAxI3*i6dmnh06c$2!8RLwterC(ng_ytU6C0Alx;uQJ$H zgO+3m7ZUxD=f;}nzV zBCTke{cK=(c$hEy%d8JJ%4!tcPW7xEr{JX7#w%ymp!D4pZ#vr4oQen3arTOJ!}fr| zhXu-8vL_o6gt)fMS_)jhQ#0>6^+|Y3{CRZ&0w*y9YyZo$^vs_o#Cz3hYHI^hJbp4V zGE#*cFWIX({UU6TL3r+02Ea1+BiHF(r@+5F5hQua9vlEp2DT)))NTs3j`Lb0M9I-s zpP026o)*?$H?^{=sRS^wTGqwTd$9M9jfjYFZmkf^4JeG=Ng_!-G&vbgs`v^Pz>3)0 zKZK{%7!Z7SW4P;4qiCIYQ;mh~mv2H{+767Rteu&tDAFV;7z?9{t@Bn>9r&!3mJsp2Bk51rBcqL~_izXBhOEsFR3wk|9? z@_CU$`tIGkNT&)pH`?>a1WA2y=WQ_#H#S!E&xt1euzRo~Xyn{S@G-R#B~yDJJD;eI zFL^^Buy!?YE(7ocA7AQpkjhZbhFtU!rQ^as4wBi=zN*r`5#5Liu&KEoc>pq3&-G_i zj*YaMiM?Mj#E98*Kk<+a2awNp22X(wM2TOtgP1(&(^Gj@I&A5+X%dCG^aSHb1q57r zym_sLa=+Q%+;sn{@a)|0_ThKhBSg61#C*;32Z32-4{2_yguzw!|7yDKK&an8{<*Wx zK6}O;$}DG7#@U2qR77_6revReaYiaTib5qbD>II?lvGOg9+}zm_gvq8{{Fbn^Ld{4 z^PaEw>n&&#mc^XKP&%f-o5X%X;sU}4jxHh{M_0B>zNJuinNTk^?yQ4s_TjuhMexZU z(VN-Pod{8e?| zOt-Wjq}}WK`qa!|ic(prcRBLoOo0bC7nB+FtlIi3qO+*z?Y(*W0k+1iGnyR}pvJ31 zxI!9A^h)8Z|LN47(63*=@``cgF_h|v7)sGI^ML&-LkdP|{ANj0KjA_|dVL*!iJbJ2 zepkpXA0>4;hL_W_TqyW}M5b#80E%yhLaQ*0)oUi~iYG3f<&2L|BoS{`ym(<`D4UKi{Xhqbo3A_6Y#R@-JIIuB=?0nwXe)jEJ{y6KOVWIFn#?+E=ks zzEdxW{{hHJy~^afYJjSlfDuFft(6y!D%ZwgGvdDpHN{=>^N~R2AkJ2?6o?LdVR{m# zt4ZvLB&D7oJN?){qcc7?8W>s7r*kZFlCa1-9o?^PfV`4Td7B=Ki%!9s3<0xJ+m@^KZ_^y7+Y4_y~g)b$}xR zo!_3W&PM436GNA$-ctRMR`9u?rUE>^JI}ZCK`q|x6S;__q;8|jcNm@vtV|wEseNqW z?LXVCbi@e5C2VLW@tx-h9=1|<8FYd7itEW{`#bpgtyMi=c;arosyawmSfQm={O-(V8(x-it;F`pC&F?Z=rB~9h!8ed*WRp z4!=V>Edqs~xr$Kyk`mvhqoW%V%54o@ZYH^9Td3$=xS-N{&-3SH7(7w zi}VC_W{U3+g;nh@&+osx(mJ667(GWoT_72K{Jp+)dKj?DoZ{i9PHsEetau~g8EeT{ z^f3&pZy)w%Z!bhe`qXuWkz0aZ8icV_BZnByiZeqACYmbc?F~Kn8yD#`uLcYx2qp@i zSCRChNZOdrGMIl`t6(DE1pvrTx07rSI?jQ%q2^ycZNp8=uNIpDIsV88=oX-CW@y~_ z_3Kv)AjKQ~ok|{&5EzjZ$WD>IlF*y`2Pj!$&>aG&2DlnAgzx2Fhkv9$qZ96yc2v*< zhp<$w@7~8LU`Kvt;L_P$)}BiKELpeodf#!4m2;!JDfJo(Ome# zQNJYX8yM8Q5PtNhVBq^Ie(g9WthWvDv;#~Irkh0&2vnX0BGWZbKRNvgzjO*&;LV%d zqiTO3RcPSu#=N;#3SODf%s8b-^;+|-s_ibx2*0njJCVEZZ5KwW@&Loc2uPGYdoivq zFy`7%)3pSDX?@!l1nF^lO19$`3$J6GNw zCnZdqi0<>>)r@lsk;Rh%VN>j5pOu3ciYi)Lk4_95=XQ7NNFapj1ai7?=0jS{Of*!) zN`@ZSgDlD5ZwbHIA^3DZV+ybXL-A@&})X|hvtO=wrl3-i4V zJNi-H-JLgTst$Z)&J0d)f2zt0kUv9OO_Ut$Xsf<0o9ZYYt`7XAg6$`g;ne-~cR?#D zxy=^;I=)^bg`_jsQN6cwYg2HJNv~FnWs-mY;P0{swcvvgVvTiSmevyh7^zkI4iD^E z>Id4z$jMPx6eemIDsgyCOR={0Hs(KR-n{^O0%_K_BG?ZUL!zn2lZq zzU7#5zL==!F8`jq&?!<#fD(Kjhp$b~o5wb*xZC3@{h`l{>zrm6Z|^9Z1nE-5?}NGX znEQ|#_`#f~(H6}MMf``Qs*X+oO6x#40#%Tu7Zz0=P2=%A%>~B?v)wJJjzL3y2|*xG zy7lebw-K-U;rNA^w_y5GFaRh@A2}-9SXt%fzeDwsj8xRnW6Azui-1aj7u$tkKNGwK zDU{EJct;f$WcNzH;yV2@=3@J->b8=Z1Y+%25?l`FaNOwOa!|42XMh@Z@8Gk*BcH@I zy?XUww6Ys=e$`%Cq|*+<5~G?1WHFsXuwC<3VbYoP{Lp13M0Awx;lh=jhPH151CB4? z%p}7rk=A!SRXId7(a>G~R(ywIJ){PI@vAc&3&pPO7xS2=N65UFd@uie=PhU*0nee`OP4N<)VCda$y8^q zI4D#3v}|TrUP9i7%)rzNQ`7X{D=RC@b90zcUGld)H*VaJ%oa}j0er1IDg_l!T`Q&2 zXIu|jjdHmJb#5xunUql=zZ>EL(^ld?zilOrY(^FZ5ywCwEdQne1v@Pq3`E$F_ZoE4 zf-)F%bkx?#G0$|n)j(U(f{&}~DkwSmx}Jc(inlMstT&zXZWxbGEG!fdgll8UW$^Ndcu4#Yz z4*ug@kaKN5&haSMR|Yfk-UbrC0!sNHAAl3>PEP$3yB4{>RG&N-bp@-lc}j9DQM?>$ zTCn}q%s88i;;F|GXw5KoIQ#J6X4BM~;LilCN`ag@ zd)}t$=IQUP#yVbNsE%{?2d#qze~cXI+&w&~NP|6IY;JB|Ie+{>GIbEVetREt{ z2oo!DG>)}({Ca#RHH_%tresmfFBnnAj-OJEh0=H+spy|@P8%q{!BQK8jS>i z2WqJUpTyV4u9}*i?z;^1>pNi#6pu(M7dguWvwJrpO}+XVFPGV|-o38trH6BW9cb5w4^lVvxA^>D)^5A%Ga}KawdKwLM z5nub#M_yb^xj%Z=A8-G$iJuy*;d5T1fRXG+&ayU1hp{IA@CzW{V6_D{`o;+8p}tLu ztr8NCNeKXF+DujJ!zA|8(i+gfpOcx^6JDS)fj~7J*L(ePzSjv5glfy6En&0)aN+T1 z+`A`{wz3mBCBrA}qlE`ndZK;Tmq~_dERDlyXY+c$i-84YkdUv9y~IZBr~8XyCMG6# z`nygF?kva0$8UbAsCm3QssIRQlQmQ^zeS5uJ$AsMZ@as@H-nIeqbN)eUa1B;qaKZn zj7-@ct#dRF+k-D_D?c+W z_RxMVi6RKue!H|P5JL$3DCjz7nSNA;oK)6koQ}mq65qmdn^#J5a&po!%Od2liyZb) z8KzS6!x5d@{YNi;5gaL1#$_so&vG zeQT?#(D8}1QMw30b>DK{qRkzU0?|*L5gMj_V`M=Nn{@| zzviF6d@&XOv|DlVxx`5)KhE1#9hYL=(G)xMY~Yr(3NO*Jyu@)e7Bf{-OKRA z;n^ImxpVkqLCaokZXO=~`-|JZs`m>y4}DnK*iN$-MaC%~1+Q|&I#Ge3lOhi`#t%5y zL#efc3cr{1qzADv!HmFdoyGUHJ?IL>+pd=D<>}}c%2a8u-D@BtyZvTtY|Jb~M4Xb6 z@;vBpOrsNAjF9cEfFrKK(KZYLo**1sPD2oEZkj&W>FwS?1AJr{g zQiuRL``5Heown#!@=yACiRX(7NWNQi3=FO135Y668fZe+Kj4hB=Z@ZEwUKYbWp}o- zQW67AU~rV-qbn8`w{n)59YC-J)_L(GLm>j0zF5f4!cWcBxc>;B|JBP0(JzP|u+0AV z)D7oF`3lcpbss&vl8-h#rOZPU;^WWOX47h$Fe@X2OO22MWpYMkF<_PNK|?=icsw~8 zuTFTzb(onk)BGXACMwr@k8C;ZS&Xi~fN2fXad0Lp95nzX{Xs4Q*le$K#KF$_MyY|R zUvfkJ{f-M0x}u`qiYRmPukfuRXYX8ZLG`RBxZ37*fqoQGKm@|q$bw|tdwh_{s9=Cl z!8p^VdyIQ2jdtnIM0s~9Plqs#`K3$20F(8V9W8W%^n95`)x@ozQz~*{pYl~s9r13? z$1glm1i{{%F8wIST0|C{gF;M9On^TcE#wXqt_#zoxoB#$RVh#oJx#|^Dc_T}Rz?f{ zyu>?6@1}bjo$Ga_=(zcBHT~q*v%EON3nhtmD{L{fR*ct^=bmXJSxwH9)6vquFwdn# zvy*J=bzk2~O7GpUvoOptf4nb9280N`Dy6c^Lqz2TK#z@+r&9+LarOY7t?_p+lQ^H6 z-B9oWI(?K-_WoU=EtL+3_5umL5peU$`~3r>AV)^6hjyS7=Lb0jMa)pFOEx|UEH z#1(|RdPn!=ERI>4juncXg2-|7YmvB%aTlvSe^%#-!!j~53fG4{GHw?%BRA&@VhN=8 zW@ric#V^lL7(J^ghK$7QSAa{STN#7D84w?UC@A}#G`Fvf|6U^1KJ5HXw?#Sz)NHj)*fu)AGCZokkNiNXOpO(+n*VXK4|* zu-3NGsn=#}n?N%TCrcW}3e^FNVqL6Opzn@^{CXkdQ+IO%6~3eDHOgyF3_;9PjCi#P4SUdpAAzk!^n9csk z8MhP_b((*FA7iEBbX_wPpp+Xfxl(e5cM)56hoLK8F|f=CB8 zaP#$PXlawK-&J6Q(jl+h;}_JSH7~Pe95&<~dA5ZV&13JizUVuJ{tjI7JSRIlyIjxo z-K^pSr?Z5x_wSdk!Y*@=U3KMFMTM_c{J0qulq-)Wo&h^{HxKk#?mNZie9%qjW2Rke z-MzIERw%tHE9A^m$7ffe(VfSl?Wf4^f(rQ5juu$;0Lbxep=ZwWawl5gFG93Jrp>q5)vav-PZQ@G57ub z1E?s{ings3v2N6e&%)^A{HO+EH@brV$2FLFFS;m2lop+K4SGWcz+cRvZh%Vu~)8SDrHb}YX559dw|b>`zlukSUt1D zGu2Ll5;WSLB&Q*YI4*dJFy_*mH(y&hZ)d_n%sZP3vY4ZlVGZGH_$k6z%*W z1}dE}5TDxsFKY0N^{;C!VsypLC`#tab-;-vW56+Xm-V#Vbuti!%^eeY9i zZ#>0(`@=+UE3jP&$3(Df5@2Z;@@-EhRqpc9D+Ogm9zq4@z4F?>qw4WCVP+b_Rl zz*PuiVZNV}v`EK^EX0zd(7ulwmoN|IIa*)S#5e?ja z7;Omy5?=0f$gd&(y*4YJu?OFTC0>FTtyI2_R(>U7JT^9%zUZ7FPyN>`QAWU=(o63@ zV{QO+x0;(U>(by;J=j%TMN5`5 z=Jt~qb$1vlmlh`4ADAlx5;$J>KPEkm%jh5mi~a7!|KW!pRTKXSK!ZBI<3sR_hXHZtJSM+&KgyiCW@8lEH< zD3uT*JnubdXI>)cY=#o4rFr=AIZQw&Ur$KhqhInUh}9qR_0CRIR=cz4)cViL1rz74 zOF-uh43gFLjrd~`(9_3QD<(}j%b;-ey{$r#DF}yYk@>>dSs|~j7faG`f;y73bY2a? z;^N{hb#?MGOYe0yLif*_-ftbg_bwB`V)%!y@zk-#@PB?@uv6eo|6()Z*q&Mr$e{Uv zcIaYNTyi^h22G9}+-T~ILd-8N_Ft~l8b6?Z3;aiBTH@-wO$c44NlF^_(zn-gwjEb* zbyJ1eHVV`5K?gSW7y4LVXMvdj)R`1Qm;Y)8@7{CLM&<^MyQwMSjxQ6!AOxu03I<8Y_t)G_~JaJ8NPH>rn3LijzWDv zV(*}=K8q4oa^j8g5B1_}5ys|Ngx208CjjB=-$bG>lkAxeVTZL*DfPW9Ic_%f@|gBW zzr=}VAWWLqql;2P#Knv{g{M^Z6AZG1Vzu~5TOrK`VHO-4x5rHj&fa)7Ff^q6yDUl( zrBNzOqmO$ULLd7#VCjwNJIj}ye&Ko}7(bJ}ec?V$iu7(N8ESTfDbCH;{xVF6czLHS zzM2#MQl(|eSOf1jS9C>;JqOyZdLT*)wrJ&_QIO+q8cx4_xJYq>vPCr zE#P32xQV6qywz*a_pj@aYZ<7{?>r2)Uuxsu0kyvf?f1rKt zNV5k6UNw-N?iHrkKOt?QUI_pUzknLyV$)3y`!JCChxeZDTxTTbcx4AtEJBe!$^t}b ze)*oo_}35b-G79)b0(RHO*lpl<38m$9Kob=t$LoJhCvNC7A-75;Dy*iTTfkKW+wl; zvb2KYCbzrXEiRL$-5wWDaTYC=pZU=}_fVr}Y?2kZ4q6MQ9XOe@yIaR~;$doo0k}#0ien&& zjv7oq2D#uCz>q>GPQGeA#e@>Y(9Gpf)EIW!=F^07qckM#-)cI#8}awuJ6Y# zb&KUXYr$HwCH)gAu}&CAq_%dP0vMs=1As>}!GPvcUSrIcLsl7~M?)-?6%)X=KCh{A zN3>wHpa_@w@7w=(V!3#EiF@^zemb?4vW*gVH~hy z^f$z!$yagqTAa`(3G7C+O8h9(K$2%8 z68T?PVO8x%-T7cCQ=Cf!;)?w$auRCd*BHu z>=d8>(YQHEK!}PIbMz$dPI>CA>kY-c?&Tn{C+i5h%9=&yxb5Kc41!pdq1}UzI`9sv zNB2QdQ+MOP7g{^p6u%7<&GhD!+6yC-5}LgqY)a(BuZdsSw8|Pg7rWMkK30!y7yfrd z!j@GIT~Dh;djiezcgm8w)#3=>!?*8bW@Oa8>khKNBbqZ+`oiwcr{U73SPL>BWz156 z(?5!>J_}P=zgp#Xk_rFJEOuj&2i%iuUwm>qd|&f35UoBxLWJ>YCFC8y`M0XPQ@Kdo zb3RBe;zQQcLrHb2lPdB{D#s#a_dBSa%_E-bN%7_Z<39;kTxv>~RdS`xb zhNN97^KEkJt#I8~?HfQL*G-UVF_z2BTa7M?Bh!7rnLH1)i)%G}O+S2{5tmkBA0qJk zj<49b49|GxX+;-hEvS)8LEr)@$kWn!C0@e>-048MjASP{v`^Ca*d-Oubvbxw*bbK6(_-S^!&v@?Ja_bj(i;gA*Vv#^A5?h%BO}{8s-coXouTCRVN~>7 zey5?os!luQQy@J6H&t`%t4y$m*aT-&po)%98A;R8=kbHH9wn2}ovKkQ|L?*z^t8>( z3!27xTC+h{$9O+}&ZuEdk+7a%mrEz|Tm#eUGYF-W7ifCjWC``#p-i-f#q%3mEb z3Q7j>ii?Ro-jCl(P+~)N(3`i52p=h4L7v37eZiXIcf z^h%q4G&tE#n%Ukd9IL{HENBB(+lwM5@uR@c%US;{G!0i*>Kl5cTwbWmrNUq)ozAi? zLPZ%0=VoN24~w`s3fpA>4NIE6W$toy> zdU<&zBy~lCqRUR)GRxnKCD+?~lQj{Er7MQ9pRueKYSL!zo;fibuhXimxXR!)+ByvA z3UZlXpxU|h?D_MLqgoa%E;kWXbl@tn-qvzZuhW5&sL(~fE&;fmUC+%5+cs4nZI6z8 ziZS6Hs`;fQIi0qrPv07{JdnPgs1OOzdQO20XYU5&JN)|*I_c^z-qsvXncZ=iFOyIg z2Z`uQMr$_Pw`|?T02YJ>bv6mrwtIGjsUjJj~~(i5M?A60Q9a{T0Z@B z1nnB0p)f21rJ@FM^7b;%>h@Z_l)9n9|AK4cvLp{T_vPG}V60BZxsEMp>`y;6Y+R{l z7fY!|P}bSS?97St762?=z1?g0#Tla-P5gDRuPz|WiRRjKv7%JG zp&3Mh;3n){H~%Ftd(#r6tm`+8gVhOBBb5|T#D0|qb|=MmUN9*VbS`y!VBEe4$-GPG zE0FVGKhKjpSroOXU6Eb$5vCzQiUwka4nB3sTWK~!m@H6K+)%0fG z->cLukAMfM5!8l;q;uGEGj>{!L`Uz%U(=(eR6fB3XG(kiqjNDJoKd5Lv}0PA>iT!= zWIYSu_yC*%kG`k$!uCw>gGG=G4+dp{q)pM_CrwTJTpRXhDHUx|=hR9^{mPIqv`NAh zjNffW$Je=@h^F}P^7gs9moKwo>vD3qeZa_`ZtQg{7BmlW=Q1OJmc-3dwC_^h=uHS_ z%9G?%A0k!tVulC?)h7@F;%sKW8w!OJ>cGxyCdC|$?4Y9`5R zqUo4~56|faQCHCbIVT6u$c~HKqt(gB@ef+^sWC^KC;dC_KoG@aeJyqKO~;MMA-^}- z>n{bFrh;GCv~af`FM|cBheC)dF4F%y(7kusP?F5##XZbO|H$UFE4ZARN8z-e8i$A< zxS@b}^(H5wz!)Ul$Tp|!zN`PRVbrJwxemoBP9;a`gn*b5gDk-TL#$T_XC&+X>z8U0 zrZUX#bo}zkI9!5&gzVI#7wtRuy#FoMVa|}P-CBCL=9-p>>&03I>PRp!PsM!0Md;$9 z4PipKHam#8qsmeY;r7*fvKey%Fx7BDp$@RC!fAKZiXUEII*RM#^b$HD=UWb{#Kn21 zi;t3H*<3G95uS~ZTzBqR3rb-A;aoRza((N(!*U77<5&cNeXHHo zde5m|KE^IGiw}naz96cL5*-0-p!Fl}V-&RnkDXRcxYxa?$~ytH5=|zm&o2dO!X^aC zVWwa#fPcUtlLHGlGiu`MhI4LLYS|`6_r)%}n}7Dw#funA#_1Eg%^%fM+EY*Ua6#A> zNfuDi>&{P6*CT?Izy(yii%*^4Eg}E$+7Owb_=l=S z_t2YvuB~uduJ83ag-EO7Jo9Ig7!6>LoL?4~*dvld`?9xADd&MGe z=_7vyt>aXdkM9MCtPzX0h(lEsR)l>o9E(8BjWXM_H^!g&{4Y5Q308W}t~D*d+VgHn zT_^!M_OS&cg^tDaEv7BR-uBl)7HdY_-&hAO75L=mDcCE;J>#gy&48br>N1xLDEqG8 zdAoFGd%kb%6$^}e%G^LB43v8sIy8oz2`}WJZg`Qelwm)h!((%DS1va5viL7ix()xZn*WGCtD%}rfB3-HupBY@-FiM!N&=f@qCpbeeb z*o}oQC^JEc1?38Zreuu!uKjhhEsTSMmC7fhJttdxU&3J3nAVxRfbFc5!&I*uHz_G+R#pb?SKm12 z$d1jU8JJ>WvLF6I*&;SNzOlVcm2-^q&~<@-_@)VdcO`@vvb8)+>tU9+6sSrhTzf#n zDeD4okj|c=p`k|S=#cQ9ll($v$Pf)K_n-3f|MC->bxIK8M8h2H^U0KYH<^natmX|2 z(MMq|TOR;>(+^Tm4y{* z(>LfEj5^bKkAP=o86xuC$cdmCC5)l&XQGrER#|oKlkS%y{0mW#d!_+C>n120si74{ zqdj%kdNP9g$R0lbTI(i*R6Q7HY{Q*i5F=NiF^(c9KD>*R8~RcR+&B;)Tci$!nIyjW zsx6pL>yFd3oJJJ+I!z|PbSBk}HNRRypFnUXPP&3PtyWJ8tUGt6M=6i;MS}*vNu3%A z8P%re&uK@v0+jXa4q~=cOUDqpYsmDIARV`bRU|(l!w^l)atg~yaW&nTc(1A%xL!6! zMn)nA(-Sg&%j(gwx{dK!WLQ$^o5)8@y0!s{M1?@A8;=;XzjS7Cr~yM8AmMs3zM-PR j*ea^Sw4ErRymCw?#b%@Mt~8ed0)P727qrSX?4th%z6Pk* literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png.import b/addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png.import new file mode 100644 index 0000000..4ac4f9e --- /dev/null +++ b/addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ch4hvrgmq3j7t" +path="res://.godot/imported/pl5 hate.png-004951da12b71d275d61f3fe7af6c760.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/portraits/Antonio/pl5 hate.png" +dest_files=["res://.godot/imported/pl5 hate.png-004951da12b71d275d61f3fe7af6c760.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png b/addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png new file mode 100644 index 0000000000000000000000000000000000000000..4763b8236b106af13bd0f248d26645b4f124c4b4 GIT binary patch literal 65154 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 Q5cs=r-blAZ8}so00D+4{tpET3 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png.import b/addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png.import new file mode 100644 index 0000000..cb22c00 --- /dev/null +++ b/addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1k1be4cqjj4t" +path="res://.godot/imported/pl5 plot.png-7c5bbb51327eb4b7b1b78f4597ed6c60.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/portraits/Antonio/pl5 plot.png" +dest_files=["res://.godot/imported/pl5 plot.png-7c5bbb51327eb4b7b1b78f4597ed6c60.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 sad.png b/addons/dialogic/Example Assets/portraits/Antonio/pl5 sad.png new file mode 100644 index 0000000000000000000000000000000000000000..97845b26de3074550b80633f0b2122b339043237 GIT binary patch literal 66584 zcmeFZg;Uh;`#rq7)Y9GEi=c?0NOwvrDI$oJDBTS%Eg>u=4FV!aODNqXAp+7}f~0ip z@80+4`%gSG&y0#V&a$sNuIrq0owJcTS}Mc@3 z_yTp+Q;~<14KZzjZ?J9TH02IWN*VecHr61RTr_{xjlQns652~|Lgy&E093+amrpvS1%~w`XZ^s;ETy= zO-+s4142SV!-16~Z*TAH0gw0Ix{#`>st^6!0ac=3c6N4X8X6j8rqiSHxadDa5bE@n ztG(}ukB*MQX{f2)YjOM^dHV%PmKk0Vw4nFMZ#<*r_y3yt{ypw*LEp?MnmrHaefjKZ zvf--5?Mru(#<=S1TtDTkMu$Yd6P2y4E%Z>T(2C)un3Aq!#4SivLMIW6WWCz?;hIF$ zzEqs%NhH}i`hLj5XOpj=^;-h`s~tvipx*~Q{!V}WVR=$+^0ohisAJagN}PjN* zt4%ZmPj~pW_rA&OG@Z^HEHwLnp}B4H+gD(_ZXuvr(W2t!Y=zYRX#IylC;@e;)j+cG z_GGyyDr9)AN&1#y+3e%7Ld~bvdylEQI6uL15Ne7o0oS+2Kk4SD!RKAATt5li2LCI= zti<3p=kN3fZ(bd5j&_)Q_xLjY<*Dc+0q1HY3??NiI(cz8Aoztx^Mer{vs*m*)kwXw zWp%lT;^NbmtHbE8PD}FJMcDz<1!VA&wJkxV%6h#H+^A*ZCr}-#y~O0q%(>?inpR>e z$-C}GJ&+(u8&Rwj2`)vjT$+y3#C*4Y$MB&_=Z?JBcx7<{j`D}69 zw}s%GS8WUHdXxAF71&Mt)hzSqp@eV12C>UuOIBctVS3L=Wa608{tTmD%<48#3z)HF2n3CYPG zMom7)rHR_oQ=O*@n)Cej@sel%#NAENAnbk(7l0y$BZOMLOe? zlaky~rF-OU3lWOaRj0nkf2b2zzgI!lBFmdj7?z;@#5TQUc!!6F*0eGu2=$uHOl93= z4G#~GyT>FyP0B`zcYOar<>)B+RdvJ!hTQ#R}YNUr)V|I{9r`Xs4^IJ33IML8fHha9xv! zu)u6xXK>qFJVQZnP9LF;{(|)=%%4vcvV39El6^}@`D`^&+a#J+aGoQ5_rA--Oqx1DYKj~w*{|a>i^a7vas5Cr|##2L#*@ zS6ly>c98jkQ0GHkUvMa?v2k3Hs%vYbYcVEFiHn0CR?q%DVIEOY&u>jnb@f<|L5W61?8}%K2#b5}n*Lpm7OVwJs(+=JVUbGW z|L;KhNx9kFe96D9vG9a8B3+pBSFrAfRaOJ*zqR?))$_qQQw)X&@|-n|fEq%O^2{Sm z|Ld#qW!~k%Le2D2wL~7{9wyg!;{}gseam4Qk3Z_=fES<#hv-c<=qTgy3)`H!*dEh@ zx+s()W?A9~2M2}wQv}g92q^WC)Tt?@uNF2A4$g$8=-kV-jg6-p*@4YXq9=X_U9=O7 zj*S-UG+dUP`QT8{uh}lOhf3AGp1P-w3KGl1zOn$vl27H;5TiZ{(Kj?C{Y5^MfRxq$ z-{_iE*<AbS}5Z8ED6{NPRPv9Jun>`EB8Ubgb(p&dy~>jMTSUcOpo1f;+b%1Bj^vQN*{d1TQXsE5?GB%vHQgRnVZA@m+z}^p zV>^3@g-hhrw4@E1jz)HH6~vz+R{RfQyR>>}y8J~~)R+?erlU*&g6}P+Jiy-Kk(MD~ z=y{j5{%0yFQXhVFrVF-Q{rvN*IMLZsV(`QLXdllK{St!{mQ%LLpqCw0dDswYSl;0H zZ22Vs$bHy5WZecpL-Jo#J`mem1zw7viJ z@ub1teA5a=ii*(#yPsUeu8^y?^Y3TN(ZY)Osod(VbiQ?YC~wRQE`E$$3(PDnm)dJQ zDg_{ddM}34Xf`|Wrr|64=91B3Eok4ScQ`kk<<*`uZE2u5aa2ytDT zyDw7pI;uWFAY#latp09d`Y_ZJ%$36rf+JlO>jN}muE9lc+>4PBwi&81sj;=VcO6`c zzT9hBF!}l_X}rqnQMDk;uM)%I(mKZlhY2fks?Yhc;{CcXhNyGTn5#i+%l`4Llp|z8d=2$j z2WCJ-fA8ZLa0C09FdzwE@r?COJDR%T+%T?gOSm4}zzy7r2IwZECb5rkFpq^AX{hg{{Fb6Co zT;zhB$FR(_fnNA{<@Ob(vGa^-$97CtSw$ZY3J=qHqA?8viGEWzXZ_{b_Xz}k^EG5y zY3`f*4{`Dh9^JcY@%Yi8iZUjEMv;wKQ*5xNQEU_c$Qq_drB>bvm*NsL{PtbxiK6D$ zXbk-INmqF@2NM4VJ#P4%-XiewZ(Vx53^l~)Cel{9(;2F+dP_H7nRpw3vLb@z_R`YQ z>Ycf$gnytJeU$77Bev%);p5G8(~}plH)`~%wEOcmK76kQJzx6W zwI$49F%lCK>xOA_Jwfcx>CuaGn1Nn_fEL*!WYw%O>mDm)+5M!qx7SO-VR7QU3X9!d z4D;Y$JV`>X)Ay#TgwMUu*QYTBaonUL7gN4_O`2n@$SbRqXX~D|Ek{`gsh6xov6(Ji zPw=?S0k@%6Z1B}j$L8ycx&=}1XE!*jzoq}VhE>!dgWR?f+nzNyHmA@GbN}mJO_se8 z(uUNbK`XWvKNm}uTnYk<^TDbei4Uc`LQqPAzW(L2e#x{i1y;5;t^D(H<G)fdu`vAC18cz_NBcf7pAO zf0O=7!=t!C5*w78X;yRiYA?%18Ux7Rimg&7cP?9e0b1#fRHPMn3dH-32t8VK^Jo+W zH|A$3fm+L1Gg|OHopE)2{li1C<4Xj@=t3i9ro!SaIP&*oDVS+Q)Iy?ZZdYL-Q%-?D z7yi$H6o;V5Ze1e^oc{5hsp>Dr)z(wK6oh6h)4~Jp?)-CHf5Anf!dxUGV`F1Z#RwLL z?F5&rbgNkH(bwPddUB?HLxT@y5oG|)8E@b3u=OGJ$X767io(Q<3X z*Kz)D{q*WTC9IC*kAnHD$Hk%3~6f}AG$o*T#9*l)ZQ*{ zzdi8tK|MMuYKTGF&udxyKHq=19OVtTwiasK88zQ9-ih0$+P44- zc1);tX-2S=(E#d(y_GLJUyjVdt%%skZjmpC7eauf-Ir&PPvp^j$GeQ7wWo?bW7;xr zG(U*+%||f>tlW9_O(ezg`_Oy=B1@SXQlKFWP~+I=A~jfCF=kRCVjUyY%{V> zOPGya>AB!PiDF2ApZ&Isqpv##RkX>z%IvOF^%!GN2CRIMh+qAsgn9q1Hu_Ym+is$r zSV4N^#H&fBUQ3|}`+TJ>CaXOIs$tMX^$PiJ-C{7Te9`64H+k#F919=(*!yVxy^VRP z9?wZ+yG2$$luYUdAHRb2k?=1KpV`^L8&B*k+Qr{uaU$(%R9r9@CK2r@oL@&PZIMcj zSdtp3AcDjmKo7qq7a{NgoGcg&ITjQ>E{V9LO!p)-MROHkxbelscDZICGy!dkGZ-Kb zLw#WmygIN*8r9{1-+o#vVlOEB5Eh4v6+?kPP6>Z=OE3?|ia4~}ZjR};|K&*m`IEIT zPwUJq_w=Z=F%MzQ2XIt9ptN6AVq7K}qmTFC{^FO%TVp*tp5p88Un-xgtDav!>^|bjRjbsCGmp&Nj6zg$6K6sy;{6H5qat)fzvKS~+{ah|91(UmM z40}il$2cnSpFc7sCPmKV5HIK@2q2vPm8pD7mLaC~I@?+txs$C}i%+n)2&|7NUE`8C zeimvnUh2NyoT@I;g)2cN=P;WKfI)!<#{_!x7?l3-lHZyU=aiHiVcL2OuEp)2_)AO7f012*^CGU$r|CwG(% zs6e@}iha+iqF3@DOIbo|;@i`^(<$!)XPZUPVmlQbgExGS3sV~)=+i*7&1bB3obBwE z4S!~`Z}r7n-0`Z@b&jl~o>BJ^Dqb8qs(Cn$um%R?n-@6!3;RnQ-h2E!8mT#_CS9(Z zO2sHKkKI|ZMu7B>=XSGHButml_4(vOB0cO1nGae9v0MML+SN*yy`h-R=*O8ycQZQH zWci;M3qL`;Clid*Ck_x<#E~_Z=t~$4(o<+wE=^?Y!vS4@4ufua0}>MRP_md63O*L3 znfwZXW6k!2jDp=K<{~K3uH}d0ibeo&t<_Ci0^a)u(31`xBTYTSXo2~87MsbasR#FtMw>AdkdsCMj%qIRaA zcsrupx*Qrw<8yoQ&5~~y!w1=~pm}~Touij4Mv!9;WwLqab5emr|C6aAuee8Sh))N5 z<0UCmg}>tH?o}Ud;j_MZ$CMj(mwR5uq8C|++n`(rBQI!8qN`cH zyFxvey_|8sedj_KKByB(@{ERXY=pUVdH)!r;aXsWq zn^LQ~Tm@FxUd~&Rdo!gCquG9keT6tqTx4&R>!17n{i^(Fv~?5k+J!IV@iS4H2(siH zO`)Fcfu9ABVkEK->Q@yWj*-t{cSWp3gv$T=tk0j{+5jC#01ETw*5oHG!Y7h|_^2B% zuU;H)Gd>!6(|mRKsKjCJTlZgWJti?oO^`cPh?Cqt+ZoW3eC%7UPpUDZSk)|6%$-7c zHeK^KD^Tx^OwS#uE+>*+-TFVDO9rn(`Vx72I;B{NiZl;#+nvJW%%~=L(4!w`d1cVuD2~#ugHR{Jg zLEOH8pQP)_Q^77Es7_rtMOx_IlLu!$;%7HCa^3cFXK(Mq`+o!UWF?8^&~~2lgko5& zMyED>qwBUUnZ9=XHgD~-a4K$jOfewHS7OuOoo%RY+G0U%F2Q=#i^z#r0xEqvnD4(E zk=LQv=s9dT?C1Xiur8hFgZ705xH*!!0TS6+3=~#f*`16|8A%S=hn?rrNTG)+4y{6W z2YG2WkVF0s^2ePO79FZ2X-17Ix)jl1ZGVoHKW}m2aMI#o+2Kdc!XD9Xr|dclHtvUD zcw0I>I`^=TH`@rsmoOK&o@Qgx!{S@I#l0wd9hj5)z~KH`P-H2#)9fynoOmhFT;Ueh zv=4L0p1F-G@$d#YwTdqIS;|m8rEAmB4zpeIQd@TuZc8ZC1+AO$eNqzjyg6LS8451S z$0BgmIjzRK-VhE2cMHF4AIk{$zScM=#KC5>@_&b0C`a@Rc72@Fa~*g0&}KZ(D+3UW ziARD>FOm8jpMV5xJe)1FP=CXm+Mwg&L~izO;Li8KRb|QjRxE2tmr}VcBOnp~8oRQ+ z_3v~cutzZsj?F^R_~dZL<;N{`c?=5miHeGoRAHSYusr6b(SWrE3dZeXp`h@sXRoFLsjrkqY9yYiqkNc|hx-^8SU%VkAVc z6L4QUM;zR)ASOIXX3shIl>7b{|58zZ#mJ&^c_DqNqazg-3i)24jQ#kuw_vLunA0;e zud`>sz64?Rg;R7)&Io-F5o76|SQ5Q!;HiC9~hqSrFuwwK%joCm`e6Q_LGl=-XcKWJ1T8UUZgTtPTN5K zd5}qLEUdy#GfuSnD8BI&RMFqQ93AJ+Ud$0!a50O!Rrs9l{%A4`$L7QDx|S%+tM3Je z=OS7*%M}O%Md#h4b1>QmFghFve^#mIb23}_1NBuhja9B3qWJ8f(DMPo7CPwLo{-5y zrVzYGtZ|SD-sJo0VMY zCp9C#z+N0>yQ8(C7^oJP+v;o@aK6SP6XGtC;q#|>LRW>^ikM}`VLPB*wQk;Ldl(EU zzV~QQamNDC$#tKDtNITpgT4c|>pHoi`$H0YBFDQ3h_>Vbl21XwT(}@E^j|KOiO0jzFMj+JaQbi=|7_TI=}ynJc5f@c|Ea&6oftR_p2TuK`)znJ zmzhzxfEm>3v>qMI`|cS7rRhDNy&@1LqgFk+cwh7-aP#zVFgSeM;(6TAdg@A97CxpW z5p%4ThpkcT$**qOS1}ot;CA0#safRi6K!}?xqYtYoh^Z;bnTZd2=(?^kCPu1++cxYNRKar<>>^vF zSapbR%rx4*WW*IREZ!DSJ^Z_ z=IG4}-G{c5iq;rXLy$sgS8$UT>)^0}9)i#IH@-MNr-UU7R_a0(BIdfDimg(sn+gw% z7nSYfv>=_2-WyuTg~#*7{cJr4$1g>5+d>kCRJ-!V(SfA)szx&RD}Hnm;PUBKfXaHC zRG7LWZ-AwIYv7}r2;t@+SaKbwF^B5yhn9P$&xBC5NBsHAa zOCJiEW_>)SRmG$kpla@xaJSE%O(5ugc3N6rJkMijkW;sB5HF-0+86%>JN~YiWjB%i z$$;tzrzNp-fPnwv`=lZ8t}XAV?1 zDq8ZJajQ{D2=}fneNMul8)=sm6TdVVesKPqrMOvK_wAv$cOqsmG5DPnH;K5Bq#U&sf?Fi{jhf{BgB zWP8~dJ`F`|I0l7qW{bxA(E#q$N!+xF`uGyeZbUxrbrOqUcslKO?3kzVL1El6{ zSo7jSL-FmFeif)-IqVpn^m`I6{~bg?OoSdcZxqtDvLaY(6nO%J$Y6aDB3yZ=@?0Ys z5%*fXd?0YFk3~h3s3ZDpJAG0&4`)lBx=#Nc*zQ98lkAZsi}2E@5A$B zETuMinKnQ4Ix3RLecXs+Avp+Zq(IS%72(Z%r{cbYDW%L9Aq~qwq?Q zg^egL^Yz99ru;pGxg;m*>U|UXKkT?d_#;O>T|tKd`J4henUbNPiT&ii@^Md3(;<25 zplYJmqX>KChuA?g*|1g^8D#e~A^8FR8@I7Xou6K~h@^Ir5!y;pY1?LT)l7hcn)Tls z;J6aH9$Th{wf=N>fhL~9&l!47=5mMe z8Z^iQwO6`SKn&*IA`704xgTS-9Q^p{t_LXuPrz6}N6;6FXyV)|fB7jy2SN!2v`}U2 z_6Y60ZC6***THU< zEN1zZT>jve^E+HrP{K$?R%+q1tA@HTIzi}`NMoCNG#-ME5>2D_u2Xh%86;&*vu~Cv`{B`n>8gc7cp+v$*?Otm@+h3jtilV^7 zl*jkUov&8(Z-pzVd3e{*ujl@(v{b3K-i(>Vr`qUY4qS;5{czGpbN~$yrolc2;%jY5 zTwtkF7(|JZz=?v9zIzoH`QDc2xRX-*x9<(789R@XGe&d~?^JhbVa_HMX*{^??aH{k zxeo;Kw6C2xZwQY02whCWpW7`NG9lgMX1)fbZITonC(&;J*$<}h&( zbhEF~;wpRKRM`Cfg*ry97TAv*v%3WbE=a6{}T`_!CD;v~%?06sR}$ntfV^`XEHad}YcJA2mrHW(J1 z;EEw0mPG`M7(i!6a)_0~C0b#Pj%xeiJ9|5?ijq>7xa}P65++snB zS(LFVuh}@m`yg1*et5!0)DcJ2%jJM4+-sOqq_s zIOod)NDk96U<|0rr6gIg96~n2m_XZr4x!~;UO`xI6|1oIJ6)z!jtKLQe}es>H`WuS z#uGqNvjL>F>6U|!MPAoQ!t2hN_lb#?d$+?#f+YZX9WQ?_^9HZ96Ngzcmx~!7wl@^}h4F~!D){l( zS=d_V1JVARS7Hya85_u#2%gV}w{YWAoM|Db32E<$^u^bZSa;s-hx~Y}D!zI@qa?xU zj!xA6h*JPZ=X}-oT(U^1d zQ!Z~^(2%zu3znskax9Y_O=+O=9su7>Wj19gop+3d6VYMBjMj5tg?Uui^%LjYC#)0~{iEVf0I9z`im)jKrIVQ4t9|E43(>JA)PA z3gQ*`d#UPZafA|i1^zB@4v<^QK~a#ly(N{lJtStMiCO|=9h-3=u4F70Z4Jq8R2SmhVck+AF6*MXcdVY_@<>}~-FEGFrles~?nuhj?A zglo`KVf7)1;&6?xNB3fMyp%@vj%q*V)BZJ%^q8+G>pLA1LHz z$Kg&azy>naxgU7GMr)Zw!2riSaGH;EYL91E7?e)HRg17Zk($#9LQ+0#ee1WrJ4y2R7p$xGjlLqO4F9u(xLl1AL#Z+2%!ZC;HL!-m#j;xY1 zK1Ov=z-IUN9;TK{qlvX*!H2`J@Amn@#jB>sZvmr@a67T642`&z0|LAAQ>02_Uo5rS zCS;p=DV7#u1(_7A47f$_grE4YN4_4y9$65PckrjAoFO!5lI@pMgG6LRWY~&7(4I<{ zI>OVB$lyq+C^CPDm(&8iAS8sD?68?IimIIzC+af{MKFOPd2u_REhpmOX%5w*=Hgcb zJr|qH&DoDnv*w@l>aRJ-E>MOpS?8ILc(##DQn6?)STn`TMjQ_^p;u7~GeteFlLEi8BkB(YU#mJ)Cr5PW=-B`nxgk zfCb+N5~QoNSj$p~OBh~|tF|6Hd#q8g9-@EtHTixuFb_TD>hWzvgvW#f>r0U7uH zQ}2M}sa(XJd@(>mo*TM>?FKy5FvEmDegr`N= zln&}4m~1DM4tC#WBCYqfyte$2Pez8@dU34z;A!QHP;$M0u!#Hh0|&DE{>7oEFeEnz zG>-Uhpz~ZlgiIR$ezP_lM-XyO=f$D}+bq)V<9?_ark?yd?CspU9wy4{@H%#y5ux|{ zNK?+|Q{QzU?@9uJvS6KVjC>M{qA}K&AD)}`+IcKAMTyai z$w53NSzVPhlrf3tafTm7Y$+5?Z^9TI?#@&4+yX?{QROge>?HMcS@Ov1_|JIZB`aY& z#x$lp%2AwfDrd*G)7}WBf*p!vOnl4rp}LaekygjGzz*c}<-}1^DJvi?)XMxeAjRI( z@P0eYwbhf#%5n>gWY=SHixB}B@S)y0efb1iUQV(d0+%Q?!c(6lyD_SieHgSVgPrn} z1;W-C>-h%467rIg$@@_ z7Z>9~O}`WLgwwp?xzAR?iG(693#)X>=NQ{Vd_Q(ix%ne2UrKwlld-!S6|p399$VvQ zmj5GT!mMZCX31lXqP6sl1lqX&l48e??WWwTF~WZ*o8k6TjmP@k$Rn;;7{z8|CyauH zyz>S{WV(Tb^y08tW(R9}QMbRjS|KeeecvBv2h*opY}r`w2IP#|2rDX{;Q1l&e_G!A`SWKMMJRU+69tddvRuNEH{me9x+Lai zn^^z&a2yB!roA?KjX+-U1z=lG-AZ!Srrv#4g`)(m&Q_`QL4z7$^oq8H`!6gdrj}-)YDV| zuTJAbF>W8l;z8O}x02zOf7?__(|qrk5}9j%CxDTRiU3;W6NeaZ{Ah%>0lIV^m(jzx=6(9?R+JtL)7q6w zzfJ7m)>3tyw!hSMKf!N(^W(Cs{Vxjv3JSBJ$+`8m9?cmi`GP?N zx{-Z2sMGdHz8$gQFq)@i%{q7Hm(*m-2zAczcpgIF!o0S_o#V7U-66nKC*>l!EqW!V;3tC(8*rnD{qII&MnR^UC7lM)xNjDkYyt@mQajk zgfZxD=W1V~r~8I01v&i_MPsgZN{eucpio9avRC!Jb1XeOi&p`$o;U;9XN`%j!8zUh zi*J<2EsE!u6-qQ@pis1ilxHtm2nj58?6x;vvx_ zd)7M&S#7^qJW}W#XA>F;bqK!es9V3QY(?l#Y=lA1YLGArKaOx=G zwfAy|ltH9d^&LRWZ)n>B2f<7S&42qPr@JwwYms4-j1EbKBDrd&xchXH5{n>NECO1S zXcaTU;W|$q4`&wN5Yi5ERqXg^+xFQCq20JY8PT^jNvajXvmx_@?2M#QW=~Ev=np{x z|G~wG5rQG(ifTw~66YBwFvOX#wP;QZrU}on+7ttiF^()BWd!W5n!s%K`e2%6E&r2G z6(!i_K%Pwv35AF1@GOWy@RIKzWflV?a0J}b~vSx+2%wFZp5`U%pL{nMuY=k|| zOH2$}vmRre;Uf8&*^iIjply7Qe}@@|J>#Cn0#RUKVEDZtJu=N*>?U@2m(w+HD8G-7 z#P#uVaM+dTDhD3*TrddciBI2VeW9O;aefJz;u4nB?aZ%nCNu8(f;fdgkdHF6)rg4d zEQsze1(h^$)&I)eeS6>*or29Bgp@5@9nIYbqM4|(^TG(;nhPbbmdG7D69P&WCvo~P ztPMev?T4m*N5pXGS@&jUW4KeJV6$50Rg>c|b|asxnTm)viQ5II_S*y{NkYIOGPoxH zm|of`sUa|)fiNaH5$!VaHlK6>`tE2~Ws=-uDQZ;0k{?a0JPZX}tw*`;ImZ=W~Kg~el8 z5Ub=K5JT^B;lnkN1pX9EXFvSDs~<{hb;;G-EslSMvm{P_Lz|unA_d@p_fv7Ou~6bH z;w5wekIiOTZ92tW5G5D~RPq!Gf*1omomL&rla!B&7@w)B*0@%)YkeXc%aZUcQ?uK z{*2_lt^6fMQ=~DmmEd8RDIM!@VPOCB@5 zKLnLQh7Y)cIxqZ{9$=~CR1TUY>2p?QJ+EK?V6VYpl=JXmvPkB!y4I4yK3R(LU1kte z5h|`G#jCnL-!W_Q`TIEq4=K~5v^}MhOUMEyXVX3WvRhnJC-nn%58QwuDt*h(ivV`4 z`P^d6_)L_; z!JdKCLRQOg|HaHY&ka>F2V+7JR@srX^|nbIgMa-NtvI*ru%k-}C~X z=u+Qd#jjr;X6fnamne9cHL$0ql*WRIC|0L^svOAX0yYjI$wdvEk^ba9Za zmE%<3be~9Z`s@=I+^=dM*t9I$VF)bvpck0`RgPBf^G#XGCSn~Bs*~I9HkAGN1s#E#g&$aET^5#2>89IF18kR zn~VqG`XvsH2i+Vz!{^=6d@@JO9go(<);x{gtwPM-;}USz<7CHG93E@s#GjGWMpFAN zIQ8r*V{KHu}YabX{ zG~_p*yYz7@p9v4ldA767zBfnp6n0n%N(@`MGU5LLP>K=3E~7Eb#6`iw0x2186V1=$Mh4F^6;!F-9F6TlMI!Z2Cm({kzyA%GjRrcen00DU;kBS62s-|ZcpQcjq z{>&Ra-Nsl<^n`=swTsf?Mj*I~h0%i;)sYzlV7mXt>B)LQbl}T#M4to{B5)qf(|^@i z;lu-Wy{+pQD2RZ?Y5qV1#m^&shgUsg497Ou=sXihhdkNB;+K_K@O;8?otE0(6cT0~P&!e8`o#p|XOVx7Dmu@o-!`#$Z6uHZK|s_|IQplL1I z_js-u{U~v}@=}Uoupm}tHLS&H2z;K&x41GcOfp3U1^eL4Gk@|B-pW<@$+{azab2-UKd=*IrA5~b4VH5M^Ca<~XBV~M z&Jz6@z+%kXEq4V4_ga)mZp2cvu#9f_4NB{un=Od&@@_l>$yhZX%vrcgM(C6Uk8{rs zxUgd&HfKUKbyT@kjjI_b(D98bG%#aD1Z5El$UcxUqwT+B$^v{)xMXQP-SI>M=Kw(L z2QpDtv5yC1At19kX9!M(4;VS{$1fcGoSmJG-YNRO>;^K}DEMQX%)9L=hwE>QM;pVU z_?R@Ka9^{~3*VF{Htf}3;S-P0w(8c{t~@&Ac0kLn`5s=TvMSxID^znr4rkUt z-pcMnsl3JikVNbcc~(t8Ff3K z$i+DrzYKbNaDWm8he->@xsvv6Q^HUg&->5Qpk#5FAb?I3h%Y5{aI;D zWZegj#dN;FcYM|-a(0V1;Bt1W`##pyqrrs2U^+0x&FovG3s!yt_c!4DVeQ~0bO`&Y zr7r0&R$3bhm9xnplsCY-Q~&f!i{L7bsmGL6CpzGSx_yX|(v4K<5LA2I^HTG6LB%jIV9y zs0WiW>OPL87Y_T_Mg+232tY(Z3_#d=(8vsUB`iCq2Yaw`Tp=&;B7L>=So;EyScpnR zA%y1HTchiVHaynXhj2I}{1J$4wd${{DXBSQ9*6Gko9P;>DslPbD=>RW(Qu8yQN-W% zMb?(bKmX=dY`5<^VQiCh>k2a-N<0p1$LGbwHmtL+1VRDLaI=OY{+BN7gsbEw z{!<`ukx3(4dhX9yQ5-(jL(YuQ?47T9A0?+hYv`J?@$+xjf=OUZk>roRTR})BvR=3p z?)u^hk82kFIjXx-@n=%J^cmNT&{YIfrE}ij0zyIK4X)5%smjo9X%LvIcLyG{)YTT? z|M~$O{`J?doj?ly{?REIM|@HW#U;Rw&~tVGu&={fL069nlflBlC1o*fGHq~ieKk?) z4J`T6^)p15Mj`IL!%}S$XG@_AVIYvi+ov{1TozQ!;CEQ?n>lq-+O!HXGCIo-_82k#1Z&5 z+5WX@UBepKs3@ZjGB(^BOq_0>l3|sY?H@jrtg4l847BEu@e)HD;7##Nx?Y$T)JLH} z071z)m^1ca9wtZEG+_WUv!AU$XpI(Z_KKT29(CEN>|xk`Kmo=QFOib%%30mk#N^5GwZpelpK8ldrc5*Mfr!=g;3V_`F&MyXGY< zwg>V;m3JEV<+nHU;~re5RS%D3>L6uuVMqaQyk^Vymc;WoxK~Jmz5t_}Jg>CApg}m> zYxW*hN;V$+Yf(+r|7|9BcLd}O;?ZA=jxcu%2~fHBKx(+otife1CFOa5w@Kg2Z?^S7 zJoeONC&JDR9~{)!?xKBOQwH)?ocqp4;T)UHPF;zwy#W4vDmw4QN%OUjyj64f@*7U| zwXV8+Xa+oi<$OrP9$Rc_ znI*lPo*k(~CA4D>m5{Q)HuFixTP8bT=%8F>172 zfyBS-A1)wcm0l=GG#yEe$+YpE=Kmw> zg|a2eQ0XwK((R1qhtpFJew6LUO{15k&%e5pv}RS;dqSj(3Lv*y^fWHJa{~&o6sB_h zuI@71gDyeHW#59pLBk@Lu-}Przsh(ht>%qtd;gL4HV9CNT7)HPiTA;moe~b(p##@I zUb&w{oWyVVVC*{J=G^9}9ysz(NG5c`VfO_viFKY^_tx$-hGyoigm=yAlmF^gR zkep~ zMC$!y83ReHP(m7kyM2+|9Sk>YALUm#s30b|)npWH*QEcXY=I-j2W0p@+gMo@JOd4f z9@uFS>W>~tc!9*%(m4Gsb^8C3=u&~x+c^>LzVje^*4+M;Ww^G@40ueaHD#ypcFZRg#Lx+~OJ)gKh8bV_$f_C$Obz4!O?v&t(8!4HL$sW3KOLrp zqh8wBWD6LqF&S_4-h1TntUG|*$+PdINZ{~FZ0E=d1eDR>>c>%Rd#)hyDK%#1s)#HT z?EY?ZoyV}s%%ir*OL&(^4bgc@(WSsKWDIgx!k7CH6z+tKP+&W&YyyWj{t%tT|6}UA zg+enHC9aL4rEr_s!h*1PBANQii1^Bl5>^l$V zG5!q?{M)KWKeTb8-r?vk6w|`(e(Yj`rerAF)pl4Zvv}BOvR${k`hHbu2}-?;9AVvV z=-xE(mnteTRAC5%u!U4aPLVRNl&QCl1ka&fa`c3T9=BaJQb-SMe<|B5maesoPxKUn{OQm%mb;3d7&YIQHpK zJD(MNLd`ez{^;mP6!bZvt58_S;!Zb+RD$p=K@O9S1+x8j`mQZKtwonrX#L@;mn&u4mSKw+TdGYtujwS90UNxd!rd$ zZk?6_7Zk~TmETj~8gh5jo%*%QW6os!uu2@Pxy#k5&VP*}@EnOrJyv$^qvsieEwsa9 z2CgyxWwM8aQLL;%E&_?jt0V3)(V+ht3L6G#p1R;IIPGRi5a6X65=+m(AZM}I4^tyg zl5`z!J0Drywg*s`UMGKzH|QHnzOk5#(hSz_!Tk!1eK0M zvlGQzDI+rsi@*@o40Iwm7mqr3c!yntV&T|~d$H~imNJ(MoVNaa`*2gin6WnyJsoD> zejAYM@M%?};t6m#a z&|C5ppzr&70}u?FPwA^Pq!>6p6c4IjzaEhO8%m!7>XuW5?cpQmx4)Wc;kA|_i;cf8 z7(J7Bb2(HF;729`p*9~MVA>`QiI^u2cD2rgIiKlJG+ITQNmx9Nh57k6S)ig<`1SPm z{a%M%bow}#In9yO=#{EGt-^va9rVj_+Y6DF8F_L?P4;{uJVRcUl* zz2|zyqkPXIjctL5u{dguiuz~wlc_M%7TK$6_)&D3St>EDsZ%sl-{)Uz|No!GlV`sp zRqUfTSqcoN$DE;?wT-`35(CUZTvZGLb@u(Zu($wLe6QfB_pD`E5;}^LzU-(BS>0f7 z_I_#fcberR3f%~&V>9;HWUaUsHQ&*l3?hh;2VV#IrfOpdw_EoP~mBRcigAbYe@_9UPBlrs|1HEu^m$F zDs7Xk?6T%fAV=)ZWQ$Kl|5sznO&v4hKTUj@v?1j#VeB*gHZex17l!G(pn+=MhMjdG zOy1u@x~_P>u>->vO+-JfSFFH+e)jx)ZpZyw+RVUio8(^@%)FW_oFn;_Sm$f|=VDhX zfBc$X&)}4~XYCiZF0mNSS>l4&t3uwIBqNkRH$cv%MR6de2X`MLc9K4ld71YwpjjxS z;xJB^06`1##v9|XWd__mGW4q?36su02Joj6EPJ)%k{@f{I?uK?rY5o+0jPLQGG&N^ zuH?_Fw?XOeo7#%|q)x^1AzN1YQ(|{%<1hco?87;-pI_R5Lgo?;0UUxYCp8(Np0 zoG_gvol=d8vJOWg-T(rrYZ<7D&{VpmuO#OQ)$fa~RJK#{uvFdxBEjHm&|qZ!>p<~n zKG*$z!sv0YGiRd~?=-QvvP!vY(U{^EJp3n&?=73F(6w^&K@QtYaJsgx`+MjgK5;G; zMOU+)+u_}(>3(IL7qNd+5e4#Y=};WBZp%XT_|Zpe@&d$Rz^0KI2*D1z{irVNt_H(2*R^e=JB9ci$Wv;yf!cc>_Kb{145sN42<|e2=GLj4`Dv7S zmTL^>c+S~XK&|?F!w$Zlio3h0#h-I^i!|S%f{4BOdG&1UW;5_O_u+IJ4jt`pHYd-n zO2P{`A|WBM_S#N6C0miDs-Gvkam6*29OEi8T1Y}N)9H~X(uEd+iz z+@Za9H5+5CNU@2y(Hw&cNh&Vba`SMdJBa6l{?B&Du=#-y0hur-#g@_HX)03m+5HE* zDxPLL+T2%V&#td7zaEsHAfV^CpLK5a!H3CS$=HAG8rF0}!RG2+aLM?;pP7^9+Y%T- zRWOjfufR;sNF7XN{=olP>*2u{D&r3wid%QmX_xc6W4ARO;(qaj1-D*#KzIU3*Wah- z+$@F$WF~D?bSKHg8Yf3ycfi-#xHDP`GEg7zJMinqmH-KLK-&h< zV%8udD}1S9?u|#EOA~+S`+)VC&WDq*@XO$y^X+l*0KHVPP~0b591JoRkClQ0-dWDD zNPXM~!9+7%tFq?A42I_D_S`C|My5mW*dsY4V=Xvg2)>|znm zlcW7E9u*m-T#K9?(CwcU8LDRYpQ8~L7XDE4m(P{DQ|11MA`|({A+otImCEg)B8=$L z;VvJ*+HcUdm2zW<9uk0d->emgpk?vgl@=eDMgT=MT`;DCd9z*qgl3w-B09U_gw1N` zC^X>*4H0)oD8Rh+$}%#w%{Oh=5ciEkIAjgLed~J2jh$pD3yg2T$yyyCCS~^i+aoL_ zbnqIScyLL1WO!9YwY_>LHCR8%BU9?>lU&S>uyazF2hY;16@s5fiE#8o;VwA-d?ogr zvTeo&;2!!4NJDsbfTpe~SyqP<56V?T5&l(JGB3L%1fpcULKe2n*ca#Uqe$f_>JDj+ zco(NhS~kGiB~`5fGu`Ck8cUnz9z!n=m%phNQkBN=%=VNg{bOU3Z3Wuy6k1N`eEfVo zE8bRNA-f3*-M;H^4NVRf&Qp;>QMa=HUd4*;7jXHO{DgVE}HmyrDqiyg^{@gNm@VbM>Q(z5FG)0r;lyXCD)j8Tvu=p8QZ(>O-+iWzI4Us zp)0e71CL{h?#J6x#~7nMX@YpZEAQ`~5nIg>?Xzt0)(6=F^2nKbz#UG#d|xq8Qbc1- zvGZNf{zeMZo0vg$xX~{#ah?9O6!wXNfFz7}MoujNv4<%4aloY$50}u4)&-B9AZ}8< zGO}P$q(74@#>@5ji1}ZIB|CIVVC*T_M2JWi*n~kW|%h5-dFfIG0X91<+y54 z=`fQ(wU~^91viH;ONu`o*48$KPrgojcIbgc6XF?&>~i-RPEW z0KZsqcBgSoP7@(EQ;3p-o{2iot4Ks3fe+k3Dtqaiw#yp2!#e|Q3a-FDA)ZohF4>d; zl`EP1Dy*oK>P*11p_a2?&SXk=vUVzYJ`@nF$D$DcyX;pmwzYCTMcu(A5EHX{s&q}Y zM*923Vei}?Fw_+M=kO@X8G)m;dd8hG+t?Y{79G`KGq&k)9w&2Exr?5WkzG?{{89;V zq@VKf9vgPEKmaG+&Fc6zZh(#w!=GEqpZicO8{g&xDVjYwMt%OLk70GR`@t|8E~H0`SR>V`7#e<*0SI6a=HGL3awtAQEY?py%23XVveLJczUn$v z%I?HuZJ-^NocU}^h|@KuOvc8K4Jf@WoxRPGt(dz_h~DUA6?Zadc?bgEO0WGGQd|6J z8Xq8GPtb7yYP~KB zi!-w!+DWIJ*=25xe#Hc9Pko_|r3~iFyW;_7QvY<<;!YU8+>qn77fTr;Ru03{cj*%u z=^uj(e{?)iT~ikY16RCumaG@|o7-YNrgFe#ke>Y;M7`APRtJ4+tpF-`pM(%49$-g> z$9d$ssP33UXQViE3KSE%m1In6#8M}DFF3Q$dKss)%3X2g05w{nKJuXaGGS_d0&XcM z40wUrjl%rj2W}ZI|Ev`|zuHbDhSEdT#{-R{_ID0dBF^U&3a_sfPK?XSSpApugCzFz zqapl3;KwMrnRUOKhN|+!r9abt>|~?f_wh5hM3IxP*biW3CV!9q0U7rh!L1m~Ytib_ zgx{g?5)fZtXMLn79`bl!c6%Rja-lilCA5Y4@x36?v|6!h1~@g12F~Ey#}JY+GK=ZL zj6g|b`fte*zw4hE3Oqki>C56OQC1_+E&Qsz@l9x^{4W17n6HfAIc{$g*b(c#9(^*k zgP>dnI$_^KWh29msz99d`tN7LM!pcJAwPozqFH+n;=q2DNrNWAgE1d)TIA4sz4KX; zep6C%JxTF7`56mx+G&n$Txb*yoUqCf!%nHi-(V3UxcYu7f-Lb9`1m|A_+eWU%iyj^ z7QR4Jhj)?KF7)_KmX9aEu8-qmpciAy$<98x1%`uWQYO`QFR;40ds(v3jXZ=+C*vEB z$&=Ime)ljfxHEQ5L0;>UDdJG+UZgX#dv(xcGcp(qwXk9#xs37oYC7 z;8S(z@8Mtz$)8UBYC(AoM9W!&h54<&y---R{&__hg$)8{f!t=1GC60nf70yi>^$Eq zaeZrXsFNiH9_m;8Tx_puiY3mez~znmct9WQ<8eY0Z0vU!=1HxC|?Yn%#HAUx>gYL-&hktaRr|t{nAi z8XY}eDmC`v5B}HRgXat#h>`+8GJH$B*R)YRhEf^KTb*7XyTs23BA-P!0`px#(-X(V z`0D~4zdmLO_qQj7=kzrfm&wN|DXp2)X|UX1%?GXBWQepp!bt?Mfdh-*}B)=Wk;%C>Qq!`_5u4d6KxiC|Eh1$#@m2?|Wx9_iF z*#pQv*=Fho$>jA?C&g>1O1z8@o;^v4Xlpa(9p&H5&c~QP+MVA$M1GUzSckhhVEo(n zL+ny|9VimwQ#C|v8|uQ!Z_{uKAPT1ya1LHs@DPyVL^rvpsXV1|`s|-_OF({N{}F3ts_APn+L8QqL|Mf+eTj{O&hgE=^7;1&qLxm2W1;22SCo2a_(Rr+N@n(^#zPMz|(4NAjj zNTcLFJfy~w9b{y7Yl`R&6CzCPcUe0>Mt#DkDwoeEu}K3vgReE335;p;GW(wJXg+9U z$+w4O<<}u&YpN6c4)`30QdV8CRrX=Z8`2*3=)GHkIdFHXFnj#V<2q&9p#z?7D0web zZ1uYd4_Due*cMrYPBi#y{fK3JK~~xCHPC&^;lx}-%3~sEf(24v;`3-Od34 z2ebJ-!Q3CN9`eP{oI=1oTJ8vkRLpl$hx(7H-5kR&E-qp84tmt6%-<35*5MVp4NcYb zoQDO`%6XhBJId?udS2ripgasa-=~aQR*W90&1~f>cGlb!r^U)Cg8$|k2DWs)6}5A9 zwyPtra_)0k*r?xz*FTO~&fBRGHW)VCZ8$+1`Xk)S#1^K6p}O7+A8d+mi5d7*z9?`V z`tXT^ppouy_ulLt@O})MRHa@9vT$z!eq#-X{G5HFWvkp(S(*$SIBG06#>GtDS0wh9 z3_0GubWM2qa-P~fo}X{rcHQ6>+)bTakwK`rbpOtO80JNV1C5fPg}830%-4!53hL$R zj`wiTR~CsIU~6vv_>95Le|YpWu+0U!;;v((HXBan?8rx)r=B_{77~Yj>VWsly*wnH zU(6KDs=tIV&+CQQNt~OczvqFxi}w&Z>Gyw?mY&A=j8nZ%)VHT?ZEdeUJQ54Fh96o| zhqK`6D(obSYWk%n?P=|>pYW$L9q)^``%p)xRQjzu@F;f5zu8?TLEnWQyhzjY`6mlz zLIFmKFj-28V~>V)t+bTY#IrjRSU*220?AjZA3F_)<7tJF_Kr&RN*!kKi?bE>iLg^W z_`vnWfV-B!vo47{Puk$f)bj{B*=holn{tDRzhs^J5}=00*{ab4m}ZNd*C;zCXE(5}T#Z6N)Eug_iqLFyXGul}Xny{W3}-(EcQ zfzo;Tf#OCiVosN9?lqXr`D^Qv2|@OU{{BS852m{Q$d_Ne8r^A3cmH9$F%@CdWe{GK zBVAl#B?Vy=XD}L8$L-0pTbM#9`j1Dz11GYOpLRyj^8MXg8vZDZ=L-yXDXutRs*Oxc zN{$lo1a|$q3IE7^5#vOCvSrkATkUT<9B#K4_{L}wgqnQ*_ndf-$0a$KPc*C;VPVCF zP|`@S5orzYs(;xUW2DUUb|YB zb^PkA77kI3?u#pMIjM@GREVI(hTc0ls1ff6nf^Idj7C^S^2kaeW z-V#MdIquf7U%m@6gR!zsOYZ`FUw@N59Zl>_*LJTr;%SU=lyt8* zubyePA20=0hUeD+Rgqfy{DQHe1vKymk$fUS^qIz-`kr8P#2CMk0sO%G;@}@lf=mv4 zA7iIDG9NzFjGNT;el5mr^%6AY{9il(J9c3Z&)3QPT;=I@1P$eOZbd-fKKDS6U9J1G zb#xTIElC4cIvo+dTNX8eXsF(?F)OQQ!C;nTw;zYvt@L!AJyBkz{Qjuh4G7-Qo~=_8 z+hiY+YKpuVUTRS%)7(d|l4D+Xdb_DAjGp#r5Kr1r>RaL*t=~o3s}~k8ZxGmFBSWt* zn1Pwkm-jhc=fh*Ky_*Ee58KX7)B@_0HYYWf_o;F!v)4YIm>5Y#Xdmx|+l7I6eX?@e zcTnUqtE%bUclIeHp;y=X4*L*ZId zIji!TJZR_bTY>AFJkcDABcJ3wZ?og{&GBUydTasXb7T90@VA07O0gD@-@EkvLi^(d zrQx{o$YfZd=|Al@aH@;_h}agdJVc&3+pCMEsAF(sewB=iLJt#ZptVKHYnZ>czv&P~ zIuOx=pR9SBK#&WeS9UO_9$t$(x05}VILM@VwFh{=Hfyj>7A%m%H9;|?|52DE zYm;}#B%Z0~1u;F95M^chAt-qbvK9RwjHKBQ5;R`VEx1yW?53jj^cBcIw?e@wu;^X5 zhO!VJy49^zr{&pSpQTVhfwg|Wn@hdGZFmv|cmpG>+TCN0?uH^mpgH^=>C7Mj@~^{u zRlV}=jv%dDvyRBc^5ev-x>xF6a9Qs*i$&4(VnKzx?!ev@c?NSLObGMVjYR)*RDKdCpL6Uv=Br?G9!7GVpg9AU}$;*e?SV z@o~^DY5v-E_ApwBf15;R$!q%27~E@w2X%DXy^iZ8m|1dVwjlectUJuE zWYc~TzR~_9h|^l5fcGMvD!OD!*-Opj2zePgV!>Q!E9D!uzBFdI{Zb3Mn=rBSZ}fZX zbXw3Wa2e{x?nk~V)ECM6gLh+}?djjpA+_5%#<_UZ5Aiz=d#42CssK3Mc^y7&<8Yj& zIVch=rf$kNnPw9W+?&ZL45l0C#Y%Ho7%77Moyl67 zWF}RUyb%jR{A*dO|Go){-wh zCFhQj@Q>77dgIgu-qKDX0u@SBMQ~_xN$dw45V0x|pZbD3p9(n5nIkkxct#E5-P?`1 z8-%sl{hc(@C?kj7`M8-8^>_+`>k)w_vV6yL@b_WlvUM7CqavZ5jV0uX8jr;ts;RNf zhwyH3eGezn2tRd1-Ie!Qa4w~2K>*{PJ=CJw^u zKo8K;CAq}Hoo)C_x$pOkmnaY6DluOU)0I0ZjRFhCq?Weyf*x+F@h%8#lCL4MAE|lu z?|G=@mAp)%R|zZ{_`eM?h1ufk|59gucyrH;HhNJuDM5#lSCm6ENZaPnP&a?oNhM19 z+)2MO=VVJBgas_zR{xzCyKUryH$mvl)<8a;1dhO+HPdNge#SbB>9RRoEBl~&t5$}A4-qiw z(UWs1HOP@d`a(vdfK*RkH(TOEHlvc_)t|MmXdZWrUJ$NQfFohB7{)I-@FeEZRm1$# ze6f^KG(8HLa<_|qe?vO7CyJ4&va^xL^JIH%a=bf6-!!4wT5g<}gWZzUMT)A&yVMxD z$)9rpU$3d?>HOo7a55g1f_ty-rc8<`GjH9{-C8NGUqoMf9h1`h?W`l&)aWh$)UB$o zTpSEz*INI4@e`9$nuwp?F|w5D;`uqaOleP=N_64%B1r4qyy^Fp@^(md2=t{pp3oXv zIX>_CWuE%5){*PKpOD)LZ0N>r4t69NY*@>}T>HJ8&gAv|Cw}1Cb&c(&VVD@Nu&I{i zsRn_9`}hx;xW`z6=*rh=^k`P;LeZguRjcrdPhP;Sxn*Q=#6Xxl;$TOqiZga05 z`~HQSWmXSun}6m~aXUv`Kr8N-mNo&jElPB)rXM2^Um)^Kk~m%L+*!U zT!i0QbZ`a}=TNF6xs1QWDeJd4U2BSfbd9rC68dLrmyXdfG79zXN#@c71jh&zP?8T)R^cm3Y@1f7pC|GN&5OA*}x-}!1ZX>8KI_`%`h85Q>150 zI-i~5>uzd_Sp4(pgX%3hw(z3z*k|RKdt^+f$YjQv@Tv%Em3r^`@gVN>WxlHuUBaqa z*tSyg$z34l`W_+$LwrK%T>Gy)HZy1zY8 zn^DOLh+^a-wca*;(X-z5BozQT91zuerM^xx7qIBhN!R$EKx7M@bOtk(3OJ{+>{>Se z@2w$8L4rF(8Qs$&Ddn*?uC6AwaZX`vy(D)S(W-sKfNUwXOI{ezsMx_RGK|EAx8~J#$jzq zNlz#f-+zfZg7*NQ9v_C8v}@Y%NSNe!$%_KQp;{)=WT{U;cPsHgt|B$c?BLghrQxB| z*->1qO!D(#yeIy7uBNWWcq%b%8k=xZF3}Xm?f0Z~zW`fzIMpO-klAz$c$#GA0hQuo zQH>IN7mQK;m2||u-9j+;^VmG)862}+0SerB^XSCI8+Ue94RE{sDx-Y zz_5jO2eR9Lw^3_-Im}HLA$Wx5+dz7Uba80oB~SV=1R6N-iqT2MvF88wQ2Evh18SYH zGTx;C?)QArWZCq30>}R5GjVJVYLN-nt{3~Hk)Hw;O~qj=dFISYHIRulZ|RD^V=T+q zskB8uAYj8|BMcL{`{z5)y;WvWU^Uc&ORZDmS{oVvgwYc_H4@vwJu#BPhj;vzKjEzg z&Xm|SpWL-dNh$?jhkq3g)j@kc1TK2bp{|qgXn71q>w5r6@dEpZLN0lf#4cFRE_)uL z&bqFFJ4fZU!R%YrBSs1cSt z=Xe9^xZQtP>#NxbWPbgP940N)p~IuZl^gF~17rmKM+3%?Y}$Aa3iL~Wm4D808q3Ro z@dyG8FUUQnnWoU;7ek%NZVZzQLs;E;gPs?)t^6;!>=ddnn;MQyE#Q53(zov9sjc*p(u+=JfureEE^38$VsnevIn z35*_784@Ci3ytH_Cc3i76DNs1{_y99RgC*bqE^@9pI}b)dWY6&WfeYQk*0XBTOMXj z#n@VhT#>ndlS4VA0U=mrZF&LRvbXZY$Q?}@hjrLtUsX?a;TBMomwipIQ9l~|_Vqve zaZN#0d;4iun0A&xj8@jef08~0Ai21k*jL;kJ|Ajn8$i9{m<^bia0DPWrs(H-uCguBO9Y~OkiyM0PGi%n4wv7V}Vek12 zp5J9oz$Hq4{QmH{#VJrOi@)?q!}De^wrG%eVM(7tZk1Xb7m-Sh+_vK^GC&KgvF!A& zBBvoY{CP!8t^JuLR=^y!_ih>ZOsALngkMRKL>Fj3pnOk^=Asj;8KxjSQ1l})(MT;0 zG1W!r$MH#)B`$x#r0)tWyKk<>Wh35ja4y_Xb7aGABJ}JV80x)_J-AwL7-XJp#S&Vc zq=ev{Oi(SlO`B-QwRmA{Y@EzWm!2Mld|S-d;{*mpt>JrBi3)>Y#2+$u#n>284h9N) zBSrc#+cPkn7)Ef^uHDZgldf{CqUHh}-tTgsB>$Q&lpZ`P@;>iTEyK_$hJ3h6!0pl? z%EM6eK5A9Zfq@$JlHzAja&fq9}I&*>s3l~wfAgaMxMgZwMsgi0OLg2C9zqO+*0b7 z_jvB@=9ZsjX@GE#Ezvd7UbxeBMc|_d8o|LJikn)Ma_ULWEc%V);apq!c7RLOknE*0 z=7#h+7ev;VXd-Q~p2#AZ$i!=Ej5@l=IQIk4XCH>%&nQ; zd*&^%S=g62d&G6QHlHTxILsPHbYO(Z`nt3nks;h{XQOtbxD#}KWgh0I zts=dsY|_x+ef-wBCdd17U8f+yL*1N6*N6kP*pAA3D} zjrk5KJTam4$vH{Te;pyeM0M0y+utEZ<1bCa%>hUc@;sc>RO z*e;Gv&?#KUolfXK@cRO>k%uN%uluPtC_jBlLW?gLa|GnAa^R+a54;ewsU4y!^^L&2 zeTw`3m&l3ij2-L$K3;0a$zlgg`Sq!y28Wlc+Lm9=;R#DyenSt0blqn=z2n=S z$^kKdr7NMp04@jK;^<&HC27nfb(HNKSgCN0(fV5yr_w?*{hZg~*lrY%KcTAo$M`Qj zSU6^f4s*Rn1 z8JKULx~#bYQD~8lnbAPlya^VWE*}2GavtfkllF!OTaXRePhNbY-vK*#cZ9}RXBCO`MHwiLu3M2uAbX$0^sx+ zlGz#PaTQwyK~N_yV=K1!)2oG|VQ`_Sn4tscmd@Lf#M-jz=^@_RI|z_AB*?wifv8TUZsv=m8-{~`PXv=k}Z9^ z?ZVercA+s(i<>oRzOkbCIFUylIYv!<)}{zlm^<0u)k!#c12LT0u%#QjF_eF=l=Nzt zDd!@;&WCYO`;APb`9UP<0PT{h=}Q==uY41Kfvm+~P4Mp`TbKUL~CAH?+C z81^<`6fnZZBkLd2driRJ@;=%8X``jYdwAVJ;6#O2>EFB`=r3qnw z6bzg18O4TRasK>_`o)=a2z;6s~EWS=B(n9D+2<9fcMRLz%(9X9vv)fWOt~XB-b^$G zUIty!xeL0PW?{}t^S{Gv)jmF~b)btchI>PB6G%w5pP($FYuyTzkrl|(21Y7FX=dDo zwn^bv4GxF{^3H?em|KA@%ZRNFghF?a-^LpxCV+_IZ@J8{ZlQ#QBLk5?jUPeqnP@bYFH*Ab&l{ zQUxERz-H!eZd|-%mfwqp{lGYT!JUUaoavuyJ?wa(fb6xUYi8Tkdly1<(x=U7q#JSv zho~j!l`D4xqVK|;w}ZsE^h?}X{3Obal?dEgoDLZHjsz>-8msfV#GOlf{_Bw$;~uCZ zR)&va5(7ukf%Xz$dgUnC#Ygwp58)*M8LTrzy2>+q?qJsKby1whO9zG3&j4_=v;W;g60sIUymT&#CnP z4vKRsC_cVY<9So|I`OL4Qw+FP68*L)?x6fAFuV<}H?N<3$eEvqQ|G@#eBAnrv1lbqe6SGQn<-c8Cbufxpt!<-? zXSCFF{}l(?NE??0*{2$sLTF|RMX#BT+{mOERcLbV_T9J*aO*N+rIf{^pm4};b)_pT z%ddXU)h^+Kb=-MK{TlW|WkNjOSQyHXx8wK%WeB%!N(f=?nD+$}Zee`56r-d^5jw*k zLSv*Fnierj-?X%|x}x7*2Va(c^$tt9a$oBmqOicJ4HqTUUmum0d`~`ksxU`x`gPFt z{s|67Mbs7!xYGLJX1e%$r!L)A>K zEfV~*m=Z|Dodl_|>j79Rq$g|KgBjPIj<57O z$P#vjbJ3lW$dAgR!D)k)X?PsN>a7F##haOh2fq9x;-!XORQp%hK8#|%BNPiPI!>S9 z&cfd`0wn8rRfyzyLY_@RhX8v$Fo{2#kj^9pDOKR4r7BweM3l!Md&%v~IT^1Fxe`nmRDEV=&Xh)`r%wq8lsC!1&e_>#@l&gxU=(3~ z`UF2|-zt^jTG%>mC!M0H%_DCSpOq`|)u-XUb&h~h_gnhuD~|O)ionKpz{1e*{&C`= zr(-wUOD>eJeGjeG4v@elpD|T63AS&_oI7iq{NxjKgJ~XZSVwQ8o6`?m96my-YbfLV z)j8P7UA%+vAdlB0syiyKyl3orQ#xKs-~8{3bbOXWNJy7K8rSr!?w)Ixg#U)qp_Q*H zGgoE}!KYyAw;0P}-bw&v-}6m%o))>OM#rj6vH>hQ@fhNKf*_$X5Gh(--N2vGg{h3C z*s{v+g2`RPEABUoxP!)Jt1EC#h6xP-L3j;h9a+z-fU;r@93lJl1e++;vrZAhe`lkt zVr%iUA8CyId=%B8Vq$9X^9hj&eKwuux>$ulw>mWy#ASrL^dB2q>X{-XZL23~Tfgey zL!8fb2b|@M%=n$OQZ}%uIZXQS-C*&e5xJ!oM;nUwvVWVGvt#OZuj_ zx3><;vdv3UO2{@@fJ;jH^ndPgRVVI^RqBOTz%qpt|iW_r%9{lumG0O7CB16<-obU^B~Tk>{gV&kb^pq|TSWo2pi z4E#v|ok2hye;kWES%n4T=Pt9?KhX{3iYv>v;$C$I3E+{9RCY1S- znmiWm5XKF?Oxw|ossLr`=@9-ws?*ZtDT+#$GDe*DEhjvpMSNx4hHox{89{sn=#A6} zRv{qIpp@RCM{?ucqrIQksrjB4l~dBFs(hFDX=Ce$L)q-b(I+cQBE!( zQ50tLU4fR_2{sEPg^p!o$@f_S^Q1d`$x~S0V6@48KH&S4*4B+v;GBC7Y!EXo2#q5@ zO3B_r)7u$q(cFYU=a;1fvA&NQRb-#xZEkF2WD-l~Qgh1>D4!< zw=>7nQH9l_g{^z`YmJhTmlw-2>QfG8I^Ja6cx&HIWOhySnq-B+jS8B8jiAeU+Ynj* z1!fTc$A6zAdE)axfO;aDalc_cdsp5>VndTAS58lpCbJvjg~?46wWK{JSgAC6WG;5$ zJBlkEEEb5D{q&7S$(^5mxTmtgaRtRf6y@6|{3~ZkFY1^)@CzOEvpIPx#6O?JR|6y8 zG#T#UX=0CPH;xb4PZ%Q-51hNoxaUU7tsJA2^-!dEGM8!gw#I6~s8Mn0hfB_zzd$*W zs(SIovo+>Ao}F~a(O#O177v(JwY&U`CzG+2+X}%Cn&{&|cS3YgQ*auW zn7os&*EwXO7#S88nLfZe%U^nN6QuYI&pj>3ON%fL^4Md_y{ZZa0jNf$}2CB z7`%EKgpwlebvhJ@XQ>`~xECSg0^G`lqwc-}x-;1RHi2vHK=T#n$D?vqprOuB#ce*u z&s~P}dco*1@{bIvIjXAxQ~Z4cw;`2Ss|R6#TRRUS$WsSYvh=t5j`^Rj1Ka33Y_2y2x}7`(*9rL2`Bk2VK1R!}?`k;s?*Du#Q^k7u zosF-(a9LG8C=_jW1IdMr>EYMM(7af2@}czk`ti7@%9iCiZ7C;@MkUa#-GIu4xIDfD z1^l-t5(F1Xk3;zBH4BYUSC*gvdC^x~_O}7&w8s+8qyqt;AIQ$cZcv<(`o07X^9BkK z{YAhwASC)+#1dneptxpCz0M zFigLsoS1W#r(ClAi%M_!fqpEJ^8rEm zpfNpV=auE*_Y2mBymdHG2blAYEVxI8&B_0~Y(YZT0%%_;_E*uF-e$P8#NlS;CI?Ya z{#a(fv^2xg=)~oqFQfu;ae86U0DqyqFdhJ~PU8GzW1#O6K&Nlm{ig5=Pz_+g*frA( zNx}yGjj)MgoDblgzDF7=U`|`eXC#9AsXRfMmT-#q1 zSiqnV>kJ~RmFuH5g7GS2t?j?cwuIv&Z5ag7XmfY;yjPWiY#SXHGbvo5^;I*7!2wTL z@9Efc&^IQPO4UKAbUExXDrj@O0Q&QwE1cy}Bvl-N%;npgE?-yS@_h-BpH8*mXI-B8 zWcahSg?++z4h@H>5()fZB$|4agsp)%3dK#qg&mp(7bxq6T}yEIX%sk_GDyR@1g2;7 zoYQ*J(+EIG@uzbu%xYhrBiSiWjyPOzL5ON3ToWyjRxxB;z8I-@_fXw$2y-1Vs@Wyz z&MN7i>>#x+PF2(?n}B1=GIBn6;?=u9LS`>w9;x1cl{&UumS6HIW(pCAGLRtx!*8W# z0z6YD=pcKPF^vC7Pmt|_4A~Xbg^ZIFeOVaDznFX!ohD@&#W`4Ye%{QBqKtnch9v-o z`kUGrDtk;lyKRk(uL*QR&2zX(Lz)hfvWxVDrKzmyWPtaPL$8AJcI->PSf5&PV{9a^ z3rBN5eKUzw&ifLf>T}OopzDq#G2xN1Utk~XK(-3>;XrR3`2!|-#{Z4;D3iY$Sl2f@6xv)dCJiyrM5%K62sk3nDgBV^}K)gS^ z<19UXu@gBJT8;{P3dCw^DtC(Z2+#hmSA;SbGmHXs<}5o<>qODc<8M!i~i2{ zT^_h{bNt=Ix%b|uW!&|@A6wjinaX-u`+tv)o0sg??(@cC%e^#|PW2TmSlA6%zE2sp zHapeRAw4#4d4dUkLFBoleUMFw#pC6E3l?b*p;k+K6My0!xBz8llq~ow5_KH)I_JuV zuWEYp#_OJarLOCD#{S`FB0<5b7*nIkzoAErdC}ElDCejw7H`%-8Y~3czfDUoJTcOVB8(N$HI8K;b9#oW?M9ebzcnYtmNiBuXsF)g~yJbS~-* zG~P`|%0C@N*P&{Jru}*g8Seb{awtfy|M18WBi5@axCxgbTFQMab7Jm8Z@jO~SdD=u z=PV003A*a9^aR4Ez}KmhE2jCxSkb z2ZB@$a7!=yj;7&L%C@8vsqtFj_@-a)+wh&FFHglfJknWS8x;U2w^7ICzW|`$`0%0) zuG>vJ62qq{vyRbP!vFh)04b4uwn@og|1N&iM?3cJGPAW#vXg3+t%ysAitJi#$Du23 zY4GP%4dvZE5Yez?J7mDvF}}qF)b*s8r^hvnMY9|aekIHj7^3_*ajReEpPoyP zfrkRrfl(ImkT1wttNE$Bh>x zqc-tM=s9h{ePM&$J#ci#VS1CbD&Qo#8!^ukE2n+RlE-WnT? zbd>+@-dt%+#@pQ-3?`aOVO26yYQDF;y&1YyDu2S_;t`*#N%8qyDbreSsb>Dqm`!~fv@ zS%&qe$Lfz~2&H|jWjumc)u!DN7e&r|(4MZ=LU;$Ig{K2&19)5Bx2R5yAdVhy|lGD;`!lF>f{W3O4lTq;!7jO8~hT7^l&y|0O7 zep-!=OD0#9w)cV4qcW!4%v8D4HtlhuIDAFb!i$kTZ}u(%3V=(v!i)0en+uq1gpDUS z2ha6umpAT=3iFmGbTYVp$%aJ$Gucnyqe?N1?L>~!k-OSHr;O4VZi_@k(360~ zpW+VH)`~i{5LOhc<<4(m@*^zpr_92$7o1KPGH#`w{X@8x4&N*(@36Hd>>~ir1|@Gz zLF)9I{Kw-YVjNRr{tx96m1fprE9-VI|dV@3B!J%^X_xsr;pk~oI#@& zp~1hYh5|{G41=LIEn-bCD5i#447DQsgfsXJfx0q-I;%Qn{&j@^N5*Le|&1 zVwW^-XD(gLt|^{Xd-w1;<2ptcLsoW1jVBx~ks)qv@=}qU^q}KQq)& z5+W@fLr5qR(k0Rk?*e z&V9~4d$09byRX~hi2`UtXxMe{w9ply*vGw^Z?q65D#VP!S~CSf8L{EQYC|#6BqgJ~ z)cLd8MviW6PrRcu_0w;~hCZx%<Glca;H5}WJBSdJm<7v%#Ht+8{5b^~8G4*sh&b((=VBo>I-qFI>eVwoHw8(} zgPwc%iz5n$B3mJ6&mri3l&ACUn!p8Ifz<}D`oo@})1ow@O>lChnkTo#UZR%p!Qe&A zLZT7m`E;9Jj*a68Ub^pQEGoIlP<UF0L100~xfQ)LH0&rzq?gm{2itw%1OH`$(FMH@p$7?*_@b$;#Z)! zcty`~5cKT((YNV2V)S*Hk}*BDz5YG~?Z0?$`#1I4uADm<>i~U6;?h^S>?00-yB1G!qkqd9$mR4p1 zVD-x1_`7&1cz3tVJUo-;J2!KZQl)xY^W)|2CUpl?b>|~Dlw~G9?&9a<&wz@{A#)2*cf#luhhv^#HKdDKN@YqjOy@zv{l_2=w7;L<8 zm3FvvwvH<}_7vk=Sy~cpj#kbTF$2a(YV0Oo@3d7BF{Q8mfpphjda(+X?6c9p7kcx| zv{9%`#`Jsxet1?QFk+g3z`UJk3|_mBsiv=v@0(nAtPY9usyB zPYicr9ljtq1cSy;O%uqFw)mGxv;~(t&$~W`^d&={=lOyHNWekF5&zElwv{ET<-BnD zJ;)`O1Ao6Zpe$%C2QU80nl^VkbWumisp5L?xGoD!|51{7{O^IkK%n(W;uEZkyycBA zJNd(Y27==_b!xTl@|M`EI#MSG7wNhhXV6bRgp6oYgUy&Pk^BWBLlpU;?IC((K zU@hep$`cW=RPa1~|EWsuCc#1%sof*>0Is57+D?axn<7mN8f<>7fJ3Ow+qUmlpWXapP(bRf{V(2yflZ? zY4u%8_m#GS9`EI@I{jqX0qWQ>W?d9%9e&g~0+F9LN~Bicc6X)I$as1`cZsTrsWr2n z>`WJ|GaAFq*I>5rqkIwtN$ zV_mm9hv@#O^Sre3>5U-s@W}sy}zX5K|mBhBp#p#k96bs;{w#SR*D_l8uSk76)G6p?M39+O}7&RbxLV z*eudxn~&F?Nu7h&^7q-pce9tcpTVl#>KuSPi%umj|`f$~B z1^mxqB#LmxYb}aT{M$U2Alw|AsUo*GnCreh-@VwN5!#fC-}mmbQt&T==MlG(8_iQk z{1lWqggrsZV+ukEQCU=yK5=uXiXZ1QMyvD#Ix^|qo92#7d%hB}Br4F7uG_f6VDuj& z__(6k$6m+^L3C{gQ0sm_z`A9Vgjxb38;?#5H5Q?y&-Os!_9^`HUM?Wt$cQAjv0-QEJHWK;jxnw0-UIt0ya3&u8ytm8j?n_yrhxQWWN+OME3_oXdA zZS5CSi~N!;o8j5hcDj+U(Kz0_~9xG4rP|S29yB`&W0?c@x(($FC9k{A7 zPp_)#Z>n^>J~`uuS@Eav22FK+&`Rtn2u{RS{yTz+`qdF4A&1J}kJ%5`z}9?DQuJ&0 zG>>BRycq8(G(dD$aJ`tv6BU{3O=p3I+wIy9K8FzefNTAodbHSw8Cecjlo543IrEiU z=bZUl^|JK*fGzLSpGTJ|8lY|Gea|g~7wf2qv${*wWZKo!TOk+1JgAAiV1esio1wrI zd+CJoAfr*`Ry3D&Yi;z%;0kRVW?%~?3iNhU6a=B0^+eRw0aI|U5d(GdNbB+`<8=wp8!+D6qVGYt|LElIe6&7FPtfTx3_Wgmk-;qdHqzv-5DuP^dgG4tiWGr-Fd)77PY*Hvar zUz^_Mor(V`G&cUHII9!Y{)k5xtL2_TT7nTg1x;r!=E81WrzVzK0Wa^)^u`uKL@R}uaHi`pFF)LC*`p%ll9FWG7iBv@IKtOqin;5>pG{& zmnTsraUF?fMzmD{X69?{xH_t>eL$Q%?6tnyYXi-ARh!I~2P`_lS>D)sA9j^u{!Y1KQ2jDI zn9=0v3bO9uREn9xqae+u`+eL=T1qY>5U`%+l?H+{y{$$Z9l8~iO4*jc(dQTK6hXAQ!*UVE0>^Z1V9wB2B`1g@fd zv8`Zvl5#-@DRD?D;|YwiOFytO{l}j?Fk>N`_wWCG+Q?N}PIbnE>B@%s-i~-pos?8aLwGAEW&xcK6$BfWc3)ROb8# zaJUUKo(gq0%3hFsRIe~@wcIcclUT4tA1Hu?!jJQCBQHkiSAHS0u!_hZL+dN5f*-c_ z=5B#WDpPLR!7=mh#$-dR1i~ut(7^?e4vU^8GyBuyL#w~T&g-Dx(hRS3on7ca5*Z>+ zd9-L(KWZbo2k+{8;)Frg^=vI(&j*sO%UNMFFdA6*aKsVis^BiI!p{Wj$Y)EW7Z9Hr z55CqV(6+VUK?}XJ%PuHw?E8Gg%j`bSm81j@zi;|#X<7mGBD>_x=g(_)ov`uZ4=9^4 zY~wx5FVV;oB)nJ3sj)`m z!b}1OtR45dZv7aY2Hif9owiJ*#LY+2sajJ=IjZyD zwIE7!!Bms3qI3N?m0QEgt{cmIUmxhYF2KTAbAbH`r@z8>Y0qA)cqLJ0{=VniXV3f{ z^EK%U=%@SbZ}8*XakI07BbRTSEfay&(hmfyi7s5CWcPj{OFJrjczDP|oAgxTR4<42 zWg{|7x68E1p3;GB2w(i)wXb23`?8BK?6elt%tBV0r`|7m4ykls67GCl-tg`fPQHf( zug#$a{^BwOow%6PXI$G>kVR4xTp;11Mv)+uI;O}O6x$4v;MEpkMe>#iV=$6?VBaVG z#jWOcz*CH+Znr1Y?E-|kwiHW#7Q>EU(|d+zeSRFC+o0#Tn)WXxc<9$5$k>Sm^b?wT z0lN^5KSQ9VFQBT8?I`=c9Fk~<9@HI zU~~ir-osCI`i3C&a1c}r6T0;HaS`E10*O+vx0yrb_K`}3jG7KiX+Y-g)E1SeSFEanT-d(_6kjuqwWK1dr-`T zb?;376;m>A3T!wzSNH((lOku5F_B3MCaS-WpU*>UPQ;KC*n8wXmmf;mHIpipDpK>w z43p5`g$B-)!$ouoj=YYqg3lpQZQ{U}=OZt1-*S~3L^pBXAO>KX@d62)Ibepa{-}_b z2zbR-tG=4AEs{*Q^g7~uc+U13<)4+e#bj%8mT92{uaBDr-2GbaK|*|f3Fg*{j`O` zVT>^pAk4}>lm#A*yI>$u(v`=_r_>AF(R7)HhjGYWCE(W`#ap^$(-Y3KHErqqHa9jn z?@CaDuPRvI1bgOwJo=QAl0&QG2-rqD3mq>b#!O2h#qdR^&3R*v0s17CI*-#gP&fWL zrd!%f!v!0&i`Tv^zA0=rd1^#zX!|VWPA}j2saz1+ zq^MV42n0}L@N2|^yIlhl9C&){$aOC7p2)ToOLne`@(Vi{a}V*1_VEiERXWM%UrHVXA87G@;0S3o3k$RiEet%m}DH z#eycbHW}HNZ?JGSu5u;nGcK;!?uB1-a2&l~MfQz9wN18#qIOoFY`uO*XLyNXCe#+; z%Rw)!Rf=MJ4d&29B`L!36S~OFpwBW?gkC~kDz6=eRR=&uHW?48V_(p=VInB~#xo`qQRZFZd6TkZF z{afB7HCiFd+LLsbQZt^jc@zft{Kv>qf6=wO) zMzuQE&J!Fobz%h%`)frsw5^SLSl~P9bM`1mPziNL>0RWLc$92p1Or7>3Zm}tcg?-g z%6il7aNEa)cJDYN^Qh3Khiy52!eL}2Vabu#>9HQj(!i+!+}x5Bhdx(B=_F=Mitf#o zCuAI;{iY=R&TwiR|Az3g1zmbV2Y$=Qm7V?SRdR<_QCfNRAhc2;`QFONz#}Np`oGD0 z5$d%m>7$b`$XL3=WuVjR*53-BH6#n7&P|sWe~zG5XOjd_cvTUY&WyDQ4U$}9HVt5{ z%j&uXJb$?IBld9iNsLIXCtQr);_{5Eal}j+A>WFCA>sPXmj4jIy>J*tjv}+ebnQ9`&V^I&T*PRcVFK<&X=M!&=w~rg0PH@zqFaW8Z7DuIJB`++~LtS z1Y4)=T*vUFK!MMK_8mV(A16hnH@kG5rV zx#or}?$5j(MsFLLn!boo1=;ZTfC~Cvf;U&5kI-F&LStJfq z*aH1;saumwE30x9cgx5{#(BBs2?JjSEQY6a>tFkQ^&neUW-F|sGHstVDoM$95oZn+ zG}pMcaP(_{CiHjsK<<3}@1KQb2u@FRTER<}3NH!0NcD_1e@$OPr>-OlPK(xox*!m8 zAYJa_UYbCi)rn90JGfDO1Mill_xGD(K8)DkKhqJHzlj%y*ld>M z&h(1Yt|cJAh7Zih7QKl;`_fJ&sRw2N>z=VUO@pH6Jm;3NFTs~N zkOMbqr{r3*VCSwq__LXpT)#|E+OTKdBP&eTz90nsJ0&=5edEBOEKZ5^#|mbsiXL=S z{Hm&|deVD0UGQa8yOK*CM}^mZsa`IM__6(qETJIfE3`#@{I~H3wY~0NQ9TgIex$y4pcrb%KcceO4vm)!%+$k^>cNZB)ngL`uJw=oC<_ zms0&Mu}wRlDyu0f5nzb03cssH-dQ-wP+=%B^fK|6o0*B@kl{#oWPjQnx~EBsOHOdx zPx`^R334UZ^8|vgQEbuQW9F57!*MUYHSn-~de0KK{%;|wGtLwKdxb6@RyhdZl_oYz@o8$aL7oxIm8wD=*)WhR!)8Lz_h3=qet3(GPFMp6|Yo+UEw~WJ0{K` zk!+g5?@#WNhh08z=w268TQ*IAx%KP^G?D6@l2k${!z-qN6AP0#)j=Js#?V(FqG@fk zIvhS8t#pWgkrim#7;wnre>gUI;R5b%$tH2&jMg6?vkG4g67&s|pcQ99%&wvzm8>O^ zhK!g+&I}*D6b!UIME_Qx?BpG!)O^_;<9j|tk(0M1sGhi9o`kR<1pR3I46Q3e<4Y)c ziUVA(CtCfjJ_wyVg$vB!Apl^;U8Jy17qb; z_S?+@Vy?e-Sq~eQ{+3Km<4SFA=Pt-i6qNY&)}yNDvTh1?GiIEVO+w;1L#f2p3qQ0K z{%6)=4@J-BlX#Ji%M|zOH)9i6}SE=TGiaL+MoLN zs?AV4g?2;yy`ClRK2?mtU|#UO)vmOD)Oa=EU{el+5TsM{&Wh$aQ-)d$rohH9D6@JDcYD5;5zZ~>a8!go3}oCtz9;H zi}ItiLh3$czW<5%JkM()HUj8#s`IbDlDqs(ygT-7C3=B^2^cTWOk?96933C>AU(j= zeAASI;qt3@t7TVg+aitk?mMy_)w!YVltlgOFq*^T z1KLjG&Fh_@AuHM*?Y+llWr+@1f*U=10cK?$w4j{@?^Vd0 zoxn0aqimm6HRI{=O2-gh1()qO+-vKJ0QSqnSfqs1y!iZq2uRnhOCHUxb4}~>nuSRsG!0CI!AvcgEHDlC3|3 zxN^f87#tJI)I&+N&;)v>@^wG8y}CEqJBVuiTUIXR0h4W$cB)1@g|;1AvgpRu*ZrMu zoKjJL4^s}F;Xjw}ze8ybH0HE}8;!&f>$pB@nU4Q7hOT{qQn$ zxAiA^=-ruHnDy)7wMF)O4XDyPcXyphwG7zEyfS?wF_Z@l)n~%OgH+ zRUA}D$$E48^LY6RE*46_OhVz$u(vJ^-dhkRb*Sp_$c{xtJZ#|F7tMaIhX~1>m!&}o z`tv4FIak{`m1k6Rqc5l6-`!PZ&{#e_-ck{~vjUsusF3jk@3HS2bovOPYirfRZn#9c zv!}h1pWpjK|CRH2r2FsCK1d+8jV+a;NZ}c1(07q%GOmkR{zhw=j}NI*+$gj&$dRw{ z=U^LsI*Qoc?OcnOX4Ny0G@d;Z+(k5R6aD%-L^=(njVMW|!8MF_wM6QUG_Qn&54K@U z7+B#HyQ`x+0b%ZW2XK3P2k@-mMSV?GDdz0txi?H4n{i`eiR+1T^$ zK1_oCGL&R1ikr%Cr7HnF=i$2@lRP|v=w*__Ea_;apQRxGzJkMPR3k&tlc{+kPq{x2 zx$5cRXuvBVBM~2I1_Wo-TMI55L4AC}#;p#fwnvU2qD#M%qpQ!s26)B_^f)JdR7`m6 zd+m$0!%tq;N=x|FqiSzG7tH0$_0PFe4_fvgAdy;=P5oZ!plSGf!}L^RHCG<>+YEoX z!t3I0jSrCuP225F%9$je^GVdgpw%3viGCs9z^w7eUxfi<0y(%By)J(87m0R)QwDx3 zCujbf@!czWh#RPTV0Tq7@!uPDdWUn0j!#$oiWRqDp^C!Gp+ zXZ{hD$n;Qu-;Sq{yGZR`F@j8Vam>OXq<409Vpea7IzZIT4;a+g%WgK~6+USNgK3Dk zCpg&UvM!C$xbqc9L;zn0Wez4u6SqaRxyjBoVUl3anyQXpXYj1FLN0RN$JsoR=@dv! zEqB{&i$6JGDM(bfD7~!t*+ZuE`O7!KZfOVHS86G_s@tA)|KvCQdpABB2G04fO$1V@ zR@?~OuX;kxWUOAY@q*FX(qayHmC=7-T<^Llp7N0VtFSGc;V-*9{qKKyKg<8<38a{I zefiR;>o!kkd-y!eR3^#H!tOb8u=JhJewbDC9%bZZ_?+`B;-6H zvVm7`@vr@gwD-TZy$C zi41N*O8iN82y1`9e#>gE*Duk(X-1qBN$ZmK-<{iIX4^Hk>bCOIFL*A9}uTP=y z<)iYx%IelxsRuLjYdzpvjCUf|qm+K|$C?H28L{b6pAWhNs=uz=UzxEqIE)|h`MO|X zYL`akR}vcv*4;CUowI7?(^Sp(70v=%2rzhwZGIQ_n=1q1HB?93lY?&b_r3KTdq>A? zuBM&)x^jp1EkU}Vonrbcz^_3MMPChVZv9J(D4)0l2oS5|qk5J7@|9wpq6O%It3B5m zq5q6b4XbZ* zJC=BkT!EbpnNW@(4%MMRm^a9Qo2G;OsggqG^MDY*;k33DfH|s+@Nh!T58}^S2HTb? zC$~@^P{Zc5&j|P;Pya+yv&b9xu&!+LT|Q$sb!MMIwBT_O+1BM!=FsbzDLhwP9LlGG z{H7}%c95fug|^`GbI?+LI}bNoGub1$m|f9_6~fD8OGij%u{uo@s8Wh4I`SN^FM7l zfD?Gq(dkZg%?NR4sZjA%2sf;H_lowv`UK`N+BNck;}Z`L*>Kogu!d$;VbUTz7gutIe~c&<_-k_FXBltof} z&6>4SK@L@Z-KIGoYY>$afvyg2?i>G^ZI`gNTImp?J5 zCr7L*bn?O?_kM~PXWhSlpDz8PMh}i}7Ns!*ZcLmt)HE-o9lqU?v;G;T38G)kHY4l?Oe=sSx-XfnDuG11`RR~;l+f}uKoT-nmhOD(LQFz>JB4{{scF&LwPA%l*^qZ#?0 z{`?vN?CLMJKwqG3_Tk>B0cuoGA&G05p68IXA!Nb( z-N6vu=AxgPY4=;Sz`LF<8gHX_#gD?O*QeS4bKRmleP5ePz|7IM97b(kWqNRWqy5^X zHyL)Q#q&_i#+>8j=zVBX2K^dCEp=FbHJ>~#YmKaGcsk6Wf&^6~vwA_A3e|2%RNDddT-DCk+z?<;_4o3W@VBpzR9 zGg3#i8FUEbt`d_F8Zs~JU%Le1$j<&g#bf~Iao0zj`oa`lvL?IsEDs?Aa7`Dmk$xC} z>5Qy?_Ukqx9Hg6_P2!&xzFkSU{B-o<<2mkQWSMeK#C2w((g(}q$>f2YaTBfw%o$B< z-Zv;CfTgG_aJ#YI>8Y?jigaGWz53yrxi*QeDBO-yC^7u}cVX7Ygc6us@IsecUnJK@ z9WN02UYz~=&_~Y1bDL;hrooOS3~3W){abEQ?9NxVtSNseiMIF@^<_YJ8*OmySiV?o zG=r&a>=#c*Ea_Nh^aMGtsPO2tKb6i_Kb=RKHejQiip|a%fwP&9oMaK^GYR9+L(Hes zTfk+Zat zK=|{TWco!R`{a1?;_4HPXxzS$5;9KDRPnIab!8sWM%wvNSR2`VGfT^3+*ce3u6(>S zs>>SyG+wjPG$rw}8Zjw0Xum)F9Pk8f741dj1+%!6rIaD5)Sz*i$gN#OjtARxC^?Ig z6u8jvTUb%y;gtUr{EVSNO<~>SWgv zP}UYTd&b+-$8w%Vg&Yjo!w;bP8;lKj5DX(FnlAUrp-H3veeVa$)5Z^#%dOuNR<%tu zcUx274|EQ5QVB3qXv@S+oIdq)6IR0mhWEF8Ydgx-;2|Jl}pL*P|b9_3}3Ya2$9c-Gg;`oWcNfU{tqk|f^Jnd`*gvC zXIL(K>mk03CL40Y{*?DE5q4w2VL|nayY^9T5e{p|Zbe=vE{30g>m*}7J3E!#3Z|;w zqA}H>z$*9=$!z!{lc?&MtmGc*BU+Z3>4oPR#n!OlI*w2N<27MEi+Yc_Eg;w;=SB%% zRJK~jdQqYTqi$$DB?yqPNT}1GVM)SUegE5fr~spfQ??S|x(p##DBli|=Y|x-D#R6) zb3eS;r^Le>ywO|1Ex_C~ree;=-nr)tD_z#iaS*)bu1iZxzew3|^9g;F2nY%LPJg*^ zBZfS9UtC=$M4wqtlC@C9(Xlbi9JO;2ix_Y#e{sRl*?lY5tYA>_+S?VUd;afFfSA9Y zC6wxM9RyNqvK73Ot~M2xp=SGNT{Yqx*Jr)Q^~H7$E5Qhvok4)`a%H11r-Q4|e_^5s zDxL<1;u&KDhJO25ZD%P&_xfr4bCk7!!MoM|gv7ZO{^$bU^MdK(u03~It8!oA|Xuk(jkl?IhBIG#?x>8m+hYln0>rh;j7_5cvPk2gQc^ z`1a)Mg)ZccFqED#Z&Pk{n^aL=c*8jceLWJ`tgPMrVqil~WFB&bevQKp>OU@xDlrPx zt{u!Uz>H905d3`k=LCsQ8!62jU!$8U<{$Zf?-${a+ZK~brR^wvy>a1Oz5lim>K8L^ z7AZQUKYXcIrKRSgk}oJBwz_N-25)F;l1htnb&mMK>gk;7Ha zB~W`dM{iCgYh6|@L@8BsqS6HqEgzmY8NsrxJHG=M5�}m0udE`RyH-LYNVU!~R5&u-*$(L^c69m>c^j)1BUpmW$$-q45GlcU5W65Jbh>KuxiHqK+Dq7~!DqIO}PppT}{?tS{JLhIeNeoLK+={~$evsXO{v+HZ_TDx@ji5v3AIc%~JZ zQzA|h&7IkaJ|g!WIi`b3GGW|1N5d5NTe#@~ui#zxnRO%eZ~UgN$~goH(XBs`$?iYP zKTm#=?zSR~bYLl4kIqy(ycAz8p{!K;_Who+t^v@14mDJ-{{QEblA{z(!bAE+Ta%vj zGF8PxMvCvR^;`33PjC|Q{Zpcw2*iOHUpQtFVeuUmm$Iuy|-d7vir~gKZd{`siENP4J z7%;>oC3SB-qibhx9DQlS(P?U!()wnv&>#YLEzn5F&UQ1%ow$cFe1F$=qYVA1aSCt& z4qnvERp4UZM({hV|X%>jtA*WaA*Zm<(mFQKRhmPtO5Sl{-)Vh(?=7Dp#EO}%{87-5q%0O z*$g{PM*_C&unZ4OboX_sfpCx;Y2%QOJI{r0yM6gIg0sQUDGWj(oKfG+_CMmd9FARP zD(e=zta_*IilHn`s0 zboxj@Sa`t5-Zzpzk3Nq~z=0n3WrwZ~h5|jJz<#)}d_Ijg%H$k&tug*ipc_=CsTCbZmto$MhfCPJ26T}A z`%(6|P8+Z-_4EQKVgFsfm6viEFmCV@#}CZw(r!d}FB=C1-?6z4Fn-|(z7}>Xho^&? zxE(J|uJ7b%zeWf0)2nd^$@5hQss|Y^3a6}@*L>E;=d(%Q{fA<%l+IdxFTf^Nzj*4C z!;6TfV5hu9AeeQBMyifb>%;*nivABK<>6;9fd+WmHd&BjgIh?{wNgbd0k!rBk=dc} z!Nr0v{LUM0m9LECZvjy<`I_iGJDo~OQ#zFH(!kF9@Bh$bByy^Wr)1prtKml=D6knM z*Q+-tl4bD|$X*o{F;O&wR7!T?90y&nUc#|_Eti16N(J1bf51_Gh5RWY1bzcFozMo4-MjQ5lFN#QLA6R00bmdYkp)L1#a;0&Q6}a*wD1k#rTm*^}3+ z&r7nzvW}YE<^IIS$(34vKq0>H9Q4Yf&4M73HmMgrBIc?5dCVKFF8}*6www|*p=O`1 z5;aqmZ1Ee$guxo1=MMM2+#(e>a`^r{kHpUmn?Y#p3Z5;;&9#lXb)M%R8O%pDG=(fInA}=*vSoN zP@k0iU5Uv!0ZUcj4;Y!bcOY@HcB4=crjTqBozZ0mr%W5rjJR2WML8IX!(H4lBo4zD z>AO&5HiFU$*o{g7S>Xq7o*zO3`RU)0H#Y_Rb-fbU2&NTbHdO9Ippw#i&MTm8P&fJh zCtYYfKg7lQD!n3UhS8q03?-LqUbRj4Tm#PBw>4Q#*z@m&ECTZqXE*U9Lmz=Yzy;>6 z?0-3H;cD&E2$Mb1n@EiGe;>pv`Lqzm3b)34kO~LqoxB}4{hz_O(j3k&^=kwOie50^ zF`5u4;BV#IYQJ>dAc@30&rsbonezlU?9LN11_L2p-p;!K-1rWxKs)DrdfR7)!JiM+ zi02-e0gvKPyEah8vpn$Z#AgNM4B{Ir*lk1V9&IM5)mU~WO?Pn-q3@wlVGaQ@q61qD zxtG0{jaC51ai$q(vjOIyyIFS_aO;FB;@rhwT7qvbz|;KVArR5m_qaryXTy&{@H+lE z5^TmHWrZWWlRuzoM;xa{C}Sr5foGY?yh?($%r-d#Pn&kLRgyclp4W9 z&7*!nLav3G0JU;)=8JduS0`4sal6B#T!dD(41+^Kri{*Mu|AIL4j1U#TyOo=d%Sw_ zu+7cfD+`wu6sC`HiI$47>)3834jBZ8uP_L08$jYfxvi<F(+ zWJIOg4B>X`N#ZuN*>G+BqTAPF;R@*b!AC&-sWB3xA^P~RQ#<%c`0~Kb6;(+c-iMij zn`7-3HdJOT%Li?vaQ7ZaCAq-=iv4F6fdGr@TL3|S+LMYI@z|x6>U@$$q%njm-)M$Y z?m4l}2`*Zj`PV^p&90$jcDe2hSO->CB<;ye@X~cKjDGsL=!c zD*C={LN|-EIO+s4uKf2;P?Wk9q&=C(+3n%G1#C?X`vL!`*hpxFXk7`7aKWzXe)EM7 zAxUX?;=>mzo$fqDf_B_cl2(p&yM<@s09i4!PT>B)>JxQsD2mP!H|kp^jgp|WOi595 z`%=jIHiHCFHJ99eLJ_8%c;xJ|qaSQ$<=|wyvbyNKkz-8S%GU#+vxfMJ=>uX_Um;EsZ32e_L`H(qrvni(07H{~EygH?Q#qgS<(ByZQ>{614lL*yBii1q`x}9yrt` z?nkTjOP@?8Bg0-_;T9U*M$9e|pgZx{%GNIZ{&tHlxfkww5pFRIAXh~|7j7Qj+*e`% zKrIw)8Y8!VU93y!b4@8WwH>ae_J)Y@b8`pOaYGoTD|IJlsHhV0EzRoxX+a98Vk)>@ zBzilUH3wH%5OKrn?zh?E%aRth?D+{)%%XgT@-W`)f02}nMkS`687Go_Tl&_?ycsu% z;RVomb02+H>nz2glKlB!=h}b=ovsvE69SBSkhqUdrsSae$0m$=lgsw= zpce9#X?1m4_h|X~pZ%X>E+2)D=5onGZNV2~dbz>$)2(X}1%IwmAUw}t7g*fSemAt-yjOU`z8AIzS9PWpJ4CuS_&UMI|}KHQL?Xqi7w>h{e=km=X3jyxDlOyGFN=r zjb-0H?z_&{EnH;#b(3f&u_KPaat>@ zTVF|v+W8#!~kBkcPCV}+Alg0aRwd0fVkAa5}b5WEt3UYQn)9iZftBU zU6*#z(ZaJ-@hr&vb;O*|L#Dfd%AF@eZNXs{Sj^zQr9s^Sg-A2SuD?RHu#$Q;CSgX zJpYRc(54OeA@3*af03Zs`0lFgdgzE^O7WXLM?E+;_qVtI<-s9*jqf*-@{ErA$6)Hn zPZ#cP*tyl!+q|wc9@_VK#9xq`I(+PZi{DBYUxj|BVfN7fSG19T6;)<6+*7vh)E7YHee(_H(r^CthpkG&6jo==>}EMk72lfEatJ8tex_V!2IFaLYW1=M*) zvhTi`zl@AG_cziDR$vRJ+~!EIpW2Y$amDYm!)435^w*s>iPF0CKeOLxShOnHkZ;<^ zm=YUp)Byhak$o+mfyS`!pVV1y~w97uy5Y}x83ITq7OJ7Q0WfP z+HGn5q?nh)q7J8!^v1Dj$7nGhPdlCWH6sMXHl@Q zV0weGssl-r|KD%rg10{IqD0eIAf)5LbgG3L!)+6jB6&XwU!erHNRPoUS;|$bdasD1 ze1O>O$exY6Zp^1Z*SPgKU~hGlM*?qzoHO1zOO5nu-(K_7wD+60Z~HgmQ@`@PoYT|N zQu%({!RPhUg59k%=eu_qhh0=wgHc#6YSFv@RimSf07 zKBe)a(3i*0M00GSQ(zpUh&Voi>qApnQG_afvy5nAQ^Fc2gm7;)9xn(pC5AKwf$pLI z_vzTw>Eiq9>OZ&ZiM-UT|JXF+47p`*-t^!sYFc-e=2*{a4~6zuNAsIbSpE=|+{8BF zQKAm~kLAKN9UKa%m<|pB;@bf1!QE+y4SH%W{~pxmG45-3sWCJNF3%Fkg2|L&o}$bb z7cNHS)YTng=}Su%d6W=c>mPw%(8-^+<#Cw>3kse;X)SnoLiy{`j7&^rgNB@W9Mf{6 zUp@f}k0O$azxs9U)4lQXmbv*yy}cC;4GqGkf8WbkL|u`S42YUz zQyKUblfc0S;O${Z0;M_&JgW+>n+Qx@$);V2a;7XouAVWNE$ zbg?!I2Io7w54d&*qA`bY6qhK}laK@mb>{6HXFe_)AYa2<*3}9TgrAFQty_8 zI!dp8VL{B_54$)txZmsT8eqEO2ef1Qt;N=q=6ebRO*5vo9xsjj62e!dfrI!_ z6n#}C7cXKta?pOyDdxCe(?+MF_W~Ct;*y>bVt$^s4wmOYLSv>s@EqbK3pmE!bL#au zLG<3QYt&qSuS!U`xZJA_nRXjyi^9Fa(R_x5DcyLr;@#^({fjT{7^M);eF`fr$0J+v z^Se_<$ww~K?F*^4%mRHz?Wsv7cvc>XUGox-KY09YWQ3KUA(Q;|b&Qrcc@jN*!#qmP zV5Qab35r?vZIrIxT1zPB+%NacGKvR_8iz77%9$j|>_P1>Ckf$|`?CHOA{3Qd`m~Zv zde`V90wtjlVpR72{Y?uyJl&9h&P;*?k^g>XYYqL8WM@^Y0?Xd}M=vf3&%Kn~x1ija zxvwb8_YAfWhDnMb8VC`js$3P8o(Vf2;Vu7JfM7%6gA~Hf&mM@bnSb}gM-tDNzW?GP z#(ilLzdH|mLfzVaI#Yk`+tU8k7kzpfn5<9xTLxP$aDgLUWxc2rZs&q;Yj1dZZbcOo z6gX3nwFc_>7I@q~S7ScyVeJ}`NGpF0yc)Y0>FQJkw|2b9zp!9b*dsP<(b!kCNR%9T zf%?OkH?xzbY+_UoZFwgR*9$l`4&x#s!-G^;n@URV{roL-edf>9y{4Cg*UvEAPmh=v zLaG!sDMwxqs*}O%=lp^n%T;91jO!{<>ba5or(|97@K#HCDRKyw=d@Ry`5dTe8HSVi z7q77@GDgS%u3u%Nl>NlzjSW`OeEC*5 zb&7f;k6*!#7cc3mcYdp0J-Kq|JR#S)ID8URZncLv4IN#tMbVtaQWOn72_i|%DlX40 zz!Lladb;X>rrxiAHwKK}C;<^hC@GGVX4D8lL{LEKR6@c)dX$WAQBhJtMZg9nMkCS< zDj?D--T6M#@9*XB%kI6;J^4B3d`@U6gmRb?`uRz!l#d|XjlyNGe}3?U{~-9)?^8r$ zo|T7JuPUWwR9-jPoaY2XftJ-UI{@$ z?!8Q>{YBlTmd21ueX7U2tnBhWr(FWazGM?WD?Ih)p?kGZcA!t=d<@6V&$0H)5Xk|1 znTNbp_?@g`z}8|@2<;m|j25p3z=0K|7<#@1b3V?%2FN)*!~e!4b<#PR|5SiC0=?N#ZpYg zG3)eL?=9ILVD5GGo3m*;kLn?)#1fNzln&(*OkjKq_3U>RU?jUt1xeb~k>wvTs++G8 zA70w6SuZ%_7qZ>JTlMGbhvS-u@t%PVp8!Flp`0o+SIFU7cA~{F@(m9@bBB;pza1AJ zAMfvMaEd%E{+5O&%tlU+-o8q4nH$fr@f7}(Utka>NpI0%#hW0XAiVMMEt^DdhJ!?b z(3W-jZ~ZfsQ_M?3YCF-sgBC7+0LA&_3tDmfhpc>`JcKQS?lEqk`48{j`GNSmR)L2m zkZC0F*oZi-U^df}vwI+%Ik(8qNfQBdgNpN|Rc=)DNfXZVaZa5#k^uM0SEr1@JV`AQ z(sJ>I`>IHi-MEdF)t}Sm<)ppA4>i*Od}5BJi05dr0qdN$de5D?{_DWeq6 zbnT|r)E0JQiuk(^z&d`}NBgrnR_+4VwA9{35+~^AkPR4C;e*qo{)-xxF~e-b(f!LBj}S()_TZwdQDkB z59O80B&gMKMkQ~wt^_y?X~Qql9vK?Z`B1^XTmv-xOPHT%H30^wgr5i z%b!c6@&*}uir|&hDk_rQx{RD$O+kxAUw?lDWoYB&#y1>EF`4H48b5M427@`{YnL>w z{if6NC7@eC=16;aFDH__ZWjg?CB_hTOMm-H5*WIyN8Sz5; zn)A-KQSfSNLzzG(r8hk+qMFr<>IvHJ@&oSpgoFeuCnqNl5Ya7(aS3h}`1To|jW^GI zU0wbC>Ko_y_p}Wp66xXX+qX~hL#oxF`R|%yY6ST_5CF5O#od|qK2d#-^8RBsMYA$% zl{>E6%fI6sc=4CM>7_#1y)#6E$MW8IBcrZT-gB49SuI=ys;gLwGl*h z)jj?FZ>^1z5jbFOLgV_g8hFl?p5l}p^L%tq?X{Q$uhhd42D|X<1-(U@vVm(;`Md{n zL_him3Q2UWCrFC0Rs~!q)gWT~i_M|E+&(>J*dkz`y(Nr@4H7n zCVK*Y++!9dw-YcS_S@sx_FRYZs21}8QyvH@TKNHPVL1sfES=&uV!wz~2Th1@WcV38S?1 z^aIZz&J+~+hDpf-@Wv~8V{ZkToG#no1Wm6TP0l9?(j=g38Ek8^DC46s7xF9?G4WLb1vw>h4k zDSv*hwYpO#5EJ6bj*j_i03iv&HRJA@`n{gcJ5D2eG17x@u)c$M## zBgXUh$14W+;dyOe;B)U|g~OxpjUo zCT^}HifmT*u>M`?aTB}WW>sDAo5jbyKsVTN-(W+-_^l4l;J&!u({DJs>c~Vvm)W#V zlIS@$GSbrv_I7s_zkdDNF^g7T9R-NGHMSObPD;p|M|r)R*JJwa)0~yP%N{dv93v{j zEw9*drqZz2>Z->zg!Zz*j#m4)F?2ZK3Jw^IW;GW_irdtD3jmHd9!cu0Yn{`{g76!y z+d8Wl%L6d$xdGK}n~mnMoI{=nHd^dIFi1+}_e=M?Qr zM5|q<)AHd3ITr(gqs~1P%%5;F)d95J6My(%sTQm~N#i)IjjcOc1}URin~S;FSC=(m zq&7DJPLNMTLMEH{^$1b;k{#CjXYZ@spo7=x;w9O-JteeEO!}xK8?!}EpMDYuss&du zh~VXL-dp2f`e0t|VBSavDK7b~xjNBUO&MmM;0Mx;Q=K87Pi8#uqMtbwU?o$qfC)M< zCvbBD?9~0Gqe@x|-um>C-!v=vh?=4H=wNBQJL4qTQBqV?Kcv7;i5^>(h~gNi+Dj%R z$H6`^c~n-_qB#?ZGzPYb zS^k)W{S3st8b)7R4u|%v!GTu_+K06I=UO>4+Gw1VG|OZ<%z#PA!W#s22ZPYl=w(z3De>sK{^D30X^3c$UTLCvvladB~-_h?(E%CdI9H&$DjXv1BBr6#weefA>N zNWKKx`6%@f_>*v9s(lf^j;~JHH#|MZYwxa1mVzDXjr%1A^MOv8hK7bANqbwF zKHF6s2W9DLY2wWJA(ie&9J>q}`{Yaj<^myFKzoiguIEX`hREwFD{U>(47mN9#<}s% zNfkliZBxPX0s@7c!})jhdqYDT<*?Z0h^$rZkdTlOuuQGb*ztQJp4AVUGm1H9FIIIk zy05jN62UYlf3ifIQfli}bdTaWqn*5pin~!ru^g8?>U;9%v!hVQfg?LFKvl*|W6uid zBn_p>&i6(4Ww~>g z@Jr)hHNxF>m|SJop`H=io&k7<>y5)t7`Cu}Op^Eg*tE?7HT508cn|NGAcs4ea$gpx z7$T_OhlYllZLsnUg3#nKo~N@Qj)6CNz2&R_+;KnhzUyPhFi;+=Kahf=Illj{q8}*1 z#z1_P5;r7Ql9Q4HP%(2x9}^jj{RO8~GmE1l%qf6Mj0n=egFI6kM@2ST<=RC;Bn5}LPRu9dz+@)Ad zdXy{ehkjuJ83(hst0n~yn*4~j!IyU7R14l0^urDv8*&-rxLmp#_=!Y}r zIp27(=%AifKzLWRs?mpO7RZjtCGC!kO-J-rTb7OB)<1S;|r5QBD z$!cn7esAPnj}UqDW*J9`ihtYLycg^m7aB#-SW%g`7hSj_%n{%>?}N|dUolNLk09-b zaMXjz+qs9^c{~Jfe#B}gEJ;-s*mW^DKGYvVzG4LOA#VTl{9r?v_XG(h{W?ot^6<9p zE#s$)CPpfwvgGXsujNY)pTTlPE%!s&@Og?;mRpvph>U1asj_th&D z+y`8e2(+%*zn_(fywl+TdqfoLo^B&q`F>CLov^0o(bA%&Nz$XvWgD4Pp-xM(141mw zgn`_NM-&mF5w8o*Wz1O7lvh=8r!QH*GT3L0s4zMbbQC0ii>DW#^{tm&m4U1*9u)%# zg9yR*8Zew?VOf%%D+7G`Dy>8>>yR*zfpe#R6Kf>0p_;qGCGB>5iKdC9%6+@uKR(Ff0fL1kY@Xo13JE@u- zjmo0rZ6}A{X1mi?D)eEe=fvd`l z<0B*2MMgt zF6-TO$)_5|SFXfF=z{D1St}s_w=d9dr1L|&6YrU5LAKGy1#x088Wvpiye{qe)Tpbk zTw^jh80iBjb8^Xcbq1_97#$rN+PZ1FNC%HQ^f@88RL0xCEEW;M>Ao?lsUIeM|7oF4N-K?ZQ{1+x)&rj@#``Etk^Zyrh0 zfniO=)F(M8rlwfTs%tpB)K=asQyu&HvZrnm=?(u?+c#oJ8aiMalWC={ zL_|lv^?WR*=#0A))qb~%Ix!vqH-hC{)2>D5pSaGr&!#egZDUu9Ap4oHIMZzMXGV=0 z{yZx~hqL9w*q;Cx5=~rGCi{&&ke~@b{s93SI+YG?e*!v&kCLt@k#Od^|6SMU*SMXH zgh41O0u1b%`4IhmhSrsKcwrM?Wvz7~Lv9UkU6!r@X}$p#4E^^p*T-7hzeXL)si_%@ zfGa90wpUt`ghyuvmbBLU7wpE!E0AeEwx-0F3$v1aVhZA7RHCV5Shl3YJ-`$r!P3`t z-=ONML(O1rR_q7Ea0IZ;|E@D&B>f-}%`RQ?>*(mP_~hl`yYZZ$&@2PDwY4SGc!o;z z5nqzw$s8Il9l`~OXRMXFmHn#D5j6BjzrZIkATI86ut3Bx$UgKC4X3Y!@9YBtX_*&$ z3__@T4Kq!i>s%C>4e~d>Rrsg~Mwlak24~$;Jm}P28;~sG-GM+~(15f+YFB?92YUFq z?laQ`?f+c|zT-`u*zty!iOC0m)qbOW*>;BT#}DGa2j5dulb0V3{T7qICYC}~1Y^FM z3t_b6$z*fFwjiVOpE)2!CMd$+=iP?j)etR#?+i1a954_>IGPYaN}hS&Kp3^$rV`_b zdBs@5ip7OAszaEFH!fW~9+6<8(bXUv75i84^2ava*_T5@wd!*2-@k7c|ES{<1XJej zJ(h8;j}xPT%8Gt2oa_(npTVl@Y5{XFi*~S1{nHu*vV-P=D=f$0NjdR9f zU8qZj!G>`95*r$_exx9r=TzM$C<#bXOsI#4$EnZs!>Y4aOGW0;dwRMOaa7>C@`beQVQJbt%Sc%N*gs9Yq zvV>=$>FMdt^R~7(Pe3O>fqDKx$9m0(VRGca!?|(!m))SPX_0`l2}bx0ZBEAv7(YHs zzd-J~wD6$-qXJa%-cs8-sWnK-i0Qv`v0wLLhrqOMbB<#nlLmrda53j4G57gE11_ni z8Uy|XqrVil-mv__5Y6lWto$0W=Zli&@f%}+E6wla%a_ih8S!(ojJKYO2JQKuvf#?!1>;5q)F(9|+1@M8dl^?fEbHPbViI*p|t^34JQ~^X?(<$s{g1^|Qhj?78+a^N> zRu37i223M*N))o~Z}C}bC{T53V=b$!^c%LI(8EPsFyl^vq&K*bd?T8`FHq;-cCSn^ zbgEofa9taHc(KmA5Oo`x8vXhc%OKGvN{ASyJsLs{DNy9EX~cKi?W1Yue*a!48(Vkf z9^+N#J|uE}h^t+KsK_a$kIp+7?Hd~UFz^`D$PA9R4})j;InhFq^oRe9ZfUp>X3-it zohEJCiorY$If|%>Z$NVMpNSETziZ^TL<0oLWSy1o^4~Oo-sD7_Nhus++OWi@7c&#L zK(5v!y`ovvMp^R!M(^3rL!dVfVyvwF$m>6s>kDEUHgYhD{(0+pc8^F3bkloY)7IA2 z*4OvL$Rv^XjIJDMu9**Aeqrb=`(2yLuE`Tee2$ZdoCLxpyv)_01UZV_++5h_oPUio^?IATO=031zi8)3jMAHg_)rJezVRK1ktU*g{VPn zoZdSrXaf|UNPW)VDSn^XFGpRU~4+4XLw7>whJQGC~ zV76&ZX_k2=xy<)EE;u_@ks71FT&>Sr((}JZi0hr^Gz*j)%5W zbZi0ruJcRiE;|O)?U@lPe9f*|a^X*f82O+a>x6E?EJdECR=2o{_P?Yd*?45ct82Gz zX*?cL1>Thm`s&d(uGXP@p6`*8YW$_$89v!LY`ko5G~KSa4SQR`<-}rJ#}t6h{$z-hLaP0OXnM%3YEVcD4y6ZNY~&!Wh;^)AO`DL`TB+tcQjZ|D{Fkf<{Y6z?i?!W0B_@}|Hmill z4N`0+XJlk7rC3eW^P9wS(9RmH6zvdhvz-OQ)vRk2)L zT#8S}trP3Pz%I(uE{cCS7goja~#3b^$N)zlh> zsv0<7xl*dEk!mN6LRI8nM^eP(ik-nkz7+fbG9d|2Z z4-M&Z-;%u_?tlySJAn*{E+j+oV{jp*pd~4&#;$*Ejh+-RJi!e zR59DQ>IEFyV0h{|`i@h$*JVk|@opj}rYna};J=)xqV-i}DGb7DTo!od@=c@c1?COp zxL#|KN-sb$M7_ekIZJ9s`zyPBR?mFwiZB6yWA^_K8~|LP?( zE4IZ&LLzN%i68Vn@4%6_k5Bk6#azK@|EPObT#T!| z513Deeu-$5kkzjVu)E)q*bJtJ;eDp33nK`rB>6A8?=b1mu`||jjM=CSQ(RSur)Syw zdi5sf=-*-;G#cV$^BEa8+43{=w-7b-Yvfl-rJ&AWnGF*YF0r{mfMSVv&;?i101EeH z1T}YOGU0@h+(TZJJq>tL*_pkUFap|VSkiHb2pR^=FL8sqO#DjJ2lY}voK{Q7jp6dp zg=BL|;C|xuYw_FyALUu!h_F_?hqtsISzvTN#*P$q?jI2i~Gk8_udDjV}WrKSu?ggvbQrBlui@3_Z{is+ zZ!0x!_LzCC)gEkq9m`S)Xm3w)NK_fjR0(*0_Ij`2!Jn<9t*MKoMtz_Q=WtN_dMah9 zw$IyXb`aE$ja3JDZ})+jhf*0KIzn88uht(JY0rfPUcZEyrQqDhu5wH_Oyrk&)qq~Q zOhBdMy)iU6$atKqcRr-T^Y8{E@)aogP13WRGQetv)H)HQnQoa8a_Wk0@b6Chcx1@Q z$pxE)n4%hWH}R*T`ue{&YJXXdR^}`Ev|FJPq42_ID%#!z>d<}ZZO78bj-u5QieP?-hj56QXJs;K( z{LQ=Np}A_D>bG6&c4hDpin+pi#CZY8CV&_#w3rUnrEE&IRD2kiEB5U6f6UzPDH(p- z@4KNBS*X0Ap^u#yA)<(cz$TtU)$t*W;NKJL-+t0eoo~0tinFA!9M!c?HLg7imZ+8$ z6}9|YSh(`E_TmLaC8cZ)US|ga9p&q_hFzW(S~QB;_bxR{#x{n%YDKeO_V*ek{sR~n z7koP~G!y_j+|E+9c^V?rh$}CDf!3P1UOK`rhF_1E*7)UZl*1~>^*ky+j*OiX2YiSL zGi5CX{0`{wER7E8dZM&NeCEnWmw9=Ikx`5DygGMCi69BngC&WK3jR$aOs3YBKlBuQ z1&Gp2iRQL#)^5*GSy*d3Ok4(pHrIdHrtv|=B=Vlw29{p2f=EjumpnAVGlg2(7;={!~eihMB zS@-5-Te6!(j+{!ITFim%C@=dnP8!*JOqqCHk|vssYqk6GwLp!nh`%}ym%LR-YpeQj zKlm7$_PFUw&H8b`r^Cp0z)92p@mT)0w+B17WQ~!w2sClXbaN(rhC8l=gp8I1riI3F zDpBNG&G%X?SAP7{pH!vq3JaUl-Zb^sCU+;bp6^3OkBwQY(DGWAjboE|*Ml?dfz>7F zuW-)WkD|(L&ej+v8Hu3RI+=D}7=0$(gGd7Ifqi&V4)DjN7otLv5Hr*q z#uIT*c5+7$)}5}W^+B>CXH31u0h7UEJ`g6d^JHn&yqhu}ReQSc$mb+W zHmLJ4o~H2vlj&}fXH`Y(4<&k9uFy?5{TH{HnNMx~NUV*upEAGZWoZAv`YIT`4OU^J zHSUDtkeJ^~%y#URQJsDNMVXKQwsvjXY6G%8U&T?B3Ot16^CAs_=RQ@)fQW-2*FQ9+ z)c-KXP>zp2wR!}JghOeJh$pb4xtE$PDt!v7ocuq13G$bzSkfZgQy54|!hshqEyrys zIJhwoUXg??>HGRYGkU~BuEcrPui6OucN(Wsw@@<%h@diQ!+%Imsn;FVky(jBsM~F{ zx4RqVd_}eJqA6a11&Xl9X}Pcc6sf=kB%RjecDA&{EQHLx4`au!hd9k)xi0b<%|;A^ zdPdEXnnoTlGUi>8$E=CsCDGi`CupQ5o3N4AMb`9Q+G*0TdUgmmwkD|Z?_f7fO-(0M zC037bX*1#;Nd7D*`P3O>^77@Mb3>>*@I2bCN$}jJ4_G41;Q+780tr^Iq&)Sxa|c~_ zVqf1i%q7+%&w#11(71bD@jhTJMc8>2#-B<`N zlJpVH%oR$@y?@{g zr8U;1VGc#c&x!Sn=(lfMA%( zQ_L_ZZxv3;XSw6&QoW@JK)iE66b1#Ts*HF@R#$fAT$Y#b^ibq@FW)o}5VQ_lX?jz> zCDt4Ut!$T%^Xet?zdz-c`WM|8ya_r0(v$;Z_Y)?QPcP+BT0B9-ub?Jb019^( z!(E@i8C3@e6EJZar#}nXx0#Q{#L$-2)TpKu_^f1AY+}{x^S^1f!!Vc0HCv|1CJBEi z4UjSLZj-1D=Iz>JL2x2BTTkUg4Dk1V%O)yLX&_#|cBq!Ov9qQrtgAULWj3c3&o419_Lfun;Dx_FD4-~-f6 zS6L2HIZC|^{(@>Nt04=4)Wl=oSfGKwV>+uCyFnn_Ovv9*&tmDf;2){n6^-2WoNU}Z zEL^Q2^4721yxi#Z+}~K)JJIVqIlbyAUG{-M?)_91Wc5AGcC#_kiL8kN&i6k~pnX!S z3euO23iwFx>_H6mR_s~8{`S0k!TTTrM>dor0F4AYN>Ek-YEO!_l5J#Lm>Z;{r}(6|*A7CtAt=2O%$jd%!&N@{;VEppiY#d_!)(XuyzhcOYu z@Vx_S+mr9E)@7R6Vm8m~9iP1)zWpHN@L{gJ>RHpYNws<4SDO(^hwHPw_s!G%UXhQE z4|8_9?ye7hVBLSi5G zs#E(6e(RiEu{VFQyft)))AFza3YhVIug@y9D@?vBF?#Z(GzD8b=+;>FOi>EGB=1D8;Ju4?8yo3a;gmhtY~%FjCqpl1 zDzksK`g)h?m1-KyezEp4Q|KQWs-2jaIAs3CksmBq?J&d5!N%5i1$JB!OC`MVdhXln zyEqzggTWnt&Zr>=B3AWZ7ShjjQpgLyo*GgnwWM1*H%2nGh#15aLafE6FP6jU97Fte zrYrVrSx7H0FQ=W_Zf#nQ2RWwe7yY8Y1llh3PEAeyoGj7E)ceP&sACxj9@Pp65`NsY zKcBwP7=C^E^KZinp7<_rnf+vmK`0iG`7n)2f!U4_`fxRwRtCtFQ65xAZ_A_$5F>&X1w=I*Ym=Ce zem)|+m>`j!`r*TszJbBC!8LnSfdcsx2r)~XcG`3Bh`2!%dlVHFQ5!eCeZ3PSFv@#$ zE0cV#M#YTRdf16QjVFDRz!TN}^oykTR(`mjh~Lcx?7tU*AYVkP$jZu!n(Z1x;c$j6 zF@EoT@Q|@?U>H-IDTzyt=aJ3#{$H1fgz=0BpfI#jH&Jjz8AeI&)WQMQ!SU7 zZYny0F`lwzyC-?6vuA)OXRIZCTW4>gZ)9}Q_-a*wz{p;@9HEx*5tfJGGhb>Cd@_{6 zenPqK^ZIukAI+&!EG5a0t6Qr;{?5%D?@^O)uVx>8_wIPl_0%j|()-a9)Tjbf|73oW=vna*&1hH?est2|1&KxChe54E0AeSK zHUbL5TS(RI$!C3r8*}jIfM1b&Ab+T?VqsCP-_@t9=l-{EEKW8?IHD$MoiC5qe_I;q z+~oPGC`R(W)ytg&*P)WN%l}uk#Tio#^8Zb{A?AEJ-dxDl;qEal=6^1j}dUv(609I4Rx;Rr>0N?$VTYylFL3fI#! zG#%LBGtcEv)-!6nGLl`PvTqh5tzlOT$0!OHd{SL3By%U_+n^f7An`R;N{=QhlD zrsjTe*o9XCw!rL82G&Pqaz5{dHIjm)<}3Y>ROtVdjyx_B!Gak}$>Xi&@xX%{Os+V8>EvqU&+nb{j z{?;{|A@Iqg9#lV@Dg``O9F<3$Txt+)2KvEyC`f+?(S*)*E#(N+|L#1*@^mphDamy< z!#2nM&HntXSu9Pi|K0b~A)dB$REco^``eih(*CU=WUJD<*9qQ(h%}emgm?y@cwDZh zl|~Zs>ZJteoP8-sc?SwV@qJOmx_|PnQ}b3qba|`qHEBgJKIcA9+s%a7T7rB`wX4j9 zz}jX6Q(U!S0rs?XHoBtrZ;s+{c|6IK{YZP)%IA74GODD=SCWq4-Aa1@{*m8!o~!}L zBYQu8bp~WAMw3!3Yr&{EjjG$<-QS)MsPZ1|8ns7QsNp;=ghAHasr_$`to1Rqlh8oM z?!jQh=f+>Yq7XV`%k}xvLg`(imFp;EKhbSW4g?*Z&OFa7 zkv3WeXCxdYTmJD$+56f1f0J4^&rJwAoU*+(G7!)*P~N8|!2Qz=2NAFPfZ$F!^3Y$N z`|in$*O!xH_p`RSLKNqR8<|d&3|b}9ssZPJJaT_FxV#W>TAFtoi_N%RBuc`2EWY;c z-`0;pITI6;X@IbzP3fX^2az!qM{3M(aSzZEE-OTJ?r$Iqq7J%B0z| zM(FLXksf+P=7%r|P!?+L)glG!-juYsfs=g-aGLLYoBzEU2r=E4$d`KsQh&9-tZYXq z$hxbyh)Che<57kVMH=NU=_2?n)uz--^@d^a{LCcj0EPN7mTzkmSU zmo$=MePqpqTWa7XMc*#Djf(btep+AILMd)gVPd^<3o03}90ppzt81^54GIf?aI%>V z(j*Y0yCXZLZWpMU3cpT;iO>$XK_yr#6EQI{C%e{)s-7SSlX4j3!|Ia$6isT1b8){H z;(YpTSnyP~zsqCM*Y+%1>mx6{vHWF3ML_Xi)xAEDA*ZKZ z#t@dxQ2}7?_v>HPvdOU25GC-!>=Y87&Qt_blX0RO3xd+dfcyET2k%MydX-v-zQu1O_f+b?6&`Tk3+`B$?Rs3Z-5 zf1CYPa6;SP&t=V{XC7t(q;B`O9W{ED>AQKT59p+tvk)FmFO%t6bU;c_73;>L)BB`b zJpH0Kh7ZP-WWL8VMKCor)OK?`WB@81*9PX&SuVeI)b`q@(QydMBd3K|-&|IEFVznV z)ek=w#(jBcSox}|8)G4tJ0!;})+&^s(><mW9 zKnLINJfA%M+mkWrGc_LyDIXEFHMD}Mo>r&2f)G%D)pQfzzdvJs?Y_NFiUZm>jjXII zUt$QSZ^_W@Q6F8&C%i$3s=LuRGbU(YrW$Y0=5F7gB{HjAKWl{cQYl+Rk|7KaTF!HX z+&0v`Sz4FY^CfF;;~u1e`Wvh3_;{Lw1RmA=23gx`W% zPrkEAaJMs4RS((}8?mcI#1@|EUbEx*{=Uj19t5KLo6{m~Jw8PHt86h^3+X)U7W(kX zXLn=JQ}NWM5%-*e`pb-FDP;B(K-1%tTSe@0|D@ZkjdM_`jcjwgHfVR+UjF=SP-WI~ zCU_-lKK>-G?^bq_hByM8-7k)#P-@7LIng##3O*CHN$E4iEQj1O)U33pp{0jc6zD)k%j13#C;oQ#mr>jv ztGB9-X)Jg)pKSUQ7@p|r>Q?Uj{_21g>Gfj;pruFer4M8?pL6;Uc1v9>q3FF-VO#<& z;p_S7833|#2HxGZk7znUT(RbZ1j-RPdjafasJ7<14dZ|C@gQo7A_<1B+r?=G<*~%Y zZXqBHDiy(Y^!1F4L`r-vk6$BZ9uEAWeF#5A!zN9zH80m?J&WwLpe=;rOWt8(R>u`n z*s)4FI@;We!^Uu&ce9i!m%FhEp`y4S*c4%ZFOQZK3hJS>tZFi$k;uN#ct|fr1Y|+o zmmODW(N}M}ZzD&Pu}$xpi@!Q8E+FB{Hjm6PT}6N~8?(&p?*X=4YJCbCmZ0%Ed%ao@ zln|yvJKk|bj<#grc*!xNsrIzCUDou-@rT@z=4pA0G49Eh;OYHwJkjxNcebPhPmW;d zmkxw{JGw_5la6RDDAdG*5c3Z@Eu@r^-i$XhH{H94IFXdg!hRjxwH*wWm>Ny<6J@eqzvrCw)@*LeGF6p@%+bj8e>6O3ICVDh%-o#11C;$?#Ps> zM7PLP2|N~d-_ka_{s5BV_E!TJnyW&6HJT=m16mW%tc(5F&rudPUAb>4tckFXlMfSn z?U#WWFeg3r%FA?)xk0ham4P}UP5CprH1#2jzB=1#z**)K!*iyIf!H-zQE@R&j4ky8Q9HIqFmXb7hOb`MN3?(BZ3IOZyE_F+bHKcjkoM$9Pr)Mg8gp zA;-+WH-)sdD-RVCI4QXQ!P>D80lDytBQek!zYWdn^=sUs|9i%YW@ZZ_vqBMy+td|y zHPn%ct9NXo`yg=&OWtK*;Nv!bqnh7cSZc7-qCPOYfxkxOG)s5RpMfoqN*NaAW9oxY zY8;djV?vOyC?Ho!6mzi?r|35>i$PMMfQgDGbSLS3CV0+%$`m$S?(?oQoTHiGWeCwc zyic)^+>|?uTmP%=(vq$vP-vZePk$QP1mN#GT26VAkw;QJ z?*CSr&8LQk5|xG8585`$d{r_@+OD9IbLi1OqxNg<$d2#%DLmAVUjMd|QWmt~$s>04 zYX#*<{&&68eUVT7eui~9GZ!eD#V~?q90hU-5r9;_s7FV$T182N=B{KJZ_i%`9Y4ru zEB_IVTtuSu;co31<#N1hpm!!JzZ@1bv1{(%pu%{m-&XB?Nq|zy7>g{+{vu8cV?`;r z$wTFR5cw(mRh{G=XmevrgVt0YmAiMMCvrO|K6^s-@`-QrH7ZPNQrq z3ebodUqA`lYM>-$fg_(Un&oXgDKyy&^#96|UU8_BsI;9F(YL9FW;Kp2rv^mwxWuT4 z*&QVQKLu1nhLGisC(qWyes!o4M)L5M53Lw3ziC9ITg{j1K*Bz@9M8_FKW=_C-$YxH z9m}vV{r1tX7x6-yC@i5B0F7@n=)@eF07}YevQ$fW0VV7rPcV-&@v*E5!&Eiqf$Too zBFb`r^OEO<=?`7VMb`RIn%1*AI~_?K2Z% z)Cw+FoE)EH)fcgNv=YDkrlcD(017ZG6g1cH*!}fGY_D#zyf98|u;J9@H2HDBlOYF7 zA#wVUPhxpH=A0d$+3*5y!T`ZawT{MvR_QlJFoa-1$Qm{7>ewA79L{RvY7;8x2vjGSYABT6qH92C``(6g1Ol^ z)^NOj_R=iN6cplM;YFXxI<1oE6~G9*BCZ^hx*iUpY7Q(|>OSZSE9W zQEL>f%~&y#qvnL^p;}7+@UYK!(5aMyLL02(5z9o+-LM3kTuJqGX?nXCV{J;!X~Q`` zW9B{5-9m$%tA3J1-z=lq{&mL8A?a^*gO1?ByB)5b^|a@4AKv_p27LNlBY>YHHIwNP zFI+;Hu`ny$8tG|$4m)~j;)B|~j$c`ZbcQ(hF|}_li>4e9Xqvl;vAR}fNkFC87~(-; z%Q%V5%xz;>Yrh6dp7CTjBscXr>QS=Kb7j=;*Av+(uPq0+SNiiv9JqT=cjCnN5ebVg z%XW8n=|I~QDGKf%rk0XYFW}wZR=CYt|EQ|Aym;`QJsX`u@p|GhPsT6qP83v zR~JnGBE#vN+o4MRiR9tt3Xo%;q_u{T6PiGH-1z1jdyHM%@r1ow7f z4=5(ILI%n+omxdhb8dd1NB;{YGvjr%O*+Ltd~nx66_AHwx^DCd?lT?XkUSiYuXy;Q zV-(Y{dX!QQ*J5nfzx?LA+vW#U*`zh+*Q;TDjU@_PQ)8Zay7_D$bSgIt5jT*kbmV-4`d+VqRK*iEl))fp z^bJqqFu>tz-#e&4PAEVCb^C`h-B-Fux)2j>bjR=Oq~0uoj!k=yR*RQT6p17#La40# zKOmq)d*H#ce?a}n%y|~^GqXnS1;b6p_7AN`Qj_T0;IE4SLm>nbNdCs!-`0z>u(BjvblcPsRy@!XDKhBBylmE{vi8ZL#K=sB4O`c8Un- z;ghO4O&by%MV>|3{s8!G%ILfy!+yZ~_H-r_Uj|4X+LDl)Wdx+=NgJ7?&H6O*=n!6yXbG?jj|SD`Dj(O}-BhkyfZB<{AIe=qZN5@8t($6;W*}%;23M&(?~My6aSuTOefuqqn56`X_c>jcccXSVx~q5z}FBNkEegX2sMLvwcWjyiZ19T zzWu?Dsd|5R%P~;t+d#Aw6gVNFJg$JPw$NW$`fXt(0n%RstBADE-${|}B~l~q3baua zlzM2kPQaCAFnF>#Cfzfy{hyeVlmJM@NJJ{O4Fg61rR%ksCvOP*d)@(UyGk#J8YeQl zh$vjVxGL>_h#FA5vj*`*$=A5aR1H*zWbs;b=IphcF9=*C@dpJoCmtzJ*o@g3{l*dq z2!rw=sG3=8>|~(Jew?clEV7>%xzAUyAZCQLnIbNhzxFRYWwbDxA^(IUSh!5;mQ1G? z8{as*N-`l}?sRYx?k(fo$<#*bO0Htq4U-li10%fbRU+sd_Jpfvbx3yzZ zWqfWM!v(`?ijn-t;t`I3;Pvkx8?i&+mq?BZ?titYj8(eFlM8jAh|ZOynr_vb-k6;a zI~MOf=zR+9A07S1s`0_fvHsO8KXaP&fYU1>hv~Yj(;ZtWs$5ZhZODSpiN?n6Q}>7m zXjeR@@3xDlDQvR{QgiU|q%QI>pUiu%#-0uOo4Wr{Y`zZ_6&2O`^*D;~2{L)a0XFcl zf}O<8xIA7D^V2&}3u^XTuN`;33~|?bYGGI|rL_HsO_+nrX@!P-a7Asft(UvnAYwJ& zm-utn{QX1CRn14`c-q&e`+w$|&j1VY;%c6Ww@br48Wpb6N%$k^P!lw;!{582@%!s~ zK&NJ+SE62Xciwg%nl%zn_;$f-lY&P^Fia|cnD5~SXS^JIEpql-(7;Nt4gM4bRX~A6 zLqvxVm!OVq`lC*vIQOwpwRs0jfF8XgU?VYsBPEYv*tIv zo!-lxp*CGTyA|n+SPLKL}Hbd?0f( zP}l~tf++-SjGp^l7Tcf62QgHQU784R-pZj|^MR9O8V%rY#?DypiHe})YL!-Sb({2a7HG}v**`}vK_ zm@M>b(b&9B-Jj28s@->{M|NvWo_j8%?Enq>(cGJvXZ4$pc930>8ny-Y{9?nkq^#;g z)lVJKL7QuUU3nClB0TRLTyxAWe6tjccV@LKUJ;q?ix^jlkO%-OT8CMr#7#~!OZD%~ zlF;vk2tFh^OQ5=3K&L@g$L26y&PQs?EbDbh(kdhBoYZZZ9ZQRdJ6>Jm^9&yI07d!f z>CTLBC#A5IYK-%|OJ9cM`$s`E)`9p@Ctjk9cV?NUF=NvA^B~O9&X{j4o`qv?=Bz4h zN04S=ILSw=91~kk&Y9?-A~T^C+jNrfxtC!32+ekkv*m~;)iW)XyROqcqneuCx8x7v zAYHHb@Ipks6NP9?UGEC$F~ZlRO%&^IF(U8^F^L3X9VuWu9L_146Nd)pj`M^{A#b?3OePQLU9P~yW^?V;I%*vS;c_;Fk1v!)M4 z!j>2CGoIFqPWYAg{`WqkOQc!g@+O*$=i7a!xF<2>F%23$6VnU2d>T!5i#l1TGx6Yx z8t0~>)KF^;6zItyuSE9CYNja6ej0!}!q3S|hExf*3)y4954vsD%f#CCe6vYAg=DNBNY^X-_ zU(zyCO)dPBwg|N#teCy&sr~usq*M+v^eczJX(UH-t~=&W7?V}-Ye-0src@8mSBIzM zF<3FhBI6fUZj44Ar*R8O603D;a3x1~d2k2$3t-X5MoTa}_~I~AX#@NvKi{^isUyp< zNVnXL7$L=CV8ByS4*`~d#FB6%>(dWb~fimy!FOF6#5}A}K zL;C`mWlX5$T|&c8*5G$Yv3d9C{l#b4kXkwuu*?kF|g_S#dF2JdU|TisD|-oP-%! ziN)G~iDU6|Stm!JyEXw@2k)4w{w@Wf|Df%!v}_!34K5oZl(w$VhOG(7uTH z<-&;yJqWDs6^kZrrlr{HvAwI+B%~+hg^?;kEgGx_2(Kyjq0!l^;@d^ZyQzmRsEo8^ z7{_QIL+F?Bs96Ffv69*1j)@}={_fQ;E+i)ts9tco-XyOHOKbvj$>NT%%$taEr)dir zwQ}S!Dr_*&M>lB~LOa9G^D{J>lKm;1^1918`baL1q+-#DHm zwRF9^O;56b29ZsFAV_XV4TLvW3Hv-TL=8UquH9)TO|5$2sQ9UWvBmp*hH=ZbdLyHH zD@E?%|K9G5=~^Pm(d#+=gX)O_o%rYTzM47EX%3qGL-ag)?bSG{EH6|?7za&<`h;Z> zf_7qgUI4qJb|!!bwYaaLPyo_i~=~slC(F%Ps5$hL$-qiBQ1;`IG)MligpXOTwbik7p^4X zk`VJIoiJul8=DTuL6;=AnBiGGjp(qE(5O{ryf8hXK(eqC%~HANIbqs0k69Pjb7Nv2 z@XPq0-{8#U-jlg0>sSUL-!m~a^{XlB=Dter`YnN~a6Jl_UyWe4l{CiuVs|}(l=>9Y zsK%ntAnl^pCe5|+QMf6Z^JkI*=yXFVKI_rsr>s0lXP2z;Ks{9gEKO5d7E9pV0QygL z3t35ECy3!o^R`K}AAtnp$4}ih4>5}Mkr=GHn^BxrSlGa^sPvfOm&*(9p@PyqE(S;` zHvNd33Vx=zN9FeebVf<44k}HbEM}EaWk<)#?|1;gHh~QOe2+xlqnUkK@O8l+Zxkw5 zSah0w7)sQG=~noK)*efohcE*!#xY*Vy;MV9<2{FS-W&={;741;)S zPkEXTgWeqVkY!G&mVV`ylhB6`n19k+UwUoj^l?cwVR51_nN4eeOk9@D( zYw^&MAefROYDz^9HINlpYA#0>9q4am86Q4~?E>{t_&{;HblgO0(O(0fm}L;zFERrU zT%o`ydPqrEMg77{lVR7ISY~D@`d_F_0N>C3Fe*p5ihcV;QD%-0t;64`PrXqs|0W*q zDW9W5Rg9J**>ZS&p+P!o1!zAXBzC%-c)vf&U*dCyJ4IHVzz{HmUe*}0Dx2ZpNJxbc zdA6vWepspW=!`j90rt) z1)`jW>-{DsRvGx4JbGT`-1G}z-1%1e#!N7*dalwRJO@DPvB}jY zX5@#SIh63ANvnv#c$Ej1on^I;@mVHnOWmZ8rGa}amY;3Yt;uJUW4Di(h4sJQ*;1!P zF4Gj_OBYmjd$=qfl{pk`GQ<{`7^Z;|?KD4NRn-POglA0oM*z7|mc92BPDN>Gj7;tO zjMYh{IU}V;%7nIn`sLc|wS+j_Jw!SmZ?owXV^N29F_}jqlS)x;pujN5=tde4To@bJ zL;d}BTupBFCl8!jFIjU1#D#?oGa>AJKz?GeAdo!@HTpFd{WKqrgIdj0)L9H%cxM&u zvgv=k4_cIDG&A^n8h0w2%Dqm`^aIcy@NIzu8iU`2)4uC(1d8zRu8-Jq%TX_tl=8~) zO&^`V#7nLa(Y_vwJmMI)IpNtAP`lubHryT+_!M>0)Jbnj+`%5m0kt|4PF$DZP z_XM)S82Km-{`T5>#cHXsj3IBASmROS6v@lQbDbeU_ef-1Y&KQ?+Xe`fpMkC{OSS2oh48ya{6{3@AaRG$fD z$jw)}BTLHTu`n&KeazYmJ2#c=fEMMJ`$f9-+MJ3wACdn`1pl}5{GGmtLIEBGr)*6i zJx=<#C6}`)M_=I3_|i||VvJyC(U*xXRW}|K2u3}6vgtG$JV;Q`L`B8ZdR@G?mn%Kd z9)Ro_mmtMWu@5DB+KVk?aDRVyF3t1`KMBsSV}A4gbeXT6Wt6#jZTmbQ%$*X4>w3p2jUk0S!DT6({p@BK2l->*_7C;neW9N|HQ+ z5MwOUyxOM4qS*X#WOr!Bd@mXz9-8>#OOvGIV=b)%uJ`xJbq`quLp(OCfCpGvYO~_l z^F}}{wFtNoS@H=S_9_4^e*d>_sz->M?BpS`MT}Iuk`bByh!PY*_|>@)I`Jbe{Qw0| zLWa(Br@9NbHphEkbmxOZCEpVi+bow}Dc@5%pF>%uU7wEj4^R|za)u52bv?Ae_1}fc zcsu<}@q*To9t&Q!3aOC!>1MMdeAE}on39K=```!lyovooo~1u(u@Kyxh92= zYd`m`;&y8xFF?>?dbrh)Kg%hFWc1HO@#7K7KNk|I6)P5D=K1fs_aAF(`Y9V?&>!LRJb4Q#+tjXAzr>m2f~=D z2NY?H9f0J%nZ4U)*#R~&zU)2xHTal0gKQkDXv0W$HS7tD*Qy_1j}&RDW!lw-$<_3? z1ZsCFYO;E}R4-JuUcH>G$~{;Gl!LH_cfYZD9$x2IO@nX8Dxli<2MG*Bsye)m(Sj(e z6nIqwa){7qc+`L@rv4ln(Oo3(Cy*5nj4jWe0Zsj{$Gl6p*RvERot#I5mrXN%pZ`aL zDwhx8A*G<>Eu@2P`^49DC8uV=yd#!w+d={ko9}RMWco4k2@?-}u|s+jqzZJkF9pRmRL4lM%^2rpAB8A_QG&YPT$X!V`s+eYX`av&wW#2`4i3 zzdhZ!h`c1KluaP|Mz0XGKIU>lsmUhu+*tx4)zigrcc>qx%}?!d`_!q$ns!yB^R<_{ z5DFHa1rDdb*!>X=;O2Rn*1SawcJ5L=kx1rH+l+;DRWfGi4gXnB!6U*KNN=s;Vea7{ zkHuTLvxchj%Ov`ZIEWh)TsZ`>XEn=Ir~ObH2FaJ-3iN_yG5K4B%E%hq&o|Wgj!82& z|ESL`k|Lz~G;aQzmKHUHN$7Vt(5V79~X zY_s_PT*?Iw`%+%XfzvtAW<}-H=uLaEQUrlv-Q7xOs zGwueul9G}$;8Z*J@BB*rs*C((C)BX%sVpWv1HMD1Pf)znReyJnq&(e&Q3gzc4mEp* zWvK0yIj{3w=hrx<$mH{-sY8q)TU|E)gINKn6IMdk64w}mwzeJIe|(2-taJZQ6J7G+ z-&fZbK*#}Ex){BNu@(ypt2c7}ai9pHca_*zU@ELg?eiYX6h06qoC^Ac+b+i(Ej^#^ zT*si_fp{v$%=mzv#T4j+w{`>)nlMK0w;|FQS62JUtN0P&!51Qz*qS?L!b`(=aMt)B zDNNjkzmiRA$712st`WXG66yLEYsp%!C#(c_X_<<^Adg%GR?ST=DcTaoRfDaS)%dg5 zJS^r{|F(C|7X9x>k=Mbt+d4XJ;WF6h>iVE*#_h3srmHC7Z)#z2wE*GA**6f=NpLP7 zy=XC0=1V5&kDUA?gAkfIDBklB3!L&(8F>gZ)w_oQS$JB8(q1IY#A2$E`Enj|$Fw0B zz&F&T)vEoU8BOVFQ9V>yau~3o~|wX z!i^qD?|k)wz&T9sth&wtcAOe~@u`rQp4>MuNXC_R;4LumD#3MiRpZ)$sqpp7HDAnY zXVcZhFi*)#w7_rsZ?2R?oO2_6a6|MC;}QfZ)vW{B;QoWR3Xz^Bere0G2>lcU=rVQx zB8f3af{9VInL2YW+>BqyBpy-h-3yTLT?xCE>YKZUW-m?V-(5uuZ9rG}3W+mrB6KQl-uOL#wg zlclVNpecqq=~m|nj<3oRM~EKZUgW$eN4QuW*!+&tRr_dIwJ^hY^DX++`!tG#!|ZF? zxh(DVH{kh>FMrnb?FZ72kkja8a{rEqxjgYEjBu&sLRbK5$Kl;gpuC%k8h*%lw^;l* zEdY&a0oJ&k58*8j^MRV>hKOEaFIk&2)g&yy6SL6CaV;$}|3aJTSOS+yc|wG>aIuIM z@J4A?vjPVr&53A5mEAT+pRq*g#+R3u_n%o9q`>oO!9C~qKHF^u{OKYO*(Kr5ovW+s zw*fchdmzHvN*}hPG&u)etDSXy-QRxr7R9I)zQ0oQGDI+lQ~x9J)~}kvPn3C$D~Zaq zd^ph}7!qOO?KpWUXvyQMT&?xg7>&3|)T)}OB!mc!IyCN2m^v<7)=04A$JJIw`g=>+ zMF1Jc?}3%drrtD!ZE%Dz_)NmEynj=XSCDXLPmusU6af?bd=!E%E?9|KT4r7(tCE zoQ9S2f}^>5mgI0x)h!G9!7c&U8Q%fMs1>9&dZpvv_M|_FqIn(sZqjz-!`HLvr%qfq zpmjcvB3mUr7YY+L)4mI@KK`e<)Ob$)iio|x4)5)*V_gS|T!xM6_)P>pu0bmb5m|@5 zqXKORf>=6=|CHVg(g_QcK||NWUO!z-SxoqJtw$_e2<)q#(6PW*8bERtJ_KIiXG&x5 z=9jFZne65ba3fBKToUsxKt0IlmYH8+-a(_h*V0#+=6K%PtU7;!5$Tn(X0a{q;@eDV zbSu+?nu-SmpLuqyc5;Knk@UCk8o556Bb9o2LHm#=A zrPav=_{uSYAT`r)ePg4Q|3+UbCs}V|$n(8W`ve7lRD!!9&~#2d=Dhbp8u9T#bAx~;B_$o7fES3B&Q2H4 zUSNEJ)yFKszcXNG7!>@deYCn{WeL;k@267rh=90o8MJVLsqI+dh5n(D5iXw1+fv}1 z&UPSu4ZNv$$4~CHf>4!!3gwh$!nRs^h8tks_#!7+Yp`p4UevLkhWa#hFjc-CJ%72NRIA>;Wa-Bl`~x* z@eevRZkOaW&arR^?&YiM95Krf2XE&3FSzqt?be`pQGIc2l_oeO1C84r+ev`O-$_ym z=Sx5=WlsY&>8jMn@ENE?%4LU!g#YbIM5-%vw>yCe6UQDMm)g!z&&G4sIxVBp)&09( zv%HOTaeR(*YkJ#Q7VJtm&r~!*kq0mHB$EGJQutaV30C*}&f$@J;!QR=B z$4(KG0J(g)0{w6g$qmrY6QT*aslj2gQE0igw3V{qk!HD`2{`eMcLL9 z3}F3We-a|ap|6va0vu?Zz~y_M2&5FzYMYS{ewpJTFopo&8Jf)NHM_*?!~>UIfF)S4 z-Qp4S&%MOz`~ZyN(&~N{nl9o}K+)?4=BkV|J_y$2)(D4Sn}MmW5NU&35|GvY8Mgvy zHA?7cb~z>M7C0f|Qn6`Fd6RIFw7{ z5%3{0v;Z*=&P6+Qh&z*~93tC_6mmjAu4gL2FivzOJl<+tekI)f*?$2!CIuJ+MNDW) z0C1ZPlRp0P2Ut2k@YBv13O8!EW6QYZ0q5#3j)i>nJ<#n5$iF6k@i-LbA8i|ubFL|8 zVIQ0?<N` zruPanZS86!&ciUvMA9gkxL^0|^S5MXp7}1P-Y?n%pwnn%rqzA7@!B_lDJf^yD@kV+ zK|lcACV&$7F}(D^*M1q42qAgTi`_J!5t*IbN-k3;>HVm8dVckA&HrRX*#6j82;`n; zucZ}rl1NXHb6lLyTYZ#)@y`_uyy4x0;4=Ug*L!_~Ipf&KC- zUpwRe&$2Y3SHE}#Xg$FjKPcm?3cS7sOo-rEe$Q)FqJQ(lV35h`9p44f-C-}4Q@V|8 z3Ti88c|K(+Uslo{k=+}nSbOYz+>X}bI=APuFcU>YVp@ETc3#y}22 z2%L_QA<)6ZWCB6l?e%#*Tql7_W@R35AsW)&DUj!mZo=}$%p~L>IkY}s#zW#(dlYre z9#E2uu3CYh;xU{f`LvXqT{Zqa^r0Fm{?5D5-8f{2+5rq&F{u=MPeDSL{#(?jJFjU$L{~xA|F{2h_&4Ha<+OPSW zfj%*EGm-d~Py7*0*qdXyPDmzCF`5AKINR?`vz!ii!L1jua37+%5s_G2q@se-%frl^om*;=e zDR=q8FpZ$D6+Z0$`GIq2@*mm<1YS#Cg z!1fr36wlXtgsMAM%83oDaB*?*2%nZNu_6_eT}@B~co_b+02+@9q<^EY>KXicl!A8S z_n-+spZolX-0tE8Ojj8LA#q`nDPRGTQxP0_B7NM?WWz0WvP;1pqg>#r7?_!#ZaMUx z3ps_lo0?=n&6`XK{PadU04Y_sUT#pOD=DED+QbhI z4CFIuFDEd_e~w5no2av&L@z*10qwd=_uV4HR<-jHJb^Bt+ASpjcyjkLu&aHq-%cVT zZUPm8USfsajBkkGtDF^DuGI9=0=X~k+1m_?>6DBNd&!%_F0XH}JQP1-#c})qFy>s- zyfa{+hw87qZ)_(^R2a|k1Lx8=JnC& z<6|I|Nlg~9PA3o@g6J^{VN`*;bATo@9@D|O*DV~9*A(y)4$D`I zvp*Ue9&YBAl=MAp4@6;_tTNUi{BJ0uO=a-Cav#m=gVSN;KGxEe3Uv7b6T$8;7IkulU2pyya6pdkPTGVl! z_?llO;)QfH|6%5<8M5221#%kt+6{)Y;CWE+jb=W8BiJPBiYI~VT5fm$l;2|} z=c=C1@KNDLS;p$5WEOL60&6;}y^+^l(^00eb`-!#R8r0s_jq*v-S?M8IEe(X=|1g^ zq0swP@3bg*N&7M~h_72hRwoG`8RMN1+Q!z4{|3Q>zZ)DK-EVMRA2f9Cdy&`&AE_K!BBda?>&zgz%T39=t?fssK(VR>?a zy^_oaz!TJObxhP{YsnBKj&C!ZZXt#S8;LUqGg3Bq|19X~+LQnOEX&+^E-Nc*&W*0f zZjF5U7D*WyUSUS5wN|+-bLz&8QEv#G&j)TrUmahdm3#4f9k2O!Kcr)r2Hh>XKvAh+ zt>YgtBvm*I1Xy6-bQsMNWi`<1q^tC!JRdK&TkVat!NHSJHNPb~DcvPNL>HY0+SbcA zqlBPIj2!_(?U!s{KfhK3^#9EVvodZSsHv*vtNPN-#wE^SWMFWXeSL*7q;#IkxUC-p zh?ZMswRQr_)5`qXMSwE)l-2MW&g~W4k)wX!ZyL`1FP1STYw&m=#eRUu6%NWRkygJd zthGS?3<49?1ZgD4Imwt&4c$yokh`QEUUgSto(byX2H9MaD+Orq&vIHM4oKe48>Co) zStDfmS_-xj<`fri3fsja%eUFs9lYBB-oOK%ov+<;lEFewAdPF7nVIzgr0RRIRT#hD zi(^J<1ZK5aa{FRvSetTXr8K4eFUt+UVN`$_?u-pZxU;Pl&yFV~D@4j4pS!(LdNrnC zGCD0#r?2~-Mw@#p5rTj*W6J?>qpQkK{5yt9SQF6G+sGE7lNmHXiSSE%*IMnf+@U*< zlK|`WSUTw(sTP*$`5!q3oIltBeByj8vIGoQL$!2jA}Z~LXndG)ykOXHGJAZoNp?8L z-d6?}(&>jZRud>wTgbs0c2EZHkP{sQ`(W-jkK!iSdGi~aJ}JJd^I=wz2mk^n?LlbR zgibO+|BaGG5nAZ#>BS1M!&-uj;R&6ca(!6Yeq)m7Me6Ci9n4)USPiF6z+YOMI2FO7 zX-{V$ybyr=DIJ?GxtP8wEECvJ>>Q&uxJ5EN;yPC?0L)CKZ(aw@EIU!}|;cQQ1;3mDO9paDXU@c zVdha|n?z~F^u<6^1lR$Aiif2V8qTX9-Y_Q3J$PD*a#m-Cu9_Jtwy}DG!?7mE|~lwAF7UFaZhl_2fOf|6W`YSuelm<}Gl7X>;yW zDjqS&-5jdOe+!~Qna>!s(LQfJD#Y%nzYhlu;ZcYU1x`cfvhc3LS{;%!;jq3ePom~8 zQYmz~_0eJPfo$VwSy)?-^54S}Y$@&>ZmSz$*GXYkFn$|au2&|dYAHY9TTB&_EY(V#|} zFz`K?fe1^shlqt(?HE-VR7XLJBaJ5(kyTTeLTt`FWDg?FhdQS3^16c(>;e?$;PPUa z)Y*s?woU!Tish1bKU6<S68Q4Gn~!4zaARv&rR$Vg#XC>GA$>^eR}`L z*g3n{lpmsV&7bB%6nYE)?ksa%9FHmxLX?OQH}&?)2i?}5BoQ`b z1;_c-`#-gH&+?LJ8XJE-b9u25z%JwrO|`YPgre$Bl>T1VYs6;qut}sfcSE^q7j3^d zTuIk#(-`~>tCgck+X^}Kt(ATfjCQzFBa|pI&@a)ZyNl?GR$EDs?2G=~J!x$N$TP5wT;5n}zNnpMmU5=%ZIKni<% zr9Z8gV}V#`!TwKwb#xtiWYhTRncL-`50fYNOS12e@Gj==3J&xJF$?MN%50+22@tsg zy@e=|t}1_&{J3xHXU3*&6K{u;Omx5YE+i;z=q97Df~8_xAmFl@ z{y$&^Gd=&qrw#Vs>htytjt8#KV1JXx$bCtD+6f8<=Y9vaMfnSpXG*e6%8tX~hTxMf ze|RJ0>I6{S==ab68dr3gM6iO zxQIkTnq=^kbV__df47Ebz7xPpS(d1JJXCWmMo|a7Wy8*9Q+6fain=ntv4TgQZ zQ&px3R%@vT43v4)NgGXS&5lhIiuVrjTxz<4hvKuzUYOHND?0PEKU zEw#sH8|d}GYO{X!UO=2ig&N6;oG4N`I3xWRU%k(4Qz_ezpmS+>MOuV(Q5dxf3T|Nf!m+FvdiDCwp@{RMcAd zDg&zK#Hg%mJoDEveGloL|5sAKnx{@}P+bNDf$u$CT_;}!=y7VDN}7>N+>h8hModWJ zG`Mxmu)I^r7&jUHCv|wc7nnnJ;bvI$PZ}Ym=_$b6O4>X-fs~zi7T}VeuXq%q!HA zJYeU&o%Q4ShxEn88>cTFWK~Eud=3Ooahb~#Qhc_=v z(GTd&7HCChK^D{~4s@ak_75m}H~;9RSre)w`BrH(!%AYDU8BVgW{HRA*j$}SJ9 z1cL?c%ukcC2&+v;XNhxwk4iM+JSOe`f`8@mfg3CW?W- z-VFceW@X)@Ea8JrLHxB>p6*~u|DJi~_QH0MSgi!@U>CBX*BHO& z1@&Co54yI;3HqVLNFsgFnvWPR#J+McbJO66tJ8PT_Nz3>XvCn;MCr*$%&=#5nDCTO zzM+ttgov^Y@{sGCWRHfrteld8@21?sltU9HpjTp?-P5yJ5_kId8*X#6|5a=$!K!#D zH4vB(B#+ZtQ|fKFHC&a?_LjVN1`rs=Ec}c8i=lnnq!gh-(~25UK>shG?4AQ5mE7Vb z>rhS5=rNo)mEH0+fS)m(&Jz{l|9(iG7=FD!U-vuE!up@-GKV%9urLcZBT@5c^r=Ga zy{zji+8hiO*R=n*{#PI1)A$7+=sc40EwQioRXOpx-+45aSuHVCt>@TtnQ6`ksjxrL zoaR>~7b4P00c-e$`cr3QWZoEmiz`T#g20M7eI4nl2ot%#!u%q*Ea@=#<@Sqh|I@9q zteSePK8&C}+a-iKdu^|4Pn568j2%PH%)G~E7n2?u8(h7y3}mx=6G6LvEXQh_e9WPy zSC7f`!3l^V{_*&!2iq&0{vRX-@#27*+4v(Moz-D#AA`h@`s|~VRyy)`0=t z5;-yiWv{cxmtI}@Z?r@eMHxA>as4k+DxZ5lp=y3Of65aMhNqRS$95g6Z^#AyJM3f= z(wu&qw0Xx0d`E>$ZeYs#w+X_wwzdR;<7Sf@WF8=fYjd!X9JtQH(8D%lV5VO7*UYNc z;a<9xmnqcN%H0E#i8H9@aVV$d0NN#W({o?K;xymn0RyZbM`cL5G*~{7)3`~NLuQlv zz13ASq7X!9XKWKhjZ|7sAP^x=Bs9fgHD;`bztS7z1pie}5$sxF^LwcIz@k9sB?v)S zc!T$*gvC*6*VRnWM&^81w$2uY*@I|8Smba@4*Q7!xJtQeB%nH3P(Fb_QddCFAG1-N z^;yX}<2kA3Zo^MGcI(Y^ToDNHp#l{%*?9i`^|)VqcHi{-l9JLN2H2F%5y+O#KM4;H zpMm}`<-HL4)e^o&V&~wkS=A{#)8`Mr9Z$byO{I^!q%BBLHgWn5mEi-M>ozE1f1yJ^x4)X_CP0*bnQ$;ch<{6HV=`e+ z56PR9vtu`lrsY{m8wzE_#+fwWb$QGnR@YNRp{ zhC``eej9(lbIJiJ-B_@*9l_{@b_5wgQsj%jn0(es~7aHyDX z0sa_hlxy;F9%T71lp;nI!|-br^k?(d=`N90;$tHUX1o6A?|()RLH}B>4jUUA?$VNy zhn6Hu+VEs5p8m`l0UCq!@nB6}( zbyV&u>{~J0?A6UQQ<9Nro=bq_0ccYfCc*h%m+n9>d6&}(9%gnuBNyhJq)pwBuO7U> zdnc1Fy!dyV^!6X7086X3mJO}-wq-wLC}RzJ=r8^re^f+(Y5o0=FFcO|NZ z-wayBFKB;5joO7L%Xd1qcsgG{O}{6#{3 zU?U`7&Vb%q2Ek7{i!vi82ti*M#!j8;{jJh);nyoXQE#W>Pgj`Xz*o;Au2J(>)`%2!gKhN1$e1iNlLSvjrtj1usFa;)GqktLUyICZ!&T8x*HbVVuw(E@D zY}X@gjz{oJe-P*4V%77l2u_99Wj)3r&PkIXNL`_&{XiL4@j+EsxM&8{KIVxE)0l%t zefbA`yr_=jX_3wipBF>|>L4rMhThv1=-<4B;Ou(24qY*g%0Jow{q4AV^*dM>!K74O zUi_$W+Gd|O{Nxh%iH4&dXjvsBy}Aj3V8|hCuJ=PB#kkiRz~)QF#)Q^elI*TJcr`$) zwkGd*l@`E5Hn147Z``;M&!OT76-(*5z3B(b=UW{CA2$GH_?seI3BkF4AqV<@hg%y@bnppu)aY__h4^ zsO8A+wnPzGjsmksINjn)mDfjAFPd7h$7%g^vN2~4d$I8$Fhq3)_)^!+KGUv(SBm4{ zPaNYNS!5l?K-uG0$~`HK*?4$q4IiQZSbw;TC(~-$?dt6fF(4smL%Y7zXs`itLk|A9 zJ{PhOh-`o#MMu_i*!9)K1d;^)q#***39eU(Q?Ef>%N-|r*&SY>3YrnpE6@ZVGpa5E z@=qo<_z@YM4kX`(t0c@P^9ykDh34kwy-BN^K7M6afL|N(Xw@>BM(mU(vR3SvnVIYO z&lQvSldYS#P4`+sN@xkIB-gUs=Ezhs*m@Ha&{@!4WE}8Qw`nwF`uIoJIfZ+F5eMIJ zG?laOhN971b=ka+lMp)Fk4N+}&`jBKrwU#Xkm0k3mLttm*&C;7*Cskp6}F(uirz} z=cQvz+Vgxxc%*6w=IcJRL|@ZS5$Z6M#{>(l$p`JOqqD-!ulwJn7oWBIZ>oCUd7dtO zJoYG{#VZi1%pw!mtbuxJ27l^$VLpWbUTNp%;nYXL-muYlc<_W^-!UNRF1_lJlCO|Sl+o@C2ho4ClI)yGgAEsnkCS_V9w z;Hp1Euv<(wHHH(#6`GuW{9$IZIa- zHLcLK)dV=Wd^>jZn()sE$ZD0U zd{)OxWgqANXPCD*|LX8Z=`0BuFpeC?!AMzG&!|A%!Y^eK8Kw$aZxlRuwwIRvcf@#qtcEV59tghwh%Q77AzZl3KsJP@Yo;f(S zzt^45;eRVzEh20}o?r35u5jc1psix``AKrEnp%ZvqVYrJt0(*R6Ze9#a{IobPpH|& zadMy8Fwv1zY?*Dk3F$ixR>z+ubV(Y3UCrbU{MsTWG7hnyg9Rj`N_Xe`LeHv;$Ep6y z1We(XMr*C*hE_PN(S%dw|B`M<6b%(ot=SQCqpI%6eRkI2i$|ThL0Hp17*)#vg-G&a zCA~v_mJH_fXQvj;iR#U5ad;8}ALd4>*=fYsr|B^uI zLloWlhe03Gi8H++K)*FG6lybvgE}f{14Tc1kpX{!V6xp*lx}m=oBQ>L1@ZpTIe^ui zxZnQn!fE-i ziF{${PdQz_FUpj2DEv0zDO58vv5&CGbIZKY2)de|LV6-`i@A3?{kWC=s|V4#ThulC zzn_|G)rtX;la+_xHto(~^-)CuN&F7v7z)WbIpgY*4JN+?zAgwjr6_v=u1NwpN!&~}eiRsw#b71je7 z$s=CPbUtl9_*Q{SYSzY4fmyY{>#42ZuQV4G^xQ1`|C8gCj1;YZ0_Y{Wx}Ti6oq1!* z&`~r*7J4XY#^JMyU9~D!Dl;VeyvOhOEK(WG=zs!E?!Rk7uTDTn={}~AlW}ajCD-fU z{5?a3M~A3Fqc%X;({nkUBqBuL0Ro9)KRW#|;#!L47AN(unplmePKu1eVkUt=vff$n z-UF3oW{}<`Dt9}$MT(mlSyd>YrH*mT+_ z(|U#SLUJt&uow^yB`KZxrMrVc;LsrM=tBDic zA|E)-kFh>Z{hP0#FsYL(=k|DAg=7RLma}$QH&82s;;9NJFfgD)+6Us%^xF$9KDALnP7Kr`NO75a&L z0$G28!R$rje+G32H7__x#mxAXPcOdaFgBfyd{EUnS-AH57|J;-OYkg;?CCDH$MHpA z^bO#zwJr&3Q(%xZuqUQZRr{TFty&0{bs-x7l71?&K3}UHK58KGegI1 zC99hdr7RrwDThSEVHS}O_EH3g?Xa(rdM(&tS&c)8Jxt?ti3H+k1Ih@~rZkmz|6JIt z)$h3-Bky}&*CusBx9bfB=BUfZQd(JgtnrhUnG*853qq~C4r1F0F}H@jeG05@L`Xy5 z@epWgLT@3szLBHnU$fNxqVvi_lA13J3qKapFTOZm%VQIoVtlqcwReAm$XA3ANyO@Y zQWBcGR~mCF$q8YWsF%64QFB>$62#Uw@9qa^=teMVgrqQx5yht9pu@)=rtt>5fpY36 zQ`c`oj>t!mvke&z4})-QGY_;G*teiJGN%gdsOn`SN1I@;7#~fAl+8HJ-%5ISQ>XW< z7SQbxam13p#_I#FGKm_G&h0x5$*4mq^o1)4w z&?Z{B`~E5cGAKFyK^9AE2Ja2gt<{Of3JBRh&VKxP6WT$s$ai57f|@Ii;W_bHXddGR zg7d9jSRLFrPX6F|Nwa1p!~`Rnqz>>Ijd3=iW5ux@V81De(QFA>Esk;3k^Kq_3$-MA zuP{fw+69IjyD=y}>Ey|D_fFhZJ5E@MQtDie4Z&GJ&*v0zNXw<;7nbEY0=e~BIHgQD z!Qv66DnB68(?nVbb$}(7U44AjT@TS~sQnhDxLrfIalomE3leNDe^yzCG?N3YfB(o$ zgr-$_d`Q_J&*lOk^U=GS83yL6pGTUGdI_3n%(D|~aFE;-;fWg2P8K0nuT zJgqWT7sXO1YK)6x``4AL1ZLNG6&F9-c9Z`erPX9jXys7h)N9tFwzls#V$8W6jwf%3 zF&Py5hh7OLFFCNS=^GWLcSULaLahg%-qSO_)t47`^xQ)s9rBrPG6oZ0k}h`738hbk z64O>#YDQ1c@{cSktOhXWMfmd_NMe>}t zJ2eH}TDicZ=N$~G;5cl+bu*!HTtX7(E5rH(S$ue+Py_Gt7Cd`e%s_tuI@Wg zgk_~S{@m=YiJ3kS2ee~RpV!l`xd5S%^60;Ew$4&QqD!tn1GUb49n>HJzLAs~b1=j- zLe#3wcFoCQEv#e3px~L1JYMySrztZAee%~yQ&SgS#6o+%d3hy-QGETw$&8c9U8}G2 zDk>@}gDlPTkvRdeC}^54ihYdoHrvhiUX4TmO!eiNySi%bXiBo9zdVt|F-QIS?-X#P zsm~PkZa$(!ClQCbO>hZ`Pj4Xdw^vlsb$vLVEgXh93d^v7d7t7?ZI5FZPebZd&-9{? z0gh5DM(k9R3hKjPG zV;uVoP;{tT;1qrDoNn)*#PcXkZF3A7sD>js8lJc7H?nT_ln})IKx4mk_p7A6^EJ_r zdLI>o+$ojl_k$J-U??*;A{)eBz#>H34CTIK`E-RQbBq4X{i?M>itSB^V`MB8Zil0% zRwQ;qYt99sv-Uy&~ePVOZp4Vxb=_9>O3Z_aclg{)sp>?&fgDYisvfVVfO<7VRN zb{MFR?VKG#n1rKEWn3ZtrY^1tBKiz z>Cd5hIM;0-14i#}p=bTdyiTtg+^o=yAu{0E4a%!u;OJ|`*?ge%ZwW{yH7T6{!)dp# z)4`*9ena)|c6zKwAVN1vAj%c(vq7(ic1QV|hl{yUv-sswR^9QD)bjc#_>IX5{`<%J zR&V=5qm3&k5tjARjMVbjCCS~2|;OW0;3#(Gv(_H`V8eW z(j;mbSR0a55)GHwRl?N_t)M{8c1t|@FN2eMgyKS9_ozb=PG)J=IFrgNT{bmIw1E*At2+PZz>Kn>_S#g*fsC6pROMlw<=U zKNp&No<472G_ z25^bYQl+9i@^FY)Z5ESClD{;4B8~^j);CgcG32d-0kvqx6N(*nDWa|U&>hxs0}0r1 z`LDu)y?={546F=uK!(4_9=E+J+gjQAzJulW@BSxIad=3t1MYd$eW72A?mvg+#u!Wr zi_!Mc!m*NLV|eNfz?LuPbXcQ9_IF#oE?s;W+e6c-g> z{(XAPe}NCJYPZShc)63;2%ujvJQFC}Ng#{pkEFMk=y|w~0;#65j(R8(>@N`uGn&(g zDYnU|_oB!}^J)EemN@PXJD25!eS`Sz#)#C+rC2%N^T%+epN4`+E9hRjF;^#$`ufg@|WZ=aq0NQ zIJ?xyb6eKWaTDRmjr<{^ajl26#6|GY33h=gv}dNEVj8)S=yWXh2IHrZFG-f_?i!LG zj`s^-2upSP4W5;W14@8`e^dO*>@duCB%6p?x%F5(OCx+=cqc%qXYB-OkgrTVAjzLsYHv*bLYP}<1#->^(x z3h6U#KGICQB=&FG#dI|28O}m&X%4nqfb6wU)7G!_Ili3)o~+9x6M>r#htHK=eJ|x? zpfb7;1(m8Nr&=)Pe;KnNM}A$t?}JqhJ4~>mITk~Y(!+}Vcl#gSxdgpAaTqBfRQ5nD z_O>y>|NSHmg&2=Y`Ft?K`@Q^G$7C0IMnUlqu)*Y6)cNMBL&cxXR7-}TQby}SKjS2_4csrmJirLK;PbfMF1@I>3m9b$8k zArCE{js!JL9ugA4TVr_hJBf=tres7J2dgwB_bY->Ph@>Rop^5rZS0(G8&!aP8d6>B zp%~`&P!nic*D0XWsEJ{`?r%uPtx!>X*_4?NS@t&Uir!A`)z#HcGj=_sBLNmCVYrdY zrGpA^NRMB>@!<_{*#M+bhcTv_QbW?vGCRjuIEp-S1<(wsN39 zNFUp-q8rWHj_5aje{XTXWmTkWM0Gwd!tjAZ@*okzWJ6wc5_^s6lQ~rcM2g_W=4Jq= zvNa-~J4(XLXx6sGva6YVT}f2wtil^+t=f@*cW(-q0UV$$rUR_-%b?u7F#)cGK9OVQ z8TjGy0rEcx0mQJ=t|fb^{}BjGIX(@Y*e0}l;Vo)X2uhv1{^8ip)-|9C zJn2xeIueewa6S5@NOf<)p^U#wy|m=2H|wm@Dx>zmH44$VMI-}Nf@xt~$U^3Xx}TL+ zG9iW_4Xpnkgp?n@b+X#pJja$luS?TTCAz(??eK>ZPkeg_i2RrIE=a^e6DechLoBM6 z5+~u#aY-^xH}h6(zm|F|6@1&Cap+eB`szP(sI`j1kd-XI=E|Qk7D{CjM=4#~L4eb* zVO~*+or3plS6%>?{!;myphdi_2KS~+QY-cwkLVd z+Gt=sY3HrjmQ9*fNyj*i`azp(=frM!xHlMUhjuke;F2yL{)XTXuR$5rB~Uu(DEo11 zv&KCQp%N+`rVXXhAHOqJF9!F9jQFs$BhK%*3UF8TLq8`V)r!Dypc-~SfPRek+k**y zMjpy_0fq9`+oz9WXQC;uZLeXm)?>63q3-%tZCrwsYIfbM`ri=ayCh( z>gY9#Ym;YOiI<9v6Ww1an2kmPvEw^J>Nm!R*y~+e3Xgp4V-*?pxW1jMV!QibWjH{W` zjX&JRvoAr9Ow%~@0lCmvB+<%ms4`}VsOI$9%|ka^_Cyp+ebZQ2Gj22EL1*R;fgGk=auN zpn?nhko9LCl!>;B;AE^oGSa*>ls_}Qt!UPyh3QV$c3x4{)#p%Q2@4dph0%ro-lpCI z%<+KtBW@ug@oBXA!sHZU?>f*5Yx}5%{S*R1`{ITP+q#T4jjw2~hhgEjI*vxZ6Rx{9+%fdJsRJvJvezVhvpPF-Zu;v!@7%97gJk$t-xH_d{4oK_j(3ix14 z5;$Z;#Q%J+Ze)@8+>owd*Z%kAmAv6zIG%X7uD2%hL0`Xg8M5}Mw|<*02al4~r#$aq znjS(Dql&+((YtUlndtw1oCFm9EXBS zUu!n4;|#4sF&=&JS#^hMM+*W^6LC8Rvu2g$QACTnBIqh5mRWq7cM*Wk&)w08Ecu?( z1=CX(^pS~adYzz*_4Wi^QxAE{Ixlr{FG?W6-bI-{4`*QJT1?R z(qCxtO6z2rK7cmdJ3Y*^1Xa#@>WWOiF%U6!T&Z%3tzY2MUqWctGwwcIm=O7UX#C+} zU?yYVQ>*gzIFqf;d?6ONqg<~cQ;j;g?-*WuCesr7^K%_opZVp#O% zq3YvFe#OntGDfGdGN3-$h33!GBS7wd9=~lmHYqatBhAzcxgYcpPWjJncPkJR7Ftv+ zr@jGy+)^@eT@#~C>)H@z1LtKrbInz)~F^Hi0Mnoo7IU2k-NUO#!HE;HoVJ&eo__tEE?qKZIwDTgf*0mC6@@pvJe_b$v z;6Zroqfc+*{o7lR4Y}h}eoi;XlFfwZ?FGy{lrMvTXym0fjGJo5Q;sTecb%Y*6PJ|y zaqD8cD6E5`%rIhdhlJb_=omgH3;-LqV1NoA#lDnul#11Rrt$nMz#0b zXq1ao3{f71Seyy$5`8%VNgWujBLaWIeMf&Qk2^l|zHng7Hpslk?^;NzxJGwAp)kF0 zFlnVmH3;L?-+#UmEP|8JFl$f%r1@3K<>ms2Pd2 zKM?8)ZDigdgIwV>4PZp4t>ypDt!hGY%JSc;PNV&-Lo_KcCWh1ClvGAv8zM?T>Jh=R z4W2o(yQ{Bhwc}nwyd(Cut9@TVvK=Y!E;Qa@Mw!y7%}#z?{Q17T`=uRoh3IE8&xkzd zBnBJG7S(u@4z4xGJckoI*uI+C+vh)ihEsuLM=UL#Q|?73CW%T{M36&#q%VuiEy?|! z{_JF+!!_wE)vnU%suN-w^5e0gLWD;cD|iqu!TTlR=hdAo?BZ%xR|=zbrS?_xE|>oA zp$o$iQe!6Bc@sL5VfBnbo|pT3ZDJ*@swV%C=CwVHQiG_s%5pm5@atzUh1j@@Bquq2 z5BJuC$+_CYVP`Hq9(xQ)T@`W&6eU2SL+<3mLhR!3E4d`-gp`}`Mjp!U@(kL}0%hk# zOr(%Qzbmb>7b~RwmjxKMJdx{V)DS6&jkxy0S@eQUZ9NV)Z>a;6`+}T&6nSQ#Bz~!y z-MQizN8ZnY`bM0tx{3BICnjQzlo94RIfAy`Ypg6$(gPd2|>gvy>KZ~)A1S1BWjmJmI@pcZUJt4 zUwe=TIQ&lZ5g9yHY8=bEQGfRFTZRe{2xpm*OlM%`KaYu0Y$1!yoKcrebN>WmuJ1;} z!HR*lSd84pam}&$tQ9S!^{Ms9i)KNBGqt4*n9bSE2ZPECBi5~gYYG>Cd@FYQ*490j zCxAkHzNulpJ2sx)jP!?}rP<;B{qNoFt20IPtPd{ur{i#q%1}w_Fkm)V(_R0V>ZsTR zVz+u^EwaE4F8W|S&)L;}W*ZoB@2je+md+Q@vE3j2#z_<-MSWS|Q!wOI#hU^H^3J~F z#bh0n-b_&LxUpfx?rgXcd*X22@H41>M@$O1sRKWG@XjsqW zQzR6!`+>#fO%1<(6Zi17D&KX76h3+bPzrP_v~OtdGCO;~k-?Y)q1@ZlF(YJ1 zS^=l)?Jr=0$c^=W6iT8tO)xAocObS0wPgv-Ng|(5th?29C1=%-rRyChq zUP7n?{U?6|SFh4ipc4Y0c%r67iOPuJgLpd^#$4%N(!5FOY92(=vPlymHf1c@AC*B_ z6JnWiF*V4P6dQ}Ap|@*K)=54Nrevd(DsJbmrD;cLql(n<``ZrN!ICXU*1UZGMgs)p z-}30*$*8k=eQQ_#<`363FgsB~{5wKKvI_D>lTv1jt_K@+gL^+c>4l$tSfXW9SNk-< zc!xE|cbdZSl#ai}$Cc=CJx|)V^w^aq!C<^4la)?Ebkp7_cLB7g&zI=g=7{aP%~IT#sB zyqr#(*0FK+A=sYXC${Mx55h#-SJ1|mF1UpLktaiA{1nyBnrcS!6XL4d;%J94=Uz7B z>rFr_S^Yx8Wrj(3Oprfi^7*Y=X|EXytu=^ z-4^R6^WPGpdvLaJIx{o!>^En=XySY3Oh6X=DTS#1w2{w+*R{Vht01t`V=*{y<2~V) zjpOhu!1Qq!)nPuT#93%+GAB;KwDJyOhBfW9^(L!$n3;RAZDA*yU(MLWSNKfQ;dwT- zDD+ge_ow|iAK@02!G=Xj(Bie4=Cv+;jH@EQgi1~V4$cg@2i}eEQ_cg{@c6&Z9WMoD z2g_|e@T&SKN;KP5hP|!P_fi0mTm+Fz71-Jvm@8kHdp481qHSSp>QKLvs#)3Z^ti|I zcH_BD>chOnoXs{ndj9_Y=EK)yV8&F7ox>{TA(OE}^Iza_3JhRl4DZUf=cUBLG5dp> zNQ1(v*1M>l({?XJuw`IzOZo4Gwule+7A;td@C2E-DmHlY9N=cXDaIC&;uU+2LJt$n znTl=8aJt_kR`LX|h_8F23^ixg`p@Nc8~ToV(XL)6VC2z}L2ANJtv~D{M7h@C+X8Ka zpBz29@5gfYA5`hQ4YT}|qfb=ZG%ng>5DD04A=mT;7)s_L)dnm1iq>cc1nFZb4_~*j z)+s_@ae7Ym0&ljbx;?9kyw5GT?423cOyA9*`Nj8D%N0>bAeQ9R)jp}guyteWHMvxQ zwGtF(Z{iO@8hxvy?E7t+m$@f?e0DCAk@||K2JO9sOOXjwF}r4=^zuufEmz;jX!#>( z0RKbA3=Tt=)pHk20dI`(AwGUf=6>VCJD--cp?TZcJ<}>(JDZ#&^?c(!GN-{_gA;yr zTs`O6ELBC3gB(T!Q;i!$ZTlr+NlYP$qW9Aq>;0KNRTlNEO1V1AUHDOMn>%r&(n`s! z%@Qi4fxjs+d`*q#?Hy(BGE1^dym%LeK@v(^SHRl%G z!BfQWCFO|*UyXic3-bVc%Qe{>W@&WWMjFLOzMk_BeQvic(Uzln35KBi|)~m)$EBs;TmCqLs#hl4w0u&6W ze!Z_9#A5fem!&_}P)tI>FD?B}fAXv?%#Z{jp%BHtjtX0GPK{Cfhj*3_q^>jziJDQY zAu}-@O0Ocr>MIYSxOg)gWak5diAoO4p>V>CSsj9RvoN+6q5c(ECkoZ6O|9Z73#w;f zgmgNNNWSN2;@sVNHNBL<2Vy+vb)rcKu!gTMUs|<0k#le0a`B^H*s5;jWaLu}U$0m6 zq%d+U<)7<#pna@gr+n(1&x+G~5mC{(^Ka|~39IkArEE#OtfN?C*3va~OZ%VcG2Nyp zTY_SjUbr~kVe@*gsVPk9YzdD9_xBR^j zv}`x!L9cR!l%8+k^)%^)@E2_)ovRX_g&PX=??lZfbE^FNl% zOqC*B=Vy?_``yvF+HjsUnU zQ{?Z?jKMRn^aOnI6&PC~PsA(S#6*TdfZ{c=2u$|PH_{5KodDBR5Jo zil(7VBHx4JvO%d#z^P|PxMxRC@Yz764sC*1VdQxvzR8G$c1tdaTJkcHJwh`dp?N!y`CU!q-IP@4#`$@3xzMYs zKL+orQD7M=!M-#w-5!u;$F(M94LXf#EdUCf!u~dqBL0seP%2r_%<#~UC$9Al#miJ# zT|Fp2`TO4|%zVVirn1nO>O9Hd@2u>l(|sIs;@2k+N%wnk0*B_a3V)GW{J-xr@SVy@ zFW|}xs|lekQtxjP@eQ5=xx;J}XkHWZ}V~OV2Q{I7}`&?ZnE-^#( zO|J>ADb2Y$L9HjRi|&sx6fBRBvN8%?HZ5cOl)*<&eRyI$c!c1;c}C$?1P_9@k1Bbx z46NrfN2Kh=S~L9DvjWeY&t_7Quv=pv>N($$ z((u!m$X7FRdA<$UL8;YpD|qGwNvjMgqmEx{Z%@McP{iWVaM<|Z>C5L(%_sGy(d9Yq z6my37!VbK)E{dhfxuztHp_mF&K@G3k1pD%yOb!rQQ z?DmOcL!r)`{Ac0(8-CH|#98H)P4-Jf7%z7^PT4Np>5DRxr}D;5zKZf%?*Bc=RmU2K zx<=KiJ%?)JohE!;C0%o9KM26(1TMrL+7?n`Ux91Gh6QhhC9InN%K9(mDb!B_kc@#| z{n!G$dJKR>41NO(*AGMrrXK2EuDloDxESSb4_kkZ9V<*iZK9tuV{H

A7|xxePi|T%>kXOm&}yRNU_~^ISor+ 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 scoff.png.import b/addons/dialogic/Example Assets/portraits/Antonio/pl5 scoff.png.import new file mode 100644 index 0000000..730a905 --- /dev/null +++ b/addons/dialogic/Example Assets/portraits/Antonio/pl5 scoff.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://675isgfym2tw" +path="res://.godot/imported/pl5 scoff.png-f0b3e5d0a8895f55d2377978a0992a32.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/portraits/Antonio/pl5 scoff.png" +dest_files=["res://.godot/imported/pl5 scoff.png-f0b3e5d0a8895f55d2377978a0992a32.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 shy.png b/addons/dialogic/Example Assets/portraits/Antonio/pl5 shy.png new file mode 100644 index 0000000000000000000000000000000000000000..a131cfaf0511bc6c4eeb07be39a9d93c2d0e8c44 GIT binary patch literal 67080 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png.import b/addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png.import new file mode 100644 index 0000000..273fa00 --- /dev/null +++ b/addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpvtdr1itkbd7" +path="res://.godot/imported/pl5 surprise.png-9f07d67f3c68589bb2cfec738d68b9a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png" +dest_files=["res://.godot/imported/pl5 surprise.png-9f07d67f3c68589bb2cfec738d68b9a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/dialogic/Example Assets/portraits/Antonio/pl5.png b/addons/dialogic/Example Assets/portraits/Antonio/pl5.png new file mode 100644 index 0000000000000000000000000000000000000000..f676f779799e9a9e556416b5a3e9496700f14c6d GIT binary patch literal 65862 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 -YA7Kg!FvT5!5mK- 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 z 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