From 065622718387299f3bf942e1e2b614d2e261cac2 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Mon, 22 Jun 2015 16:47:05 +0800 Subject: [PATCH] HMCL 2.3.2 --- .gitignore | 13 + .nb-gradle-properties | 46 + HMCL/build.gradle | 95 + HMCL/icon.ico | Bin 0 -> 4286 bytes HMCL/image/3J33V83MSXJ6FSO4%WBZR7A.png | Bin 0 -> 586478 bytes HMCL/image/A.jpg | Bin 0 -> 64232 bytes HMCL/image/K0B_H3C~2_PSK_[SB)([))E.png | Bin 0 -> 316165 bytes HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png | Bin 0 -> 254340 bytes HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png | Bin 0 -> 672574 bytes HMCL/image/background.jpg | Bin 0 -> 79635 bytes HMCL/launch4j.xml | 41 + HMCL/proguard.pro | 77 + HMCL/src/main/icon.icns | Bin 0 -> 114786 bytes .../hellominecraft/launcher/Launcher.java | 129 + .../hellominecraft/launcher/Main.java | 126 + .../launcher/launch/DefaultGameLauncher.java | 69 + .../launcher/launch/GameLauncher.java | 191 + .../launcher/launch/GameLauncherRequest.java | 19 + .../launcher/launch/IMinecraftLoader.java | 179 + .../launcher/launch/IMinecraftProvider.java | 63 + .../launcher/launch/LaunchFinisher.java | 103 + .../launcher/launch/LaunchScriptFinisher.java | 38 + .../launch/MinecraftCrashAdvicer.java | 48 + .../launcher/launch/MinecraftLoader.java | 136 + .../launcher/utils/CrashReport.java | 59 + .../launcher/utils/MCUtils.java | 306 ++ .../launcher/utils/assets/AssetsIndex.java | 38 + .../launcher/utils/assets/AssetsLoader.java | 91 + .../utils/assets/AssetsLoaderListener.java | 18 + .../utils/assets/AssetsMojangLoader.java | 99 + .../utils/assets/AssetsMojangOldLoader.java | 61 + .../launcher/utils/assets/AssetsObject.java | 42 + .../launcher/utils/assets/Contents.java | 16 + .../launcher/utils/assets/IAssetsHandler.java | 152 + .../launcher/utils/auth/BestLogin.java | 95 + .../launcher/utils/auth/IAuthenticator.java | 83 + .../launcher/utils/auth/LoginInfo.java | 18 + .../utils/auth/OfflineAuthenticator.java | 55 + .../utils/auth/SkinmeAuthenticator.java | 125 + .../utils/auth/UserProfileProvider.java | 112 + .../utils/auth/YggdrasilAuthenticator.java | 145 + .../download/BMCLAPIDownloadProvider.java | 70 + .../launcher/utils/download/DownloadType.java | 33 + .../utils/download/IDownloadProvider.java | 25 + .../download/MojangDownloadProvider.java | 70 + .../utils/installers/InstallProfile.java | 22 + .../installers/InstallerVersionList.java | 56 + .../InstallerVersionNewerComparator.java | 21 + .../installers/PackMinecraftInstaller.java | 35 + .../installers/forge/ForgeInstaller.java | 103 + .../installers/forge/ForgeOldInstaller.java | 25 + .../utils/installers/forge/Install.java | 23 + .../installers/forge/bmcl/Downloads.java | 16 + .../forge/bmcl/ForgeBMCLVersionList.java | 87 + .../installers/forge/bmcl/ForgeVersion.java | 14 + .../forge/vanilla/MinecraftForgeVersion.java | 17 + .../vanilla/MinecraftForgeVersionList.java | 95 + .../vanilla/MinecraftForgeVersionRoot.java | 19 + .../liteloader/LiteLoaderInstaller.java | 90 + .../liteloader/LiteLoaderMCVersions.java | 16 + .../liteloader/LiteLoaderVersion.java | 17 + .../liteloader/LiteLoaderVersionList.java | 94 + .../liteloader/LiteLoaderVersionsMeta.java | 14 + .../liteloader/LiteLoaderVersionsRoot.java | 17 + .../optifine/OptiFineInstaller.java | 87 + .../installers/optifine/OptiFineVersion.java | 13 + .../bmcl/OptiFineBMCLVersionList.java | 87 + .../vanilla/OptiFineDownloadFormatter.java | 49 + .../optifine/vanilla/OptiFineVersionList.java | 119 + .../launcher/utils/settings/Config.java | 151 + .../launcher/utils/settings/Profile.java | 297 ++ .../launcher/utils/settings/Settings.java | 148 + .../launcher/utils/version/Extract.java | 25 + .../launcher/utils/version/GameDirType.java | 15 + .../utils/version/IMinecraftLibrary.java | 46 + .../version/MinecraftClassicVersion.java | 63 + .../utils/version/MinecraftLibrary.java | 137 + .../utils/version/MinecraftOldLibrary.java | 51 + .../utils/version/MinecraftVersion.java | 113 + .../version/MinecraftVersionManager.java | 306 ++ .../launcher/utils/version/Natives.java | 22 + .../launcher/utils/version/OS.java | 13 + .../launcher/utils/version/Rules.java | 14 + .../launcher/views/DraggableFrame.java | 63 + .../launcher/views/GameSettingsPanel.form | 1073 ++++ .../launcher/views/GameSettingsPanel.java | 1468 ++++++ .../launcher/views/HeaderTab.java | 92 + .../launcher/views/LauncherSettingsPanel.form | 178 + .../launcher/views/LauncherSettingsPanel.java | 223 + .../launcher/views/MainFrame.java | 360 ++ .../launcher/views/MainPagePanel.form | 280 + .../launcher/views/MainPagePanel.java | 540 ++ .../launcher/views/NewProfileWindow.form | 124 + .../launcher/views/NewProfileWindow.java | 150 + .../org/jackhuang/mojang/authlib/Agent.java | 28 + .../mojang/authlib/AuthenticationService.java | 12 + .../authlib/BaseAuthenticationService.java | 5 + .../authlib/BaseUserAuthentication.java | 263 + .../jackhuang/mojang/authlib/GameProfile.java | 72 + .../mojang/authlib/GameProfileRepository.java | 6 + .../authlib/HttpAuthenticationService.java | 153 + .../authlib/HttpUserAuthentication.java | 13 + .../mojang/authlib/ProfileLookupCallback.java | 8 + .../mojang/authlib/UserAuthentication.java | 42 + .../jackhuang/mojang/authlib/UserType.java | 33 + .../exceptions/AuthenticationException.java | 19 + .../AuthenticationUnavailableException.java | 19 + .../InvalidCredentialsException.java | 19 + .../exceptions/UserMigratedException.java | 19 + .../BaseMinecraftSessionService.java | 17 + .../HttpMinecraftSessionService.java | 15 + .../minecraft/MinecraftSessionService.java | 16 + .../mojang/authlib/properties/Property.java | 57 + .../authlib/properties/PropertyMap.java | 79 + .../yggdrasil/ProfileIncompleteException.java | 19 + .../yggdrasil/ProfileNotFoundException.java | 19 + .../YggdrasilAuthenticationService.java | 118 + .../YggdrasilGameProfileRepository.java | 134 + .../YggdrasilMinecraftSessionService.java | 97 + .../YggdrasilUserAuthentication.java | 248 + .../request/AuthenticationRequest.java | 20 + .../request/JoinMinecraftServerRequest.java | 10 + .../yggdrasil/request/RefreshRequest.java | 22 + .../response/AuthenticationResponse.java | 32 + .../HasJoinedMinecraftServerResponse.java | 18 + .../MinecraftProfilePropertiesResponse.java | 23 + .../ProfileSearchResultsResponse.java | 17 + .../yggdrasil/response/RefreshResponse.java | 32 + .../authlib/yggdrasil/response/Response.java | 20 + .../authlib/yggdrasil/response/User.java | 17 + .../util/LegacyPropertyMapSerializer.java | 38 + .../mojang/util/UUIDTypeAdapter.java | 27 + .../hellominecraft/launcher/background.jpg | Bin 0 -> 46864 bytes .../hellominecraft/launcher/close.png | Bin 0 -> 382 bytes .../hellominecraft/launcher/icon.png | Bin 0 -> 5362 bytes .../hellominecraft/launcher/minimize.png | Bin 0 -> 232 bytes HMCLAPI/build.gradle | 19 + .../java/org/jackhuang/hellominecraft/C.java | 45 + .../org/jackhuang/hellominecraft/HMCLog.java | 40 + .../logging/AppenderControl.java | 59 + .../hellominecraft/logging/Configuration.java | 30 + .../hellominecraft/logging/Level.java | 37 + .../hellominecraft/logging/LogEvent.java | 22 + .../logging/LoggingException.java | 19 + .../logging/appender/AbstractAppender.java | 45 + .../logging/appender/ConsoleAppender.java | 78 + .../logging/appender/IAppender.java | 24 + .../appender/OutputStreamAppender.java | 52 + .../logging/layout/AbstractStringLayout.java | 22 + .../logging/layout/DefaultLayout.java | 25 + .../logging/layout/ILayout.java | 22 + .../logging/logger/AbstractLogger.java | 523 ++ .../logging/logger/ILogger.java | 146 + .../hellominecraft/logging/logger/Logger.java | 156 + .../logging/logger/SimpleLogger.java | 130 + .../message/AbstractMessageFactory.java | 24 + .../logging/message/IMessage.java | 20 + .../logging/message/IMessageFactory.java | 19 + .../logging/message/ObjectMessage.java | 64 + .../logging/message/ParameterizedMessage.java | 336 ++ .../message/ParameterizedMessageFactory.java | 20 + .../logging/message/SimpleMessage.java | 69 + .../message/StringFormattedMessage.java | 94 + .../tasks/DoingDoneListener.java | 28 + .../hellominecraft/tasks/ParallelTask.java | 38 + .../tasks/ProgressProvider.java | 19 + .../tasks/ProgressProviderListener.java | 16 + .../jackhuang/hellominecraft/tasks/Task.java | 54 + .../hellominecraft/tasks/TaskInfo.java | 25 + .../hellominecraft/tasks/TaskList.java | 154 + .../hellominecraft/tasks/TaskRunnable.java | 30 + .../tasks/TaskRunnableArg1.java | 47 + .../hellominecraft/tasks/TaskWindow.form | 127 + .../hellominecraft/tasks/TaskWindow.java | 242 + .../communication/DefaultPreviousResult.java | 24 + .../tasks/communication/PreviousResult.java | 17 + .../PreviousResultRegistrator.java | 23 + .../tasks/download/ContentGetAndShowTask.java | 43 + .../tasks/download/DownloadListener.java | 17 + .../tasks/download/FileDownloadTask.java | 247 + .../tasks/download/HTTPGetTask.java | 85 + .../tasks/download/NetException.java | 22 + .../hellominecraft/utils/ArrayUtils.java | 122 + .../hellominecraft/utils/Base64.java | 100 + .../utils/BaseLauncherProfile.java | 21 + .../jackhuang/hellominecraft/utils/Bytes.java | 21 + .../hellominecraft/utils/Charsets.java | 31 + .../hellominecraft/utils/Compressor.java | 183 + .../hellominecraft/utils/DigestUtils.java | 273 + .../utils/DoubleOutputStream.java | 91 + .../jackhuang/hellominecraft/utils/Event.java | 15 + .../hellominecraft/utils/EventHandler.java | 39 + .../hellominecraft/utils/FileUtils.java | 463 ++ .../jackhuang/hellominecraft/utils/Hex.java | 124 + .../hellominecraft/utils/IOUtils.java | 282 ++ .../hellominecraft/utils/JavaProcess.java | 79 + .../hellominecraft/utils/JdkVersion.java | 180 + .../utils/LauncherPrintStream.java | 37 + .../hellominecraft/utils/MD5Utils.java | 43 + .../hellominecraft/utils/MathUtils.java | 43 + .../hellominecraft/utils/MessageBox.java | 114 + .../utils/MinecraftVersionRequest.java | 48 + .../hellominecraft/utils/NetUtils.java | 175 + .../jackhuang/hellominecraft/utils/OS.java | 63 + .../jackhuang/hellominecraft/utils/Pair.java | 20 + .../hellominecraft/utils/ProcessManager.java | 32 + .../hellominecraft/utils/ProcessThread.java | 92 + .../hellominecraft/utils/ReflectUtils.java | 29 + .../hellominecraft/utils/StrUtils.java | 214 + .../hellominecraft/utils/SwingUtils.java | 90 + .../utils/TextComponentOutputStream.java | 54 + .../hellominecraft/utils/UpdateChecker.java | 68 + .../jackhuang/hellominecraft/utils/Utils.java | 179 + .../hellominecraft/utils/Validate.java | 22 + .../hellominecraft/utils/VersionNumber.java | 67 + .../utils/functions/BiFunction.java | 14 + .../utils/functions/Consumer.java | 14 + .../utils/functions/DoneListener0.java | 15 + .../utils/functions/DoneListener0Return.java | 14 + .../utils/functions/DoneListener2.java | 12 + .../utils/functions/DoneListener3.java | 15 + .../utils/functions/FalseDoneListener.java | 19 + .../utils/functions/Function.java | 14 + .../utils/functions/Predicate.java | 14 + .../utils/functions/TrueDoneListener.java | 23 + .../utils/tinystream/CollectionUtils.java | 39 + .../utils/tinystream/Stream.java | 91 + .../version/MinecraftRemoteLatestVersion.java | 15 + .../version/MinecraftRemoteVersion.java | 15 + .../version/MinecraftRemoteVersions.java | 23 + .../hellominecraft/views/AbstractFilter.java | 87 + .../hellominecraft/views/BasicColors.java | 48 + .../views/DropShadowBorder.java | 75 + .../hellominecraft/views/FastBlurFilter.java | 132 + .../hellominecraft/views/LogWindow.form | 168 + .../hellominecraft/views/LogWindow.java | 286 ++ .../hellominecraft/views/Selector.form | 101 + .../hellominecraft/views/Selector.java | 127 + .../hellominecraft/views/TintablePanel.java | 92 + .../hellominecraft/launcher/I18N.properties | 278 + .../launcher/I18N_en_US.properties | 274 + .../launcher/I18N_zh_CN.properties | 276 + .../launcher/I18N_zh_TW.properties | 274 + HMCSM/build.gradle | 90 + HMCSM/proguard.pro | 50 + .../jackhuang/hellominecraft/svrmgr/Main.java | 65 + .../svrmgr/cbplugins/BukkitPlugin.java | 37 + .../svrmgr/cbplugins/Category.java | 14 + .../svrmgr/cbplugins/PluginInfo.java | 18 + .../svrmgr/cbplugins/PluginInformation.java | 15 + .../svrmgr/cbplugins/PluginManager.java | 86 + .../svrmgr/cbplugins/PluginVersion.java | 19 + .../installer/bukkit/BukkitFormatThread.java | 80 + .../installer/bukkit/BukkitVersion.java | 17 + .../installer/cauldron/ForgeFormatThread.java | 97 + .../installer/cauldron/ForgeInstaller.java | 239 + .../installer/cauldron/ForgeVersion.java | 20 + .../svrmgr/installer/cauldron/Install.java | 15 + .../installer/cauldron/InstallProfile.java | 16 + .../installer/cauldron/MinecraftLibrary.java | 29 + .../installer/cauldron/MinecraftVersion.java | 21 + .../svrmgr/server/ScheduleTranslator.java | 71 + .../hellominecraft/svrmgr/server/Server.java | 431 ++ .../svrmgr/server/ServerChecker.java | 35 + .../svrmgr/server/backups/BackupManager.java | 103 + .../download/ServerDownloadPackage.java | 13 + .../server/schedules/AutoBackupSchedule.java | 33 + .../schedules/AutoBroadcastSchedule.java | 29 + .../server/schedules/AutoExecuteSchedule.java | 34 + .../server/schedules/AutoRestartSchedule.java | 28 + .../server/schedules/AutoSaveSchedule.java | 31 + .../svrmgr/server/schedules/AutoSchedule.java | 23 + .../schedules/AutoSendCommandSchedule.java | 24 + .../svrmgr/settings/BannedPlayers.java | 36 + .../hellominecraft/svrmgr/settings/Op.java | 28 + .../svrmgr/settings/PlayerList.java | 113 + .../svrmgr/settings/Schedule.java | 33 + .../svrmgr/settings/ServerProperties.java | 253 + .../svrmgr/settings/Settings.java | 33 + .../svrmgr/settings/SettingsManager.java | 62 + .../svrmgr/settings/WhiteList.java | 28 + .../svrmgr/threads/MonitorThread.java | 56 + .../svrmgr/threads/WaitForThread.java | 45 + .../svrmgr/utils/FolderOpener.java | 45 + .../svrmgr/utils/IMonitorService.java | 20 + .../hellominecraft/svrmgr/utils/IPGet.java | 48 + .../hellominecraft/svrmgr/utils/ModType.java | 86 + .../svrmgr/utils/MonitorInfoBean.java | 121 + .../svrmgr/utils/MonitorServiceImpl.java | 267 + .../svrmgr/utils/Utilities.java | 195 + .../svrmgr/views/CommandsWindow.form | 53 + .../svrmgr/views/CommandsWindow.java | 58 + .../svrmgr/views/InputDialog.form | 147 + .../svrmgr/views/InputDialog.java | 234 + .../svrmgr/views/MainWindow.form | 3484 +++++++++++++ .../svrmgr/views/MainWindow.java | 4498 +++++++++++++++++ .../svrmgr/views/PluginInfoDialog.form | 226 + .../svrmgr/views/PluginInfoDialog.java | 247 + HMCSM/src/main/resources/background.jpg | Bin 0 -> 35491 bytes HMCSM/src/main/resources/icon.icns | Bin 0 -> 114786 bytes HMCSM/src/main/resources/icon.png | Bin 0 -> 5362 bytes HMCSM/src/main/resources/index.html | 16 + HMCSM/src/main/resources/log4j2.xml | 24 + .../VersionSettingsWindow.properties | 48 + .../VersionSettingsWindow_en_US.properties | 46 + .../VersionSettingsWindow_zh_CN.properties | 48 + .../VersionSettingsWindow_zh_TW.properties | 48 + MetroLookAndFeel/build.gradle | 19 + .../lookandfeel/GraphicsUtils.java | 203 + .../HelloMinecraftLookAndFeel.java | 51 + .../lookandfeel/components/ConstomButton.java | 24 + .../lookandfeel/components/IConstomable.java | 16 + .../lookandfeel/painters/ButtonPainter.java | 277 + .../lookandfeel/painters/ProgressPainter.java | 103 + .../painters/TextFieldPainter.java | 104 + .../lookandfeel/ui/ComboBoxUI.java | 277 + .../lookandfeel/ui/ListCellRender.java | 47 + .../lookandfeel/ui/ScrollBarUI.java | 179 + .../lookandfeel/ui/ScrollButton.java | 82 + .../lookandfeel/images/checkbox_off.png | Bin 0 -> 141 bytes .../images/checkbox_off_disabled.png | Bin 0 -> 141 bytes .../lookandfeel/images/checkbox_off_over.png | Bin 0 -> 141 bytes .../images/checkbox_off_pressed.png | Bin 0 -> 143 bytes .../lookandfeel/images/checkbox_on.png | Bin 0 -> 436 bytes .../images/checkbox_on_disabled.png | Bin 0 -> 324 bytes .../lookandfeel/images/checkbox_on_over.png | Bin 0 -> 415 bytes .../images/checkbox_on_pressed.png | Bin 0 -> 327 bytes .../lookandfeel/images/combo_disabled.png | Bin 0 -> 224 bytes .../lookandfeel/images/combo_normal.png | Bin 0 -> 241 bytes .../lookandfeel/images/combo_over.png | Bin 0 -> 230 bytes .../lookandfeel/images/combo_pressed.png | Bin 0 -> 273 bytes .../lookandfeel/images/option_pane_error.png | Bin 0 -> 1561 bytes .../lookandfeel/images/option_pane_info.png | Bin 0 -> 1344 bytes .../images/option_pane_question.png | Bin 0 -> 1401 bytes .../images/option_pane_warning.png | Bin 0 -> 1479 bytes .../lookandfeel/images/radio_btn.png | Bin 0 -> 433 bytes .../images/radio_btn_disabled_normal.png | Bin 0 -> 457 bytes .../images/radio_btn_disabled_selected.png | Bin 0 -> 590 bytes .../lookandfeel/images/radio_btn_over.png | Bin 0 -> 491 bytes .../lookandfeel/images/radio_btn_pressed.png | Bin 0 -> 534 bytes .../lookandfeel/images/radio_btn_selected.png | Bin 0 -> 578 bytes .../images/radio_btn_selected_over.png | Bin 0 -> 632 bytes .../images/radio_btn_selected_pressed.png | Bin 0 -> 664 bytes .../lookandfeel/images/scroll_dec_normal.png | Bin 0 -> 243 bytes .../lookandfeel/images/scroll_dec_over.png | Bin 0 -> 241 bytes .../lookandfeel/images/scroll_dec_pressed.png | Bin 0 -> 243 bytes .../lookandfeel/images/scroll_disabled.png | Bin 0 -> 147 bytes .../lookandfeel/images/scroll_enabled.png | Bin 0 -> 151 bytes .../lookandfeel/images/scroll_inc_normal.png | Bin 0 -> 252 bytes .../lookandfeel/images/scroll_inc_over.png | Bin 0 -> 236 bytes .../lookandfeel/images/scroll_inc_pressed.png | Bin 0 -> 252 bytes .../images/scroll_thumb_normal.png | Bin 0 -> 200 bytes .../lookandfeel/images/scroll_thumb_over.png | Bin 0 -> 200 bytes .../images/scroll_thumb_pressed.png | Bin 0 -> 200 bytes .../hellominecraft/lookandfeel/synth.xml | 424 ++ build.gradle | 24 + common.gradle | 44 + settings.gradle | 20 + 358 files changed, 35670 insertions(+) create mode 100644 .nb-gradle-properties create mode 100644 HMCL/build.gradle create mode 100644 HMCL/icon.ico create mode 100644 HMCL/image/3J33V83MSXJ6FSO4%WBZR7A.png create mode 100644 HMCL/image/A.jpg create mode 100644 HMCL/image/K0B_H3C~2_PSK_[SB)([))E.png create mode 100644 HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png create mode 100644 HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png create mode 100644 HMCL/image/background.jpg create mode 100644 HMCL/launch4j.xml create mode 100644 HMCL/proguard.pro create mode 100644 HMCL/src/main/icon.icns create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncherRequest.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReport.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsIndex.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/Contents.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/BestLogin.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/LoginInfo.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/DownloadType.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallProfile.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionNewerComparator.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeOldInstaller.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/Install.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/Downloads.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderMCVersions.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersion.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsMeta.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsRoot.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineVersionList.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Profile.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Extract.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/GameDirType.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/IMinecraftLibrary.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftClassicVersion.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftLibrary.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftOldLibrary.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersion.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersionManager.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Natives.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/OS.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Rules.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.form create mode 100644 HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/Agent.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/AuthenticationService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseAuthenticationService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseUserAuthentication.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfile.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfileRepository.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpAuthenticationService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpUserAuthentication.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/ProfileLookupCallback.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/UserAuthentication.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/UserType.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationException.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationUnavailableException.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/InvalidCredentialsException.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/UserMigratedException.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/BaseMinecraftSessionService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/HttpMinecraftSessionService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/MinecraftSessionService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/Property.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/PropertyMap.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileIncompleteException.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileNotFoundException.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilAuthenticationService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilUserAuthentication.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/AuthenticationRequest.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/JoinMinecraftServerRequest.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/RefreshRequest.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/AuthenticationResponse.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/HasJoinedMinecraftServerResponse.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/MinecraftProfilePropertiesResponse.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/RefreshResponse.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/Response.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/User.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/util/LegacyPropertyMapSerializer.java create mode 100644 HMCL/src/main/java/org/jackhuang/mojang/util/UUIDTypeAdapter.java create mode 100644 HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/background.jpg create mode 100644 HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/close.png create mode 100644 HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/icon.png create mode 100644 HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/minimize.png create mode 100644 HMCLAPI/build.gradle create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessageFactory.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrator.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Base64.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/BaseLauncherProfile.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Bytes.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Charsets.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DigestUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/FileUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Hex.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/IOUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JavaProcess.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MD5Utils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MinecraftVersionRequest.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/OS.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessManager.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessThread.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/TextComponentOutputStream.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Validate.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0Return.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener2.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener3.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseDoneListener.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueDoneListener.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/CollectionUtils.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersion.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/DropShadowBorder.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.form create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java create mode 100644 HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java create mode 100644 HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties create mode 100644 HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties create mode 100644 HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties create mode 100644 HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties create mode 100644 HMCSM/build.gradle create mode 100644 HMCSM/proguard.pro create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/BukkitPlugin.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/Category.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInformation.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginVersion.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeVersion.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/Install.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/InstallProfile.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ServerChecker.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/download/ServerDownloadPackage.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBackupSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBroadcastSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoExecuteSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSaveSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSendCommandSchedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/BannedPlayers.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Op.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/SettingsManager.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/WhiteList.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/FolderOpener.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorInfoBean.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.form create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.form create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.form create mode 100644 HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java create mode 100644 HMCSM/src/main/resources/background.jpg create mode 100644 HMCSM/src/main/resources/icon.icns create mode 100644 HMCSM/src/main/resources/icon.png create mode 100644 HMCSM/src/main/resources/index.html create mode 100644 HMCSM/src/main/resources/log4j2.xml create mode 100644 HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow.properties create mode 100644 HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_en_US.properties create mode 100644 HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_CN.properties create mode 100644 HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_TW.properties create mode 100644 MetroLookAndFeel/build.gradle create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/GraphicsUtils.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/ConstomButton.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/IConstomable.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ButtonPainter.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/TextFieldPainter.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ComboBoxUI.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollBarUI.java create mode 100644 MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollButton.java create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_disabled.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_disabled.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_disabled.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_normal.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_error.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_info.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_question.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_warning.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_normal.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_selected.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_normal.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_disabled.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_enabled.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_normal.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_normal.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_over.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_pressed.png create mode 100644 MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml create mode 100644 build.gradle create mode 100644 common.gradle create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore index 32858aad3..00eaba66d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,16 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +.gradle +.nb-gradle + +*.map +*.bat +*.log +.mine* + +HMCLAPI/build/ +HMCL/build/ +HMCSM/build/ +MetroLookAndFeel/build/ \ No newline at end of file diff --git a/.nb-gradle-properties b/.nb-gradle-properties new file mode 100644 index 000000000..f6410c777 --- /dev/null +++ b/.nb-gradle-properties @@ -0,0 +1,46 @@ + + + + j2se + 1.8 + 1.8 + + + launch4j + no + + launch4j + + + + + + launch4jpack + no + + launch4jpack + + + + + + publish + no + + clean + build + launch4j + + + + + + + j2se + 1.8 + + + GNU General Public License + huangyuhui + + diff --git a/HMCL/build.gradle b/HMCL/build.gradle new file mode 100644 index 000000000..31c8bcb19 --- /dev/null +++ b/HMCL/build.gradle @@ -0,0 +1,95 @@ +apply plugin: 'launch4j' +apply plugin: 'me.tatarka.retrolambda' + +if (!hasProperty('mainClass')) { + ext.mainClass = 'org.jackhuang.hellominecraft.launcher.Main' +} + +String mavenGroupId = 'HMCL' +String mavenVersion = '2.3.2' +String bundleName = "Hello Minecraft! Launcher" + +group = mavenGroupId +version = mavenVersion + +String mavenArtifactId = name + +buildscript { + repositories { + mavenCentral(); + + dependencies { + classpath 'net.sf.proguard:proguard-gradle:4.10' + classpath 'edu.sc.seis.gradle:launch4j:1.0.6' + classpath 'me.tatarka:gradle-retrolambda:3.1.0' + } + } +} + +configure(install.repositories.mavenInstaller) { + pom.project { + groupId = mavenGroupId + artifactId = mavenArtifactId + version = mavenVersion + } +} + +dependencies { + compile project(":MetroLookAndFeel") + compile project(":HMCLAPI") +} + +retrolambda { + javaVersion = JavaVersion.VERSION_1_7 +} + +jar { + jar.classifier = 'base' + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + + manifest { + attributes 'Created-By' : 'Copyright(c) 2013-2014 huangyuhui.', + 'Main-Class' : mainClass + } +} + +task proguard(type: proguard.gradle.ProGuardTask, dependsOn: jar) { + ext { + def re = jar.classifier + injar = jar.archivePath + jar.classifier = '' + outjar = jar.archivePath + jar.classifier = re + } + + injars injar + outjars outjar + printusage "shrinking_" + version + ".map" + printmapping "obfuscate_" + version + ".map" + + configuration 'proguard.pro' +} + +launch4j { + launch4jCmd = 'D:\\Develop\\Java\\Launch4j\\launch4j.exe' + supportUrl = 'http://www.mcbbs.net/thread-142335-1-1.html' + jreMinVersion = '1.6.0' + + mainClassName = mainClass + icon = new File(project.buildDir, '../icon.ico').absolutePath + version = mavenVersion + '.0' + downloadUrl = 'http://java.com/download' + copyright = "Copyright(c) 2013-2014 huangyuhui." + + jar = new File(project.buildDir, 'libs/' + mavenGroupId + '-' + mavenVersion + '.jar').absolutePath + outfile = mavenGroupId + '-' + mavenVersion + '.exe' + messagesJreVersionError = 'This application requires a Java Runtime Environment installation, or the runtime is corrupted.\n\u6ca1\u6709\u627e\u5230\u004a\u0061\u0076\u0061\u8fd0\u884c\u65f6\uff0c\u8bf7\u4e0d\u8981\u4f7f\u7528\u7eff\u8272\u004a\u0061\u0076\u0061\uff0c\u8bf7\u4f7f\u7528\u5b89\u88c5\u7248\u7684\u004a\u0061\u0076\u0061\uff0c\u70b9\u51fb\u786e\u5b9a\u8fdb\u5165\u004a\u0061\u0076\u0061\u5b89\u88c5\u9875\u9762\u3002' +} + +processResources { + from(sourceSets.main.resources.srcDirs) { + exclude 'icon.icns' + } +} + +build.dependsOn proguard \ No newline at end of file diff --git a/HMCL/icon.ico b/HMCL/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fe7ac703b65263266b6fe864bc89bae4c49bb646 GIT binary patch literal 4286 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ℜr5oZ^;?bHs?EW16;rES9b zL7BY1S`g|(9ry<;`ePoqrB+RbCx&+Z0n_H6MX|j_l<^^lNt}w+(u=H`1Fru+Nt<~c zRP-af=;Yqrvs<-ww|IwMIg9Pir_|kMt(j!pc=;UhD2UNfI)M1G5$5s=M?2=T6yVxl zRWH2ce|>PD>p-dC`EroRl8y9w@=flY@@w90jqsiz{w{uA;^6|e?go8Y!lIbKRCS;q z?Ti)Wh8Nn_dZ(dk-tbQ&JL8FplI&dd^)~&N8%c5V;CI=q(obdDnxON3Umg%zb__qa zbGj^QN9=*L;&kFp6Hj;lY%hb64{wMj3A_?qj??LmNQ?;nHPy1O|Eq*EsKT`^Fy?_v zwEnAaDPcod-+V-QIQSYWI;!KMIEz1U5JjZL1XZgeJ|@*v^J9KS5)YTr!RH*U8ma~J zEy<^6k##Sh!JkDkGCSFYzVTs?R+j9nbsY}+q!28A_sHdh<+Z=l;OAWWi`GPe`=2LQ zKkPcjUsq0L-mrSnt55l~9xCZ}iu7rJ) zMRVNoTkp4WNiX?tVQ3fSMfd^P-^xY7s}?$ckq@rEeLDYWI!DL1YErN@?l@z@^*8*5 zsQ7d5v#-TCg9y=$O`k!yzOwDtq^%<4z|e{SS#9l8{q z1+1<8Gkd@AW>GPAD%9sryLI~Cvc#;1dpE1^Y`I#PoDX40ConawNBVcpe#5Cy0AS!gC)9?-Et| zLY6L`GIo=nS~tCCY?01QaBJ&oR0*zLK#6~}0rp0urc~#n$3q>LfJn2> zU!-Qdu)CiB{3NR=ew35hO8P&1IfuT2?ROe>A)4SQ8_SG|HJUo(n*gFxlaJ+b7Uu3z z{sN|Z<8w>%{duvpzE8m_TQc8ec=>{XrNK;_v%H_QywBzyuHg|5ZPbjaqM{%A9@76k zfZF5KQPg%7`^Ut+I+Qlk-^B4>H_cUj5*lT0i$zJpB zBcwcj(;`DH54~F>DU<230^y7QDKZX^a)p=1rAy78VFTIV^hn8JaW6phJad#c;dT^e zcz)pNm*y2xCa1gOCUj~Q$0@z-()QrSbjkrW>T?RU%L#TemR@~JYP(di)@u@Xrlz=X zPgv@G?Gj0(=>PTzD*HMip>!W z_to(=Pn;-?FI9+eKCkyq)~8I#ZR~9MM%TV$F<)3 zIU1qqFYisXGkQk{3U!3D#=0yL4`=mep6YwN5fDzLDPrWclE0Y}zl0kzroUMqWu+Qm zI8e!GP9G(9x6)F!=YeBntnhk!My#Fy&A>&_6Yzw-4uzZAi z^({GUD0f(xbC;8^p)C5r%~_huk1`S>Qeymy)qZoCDR9a`N)6)S2gGyxj3oj7u(CHm1H9^r>DsO zu61YoC&o4O#j7CXx4A<08)Nj9LF}7hc{2#~F9G-4Y1@C&Bx?_6u8-bNQ_T9O7*nS6;c?jCHvx}MZcZkB zJ#5AIg`YfH>f6wF*#8?s4m5YnE>> zdCE558L0d1_JKeMf7T#yP6tq{S>T-h=JB&muv<>t@k>80x15Zl;ur>I zI-XEB>zp0{OJ6c~kE*c7Iye1yt#Y29T#)qssl|{&oedK6HP)P#3h}3io=$<-8DB9C zTDgwyl=)4=2^nek$N)z5TBczaL}Q-I70swCT1=h27M%$)0>PaL!JRB$Ph&x@DXBw@ zJsIvNogU$=jSMoXQLzr!gB>cV6o)ooT-@J-0Te~4Mg>y6ddK+c9d%W4b5Nwm?Yqr} z^KBu44%g@8dYUa96?>X}g&NB%9puBLc&i*#uCy39DqU&m)OVN*_0&5Y)bz2~8kEYR zR9wUYa*D$vY&?0?yr0S^ejvGpQDYd;GA>(OjvZd!@A5pxrX)P@3eBGSIs>hY2}LWy zDCUQ^r?U?XCA-C{=&^a!lIq{U`$hj9IRNF-R(*Rk{hp7;Pdk3D>(QRxAF^74I7NO4 zm>tFdO2}jS`^e0H#DUob={3&lJ9K0;AAmdtpu_2k+)xv)y-B%Qevd{gyM2$wxdDgv zv}SL5k7=I%6yZ!YQ?l@HWWHvJX54>DF3;9>od*tqnCfoQL@~((XVvDaJi29B`e2AGY3npV7(um+}DbBLlvKh5LZLzI;$>#7s6R%cTfcW~JnbUTp>w;E2IgbS4c0@lX}^ z{0?pGtGJER?Skc6eY*}O?y5!1;aq>}nfX${@>~9W_18AfS9v!jUI$+9yYa*Hq7LBC zr-}8{C$Rv326{-2y@;y5ciG&%*W`0M#vX;%#`CC-)rZsu(%mXCUwvntr)u)(2)%<` z5rdM{?|bHb&KAY8LH|NWu2hHc-O)*V!;Y&ObK^$Fqp5$V>BXzx;m8lkocwmRWrO+A z;L|K(j?cF3-x!XryB>0RI@gue-jj8G9v5U)h=|;HIQewT^NQN#=;a3=fyg-N!SpqBH?nbnn-b0wm1rXP*hkT(7khTZ{VkKaCMy$cY!}%`~&PMD(m|U zjrU!vW3d2a7Hu&;P=bH{^i?GZ?R{67rBCeU+p3y4O)+2Zhvfc4xiN1G3uuQJJFil2 zFkRIR&gvRDbU6OnDgAgLNS^ykw;N_~UC%@7fb-*eq6dGl@ss1?25Pq)n&X!-0E0$C zoZYyOyTK!Mu60oMnohahkjD!MEO0x=qmo>ke^bjsB8# zjq!4oF)W6QBC%6kMkk}N&nU$5yDJm#(C+G7WVpkUw!?Mp(%4eqMd-x6HPMb3iM+%tjzA9C@ zkh?+WKFu=Ns*Jtn%(a&XQmKLlcAYivucS`$r%ke^tpJNRZKdZvTUE56I(i+t(# z+U-kLf!(!pA%-mn*`DuOGOmpXl<-5P7KI$z(&gXq4mS#8xx+y=^)QiKavU!O*Qa0d zjVB)N;~B5bW#eX-x1GXk6NYkUg+<$PEE+iZEGIRlG;bJvXyngjP%LsJC4Q*ne|NHR zyO^FyjI+{G`bzcn5Q3Y|q3(xD%G~g%kMHNKRD<+?)G-#b+7U;j@p(>`+JSmIc<@lF z2-_L2)zmF)-Bk>E!kdt{*cv_3tA_)=MNAb|+THX!7cy*xcDCm8mWp0R%axRj^cG6e z-4C3i^m}&o#=8M$r5zFYGb>~}6|i5`?;-t3@@57DY<oh*?>|b}pgS6c;5<~n+k4YKs=wB9 z$#2+jZrM7flLK?bB+=tLqV|6d<>l8o*JKIDrvJ*+`AIj`}0R6c|k#_1S#Pr0e6IMZuQ~u9)D?I>u_oL!soQH6)nW) zlS>pwq!c(Vh~c56?kvrc!Vy}fO^jr)ZX7ta%5Eu%){wE&&0u3)&x-PZUAcMP9!U-N za`;V9Klz!5WyNa{)HTH#MRx#pwF&hH88g1-=vWP~5`4|UyyiR#IWXo4smKeF2auyJ zUarVO%5BIq)kgm4yf&3|NXHXmirUy_s))xIJO{d18$~Lx7j@8`hq-u_=m&S=>B1$) z9p)F_mgvzIzBAhx*zIMH(Hy4ZpD5T=2V0bWl~-vET6@7(}9 z>6t@#f zXMV{&J_pRv5S7pMt)UAQpeK{lA}xy+M>xCU0^{U+cZQDYY4s}v7=j=)s+wF2N1mC9 z3Ety5(?Np6k%?ye7xG>V?vs3jDZ*Hv0IGm9t-vei&70Y%Ex1Cp3 zTd?vzOkVw5{SEL;j|8&RZnB>p@!QKs)wh>(CIJayr|IW%{J>|Pai73jj%<_anMS?o zh#X3ty(S@%f7|{uedzAG2Ev zT#AM*Rl0LXR+3{QjSXBcQ0l>{fip})Mf}%3FxkGpVx_ueFpxrTo)au~SIhEwT(!%2 zb;3Y?-ZQf9_SEfZ+UWpL^%t(b2jVI469Kf87485n? zHu98R^&h!m-Jf0wJh2m5M`l!gj=EkxqPx1b_bMqJT+o)d{l&^>aR z==14Yc{QKgGJ^G~_~Xz96qdIxrh9kw2U=+(bAoMUJFS$rQaoqD^Ek>Ge_Dz9?_&2` zYa{yeX285AB8_4^FKR*}IH?gm5N2n*jvqSs4S4<)+B<^x=z&dsPmuc3&H3Sua_RVI z3xjvx?OpT&P*G`IUH^G4-nJu!Il%r%?;V|XgX8coB$ksFh?$ zl^kqcM{dV%^I?N%ZiAf9AS(Otzy;J?b6T?pz2^YOV0Urza5L|qgpZGECc7zQyaZMv zr6*OE>YzZ|jB%8Me&fcGPgwcpl27nZl*(Vo2OW9EWn@we)ZLTQ|R+ukEy;+df-2un;xsW z>s!@O6=*|By6b zzoxsPx+8WFmqopZJ^k%PFzd0Lkz8PwC$^Z0fHqrTmfw8P--pTg#T6bb#1}v9K++l{ z{DYVL&TpQ8T&WV)Nrn<)5A`QvE#%hK`r3YR*)(~XSwgv6_}%@^$tX(_PRnWxP*MGU zAJV2;*|Bkmq;JYPJofPoZf7-7)A|P9E4gE8oNVDT#2Zz3a}6u`ecj78N}oaljLC42 z7~cz&LM#0=o;sG&*ZaH-KkYS`YC(C>e)u)&slb<;krz&{(qykyT=d3L-dB0HUYH&k zzto(bzY7+em2X@d=)M+j*^$kBQ*Gr&gCq3FRq7Kq`lV=OC8W)tQ# z)Ph3Fw}ynaI-w&JdLkR|KHyna@RN_wLz=ESgv(%mND$%UKX{x_c zJihIJr>U^n=)CJ`fn@~kCk?ho_n*$6XJQ%(oF5yuSJv@4vMU|q1Msz$2>WWoyzAqy zN1{*-*#Gi+E5EEHVvLuAHG3-;x%e%Voj)Skgr*{~NEzPK2zK-_NAim!CbK zss#8F!7s#_?~T=7Nhxt82)Yx##PQ)Eqwb!$?*9P+U5)ZU9B`)zLLK4PdU zK3`}8!6r-pBCFQ^ZYAtEvTw~w%(V1XuBhGHk}jij%j?|lMusmpI@ zdvqvxQ)MY6^IhDidR9PEniKaxW()@)oF+q)9I&EdwyUVB6mdbcBP9r&^ldIcku;P7 zilmY6X%D>7vLssHp&e4vP%2dprZ0+R9jTPhbR5IUCvoeOeJB#wC$rJO8joS`d0iKL z+bNSIFR*_4XS51d&!A_|(X6}a_33p6;}&2|Xs2SCTh>{#M}oJxdRAE-xP?TU z(E|6zf=dTje7!fQ>c4_Mswe?h~2-)o;Fc7UO8{sm>a3l%8qqrdoinJ z<|tIEWF!|%=k*aX+^n6c=K}e&NPZebJ@tZH_dH$D1!vo6v%S~EsMD?TXM2U=!41iK z!6u)5$@qB_+n)cLZvB?(J4E|QfxUp5ndjSeKw?-yLu-IqAM+QLctrGKAHcDGQk3~P z(QT=*g<4MGWy}#!l8&94$QQg|s$bc0 zA54|yAOCCQ0M_g``6_Qmk>A3jS;0OQ_ErAB(%-&=rT&7L_$A;u`3v&m9_vKs)fkpA zEOZf`-e`cDLt;hY5@?iNLWA3Jb?|6TxgqltPOS!~klL^n#-U2yY&A}AMGIRq4J++U z-JLp0Vb&S|>=H6m9 z3nxOtgRdtdsW|v0ZJDZPL4Cib>(ya3?WtEK3LE;HpNNxpWbOaJ?|c1S>P@t&yD^Y3 z=XOP>b))hs3rE_~U)PmRhOEE(>7K_$_xX=Of7daa+()m^rROQQd8O|Sx((KPkK4s@ zLh*qsbJy}TT{Y(jYV3^PV%yDzUdev8Jcd0#dE!)1J0;}&L?}OkD(6yQhI}<>gdm?5 zDIHd4vQeZAd(@l7|7J`kz`#Py7}ZL(rbnHo{a#9#6ng(|l3Y#S7eeGCT`^coJ_9bk zj{TF(F_8SwoE>Wy7aR_Lx^P;`x+P56i3mpS&|cMk%?e%ZG#}qMrzd8zD<-l_!lH93 zK*Hu2S$hB(+-eVViQZIobzo+biURw`$!4F@4yM6Ux0(jLl?Qg)`t}iEjNIBI3KqT7 zq%h3Tx?D@rph>2#t~DNCM1`zONup9C4?UtnmSN>6T6qz$QREVeY@DV z#@nUs-#um~kZ=#&cRUhXfOkcsRQ`ZL&1=&=?7D|ha&WCj#zX?`yZk zsZ*`9KftV(ctf8m!F5U6a{U4fm7d`cRj?P_ZPc)N~>i1I~_}1FD8QCXD z5@G|xdN~IL*qQVEtk0Ng=QNf?`M!%56Nnu$VjL3qdR}XNk2}8t%`(^5lowjdd;2xpJ)CaY18$@wK!5#&z?o40<~qJ+@CnC$ zhc5fDiAPqPTzC__cXsJa5^`C&ptNmgM zs&*4Zy^+Cc^I!5n3t-*t6x&M-4{}X1qdw6p7h;_v=pyjygc!rAF#&|P_^^s@3E+gRKX96TbzL7&Usf7o@ zAJ8}AK%bcZ(lX3W|BILMh1T5^DuI!QFmJX!szN1d?w5j|b5WUn%ao@TwcGOh)#DJo z3~k)(KBUbV1@xH`Lq{AeQ-H;uv)R&)v0)OhEn=y0*X&XdG4R;q{&zk(uOzgQ!*&-VyfF3fYRE@i~ zf@=(OrL&#|a(W>_hVvYvZ(~oIfdLn{$A|p>IFiR3{O$V%`L}IN4mf8KuYhKaaQys( zT8G{|WA){xAN*PoG0qdAIp@Eb{=_-K#oN9>KNm>u2L7B*(&(kya5YwJ_2$_SbHYo1 z5PD^sb*dmdGhSZcIvIJBB=NH0jo!_AOPMc8{ zY3@dr0$XFP4D1LPkg=WsX}CGh%NpW@Q9Y;*7fn%d;gVj2`>BkIafrhEmFl8Kb9Skj zCAPG@*#c&%ciLEeZ2ILJe^dGD4Ku+?p3fsI+lww`xn9DVE@zH`GK z&btL+(6*Q6empwt>A7Jq#Ygu#M9L-mW18nB8_U0PUJ`Y$tGYRrfo4A#lV|qBCapEi6uf0*!b4!Td#bpX9^IXVRuzqhmgX+?%&C5c5Z2ta_mjSM5VFBvYQhN zRS-SB+_Ba|f@(@XI^C9%aII+X5@p1T#;o8sLMVcj$=EjXkDqs1>igw>nkC7NERYVn zhfkWZL1(U0nc4F?htjyCv<-5tU?K=)<9=iIe5E@7e4Bir4Hagzp~4RF{hcibQmFU8Lkiy6NUZ$n<0*5gBY<@G*NDQvf!7eT6A^4Gl*kA z2v|EC71mr2;P@#Ym40Kv-x~;Nms4ZL}v5uoHO-g;7xEABg^Jf;C$8uyzDvjgLy;de#j9_>plYbEK)j zN2zHGVr7N7-q?FM%gOwJyJ{@d4E-NrJLpW%AYMO6#3}(&z(DA>^FsAVG8NRkN(4? zxls#O8Q@f#(1{OAkbJ#usr>Ifhg-J&irpu&RildS=TrE8YE}q{O*{)Uv`eE?V_%xP zCS$G>CXpGxVW$MIZG$qKV7?$yvuX9?j9F()%JIW=AYX0p>!AKaZA%uPe<_?B&cp~2T+NUhC3PGfbhe!c|F;#QCh{g;#%0hNrka%Qe|yNS2t?e3FRupPg>jD z75%$s98vrRx|-zGNql^UvES+E^4H0%(z&2nrYLI*{j=4r)tr#ZlJw4)!5mQE0=y@Y4bh z#d`(*%4;rjXUN$}nV63e&x~bejbO_uhUjw*Xm~JKac5-^hnwN@`ZPj9lo}pF@Sgw- z;SzAYh+vwj*A@hbFVb{?h+*LQsk~n@ktx^GFx;{F>`YorSGbPFG%4AMQ-mNgr|^4_MM4VJgP&$AJBPk>14^ z&^&%q?~|r@9V>ZgO$6ao7g=koOCv?x7N!V$K9IB+^pgrq6p@4(3)dyf!jFYWdMqnf zVM1BL-pY~S)hyzoxG0>HwSZUZt~shng)!@H!P5f5=fu?;_kt%xFT+C_+ayKxrT^_4P#9r$?maL~lJxnu4HB`zyHfloU1g3GQDJUDv_-@!LwYcQ}_swpc zh25~l=Z*X!(6s;3vpZ7QF#+UMiQ6XOx zXG_x3d{BgYamo*AZ(pLIb0`#=ASy199=9{_Y?0dkoDE zYq`s;(Nj*_%WTSBB3Czo?oV>V6KY^vvVH2%fASr*MWia((Skf0(VIO=ALVG=_MoE8 zu;Sx03JvMK&vh?e4gxmz;M@C3LD4$GiT^W5!6FF;4uzaN&jlH6vv z^Yx#{+h#1e9>Q03^NcA7mby&My0>93X2t5I+wj3z?)`&>5JWMajZ0p^K+Y5AK3AH8 z4Wt2D+_&M+0QuP%+T7Zw`{q#)0`~oOrHEk9FRl*j%Vt5(g;22~=JR<{A5!osfV!^u zN*P#yI32NWk82(9RSWrYfm(yG!j#gQZTW-h4}jRb$2(+l4?E@glfZe6-d5MwiwfyM z;rZZcOc|ATjtESiA`Hz!T2&+9>nOq|kw{lv>q5LDHPQ#%l^xnB3WuM(KZ}`_ojD$4 z$rFVO+`4Wx6MBtw+*ZhBcf}gxM@_H90wM}3bOZhTUXyoMyUfP)sIi62t76yku2Wh? z(v#SDIKKTl**@RA)((4aofBAw#>Z`3dpTt#O)4({W~i>30Y?6s65{HD839tBB=`Qs zIEESdtgV2*XKkF;P4@zSntJXE{jdx}6`0@o1GL}ElayBVy6Ct!0TUEBCw2+Us9Fv ze1k1_;_*FU31uU`@y55l|@+VjGj@GdZdAN9PpqajArB(=5udBeV2`vh}T#yA#9Ugaf0#3 zb0EdvcnDx6q-uX{nvAiv1>lli9DkS5)*bkG7Iy3()dh(G-B%%QlA)>?bh zV06PD;ZT_r|7?W=3HvSIXuv|aLhX3f9JM=%fM*rrqY0r++89r0tRywG%a%px>X}=L z4IWRQ>-$Ft`L9cS1ZAS>xa!c`9MT)>vFgAQ!o3r-M~8koS(Nu85e=sD#Q(4*H zWH80ce!M&*{lh$32AFntYDA(C%m~WIM^B9nNgAM{AlRaqt`_1cvCK?O#;CLR((rau z6Obf~6AuxB71$Kwi-BelS0Q#nv=HKj5rd&!#kJVU=Y=U+cQZW)*f*ES)l$Smq@-%- zhnoe!!W#_a9<2DIOBTrMB)pJ16we*NrpOVD;Lyk(G9hx8vJ~2)N|g*aQTZ~N2hzdF zr-<~ZGqvJ8=~mBnu#uMo0{CVRI>uGI8%w7Oqd0(PHwW?MG@ZLzK5{Uvt8~VGt%bo8(YtHkzaS(*n1Yi%E4Y>BCX*GG+6ZR zp(OFlLcqZ1Ll%Ola7By25q4eAxYxTmUp@kuuaC!rrnLsP^|octCcyPTYln3MTgsGqe?BD=_$0yTW&(&P<1yABG{^#& zGAuiU6#;_=^GW(5pW1Vxn9cRO{Z;F7pt)S#4KWcP+&<`Udc76vJ<;3nx?h|xelLEa zD^LCq4(xty&p5#VF#5SQG~a+F>?Si73V9E%zb;xDG9!?=4;rvLP*B&Q-cdOE32Ves zRWE>8$Q@5=6Vq5BLz+8DMdoUjn!!eW4U9FbE*ne^`1u>!n-C8Y6?QKruo4b?Y)pJ; zjlW@yDw&jpkv?d*X=N#G+_Wk9X9tgUs4zi4Pp@m`Dm>%CXwAu;v)qVYTp5Slill!ZYEJBFsl=;ed_N=3S3@$ zW`KI))R5UW^~`~1W3))=*bn`>k-N)Un6z`-jE8_8X__&uz@zg?!X}!Yg#_B6rBXZf z!x#@cN7k^ha*Sx5S(aHDhrhM*jHD7#%x31V5$hu5XeJatXF*)9i92hC-FCM$v(CRw z?L9EN-;bWT6btq)WKIUg0;-#vDCq-C9X7?_pNmpdj%u49 zqNAEP6xe4X0y|M@WdxKwp3R$?Res%pV&WJlUnv3~2Bk9qU4;BE^wVimFW!xUj56QG z=WAnKwYrYw-Erd|nfw zn9s+6CrvWei>Y;p2Tup5Jy>Cwk(UzWv5Sx3m)%bS;urND$f-`)Pif+JWq7XigTt>q z99plZ>%?H}WE$(et@E8_aY z7+V)XRrZ{iS5nDI8{!`WfxwZuo)v}EA3xI~NoK`t*xxL0`_xace{ASlT#_(J2Qt?n z&1r)a(;sH>j*MCP6^Pm+^3Am~V>WD#iI4rzXh)mMq`G1PqXRB*NivWB{aSEp9eW}D zTA7def3Mp)Dk_*7zd_bEa{IIMcw>~2)Q_i{weSoQupQwIHMKY*EA;2>N9={rr_O1o zO-2lWmNK5Ma(rpZ%veADqZ{aN7<>wXd}{Lw^AI?Z%yDpX9&GoZS0CVD@a3Pdqr~-S z0Jp6SlD)M}B4lqBO}pf|I|05Fo-&U0cE9Y*#n}2UtvqYV_OS8Rpb~$fker>jSsb zljJhM)GR0iY%}Lb3=TBAaij_IK+bkQ;5nESDUuj=Qlq-JQRgKfy? zK@a?;lYX)b-rSLJy{x2XSG0)wZK4!tc<_LFKH>MVBxUf+gRhIgwwcBM9oYiL)%@3$ zAHg1hiHcbVp6d$a*H+W>jD2V5ko&eMaNJFEYpHd*ynMoa3pS!>OFJxts%o z+yReA=xo`D!d~8HRoD>DjV^~W8Ne%@-iN9Hx^m20@ zlHYl%vHIL!+TxtwCer%}ehqMaN!{!{>!Q@mzDdaFSY|iIXD2GT$L=j00 zi^Y(lM2{Y&-0}IF^T12 zUb&;6*Q;Dl__NDf88V|G5cDf2S=As0#pss^m>F&Qnr|me3O3jok1S5gd$;ddDqrjJ zZGL+R&y>t_GI{L+phu^P#P)3-N@=aV%cZt|A5ItxY2I4WA9EI}*RTx62Lfq+l!n)|8@j(}iK_ zNI0(?l8qXk{!cN`c6*9S($?r6PU@Vod&xyq-r^%d_9h9>s)Y8E_+gM%%7=%p$1mU5 zh!o_D5YA5(q$!@gsKi<`uQS^uHsm0@aF6;KC4rv3x&N;;Y{_GH@vsRD&M&9M%fH}a z$Hpj?B`GMy{@rgFU3DSgA7>L`tHuxAoJl%+tQbu5Ti(_FrmIdw)%~5$nfI68m4^gY zBi7P0pIPHvk_2htj(D#j9#iGBzI4fKOl~u;J{}vq#0)!JjC?)^l<&%!64NbC>J!u7 z+kY7o8fELYDk=^FYxlbXRH)_k_4tMG{1tL^17~|H6qu5*GdkXq7j5sE4^hej1FvW{ zW;$8*EBNC*L(kOMZ=odZMFo#3XW5JpTArjG(|UNa+MCgg@ocn_3>%efc8b}NdjG4s zBdp7WDDS6#r{U0PPEhfaDf)>ExXTGEt+StSj2_I5{^UyT@V-Cc6RrK7fMOC9nRpaa zU-1`s>Bvm$UG0xs&f-nJ`rlwQDwh*2E*?u-4G`}dBni-^IaMPV0iDu%(9dRI$~4xo zOy)zH;Z2QnHWAZDyI!LH4eM815_J^DIY>>9H@foyh=zR-d2%AxKH)R@$_q^zL6(?F zCP=gkg?73<)bN;%Hqth&A1wV(HtXkJ`?{nci$m2P_pHRr?|=P31D%IItl0&SCdZvuk0`Yj*}q=;s}e zH%2@WZQU+=0H?h#<)>j0tNUjZV}t!-*5#31j;gI>C+}mcK?G(7)8SEKc4LTBUbu$y ziv3hkVyMO`4p;X4N4Ib_cb4Of$6315N@Bx>ZyH~B8XxJwNsqMD`pVpMaF zM=I5Sl$2BS3eazI9Z;x+0uzR;w7avz?0bf+zy7TTi7H|px+KE10CnWny zTz;%XC`qGkdygkO^86y7tC==*;`I(7QgD_NvANqkk3QAq6ussseI{QucJxMl z-}0vKGUszh>{rO2&}!ko=$biQ>>_v>U>E6=TJWSjFjVmBs;b6+pAX?RkPcJTdN92? z)q>MP#1oaFYDPHAN3;PBu7$~7s+%*0gB1Qku}%Om93N7nI-d-leiCIYrnYsN-Qz>w zr7ob!XiAtbi-eqWgF~wU)||#EkIZ3$qp>C4MB5ThQIz9{gDpIH{|$`Zl|Pdq$ou(_ zkGQiqWBYQ~$?!&_j0?`QD3S`}z?$VuTPDg~XBu`Ifk`GmUPE}acIYCiZ==oC!UxQfnwqeJ*q&Pem2N!ws9>8B)x|7fs&@GIUk#eAUU$W0c_1Ve*k+IugQQ=Coh zHh?I`1@v0xp17lDfB6eHNt^1`HbaVWLK#eIrUCy4x3+5KzVBUAdZW&KhH5xB(gGvyG#C#n~ z*si+A_rEsR|8_Waej$&1rbl=1P03L6+_S2?N$r;Mc)E4$RqPWI?w3W`IPlM$K=3KYcA4n_?n@{> zP9^+pxCpDq&$JJ>j~=fKX<1NX4kdZ8B8J&qM^@g&)B6;f1rZ&!Y5d9E&esLxrwm>6 zaYr-5*Z;69z2F_1A?uhDQrZiUy6+%wZk@j$Nn4+xC0>GZcyxz>|80qL+73`)Q8Uuo z?~ZPIBcWCqxg0<51*P0SjY8Yvj@j)M71#~T2JMzy&HS?ey>hbI!0u1PD1Mmt{kaxv z|CyVUn>J;U`Cr&bXpXJ#UQeP6-B~OFPq4EJ#zZ&m-AekNipy(|}Zi&#pM97)Iu6%6h?kUGW zK?3Lj!_}qXq9lB0pj2Q!0dxpdo|TiDCID$oa6?9FTd4E8Pm`Soshm;|e~rj{?#h)m zLDej!YM725-4|(6(yPf*{yK$C92tUg3R^OEm{KRv(-NR(ob>bLkdi-f+?6>KLE``1 z1d>UNO7!n!AiNJ%SAP1Q4Y1Faf`QCq0-x%19lsrMaKFHOcwF&m@Qt_cmpPXp245(@ zcdG7vr%ze%8PHwDC1L_X1Tg)w26VXibH!jX!7QKScT;0dqkf6lva&cdMMice zUJm|67$}?@Sw2_EIZ!p7x5vxtaYo^hsXF6d=~(aFlE?bu#qz{_?If$|GZLLGMBz$q?TJ_F0+n-LKuHCU)3|>qU3&L* z|1vZBARRnwji-lR+QfMN!7 z)#T^1r8rMg52LaK`bwfmh2p2k~jPFc?EQ9Oiy8fD?)+2nw5MB569U7A;NeM9WAjGOmS}`KZK%e3S-MDYT!c z^W_Oq=a-ol2VlSp$gF{p&)GHkTF6zH_EfmhCVB6e_7)!_E?fF=b?9Ok1hSC6uw~Sp zc#`OFQDfK|R|p28X(hL#u4EXeA4JWzC zVfU2087MPcYzQkJOw|m6FY9#3DgXeI%F_jyB>)39(_r}&VPo>#&|oKh%;Tf-$`}V98})!;WyKnymKti-mIQKPz~CE z5p5_cB4)F5J^A5Hq`zwVyyzhE=Ixesm!u1R()Q%@6R2a963ABCwQUBJi0M=*|KcMj zmMg~!=SvBq%-^&KmS4?CgglG7ib|11r^u4#0Q2n7YSc585yiX3jMh@KEFzf3q&ym4 z5V1B5J+oS1$OL(6d8OeQJ7_gQf>ZsRoJV)<*{!Rtv(bWxP_96^M-1k}tFu)L&?osG zb~h?tja3-R4;k8cyuU7sZZ>|<2NPVCzetlGrG3;b!Dkt>CF8kBHe5YF9doWO;%shm z7XI*Z9sks}^i>bciyr;a(YmHM39a#t4g-R!gjW3YRGtiY_zO34LON5N2s{p^skF63 zx94?m`C0rOm@F|D|8_>U09DOe6PzgEF$-%%odGrzu$VQn)%Z?yl(_T$OiZ_F3ObsQ z9d!fK-hBiK91ET&{z4?AA0_#nzJI(qJ~>H64q5tv$*N3mUbD@A;!vvUI9HY(XI*<> z(F&%6T+USoFdbydNW9TicGHt^Zte}%u3w*#ciGx)VqNv6x|VA+3otW8y6%ifc}zi} zZLdy?o1Iw-Ink-Rf3|aGF69pPMeJ$R@MhSQh|3jrf_1^x130e&nD1?;7lkM#b57k!gX{1?H z;O}Ilh@UxWhrU=CTU3%(A!eIbWywY=IFeE#BrsB&+myqd*28o5&4$}GSD_!yni?+h zQE2IZxh~@3M{Wd(w|93y1Zgr7n(;NPtMe;bNoI3SCeN?4eyMnhf^bs|L7}T zLC3)!gtIHv^8YXLL(;w<=D4$%L{LT8K+B^3P6?OaqklH%9qpX1UJTCj15SHE;qeiT ztC!Xw1Tsk%0VO(dk`rB@*Kzm^hH0@(ZQv{sG)=>J)<8#2Yy_9k0S^QKqhJ2B@DJEa zQXfB{y{GLU_1te!;<{(ofN=2lnXkNWx8h0KE#|P%Kgz6uf8FgzE%YyKg%+S>!-*GK zBb~q&@tk^cca-t2-%!0G>{VL$itvi+o5(W2Drbf-tD|g;-$XOw(vKHkLnADQk4dAM zY9<;X6IBG2@+fYH+(lca{8?*t0H%mG_qY%7H6R>-=LQIq&L(V4X2PUudNP8Wv40tb zh!i@6QyyzA0ww}^N16#gZv-!4StcR$lnwvN3+8}DrABdlp~8Dc@jUL%mdKF&kz~NW zBsxX=s(Yr%+vz%)u$x+v^ef_JrGl4e=We~Q{0t4Y)AkgayFB@+ZY1djOxBXa6JH6{h@*fcN}>MtKOHJ`>vo;GP@o zl9Ff*QCBG6isEXgJN=%3H1eXg*7R^v^eYZ>11G+Bel4n2vd56#q$%;^&NfyOd4c8V z!ruJ1)g1rcgx}n}@I*oBvkA9~gni9Hrj$!nUVx`?u+@pHkAIn;8q0CKfqMlqrUqG- zYPgnsBx)$og^(Y-H- zn$2G%h82IZmyV%OMa=mKc#==6+kRi!h~`WCre~Nx)|KBqfiLi+7rTdsK2G2obC~sQ zy`vF=c8#0xsVTV>eEEGSRN}RZ9EkSQIcNUN+I3Mc+dzlm)lSd{QU5fH!WF%VEymDf zW2v#oG=~wghUk+NTDb!j+FbxO(7Jot&afal(M@T_vO(}YBdvs{d)PdD^|)%-@fhs0 z2(#D5MvYSJ7!5h5p$+r;1LNqv_=tQXX`1YkL4=Li!fnP!nUW!#b#Y9+Ar~o_E578S zx#MUofDs>^uhkv@$P!b-^=VO|_8+&a>lOH|mr$2h?wl&F!MoX)cNd#hSLRpHy&d$p zkj;5TKz?P*pV1F<4CgM#*hQNT}O$BS? zMsxKk9H7FsbQ>9-+sNbV|LC%;fr}!xGv4m@Kg|lL5onfT7t(_6yWzzsCsVx8X$5pY znc@_ae^Mi0GUQ19%p6LhpRgEULuaofX>2yV7pAecL|R{qK-jGAAPKn6PnjWAtnFA# zlfiZC1XQt~`{|s75>XQT7JjwV5moXL*C(GnXOY3T(lf6%K&*H~(zNDVVaJ-i z)BMq6?F&nhv^$KjP;j2@1*)Vo3vp3c@z1M5K*IYVT&6bDcbQS_JDX*cX02+?c#=%l z$T$W>$DykV9)<=qDKVYb;fRJ+TV}5cpZr;waz7m%7127m5}qC5lQp*Y z%~60~)G)=MN7dqk^_*#IWwQ@8jYBE~I>S~Jh&9T03}qn)ic`M@U!qu9a&F_w!tCqT zI6ROO5;^2$J*+73IR4rUnV!00$!n^yc^GjR-MQMv&$oZ#r03BD?f5jJs*qcH-i#gp z55;#>oudokps&2R*PAf(TkxZa$cwBux!&)n+a$>n{l7)xgE@hOxRUDQ8b!!=M%jYj zXU({l$D6Ma$Df#=zoPS=46jQ)akf9zgV6X(ARny>>`{xM7`OP#>Df_Okq!ievLnJZ znT}C6!`ZTWZQvB-P*EyPQAYDgDO`{+P9{Y19~%bMw9nbNXJ|mLJV)9dtjE8rED`=f z>u<2o())dnsPD%>)}Wp_w1yQ%I#qEFg-Eb8Y%6bfS<+@-rbp$UK>P0ldEo+s@v2R% z-+DYbH-wRu2#{;{C^PxLAsYxq)>Zw?Nb3MrOvOkb6ypEO(Avak?voM*&o%GnvWl+o zj>#|N22!s3;hh!*G4?r_0oJ!rl^HK0H3NI@n`KtiX5l7_>NXCp&Qm6dcR# zImcwg(M}=tD%=D@(G_e*uyje$+Q?pmkQ~E1AdNYjnm_UlTSiY<}J~ zGW-Tt%yT1|pU%3W-_)_k6GH4hl7+S5Gqe4$mDQIVA+u|kaMTEXsG8cN#8yIoh~;*u z(rvzK@UukB&qpH2H)OE+IBw(Ce|LS)W2vrI?C#e1X?hip`yCWrR$wqS$+ZBBibAM6 zcNon^pGFxK!zeQl$#eTK7tg)x>`U7a*=+yhmC{1sS+(unwE5J;8CZDGCNQvYq$~l( z@B(z#x3jUq6+h?A-twm8k~O&Dp))lS?G@N5BK#56p$DzL{$ zPC{1(f@0t=@)OmodyDL&#`e(4)@~=c^HqL7g^uVah!-g=68DW;?BU> zB(KQ^3P?6yocC)Nu0jjk!o2;{)s};#OQSXJ)W#Wn`!lukXG4}VptC0qhi?J$C{sXU zsBoywoFleBwC615B3eS#R5%`F-4SNi3Ume*3t$7M1hB6;1G5gnN>4L5-w(ugib|B= zj>L$#k}Q!*uG$P4*a&*$_Xqu2b7i`EO6#)2?SL{V(PlT*q)044t}mIS<3+x%xZjva z$O;zTKG#h27jM7hZ}Z*kQrdLoH_}RZ6YrbSBg-~==dpeX44eM%Gk9*7eW$1=TJV_y zGwjLJ5!iQ^{AE$sE)r(vc}m_LJ#mw$kM7Le;Z z^dL9jLZ>yZW{VRtQO`#9g*vCjM`|=El^I>qH`BwHSQ_h;WL<}?-h500b4;SoqeQQJ z9~U$1OLwdjp;>68iu_B3ejtCk(!@iw?KeA+EWB9NslzZt*mz$_LYm&pa_r$iY&jM$Wn{ z++$@nS{kJmZ#%?g(P;#v>7YxxFt>;MP}XpPthCpC@90h?RKR z%{j`Z)*9J20c;|_U3(C1^-7c+KjdKykju^72+Jg1!o!firHH2OE3*5WdP@7tp>Xg< zyKL3|cW?i#_`Swc9Y)!d6ngO@pSWbn=G;F)6h6u6`r5NR z#(f(J8p|F;a)j;Z((jwB?Z{SyIMU-?rG|N51L?qh=zgw}m^`YFo6nO==uPbHXU-iv zG0JUnlQ%18?nb%WYYz)B-vtwiFihYAZ;Rcg>#nxTxe6Wi$@+InrP)tHG`c^|z#1h~ zWCI^ZdRQHjA`u8Xsbg)|&=|}2k3Nu~&Q4$PF2e>SKe2_okaty%_EUU?$jnH^yL_aA zV~Cje3Z~79?P>|lOpkEV4xewXi?za^oXd~ajR}`sh-1o}WjywwNe!c{N={f8jg9UK zU=0TG-m{u8e%{zGCFhtnZwBvq)@Z${GEB&QYD>Hpi!RBE&A$cPQh6ov%z+%?#XYfY zbF%XE<-mwzdo%9yqM~|#7$PTr6e=~IO~~kS=u`OMdM!ez!zy)N>^ObC@9eo?pBt(s zlwS?-uN%|LGLbVgD1e82AKVBF*}Z$VA$<3S3=<}WO%uSTS(JUWqD3Ff3wW$~7oeIp zHf0$#eo5lkAVPH(4*yz{)AuxCPVI7x`^3%2Q~fNji*8g6O<^G9j*S2GwKBaJoMt#c zx4q_VH`0y`j#&4rAFP|k&BgOOyqDbE(Uf)Bs}Z@k+az*tlS-lYW)qi(=-8={6BQZ=u!_9sAk& zY~SzP&`F;6HC*F|`?2Qy_-fv>LbQjjEj$0n9=p4}0bo$ln!2%s0Zx(y4$+p6{5gfJ z%6bv`0Y=#fViEP^0P?qA%D-}S6(a<3!%vZa<+VO4gjv*mzaKury>Rw6i?a;MgKNZD zALqDv8wXg|&=kxaLw9>_z!zxM*C=oQ%|{)GA_BXy%%>hqQhc}A=)+&?1v8?EB%hYK zmA-rl8#8l_6bdnrrP!Jd1%?bqS%M6<&aY_$l6&nG_#pEF%*M!+vE(ulI6O#4;ERY* z>UCm>GRC%OUPMTccU#8d#*E{y*`SyspJ79LjNH{^mkNTTH~&y?T3KZ0UtGwQo3^TB zAM?0FAMGyQqR7`}hFklX+YfUEygv!M_A=Q{CAzpvCH>?x#fz`2-R+~_w{Yi$9#`); z7IeX9V5!WFUdxlB=M>(wzXG`oj;P-%(&JBji=GWk<+Xe6u9RX@!ozJTPqbzK*NZe-Mo3B^nKN4(Ymh&) z(;G+stZkx_h~1n7!~M-GvMn}8aYNPY3p5_V=!v3Z=W|`hqqZ}gi-eX2D(VMn7WL-} zpQO>iB$M|;)7U;Q{g!yuMAcXaxvAWqE6e?4sM&`{v`%;XZ~QE3dieBpcgV;~rd{4Rr-9eu!^Cg0UA!(>? z@m+ssSq-Jg{7?du3{M*GiN6dPJ9KlcDBxlN>E0fl0?fiH{O}w)rzpG|j6YgGY+u(* zC)<6E-Mv=xwe*Eybo-)^fSr$p^)Lr%2@CuA5?%Z}w$NX2;=)AL#NQjL+&3B?F5fY^ zq5fuS<>~jo8B;4FuD5+VkX7w-Z~pgtplxCNKHcm7gnKM_X{oP$5vB&`!} z=YEc;U&cTJ`)@Xc=qN0k`^|eM5w0u?xk+1Iv;KYm>~mX!_C3)(AW>O0ob*!VXketR zmnPGEz%L5eG;R_v0JKNC{;OP$br}q${l<3sa%-!t4C+8eoStpZQarMYEwSVpN@B7i zCf2S_G4ozOd=gO`;0{T5TzL;l4etmA&K{sMd{p8v#qb>B)#G{=aig1)q>W8GCSdJtVO_2l zU?LCmi8D7ppD?}cP4V$md{qn0?q`2PXHV*nx;zkX&WOJ;7EA0@2ss+#3yE8T#4JJL zj*m^;boK9#*}Hq5hxe|k`s&OkmN+Y!X%G0)8^q12WotO8n3lCDW83FUv*ua|6F!;G z`GKetKKdxC(?ws~4mSN3AUdXpC@&6C&NO)(mENGdT@%dPdlu??&K(djvGPjcD||2m z0r^Ck$4eHrsK@REY%&=u)~arVo1Trn-lEK|Shb|L@szDR0c1rRZL1UnU$@no?utCJXTGsmb4(pCo8UI7IdLHmI1aQNR{& zEHbTjOloXrFuooLpDJ?KW}}0&=Z}cB$B!fClmEsZkW;A8T=zCYP;}j$IcM(gy#0T?2(kiuN6I z(Kn`$Z(uORL%CI!F;Rws3-_%NgS3Ib20}#?vBHfXp6v7hDAHCJc0z;1<&zR!W*K#i zlxy}Y3>oR6WS0?R_WWAXf2kA=89)3H!DOfXc^hgZrPR^fyg-W8G7n%l=aZ9;V34UG zk7M)wa>#oKdl{&bu>@7Vhw1@Uf7;vbbH#C97ZNVpsTs`j_~*@SGhHZu+I6503UM+U)S-XVbX&<=)@yifV3bdUi%)B-wD1$fIk z>6@KEuf3$Yf}^jDJfKvjXT+Xx77E;7`h=0^JFKb;sG4fGm+d+Z({0WD{K@Q+4&6gZ z)`y(O)7J#W>qlMf=XC$P65DTka&cEebs8+hm_{ z--N^F(u70EZ)Z8lLuF0EoOWLa7c#kp@kg7{ap`(DE$_K5sGUP}r|&nuaT@=#gzNb; zm-Pj<`C(4Q%MjNw&^X%DQ}^W}f+bIPNP!da$(dtv6B0M!wFY+UaHE}WNn>zTy2*NU*?)A)I}TjB}v&@{eed~}oH4<1h0%sFrmNm}Xu#laN9u}D#C4f5GRLOwL( z%6rBO<<%GYaBvONYRNcaU27aw;vH9C_`Jt}E8b_q!uouC`?jdSh)G_tkLZz9c-wac zJX-AEKk>07^?;E1cPq)9bh=BXcvwK+%seAuMiQBr1eKO%$;@P5UUub6l86D}x4@uq zNcMmV(%oGXfU5P&*p|pL24xX}p6I=0m?dpq&5AZKOw#$FZX9wA*3M5e0z^v%^SMgQ zm;$3+K@y#x-qOyWY{Mxnd9>78eRI0nW5zze>QA*Y<`G|_Jk+*Rf zUm+*nyHbB|Dpk$uY&_*J=V~EiE636sCPJVBMndC%sW#eul03w#M@W zD0x!jclUKI-R>Q3W0qjK{%vDzCSsxOe*aGQ{Sh1C@zF2yTu8m)`#G$Wfi6 z8F&%p7$vvF%O4SKW4|Tju~vy}L;N7(u$!LBryieH##IBCl&D_SVJC~V8h$w-Vo`A- zb;m)j1p`LpHNkC)Ri$uI_^+h$2$+pos9uW>xhmYi2G|v#lA%{Qru*5ezotZF`PpY{ zak<;8*gc8TI0GnZCwx{UMZ?Du6Sms4MIK7L)H&m@5SnSAfiPk;k~qlM+op|(I)3uN zHC2x#n`jd;?TjNJmS=)RwrE!BxKcNzzK|Oc1B*#>dfV3Y*ct(a%YJN9puo0ZDyyXz zizBaou4@cc7IbKoA4LIR*)s-Q8G+p+oZc9+>18pb$VOT^`tHX$_}5ox#4XfY14Pn{`)O0t@Q{${j=Z=CjR=ANNyf%K zGSD%EBq3v#Hv_<5!<{n$?Ap6k23AQ|SwYQ2o5>+kEMcpvF#^oYm~~JQb4`g7qa2|y zS;hx2_}qNx+GR-DS{J~6c5QbU=g9EFdOS(xJHd@6%-Fv+sP;{8>wX<4H6bBXPUh&z z4NekF?h=7IkYv!}yX)?1_ajdN9f`LQ*|%kAXYdVaI4Q=Nu|2xnQUtFIKhY+i{SHW0 zm@`1U@`Y%|y0`uQ=ia=dQ|Kb7MAXykFW z^zQqZMDFu%UpLKvS%2X*5w{O6831gyGPqa(=H7{LwMzD$L;GVBAPhq=C7a+!I+#C8 zYY(aqRr0kg@}{_7aU!oJ+y?L*o#{@vMK{CwA#drPLUEal7kcZi@~cN~ClC7zQC$Nj zs@6B37NV+uhGbtA-RrTUWpBwm#{A`dXeW&}vnNy-nS1o}Xy0C_ms{Cv_@|L&yqN5S zpDcHL_b}d}$>H3?djco;_%I?X#hmc?k@Qi&ra^g^W0*~K(T?dPPtvssbNg}~mJ4_E z3Zg~pa^*w2W941W=Nl&M%3+X)nI*H=l<#!)#2xv3c8^hJUXucsmYB^9SFC*1^DJ3j zYA8i&beTOrEg$)53CmKvgmd+ikM~hGH@|Q{_YMZxJW~qcd=H87r3`(XAxj_srp+_G z^Cx<9e}}K-K#Po&VFrt6ha=yCIe3{3DJOBTD=jIpv$;ZNV>#GeQOt>SDkkTD;ZQqp zoV@uGh!O%51v>9OP@w!Jy+n~-yFQoan1T`ky&#GHaRa2q=+`_hqF^x@A)Pf>CuWBD zE{uYl9sJ|xbNqaTJ4)U>?tOfn|9dQ~>0?@}F#aOz73x)}NM*!DvUY@NBeH2d`gr4= z3tatQ``oOOzO|(3u+QkLN8FV>-WqX+W!A^AfAMgzXJbO9Vgn(A49BNQUcjDDYv zz_bBp9gW8?$8(7CR+j&m*X=X9J-(7|TCcXiv` zI)^jOn-qe_(?pL`A*NNoys*p_Q3M`{hwkl#s}24u{XbyW*pfx`rnnnf8ge&zI!&JN-bAY=U(SP+u_Eu% zV6* zSrE0=&Cq)(vczSo0JE&FN!UcEOuJD48!CGD_gNODKv{-(4Anz#T914m&g(-B`SsgX zOXxniGapsmwSF@nkWsF^b75tX)Zbu)oz)wC%70v*hfN7RyEWmqyK=@9=R!Pt zr^`%Bq&noxVI3?T4N=DPCx2^t4u3+~{oO3Sn^>`acfUiUDa$rts3rIjZ<(%EuI}s@ zPl@!=qG!tZIuCmDTi2#lJ*CM$U)-m93Firy+To!5Z+xARN@TcEI@RMdui{Vj_NEQ? zgcg3Fz%V|Eu3nyXSNXh|_6H5;<2A!MQ6t4&PyT>yd$SJJE*f;y@YWe+Mlw7zzle;~ zALjshNU^uO_11wr%2Z67qhZXV-K<{{^+YyLyG?-k{3lT-OAxxHN66A#sDBZn(VJ)6 z|0u*-Q*?#spmmL(#td^{ks)zRyr&1i{8mFFRLpSKE|{B-vXGpSohrjJMbBdEJ&!Hv z$}fj5~4V_eKv$dAxI3t+lB$Dw9}Gd-Qh6+hp%`AOk;tMU=0 zTYJgJXK&6dgZGM9g!kU@6L56QU%M8Wcjb#{fsKkB-^*-*(a+4O3#bLBPO*i$ zkd;){-Khk(-PzaTw-@!z&s@RvmhhMRD6G%#iYT%x`GQbs{c~RL-zLtNO!8Y2wRQ1s zv+h!xBJxcurCsbZc0g&6`1$6IWF+Oup;J50m|o3f~t()K?L)A+jn-ojU0#7DrBHjW_j0ArR@Fk^cSgA_Ex2nrO2f1nuP(Z)HCfEX?y+ zY;=R`8h7S9Hj>yj=XlZgBX@t&H4Pupwf6s>?n&C&9Bt)6tjz#PEduaJOpTazkI_Lh zv957onK+n|rA#4Y8Sgl(`1VCcGUP)azBD5G9#i&zz;`PKkKyArV!v6vj3sABWu8KD zLLW58XF1{0d*>w9%Ni|4>LRtnZ6dYr*~Du{xDXVw?qT00ASo&NNYPEdvhb#E;UvzN zwAh0`Cam(3{&4t~%CKN)!lRMyA14c?Q=-4!qs6_cIhH)B@gS<=ibt{6vZwy>tOIkv zQ$9WZpy`J}M?6URapEN?{fwfDc08@kyV{o+ zWg$lB7^xQ^i*~&I)b6COEy>Z~#WkI&hi0x|kQ*ZEt*cY_cx_9vNzXMYlWZZ*>7i1?Hjt9xK87nMPS(f1fqeD-pL^+jkO}B=?FnqK#mb7va z=x0?)4z)eSsV#a{q3rJ8rZXVP??XG^6d9Wwln>MZ@Upa<5TY-py#N)?g5KlR$En+8 z%J^o}FSVTND9sk0Ny-+4?jWg=P0t_BT@PekeU{I<`u!-&)QV>r^~Uq$Z(sWU=l?CI z7-FKI6(-Hq8g^Q&ACv%i+O!r1XK2Vi8{h_TRAKFu?*(SC<<&X8kl6%G)4vx-K97rj zG!+HGtps|k*j*sHdI~trhgGvd|E{_M(>K!n)TUJ@v^#^=4K0mE)>F6^PSLEr(IwZ= z7b}axJ$mQsZ8$`q^i*8+%=TIt;(N_z`5{+I{_1Vdi%*KzPSN`wex#4?4+Gb{;8}fpXy9xnjv@ ziW9OF?|7Ps&Y*O*Q@YF4+Fhr>)@KZV?(n%W#bZ~lfNLR209?r+dsAdaUk>$5qW1Je z@>h-fcC9k+N-sV7o|G+A{qy$cCA&Y&ft6BY4f>x5kYZCQJ#|tvH2O)rqPwH9^6IS< z5j#AU_4_;|{fLe0JP`-i!P%k>C?c8mghSfME9OwF(6k*a+LH43#hszZ5f$O_^Izsa zZFP^k7_q1RW9zF=RQ&UU1kto)Fc@;YuG`6PBdgBiezglWH5bafO@Tlfhs6Gv(e@DV&cFzQ2R| zG-_?wN+rt(WrN$ewm=);q7SDe{uJWvx)&SLbo2SN#ZA)6<)RBFxN8h_d(^m)z{gGs z=UtC{$!c;fy?o|WnU8_1^96Y{M_sv0k!7mV$=8t;QT4G9&YUzUV8+}^b7abfbjMl8 z{DOg?Al0q!WHN~WvLr^ZL_$qZ%*D#pe8YcAKmzX)ybH&Ba@kh6{ikM)BiOhzDu3zT zyp25BC^j}!{=cb#j-M(RfpNXF*XUC@T+(zZnLPx7aBV~$2tkMdWSVtCq%6veYzUvu zfB7gX6XYKNJH))QEOB#PpflJI=61mg<_6@j0na5ls$XVBbxNFYYQn*k@4_-EWDYDM z#X(;m0kk^&Lif0A%fib}Bqwz$r`Y2PPr<2TQ6fWIhZAOR6t{PP)Oy$O5?MP&9CqKtlm|Ape2p|krqxlANqyZQR$z*f`kfYzZBIZZtPBCc%GMgbY4r;9`j2zELv_@`E$1NLI|Jow?hNsF=_>IgItz$? zvtQ1<+`U0_9&CI{(Au1_n}gGo^l>5bAz>zA0j#-SVff}Y`P|CQke?x6i!yKPX#K=@ z)$$iuIl(YL3Q!r%p82=C0Ag$g1J>b}PxxrkX;Bb850#ZTs)ur53}SVpUkA^$Tb{bm z7PswXbvCQz#_pHSneqd{qtu={a4f_jRW?a?_Al74sTk9KZ$MH1pi-}>}?pGbFa(yP^T$-~5hL@h~8dXHhwkweKLrwWmn#(uj|zcg!2-b^c;x^VS+s zQvAj+yh7gGszM%@B~9qKrm=`5S{On5>jS6t8Zx{)dx%Yx-6teQ8lY^^4Lmw(JNLX+ z7DJy-udo-)w3=zyW__u*snH_-Rh~@wFs+Yaf!q09-OjlpmH#64dPj-(6g0Mqzugc- zMw9y|x(z4C&k2mY9z>`Y6sExpxKSMLy(*%X;tXye-C0sv-RlaOg<&1pBT>Gkd_C&-uLqzjjl(1e3MgFeO&p9 zbkDI1iml4gH^!*V6u}*f3yDczRMl2MAVLA^U_0P6uE^i{W1-L_T?Vn6Cv zx3vDl-1jR=gCxAwk}4pll})GK1)Zl z%m~H3B*JR-k9cWYJlWkIYB+yKd;7fRy!|cQ884lgeE1d3pPQ&kQNZN)!XO9xbS{6d z=>`HvP{h`*z!p&s0OfoUe~+x~v$0+>owq&p`a*lf-&rZlACFX(79{N~lj9t>EYNc( zbkMt&ibN*yJF%SLD!JG`S7YU$q25Rj@UWZtQ;1ro{Cu9=mF76IdWv|62{GoX`aC5=H7?IKe zKFQ68q!~l2GavPyk*hytzoje%6l$xp*BtS{+AvN%Dl7Y9&h|CNZZJxmL$=kc_YO_! zIR3G($mdl!)0PKimJ>^v)RV37*Y$S4Aou9Gc~PTz-ja@=5wE^y;pNv06tZ~O@-lfL zn!Ie*2Gj$zdoN|cFI^nU1g;*)%L3FlZ6AP3-*bVvH4$Jnz;LY>u83)jlEKi^=)n3Pi1G7rK9^T-ogJNX0!wKyWE)iBb8niZw;v z?iG_^O;9ZgViLDlG2+cV<>nZJajMhP2ny4q>$)e$=nmsa@jT>lJOgs~xkJujH0u{b z5CR)7 z9&$gRpNAu;^<*JrB+ek2lhRffN-}?S-iP;Ab~lhbfIq7wU&A=;gMWEyIC`Rlzh6 zcm_g~?CJEsKAZIs+(?V`(FaV)I?VPb62)9Sq&4wiM;et(Q&bL=fUDVoVP1;)&L+Hm zU+-LnoqENEB~_sKS_mkemA*k-Ci%W`yb$y1(8tM86{NLf?;BW_PqC91qCQ%(JP?F? zipyJU|M?cj zI?aquF@&{~7|G^%gm0%|15E;i!l{~WVy*c8NLljjG+5F$)0%(`2=syp5U~S-B|fF6 zH5myT>may@ip7z}E5KO-(hxGAMnE_`PQ|QC+TzpY7Xnz_(5%YWA#MaD?x2wK|8aEH zVNJeWm}c}gIyX{MB&3BgMu#A+2oe%XcQeL-NsbbvOGN=`5k!z4f=CMpNKC>XN-7QC z>-Wd|&&I_C+d0p3pL6bW-}fa<+&5}XKmQhZA4V2)+Q=f^Q4;bRef}5d8b_>Q$oB6- zm)@m2eDGuH3jf7-3HxDPx7b@}zhNJ+FnARqHD1M*h3gB{S{m-((HI&0hv@g+i1vix zl3cj8YTQy0Jp2zSeSsiH>#wX@n_}iN>@l+*?rIM(47i01O+t@7-pv0DZ^M}k*3ZhG zLX9=q05)I6!^1{>>ZEJXI^yR|8UEUDAJd!`Ju09R<-LmYUXjn2de}c1M=o{5-sb+g ztAD|z{^nl4Zji)ry%j+>sJbx44k&(du{A~Fd?PzYX2APSmtkCDn3%Vr{Q9B-8=DDz zbVEV`vj&(*0#Xryc1O&Yx>$3 z<%@qC5cwrShrROe6LOQN^(Eau0kEdIUq}$(3?h5FD0^z=S*=?UeXus5xh(i2GmYm} zCNp>`VvcoBpro{~idT5`9_#dz6+Z()o(Jwrl^Qq5pd4pfy!fdM^Q8<zk zt$lqw&R5X(Tu6wzE2hMAF#J+WW@*&2+|!rtld$SM0Ar`AZ@ADp19qT*25N+Glo+5) z7{-ozNAn+roXoxY%pk-unZS0e@3(rcEd|NO%-m~mIY5iP$E-0^(FY%>nfKr3Rth!{ zO4GLZx>phK;(NaEal`oWadR{!?CbTF-k;hX4lU>-mV;1hbzReuwfp^Q|7<=ZER!vC ztacrxj8UUtd^H|#GdmS`jW5MFa;78pOLhUzXKu-wY*WsaYl6fstK!TAQ%*;9qv!bv zc0hN}O2D7DTp&ipE^1;A+gGvAz85Ncr1oxV?OfyiFU)?1;M6kk%gp>7x zkR2>&_(@;yO<@-JEq-Y%Eoq%mHfefZ>kht{H1vZAw)Z_whgV6hG73MadA_S+|a1>n`*tgykxttHp}_~1(m4U-ka3F`p1IBmdj4;12g7^9Mklw!~G zN9w?^TbKo`f(aVs)7vLIq$>k8(K$vctM7&d?NRUKv5ILy za?D*(1ux(L@RQ1rhRWYaI_Peae)$!;Km|AKbl9aPC5 zH6wBOxs=VK1wthhpsV+;e%kEJlaW+p3GgPkLem|eBn0cTyL`lKt24_+80qcE2-E`I z0E^8y%{g_FtG9Bbdyx8r)dUdRH*!ZPlS+QSn%gA!UkFJx{@`-aZy{7|BE!RA6T@dua2AIXgV8Pq z5qR4&)YELwjZZmQEV_1!JqCKV=Bkwj6V$J~ercM!Y4kYKMXC$-IQolS;Qnex9|M#1 zPNqHYxb2sKF08)Rom{+N-R(oc zKJSnDs)_%A{$4@7$@heQSl3-Y*{wmo^;*b?O;4VD{0);I&Ndsp%Ws)({pZ~*HCJ}O zzC5}I{i#d}AXS)+$)=AC_+FfKOR!JY#EV; z@hB$rg9y#b(C}?uyl8kz3VJsjK5`46CsUKa3Tz42LY>8)PJQSiptM$5 zxs*>7b(Dyp1XKnTE~-|AVg5J$e~2sWfz@OONgo;zhufTEN8VOTdNjcSVXMp?2~*!i zrUoP>#2C5%@9mRUiKYhoL@q#7%62^AaDSA8bW2kwj0u8IigvMT&Qb@+6u=O-x*0tA z4KB>!!eaPB;9kSe`S2U9?Vy+6a1X{XdVLAx^VDH1P5HT7aYB5(2AYUF3u&wxNvsn5 zC=}n7FK>m-p1z&|)ZcfHr7zcj7HUw4Q3Bcwp=;*gwSTfQydp-H2q$y=vnC;-XOVe% zhij4my9<0Nd^k-Z5$3Fo%}BT0h%Q8r*b3$;B;N3#cM2T5{i8Q|DM(S}DX+V2eYwXc zT)r7Ek(^ufw++@tHF+e#FY?;2*mpsU021fu`ta<@cQewkOA%{ix-o#IAf(DSPxK^V zS39tfy{?#-eb4zvT%`o~Jz-e3iIOWgOgdV!+pvUfxuyB8%Olq@B_HkYCg2J{#Hv2z zUs2H5(t+Uv-A0Jmk}CJr{{qLoCqlzZ#FD(%_}b|+DghJb3T&!`9aE)icbs@9dW;Vg zLvJYGkqmgW5E<^`Cw+8W>mW=jf8Kq2n|g2FII`BR-|bKGaiuHY&hSgWra%_O;ekEZ z@f-HJ^eaI_pyIP;4(UkYe(rwe&=0;WK5Xf0I&(rx;w1yB`^uSE3+WYLDo1AkqCUHI z?(hvxbdLTx-W&@!e<`1s0+INOt#jOajr*5Er`O8yi};SCmSAoN4<(2rG~;%G;;!E$ z)i=Nm0W2V}QxxuaUnxJQirN35T?pm(2lgTclIGU>&2JiD2@v_a<@(l6t$*6bh3-xO zC2saE;G@y7`tshY>_UbGys3lDUq!1@dl&wkp4}|4rM^hFSQYcB^dp zx0C-O_k;WPruNRPQX1p-?6;=1@wn?sHEHAf;Bi+BZ0)IN3==6I_gvdZuN=oIC4SHE$xvjg(0 zZD{m)SJxnj@ZDLbaaIUBm!_@L5PcTRRve)S;5Q8>=}6Sfe&?YFzqiZHa>tpJXmWFu z#>WxB^R2NL>qmx6-pm3PnBNL!qHT_39?a>&j1leh09}Y(r}{ef=`XPSJpj86Si-oT zMpfP0FHcw^cVvVeA}xIncRC6E@9s}jbrbs9W-ps-`(dGzARjf@A`4H23ytaFjGt7eh!?f zGQIkGpJlhOQ?<|KGygb}$vnwPO+UW(mh0IY>R*0i#nc7i?yb8wSs&E*)OpJol|S^0Irj?JrbXPeL4eYfxk8GXIC&799z4P1uh2{rCouG-gF@!sOFs2V{0WJ^n@9|W{Gh@BuG zIV*c%<=3LGR;&&T3RFu?gUVh!r)Kc_;Qn)4>#C0e>B!Bl(gSw&}Fb*-MxbM++NgG`?JrW_)#{pLCm;8Kv|HW6lGgEld z`p|_Zc`?(nH3=wSp+19;l+=f65UWDtqrd=glHi zZr@c?C*F#-$qk)LKp>6kn#`oAT>^N_G4(nY@vL)gv0iqV^D>na;S9JhMwKC?ZnGUHHFd`?{tHuWKH?2ysP z-;wd`%tTFXZv~=3=?Ddj!><0FzAH8e0|BU@pvL8Y92%E;O7EEgz4Y`>4V6}`5UhVy zNsh9OcprbQ2$-=7tKFt;jM5e(+_9teZ^!m|4H(c$pOkJj=LQ2N}oo*^TBOI^Wxwi-v=<1Fx?htXkn(lqYc5ml)BWVSwcE_p0Q>`%`Z@l9tHELe;a9#qRC0#06+(ux zbW)tca)W+ODbME8oLzBiH{=2=UuR-if`X1lF8_KI*?sRm=%};L_$6e?&~((@0w|Ez z*fv>3M=c%&u!odKp3CO5`BX%m@X>+SMOUcFi7$i^BR;XsB@r%-)IDCBHC+io$&2K+ z5O^SyP)ot}ijd;Ow-=J~pAAjrB?aCDGd3pazBP5$?uT|3nHi`U-&*NvxFBR2^4n0 zBJFVNViK}1BSrY7Q9;?}HG_%lkv#$rRv=btrpKPRG^(A*zi zFz2$su#Sw77!Iff2Iyry&npr+zmZrK#`N-2Z zwTEg$&(k;C@k0gue?^rxJEHwmUu``1^m|6}Jli>Z@mViuev93Ak+~HC?mQ9PmFCe} z&d{fT6(M)c42>vqMs3h>-+c4F?>q=ro4v)vsD@$<09#LFR6mk+Wwq7ag_y^1H2@L* z&6lg;@KWECJYJ8t4FuDNK)W^dLX}UB8r?Mwl%&7rIhaWoV|`?(`DgCp&tnvj11VQ@ zmseW-T{DwyS0c_vNvY_R{n;OF+FB_94U$rV3vzXHy+js^k)=OAr~-jBz&dW z!vBoo}~ z)hzjiYkDJfScTRez`i!+9;fMZ`Dy$V~jq<=_!s+}=yfj5Te_`_Y z`^W_3d)-nw?@Dd_cFZHiDXV*u_EGRZ6||K|eVFPX(gk}S0V5v{8H>o5hZ$$(nrQ@+ zUQ77GU+qC(ym#UY=JHjNWJq+kbD0AfyunmUa=(wXoc&QDLJgu6pQXv36*KKgt3!XN zgBHgc@UV#1FVe%m-CAo{6i3v+gcpADC3{KgTq4lE5GR=gZHHc{d;O$t+=XL!mAJ|3 z<}Rg$8M?W+&5#6HvU)#)+=&+a`1amk`)JJXWD59#OpR+W=iTNb~V(*etD$}~pc>9)ir#Ae8NAUH~u0NDm%WTX39fq2|F3|1`kzsfV`C5;C zr;{0a%ISsyPl^bYKjL#bMOxWB+cNnKH5Teg7qweiDzD zm!XppJJBmmBx$kIsSC8aQU0SDHZ+n(P0gcUDD00(m)*?kKR}W(Q3(v4X_HK%uNQS9>FW=dKcUK$eWcH%hiMnCR+S0GD^Gi9N&G*v2lqts0tnUOAD`%%Wgw& zoJ)c3cK#7U9Ry!@wz2p3XGWC{n8b2L#F@iKA8U^fJ+v^kzv+c|qb9>Ac>Vz0(M$q5 zgU)ELaaa}1aadKH$hM#G5yVM`mdPrQ1n#tt3ckuBtK5=jVW7jkDMt1+I8v+!_sYFu zyBD?EuqaLH@J^R|ue-cA?+b6`@q#Aik#c5OeOA7q=g#n!8$0GSUf;uA*sO@`q*`$6F ztZKqT3?3?n%}aH*-NwwSnZBb%Ucyk9G`k!ZFU!|r)YN9$ZM>HPYtX5zK2)^{nHmoU z*R;GjZR2n;;}pksX!m<7d1L!$F(~1O7jK4?Y4yuV&4%Xi+_aFgo8U+x7epqW^pyfR z)JsKZo?b7I6M!VwZs?C-)h<8+&0F|Q;52tdycpJr42P7PAAobRPCO!ORx6fz(3PJfCW4+2C9% z2{{&s;vdtwQ}Cu{HsyzZL~FcJ`uFA10tV{WpT5}J?>FuUH6h(+B_+IXy`6G={8zd2 z?EeqtP>7K|*MZbft83WN@8^~&kq3V%J5Sc*Ap+lh`S*EzmedrH#8ggHr%+hSQw3s< zGO~DejxIBYZIT9|=ebB}8$h?eYGbWpB%yX+Xt)MO@Ey=FsnB`A5RCrB?0z6uE3id<2-`?9XoahvS5Nl|x0Cnd+v zgk`n@O6m;0#NIo8H-spuFq@)=(LUzh{dl(>a z57fUM_Y6tzH%Ygd4IAhlm19&@TdV)P$c9v>hd+&gHw=8O?|AmL9$K$en$UX6;or{Y z>vYP+rA#8TNE+4OD4zH*ppo2F-i1^7D$v!+joefC(W3fUsJ|0Q+9GEp2w4;TZTy{ zbx%P|=@soXu#X6B|9(^}6zxPk%wZb!hQlczIwJek$%OpHZ z!;>8N)i_BUA!jJ?8ZdrXLdI1xBC}OR?UHwVZ-<=eKWD2K#)F?`LCu-zq(iXp;YM|w z{1ous<%cDh#4;w6c?Bhr=F3YM)a!Hyno0^aR&jaq3}-T=iNcTqSx~7DK$r=BV?rf| zzOIo0pG&(W0onx4%1@k~A|p(u!vSP7J`{!<GA9-23!(oskLFbtSco8P-q1VV_(mv1;;K1dZ2}ZKqG92yM5$HTBkOQ=DtD;K#Y+ zU#T+A6y)0PUcX_>ttQDfZq3sxP~x1+_u%+EioWQ5a;#kIcvC0<@2$-g!x>r0U;1_U zK;n5Pcg@E zvBJF0goOBen@SO|s9e5h>b=8l3F?js_-PWSHryq}efARkM(F2(`uvfBdVo`&(-dN= z9z{L)(x)sia}rJOptUq+xpp&fln+<71HJS9i{LX-y-5LLP!sM|F)DPAq$BfDgLPi4 zadCso;iqTYk)FPIr?@y4Zr;k-P0{Y~2$~tyvD*aFP?b#gg?WE$+Ql708{t|%e_ zVxyLX&!oZfmc-UaK1KAnuInp}-55-$3@4pY)>3Jqovo^4XjkPKOOMqm^K{1x-8dCl%7Th@#<&gO9?qx1V z!>OAhU(9+y``aVcyen8^0^`9qq^5$?<@^$iCL?D><^$66Tu#@T3@36C@r_}AH{VGqJ(q8~Lj<$>@xL{bp(lLqlK-?yWI)v}hi>XFxA-vR}nMrXpt7oXKX z67%TD1CE`gThDjl$H$lN*(rFxcl8~8?^-3cJnW3{Vio!x{g|FSBV@;Z_18V9Ic_ZS zf(!slj=egP(Q)2sU!5^$bt12Ph_70@{-6#EdIqt{G|I9zM&^U1PzShQh zP^HD6xNFi#*NYqF0o*H+L+H3MrSKrQ63rPobAvP@`BpU7_TTXbtqAA&=-uqut=f+! zK9r0g7Nw8Y4_>ww-bW~Mb~lpYYpcnG*i^+3e?tcy)2(@e!!k;Ig03jAdE|YmO*oSy zL@-ExcGSAt&@yRzl+xn%eeH_{hGyyS+E>E<)Yx07cOvKxyFD@cV8{iuiP|ZOe)yP+ z%?+~1g&5#K+c}eFD*MjO0!^2_;G)DgzvwNDlgH#sx;6Dx)Piz$4Ql#-kI8%PCn@rN z@c)+w6x>Ri4@{@cU&+p0rxD_1$ZcjnrUMCCsv*Gf1KcTOY}`nxu^KMRfOI zF6NvLODtYCZEi(rUZ3mxvolUHk%!F&xZ2O=8DZ;EsSf030x z+JIQfrB}^UqGlvHa>t+D0w2(AJs*eDxkD=VhmIsEE^Gx6*&;SLr17$Jvg(D-Mv-HT98<$`7hW#jeGie5u1IbaAzJ7_9wb3OnnpXW7MA{awaH-3Gn%7BLGnAWl9G&sPZXU z<#Y0&qWe|9w)^(uDLbOW3KZZ>yHCl%*VUqrFLPuxI@XDXlaW`?DGfT$M&%_@ol)^2 zJ9n*kWF^n+e{>!2!geR@ zxiQI@jLUfc5I8m9tf;V#bK5D6*%E1Ie^U{)E^b0ErB!IppzEh%CuHjjeF@YyDfVWO z6v9ppr41Lezp7)4(#6!bl}P5cYL`1Ag$IMB*Omr@B?N6G$oh&%T;A(S28Rwf<+784 z$TJpsu%3QR6a+S|0+3(J2i)j(tmlSUgR~H9hIWxCkB!dBvG7!YPCZp!9$DWEA0d$( z8^MGn#ce&dS=b1DmRtYH?Kl4MrX8R*e~n}X;37fFciPaz(WbGM;@CzugGM%|$TYF~>)I?j5pXAADpQOO;5lyRGbhdwZT&4r?R$nxOor;^NWvLzeB|p$0 z@8a>!lOkvE8F0_J@TVCGn`&~GRM5~>z-9UNpTviUOrx;fx*}EDFNKg$nIT?B{{6b~ z;PZg7y^Zv{wP}nR)n18WDmHdDVPidi$=O|N3A%6>uL`S~Zb#J@g3i(X%*z||WVit| zs3q1Z4v8vC1Fdgx?cZ!lF&WFy4Ay{xlmP6765c=*mg-_>5a4nd#Ou#UtOB_}3!m(L z1%YNx@HKD>@B_%Fc?=mUyk`1srj@W*RKXKMpQn3MI=^xk+0clnl_o3npt^MUW}5xK zKGBGZiMPKCU!r(5Jdc)I`;z;k%(%y^lMtRt!60 zzI?V8(!l3c5YKjudy&NVUyuKO`zpc_Hr!26l+>|beVni8Dbe$QNZBbr2%^i}2<;yl z{yNYR`q>Mp+vkSeJh_1$HUxfK{ik+KOPb@N4Gp{+7*GTL5iOJr?ph;U8QPD*GP)o) zmd8Ch1JVm}m|l9mEcPAe{Z;Zz!vUlFvKPe#G);M>YZKRqjSx6ce6WSH`;3oiV9($zuZd!SM(yUypp|-dKm#2{aIDdnIR3) z3oRssj0SE|p0>1e{zmFdxzPSu%$QkCb1|LXmI}4ku!rc+4RDAPSLTExE{)OgWenM0 z8o7qgy2HPtJp;3yvMR(73MzW_Lz);V6R2l!=7Z$N^4sT`exi*m-t!{66A{Z<(}|@$ zj#ysa#HvWHiJxJF*Bdkwn zm&)&Xugq5({=VoX<0~{1$1o1BRT%Y*@V$8uJ&LRh9B5>)6-262@x{Ve1QF-S*TfJB z%Z{6hWI{;i<6B5)c=ErwR3)6|y?lc*ZNECk$%`X(G3bJcmQk|Dp4 z&E3DCbjV8=Y0nPbZ!i74lc3PW+uk8Q;ZL;8ATkFEv5iS=#!u^sz1HF4{a~PRcla&r zgq1<*&LVc=)XJi{c?}hDjjR3r`0Qe8{10Wd2v?r&@G}Nm#MM8j2eS+H9ot(ws~g#; z(&&tdJM!#wI_PD3A%ny|fe7w&Mt%0sc3T(_#XV-k1}#t-^SQ@ zXr?su4GJ+QF(~B19-QuL6+A0{)^QHb%GDE57s~ZY>>ebNdWaVfabIzjl&X*!Nrx7bHDktz)s|F1^!j8RAU9U@z&73wR$DyOblbC zys<#nj(i$pk?!=ArTq1U@<9;HY4@l3@XJs!WXf@<$3%1u2rp5+6I-9Wc_=JN1!t8D zF;xhn8x-+b6=jF_(jy3($lsz?cXud-TBHTbPUML#a==BWh1vr5(48$;_+Yd~Altjs zX6PI5VLFkKE8y5#6X>?@(`C9r5RiBuM-5}6y0?6B%8b@QQlY1e$F6?_-nnzEJZA>y z8f#hI@|kezlMPW;s=|5M2z)Qlj0;05cKXrmrMkg=RLH|7p{raV^>P#Z3oV0j{#Wo# zaBiwrU?hFdgc%mb>nJG68^1ftff^j-S5sgd-=hJg-$qy{(3s7!^!=CwZqr6Vr}89Q zZ0=`Mw2>fjR{k3>yE1xar|%$vI6f&!!^g;@F7KN%e>xc}?BNp^Dku)(#i(qf2fh@X18$jGgpQf6qraE}*x$x0LUSI zR-ub|{@i8`REU|el@GKab>AKnrF*Vog8hs-< zIdaC%n2ejQPB|&}Bhf1dN51=~6{jQFrNbeY&Hh6uic_H-se-UBoH+GyhZ&OaRr*Llm7B?~$!r1cHDf_;f2)6t4l&@xiMt>#1TS)(o z_s{;$`uID>vvkdx8<@y!i*{RGqX~X*P(LR|cCSdV{+lJ{L*z|Hnt)}NdsOMz@ZE{| zmE6Td{3-;LZVWGXO8D)9f4K9G3PYouOyj&-du}uyNR{LYeR#krS}=-OdWW4or9@52 zNW9$=EkM8XEG&2CDAP6JuXG1@$6te3+(0j5NU$Oq9dvIA=HU0I}D(pUvh`tj-> z@9BevU%+4I#a217_3U$khTXuyp7~@hwB66mfe#_;3~qNwE58k^E3Fp`Xp z82ihNdYeBQhQCGQ2SJ)TGh(4`MVOEQ{mc=~%o_9EQJ_T~a@|AglJ!mYm0_2AO9BMg z>+X%rD3o)0SiAB7&re(;TSe&|z0F&!y}^h?&S3DFOo@XpS9)=H^r}9{22JnF1+Kk3 z0<|p7`U>Hn#(8K14RX(e?&ygZ*k)d;i9jI^xYfA3lGHy;d(+m0{V_e*<4{sZV2Tqg z{s;W}5T{2#TNF^1-MyU;Z6QU*^Enw)p@7y%C7Xb_GSeeQ^}IYq{`~DVNfQp75HXuS zo=ixrj!gd~hd8&epfV9jghsj_p!ip zL!^NWf7ebw18Y9hQ5|6iV4v^mjz=2N$1AK$T`|Thd&2R9))YJ%QC@=I$HsPyO_BST z7hhQfj8ZsGM#%&npg7Z%j)(hClOZC~djn)b@;>&fh9;75mLJVi$(>$QNVO(c^1)X6HQnGUS3&L!FR6b@6RzRejdWKJ`wh_u=}WcQGfz{mc(9 zow#^S9{z2?d5d7F_WsIoLw~m+Sq{@rNnn#0-du+Rt?G9xY@^zTQha{1u>6Fv5uK{) zMEsIM9Hvv4hr10u|Li|^^(by$AZKH?WR&$n7mo#Ij%(T3c5nD-0Nwd?4KBDgkoD(f zj|r+ltjgP>GY?%39Wb36YS3?A5R)hp0SWHd`cRUxlf`A>>1DJK`@JxO8aMW_)Z^K8 zp>A(>nzu^Y4+@$ns285ku8DU?$8sgc&-tbal0Y_9mrE8C$5tJ2!y^3Eg_?n%)tnx& z6Pn&J5S8t;ftvz(ZHZ^e}_6FCYX?U0_q6Rb^p(g zwxdQf)UA+0V@)WO^V&+0I*I+d{;n+5a!y#LmsZD?H}2@}U*t@O>E({HtMD=QZJc&u z?bBYDy57jXM{H$<30gMlkCReADdXmR9YzJam~*~7YvF$jX;eYH(BR|K{jB~K1isCT zb{9o7%hStGQR&H3=}mD4HZ0)44M2jjlCx0p9A+U=l`~qE_Dbr!f_(akm!npXK_TDvYmE37QSgo8ezXLXt{rbNn_Ah!C&V5k*iuFHO53HzAf}Qk zA@gn}Fw4+WE6=lfQ^;Cvn=rL;7b^m;vbsyV2< zteU$v>cgg*GJ0u6^N^8gb)c3m^kAKIsUr**;mq)PBW{#*4t&vw ziYtk+=hw(McXP-5VUQCNSgyd_1QCIx)HnwP<=imUrs8H zD~GU3ndh3$XfS!W-YgW}0=@w`8&J9rmCID7_|3+lDW~jifhmV?)8PM-0 zVxG>C@5x^;SJevu7f(}o{SuX(cQca>WX#F3o|UQjeZX|X_e93zenisBe_w9+ueH&r zjO=xPz^J?YrI(IK*(E2r5I-31-<+e=-+2#;ItmjCkX%Fd1-YZ@TKmR^eXJe(?2nSI(dHu z3(n(5RRh2sDOt;I^k}zD@-Ji5(cu~=Dj(9(STC)F6k`Id7ij0Ur`n}xXx{Rg^NM2v zIkglc;;xtL3RQ9s)nu#q1g!9=k1D)%2ptf>*pk9p`+9 zs}Nh@ozO%0A3fMantWDNTISuxNwd3&H4`dCo;ux8;C{a2OSG1U23jbt5T3YZ`!1V} zPo@2Q$~g5lq&!0bR&0y~iT2IHnPGNi@jj~El=QOTB!-{;i+JtgW zq-)(mtEcAmr9q-W1k8xs|AZ7k*7Z-);~%Hj`(89?uh-ogSZEo{dq3cTdXtarv+{Jp zlDQoA+}c0iX@e zVCq~+Osw0X;%xB5s2rv3ijVxT{qx@@a%j(^l$WA1)P(tacrU&N;p~!dI@e3R|55>z z)v|+ys6+cmY^+4O3<@IqC;?2xN3X8q-Em{?ilgJNE(wv*jT%eR7n*{f#L%0e>FsoM zq)GLhzCou_4{)k7@l{D?pyacUw;z8D))0P6V==qQ75~SCxPPLfOY>GmUrZgO#-sM! z_b|I>Nh>MtH+1_TrJK)zmr{2|KCl6BRUoB2CL#zUPE+#}(yu%=f(e#QdZy4W4!!4~XOEM(u@9onRJ z_)cD2#=exGKA%LN=~r9mxI3F6DToRUyJ~M$RSz2M4gV%{(!F`ZR!I6j4e!iAwb8gE zCiM~Yul6ky!sOyX;e`}1!x?PwOn15%+O;9&UnlW%B@wXNieay&K?ul)?`9q^2*Gv zy*=e?9SvgkA{}PGGI-h7>U+ zcW?E+xq|drKnZC5Va?p|09zjyQlz#8#=cX~3~Q1^yxR@M_Wzfj+U7XY^Jg$`1L5-b zwHWH%GkfP3Z@}o3!mh+_V9NjAm$#_N+Vs{tY~F&(I|I2D@gXNtC)iURhfaf@OOhf^ zgx*=hHwrlI?4I7=J=Xdo;gVoAL1b`fhD=Qn3%{zByXLz=P-{fy4e1B}Bk8>3seZga zZoAfXuf5%S30c{DT-OYdrje~ABP%YheQ`4{J|QC+MNwuV^SV}1R*5q1MX1Cz;@ZD= z-`^h|*S&x6*ZbVpIp_6yoE?k=ls_6a0IRIE1H?+fwVOz8DvZ3SQKm*aR`oQ zZKvlZztE!dao4?4Bo!FCCL*+Qzx>aLb7)C-*6HxFA}B;~&e7~{@_qYE*H`S2VNu8m zc+Kj#RRz_vDWn6c{YnbI%$0^=c| zNsm7>#FvTEYDa_4>m*TfpcWsbAr9*PCKgMG|1MRP1!&V>`YkBgtRT^_B$D&)lapiv z;K32~&K_%Fzdh;G_jOd_`5mUl4=lK>ELg`f57yk)2tUpqbpTxlO}HhdF#L9YX1|Fb zuG(Cw4bOA$w33|CHX$_;2WrDp`!u?FMABuG%!5_+u6`%oUSlw<5H@h=q`coqbltcJ zphtTz#6nIPt4KGM7#5D z;*K9f4!XG{+Pr?w>PCT%M~o;F%&;MWIBySOkv?q-_*&c`KS6F!27Ty4xvERB{mo>% zz~&NZh<=<{$Hj*ef(E= zwvS;9Is?$}IlYOCOWt4u8NHa3A0^7&G41za4w4>15x3HhsY_1ae~-R;TJ~mvy&Lv@ zKH8Tl=l*<*4=t1pi#edX(2X&20{ks|01Ytq-j3psC9sf{Qy6j_tQUx@ZAp)bc;#si z>{yo9WvTVa5Z?;>keg!l%&cvo$11*h*55fN;zn)(5`U%6kuaDssO6v6FT5Ns1#*BQ zvTkzF4n+eGep;?~Kv_6h=-p~vS+&0i-EG=gi6-E|$2Mt+W}<-2(UqB#tdruJ)hLWQ z;A$Q)0Cq+vpQk01^z~ZPs(NC&=mJhH*B6HyZX)-L!mgm#w>1!6?QiVlZB=f(A*RJ_ zilxi}HQ4 ze@pqmIeys6uM%&3=)PRNIgUBx(;3ZahtcPk;_c+$v8nWafC}h;|g3*bp;x9m7m#Rerzb$z7ImJ491%gm0=}Gum7t369O-UQr3oO_R=Qn zRgqTTINt*HXDM?~cVLc3Q5w&8=gR4I9$N1Ug10(u2mZ|?%s4Sc*`D8PvuYrkCMaZb z`R(5zKW&D*{>4qIdef`f#1`Kc4N@>*wEHQ8_%HyyuAVVn2t)us8IRY~m@Xl%eYCQ; zt4r^EOJ~x zf@0@iQLKHLFLbhXqz8Z+BgwgwoWPQnL7SfPUZ2J2(?w7)6MRUY(P#t05Mc~i=18<9 zdX}Qkjdn(^;-eW{=Bv+}oL>lqsYa{@wzgo7T~~YpoB<62c^||ieow#8(&lsJ7u;oGm|YdnA!N`lGU&5`8!T78RVKiz7@?(p+9 zH0veq@UPg}f5CdBW_td81q=X^x23)XH;0ucw}|{LnY;UIvx8)3ubj)oNP!f(2HD3V7?x^q`A@VYm zYacn{b%C{Vv?bvF7MM!Px@%;;?M|ITa{7J!KB}n%@{q5t!v7an&IesG^bup$kcetrWdV&>X*XXKh6TAt zttJaSO?HZ7{r(Zm`E845TKY2SX%^i^yyf(fY(u^+#A8)qP*IE?j}GG*{#4ZCRpc!a zhVJ*|bj{S)(_ZiRpF1!Ly;ZqIg5uVaI&<>W0Sv+dCQfvKuQd&NH zfF76heL-*}e!)LnY9FbgJ6x~ZM>9xOpGPVAw=JjX^ z@(2uXzDuKLECKFc_AKhA6V`t=y#^;lu7VP>h-P;oXqJ_(ngyF*jLOz$h#8=vCdW{v!eJ(P zv_XNAePzm!ls?#yCf#v?1Vpl>N3%gNq4Eakitc&TVb7@E#k{YA*yW7cdd%sj@|`!& z?P_>m=hQ`%61^VIP6yXAimaqq++^GFew=6WVIy&*hz|Qb;XffK{8RPyyT@dTlCcGH zi-Dodn6z4)P*uin!}2lE@@_ee-Q=_2JGH5k$+-VQOB0Qlk{AiePx_PXePFS9rfCEvu!fVdbv=ELDfy@_|vFzOuZFk?sBb0(A2k+&Vk?vZ*ZU(F@Sk zXGSlF&AhHC0&j3ua#)oUP+uW?wQAOcC-w)A_@l8O*HO9Ok>Q4g7Dsl|N&l6L-Q8&) z(@;w5f2J*8@|cj6mev~lS548mu>Vm_mED!^s6z0&NxQG(Ndq<$!OeTnz|bcm$o&_& zUW1-}xXkSLcIl&+(eei}Ppi=VL^`aG;mXHvoJ`_Y znorz*K38Ty6qn$CkJx~i5j9>LK(TO^e%!eyFnLqVV{sxn-K8~+@WV+!E1EmQa}{!P zjAp;uj}GF)$7oU5K+9r@NL!=TS^sO*xq%qnR%0M$Gb*+ zj9wcMDH*H(ss(1Eu8rbGai53@42TPL#dt8_GOX67XoH1;jd?|AP8as}GsgG8K43=r z0=#oy@5*^3m!l2wl3luSqo3A*Xg}W*F4tC5_X;Z>4IT4EHfh0skN^0^)RT=XTIie= zV#$R>whLTf7nSvWd~YT_{t~cEr;IN?t)zMV>mGXTSC5r{a?cp}tk?z114f313QROA zo7}L5y^CZGdZUW}I%@Q#ndZ{4&)T<9Sle%roc2%fM+SnmzJ~O`heN_EP$$)l>X$&n z!2t&v4(iWK(<51gJEdBF6uetvJ430isar`j*5`YW1@=tuE+3QlZmth%Z#c8Z#f3I1 zg0c9sdZ0};p=_FKoewB>CW<0Fj{>a%lA`YE&R*3eKN+ZG-Z*sOG8UiZhz^|GCpa%~ z?(fpJR&n+u_75o?bywD5@wO>LROXJcW>$;SkC%Hrh4DrdRVLWjenQ=*aojsPC>)Rs z=EgiC8JA;OFrHSV+%cL3tPXXpkd*tm*T~|6gUhH0!-Xi^@$Z$4n9E0m(KGJvnT8Ep zq~65up|v`W{ZEONKa>`hNO6gie)Z;-zYB_8;AyxPB&dngg9*<%tSrxsEpW9u>%njt zWZD3I>0%Hln3*uD!(wa9S*(^3c`LN2ugGYlh)m=%eDa>1GVzp+=TO@SF#7l|!%Mq~7K^8`#RPA+Nv%J12hZla{A> z#0)y(((?HNwn!uX*KI!5v2S<7A zGLKCr$I@r2l9`mbvW|N4)?=XYxa1ZY!_|~_wZOHIu(&Os_vz!(dJ^NU)?g-1v0J_E zZ?haQ#}@kr_Lx92p;=t6cPZ+)1=T8`oHP_Jf`gurLv;WsUu|SIO&Xq>4M*pO25QEoejY9mtvd!c#ssmt#5Ku zi{Phse65mi2-*!CitkGTFaE-Y1WVt#(oW9#M*p?hrS<0#>CRe8)WAiwS0UW%O?T)i zy;HWj=d!D)bTcg(@B_d)#SIQ!sB2NAs#hr%#UQ)Ol31YQU^XWhTCk+71yjDLQzk$6 zTxei9j7^dy_CrF9p z)?k$N-@s>pD4>6_*1==M_zV*|=W`WX3{$`@Gt4kPbbGS$Mu6C80(#5gAZM0fpq&en zg^xxu^JJj#svws=8odb}a%DhV?#nze#5Lj4d3Aqd_JMJE8)3wiU+^oHP_)v*)&FqU zmmkT)k2>S!3u?4prKmiDnFLJ54NXG$N>l5p*RTUsh-*(QFPD!=SZAjy@g6u-=fr&Y zS$ee+_&5O)!HVL!_|FjZaya>xE0)@f!oHY*sQNS`P@e z)11iMg}1fR|2au)#oVSHed5yp_5Q}6JCz>KkKX#WD>dW@=5`b(9s&~N42WQ?d<#Ri(m1s4LD+7J3phd8uwzQ?V(Xop zD?j8K&y>A2V&2^4fN9=f!U2cszFbBttrc{;kIX)3G*o%;gH}p$ZjdtbT|g&Fn1kpI z$-4p`UAu)gTkXA6Xu1&x;;84mL?q+Av{)udh^bsV`7;J|vSg2;9xZ_^M8)1CL7w(1 z#&fl6gJz^J_bMP6ZCUYidJ@Pzioh+r-K&2RV{$b54n%oyP|QVdkHR}GaoOVnGko@I zeT%B5aV?$Xz%p;`o0flmga%^ndTIT>RR=FHfW4XMeEN`bu@-sdL_k*h_0yOQsY2TY zqt%(CwKfXmBwu{#^A~S{jzgZro2BlQU#i9be*OC7@$&K)Z>fr#(d*PN+@a2hBXQBt z<9q6H*FMe}^{Ndg*Oq*H0sd@9MDMye8S;qpf-^_h z;kiY&uL6Fd4}1APWlyim6E*k+!`eOs;%Pw_xLzMyXl)~c#;lU{#Z=YJ@Fc7U!=>hW-d;3u<{eP(3(o>lc|s*wQCUJJ;hp5UDD_cgTnKuP$G z&Jc}B>q>11u7~NZ1%}L?CxJ{ z>2bUAgOHZTZ(E5Lvf83h-VJL%V$M0s5lEv4+m(P*#FRWL%b}ZdJL^5q`)n2lQ9*Mg z8AP3-r+ivVGPh(dzV;^Y@-^-_e9h`l5o~2hAw=jIFIMKF1mfCrqiUD{eE5eCD8DMl z_JQn?YFUm3{KGW~gXy(b5|ReIWn1S#kE-ytw^O0w!H1m)j&A9vZ+vc?#}z)4)3gS4}OmQxG4dzqy2VlBgq#g@vK_-Fej!`{EvzIb-8yod*t3{ z+IrE!yy2V9Jr(9RDZ4+_J1`H}>RcBHMVk9tA2m7u_p?`Ijz0P*aZH)JdaI)Y`}5$U zeDUM{pG_fBB(2z=YKkrny+3Na1Alx|c|EU{Qlt5aOePLfH@;WxKC7vt?AQ)WC8j$D z4ZfNuU${f1W~6ZnQ>Zl#@=DwJ;*|XEY$|DFtB z66O;E!;M-!?MGb-Gu=b_lKv^FJ)O=3Ff`c9 ziu7I~^FF5i3eqo5;3jZ>g*EeZQ}t>Lw(h~RZ@ znOeF&I!Sg721~&G;Qlr%)vYh;cAQ@eBVN4)R&>j=eolg^eWpmFl6Ge0Tva=pXwnaYf~OdrL(biHD2mfXjYsv9RzAc=Pu|ZztoNNfqU0A2Gt#t8Y9FfCW2A= zW4?J?C*}dU0a!6HhHgN6`=hj!WAhm;&Q;NBYeb}p5>@USu_o8S_doM`?YT;N+LsKE zy^)8V_A!|BpHMFOVvVms_mTzbOG@KD1~g1Bi#+sKR9O#uM1GpWzUQK%wIx9w$x5KV zzv)F!`1`}?z=&9yQRLaen|`Blw`c^xSnQ^S<7hrw9M1UnG#J#y{@tx+&D)n^V;xgVde z>{h|3EL?gdy%CNH{B4v!eCf&PvvyJVU~Pr*Ep6t8SILP!+V}XOKJ+5&vWvo(B<|}N zd+dccLC6TKkI{%LaCX#a1nLo1Ip)Z{UG-x~k}ho!Vz0*vY<(%Jkp!#FWMD;9%p*;b zsUy)~yZrjGY+Mp3_9VwT-#OEmn`59q3DoM3W+xvTrnPWdh%h zb=FuTvjKzD=S3HR%rN+lJzKC`A^zqJZZF>DR)<=abXFbd%kXdX)-lsRo#EQumi2Z) zuMdd&Q~tD90jW)I>Z$H_@Ryse^MvpPgZ@Xp-a)5aKH7?|`ia9|^MaP9A~1iy7-J58 z7~kp)0&501_cX1B4>f9sj~CNtb=Q;7gMx1n2SCM8MHj>^)ftlNVx#ZtcXtln@9xy} zHN6o(G|Fz$^#+{1e}6_}If@mi91Ah~Oq(*OX}j9D#eB=Ylg{{j*RGzOucI>+Slg+_ z^wVrldjO^Ld*8ra@MKEX(_VZVk;jWE5SP5wdXE(nf*o;=h;t|+FA^~av%$=LzvS#S z<+t4RpHu8RwiwbhOAEco1KcAE==2%iETxdYa6pp~huXfc6}RDzpF?qfuT#otf*yJG zI(Wqy+socEiKGs$k^(JM7|0JHR=E)PMUw&xwlXc+7WCXAx@{rGhXV(HqEpBl^zqePSKnU$3q&4kWE_Gfzj*~&~Q;org3y}DWNAs-N5 zn+~jg)}PYM`~e0f@3d?o<**8SjCvUB=lXmvV>^Sm3gW7rdIY2T|0j1|d4o`qiUz37 zXM@j6`Nbxe@fIf_b@}n!c5noeM2D|;ku_q^pzfm8Z-3Df<%=TSpOYQ zd%qj4oGZ zf{fOY3DE`O&wxu|FLFLNy?mZvmJjj^9BPZsH?(?9JX4(${%o*sK zde>q$PJi`;U|p!oXU_Lq?iRylAT!xPsIz)}^#|pl59Tm!gLI07G}LjLxpY@*oz+%K zS3Cd;>{$m^Gd*gXR^{`qq6KKVx+1|zOHD*Fb>yGoP_seRhCp(d`m#yOs!=%)GNIGU zuLx5}`WD9Lo)zBg>)5vGHQpqDg5WesEak5v01nAbKN)|dRU43CjFJ=K*0sl?z1VwI zqd+dj-6JvUuJ&gFxZ@y!gOuCqam(z+cy&; zGMHCG1o%?Mp30~c@^W$5S;%85(nv+$SV}+JfOh}Y5o5Qh1j@(oh|@=;hAY1b9rte2 ziZPIXy&4h4AUA+gF0#obajIDoep25ex zjup#DN*eH40eLto+{Ahh`Cp_2il>s+y{t@<#=ZMSW#OW+QR)0M5Q`@Y-b*K`$Xgb4 z9;9rm*PooA_;T_j8^Zb@#FP~UD46TnK?-&WwC{>pC6^x{^KBKMREhkI@2V7iJSc>} zIv>~j((IaA%i{7HOwr}ZU?Ouq3|oec-~4fO_(#9e?>TcMa= zCvrd>k9YozB6Pp&U7C1TY<$sMMbgxtwAPSKu6fLZtY#6zZbHr1{jFca%+$YM-{!4R zhjmlgCA11Q{fSFQZ-_+87**nstJW)^d)b#aiD{vOCg8*Ugn>ls!t2io_D*L1vTHyl z`D^`@O7d+0r$e7Vev@hFgQxup%|U^5M81DdqQ7B*G`ddTt(2^8j#I}8?2HL8iH~fg z@W$D<(|Xh#*vlE%EMP2y({hV!8_+u}D|J_~w<6*mriCj9Z}2hk)s?x23O;_52$~Z0 z{O7k|a=9jz@JO4I``k$8Qi8k+i^oMouc@Pjq$BQ}BbwQ_e$@On9iHC663y_!ZPOb= zn??%?5sglfjv(K=P%5IJW%fj+gCdX<)=2ao@bG8%58t^L8wF z1^g{=+Ootj^O`LS2sr(q z^6s5leWEcvHq(BR|$NTTz+-Smng@y>#4-mmm2`CksiYu(bt8+ep?UwS6?F%IHi@Rv~lS)Wo!24O;T|pmDE6x z^qLz@?^9xYVipl~yz2gG9(PsJAUtD0rwW82T=lG|68T+nn>zC3_%x(S#&7Rp|7#qV z2(B)^^PQj#4?KYBUBMI8zD$oT)&YZ`7wS6IsK;>VQ!e?W+_%(C z;5i3Ly$;HK3FUca>=ugX?X$!gm&2YfIRF}jnk?00HA%CutU;{|%c)2TW94BfYZE8C9Uzcprx+> z8Hr7U?AX-;bfclQrVc;0UL)KPA1d=Btn$A!ydkaFxvL=A$4Iv=ExObJ=w&6~@~9ER zGDq))8vf(vFtqdon4~d%ek)4LRJ@F4+$*k+$>iG4;u46bd?6(12|Waix;tdR%q$fw zfyDB_fj9-K4fr$_uN9z0#hqixyd*X4##Nd?qIxxsy#6eKDl#2t1k}pa=Ll30#{(N- zF1ASgEx?$Sqga`*0soEG-efn46ncM;w(Dp^ za6a~oZgZi#*VZulVQK6spqh@E3`2G%g^!OXZ$2+w4|(TWhs#_z-ByS>`qO^BH)(MH z4y8ULtNY}y`SF)~^6+hbuu05G+Idtf1P(fw(m}=412ZAU294y~jm+D>7~4`$KZJ66 zy&7JdqG?>Y9U2mc=}|fCf71-}MW$Rw2U3Cx7Zcg=Nj02GqaS&9l%|!2)xieSTXJ$V zZ2_s^olef&0$O0Z@w3R*9xbojcEaNwU`XUj8e04)ZQr^jpbA*Be*tO4TODa-O`7A~ zXx_OH06!PZbe^}9V#h;J*5feR_A|K~3_)CqmzNdHwtEk`$OX?^gYdpEwyp%nkXi1~ z*e&8OI3NwzDtcVHws_@N+U7;q?RwGcOTy;$d*6k+7h!!sHK#!dT9h z%hx}T+%lh=|RLLnA!KNl^@JfN8&eVRYI75sJ^w+@bqUN4&|u{T-MpPaW?w&9+-4=gN#SDE645R zZ_lYMz8run=qHhi!IV(-z)S@~86|WbD$_8i%9TP@4%|&k%#9TRAN9MJ+On^ARMaOC zQrHNCtLz3McePyWnzEFV5zB0E?blh^VO@M+ zmRDZVlCStT1ee=f>Sm$n)r?d3DEe4=)G0?GYMlI0B--nr?d>*4kMzHOqy#7tNwFx7 z1kXt*&nshOD1xq>8!A7EBb7>X+}!ry(j)U)1qM2z-d3tk$M86;(_3=>%AV85eJD7uIu4K zcIs)kmkw%leE@Hj9e#Tts1^bkk;LQiZmd~761gDxCrISD7G0Vd)LseO1DH}*z%W=l z|EZuesY;FL^p#;jlH-<#7v;v_@u~O(HhtllJaQyA6C{@bpjGGFs>* zW?fsdvKNU1y;6s7-MIuT8E;`32A{*Uq#h$B4Ia(0u-uT$9YxdSDyc_&xLG@lMKpmQ zCUsgU{zCoAzEdgw%6w`|XZgAY$>Ne~re-tQ#8+CVJ!(vOENiC!do z7+%2~Zx0I}9}a6$hwJY9uiV@zJxPj7WXtF-Tt4Ci@rzDvZE3Rpe>wPb|4u_ZRKjFF zQ{2Ij$!VIwFDdqJy-6u724W7hgA($$qSBLm^GKwP zr~*3dB&LA8H1fyWFHhU`LJ&kH>JR+6;sS9xNmszJ>)}S*@LfSCv!l-u*EkhX&J*Bl zSx&oDc8l^W5Z;o6p=vJ^3oiJhpAgZU}K7g!=oXAUx$oVQE7Dbl>DR4}zJPeZjk_E4dqCJSN zveQHJ0dDSczjZEIsn<^<4~1k0>PUSf4?cgKGnt!JP?MiGBlh|O2VWEORQCbNA@=Q) z0df!!7+RxlST*rK#d}1|ajFB-l>?Ti07}IFmJ#dBOvtX`f#>6AVri4b8u71v3X(b^ z>9PlHjQ(3-j5Sv6P=7SN&X41)fdGQHinL_D*Q_$iu&-88APA{Ad^g;%|`XXMb3OiX#p<^I1tKZBgFY!kSzZu zHp~M10F1(HNcP`}L9CnfYf09nRJ;~de4!sWIhhoCD9d+dt94~Ri!fvemD>FxxAIGG z-&ZC10qb#XF6H88VqF(o7hv?V@;80D0!r}6f$-#Fd)7=COwS?oP_#i7JPwyRAEMAt z*}KYws8Vlw@(o6ZRd;)JJ!v}DuabU%iwvrc2^4`dZnAq{ifi`I*XFS3xepzGA$cKY zuU@hkAhg%q2n}X_0(L=sg&Lk*e%KRL@ihFmNvYvAGwc{+L{l^bKAA9f?g*00hc(bX zewblS0*0HH(F{D9h2AJ3;l2kgaApoq;<8Z@EUrMr zo^kr1RyHTF?6o+^n{y_8H-w-8avtBXf#!`PLJ-E8GZ@uEqIC9VgEb`Qjxaok2j1}B zFTo=hDw3ZLs0FOd`%;$c&k)ya@|GlW)A076Q!0CJRPuc#1~&6K+`fFk$J=76_e@vh8=yjhX0FQCAr2PFm<2&5IsHo{EQqX2;JF#f4O;K zYtd>2@$Roa9)JK&ef!_i^i7s1@!gwm0#o$z3+T8Xzc~X370_`KUKVa%VSU zey=ATa)W3DVjSvyV1+3zquO_!un&h@e43D7h)7m_Te>*%r^>$LFT>7PareDn#_6sd zX;-}ip2m_{ze$gloqk5VjI6TLZDweA4#}y$W@1)_D5Nt%Seab&LU@z|b>JSEuaXd8 zFc~M)@bzZK2>_%j4>t;n9B!C&viSy$XAQ%g3qwQW)|ZBZ#!~3|1`zL9kPNKr?i8}G z$xr~Tv&E`l{JM-p`y9`aTOXXl>X@PZEu0@vVuHZ)qKL zPXk_}&Xdkxh%Y~uT>e3CQ7fL<^`Ounm1^_E^gT)Yzha#fPYM1YVCuahn*BHRb+ z{SeDcscY_lZ{^=CB7*7NN<{Uq=a8!!>^?!_*cpG&m}ak41be3Yd99wb0rv$hEyf`- zk9>-;n;w`t(3{Dh^l{^gU!d}$XQ%2+zmi${gA{Etayf)~2|X1FunzXWE(Tts)#H*S zm0Y2Bxu*a&U-jrL5)huN0CpDEryaQk8_@*>0C-}Cv1c4QRazSTxiJ{Yob!O0*gy^h zL;`qFM^Q_QLUmP>cU%7$7_2l4!V^)LFnjFZ*9gppeE*$Nuk}2!#Lnl8HWy2ledb4U zDIdhjX#`J*wA-WoLsaqE;DRoLA0@h$ub-&8E9R}@eRq%l`7!}l`2((mT^G=92~Z1C zT!U4Q-&_Z!+L~Wx_c5ZY;D#cu8}o26LQQc>T3j)wGyTtICB_V7L*&!uu^Q|c0-&_RR`*J*ZgT0Bkg+*$lZHnu4la)NMPz? z+7o}_HcbwT4@#=Ckllj2*0@g=wU*m1MN4(U_hmNo zU8Z95{(hPFn&g1@K+xvtxsK=~fz4Pn&^jD)bsul5pKj;BrT)IZum}`{C(HK@YYV&2 z{^*~Y?Su=v$J`f{6sO^Qep1hpRjSnhhWh#s4Z^Vz&@{yIcg;IMgRqBOGu_S48{K++ zpmHd#oeVVaDX|oRya#bgRQp37%$O7Wd4$)~+sOAA3zfZ%^F94Ya6Q#PTKW zPxH~4A;ra=MikB@4Ni=GGV;S_^B|^734$ z;A8AswPc^!IRvUa>1x~nmHk2~jaOEdP?#QLXQmBJW6?&y^wy*4i*@C~rKIa_;(*vd zn#6Y+EI)eHiP8Dg?_+33PoFYylp6x3nk`5kw=@d6vV$PTIpNs_eB8>fR0y>)~k6m`396o`YAo0<6gs zoZKQMMUSSe2x=;_LvfV z#20~bOD5R+&EBwh5xp-#0Jx-gUXw2~W-Ab!L)5kh55ly;hy8?1{)Zm}u1v&e;paHH zF(MjSP{cYqFIPZ#R-%4fmF~AQqW+8d!#}4&ev78PidxX$&i&IQM86KRat5eWcj9X` zc+yTfElR97xtC7deLw_uunx2b-%~tuDevMa>Q#Qph zT7&Uh@^lb5A*U1gGv*#nfqd)gfRFJP*6Q8`Jr$c?RbSA&wuD#lDxlj-+b?WO!?B{T z7BxgXDWA$nLxRcSdl2f3apj{SAqK-Eo`_enzj>$*iKN@R#%^m#wg9Z}iX*w`GpKvn zjN#=rgsaBbjhzu^&6bT9BmyHyNmer4j*@1PeE$j?CdUbGA)x@eup`;w!`3@0?ELpE zjL!Ff+lg~BDdfAvO;jr9ol%L#JMp4#QeV9_VSYPP59W|i3cYi2y_u`YFn25_)8E8; zu)#X~pS^elN|f2*t4y6txHe*R&0v^Lvcr$5Z16cW(oYEf>?-Iyz{MXw58&}lC_oVI zkpQ>7%KLcS%p6`KxAKpSm^pG>fR5E1a#<-Mt^>{|M(c0_8d@_#MoQED{R6W0N4W*7 zc04+-C7JAY-3BU=sk8DOyRNl5*XX^waVfQk~xcR3n|f8kxf z#8o_4UW_pI=65_g9MjapWxs&l>J9?Cc1Pe!=O_1;ZcfA;|EXIbZ^j*~f>f&GdYgfESO!q=^e) zG56c>pPFGe2J2nAd(ysMpd7#Xqb%>qw(WI2Zq|9&*WP!YK7vZ9bAQ#99v}?!J8F=^ zK;qCU)n^>s`)oaL40aJ8X!%FB4|A?`FNZ*KC?+O@vEN`#J%;Q07^ zTfL+eOkYkT}cRHF=D$2*xeNbA$e))|&Db_| zSM@#Wz52nFV+?0g+=lN%$Wl`W0}KEmXDnT5W|<)n06en5`cqvor#TSd%QE%kKT!?a z9bMmbbIi35>+nr;lHX&jf@yV%9ZvaJY=4KHznjwGM|1vCE>3qoWvyZkm{bDQMe?&c zktF@!;!`cr*IWG%$s35qO5ux_a)*Ao^o^6PWJKGrAAbI>e%zk)?%?}fy=cx$fT+N% z&^qQl)-&08%*+GZpV^Z0r2(YG|769A#s}|!BE?Flh{CsC$4r^&3&`;`bslzS(+$#X zue~Scj)PpGmzpk@6d>0duHyN^j0?W7#&64L=vtB2`I+_D(L870@ zJ>EEs+4szkVAOgjpL<;zC}p;PdJ)z;Kt$CVTJKpHG_gXg(vL5s{Rlg3-h{(ff4vhZ zqCT9KkW2LRV7@gGNxlQ~w4ZM~vyVF-{*zJ9!OSl#aff3Ngw{5ud@?ZYF^V_BE7QaP zEC*HQp^usAw3LY>V5ykcGe#ftuW;y+ie}jtu-uf3{-#I|ZPa28)S8wHm^Yvq9LzX5 zGmKj8;~|fQ<`)@ShqlSNpXp*Oh0#9F6ph^;UC%g}WJ)4L?o6{eGi%FGMC`_von9NA zLAp8p%v42Yvse&E75siBg_M3Rh~Um4WOl3A++#IDQu${i*P-sVcN?hel0^*^{^3q4 z9wCr7#TA7)dF>i(UM&{d+> z`8jq30P?&B7{49}^?r%OajQVQWs)_j*dHGJ7|XvV@f)qcS|fDXaUmUGL92y5sMzr` zWHPgL_q)T+uc)y2<##*!?36d=;K29z$G_V1_x{3F^fB)2w64@|*;{DitK`{VS3|*_ z@ElI!P|BjGdK|ts8Il`R>)Q3UjeGlv2Hdb#BlUI#W5hw^BjsA}8k#;2_TNi19)3n* zjZ`X0AFnQ7aluv76xY8oC`8kU{tJI7sAuCE)r!y?q4nSu2h83Bi06<7CJ2+bcYywF z^Vh9w^^ZcrOPAJ5yzSrpWdI;BZrc;i>ENM#3^XV@*IGQE?S2 zT$DOpz+=*1W%TkBR>p=iAI1Sh$k!KZ>eH(F0=ih40Z!p+m3vWU$-LJ=F)dLso>jN= zQT@&hH_lGB#v(E4S?S9jb)`&E$7<8RtzOq|{=M#*1-umq9kX5W9cGfuOm~mS^^SQv zNsM=rL4`&31=Db)i9X@sZ3fV4e2H^Ul%Zv(|M)Io26anRWfs2`TCl2gq6*9@!?`>Y+Xa5l_1SM)8fw!V%sQlx zmY6)RZUD@b*D=`d1I!=2nOh|s7{rA+Q#{iWA-W|d)0?urMw-fdZK(~D7qK7rP=3w) z9>lUhKKR-DIM43C_UrjTDr}%dt@6!5uP$wr#4x$~cU*`iXB0P94YqWq7I*A<*@Hvu zxvp?W2UN#Q-DI%ZqKPmn24L4<0Okom#vBrC#c2$qX%haeL-*tBs#56x>XUxAzn^UT z=dpM|kbXm-P-Lz5fM7&P-eWNJfeMs>3?DPi z+dZaSyvJnNCfM;`7-ixe*?*1kLP(q&4xnoy=$xoB0%tppoN~-e^jS6%_{1!V%CPAU zu;l3btbk}aRa+F!dwSO~At8y`Uq?pAy1_j))oUm8J7{%ONkAFV*UDWU;GA4InILmh zpg&c$jjb`Rx{%T2iGAF9pB}Bn4|#;FH(aqaxf;XT+jt%;UTQ*Z0C?b{=0oGk4EgB@ z>W~ajc@WiTf%tw2ki3v75_-TcFI4eX_wKOKlB*Ky*|8n<2M6)OKF@J56F}|aJR32f zKHKjZ9b+_%);+%J1jSFVj#5#6`@D;Bb?mh9cA(uf6APpyie3UL#>3)%S#o)CZQ;!L z`Nu=&JUpWVD(^bhLR}7NQsT}C|5QxP!;vQg>I6xWd z*gip8u9rZH-jWk=cf3&icl`usD;KA@FEEjHL!zpK@0@x@_1yqd&v1Sno4qAqRW|T^ zFz|3){)t{&Jg{wb7wInlGZ=evqEG0LJ@d;xJ6Y(q{}|gu_E`4*E^tt!9IHBrQ!hUL zGfA@zEKri#3r?HPqvo$-k10z|d)EQ0{+ONoZv{{%?(|m@P=&rY;iCZMBlfC;xseOG zVQ?%HhZ(vAxx?-|bAzq%MqF(|);TFn3!8;{F#Z5=TEzZ^uDmu-BMk1|wi$t_m_t=! zPa57+zi@ePF3rw)OHo?`HF)Y{pP#i07=(zP?BtKDM}Yqlt?*T1#@C9) z#v39{`Y*@zJwsf1MEg*K`Ba%{eg8T)hH`zn|E34fFQp`e0(FR>*p=#U6vlRK`gfH( zt;e8(0&MCW_+Y0aSM%eOwa(0P;I4^q zNBYQTSbEKYL!Xg<86dpX?9_`k&G>!lsweSng z=!pcDt=>YZM75N3;M~xnabLM-qA)W;5twUOFWv29HcG*X-fq0BKNYy-IY*m-`^)@u z6)s`0UTiYGDx1*RE&vvTYOP5PD0)L%ba3_WU2qwDY#`z?bEK_=96cRkSpdv+mnci(lvJKK|+^-9zsFLc5gKF?YG4y1916A7? zn5Y`#H7%8LG~dx72hQT0v%YK*ZmDbf0CVAMqq+RA*BW|S4<~W=ZzYufWWP4j%1aNN zawsrMq&2hLXB^(Wg?#Byd!p?N8gI$vlPvq#%xI_Xl<5%!<@#QaoqlHuAcYWxj6(qZ zc?W;vBLd*iLU|`4`L-zZKc3eB)I}$`K1Ugwmkw+85+L*wL5ey_PXYcH4?E&1i3i{W zWsfGn0dfGL+YJO9`k)L8C&ZpA9d8eP?P@cod=$gppQ6F29+HaY>0P4%?f0ErG|SZ0 z!o}PV#GUgz-lp($o!VWtT7vNoAbKuvxf|Jmz&Mk*Qg*_r%202)1${3~9|$TnC6sL~ z2YOGEubNZ>l|i6|MtxqhmhK{Nxnw!ykswR<^-a`|7aBs4?It{$2|iVX$D`k20eDXV zK=;uRg??iPE_gum3pq_A;mz9pN<5_x_bb(xrdutqc*v^ zPWI0KPXq1oHy&;6cb~X`08@!@QkXMkzk5)KMOy6mak6=xwZkUZZ@1)PENK^H^Qe@;-syJ0kpI@(YZ4%QYp<5M079s z|2R4eps3zH3bW+WOQ*0)mvnbYccX-Kx6;xjAS?}164FQ`NGQE@H_{T)AYI@6f6Sd> z7nq%aVb4A9FP;PHrVpU9<{t(_fXEwhZ(quWVN@t4bwruSq!H~;!ZHNA@ju=lxk4ZW z9u~YBK-}%nV7KWb)lW;H2Z&o?O50!5^#BjsEo%p|k$YbfjwN&W4krHM>jcx(MNZ5n z&~-W^(G1Zq>{s?1)c87Irdv^&C%6DebAXwiTiT5miZ1qn@a=A8A7}6jZww|2O)V^w ztwbn8CFXgoE@JPs{NO30p8A^n<>AYj(KVT#{QzQE$qnFg?0AE0kRh(vyms3YF%Rm8Cr{)Yj=WJI+JMu|TPsbivsOOi{?&EPZgipZ)>VD$UW^xYybfZ*x4;&_&4PQ(c3jWK!aHH= z?4!tq{;mNFA0BE6y7g^}P&rr2LtyjAnXA_}0M_{hY&-z%C6(OsytmsK#YTanY#5zT z#~pnm&~mEo8t$gU9{5iERMj!m+>$8p{ioAufo{X)UqN?{ z8oxAkai!i7D=AuD@Q7FRD&(JpwfT_)zn&5(RipG0 z(=|hq9nfGD3K87uF`l1*(e}ya@C1v#Qo=wMuy{8~f8ReXKQ>G>B_)&CeLHclFK{4p z8i_DN)-ALcrdA%UWD{bPn*dPe%Xn3R(1uXK2Jl_C&NdDEK;4hmz`?5Ueg;WH9mmQs zh&s;B?*HSb7r8y8#2<)fkU*(e2~RNuO-0j{R<4M6RvbZ1e*&NyW_ybwa}O#l{sxr`c5 z_neIKtkoQ&GpGXsXMr{2y4jG-qtO4RD>9mC`_biHL2%Q&I$$ImLyQXRUOD9F6@I5rR>zfMzuKBe3`fs7H}`o3v~(ebv}!yr#H_#V=(h{zSIGn z4dH*l4@j9ZRX3CYiWv}=?4gu{xt8k4F!QNseOn||-9&NrpZd(mZ-w98rlc@j+atig zII>6sQ$_6LJjPmfiuJCA@6MT2`fG~ZZ?MiWxaiwX#BpAfCQb3;>-TZfdA%m6VnOFp z!sL1u_QmM$VOPRSe2Zohwq1LjI3OtrLMV_~p>(fXJz7xSUG7E$_|A35hyiq=9UGQ& zi8y==g1N~y$^&X)t~WeZh8S}RiQ}x2f{WO7vobM92@GO@h3PvCZ24$$Vu6YP#OLZq zOx@@t7_J^2x!}7X2w=FuJ)*HRZ;)=gb;C_J3F{-iIYq0!2I{)#8)*`#X2*!nXJ=e- zNe{E#tvY#P$TSV&c>+q;f_Gg)+*W$OA$x65rGp4)Q~0BK(ucj2mY^TDH;z;r`3tCS z?{V90jMpO>yETn5rPN^lDk)K-v!FmH5 zWKPm=8%bq&K7tb%M=`>a0P#WXXP|?=#)y^{q3$yVww0o#=aFP|uzd$z)_D}Ma6ee{ za~v@E8UvebVUQg&1j`Lt&KU<^#7!WQ^jt(@GAk-ijp+;K8%Wj$eM!P$K(7#Io$AhK zfOfcy7}o!oyKCfItmRv~u-6gNxEiN)&;fpAQ?{~-B?yDiOK0}IdufNGY6Z0D;^2%3 zDoy%M3jz-yr4pbbz8j_P8^9?}O97z!GCGo=$vSN?5I5ZZ?*DA!MqhBjD`tY6wZtzE zlBj>KpxmVxpheTu@xLMF3e16gz@P0T3|d6hnUxDhd_$4yAba@ddW!R3zbnLT4|#0@ zH?I@>p%L#?cX=as1}Dgp=rGW#c2O?&(M-qpj2?!a7|Jb7*#&qU%-ASlVL~852#g;u z@9Rz+hD-;;`xqe&jm(g?b-|PvRxpr>u|-+$rgj+tAjk}388bRXWB@ut-R8b?{N;SK(gLa!bOG|w3eU46P3OGn9xrCPA%2}&_Yr`N;zoKhvJ`x_r)YEYsUer!dCO~J8Ao8w6S4BtAS@Y_2DRQ{a@;-n;(C@hdle3f!IZ6%=~ZCwPOwp5Q&?>D z;M(51!6n8umw8%e-2RuV=s!TH^Jb@jMGQ?@f&PKMVf}~}zb3@j7j0;Rgf3b!2AMO| zllm%gz$^%-x$QqV01zxD|F)xJ0gQhkJWj>XM#@D;55ZG#&I zBKI36!5+nVaIg!?1Ah~+j|-L7#gGYP4Sb~x#)_3S(qd?T__}cXGRnu74mrFKvdI;y z8G|J`gykDMy-r1p@*Ki)Gt3JiH%B@ta|Rc`Mpbb5v>wCcqQtEZc`>jFcp)xsf^T&L z8>N+@(r+}cWnXt`9z{s6;nHBxtr~}07jp!}Bz(qAF>E*={1)@&7nmR)9|;k?Wfj$@ zD4)hCnYkmUewH*5MEWDaOX;t$9Viiq87W!cYXkSNON&`41uU_eKr zfCo?He6__G1{@(d%P}GGcsF0acaKltn18?yoT7v&If10Aaq)OXZtiSRZFYLZno!Kj zkJi67c8N9NnhgT;M6TgJp6u-@uQxcj!c3+4@ot9J_o*;LgZTpk>0zgzuRVgf65)Nyf;85<7n4hMzYI$SqyO_^1g}-OCY!TChogVnk7N zUV>sw%#qX;U^*9x(9%X6#mY+UwaJ9zF3ET`T&uGYe%BSz#L{usjc8yJf8Jc=p7!~Y zemSW2rZzTVP1qPjw*#F0Zn^kk9v)Mc;fY8w)jS+=q`lOzwJeG8`!P1z%&-64RzLJ5 zSbn(eCx*=_*5$o+k!iV>KCb@n2sVvFJ3l`av?7RtsE%&&Jpg56f2UdRR!_dj$+7Yb zkHCftBwCmnx1t%pfTq(M6+imgqs9mXnruS>)@v4nR@p` zqQ_V?NFewKRKmI1wXjIFm;Ez7HJMZ%(NHh}36US3CMZCJ@WU|bivyM312K7CkcyEA zD|I8mM9BRT?7*5SK~Ms+xR!q4 zSjJCbd}n@uwD`xR2y~V(z!{1x=7;s8*tMOkK5g3D2nAv0Rw4t#9n=^XKEzh*wI~3+ zk=Uy3lR(e@y+0}Uo!r^G0hxdctyw$5Sx62MTKf+CP9JWFNB{kqLq&nJ$a#~p!q#;Y zbvbMS35)?Fg={3)y9i= z#=QV;zyO`(H%~}i-@?#oEN%|rU@DW% z+F8TIj(T3|`06MtS?nAlvGtOZBJ92GiYsP`**jpRll=(bmd4XyQ1ePAX3LnBpBKb! zN&;^mRmUi318(OJ^c%;6je;^H&1Afj7`4+sBoKy~Zc}4Svj`BVs}78xEJI9<3B+M^ zBin#+QemkV4R9#Mf2u^yBIgUo*$CCS!59c3D@2vzpae~xf#a0{yMz}yDT*q;Z}bjz zV2X)Bl;9~zbm4x$%1#SioJ8M!dZt@B9Y66@&)3PZOVt%csww3+?%CA!FTM_1GYXW` z!tpErX$bc3=r)qXbJqzNXq-7iQAmWi3~qNz8yg6jh4Leq+h2OxE8drj@o^3G^0auFp)R; zEpF+w3(@5ZM*v(;0}bidlA$qMMgK9P+O0Ex71ff#A|C;nlGV~+23Xew+BykkR*PUY zuE=0-eB_Iz^-3;Tr5{*9$~>o9y}#sW!hg*OD`9VL6sRFdHPF&5`TN>attU+&)kOIF zG74>muwZ7d$S>?Og;Gfou0AE5Uc^OYKncwPDIOl_HU=|b6I_H(LA^ggR zVj{65h_?k}xK>I&tlG@-@H*b;mSVN3ml&4Cq#na4J2eWiXHY7a4F9NPN@|(n^+jb|QAdM-H%?XC$Sh$f z>UHCl_gmjh;`H(H&90td0JaVT3PiX8ffK~g^qU*0=QTG$t1tpmSg`RMD$A*ei3epc z4@K8&0%#>HqJhYg1h!TS_8XRo8Ej}b@BC6^R06K^fARY-4MGLU53#wm<9IZXi_y|O zdW6xU=Jl~3nf5!!na3&)EiD?HeGX*Vi4E8*cbgDy)xCLPBw%-rMY4oNoXMU8bPhL_ z7eYf2VZlqCkP&_N;~r1Pd>m^*VSNYqJOO`bn8wz+_gbmS_VYtkf~h^<3+jEQMxVz09AaG_uv7j3*#(}E)H_ButN5KgJ%Ocu8iB;>m->A@Ipm0QhEtW^!2J9-Irl&+j zG<+Eogf{-EoeKdbdZ#?9$QS(FNoRjssd0XD^ZWyiKuN030}gJfR@oWI%kAm}o>1`@ zT@>nwLo->kXJcY~)9$*nN|yZ2(7%hzWu`50{!~bH(ul&e%#DaHV7=-EQB11(T7TVO zwlJ?h30f&9plIS#Vw&_#@9|>Kbz>0rA?D7U;$f+$V4YulMwsJTj4N`f?s$6ZaB~2> zU{%}0hxO(^G$TWo?EpA%1KO_;KrbmsO==My4yMWh%g(jM)^>#l)>|1wM;iG6gdM>% z53QK@7+C~mX$0MkwEq=}Hdy!_B(L0&Jb&rO1G|bVgKw}5^Oag|UTxJvDcdCI>-t`W zaZ%IP4#JSL4_^VR;cDp%Qd0IN&d-}#!p)))Rv0hNmi|I}$?#;Izd#oEpj`%BxZaU} zw%+QA9Bw(SmpMeKdNQxzKAsNoN_O4XX*Ru%M)XPrs|{CyHg+d>=$#;8K%ad&05+lP zTin5?+R`pH6poLUEtnTEz7_lm2r69SE~Yj+ZFe?^PLd`h5WdV{7w z#~_VGt50(C!}gRAz|c8{8|qMr1H_c1C0zUuT;fyr8%dM+H6tKj8{BTO0EDj`gBx+! z0}mLhe_dBt!wM5(?iEr+LECVci*JnEnnGY_vm5RpNhmfB``Brawxq65&9NZ^PpXq8 zk0{QDF;wp&>$G8tCj;Maz2E>iGf4{`q#uv$3bq&uKK%+`w;BW|mH?G1NFcz-g#GZR z)YealsmcLJH8=zVQ800Ttc||^RygA(!pu;2yD7hu;ME#G4m+(Z$ML_C?dNA?|6vK*TK<4+Wwcf z8|<+CtMDEyoJccD4#exct7@^!7TWL~2QN>j<=py|SUzkZqpMFBi;N3%rGvqpM9G4d zAu_iHRjh+Rl_1}7nb@T08*N_N=E{mkjAUItX9{@*vWI{>$;oQprWIrJkEj4&}V^y{F zv_k>;;(sq#j0NAaDI^w~S zC;9SP(^YORh-h0VP6FNp-40+^2iq|W17?d4>=zE$EE^B1?XLpBNOc`~i1-J~KO$yt zko@eCAt`5-ZTRj-$0#NpR+K=!736u)rPxF(2=W{yl|HuGz#>wO$wbexQLEjVV`T(u@(QYNGE)5uUpRk z@wMK;K6XUS-w2Zw>`$CzD(a-0ddBdwdayL%1ypq?T0SEV?1G0}4eFHwnI#i1U>q!T zK*aJ0+dk+m?B@TX=%RzKBU?v*&oR-m`%L)eC^|naqjp50_Ue4IF553`9$nh|oOt1w zaX>IO@ue%zfWckVCCQVQuSFQoc`xJFo;gq2Yle7=59TP_wNxFXm~PxD4%d*QEx zv#j^&?81IZ2+GDjc+@qtz>2`{aaZfzUpf`VnnKSzCTvIwdM}nNhu0cM2@8z8by&m< z5pR=3T5Nqt85;$b<`vC=FNtF4{{b@?tDk-v4iBisI_^^Oji^{BsGt*)M&1_Qql%Vj z2ZU7KqOB5V*_2^nhdR_n1BeNQ_LE)FIg4}9<>S#g7Xzv6Y~B7s=Y(^j0b9Ol`XTP8 zXZakGKXqmz1@J3Jsd=^;*5d$U?k4Zn~a?%~* z5BC?8c?u(()^jG1Gm15Q$?vL9f{B9|Bn^5IQUxzIkQow>1FdrzYK->-){9QUfT2S1 zwAoX*b&qOcv{Ne0w@KyGRKx~*{3|WMTUD1A9U9wgoQ9=14(%lau#hCjYF^vF&b6+$%^_!Q{v2a}Rl?_8P7k!-z z#gAsbiKdrw^Ud)Q>5OF#dZVQUj&$0Bc~Jn(^X$D>Ol7Xz$VUfxLrqwPCvv?fa$?LB zEJg*Lz+fSIBFq)_&pQ}*C2ro5$tht2bV8v=xB8Wq2E{`PU6*D|WH>)%cE{I+BhK&| zZpuJy{=-*E3olrDNV!;>1C;BgO|h7{SPwg_HmH-re;0^4dy`mHHlPNW0$C+5dsd|> zt|EqNmsPO<9BFr0A>hh;Xbds0T9s=D^ur`L2^T~Z*F!Q;qkF6uHrTsdufeB*#b8YC zFi|>&WE98+gS#Y=S}?P*95BtvE3EmC7pyEK7t?ivoW9bIsoW6gnX!1X-tOM_5Z|ZB z;Ud0GOy{u;u}~6UM8P!NgXvH~3I;>eG9ojJomnpZCTz%HMcd@dA^gokMZ4C_Q3LmN zfv%LmY_$yN9G9Z&?jHZ9=J{?=ILIa;@%e)4Y5e)N^0KN4mq!s1{A|gSaJlaS%q%>N zZc>;nBh`I`n^*s5My_)N0gS~+{?3OcLfJi*^g&KU1rkrsKnF&PM`ECv)tLva;mOKC z+VZu>t>7(#c`&&oXBCidL@s@t4eBL?p+fP2w9XDR9v3MZ%T+eXW2@xQfyjIEpFl{> zK05%4Sfa-c$vg=)sf`7?l?^_5mis$EJWfaAVBB{e?_(y)Xi|8x?nhJ?PQu1kt+ED4 zi!dA9)-p|X)^|xOV;>|Jj`ZMbGo(7(fmO|XQ z>)w0`d!ZTnV%3`3F+ZR3{-HYltuY#qIv4Bk3J9!YqBjz&dRY+ApMrfPj@BGNk)7yr z%yZb}wX?pCH*VB`-rGV|KfoS^hTz;$0!{?-%`G031Xlr`zu<>Jxeh|(AcGfM59K_R zbv&T2?Ro?CrhURKmI(sohKM0BeEq$2?E}&GtC)@uGG5rHrQH(SiK-#WllmvKzfP-WNF?k_$_@u9kcX|y&8HSZiC$5EM@r4)$ z)A5Z|UMHpt?a)MBL9v2BvVJAJMU!_RATE+q;sD+x#V?iI)d*$3vcV$!f%?KIm zqy2|Qo|x>#@ugQlYpGm(snuPrDAgGA)E2AU>o75^=yXxgHtSo`(i(oq3k~08CPDC(1 zCRz7c$|LxacK*Z3QO~v1`Lgmzy0tR;nZ2(aiR%&h-Dc$BkKVJ;~; zUpm@0-1AMwyL@n!d5hcbgYYD4k`&%D*7WD9y3w_)ljp6n%1fEazB{8c(VgGg`yJsj zMcF=WH#LzYpP{Bj^pS6l?CT7HMHqeTC?U zweHBI?lJS9Io4tsq1!1k&PFIm+bNo8A=X`6L^MC|A_ln3FZTW%h@blQJ=)c@WVDw4 zl?dqTu&ZgkR{MqMunR{*P_1uWK~IxF@N72}cyzwIeq`bklBaSKw;ZEw5(%;%#YF!!j51=_Yimk#QkWtQ4`-5+(i>80IsPiNQjR2zZ^3Z;Wi{l{Y0SnkXfg)$n;tEZ zNw=;39DF!fuSJaYdy{SWE~71vwD8#En6DkipM)!9Dt*b2)XZ$w?{>(0M{bB<;c-VXaxGWgJo>SNRwY9NZ7Gqqw&1owJc8xIVJP=3Q^P+{UVJqTzQ`n5|Wa)F=@Lq zI0%x-2mzLee{CbX&LfSsruPgdW_F4=UfjtjN%55Rn-5;;IYA?ZMEF?&H=KM|W~Dv@ zj7xJl47_$?->&+|zkb|9aRIKGfH!3xLb`vH_&Q;Id zXQC)fiAV*SXJJvZ5jQNs^Yr+Vl8Cn8O5*W9J&K?ZJ=9yJ4*YXHc-J{Ctr{e)jsAke z$jVVJ)loKeb~yFGx}So$VuZl4isvsi=3i6gf1L{Pp-ecTwvH0&@pA*@24t)uaM-Lx zl3O_ha<2Uu=erIPnEO)e#!0nB%- z_dIG6|IpF4|2;oFx`C9RVHKgMG(vgyI;`v9! zlzZB#L$-Sqzqwv>@Tl{_Z47QVw<(J$EK{BVDQ(^7tavK<<8)4uxQdsh23X^Qt+ zv0VmI;x`w={U!g%v6mV93mo4*OfxPCniRk9dG&eT{ENeHzt3}~S|{TBO`AHE!Tk70!{4AT=1beCj ziGrg|l!J}RB`?uGf(l#$M;t6sRpJhju-}}}rnzFRDJb7ujh1Ul`ONU18Wv15)fcKU zLQ78=PlU;w6vz`e2G$Nf{P~=?B6#`p!bc(qY~4;Jxr#*hm>wd-*B$tp5zt-UMZ zvL+J#bjkzFo*IIoZs|Y+7>ioZHvovWSeI&*~N|k3v$rWIu;w5SqM@h$q?)HEg}+0-ifo=Xf894=f&Z}-vM`FZJOrp*Mr!uQbAq0%v>$GAMP1_ z@;W!iQVdr{QIgyK{`O-#zDk*oL^|JoiFAIWj&y#Pdpb!g%gctC1wjCD$hkXX%~%7` zmY)1Wfs575GI127T7$N`O8-JP>`eS0vO?gcQaeixv|f*`j(vYK&;~;gM~3F^2YtIH z!`S)xKQ2={c3t_L21%z}_+t3SeBO3G)}_?M}utl}v>K{m*(V(H{! zwHM*7NN}F?KqLq2M$V#lW!bcM5l9f-*MZd<+cLac5mtK3`pPu!*6T&q5C}!?_u@Q# z>38KIHl|l`D>jc_wDvyH0$+;QdWC4$1wF;C^`~3 zZrGc5KC+=eqzZX1*@L`(idwIs)6BiSXVS(WanV!74@%Ty4Wzc z#9`K9id{3w>^<-WJ_f@ay1EDAGaKd@4oO+-Neen`d>B9ncfayqncn&0wy%&8TcF8I zu^XrDny6#@(b6?W$0bh7TA#c?x9qz@OmuQfjz@et825_Y?7I;Iev6fFu683+S`)3EfsP@{osl=rt3V zLJjx!Iw-xWTMYq(2+BS^^dN2D(;`DpLf~!}u6syNO6zweunt@S{lDCl4qdWHfP=jo25 z9cne*G%vEQRbb`y+y-n;d!a$6+>Ae5_K|T&-KR2^(l)H`N!Zf1^fmrA++Pe#zX{9r zZOgDsQ0pfrMJl}fuCwc4Ya$oRtDA$Rn#1OmD(aQ$?}b`zEMuitHa84tBx^O%8_FK1 z2;7673dplT7785aU7%4CrlTD%4GN3_1xjmxN})qBV$01dSk-lCSQsQ^r1kSnVG_$E zTk0NtDuq@2cZRZN<}xp)^6TOWKV5PZ2aXNfkpj}c;_9hy2yy1+DGHGh@Yj(r0bW{t z)j%VPG1NJ+A2-ex5_~{`!b4z$R-_Q)Xb;WyFMUPjRi;24F1v&^S(Ke~R z$W@QTmuNA@VfXxuExkHfb!h+{ETd`Aj3FE2OSH@j0w2tT^Q%dO*qpmMr+8bQtj1Pb zp(HfF=Wnd)C(TM2PeD{r!+iAgNwHq)EnZ7#Bd-GPN$pppE(;~d4JR1-(a^Q~h06eN z(K_~?Xs%xu-s| zPevL#FmA`u`}MiXDOgNq5l78OQM@Lywa)DY%Mlgj>XKVH0OwZARAoz}>ioLU#Yep) z>KO78nqS=NMh&Pj)cP{p@}#oV*b$d1zXld_E*o*z$(vbe%hN zX98r(RUJxOQL6kdKV<#47)hkRO*Q|)GF`5jY}yk2EmkvK#73HOT?Vb&WlFhPu|7Y} zR$F~9w{lFSrd{JRuI_)mVm)+xptkfrSGmoV+hIU}$@S-uy#CqVQsBpgPrDB0!3kGQ zcJ^<)KBv!?I=l&pI?Z{(uVx~%{F#rRQ%qrNs;D@frpRNTCs{Qy$;3aWH`%I}l$Pno zDKrTUBWd?g=5q(O!<t!gub0#X zlJ}#BRt8(m5{A9eunGc8Si4^}x!P zWh5ObrzKukN?%w}pdaMLN|JJf!_zxO)N(}fDdN&=?Jrg4oClE*W@DzJLrvMGerM+z zs}KvxkU+k&M>dQX!BpF;Ysr_Zkisy;I^=vem{JlQ1uhHr!-x-@#+OIemU~LI8@#(q zG(QJ8yIAaVhOJt6ZbA2|L6_O)+mTaiNHFuju~PGYx-#`h$)Sn!;(oWE6}imLPj6L^ zCH%&I4~(}w?y(Bdif`OK4w(FW&aAwq@i+q1?|1M>T3cd^{|V3hvDC)U?*WsJ>xcvV zJkQ52K38#KDBas_eVV}b&ABbZ6}^-GqLJmA*4q|{0y;9{0Qm-itP~84<9v==4A2L| z@XfFx`xvmtlk*cak{ok`FGg<<|v%)z+S?hX=|AW=yFa%;0^9w20dZ3*SOKkN|AorrwQ`5enG zfKn}1`=mUB%A`$|86hD;@~X+)FS|s05K`LqMM#&VQoJBVs^A&wc)j4-BI|E`G z7;-$ioAu+K(hL8$?b%0+#fND7Uqc{7iPP;h`g+R~<{Q_*?sTgB&NE)_`hEWb0jEcO zi@w($PZX--;{+4}+CcpQdBlHY2;me?<+sq2xi!u2rcv`Xkub zY1=QzK%q@*qf}iHHp7Nft`CyemjS$V$c8>B)+rpP29Kv+qtK|yPo0}ZkAlQe9ZNtV z63Z(LOOtE%%*Ot;P@%(Gy!WQYyOb-N<=T;k1UuMvZX4w9+y{nSYJJEk~2SinhBuf5hhwV!ZL`9 z=&E>oS=ykY7(|rLmySYU*RG3}L!2yBVJqD`zAyo?h*z*wdLOgVWMQ#fiOaVF)pph; z-_l{>jihjKwhVm7s;_=f=3uJna&P-r^m|3cR4t+D-}7pUigT** zjIcVJYZ}n#qc=4Z1!lX=?C;!us$7p9sIBB!OOGRpM&Ks70!xIU1WPfo}H>wIqWQ6L#Hch()_<8PrCUBAhX-zwCV|E4U}`n9vwbTIagI^Krv|$~=;<1fag~9-I^%T2F0V~N57i2uax1I*BCd28bZx({z;g^oT z*cocl6%Ty(Y3<=^;NhrE>h$}`EaSi6hpgwD>z{ZPA?+`u(L>?a+OkhPnJ*4rK+dnP zwPaV3X#qCjfDj4-2~6R8q9?cdCE{VDlIxYk$w}~N#?O0!pO5E;52E<8o(2E%&-=#t z{NP+SlbVvWwV3CB74y%|r#1ba2ARA4FV9I5&DyuS8pr_G94`jA=8FwLzylDo0r;(f z_n-{dwcX9?dy^Jc8m?9UUwv=zTfVIR5ld_d+$AtPk=R%YFEt4`O{K!m_qv$G_DD4M zJUCNzl?)pEq{!8Bc8WGn+qr(%lVK8klT4L}3SaR(XUl$u0JG&(iRNC9NiE1ogWUt{ zoD#l$U+-&LGJVL7J2u1aGDDN9Uh{%utUuR(6Mu+M#h2WW4Zf6%#4hk}-`+mT$Z5Gv z-V!o*-%R(tUl`rZX?aX0`fldFIft#W_MwmBa%?qVwDo?IQ}Q8VI8pM?P|A4A)!{&^ zK~=`4Yo}Ir&3T1SqFHcnk`umh{Sga#D}J^3r#pArrY=^!TW0M)xk^nn7t z_izQP2=4f8zR^^fRw{Ffb@#p`%WU2iy}(=B*h;}S)`mz2&*Dqob@fAk)m`?NI(OVg z4F|2RJ0gCta~Z!sqZl5S{O<>|g17O2im=sr^F^`Ls;c`CTU8xvX0ZlNf%m&mgTEc4 z_Bo&Isg?h_c>KfViO1DeYi2PBAZ~aWJ4bhDWOIou9c2)GQ>Nk^j)M+GBdu!x;up-w zfDI*)iTYEW60AosVk^Vj6HIH1RLqM&R6vWIWQk{$iD!q259m_KEmJAC;+q)CMu4M7 z{+sU6g;YW3ByXHhQlW?B93GWO zR+T0Zg(d-wuOeecZ>Y9Iiyqf0;Jk%QcFzA&dZnc7t8 zufjucG^<|JOvyqsyUElxld?Sqmb|cDwG$bdydaC;&GS-N_F$`C_(M8UVEb2s_3t6i z2rd?`0p=$jwGO@n`X#fsJ)Y%@_--n{(LTo6ysKG}MUV~KYRYz!=SjypI>lSeT13r9 zpvCMl#2)clnXrXqGDhiRuz0K6$Oej}m6PZR)qE|nk!Y$`olskeY__v&7ExVmqwSeN z$+V^J=RF|D_0o8o?}N45J>5c<+jVhf9H^>?WbB`?UhkzeJPzZMimrd)m`vM^`6jL! zI4iPQIR-KJ`#kfxf&ZI`>hzBb{u(KD>oeY^W|OZj)325UO}|(TGcF047g`-K{%AHW za5}L0@!hN>V3_fTp!pZ4i&sppol4g`*zepre*yn_SuMB7zq7}toA!}Ssm7;UpEzC| zj7`;Dakw~XOg8^zcsZOn*|^R95iNkVZXj!2>8*zlA?DYl4<6m4UP_$8(w0{mn_k|N z!ogCPA352=dDu8SWIKr`=ll@U-#47!4E@x{pfIcCR-i2yA}OMS6fF>TEkKIq2n&Y3 za2wQUS*B9hBvV+WmJ29yzagf+Vi7=(1bq0p|JiWLxqp^uihWxJ4~spAEE)wM|1AoZ z#oCrF8kWThg;P+g=2vyg^ewsCZ2z#V_zAyKeoPisehi{R5!7JUEyySrP{{m}QZ5){ zt~OH;NAV5L_pC|@fGzNr(l@3D3yc>Rfh26p~98!`8Q4Z>_78oCpcW}<$jN8Rn4die54dSS{Ui< zX%q3gf|AwbtS`nbKU{MC+~Ep-A_=~KVt>jrmJMbP*#->+muFnB1V8Prt>$9hCJHrK zJ#vHnDzVN83QEgq>D4sLyQ`2_|)Wt9iRw znk9}P3%u&vWebT>Sv8azvX+wE*snCKI6n&u(9HALJ=1lS^zEH(!w1A0MCST?Yvocb zr^7pX+R)YG?ypONSxf)mu#m`yOF_GuwLc?Gz&C?3fSG#tvnx5y-+sMm0h%qICzycj z|5~$o{d~U1VN?rX z>%IP7VQc*M>ndO7685@gv^(k8d6T^Om0_zFFmY$8tjV*j5KTrfZ5Z-FJqOgN%O(58#OjX> zzs?yjwTPBo`t0&Tv+hitDiOhDUH^E})1AGGW|+KXW7XA(v!_y*U+dk^O8>EnZ;Iqe zwu2E5VVv6m#qAlR_42nM>i}&@%SZ{`zHH)rE9Vh5s4+?J1OlO^UL)DX zV#@0@$~MK!DpX)u_OmWiyGd*M35-TmuiP3Qam&kl~mB+6!)&&*R{aW0Chsh z#ILWvvSy(e8L{IO9zHN9^TleJiu2-3s2p}s(`h-{M^+{NoXW^d%l(XaVSCi3v33>L z$RQ@(;)aWRW~R2G5nq6Z^JMUD)%M*tg?|YE=$ks_Wz-@m(der&asx%2Tmh9&+P+^D z=aq2EvFt$G;X^>_2KMdeT@o66|jK2mYwyP)Lv!jOK zR1?E_3q^qg_Q%OftfKeYvA8__dSolQP)9T%SKgu5?(x#`Zm5J`}`EyamuO8iOk~N zQE|uKJzlIjyo%&t`~Ic%^UtWHCnVlohV;dO+0Vb}GfQJ@TWx^qc#5}0Zj1V1z&qF8 zx%QkWcYGQj@tRhZ(Lmp#n?PjVzyf|yaPk-CsBy9ZGRNM^#`W0djabauQ~Bk{9|et@ zL%$T;A(FgTtlukQ{%ayy9tqRA7|D*#w5I4S6xvtuzE;h|yn~Q1QFzs|-d|Esr86&P zMdJIk6ZzC*yS0bEg(@#l(Nn8zBsOk-eE$}!iC2Mkkdy~!K9a&g$GrV-PdvhiSO8N6 z#j9NDrA<3;q(_0m&<7qi%jwB?N7BBI2ngnwk)Bk#mY+v*VUJEDOGJCufkF=Yl zXpb9TH}_2cmD~`Ko(F5(=0C6JlTXiO`fhIZ1;iSfv2`UZ^asQ$jRgHh zbg2t;@m{Yc+ALdEJQ&=lqv`wYJGvF$6ZSYUsQg6*1E<$n^vKs<5tO=m5hMC<^tG$y z%Rk?<)MQWqbsJq~9yQ=%=NT*3`j%EcF*rj(@;4q!Aueo|l=1MBwv!%91xv1m7VFn;YNe;A%g-2TlTUHa~>Yan1-DhLvycH-j} z0-qBH3={0bV=8>LJ&NPlp`wH;UXoDXLHynh||Sju%PN~H4KBRP1e4sEo6NJ< zdbD$u=~rsv_E(YXEIw#miMo5@Zx)x_uE~n4)(+;9SF^fYQ=K@^oz91R7}h*TLRL{) z-CxjfE_iqTWDje%y->WkKb|RTIpBU_M7_w;qjPJ zj-uzVzgOv2Eq|Ye0hHgg zXYnL7m-t@2pYnn{2GhMC6?%6|;J<`b^KW0yQxkSv2Lo5VJ6w(#A#3{%yvv|)JKr%& zRPk+JHc|s;M-p&cIP5Gq$*=oPrMEM3yM3_ZeCay422P*ny?Xj+ZJ%pR*N5G`%3{D( z0)E4}s6Af7!Z)+|&B2uZY|q%(JF4G+(cWb>O9>WO3(n#>xmjErl^Wi}|UPa>i<-7tT|#kh%oOg1Jd?T@C+ z!V5^!!4ztpEGd;xzeFV169SuDwFmW^R?Kp5-|P^k*brtul2oIKOov{@!aFvBGF>!9 zeT>$VQAj>C1UUX#e8{tS>wHyqJVW``8VjrACU(tav{a&k|0B8)N3Z1nR3305{O-BJ zTea=nhK7pgg>8L~Y)pmnr~m#24w1NE@%lh|Zqoa0vroEbaazMEKTP3bh}dX!+pK@d zVc^VZ=uE-1YN%n&Tyf8ZRQ1_a9WwK4?Ccj2s|Y3`M%FeC<)2>x{2yD}?;i@YQxt^< z6$tl;Mr0i0s*>xz`jtSAhhag)(~btutF|xHoS>3hQi{)i#k~6jhWAR~aU=Ki!*?pd z%ls2b{wG$>LgdiSu;ZI%iT~aw$;N@On6GHPTauq8Vkt)2 zKhwt4&u$R95R9vYWtzq?NMl7VhQu=H8Zs*$VW^WdHlWQ;T$lb_RcY?!3dpB0f9F1F zm=YEl+$)|r#qFlK5iSNMx?|_`H6LNV4;I7H^Gms3NfpHXK-F|iSo)Jl6BUQ9$w@kxI_f3l$PgQs1RoXHfvr;dP8I$Cp}TW3Dopx9Q(@TZoV$)q^@fqqLN z8JzIQ=P88z6%1?y37#RdbeKsNV)e=9mx;7W z&C!vTQ1qDd(s?byA)$4iS1!BGEbK+F`#fSvaz}GaZSqA6CBK_#jway?PabGW6KTp4 zam$l$Fwr1LjZRI5PE3aI23}msR9W+bk0$B-B`bYCzBS$}f=E3;c@01OyjT}dAi(#{ zLL&{mqy#@F_D0Rn#z4F>jdQBHg}k%Jor4r8(&h_fv&t_mHOaT75gJ$OJdR5xr~Dy=lL#AAavddLLJA-gkEwkNu0?`wx0=DVs?CV7<%n z%~!J3=;R=P`MLVhwIv}i8V1gSIvpKP<#oT$`fnq6+xT=(C@_4I9k$%?@wq)Vd;fBI zoRHfs1fce7jc`*B8(t^AJ)71lmXpX-dFHC^5#L;Vf)>RVa;#y3DJ8GVkF`xV_oEMZut)`_kCuVYF^WiLW#4^OMgC` zFEuZ(KCU^P!okH~spOF5Wwid}b~2#|SLa@uAfwi5{W#(~s1C!=Ez&;Bl@^5j`^DO)hL z8PpEAs@eTFhy};yUL}&75rXDKlG}q45dAeWXq!!jU^7)_P*Wj73H{j=ZS9P-do>K? z=V=t@Rh^`^IX@NcJ<)udZBnoRxOdwB1%7hWi<8jj!1#g+9qaDU3;OMNSEOlazyyenFCN&Dx z=#{=c3)bV3vkl@Z5*uh_Cxn1yQQt(^VXhSmAD4rl(a@VRwbEzXU<-@5j4GvuR`E;i zIhcFXO|3=92Sd5~8yzCEI+MnuO072p-v)HdssD*=x}gS@1!|a@K_AP1RIhhK3QpAj z(9iLZEg}AkYLv2Uy1$x zr>LvuLSY^W0)07B8w)n87P)pC?Ubg$z(j!Y6RGeUQ|O<$_B`A(7T5OZzf{}i;2JH8 zhEOK0pNN@jq11|LP@^yj)~qSdW?V)d)6{JZw+OBjl&5Qx zw#{Sk4^Nl4XoN!9GENEaS8S0JIeR6+jI*`ScL$i~(RSwhe}gP|{1Y4DANwXmq0F}2q8=CS)Y|OBWhE}Mj1iJIISZ_RXZSl)pT>OudA{khs~J3H zlK2%hY?0Ya-7V83!bAMyBgvgyr^+K)bThSmYvM=%CaGQmm{W=@i40v94Y@!vRM~wU z&e#w5n$Sq5ARL7vq!ju#1*u+^3RlD?QL&iRw##5mtD*ZEa|RjhS`Gz+1STz5^g7DE zc`wGmY6NOD>cr8X6dHnZ$SULya~l;s=0t|@9oZ*zqi7Z}=quk=wGfJ}+69)d*i ze+TYCgnK@5l)16%kJ>?k?}gb#@jr_?rh`j?LB9)dux$9Yf@y`0o|46c_Bg#ft<9QXyotzgc-HAmz$e6~n9*tP z)g@NDrMFgwliT$edzfK;XCV3e@^_CrhT^LA-MPk>tTxwQ^_;{G_Xp%t>z)%K-+#2a zKhUP0^X*>0;Vid5ZzaQ%Ft$2>P~u#4ZoL9LQ0H6LU(R2SJI_Y3Iz9ulUs1TdpCG~* z1h#5CC8~J$j^-r@JD-o+Q~yk2pY#kTc#b2d%c9fL)?oJ)?^RO9zqMx*ETXIxHUmDF~17dt-p zdY(PKU*otucj2gQ`F7|29cFdC1hN94uchiBzwS9Udm6{(ybs|uy=l<9U?kd(vm1Gz zi}0X?ktW+%9VUGtO4qrLyFVJdVru*#@H+W-_A|AT?FDL3AW~&?W3%$VU|^plkd1 zcPc@3>GyYLX?1TbPRJXky|XX$0yn|zI63v_*HOHus>p&(8;=Db{tXx&Xqb3mO5<{P z(#$F|&>r5`DgJ|9jE6L@ORB$ax_M5MiaSnCTejIjQYQnLmcx5?y?Zu&XSM?;lKS<- zHQYNII#Lzqm>ktyQLM4+Xob>@yz~A4iN(mQ4RjL{$z-ggp|31Gx%_IScIqLIH7p}x z$&eKMDtc=urSL3uRHBu-!bV8|HAK4@jH{NctOy9eId^5!yvV8$#^x~turYl!Ho;^* zvU`FP4nv$2rH%z9HwCj#nKLh$vrm8K+6ZXb#qkPNan*{Mv@r}?s2E|C5{X5p#|u@U z@U*Z1r^^6MWgo857k{olDqNYkW>y6Q6lx1$rv!Na(u7MJ(#8(tj;Q{LZF(upT>~!P zDH0IN2jBSzz+dr&sHzIk1BRa*U)*}j&br&Po|#%Wn--KrzR+_C|1!c2dltU=i__C~P~G#^(MC=53WlB_H#{i2i%xby%MsTPi@ zhEAGdDAVASYnf7ciLJJj&Z)TN>VooSBVK=jPMYU~VR{qs`0d-0>6ZcKQ`D(tn5zly zV7qf6NGBB3ta@UPUbHpkMOJxB(=5{PZZD`Y;C3>ZIP}bVjF-7eQ8T-I=~yMa=scvm znT9=*E01@N2#WV)3SJM!dpmen zap~$sYS2Ug)jx^YdV@|gn{a|^^v!+P8u_G`m9=du8YCYF~x*h2*CKSL!&V%RVCNi z#r=hgnjbl-c?=PCNi$G2ENEP!Q9MbZb)ZSYGq$!|RqND5IC0rGdR zC;pWu9R8RC6%>5(MRK!4Y~p8AmdWWtjm07MJ<;;uXnk0#_Zz0$x$f5B`0DF6iU1bf z$mX2btsmk<0A}#a$LTsMOAGw=GN}Z2e-HP!}_ns`*wj&JmC$)!ROsy zzSE0-uRh!SBgDS_7rq~vLc+(~uur3mzGFZ@$ATfL>Oe@>_nvlIuloQP_1FBKlU7lP z9ro5Ju`4#^ru&eb88sw^I~p6NbmeX)RM{rA#T-xI4V6>SvOAJS_9$r*Q%HV1x@Assa6Y{!cznN9lT=iHW|LX4DP)_A` z-iDT7+&EY&{7%^E9EPEO;qd(YNnX#dXE`&D%kKs5&`w~#Z{1A0?LiwVK2^KxBSGdt z&wl&dX=>eL3b@~r%j3U+pMU3aABM2QJ?`!BqV8cW`|RI$x3D*ybH}4UKFB(4)A7J5 z;rb74xT;jp@rIV#j(>ly(k!d%ElasM$Lab%4cLQrE-tg|+F>6Kh5_Mn$>$v+Gj>yd zHa4+>-#wi@tg7bz66@~YIQ@!4d|z@# zchTDge@H*9<9IErwy&8o-NXj}*iM$)EMDxj5xSx{M&QVRyM ziU#O8gg4+xJUCaDMkKL(L#+~_KrF()iq`nxeq2zkEdI)MJH$Hp($ycB|Dfq`0B6O> zZ}zs2qxraW{pGTDcfstexUlsz-qVguN^Pe1A)_pZeLq@C`hMTt`abi0HxarBQgrlqAnDcl>MpjT=pyBd0 zhpgjkH3knxF3S`+SQ8WlLsbu!bISs~RcHgZ$xn>21XT!9q?T&_I}K`zOMnBRff~p{sKzOdSXPxW0|X%}2z`rjq2`YnaEqgF$x&-5iSY zv^>4e>I~<%;iJ%Q z3fq-=`KylOo%Y~e6ils7T=JyH(TP9`S_UFkBC(Y5PozCFnr8{p_~PPzx{nsiiQl1Kl;& zd(<=^kl6*av`=MH8U;Qt9ED$k|My5<2fTQT%o3>yvE!f9kAhkFc7*L;Lka&;wd!-G z47GYI5E;AM1T!DtCU1Y<&1Np6cks@ks8s;qT#PJ>jIuZ)L`m|UVp5tMAO;gzV+k!O z_Us1!MPgi1!M&i5@aNi!ev$&>LW940b|ZIPhZJ6Sb|HRbX()gsXD}r0BV;9di2C=# z6X2=gJPd>1q_i2Xyhkv|_kN(l7llJ%JgzHR1HSk>KR4hlcw4FHOZsU-7YI+uk*n>V zg+^s=!e53>!d1X9!6cWK#{*YM88}5@)I_IpVj?~tTyH5oRHs^2hPR7Ew#ZyZ1-!Kp zz&Vn8XAn9UO8ZArm2OI2^|gi;maDHo&!LJexx?nDy& z96W(5iZmJ^$we%>Q4opN*gLBn&T4-PcJd%`{14zaJ%(CWr@4Gi z;i#(xc9xRE2)ms1{D+rUt+`!8Y^ba1{|&e_{c4$7*j-%qc%}mMNaKsv)w6E<)c=tG za>oZ*&tt?ul@vgJIEiY$?WGtqzy*}GYYBc`LW+M_@;gTJn%Xp5T=ug5?hf#fB;VpPQP314E0fsA?;?Y~l<3(W<}J+#W$h#dft1 zuR8ZSm_Xg|*r$8Fw&C}v9oL-J(Ld{EVCrxEL>J^4IiWhog)7ur)pWcVrPuNUG(V_j zSoo~Eui1a(udF6l&P-PP{$cMjgPIvFlpz^WNLj8CUE2T~K4Qw{XrsRKv|x?eG4Q9r z*1rLVO&=~Zr7Q?ZqRGVpdyH`Rfk8bKj^zSDWgC86>FUm0E&_4L>d!v_y!9C^)v3czJ7685M2vE5G3{s3W4#I+-FKrSEmf*%`;tR+)2$E}L*k#8z3=UnN(Uqua4Uc;? z8TmD{joeJxO`nKZRS9r$Wq(RW0P`9th+-ykc`lHJgO zdUn}Rg@8P|bQ)r$B!em6axkU@iM2xOEXZ2{4gDuv;|^y`{>ea89gB-tM+5)FUBCJvoTuSw`(Gg>F>MT zOruNX&z~d%Jkd{kzF71V+V*Z)4IISoy3lbEP#_*KH4ZT~7BMx3GBrLk;nxd`l!%q! zN34;x;gVr;qqudKZA?fSP`%p1H?s`knn|jrkpg138VsH)L6HhMvk*12IJs6Ge;FKe zfjDU7=$WZdD?(8#A{Rd*4p_TN<5>H^#w{EZGb<#N=eleF5#(kkB;fG%Kx)-It?tw5 zp3Rb{+tx2HREbRkN=*^OqvF0Es?pT;v<+pGw92|1`egR5DFr~lplHFI?g{E=mlyp zMV$QrBT`x)ZG&^dqZ=Gj>k~^>)BqY2X2&#prXV1Ft*;MxA;^0*nt_Lhk2n z;3788*hM_C>%sZy2sD(Th({IB)c|ZuehU#A5St&>&l07Pr%3BLjA70bXG_HTNg)nA z$Nh60Bad&)n0nFR@4}Uu+vJV>tu69-1q}2mNOyF%hUPUY{#zP_|V>I#4BTqg0{ zEzoSZpDZ+65Uz!(v!t|YveqAd|3}DOt2Y^twZ9P*<$aZC=KV663K0JSmk-@<@qVwn zjIS@<1EF^UFkrt948e^C@AvA^IAU0mw|Wx4Q8vT7dPA%|A;9tTCUPwBl=Z{+m6nm; zV=^)IKfH(Iyx24wj#rlb*_19t=ie}?EArofFaJ}h&JM4ZRtCyjR$I2ki#fMS>~lLd z`jK{cw-H3w{o2!a?1ZDAQ*$OiHS1q!ej;ZZ?oahQGp>;c7FwZg=fuTReam&)raG`& znl1`5TXNY!_mbDyzYO_F*yFVXCBvK3O1riDI3IQ<;1@ z)7NhUW)=M#9Ux^xj-r8zv-HIJE7xziHrr|kc6>u^BB@KhC(z%g*9?b`GtchA{FIf%O>n|(+ZBpKs}N+~jm4C9Lw_D^%ARRt_x`Pc@EjQ^>}S7|PxcLHqAVajl2 zWzy>4dl)%)$g`k2gntry2{t|ZX?&yN@^ytK9WdUrv2H9+X_!fL&-U`(i9&&|===d+ zi)4feiNA3u>!<7rfEGG(INGce`DitZ?Dt=Y0h{si>X3k@n(8v}oReLS67mZnhqn!<={VN?k zFBQEggIEfuXqPaPZj5M(moGMCo$RnQ;Mn+=%BW6K<+u-+?M+0EJ~o2|UB4P@_;vOKLmmwyZF|I&M?0x|FnzdG>! z^SeHL^&0*4m!}xjAgGa-0Lg%{_*4jo{UE8Fz@2Cpef1Tlu#8y`0%o4wmTWX_Ac|Gy zzl2YLUxDsvl%~}gypc?gOMXk$epMPN(X_((HzE0GOt%ZGd}y7*QFI(C;yqYm*F)itVnyV5kr>xQP)zQ5pZS;} zb8zbfI=(Gn6!=^=CDp;HqqQI;lp%GC4&8#4fidSXzmH#+`q&kIhEP721ln&3Jab?D!FYCx!bSVbwT_kmOKyS9 zi7M?8HXUHRQnS}&A<9#nmo z%x4z2dR>rJ>u&CzR{KtEc6~&4zrCGm6J2zFU;tw}zMyXl)am5O@CUSahZ)IRW;Kku z(0f+-{@Zh$0IIO>Q#~Z?)71~ZiQ->=L*qa6Zf@sgzVP~tO}?NkIbL!pr`lq}j{pqJ zq?X*@=;VSTU=sgotq#eLjdrFj`P+!}{T}LZ<#5*~Gp^W$KWD+iUF&drN_(8QASccu zvp!{E*$UQ`v2V2tWcLE;O@uJ$!a%|1z&u&M2-pN|InD$oyI2>w+~29f7}k`q;$N~9 zg!XP@hO^qP!V?#X9d=ekVs$)5;$Lsn)=Qv=zFKHOgs-0Uz$hS;G?h_|!7KM2xe z>upH?MKv+|ojPz3w)Um$E-tz6v7Dml8TW6?Ol*2%dR4?J)WwOm#o2qquk=u0@wb)U zI_JaPZ^_=1x=jF1b9Ro9YhPfepA`~uW-%=cBTH1^W2sTJwKA#5=Yt_hF_o5;(=1O0 zC1=sGOwIazkQe6|V}c#ZAQMzM0l_s5pSG55A3}2cHz=VxaPLqM_=g!;xWx7k$LA$B zK}7{v2$tSkvV8L$Iu8Q>v`q}bXAZy@O{naqGYL5|R{ulO?HG!ns>Ar^F5qPNJ~IR; zWZ-??{Ed1Ijb*&54|3e$zd>0y1d?eQ=zmL4Tyx=^^AKErKQtR%HX7bH>tAsgTyaDy zZ}(%G4-uLVp_})e$r;&4WP`7UV2v7C3h&U#Py5VeS@08OJEcrjbkcwr5!I2gWi(48 z6<)U3khvn$Pb_?VOhOK*VjUlq?S30|`(-S8wRFo)Q3spwxaW`=)_>|EH{u8a6^K`g z00-L0Le2)bF43@f^MF|zPmTJn;Bv6oEzxxUS}HBc>zOX7F?`rnJiHM@!3k`bNjcz)m&Ro_ua=&wBAar z8zn2Y$*JojVPNkURX=tLfoR>!R*zNUb9ZF)tTISLICkX=i-M^y!`2ueLk^jvXafL$ zW1)e-k8nOpzD>BHx?@ufqW0cuUDjK(xJqUU^=w3SEkV?pd~I1^bOo}KHbGtq!vKw3 z_-qD~$qLiFc)Dc}ZZ&;*YRQaL^j~SjYBVThkunj0XJJ*rFcs|_C|N-@B3z#7m?^UE zKB9oEVv`iVQc~vM@XiP+iOmm08jC!+QR81qNtJT&(WlylVQE!FAc4Yw?o#!+8&i^k zU-$_qq+Pd|kdvL7KHekzO3IJyfUw|=AFk*J&ZiOm%d0oHkB`q_VXOjy zU~g40j0bD*>yCQ&)*)T+s|peA>unVA)k*yi_xES4I6dCov48E>YhFoRl$pVhEOy^) z>eUfmR5u-SePy4yQ24KVMf^kCO&F>UT3a#>cC0g^>bc#jCK@ODlVNCbnx1x6aJDQk z6#npfeM8_R(m#zyIOBCl_c5z-x_tc>tKBw!RsO*3dj}!Gu(`XG{6g63{VV7{{-RH( z=}UWG(tbOvoVK+2j#39vlzqd*@GLKi*|_)FP`s!J`{eR~4`ink*m;me(!$eIv9g{^yoElC?=<70WhH}$`sM!Ie9ON*B z@yACj#j+CRvKZ7j{0rmCvtmWNwtAxDuaf{CN2|U})fqlmq?~c}-l}@RQoop6XGoK+ zN6F=gCO3yk|KP-`vZdq0n3YPr;*cZ%!~L^Se{z5@J4;n?jODIMUYeZ##apw+Z!8YAP(w#b!xGZp2fqhn-i3hLoUG@?cVl1g&zAxQ0@ z!O?)%9WIyvh+rX*P%Qc;H<|+A>l%Ed}v20Q8K~9@uYRjhDj^WDG6`LPA2gO!Eg=bh zS1eTc5eocdVT^)dw4&`XvFH!hp)A8BhAA2&g#BI*70xKiv*+_{bLxvhrhllW?BO}p z{!1H-YC@wjco~0G?J5Q6yC~(TWWHnB*McD5bz#Y8hwrz< z3bn!voyQ8Exe0~+fSDo1(x`zhBaV+v7v(WS2SPs+0jPf#P=r@DAV@t($Vdtpfmml` zI4G7EmA1wZ&K|D$HiBn^p)t1Ejv>*M(Re6U<<%VtP!S!_VNi0Z!%^W40)BTVmN1K2 z1<)V8cPOwutY>`Uu6MJy@5Hd#HQA;UcKqUwk%(i0305sA1|ZbAZp1gZ9UJXPBP}Q{ z#iK>F#hzobcbN@F!V@|6*81*XuS!arKaK0BqXJovF@M#<6HQ|3Y^OOZ0>?kI)mfP{ zKBw$YhjtD}eSqL6;Fj5GW?T0#A?Nz5tGDgbp+!zTn%7_6v*XsKI!>6Mp2$c+S&a_J zQwvaRQ(Dt=^Di1*hxEYIXgGd#YAxUrrDJwc^RlJ`u($n9%FRo@T0O%<`HPxOhxGAX zs^-ZSNBMYLBM{=9ysB9g^5l0B2spYrEvapQr8`$Q%Ld_Cqag-rHI~`$uL0GRmKfc- zgt8NH?xS%-z?a&m?eo08b+MRk7^{xv9$zf;bfHQ=LtT(g2?2YTZJCcwQrdi$gsXo| z2;3C1Dy_vR9bVxA_85!IF&#L1bUb{|RaiwPncb|Hj=d1iPD0F-@+FMLI;M1z-r=6(NG4gV;DMHRXS@t@qa?Xq*q zUk1;rLL@Lz@{RZaYBmbV5_w=DZ89LbxtO-GVBoQ^Hl%hNN`<{Dw+RS{RuMr87L{>> zxv4GE+)gUDt{8*ji9eGRtK99<40V0NrMl={s{bT1jD0I-HPgmZ$|(U*ezFU&*b>pu zcJO8;nkuJ5JP36dA-e$~9CU8NC2&s!gh2jPD6{4{NHPZ!-B#$-reG}R_Y`)&X`H?l zcvchhRt@TBQ1m=mE^Bb5GiQsc@BdZh1#*!#kxWDBMQgu|y-5O>G03aBM(*45ALo0T_F}f(#G$<1 z4Ig!wwPRuH7{v#0M6QR$@{=qB5>#9UtYfww!ZUt`vF5zlsa+3V0csoojc$m=BCl@W zJVFxC?uWu*c6OL?hc7UvJ+gOhgmZ9_nrIfFp~~3<2kGX1gi#0lw8VyRa>GnzrCaE$ zglG8qxtUSA=9`d01e&urn3v9&YyQF@t|Yl*=K?EJL@;_94=qKo8n!x&PmvHg_m5-_ zO(dsuy11cvAt=f~m8@FLGO6U2CdtD@+=}uHIrloIA`w@KJn&THqz|zgK{+qElvRRB z3sY7tDobpXp72q*NJta)1ETd#wUIfSq3q%CEIqMz zzdrimH~joI;Wq?OkV)(sb$s}ae7+yOUA>88&xRd75IeC@o;&qKwby5TzP}` z>!yQViNAzdbk0izgUk441~R3KX|2mkb8)MGPuTZ+24=HRsBi2!rUy4$!;3Vn(po(^ zf&MGA;j6CzwgzQWSJ&R`vAbrq3@zlVFL~a=6Wj5H@_KNm?9t=nAL`3ZGH}T_VyDdY zu$CVJh(=mICFRu{r4w;8xV78frIQw=} znp#{o6AuwfXl}ff$B@(xG^sS^(#}CUsbgfx%GtBb2S}Ok@uMrN&+_5Dh8^S_L)%XU7L*9HD(zo@bc1bXS7qvWiI3hml@2;42ARdmq=AGYEaPR z$zh`@Ry<TAq+Z>G^62`aFzu`KgYmT7chDX~8rQp@a6g9hIs+$Aoepmt~GktdA5b>}bum-{FGZ6@h>C|sc8sFhG71W89CGQF4@Jhe$k@J{`jm|(wWeW&Dg2MGDyj&Udn)L)%zqWF?#WP8sC-o42G&-6y57ux_{j!)+9tY zxf`-NVm>(#d6!n~BwGog6Mh4U8Z(Egmv2Ad&sHP{fVVBlQ$S$YeoGVn3i$G^_;ToX z5=H@lEnTb8N{_!IOUrp`L!lGaY}_Mf59V*6nt+WFj^~$7*F?%&4S{6oB~<~>K68=Z z(T<7Sl-h0x%8f&_>8#G)pY?)~@_s!QgZ6$w$3LhE$Q$JN5dLit0nB7ZN6R5yP6W?Q zaz_~pc~^2mMzO!yzvANOrD;n|1Ylb`wwH-JV;g_H?%#ik6!%*?`p_1K8nyPhRTtuY z+Zx2P8m4N_dnhh-p(?cu&#jlJZP`82hC4ZPkZpohixSNyo#3(ww@j1`n#+5yAhM+C z{EDCmg``1e&t>#fewMAV?>a^g7ivKvekvT@96YOGY#GA>tm^QpNTn>{U?IpF;T1Ty51cqA584lz)m1W2%m zneHeu?{UCrfO-x&jy!Vp%OFuSDdmo2Rf*+buE$#%%Jv3C-x=Q@z*Bj?YR!1@|;4zxK+RWv6PKLmFmiMq5 zBda2EB==X{6bmd2I))(*@|O^C#6}uTZ%$aFjo{Ss!VrjdqP}UTt2J#aVIkfy3$~%*0Dgx)$ zI)dKMJZ-6Gd%M}inqHUar^s+e8eT^%^#QGJ^?{AT{0# z5|<-!oA*^L{aG0ck8i{ZK>FC+V5a#+mRMV9s=hV4OIL)fy&G%q`k=cR&V1Jw>j?fn z8&(A#GqishawRs<89kz7H*;|;Kfhw-$jgoy-x@T&jU^~^53Q_T`xhuI)8Kt(b5z&R z`Dr}SEgp%KE@M(Xu(VX2(9DfMTIfM1N%f&S4xsV%sbs3&BG#{ z3Rud)`D3`k-LhN^@NGUeh+PJ>1y=p?;=H<_B)n#X`r3>uZx-f&f`nacS4 zE_qDA-jZAhU(-oEOSz|(LX$=UxaLSagJARGW+-V~WetR_x!J!Fh$0u5afWvN*SCQN zVtM!l113f!zknl7S*B*1=8Cj9A&mwaNiQ~HyL?!m7hL8F)fE1n{hlfaFZvaV>*)qB zQi4^!7R$$DFUusLz)uqV<$^{4sr_Oh75U)X+}!?-ItbAWQ$%L$nmiZW$VgI`utL!{g7TIheMz zp?~RgkJ`^#^&kOoW21DJpPTEe-A@ zytrQQ6-3AtHeR-7?{2t$-H3*^!|ev!T@D-j6h-5d_z9%cm^QpobYAQ#W~9EQf_(#J zt=kaXZDCDw5!0g=&uQWX5v#w4&X;XD zi(a)FwW!Qf>_sTq#M9b>Y3rotw2Zx{XymnRR~NX+3RRFOOk0y z)q~fibp(iulYtIir)`%QniHDY5z8r2?{oKTP|_by4-!D&2TA(1fS*;*P3^$163~Kq zCkUS%>cfqz>Mx zklyG_8>L=t`fnlTY^gcBpZebEeuueglXv`IJI>?rwBFSuXZQZg#RrKv9E`Hi^K$Km z=gDC=0slJ>D*v;H1UA3p7BiQ32Lf-G(uE!Z*=C0U7GLJ4CmBDiJ(M!6ay=R!RM@A< zR1ehaOufq}y@>ceM&ElV0ia>`uv*XYW&4x7cE`Z;dRSVUaUyK48NCMJ;dNuAnyUrr z<=oLB5SMyiDg=--V_4mr?rq55xBKdo*>WJ!LQo-^?EqjFrU?TINnSSJCPg>_OZvJ29fem{_2hY2#N(9l$ z^QwBl51X^^HC5|AjF)o8)4xMRedXdOYhw+*7|UJ3RtKp~(WKM|iGH^7DaS|Al{4OSXt{BfkQu!n++-XeQpm)XP9}?;9!=(Rh82F)Nvy;lfw9(49vJbj@F~G1aq!cYB83r>#}L^DowcK+}Rlg_Hcd3}}D@*Z7qLgw`Llz)d}WvfhvDh4TAX1A)$> ztFsNkEPHh>9d8(1(dS0!bkD@V1$?nX>0Fcs{gjm&u@!`j(har7Qy@42t&L9fiG?&r zNIzde(P9|OYM6{Y|B9-_MVyJtI4g&yNN`54&TERcXQ7C)6bc>(ajh%Q-Ouar5bB@1WqPf#zDc@JrCa6;C+p^|keG=a zxln~j2hqzjDqDf^Did*Yfh7|QyAmEtkm?94bS@aT3W2pu$h1TkGz!ybP==JS^l>S6 zRo*lNmY~6gpbb@z+>RKwr&H`W=6cWJO1a0~{RH2SNJe2-PnR~q!V~pq;=h~+RMlxz zz<*IKZCE9HT!%CV1Ri8R@&g5g1ASHw3B<6k!ZDn}wW@~ELc&IhurI-e+jj#%fo*9W z<$pD{4U{GJ!zHk^N!*yuYEYvXVi$1=+Yt%}NwjX_rD~WJHj2@sT)W!Lp_zRucqWLJ ziMpMD$u<7>)VgR)d4#1pMq`dC+c_ImePD0imO}(prN2Z;ooi;E>1-abe-}ZAxHHKo zCiESm`J>-bDg^emQN9?8zA-mYQCd~fRVCu;P%9Q;ZQnXpPH5bTFGdCips}NqTR}A> z&Fx!j8qF#8qxX|w(;pMThqK|jHz3!2#KREB-=`0>nPQyg$TfJml7`>HfTwzsQCoeW zl``SU{{4k(Hf2B&)+#Q&%ng(jhr^@CNdS2NpAErKUrXL!!kvLe4hO1l%Ku~OEQ8u? zn>HNW-QC^Y-QB&o+XEDLcXx`rYq8QI#R3$H6nA&0xW0G4`DQK>eq=HkChYEY?(T6O zPV@Lf%mN(g*GwjZE_;$ZZ)fYxRFQms{~RSfHMi3XnG2EbiOZmeNV~!3)x~9Yzejj1_h=#MU+0CTd7>==3%0(&z@+Fpl`hV!%hixBmX!x`%Hc0x{hf;)qWA;YKYR zFcf`n>n_ryd*h}E@K2uLxH~M-kLAN<*?Ky*LbsP0AfkR7`pV*eoc|;0fPl#^|9isH z9?dAQ5pnVp- zc6`6fycQ6F^F#IP=LdU>z`D=HsiBES9>}To_>{BLefu7%_D30O^W$1>9n5AoHzLd% zZn-k6Y8>9P9JnrG!x=dK({z{U{$Jsxd zD8L(T_7dP{!(7!>lWpa|iBb~F7~sJ%xvY@cnHQzcRzLF8Y~=0J_EZXk1dOJ`GM6Eir<#U zTk=q$CkM6_EQgPy8AH~ro|BMn>jkAhKN|)d6L3SXHbbwn6P6CE?EK-Ch!0tM_O1)=tzjxP7smRXVPm159b4$QOC zNscz4-$-96sX#KO8NV@x|K%iS^tm-v_67@G4+&nuX+j$#QY1eXdgUntIC>Ku0L+>& z5T#R-t&N{r%@La~U!YMU$yQ^40YNn3^iPGlRcf=33@XhQCOfw7dCs+2eu|ic zfm8y*27K9s`LA0{U<66*??V`0(lS;VCBAurR^?Eo`bE|kbnToiJ^aODGl!TIMDVl` zWd@KfwNI!4P7r_I=u?0ICb(BB|AkVg9b$`hcL4vn43&`rDWnTjLP_4$ z6pS(OG**U%B#y4=1OSlY5-x9e$^4rqqvD81OWcM~UecGpN5;)L0^?b&9&d&VmrD~D z;XnBOZa{~uB!|xpt!rK0sitoySiNueN~thUFJ!F-DHE(Q{17-FPf<)ENfJM)%KTyy zMvC0G0LWf|2)tE5<^%uZs!K$oOYcseOW#i3MA`Ez-z5y?B?P$x(n6k2N)w`X%0p-h z+g}Rm*@U~(3HcIr3DKt+I${62e7UJY*S8Cjg>zB)#n*m_p+#OYwS^!aB00;#8xD|Y zrDd$j$lAxwEXRl~wu$7YVEVEA1~=4=dzjmR?!=1KWG?^npo2!Sp93s%2F=Ip?~^h| zd!jmH>LpTNqD;QziWGeEG4y2=lo58=7rm=2MR?fx&q(?qtw7n-Kjq6Q8khT1OOgfsg(+n@pg-7`}q&~J(25epWB305dm^#FM$6@)3Q@k zqs1(WpqN&Ptc$;%R0XhaHFpnN@+vfQtRU&*{79aKaUWa2Cn>?bqYUN2EMBd0Wt~EI zbe_CRUkp#@yXDPX5~jP!OJ+L_o6p845cv~tLjXO)6t{&n-n{#AB6C2_5b0>n#KY82 zxo}VlK=ez880$2&CTx6;o@|xy^n9QShARJvRgS@@4gf%ad3pHGx)eh>Hf=4j8Yh{8 zbUXRosgo$S$E%(^E-_aM{pjW&Bq`@_a`13ORNXx2!oZNf(ao0S-#fJ>pF5sY)*iFp zk+#fYcPYaF z;{?YE(N2yr192$rT8T}5KkcV?+3pQ!QPVVWb`|yvT6{$e#645Z2(dsnNzoP@^qW`~ zh$6OFq3IZ|9599h823N$nOfNcAIAdbRL^KrD!w5L?kJaMH<=BDbfr9%Rw;s(CZ3J5 zaZcJwO0(5GHY2W-Lpia$Hd3B$(1p}e^PUqdwc}>3)}uNJ4Kpj1VOZ z*KOS^f6FB)d*pX+L2t}#A=xD=5cO69x+?>;RH6@7flu1HPuiE)XmznqP$3KtZk^wg zE)+esGxHF9hvCaMYqmV&biWyvsdF%TIIyqNYdLD?q-3LfDNg_DZ1Cl9WI;)poj#!f zFWk3`r?l4F&X`{4N}x@Z`&(jN_LTtkUh}AnkKryoSKbu>ZHl3up{3Fu!vHT)Gb&@+ z)P?OO{=rVdLZM|hpqeAHs=ZCKbJ1k7ALquz^5ERPL)`uC_KR6T@i)RRWd!i@t~NAP zLc4-CK21O)JcemPF`McV5zQ8cV$~*&h7NkmyoP1AoBt3SJ7Co$(P=lJ8NiWS&hICn z*dVUF zV>6;ykT-*?*(K<DIMTJDZQ%Zn-JSjeU<`kc(F8SFZCcles>Fa=RN4~Nq>1gR_ojOarvGy9`isbD~_oI`1Y6gwJ_a*m| zOZ@tr?D4+m!WnUd?C~J4|Dvw{a$);e#`q+p2Uf- z4Aa7)*jxS-K>Erq>fKpB#S;#?PN1@7V|N_JHMD6gcRTrPk)B+8!ds#RoSp3udw1rPImy>>>{z*@&y<7)Ow5nN4moYH3XUO zv_=6OiB7mgwA`o2svldlKHqEZJS~wPQj}F_*ZIGgwM7%E;bDC$*jY24i>BTFFF&pv zQXWu0Jt5kk6x&TRS68cVye#9@`bmqJ!ww9J?MmiWe(}rw&{v$QCdoR0NJ;zPp{YEm zN2%3rSF>g|B%uH2>$h!{pd&tdBwVN6(vpg)rPU{MD~vO=rma3G^qnlkszC=PB{e)9 z7%G}Mp_TuDtsii#Tv}63?fOEgg(Y)fBbzsrDey1Mh9>=s;oTmS-n3_j;V=ao+|~lPlB}E7UbTB+V?&OuWY|PP`c-xEVu@K9OlH zLCT?@w(}2prv*ZLv0D{^V-lC*@BggMRF{$EXpv1=fVqAs@)M*AzgVF6e7yoJl*)KX zTL}$4jCN{TZ|#;TyXzKAxZX{TBNHag;R5z4z<=2(bOdrkI)NcmZ=*h0#azC+J9!tm zpRW{^OceFtsU>n#vewR71!Fs*N)>$RY1P>Xzwucpx0RFr-wgrPv~70_ce zGyyD2W=$J-#y5{6afRCeD z3+rD6APiJnap<3szQKQ^`Uc6M911AYiTcKF^QiRoniAQ7#yL{gwsVGt@9TK<)h zd}3#wovU*^gyl$wtxV}ZR7CPQ9=4G%+=s)^5j##YQULrIg{^adKkuh8CS+2_NaJU| z`b(Ivl2tjCc7i?-7}2Frs?_XY%q7EgeZw;S z6$>C9%MuLYJ9Dz6RhQifQpr2~6h6VqBf>F^-7$o?rSaUEA_e@z>U)2(aSRby#%Vdk zYg%P80D*WFC*Z&9OU@&V=9231UGw04ANHg@oQ3h?TsZ_k%4OIFEBdHa2JM&>Ba{jM z(uBEa4k1eFa%u=Q8LO<+F&I!&aU&Gd0{Ebtq zf&o6A4;8nRrl+EX$)<`M#2w=e5;z|yv~HELvqS$Vv~VzPo+T)o#5T85$uXa|nCTs2 z)&eLxWHIU+#p=$Q@V?Tk`UM8t;erbFO?t7xO#oRfVF6yyeeWDGCaqlq$Alt5Ie7OS zpeuyyKM?O=9b#U75dujfikCB?NeliZw+bQTY$XF$Z9gGs%%_-%@ldBUMRD7Tm#e{~ z^fHG;XoF(CCdmcdaDNB79~Jh5Y`~Clc|Rd$HJFY>0f2o^GdwvplD)Nx-A_N|(%^WBGlzrQb^ z4)Qkt$+x>r!EYqNZ>QNOW#3$Sp91?=H(zxEes?l{3aH!QyYzH{Oa;sVy&>gINL(i4 z?t;*7UYh#$9)i^~Q-X*n`d)vtX)`V0y*^fn;U?-g6#`>aT#f5pg9m}pU)sz_YI?1Q zs+fO6#x$GtkccB@Bp-1rU%I#0yF_4GZY&t>`p9epxmq|RyHV65#}B@Q~9 z(#)4>hCrAtimfuePv7{^_=oHVdX|~x4gjO1J!A+9lK76<7FVL*?tC-A6A4o1mc5a@ zGkcle?cUZPQ`WD#X9ziKv8_?KWQ2?Vz(0OWKmKt0l`hYtN>P{}L9_H5+LjIrAlCm` zPn0N3=<_86=*K{3ihVR)`fp}!P{!&C{^glCo65lAT(rR#>6-R-@(+%MjmpNNx{_OF z5A20oTtEVdf>lvD!Ie*c_U$_4td(o|o@)j`tOAtCy+uuLCX* zHZgIB6+%fBE>{KTrNMK3NoSyeHRqpK<5^YHTtUw@%)lpI!!A9OQM8{e@T-?j}LJwuobs}O020XCl9bfc?Z|E!zx6^Xnm3SfcL zg`!m*X{blFU#Z_A>TTChzEUOmY83emjY-O3z42&{Z2_2Of%^%zAC4M0%0(a4{)P^s z3_Bvz#f2T?A|unt){@|4F)VAth;pP1C_fO7n%nb|1;mPz7fxV||DVr_jXSwY7jX>7 z7`$_Wc`m)o0xIoLmd0W)j>;mchXYBIFBpTlRR>2pGVGn55<4!P+X_3$U}WgGaGdY6 zIrBfO6gTS2^RgUZR9|?PKI_Xr^S#Ogm83cc1z0Q9gN$SXId&DHh!$@#ph!OY-dT3O zq-<=#fK#ZDz(Yeni#W~HkPV=i%kFrP9%HJ1$@Q84eE%i)!7MMTymv$KlvO_ok=gS^ zkQM+l1WX2?mDjkBw0xt4Uc(4$L^d0J3_wtR=hjJr&dh>G{UJF@LUDx4%iJdvMmHD3 zwUXMNB49znUrOT8+}ql`&V(kL-=Yd(dac^6$tB?pJ%&Ybmbl}|I7dhW>_lKGYv5?+ z5nMXigz-pZvMOhq&{OI70qezX)_0gR-`S;3rI2SM=w}tQkB0xs+)qlK-Wq$3&z@baP-A`H1e|;ZCIJ0mK;L zy7cl3--tQnFTkhP7`!x@|4!puCjGV(8SsgO>$c8_Orx(^9>)v>iAC4a%WP&ZWGWdMp*%U5#RS(BJckr1aQliVnclJ_OYoP_EopO4|ibL>>=6Z@jGe5Z-{Gq8*5kNoP+pJN#}nW3%WP55py~T7(fiHe=FOqlM^@kK{`lGc;F#%0E<{eh z+3v&ZT~ps-Q!viu$6WzACw@dXjCgM#R>-Rw`CjMie<_J6rf>Jzz()Y^Ir(a09~u8j z=dpNOVV~z5Ej%_Z=VRKm9;Mj6Y{(m^Z7NO_ODjU~(MtivrE<&hH^am9+})e>Ps_lXj|00Hz$Ql+BKN}#+TFk7c-r&u+;Gh zLUVQz^S>{VMh+va?UpE==Exl-cb)2||CJ6DT6EL&JVE+^Q`aIRmj z>(NWg=!6glkO4U*slF1C=|nz>!=#`wJ~tFP;s7jR@DcVe55(Oz&iy;{xWE6T+>Ca! zK=qmq)A_hVF7q1eOZ#deWjjB)AqB?*<1HjH&RV2puV5Z)=*1QpvnE!_&BLNl%yB=^4{Njc^emj^` zMT))X4br*{0?-2%xqcw6O^AtEH1k|9d|)WcLfQ2hLzyeNmi#m1_}Q+(c&0trT$x~X zesBF>I6hs8>UE~lxrj}eRRC6VcQlxo1$PrQxC`45$w`*+4xUsrp6BJHfqeDe4Wh_PnG0_0wDkY7%m z+i!S*tyHww%Tw<-5%T3cB9Qhg2LwqWAc$kjz@Qf?ogu;qmr_jG*(Z9;+Kf0 zRf|O#8OuKiQ06#01l6gUN6=ELMy6U=CVaNd;6RO>@r(T<_~mnZyF(axnX zM*%?@1w(dT5qmKrhM;;P=j0%hJiun8sHFk?=Sf--DWrc#?`5RCqjUBY z5dxD9Jn%8x0O!)7DC!SKf&QYhrbw$@0dMw&Kzz>qwdO&?r?Ibzr_0TjNIy_7cBaRm z^1ECUlonO5U+0bAA4g2D&iPDj8uWudUW&ddj*7is>p@VxU64T)?@mdc148Xmeec1` zgs^n7Z1H4iLsoi+vcFPeU& zHTAvI1V8UKJ?)YO|1NsJJr$N8i%ug>=zfEac)be-QCvci4@BMl2me%tNMQ<0`|6nj z)i-oRz|#wI#A}>sFarR-|Cpb8JZ1|TNDjWSY{xi-K`R2xs|r?~mV+}G;`vfejAX5L zEC!5`HcLYQ>+GYpP!Q%=0f)cVU(zazm|8sF7lN|c<|-K(m+BYGfb)3QYLF(`1sbVV zHChcHyz5+Kr8-`&vawGJl1im+&-W{QM<45oQ{qPac zqxuL;dx?V2>}-tZ#1KKAWJOipwZpq**bgLQAI{zb`v{$vOgfQFMi;%%XO8~)SczQe zVr$0t${IUJNO4ZDy05U;USLB&;6;QecYUC05H-b@zeFQ_0;Qpmy1-%pmr=MBOiRWG z&r5X?*+ZBKxswQzy3rhq42Q*EF2jtxyqt!=6OnmkA9X?Yc9!|Jn2iiX_C`SOYO-Hw zLMR})0x)&`XRK`!Fd4n@Qz<59odpEZUO89E2n*O*{<>gGbC+Bl0b zn&i5S@v=zvm@eL{Av*v7z@_i^R6MPz2+6jmu63V5oV5TN>a;B5q%2{cX$R(013trR zwIXOlZk_<7QB1tuUo3sz_D&cI9lARr>^+mPba%7O)XPWA5v{w56SSCWAR0n6>< zXm&M`kS-UogN?u(+RL#*w?F>@qhw~eU(qZN{2t;@g+km`D3oW>4%aCXw9w*O`WgH= zlvffP{oz*bRpvVXE9QOY!0EsR*RTbQw-JC4v>LUl-OAY`SHIrZLAF~?r})}#A7XQx zd*TMD0`3!+(b%Y19hS)*mI!?2*F()+*xkO%$;cs(1&FFY5=tZ_9n+=>2j_^W+h|i+ zs&%+v+YjL9?`0Vaegja^17O{(mYQ8~D}%fjKw-EFaCIjwKVSkvJqsSnGL5myyT# z=hJvhh`<#CiIdD_9E!@-dR*!&=qRc(PX7GTzyAZI99Au*^Oo)^-=QRF80>vnI-!rIh+j~2UH^M3Szy;RJnq5IVFAZ@bK_~pZ&YI z#hr-Ne{QNdhSVM7$`-I~g+vwF{I%@vhBZ!irkxJVzFx5#`W!WA=o`1){MU-aZd9YW zbV*4QeOX-W*Tyvod4}L4!f|gKPYJN@31iCEM=e{^PW+j^1hz>$2!RG3l&2lKUhzYQ zUTkN$dLnk#7~|aQjtYz=KD!D<3?NfJxn1>WjV4@3PTg|eXvL4Jv6On-5JWEH+)kd! zEj~gJL`*bjNZO3MQ@~vRk|;-(^s8LZlU&NIp;+fcPn|=DrR>r;eoE12TH^|}b3=@M zx3`izoEB-;_nX4>I^T?*x0G{zePzh+^CMj(?S?}W@gm#sd4c`!?S=;68RtEY zhy@LaeH_}p76r$l4~Xx5yrFz-empe&iEWlBx#_EiBI&#m`}oVXT>t)#_5Qv{_78*; zQWW%zE%tUR5cK|}wATHE(ED^C74WqG@^~};0EjVUI|skjt_IPHwnxasM%2UtV_kaR zK&C-=q(RTeNUyJd^}hN3wS2vu&Hm`eN}+{c+URzlF9wh=yE? z$e|OhC91QvnkgWTa_4J;-n>9v#@F~S>p!rZM!85}CA?ngonjdtzjyY3`4Y*)0Rttb zTj?>nEk#8V8VOBOa-%iI#t*;0a$2qh4LePWZ-y9yEE@1;mmNOhe5KKiB5Eis)Akf+ z)$~h+Qa3-8i9_*RALs|a1vbmdp--rgr_q6~%SWa!PNmA?PrQi=MC|_Jn8%|~x-2f0Pz=DIK@6snrXP&AR>QT{R~nXYo1oEfe8DGb8`i#%E`O7Oi&Gb~r_|0C zfZ<=YF@k|0DVkF2Tj8%7M6<+y?{>_O{^ zEqLgQi>za_cphlQ7kh(_N)iE(DRra&3B?{=VTN_t`$R&1l7!&x1-XBN1Do;Pk{GM| za@x6BEwPCt2HmXjbz|+n1FU+z?QP#6aBqSQ*?0m13z|$CRw#OBGNkN*IVN zH+L{f{z)1&<_y6IKPqLU?9_>6j1i9My-t$2jcMyPagHfb6_r0KCHE`fNmR5X&TG?f z`UBS3Kay*0hKp+qSAQUm?(m6|7?sHxVIAajQybIek!Ut2{Q-TtM58au*3bDlwAk`d zcp}`^{6Y*xYf}L~p3a;(KcvM6Gipb{&K=I2m|qGi49eDwSP*Xa$`?P1?I-(Z4DgH+ zd(x)}w>`)ND!gJcVW_vC_DBB7607deD?1u?f9lj--R-{8&J-i1zbWELl(8nrI^(0P zz#BTd;S0LAeNe0we$bn8u|>zP{sjEH|Ni=lA9-WAp|9}f3h%olMerEF!QhQy(NUYC zCq6wmc)7FfmAbP1)xBAt637|q1XP-=QuY|d%{0>ozltOGeGJ!)?L56phBGS;m;UaI ztO$Qi{sAwTS3uCVl&+rRQ=QnB(cnfseW9#$HM3Vd<=9-MVVhK@hzFKcK_}9dm^&RZ z6I81^f^{f&ura??w8p>7WoOnURTV-DX9$xG#P>X4@351sUW`&OzCw_XwAd1|r&+r^ zNJZ7a;U$Zqz$o{kD^d#ix$tKf!mn|XRHA_ivOO_;T$MZ<8Po2nA9_G}CdLztenp3l z1m5;Wa^+X(DK;PYa~Sc;0bk%2Aq@G+ixi?WL>29=bzK!gR|u^&GyM1DphZQb$MtS% z5`P$p8?-PaGcO^DhmalA&>$FBrrPgvQBbUuhr~?B;+r$jh80 z9n@v1p~m@6&)BXpw*<}o1k(l!GiL--txPN^tbyMEnd?Ekk|2yt3qjZ#;zfm)X%I5Q z_;WjE;2>t;JdU%18nKEAv6C%So;NfjHEd^7Q`GHPX38o>1e^F}~m`^=HFv0IzGHcKKNU!&+osX-Vy}-L#OTHI<{AKEg|M4LQnPh4mdXx6&T1>Ms z{3~&1&=clnz+cv&$8D_FTddHLY|}RavcOl`jer-L?wggrKD!NgR~P+6n2tQ`&Vv69>{-S;FPvz82TXSh2V;hh>IuW#GSefH$QvQ?OTd~?C)`BE-u5r zkjYlt5~gkt=$BI2{mr}=%LonP-zkIloDDuKd8M9sMb8z1K@iVf>rsb&-d0X1rV>J| z=nDb-ERV9nHgD=j4DY10g%^6+4g{;g*@bn6tuUH2sBl>lG2fa}8H~8I!O%4D3MIeD zlW_l7Mv6u1g%{B^ zYCVOF@jqh!{va09kELeu{0AxL#|@^J$dzCgsV`Aoa!+`;TJMN<%4ZsB=+t0unynOx zXk=kjQ5rqb4e&C;kY>7Q5eS(ic&co zYKb~3`RONukRkjKS7>tQN$OhUFssDU6n+MZ9R(F#PEd^%NYf?Z4`EB{>w0D_`*_kQ z?({1Dw7df%%>3A)>MGg3#4SB<4b0j)D_SWRNF%-7u{BpJlOj%#3udN51YHjorGvXx z1;J?n+^m5$Y!issPNHR}(kPxP0P>vTIEte)KN5nPy@JV+V;vCoOT|t~jb}$Iincx? z{uks41d;x35#&6p0puG@T3%GUGXY4ccXs5b!Rd0`5=52a-$Ee^TihATQ0&-hlBWC; z9kuVX(H@tEa3JY+rVA^qF&hc>htEYEB zlmD*7Z+mC1C${#jPZiFWRP)WeSV11mb$xPnrG!fsf|;@gSsdOpd)RE>XMxIR2kZ4r zzTWx-xakWc=&y758oY_?SDHSZ2FNR2g zE+t4@HQk&1m5C84+J`;LjvgX8{wtNaSRzK;Ni06|gCNW|V&U_o$FdkNFggNlg_+={ z#Fs==w72zD63Bd32tu}GT{yV(OtS&|!)@0;Q~S-=PCNx>Lx-jP5JGQ1`sCs-EDP=s zn%1QSZuriSgdSFlwdRfoDt;@L_8eDsJU8n4rR+i6;$}S?~=k5J!pDzTe>ly^Qlc zu9~{+Tn2wYeEdx=x|;fUBKUYcWP3am3-14TI%HWvHoyG%8ywXCuil3x5yS9ckDuRs ze-;7WL+Ev%ZF6U#q3L=zxoG>eN$e*b5Y4?egK?Vre4*I7Z@CNo?m2|tZ_9knYUHku z(v!E24~u>xv55eYI0%-l_Z8X1Z{J|e=h$8t7!>q*`;B*fP3N-v<5Cp-uo)ahmZK<% z+t_qH&IV1@`CnkX(Zp97vm23j%CJ#C^v`rc3t|`bVXto=Z0I*w;VF08=mxkE^EW~7 z^R|zVf0M5dlRpypHhhuTdafA@{kCCA18x}31Osqmx7XqEfK`oP81i88>#co<5yGXd zy=DzmQosMC5p%|M&{V#Cx<-eP4oliX*ZzZ&wSE~EO)Lue22DoNXZhnMGd$X-6C$Px z-ny7s={I{LRlGVbD3xs`c4-rHIBbq+t7aReY-L z3dKgfu0>{;Yfg|&=Yp%~gJWT>J#OGmbFS;(kYOCn6^3spo^2qZW_B4+ESX7Vibi`{ zDisK4bjO`vV4YinmvlJy<$i|UA{35T>pjKie}}GQ-S~O7kJs||eX-^7%1Gb$)|uF6 zrw214#)}!2(u3@EvH=G58eaI<)^3Y8yl7)zlJi4P7;sq_+KaU1`24JJOXdr|KCYL# z;zhVN$|>l7usxN~k98T%wE#zC8bY%MB{Ck;_G2_`-XgJVhA{e9VaQlP$Y5T`V0OfC zUf5VsC~Jz;52i>jJ;SdSzB@8N9X%o@ z**cGy@T)>B=#N=a$vS5EA6%(A1M&8(u)~jaLru{O8v%5N=?ztJjhf`rU+BZSEPb>w zq{Fm{AwRG)pn&SXJn0HqoU(cjshX#S{QE@Iyq#JZIR7Uu$$6-gHo}s_SlO3N1Zx{H zAaqZAkkN|M7e?4`Asf`dPW}}3k=5j%2&6M-B#y3eB?bergp*1A8c7{-wM2fy}tzz71uq4m6-&V>lA}>UtwmA^zkH z;jvs?th|2J7>VwSYNbMMEbP#G62*}cx}GgQjVH52mvKYZOW$2!za(XVFUSe(;koj| zEIAW`2c2AQ;Sh1=-CvNR$a65DgHq*b>MwaAQ^ zrwb;)Dq*T5A)hoba4%_AcUG!9s}_&Zi`$orpf_Y@JL#RnKBIJlCDo0a5Xy2hnYHbt z?7qqsx4N_IQ?ln!PUBPAEvA3Px|jI^N&WM5k4A=iMIjF2u&QLh)fV!TEo5pEefNJ5 zqI?jDZzQs*h{F^fe~{eC!c(Q$lZx5mtk_{G@S|5{3{q0WqC(`vxy2W1W0G%Z3O4AS zbWv%E;5_M)pFz>IOmOikA!7rB{~emQd~RNb;U|XlphXpo2lYgT|59;05yXP4D)>sE zO1E58&r528XUz)$ibW3S6&M&pk?pM3A&ctb2b@{{8gctRW_k8jc2p=lkW@^~=Z1bfqhmFaM9I^gV7EzJ z8pw%m-cb(-IyDrjtIP(R=*O&Zz|DPu7y^F&^`<914TXtIIQn%6^7+uq%xQ#l;=&l* z82HlScLtAID3~--FZOz$GgQQx6=i^$K$FgpodGgldiToV076XLBu8! zNmuBLoGkhTPa5<}A$+?e_3iyA+-EEG^xMZaoa@IR+SZB`+E#Bg+0Q^U(~n4W20XtJ0u5n!N&0d$hF0JVq#xK6mgKJMZ@URSYQ&#IYbLX5HX1q_Ps z*&s+$^OS!=coM>2V=?mwg>#U;HTpmyUQwNm z86~gL{8wBiU!<&0C=9K79POnm(rh<0)-v}znVdM~l0}k<3@Cxs@cvHdU{^AaeiQm` z-?`PVoE0=IT@tIP+b8D+6nbDqDXVZkCNMRK#@=g zb)7k&h8(5kVXGl0!ohIT{p$op9_3(3jB>!ga)wY%jL>FiSv`ZaR1B|lGO`}W&f~yA z|K#GPCOxRc+lXk4owwvuf-Sumr=pMHWOm=wE|8*F5JIR$jM8yKET2vlZm1LoGgG!y ze$Zl2BpY~0yt1pLUa4C=c@fR)odSNpkuzfka)b{gcz`3vFL@wG3{vWW0^c8Xa5@mQ zvV>|U7**UxGh>xdyuOYU*@?#JPv{U2YM?>PG!RcO1g2HSY(}hTUMvW?)`iRiZLwO zCJ>}_Xie#I-CVSRiPIA77}s(bHqN>bYz9e?6E-+k(+|qfmRJ53=#U(b#uk&|h7H21 zq!;4Yi6*2x3-E*!7WVr*GbMk=_5#OQ%>Df_+A%6)7zcX-zyM@74z)lr8pD@Brl9A!u6j142K z5h1j5G)ku=t~iT<;!Y4X5sZJbydWPg5^m#9$O7vy$H~8I$AxIe z;mXc$!7gOUu1_zv^Dt!Af;FdIOXnFx1_$egFZvAr$;aUwFR^w+;y$P6at}yxvR;~ z@C=Pm6g`d<(v>l{qvAj-06)efev2a%z11-mG;pU55?kO)oZCYF4nEMxSxzc({=w1Z zh=HV3w-mTVeqY2NrL@Sp3yxO z8;kQi3Vl z#RzF{iex9*b7&aiLsK>0doLG(cl z--KBqLMRdi9dV=7G478*P6MF&0ni+YNOgPM_PxiK=N4YO-o_IOq&mGXR-l2cvb5#V z+C+xA7+!WQS-_MQv_le7_CfxY39b0@Xg7!dL%5QyC*=I0CrSjZH?~4C;)=h7iR-WF9a-Au|FuAeyucm)w+VRN(y@I3+4y zlZ(Jk?LgrC#2;JpO-OX2i{ zGG{bGYj@Bi<2occ{E5R^cmS?J0{*}8o2CLt19L1gr=iLyi#{5TY= z_7iqSY>Kuc%BwDD{&V64UQ%5mw04RF8)tk6OK6CW$TZ|(bTlx=WkUbqPXALGyw5R= z4<&Z=B39%g3Ct#eT#BF*g&cE*Y%zlr^~UDFW$avn(RKv>Kr-qjIMq9g`O*#iUPq&){aF%qJfXa0 zAztaA0v5!AOjVb%58j3(dg3H};S2iQJK+vSs->^G5Ey=R2!gPRpfu8asUQ!C;}YK? zxPz3UrPzTvQtYaGaz5L z0tn)MHj@^vs}KnjY-RlIa9uMbj^xt9GjTLfsXTG=K8ci=zp_K9=0uXzgCMsH6(TC8 z=s?^4Rp>0hOp;jm#1XMyWrwBD2xaAcy@l7M=mcAX#nUJUv6wgNVUr1XS4||LbHf+I zG~fyK-&F%>A}AdP^#H=t+uiA(bNSdDxoBWa1Az=2SKQo`8kNwmlT7 z#NT@W?DpI~&q0-cA;sivLTsSRNM2GWB3{pv#Yg=ZM@@qUnu1G^<+~t1|LqXmm?8)n z#Yv%a5l+s;!b>IHR6-nG!L6U*&Of&2*V1yWq}^6l9Z1ayVF`jm%0d>OXyM@Jnsv3c z-TF28voJU9EAc5Q-*?dfY1!g*YteW3korip%ryrbe0@A|?E)xuZ&Y!nXmo;*wph^4 zjBo^9_$r$OK&&?QM6EAwQWGs$US^R; zFi=p&!~k|&sCtk|pO2Ov9{u$LUybX9-&wOr1Bv`e{g8yne4vmPO@?nXv)O&GVV~86 zLvMctZgm#PnZ2@q3iLPsJ@IqmVUYA3P@GI*$-j&9t%wkC8>UxtfX7zK<4YH?rRoYK z5B*#SZRD_JO$iCr2o=2v8BJjwOksh??@6p*-JZVMxmU~_D3&c3O2<>dB#I$v(WCv3 zqqB^PvhAWU&5$!7okMqbccaoNF|>3y2n^kbq=F0~NH+-59Z~`>DIrLAmwb=k4;CzD ztwD)<&)L`B=eBP&91U;%UBb-i#0XZf$N!OBj0UC5z?J+!&@4HjhUD48->Zk6??TkC zWgU+IzDyEdJiAl~xGwO9dp^1;oQ?gRm2oOzn4-3Ie9;V~y$Z{z!k}B3IHi3F%X~Cq zw;Uu~=8#^z1Y!EzC8fmUu$b^O&=fmkP;^^%_Ohcn_rl@ulN@CW>QV2jGKL1N)&vJX z(pt441%gkJ^ny{>r-DRj#$|oFS`QD1W+sRBu<+>UJl`L0$58+rxqnHZw=1e=+E6CM ztTjNCkL^W-7cRLJi7tqaslB6G^h=c|;=r50c|Lj?aKL|%h4-qOzVJNI??_hYV2d{K zdQ)E%_mRD6kky;ocp*Ti8F)t~(Y{U;=<3$?ep}MD!D?VEYiLZ5XmJ?9^&ZfP@R^Lr zU*zzVZAuiHddoY7x1#i7C=fqFmu50Ol0a>X8vG)I7jkeRV-%dMaTBHn6QLTclJprm zocwlv2Tw?t;L^{sCdOK&7d^`8UuoYtmMj-;XxXb3E_GyYLAGL=k?yfj?RBtykB?$nZ1K9S+<_|e)zvp@ zzIk8bqBpTD*ra1liV|v49^cT6sBJ>jYo8JUE2{K!xuck{^lmM7S&LU$qf&vNE=T69 z@b(wwN_QxJhko~9Gp}PJl_Oc%tcjSQiD;`N8ap!2Vt)B7!K@QoyLM?@!9ceHtnk_Q z19SMb45v+c{Q~;Js)wi~)@=u$5w&)W+BZ-tbnUE_KzOHWE$1}q!3nSt<9(GMU=Bwro2HAHamk-Ncy2~Y&ee3i)s zVQ)MhsE}Yv|EXjki!b7x9XK8^o&>%%4hAxr)EU?cS2DEp4Hajji!ld1@V2p}2%K7q zgdm6D4Ds=IMWo%?{u2j3PjDNHZ;_KTDSwefDw$C#2KZa=r3;iWjg9_|T(AWOof9#@ zArv2WQfU^$8_^_wzQ=w~^-1Yw%Qw;4VsPvDDceFkHtzx7dT$tuN;H6CXd-_os>0Cy znc?R5fMNb%3~fhrO;;%G+S(&X=J}R9^zIG^5CxUn<93_iwP1zX zvk?}zO<*b+YCq{n{BP}hIH^S_#cRnYRvP~;@oFi5+T(zA3hq@uVnBs@a>lYe&NrE; z+T96MCe6Ax8c5xD#{;M&LufEx<@JT@?$kbSi5<%L;6E(UJG|V9lr>^I2yV=uK=H3iO_BULZSva zAFFa3quWYmAFlGD+ww!+x`A%_>80``!F;|SAjf`>zqzQ9?i>0Xl6WJ1FYqh)#6|LX zRHOB|ZiufT808GHYAf`;5M^^>ygMU5nnMcR&k;L+mhsJqn&^ucwL^ojq&SGqXh?RE zcjf}wo1C|;^~Hq?gy{g2(Dt<%G6BnuD(oEe#QeFLO?gEiJG!BO4=wLT66`^CfTK>K zVAb~a{o|)Ria_8)WxGI`nV%0@D*;6C_7vFPbusTh_K4lx(sFZf zc)T&0vb`%xnmG#OogHp`vb3P+*m4bLFRyoxG?ug?(p&HAsnddS*CvB2RtfU3N=zzS z{dU{A_CkJo%(P_z+Klr-&NC;nTfLlyvX&jo_{$!4+-|aCg?5n?aZ^%9&V&CRs?pQp zeKKb_l04BFf1vDcBk5Qd6JKNKVqg7{K#H|TYTgXB$)uIt7`7&pc%WkDUg_@bsImGF z)y?um!OiM!+OL)!4$;OV*w}o1K7k}nk!k29^=9@72(Y)@P{ctY#f;5s#7L$hTqq7ZFHGDE*QHv} zJNy$G^q0^}BVlf^nF`6vX0+ydVsEx*M51L;e4q05irLZZ`zEyk7!Dkbf|kK(p_1LW zWy`12uLcKNY^S%6C0m}z=L~y(N(}mO#fkXxdeA zT0h^XskEns!fP5%c^A~a)`|K1zabjE{svOSCBes*Vxy+ONqJ>KB>kEQL%^1)5r86r zOW0TsR+T>N*rj&!~l#nedGTiuY;!GvAat0IQEm}DE;ZN-Ii|6;hX z%x!XZ@dt1JLRB>D*qHaHqD7~zg{Q4Wwaa_<%?tk7c{W$^K7#~DiF6c+4D;kFr7?$E z1QtYg65teF*(utXRkdbLiRCRoks>9vMe|ThR;bwXsFs{1XYKF<1yb-|6T#jk9_sg? z(f2T#BuY98QkBnAvFj6HsqQyXQTRya;z@=_gsY_I=T@8GNiHQ8i!bH@&!gQc<J3OqOxUFo7y!;L zl|b&`ipLg0g>cJ6`+HE-b&~hr+ow`xD|uSt=O6;S@g^BW>cdt}g^OeUq*3Ln*m+CD z>jr6MFTwM_>Y&cM%vXH<$FbF`4AE$YY~?Pkon})2b|KEBD>G5#cZ?g|Ox?{3Pucip zd-;PC;pa%u0VG!wc=#eamUoi^+$lzWw)h1Rs!9 zYk?7Jnp!8y-PH=*Ht36Ra%S zzb8##$9;d3=}p@SJ1_vy0nwud|C^4i)3c$P-xrf>gQOPU;gd4&Fh7S}lStq03Vpx3 z#_`{7+HwC~QhGXmk@7o@g|^ox^Ecp7QB<$Ib zjxddtYRV!i!O-Vh2C;wB2?4PpN@`cUSgHgvXc>jz$Z#!KPU!pR;8;Hye{fCL1+#g; zh0mMLzr6RP*9_vV2}qG#hzBpPQ(OCuk@4=le7jRQq)oL~y?LJ^Ii!(Qf~lGpL@O)N z$2b#v2)XivgkOmf+V$|eZ+FACRA59llU3$gabZaeK)q zBDqCDX6{J){OHAKw4=$=tdD*Z;ezc6T0Z!6V&CFdORG25GgREq?{!5(*Iu;VE?khU zhL9c4iV}q*o2cE809q5nB^;p@O8Dl4Q9gk0S?6MN!5%m)_mk&r__riEtZN8wZ%j*Hx z^1CdY&QYim(y$-NT&yjBc~C)jZrOe-eU!CAF8j~rdNxJci)r$sMNJ*z^ZX;G`Kc@X zuA;_r=gH0T2JU9Hm*&R^G6sf}!=UeIBz|onw(2TsM@9jMW}E`2MuC^qoYLp7a_;%O zwwW~Fd>fJP3ic1&b%L{GH%Fc+ZH$7Zp@+24pUCw!)Q!;<-?W zC|}_+LH;;PCCoao|4R$Yi%7l{SEVVd%DQY8I|+C?OnH_4cUC3>Dzk5{_~BS@zB)(p{%>bFuC^Yq!EHvj zXwmG5&e_0g%Gbtrs_yUKA(LGr9-Pg%49w{~c`zq}+adTZYo15;3ZFmxt^b{?f1%WS z9VeMbt#N2jsyOf7xUlCJM{KE zy-%^959Q5Sz%fZNbKKp#uL`C~RN!i1t84{7fApOcmYa0M!IxweBF$gp=D1V6f#R2@ z%P#@k`8y9b_lL-oF$9Bgr0#CUpj=0sG+F~H$PNPnvM0FI@^Q0QL7CPfOiL#FG{Gv~ zQNnZ?7UQfT55?#*4I873`3fhRF)+o&$2>}M4;KyY6zvVgj;3@$ITWT*76GTHJKG?G zL&nFtN36CtYA<%(RS+%bye0v_9X;OOj0JpWwPI*!!F;V$jgtiD1C~CZh053h9b!2l zocI5|6`OSw72FFDB;Uz&sSOWUZpqY@+`V zoUkCN;f~WwiN;iK1Z=60q*5BohI&(aGAyUkypi?vN0v%&pB8BPo_yuFCO%(rDhdgY^{;g7;<0TemV`w9Y2&Ghz6GQq`ol+JTBVS=pdTb z=&>8Kff6S}kBxoePwk%M_S|N@UvWr19#;aW#Jos=>1AO5?5B}Jis_^SvY*9$qKMpBGO zoshwYjv|Fe(+MKIa|V4mr9d)n2n5_9|wwe@lV?@-K# zXF~c`@V?~;&Loblq=F^;fx0o2<`{9N{o0Y}sFR-JQ-{ujetJ7;?i7;u2C`sV;3!cl zvmy8cwNhhX;E1m+F>*2G)%8{1jt{UvF|iTTGYId5TGqzJ+Q8Up{>Z}c?RWtfZ)|es zYAsV~!S1d?UR476pZ08Y4qXbqMjI`cPSmguM{vgf3}q{~v4^`*Qv+Yij7wFh@<@gK z>O+J6-f^=$&Nr-m>in%PACOHgxM}gJ69tP|tF8n4b{3I^s@R%i zQ_ACu7T0}qkN57a1XDy6C#J47z0l!LH+n$h+FY-MCs#(TC^C9j%5-Rjs*#(jXunk>(@)O>T8-HhRm#DCZD^gUI0^*> zkX~0J`BjD``yps}Kr-~(-F+*%n^2EM_$!UVb547X+`#v z8~t}UqCRKz6K^^ry$rd3_s(&&x@YL&olTg1OBBfB*|;px5DnO%fAy&=%-VkP_i&Dv zsP{SNHLXliMiEQh&8ga@SAwl_0eA zAaH|9V5sK_4EW?A@YpyvbA*C-QfLBuyw z!PJH|y6N*?Jd#N_GXB&SAy0IG_och?_}5EEK9reBvC-;@nVs$#IqdQGJ3Q!tX{~D< zJhCOUd$KDy<#T9f9PPWp!yzCWoK(|QM11+WtKjrb;$0}I+xH9R{GdCfm7C$Bh303X znW7*F?Gk#Y8;g7gu56nkQcfmPa4$L~$2Q7HCP zU;67{H5%hz)k$AD4Ks>_0Vv)GDX)6YG_1S`%ymq|_COasc|f&l8?RC&q@qP1ntyej z`mL2fhl24j1d`VImTG-*ijS<_+S-C6Nrg8ta`a zk=h+ZOD&M+eNR{q*lt2C^?x#HxxP|6^;l2#xmn*RxWR@1yKMQX#`=1nBm4U$z4D|~ z%-Dr&^P9?Z|L_Eo^kIg=`Y+_g@5v{K$xC0)cGb|@2iM<{wWJKuTXIlXF?x8x4 z&WRewLq>rBo)){Cvg2gA(2%y<7f4VQTeP?rm8l?ABehxWg_PbT2P#BDg$Li1noVyX z?Je|_TkUDRnDl`XfGLSIX-GB=%9g2gCROwcj7R>U1oS5}-co5h54-vbj+j8D^eU2W}ICJ7oIwp#11%$P7Be3-MnKhJn z1da97C{bzFf1e2>S1@P|kR45N*@IBn4Jp{|vDsDL|03<_%ady_#lbejU=O0Az`?5& zIuO-k@B2577$|`N0=+-mNY$lJAm79viQz)#f>BbG%KK5dmTEi>?Jyo~PF)46V46Rc zq_g=%MAeLmd1keB7{WkUA;ccv@f}H3H4)zP9=b_Q3$wO$A|is#lHT%zy;MDag}&OA zLu09yOEN4Wyw6T5CMlO!xJ-Vb3>yZI;54LMR&WrS>M~5q$s9irw6Xu0%O>htn-&3U z&~>T&oOG%5sNEmI*N>u&hN9+AFSc+eshMY{)s|k?kFZEH2x zbQBFb#HS&6hf9?eC8HfFGl%&uzBxc#02O3&&vwxR?f<;5VsD4kX+!%sLLZUF87Yff zXGtXu7BW;4clge`nLtmb+D$#$%cND+%%s^>Hg(sa6`{Uk#yv&kNOQRb{l3;io>hNdilSp-)}NKlCqil}M>nOsse+R->NfZH${u8!t71PvLC}a zJzm)pvEw9>xlZ#V@%3xlstz9-kqfrB0qs-757}n!DlY6QA&fjOj8YLS4SW1Scb-H9 z%|cXf*Iy3vPmhMa?j(x{<1LjxX*Q^lcWLPL7I-g$FB4s?QjeB^hAY!O}nA4XgK$ucd)g_A#NF1z+fcR9fcb8sbRxZohmHdFSn!-~pbA{t0% zgG!BO&W-&#CV<&kfjxhJAm5`{i+bFmA+o==vh*cD_0l-Zz_8FeUf)WZf$FEB+M6j4PHM5Z zxuVkA=i9ebk^vYoz{s%i6O9Sj-JEs&Pe6k2sQ?cv0bV*`^&BU#;P)tKkdoIsI<0FY z9!wa7pWi(JXo5@BIxO%6hLR{1!`Hb38T6y=U8q(dTlE1kNPvI&76H9YK;2^N%rN=t z9w5v&RK4SXu5eNJG|yQt)SZw4mBR26hSJ)=O>l+CLa^In$E z9WgasBnta23d0ujku%S%|1<;#df*!V7;EwOoFOzb8sxT#d55$iVzJ)9BQv1#IW+c0 zIvDKs{ei?h@Javw^yGZKk8ITg@^!;37JQ8IUkhr_FLZD3$(}VK9JkC_FnH{p=oZrZ z>@W#A>{#HNe{D39%!CQ~sEL!hT1PG(q?; z+J(T!@BT;uXX6I~SB%8P(-|u5HK3@jSPT{OB~*eNNk(Xz{`vgqAl6v#o*jYce08b) zvsA3AqiQC*i|tkCrhYDencsDx*Cnr&7mK!0TjKgUArW;*S&JXympMMPX`T~E0%#dI zji^=``2pA9rlNio&N^qK51aj{Q}#fO#OGTB9Uw~G_&I5Hd3cfCA&*r5`>#mtLr+WX z4Wb2z-Zi7qmjwCc1(l-Fq*Q`w+GzuE+G&Dumj4lZAPklR$kA;SDX-@r<4fvygo{sL z`nKPMDAq&kduEYbVt5=fXcC5Dx~#oiC?E@bs1P%Dft$|RLO)WmIR-S-o#u34zk`>%5zh@Yri-)+WCHX-KHBAGs=ulHrKs=Lz}D$X~-R@oA{ z$D$VKS9QqDwqGi&<-maqo#Q)FqF>yN0rd{`EF-=p+ge{Yw8otMOa&#I9Rq-`Vw>@u zK6T0;YFw3j_%`!GwXheu?&<@g)T7fYmj^OWwZ`PVc1j>qAhY|m*I`B(An~zgMac?P z;t`HMWa=+40UV!E_0G?~Oj>l8!AWJ_z%Hfrmn5?{vi3UicwK+N|PF|igb4Il;-Kd)^h zA%ISZoJw=0K@n6gvWFyUL|xsXwyVI#>(jt1Z z;N?JVTn21r53UTRb(TM~c+Q~y^knGkfWPU3_k&JCGDT8XO7+f2))g?mik7vq7s4NR zeT!pAQYjXrtIq~>uB~J+9Na!l52#h!umAN zD&c(&A-zfM)~WWVF9&9*j8R{eE;ZAl%KZX)uz~qyf(xjcV}*EWT#9x@Y(BDMUvTW^ zG0ic^d}GZ6L8JDVi0m`9KbgusKe9(R9}S%*qmr!!K+@a6R)HsUKnoWVdCdno2l zl@RmF@@`nIl1eIS&bqWN@R8`6S|%xEXtH+br;(Jpa9Ih1P1RD+E~784WVjh-vh~nD zA15bm&*3JW=8;(JnHd@(AShP;L&&%%qG5<5Oy1TfB#f4$q3+xRi-nZGQ6ak)3o*!N z%}0Gx*H2`N9!S62`#(SP{>e9?K+4#k_*uEs!5d1dt3(SoF^w-27goe7$i5 zgo^DgzNh?any&>vV0GH(q*{a`wC-zkq)uMfd-Td+07M0jbRH!1z3cBFAU9887TNc7 zb~2qEcf_6d*EqpvSN8uej_jn!bT6ND!41~}sYT2KuwJkF(+qL1B>dX5EspjBoWd7x zJS60$a6qw0@7a(+a>KzW@-YpKpW7Jhp|=x$TjOpww(yZm?{2}NVZppPD= zxLsdZJ}8I64-|$eP9by(q*Su3!f0Opkla@oP~;qx-fjizf){j(Y`O}H8U_iaAQyi! z)SzVRhck}dH6L7tgi_w`H)!|1)P4EshR{nlI6E&OASE?FRiX)oUqZ7#hH(qZegkVG zdt4RFY3#@F2t@n7lPlk@^4pp|JXZQx6KnUnW;R-%rMfVyXQ&ISWUSIiXr6l%_Myo- zgM(53peHt)4%SZ5#4q$^Fjt{U3hd`Wes=eBmw>Bng1w1zL|Xk78=zW;!;YMu~7cxP3^J7!T+0D3TZFab=zd0C>JC~C;%nUVkRkv&qj>lua2ljdLHkbF6%|~fhq!buT zBBogj27tdLY*Q+Aj(}nPdDgEq$!L1cK}s7(^6erqzHX$bY21xLwmWO9Ix1hWpk3&kLqZV)JA6yi8Xhb1e_AzwBdsa^4Vs%*z0p?A1wfKZ`Gs0S(X`c-Zo zxnKk7Hr~7qn@kaV)qifi*g$KHu(nER>r2uiUYYei&@>6ixq4QRR)t+iml!;Zmqz#`K zS4-Fk1y@BLRG|<7x9=QcwH9`OiXRr&Jk*ZdhXx!EQQn-Ph|fGRWn0qTu*9GG7DFz9 zV6gRRbo*2qvlc=4z~_Ah=<4fzJ>cqEEs@4fT%f^e;_NZ|(YlN;6>n-A0y$Me_+dG? zdzN{4ICx!5EtCz!AH>SRHnfh`wP1xv0Uwj$Ka|^PxLLN@a&aXA)bD8A`bLkB;>zZ$ zPIjSIHabxJsWaA4pTlrL%MiyGGQnq7AtJ#{B4{(y7Tialt?K}v1vQh8AmEjB;%g}2<6G;G~`XENs=B1-rD6!q}qqTU()BcS; zQoIi}m))Fg(Li|Y%UB90#G4nrILMnaaHvIq*hb>K2w?NSl-Y-e@pWVsZ?oS3Vd8Kh z#Ko0KO>#!F%$HY$!I};0cZbGAJIMv24LbEEKR98QzU1)3En^4)f4pwO<)^X;&CK;8 z(GH`)(A;X?_Sjyk_B$q`KbhLurphOWz)~xX-TXI-H(TagEMu@Qez}K6=ooaUI1jw7 zE;7-6heNv)fC4Ew4qxUgWScQM&G()YIGc(^997u(EPZ<>^F5MDHp5hJ@sio*Z$6QT zc6msK!M4dr43e!v?^yq7h20s1*^jn=0Z_7EonSaFy<*w!$5M`o69o@fT5QdcG*@5Z z4uP>5Vmm`EfcLDeu;1@sDgK+YZmZ$h3&5O}5X09Jj0SjZL)CDWI`2!t>panfe}Uu9 zn3~^%8k6g*H|BjifZ&|ChQoppy|u3duOJ10O(O!iHN9vG?bo&V>@twE7WkZO2=~R=9kfp+wthj844qGTr?4bsftZ}QI6K} zA1DFBu^YuN4u0+@@AtD%m_!WmdGC`aehQ)anPoBf*in;)ect^Mjqbm-_p&yC@Mu`l z<%5{dcNBMxz>>ai-o22Z@qe*={0`OYKl45yq|6uk7bE(W6nrynC~fTqI@5j<&Krag z{+HOly}5^+GAeWE2;iAvvO(unX}&<_ zD#|;^f&Eqvbu3esFAH>Nm73_HF#xlxb}Bb8K`M?!h484FXc>JkI^!UmN%N|`YJvzy zFbj1EgWNl|d|>qm=B(xUzAFAukB$U`#Wb@u)!eqgqbG?yAE`JBshD%C8aJzVKVC<` z0C-+;oCZqc^o2?oJaUGYo<;vU(-W$_hkoBC2El;(ae!pmXJLA8d&_1NwZ3j^ImH%E z6RK2jh5M=yVyh6U-+i0W@~?Ne`BQNEhb(N1%zJATIZ`ebz%;qGiXZI4L*W&PmI@M2 znVq@F!z4-|%4HzX)&!`{+u*7mphHavtoj<#9>XA2YIP)NfMlXQJdhN#Z)0<%U^r26 zC8NPp8J*LPm*G1=CjlkZhTxaYneQBfM-b~O+ZGJlSMG=j>8+pb)bX+WM}Z{aAQYEO z)+Jo3Tt*NGA+Pj|57bDUUBHDVV}Ocq+sb?*7v%3QZ(-DSiHG5!rl{+KUW$*N3Lenw zyz~&DbgBGV+aqfW;tIq+QpRt}1vv^e!n8|p5v!1JV3*WR9Q|$z;-|)Sg%&URTJ9en zi8WMfC{8<1T-e8$wU-s^%pBk5;1o6 zq$W~gtib`SPXP|_4&KP1=PL^{g@)%*fZYp-YG8w$ItXcllw0UzlowNe)g9@Ob@&Bi zdNN3)Qd(s646(Pd46NV9`Iyuk7l(ezs5HFWyVx}qjsAP5PxK`#XGs=`Uldq%`OOx0 zB8`GRCdC|scHk{a+8TPQnq$j;j=AE=IDMc!>9jz5Z2ltCN&FY0p}^{=U(Xn>Ut!wnnPYf7-`C?U_w6 z?fM)0*)1gH^Si$^GJh|rJD)cwM?-@j#H63kb-zDPKloo&{daawS+fykXfasyS|%>$ zb09^`q*>2YGF&z3P%hY=G_sRAmWTv0KFN@pj;tCDcnA3rS;(;hVk4D?Oz8atv@rtG z+{O)W;ygxjnR;Ucl*2X?1t2hpRaPFAY=6T!L+vR8uNMQalCtG`G?wBPQZH1I!%!~b zKp{5QxDq6d!8D*i4LzOWCyvZNiDB2mr`?y8nRPleI^vfwsHg#Bz^E2;o{S{DXq&0O zB|bjNQGL5-jrOC7WZ=V4vP5!`UP9K!xQ8Vq^=6U7g+;@ZS$bm1A{rm!YX_oX8!=Od zdrGLL;w)G2@&I5uAFCDn;~I zEB3hXm@{WtA(>w%jeNWx&BKQvpC#pib= z#Q7!&Z~5dMsstbmK!fFlL`_$m*?(B{zA~&RBg=l@SHaUeAG+Z^0EMx7_&aPy45PA z76-lTNo+PZ-NEaNwhLp*yNqytuxSq7*MV2-mRLKm-+`8KTQJ-|1=n^{`)k;U)ZQ z;8X}C`TAiTRpSy>3leeL)wI2E{$PfsNmPy7lOTm0B^8Gu;6&kMEzC(E`+*7ibvjbJ z3cpCF53vN*YRC}^55z%M?GOsLn?Il1q-QGb$y5XeIf@si8UNvwO#$0ll>uCDRS~U_ z$A+QH3#@p1qkVrAs)qhe>SV*1g=5pK=u@k8hkKpAcb*Jt6i1vv5DIn>in_*!{iK|d zN@LPAXZtz!dj2^;3$@U+zhW2l?~{%jT4|s<5rSfti!f*U%di=UToE&Fl~NeP3La&H?AMOB|6Ut3vrPR_?FRNC45>p= z_Co#BmDIkSvWz4X?^DQzZOeSeLc#T`gl4FC7b|WT8;zzGWA0k-g|-$}Qix5Vmq;WT zs1W{WMx$`n*2@Xdqo4-{g@Oj0e>)cOnAd%jHhh%{4m1nkRTV4>SVk@=ACzgT0`aj? zV=%a!tbTfqa}OZmNd~mP7W$mArvymmW>9l_Tp*T0ou0eFfjEvoYlp%!Ck>slY ztjs!0W(8u(&E=xAZv$o>f%w=+=A2C;V(^1v9?*<8#3ybOZRX|31kufXDYhAK{P$~k zto%_Vg~Sj4?dkmyKAd^zwoE;|@ga?pZks_uFr^w6kxG;Kyi2{N z9Z0nXf7}Z7eqBA9j6TVdlI6PpYCncdQifsfm}F<7;N1qaqbyT?tvD3-2bZ-&C_3DW zWA`H)W@_PVynY0(SlEXiOkE+>9|dC#2RY^+C~De_5A*}7BSYQNFEv`A zq-`8wGLn(M2)7Yg-2x^MOOX-RU_Z7#x<8_WzSO;}4MupJhbn6;*w_LZHel=jq?!^R zz4zKmv&fyNw!dVieS9PTUqAiot+{v7iIS@o!M8Xil=ok4FUNV6Y(g`T=cMg^h)3=X z^ktihsY5)s1Pxw)8bAo_cpUHROP-DY_P@x>I-3TTWKGh3XEv@2{j0Qsd57Fp$2q+A zd_6|1BlDLl?9ufaIAbhA`>QP8_49N+0-JYX`$J%h-ycsp`$;WAqF;C2l8KmykY`oP z#3uYl+h1}3-q^|rs(Uyk2QqGH)E0`4{vuYW5nvfG#>436E85qU}c zojy!-9vMOk2a8AGVWL7*oN=rBMOWfHT7Um`9~xS>iI0^MXGV?%QJ=R|J;tKZk+`BU zyOIqK^Wvt#cKccsVv8ecU$n@o60_mqm)ov;e3atg)v_D94?!}v|1`B6BYbL4kebC+90h+!=OwFNcwup9?0@@Q z1wRaBpIr7;ZthK?evRfCF_TW5exT1EHH^V~UR6xPW#*`in-@OUG?$zfa?jxpeD0^n zZK&Xa=kBN7<##ggmnV91bLA2wc#NAt1#Mb=6m?rp2N{Ec?1^m7bETt}3gRJz0GDUK z963(}HCSc1WbocXk@n=hEQzi=6=IJ%qc2C{yJC-M$is`2+23yo?M?#lE^a!LqX0y| z9O7pA@Z=554h>Yw)mcc^Er-6V1d_wPN~dQSB-I_sixo9i`{x>DU8gAjrio656o#&6 zI-8qc3H^`8r$v|qhl^MiRz%XBNERQE`hOtxQ%xuwOisJSo4uViC0r;bDJH!DO6)-V z%YiIx;f`iOR7VcjBjpgXbz#u@Q_FuwD_}wu`hEi{Eb*pO{%SK2g{MFwXxCI~sSJv@|2R8XZVI@<=Wr*-_vwZ)` zurl#brNV5O64HD5s+@ILQG6G*Y(KP(J%Y=G#MPVyQ)iN7TBLl0kQqgl%L%bm{zd7^ zB5N^ zF4>&QCg%47bEbqgRX_rIOSR#|P)Cl!NYu=Eq~a{#!PWL5;)@l;GJPYpxmVT?*e8BHd0PV{94x__-J-gjDLutz2x3CjB$IzfQL z5zhoA16X`(N(>;AUM*Aq))noA!$zu!JL4u7MjW?KzMh}t!Q*u0-{^hb5_43+dZM zwre^sy`RpZj+8J+m7e@qfWc)Eq0U4V4CbU8eb?Cj-oaC4dYwe;U`x9sslaR!F*n?^ z32|VYrd1I6tQf69zf~0FGeN6BuXtpVp(+#C8UI^FiUZ zR>_7|-#S8WNbRMeI!=>LTvIzn5H45!Va6bZQdE4O0dWjAUJ9@?L4UAy)?43gtYBmj z==aC}eYQ&?)Nx_gzYrF$cks5GJ{(01{7f=DhO& zYj@QiKq7lWvzmN7eY8tnG;}=jRP3*MTGvG-$-MmyjFP&t#kZw+kRd4UA3b-RujB!A z8U7e*XB*Qc{KWlA4W|ztuPJz!EIlvL5ovBLp`V5vC;39h2o`hl%#|sBSbrEx zW_6OYWQrkpr}iaTlM9#>BJ*=>iR`fCx1cj!wP4g`kg_6_0HHYUlvqodxjJ>NlWeUz z?(Mvs^7k%;b-c15%hvoHm&Wr&!fx&xdDpxHLN_a{#WN+F!5eykX40HGDS++%^JeOQ z2c_9s%D?+!dpS{Az^gD{8Gfga>$a9MorlTSbOXSO6sw`XFBZIRiT)k!X&Nmv29jzk3368a>~3P^Z4L?jW2?u`qg= zOObgO^HC<4!Bz&C0A2(??qT|G<&@Ul+=@9%_!C|{ytcIBc{<^dX^Onu1*#MGeo&nS z<-3%XqiYVgwnk)nHmDP)5x^H{$iqJL?iGi&{>GIhM1yi;(BWgy3B!ndF=&(dp=rpV z*GN{I(Xe=4NSd5#0GAu^U2EoS;@AxA$ceO+38gPTM z>gh_9D?LGX42vmO6t#*aHb=s-X!Lf*^F^E|a?j%cEI>_hoi%FLw%wPv+7OIRk&K+S zPO-dP=p&Q)%c`6#ow&gOhV2e34D0Ez!F zX2ysi--r`z&Je zlpiWX>1TyCSiR+T=COj~236!V9JJk1#2}4J`=169;Q?I2ATpf`aeykuI>6+OI;ZJs zWgRpZO@^AvIgW7scZ`eOCsjrnb2WwrB8sl;7j1Wg$;&#>nAH8S9l?w8!);3KbWLBf zXG593(vGV$x%v*n_x$3Flbaz&p1@DUR1ihqrrsq6$Yx!U=*S6w6@BzOxJRmw6S9aq zIIzlBXw;oEc@M<(Yqfu9h@~cJvMm;}g&dLisEMWR$f_soVmZ&&l5k=m(T4$xiWbTd zqz`z)IH^+okH1ayNMPHTYpG?#(I_l0I7^#^im9cPQNXUh~8$_uGf zGV(E)*mf8S=82SwxZ(^5WZ#erO0cm^clYi!+1&>L<3(}UvjJC%UC?`jlOr{~eSct^ zNo}O(Dbs)2GB&7D`9?gF+7!^s0i4qYVNSR2NFqVMMs{Gh-r5)Mg`y1@*l4j|Ec%*U z5eV+~0_>vJm{>lFJyKi`K=Rn`MO>Z(*sWwYd^l!zh`b%5QmoVN2eWhh~ z(+`?Ibf$0G+PPx!jv7&Qs)#cP9qB79Av2XlQ%#G5eZT2JX92%YeZH_Q_onB{A-#`U z$_ig1P$~V0ajR)S6DR;~iW|i8sYa9ZSi0gx-|Kpr!IC75XR2D_(6~1XBK_l5)-l>hm zUWbjTvh4yZ)QGwXQSlDJThcvESm5VaX$Ax^AlH7FJB9lfFa(}@#e?1D2 zVsm{us(MkrN&;KFL3$W7YKp;&qtHepRXQgT90x&=gD}WJ1lvJa=jWV3=0(|5g1cNF zyx4WiVNHcnDM~uI3RfN^t5eqWW!iGGU^-2y0kC`gk_WNP%xp#qtV~*1Twg5;# zOLw|UlanRCdspW&oN{6b7>Bek#+=rzY2oog0GpQe+hjfd$PiY9X?s9 zemX7E9ufYH8286dJl+HClX3pVf-hOXnf}F&69WoV1u|7PSaoG~>v)@D|Gq6>KeC3@ z)6`yS9%Up`G+pxtku>n~J?MlRX9FA3Stn}L0}^$1gSu>f686|wO02FoKV6==l%)DU z%d?6866pd*E$WlRmwuMh<5LWS#u~lnmZ)Qt`b@r-aJgV!ta4NN&N?U!w#FjzEz(tc zHOE}p!x#MtNNX*1(iXMjTLD?wk>n=-NPap1Dfdc&S5kno1R-!pqexpq&ihg<)H(LL zo(6s8{{Dw_{&0G>3>4B1z_;55YEQSvL0>|HpU9=}9vOm9&pvw`rK!~Yo?;uXr0QGv zr9ie)M+@BCvBf;EEAt1~{>}cCmg&}#AyNmD$L^0M3sPR;2V8s&F^EKic>tkzAvQfG zB!H%$fI3P*7<&hJp*5b=-HX>ZKGB*_NWThgM9A$fyxme)wL~iKhW4mCknK;^3fh$I zQAJ++At{cB4KLRc)xV%CUR7~(Qh=Y@vaFxvMv9ASMZB<}z1)EPkEZhuhU*X4_^z_L zUA-+IYZB=zJ2p2{>;Z#B+zJgnM7VxGWelKyai3XSjL_!GLq; z3?PX>OW+zK!G0Eh<~z-6a)otl_vf~9WPh`k zEq&V>W>oaLko6@*7kv3X8Ey;_258Q`9AlBYxd5xCJlo{?K$S=tE4OiJ*3C$E7Oflc zJZ0lEqr66EJndd7fBb}QD5B|BAUIVzp>GxoK}PlL)A?%?n&_@rV0pGV;))mn)O)+X z%fC$9RSfsjcz!2U}5Y4Rhg&|tFYcw}o==0w0d z>1&#~IMn7Er0^l=x*g;0DKu08++#}e|2T7;PZQ5My3ItsWmJd`m5QE!*(XH-jMf|_ zfQd7bNO2Tf*hFCd65`4@e_AE&;v9;_+>yd_9>D_y&<}|t$pGG=V+g6=Pw^@uEX3P+ z_>tA4XudXk55qJ47`{rj|C$dQ%m(a|TC*Msw1^wS=ktIt@5V`a>kMdvUCfX}%mzS0 zb51g;bu#!Zu(~yvlPP^Y(O=s*@~0I=3n`5@vQ9<_Na?glsLT7Z#U&@=0s{D4#Ym$; zW#Uv)7$%*kZ^`ujM8TIPh(gx`IC`YFREu_DOg}0!ub3C+R|$Yhm`5UK&-=R+C_Xv* zVNpmj%*S%LYU#~2`dv6$z&*xejUv-tq1m{YJgN+!fjZJ|S4ImvLzi zq?aQxXz!$5UuEG{>Z|U){EGH&GgmaO3Z{wX;L#JI3v8yv7NH9g*$rx@#%|8V(wFDa zo1?SSUp=DqAb)*3b7Gy(n;a}vi6FY+abwpD2{g8oTVCP#JjOQGM(-_kkDiB6{KKc=^wZ*!h*A%aKxp~jWCp`__Ihf(sAA-AIZD=rk;lZ z`}l}p?|!bif{i~-82T_ND~$zEP7*C~bZk#Y0MBa}!@r>&6H>Pkq00El&9f^$RW6JQ z*sfo>2EDx3HXi+xN&fFB7DghwU|tt~e=2sd^@lO{_LK;FQttK~v+L}Wn|R3az3Jjh zj7&hx@A?J0r8NH6%yh75#Tx6+wEPhhZXh>!@?j->+kv9%IfT*5p8>+;4LW622Bk06 z*`DuagX5ieQ6uIJ?s_yR0o-&Xa7b1WZF)l*4~r(0r(yt5e^_BT+ElcWvLaZDfw;jC zmi-BNz^QixkA6oNA;!aphANW5BgL+d!6iHo8x}YUq30F*yK#KdxG%r5@=TLd*0v29 zD0O~hWDmzWnxk&+3m5r7;0!odHaU^AOHdD#VM;KNg9El~=L^cO5vk8bBsm%NA2kW7 z`*jI%FL+RNQJ&tP{j6>*?3aq3^=x~(t+!L~{=;(Kz*OO{9GNSTpA&M)F-eoQ8~wtj z?bkd%CuEXuk|vAYHpB^6V9Sz_Jtrsp_#E!a7Joghy5xci?|d0pknqB?z^$>EuBnH{ z?E9qq+-jaiVJAJ0F~!WqgsBx});G1npdftA@^=F#G#F`>WB;^|>YSdlDl8UZLKR1v zSL5meXOfgh+~CpHKbl+#xD4L&io}enR4Zd*c=zq#dGBLqE7_V=02$4n3t!#y7 zjyCw&ph4Qb2*H2hrxPRA`@_Ch3@7HHU|O z{-!3s4ioWqkUm8$*GN-&($n~KhQlT%WiB<`8tw+V>qYAhxT}ex@v0R_l<1=} zG%h!Tl42EKzf;XmS1e9fOiEDf6pi&a=^#X!+tbkiMw;%x$NKEimkQ4EVZbj&NyI{Y z$dj`+SK3sPQ>r){VGvY);S%n>L~2ZC%2dCfzo9H0S9LLM2GI>`a79X(($D2=2h0k6_(l-}B-dTm z3q*kHQ7ULV!}Vh)Az+6csP*o>Vx~o0;|3PNFuVp8@OIrXj$Da~^(PBI!{uWnB7^x; zDIY^q`BR8>2yNsjc-<>Op^P-S^vXV{6glBt6qL!0bBo79)5^yFgqA zyuX&K-`?SA)hu{eY<=qvES9pyy8rQl)zalvCq=pgk8;hq#ysOcq{)_rpHJ4WjIf&3 z20v160diNQfh!OMaA^+wgS~CnPOu22aB|8wa6MlE?}$7%SgC@Dhi3ajs_jbpC$i*MmTXdt?B zXu#C8)F1tt%*kta9Q(g6Uu-IX?)T_@80m4(gJjR&pLTbw3ulQozFyEDa_)V%R}0mm zA5tyk)^{wv3twzWt=w(6h2F1HU1tCUvA?@A(!Xbj4&;0i=2BPV1na}(@O_@#Q*)Zg zafHfRIDR}syY!rmtSdg1ZxaT234%WGqI!r??JseV2h)1uc6J9EAZCSl7D@cKSd1(g z`1*}@B<|Epqu;;A;S^Ft?EwM@4&jo^SIjg~n11%dNzKd6VZ(@U(-@L={Vf36rv_9& z00tRql(70us<93j@Vn%#kSlmzQ5GETD!wgm_Gm+a^8{Pxe7e~zcno#D>W4&{RF#IS&gxv2Ox@ripY-wN zP@|e9Gn^aQSh4N7t3SW~R`a~cYV-^d&;+|tDRu7N)I6~%*#Azcn&JKoh|$8;=ct{b zCF8Md-{?pv(pv^1ZHblei?}6LYS!&*ESe!b4NoM@Jk!#)k>_6SK-lbuS>3`JaELg= zpbWV1*+cMw4Ds18n6<6;wt-Rw2&Wp-6xq|*g7mA)7RqW4`!cwSi0zsZIi)0ti6B*H zM!Dh@JQ(B?hMYK?%(x_gk*d|)c-6wK>`O8LiUOb-!J35lCZrxISR!j8|AnU7SDt;^ zu2NM$J^Ab!pv*Qnu)TrrXmeF=?WI!qIEnwo=<-5=jRkuwE^P}I1FvM&V2ytIJo*dL zf*x?mZ4|*E$q5XtgyHo9$S;Qp4q|$Vujq+%VjC_? zh?q)L@Je?babPguR}V|>{kA+37fTx3;UcDR7pU(?;sX}n1W6xKqF^up*-H*)xR7M{ z0&$J2p4HbbSydvk@CydNZDEU1G?d@>C~=S1P>YeBK$~vYm@>zUEY9k4bfam;UjO;} z60qstSBK;XA$)(2q>dLm`GP;BV^?j^FU79ln$>lvv=+LBx)7n@rc|=tZL1`?7yD>( z>Em39xc(J+V=`_G+@%}{V5nce#B9bBYBSfDbIfMb<(%M~6<>ei!f5Y7sT3aL0zqs# zj@Y}%TZVftj*NbP&taLeEkAgt6mEWZWBhkft1b(BB*Y%3aA<_ZxRjvWXrcZ&&bg2a zJQ948PO}_ZNpNnQIqgk!8U&Ngil|2@c5DZh?V}+9NHNvMeqf1o+$ue^&H=% z*#7C+GL;Ud{iBmV&_M9U>*!r|;Pt5L=_jeW^|3nH!BjcGDG#&-JuZvP!W^l2;CNu_ zAASa`lh1%^1VHSd{2s2eKfLoS{q}S%4rm=Lf7d^uST6X%mt0W_TI6X%5mXk=iW9)J z@DcN=URn4^|4#FRAQ1q!HhrXE$AIhHI!eT7C|D1n)g^#;b_h|te*v;XQ za3rquI0;R3^xiZ%)2={+aBN%wK{k&mGm5%h&v`&mUo*QS6QK;~5-Pl$%@b#gzj%w@ zM8toD0{#>C29oxSEr3I$0h;;wD=LC6R!WrE(i!D$LMWT}w0r6{sotM*x`+J_U{j1} z1d_b(tV95YWc}J&GQ_Ee2da->T*s*P(5-^LK%0=pk0|W4<=4=)v}RyeFJ!Cw?*xs% z3rUO^CRhwPWaC-861sdELL+q?1pZC+eqengu2(A`#U`5|#=re+pMDkH(?+LNE4?fo z)ZE^w=gGZPUn0iSKr)u5v@Pk+PJ`+~H4yOI-4)#d=KCQN4PEct0{Q6lz3&kuH={;HN)2Yb*45coQ;*FnyFX9mM&%mqxZa!nlR!+JBVY3+a)ptVx_#}Ge!W3b^6^?OvI90Eh-S8ZVbA4Iq14^Z6o(ZZ01}lm7NVNVDmt# z*B9>U3vUG^>u3mU<-qik|_R9r`4|I}+-N2KX9!jphl6O`A??;vO7rKB%fHt+5li3O6)Acj24GMTwGOr9uTIUBx*T zLSK_&EX>_FcB+I0!CXypUArbGydNqia>ntmZZ|eO0TcYT7Ox z?RXiWOh;N04!9BlPkn>(qjjA`*pYsWZgn!!WwX%Nq2Oev@MuJl@gPEC<{z%MQx~PU z8m$-a`Y>AgVt!9_iAr^2xJJI`jcM zy}sOkdg7LPi*UVNUg>2*>E(+#SBDlnU^8Bq+*DI09eJVdd%ZbwsvejdOnNqK{Q_6u z8+HjZ=SjXg(9HwPWLtUH3H(2{YB6L}rdX9}woT(IMujY>3Xx9@%9F*$s+Zi2&ZiYl zy382r)#=_$Km(_kTM;QrP2R_B^?5gM(wDr7EV{x;-WJ>W9CbVw>)x3k2MWc)Nh+$B zK!A$w-5-;$C(<*RO>DpBPcS-ShnV_fW-xAn+*B-O8hkDGXq3Y2a_gEA1p9F7Wn32i zpQ6nXM^w^0so}UDF_29L6S|Z6z__;;s{PiBJslH-=!-T5TgnmxI+_`o#T>Vl3rqRd{010H!+@4vHB2{*UO?|ii~myxwq0J>Qt4MpoAKWh`dO+Au# zw0}Iq(wWAv7Gp>gdSKs1fTxbl83z-rc=z_HQg|?4cN6!&Xj36Qj=+aFg}qMV{K2yZ zVe!yQW^JpE$Ui{YR$ccEsqDk%RtHpdeFdJe zfvCqXuOZ(dMVIyWNpjYADVh&4-Sbb0*oZh+VJ+p8XSbbmDLz` zKSVy>&vt&_+KZl;K<9iU!@-(*7JyIRmP!X>8w#r%2zgVIyeS$d!m;J?TqA zh_*~>p)kMo`Q6xdK*aNd{xNF67bHXdVMjDq>z5y%%7TGRS?!dTRoStq_YpQ>emKMZ z@OzbwDZ5>>Fqma$9kWCT6@jVuzf%)!Kb{Qk#q7M)&;1gu1cHxRP*2P|i zWD;W<+X`X8^`!yq%QGNg5j0liRI+kFyw&Q?1)<1cuHE|W2D(AQ`Vgh9F(9?1)D67R z6L`eLYyNnI_6Oqf9d@1c1{)-mJbEN6}ObOnDQ$r$wcR4g)c@UA0+6 zp~_RmoqD5zVhx=F76rAI2p%M_b~dJ$lc#~m-+26)pC9f=VqYr*&5|{=3>L3#=A0$w z_OT6JgWUDf>Cwjg1q;;5F~-*W+E^{-`Z$K{_$1sOUd?rHFoC9A8MjYWfi~Asq(MH1~ zbhNX2E6@TeG-)B$H4;8OArAb3s~?6~BX6;mE5q9s46$E9?m{mXE13ME{bjI3_HmK> zix|Pl*{aDYhv5Pg_GD2>_%fB8wiCq*3O6Y#s+9j6djlCbU){z_jnNR}jc@-t4BqjY z)id>F^42MP>SJqSn>$mOy1CGCzO9G8kh0?Qz78UVl6~{wKmOuo zJecXvjZ?YTJnETN^_T3zgRz5_o~wQxoT0s5)LdtZ9UcyUc0cm!NCgLm$429*UuITGP_ z39)!D@5ipL59_wY&=-gw$8PJzSctX(oJvNy#+6~H{?S(Xdrys}e}Nx>aC1-kEc60T z_V0mW*TY6g;P2JPUXue*JJ-E`R%a!zl)Sn|yO6Xj2f0X@-?(Z^sb+yf!Y69@xR_~% zc#=xgr=KzRDmle74X~IA6-r9ae_(}aCAwQ2{lKc;pnsD^>P5dgF$euhi#^CRhB9?X zHgz-}`SZJk;4dbzXQL{Rp%vBqVw{#s>19dP=}un?pPhG~E;T1@ zCcF7<_x_sHd*6$qWv?ZT8AItq>bhUWXinPwTxp_~KI16zak81@m#3k%yX4jPTkh`G zy$LBixhR-c4@%Zp!U&0Rx!3Ku?rD$ZJIXT@AfU2@P(bvNhNp+P6P7BzSN9`FA>^w# z?~xJUk@Z|UYS}Ahm5J`?bRT}3oYj#JZv?#mvb`E9uz$tLg2fVmK_U^DwQhF?NX_j} zV8Z^VY=rN-Bl-*`3y&8Kc4e+P&bYs(uZBT0n#%j2HOzA|(3fb&zs@9oO-XtJ8Dpkm zn9=DB)RC*Ye>#9A7I?}PS^z8n7sFe_(kIHrq6uQE_#G*5b2z7nDQShR<`xj>%tPCE z>bL9bw(l)3edE%hHGft~qq(7xjy*=Mn$MX?YiF1ZEzoU~CTNr=>0@V$Y36Q`uJXmG zy1;NH)SJsK0%&8?Kh=7!Ke%FAhF1? z!5&1G{SQxr|C%R0ye%@bk>w20k%L*8LED^z!3>$scbUt{6j2*7eD{U6=OE@r#R1DG z7^po901ESd9faNK5l~uEewp9_`f>iXm5)~W|Kh>>+)^R2d~7{cuSd}bq0D){K!&Q& zBG2P%vw00tA}lr_X4OVklh$}+R1xVlOJq*n&gzEfPupQ-QOQ}nH*glRZA5%w4GTGwP_FK7Yn>?L_3 zd%MRvHa~J@l2qU7p_T`W=Xna2a?}6PSA|MYE6BW18co~=T!K?e%0^wX%ik;81`7i| zksLhfW7v-rVj)Lt^v<|ACMKN;~c2J2EBIGg^;OunCN z8i!xBWeh_^<2sE^lajb zGkD)8&37deN2b->=GYHqaI-T<|H};2JCyjNCEad;m69cb8=N$2+L;Et(|nHI%)2m8t&n*}P}%`K zh;>4{*`@|N?R;@fh?=B2IK;_hO73G~`oGQjN}%;n3P1n=NVUq};=zAO`K&sj{N4VT z|C_P7KN7yXo;ATjd|Z2n$@x+AalCTl!}rLeU}@{Z{XVNU9NGmp#ggm zXpng#RR5yvUolu;AKHw;ADG$Li?g!_yCEM)vA9yO9MsT)k+2YV!inoc{P@Lahi%m{ z%w53QF@~c4TEUn-0zPiclQV=-YN26S=a0Mi)U z79^y*=FcV-nZ``sBkL@M0~Cbexw$_vm-D>1l&1&otB_DE-Zf^RYF?ysulX-CPXzNa zjeY#r17?tm{}|94*JVH4;Q>{OhSEfjfR)~1-vr3}NTBA>;Iv>T{{4LHx#cqfr&hb` zlc+`iQ?r9EZ^g*eFlbK-CiG*%{I5Ej?RGw- zmT!tPWC*K=R;5^RgvmI2|1_od-22>wXyazmzpqVbmE(HlVn{u+=!yU>xvCW}uMsGI z73wFrLiFr_?Js2#j}&!^0-qWppTm6r3&T@%dX}}S>FdoQ!Ed5M9S=C=Z{L~Fyy*J0 z=D6Nxn3|w@eq%?q_bYBgz9jajC0t&m0cvj-tCD9Z;}i2rx%~71-prK0Zy_K^XYwWlYbwxIxOtTn zyfElKTE@4UPMimXi=A@aj^#|1PGMzZ9yhpO88tBVM9eEA+*k~lk6fXE_^XIb@Ot4_ zpa^Y{NG`UBMG;UaHnp#Y+yF!mZTT%Nd0>c7rKf`i$yv8c0SwWAuS z{|w$zCcf{XJ||4Kz|PBC^gS#Nam!8-r*Y|LOJ>|8%);yT)y!bAD#<2FqZhKU&UTa? zkFOS!{pn#4uGYCDXN2_r1)14?_U(t-?0ShkT~fw{wqhr}5hSvL%kI^s9=VPCeDrk1 zqt1-wae0qqg}o<5md!RFhTv)t;9$^o9M5pKc>Gp{CGG9fx^0X$vRIV3-`Ez>jbJ4u|LY)c#4=%$pH?yEH;Wtmlo7>x}m>SfrOeip>laCThG*&bWCKh!V znyM(3m+!ghvuHNI&@*o0u4Z)W0H^}=1n(Z4OsI|WDw@OB`dm@p2n9u))nxW;UA5xU z-94(M`mY~EZQX2$uMQ#;3WHPpPy6iI>ib1-7bD5Hc2x{FD(l|uOD%5 z%jEGg-{mqbZW>Y-LMaQ*0B%zrw(~u9_HSz2`3`Aoz5!*9#|lfSuez}NRdG9gvZ%a- zIGP11l!pF>KQ=R%TEzAZ!49-+zOnIPw`pcC5Y8m3Hd6h1NR@t|t$3i#M5!@wTy_^f zm0!lA7J&c3nO0AZll~MH|3V-p%|vODzj0EBi59l;n^mup$!*)bbx*H`{d%3U+R=`b zo-%@n_>*37vZm{|x zHg!RAr^y2G5K86j``u?RA&PWY+>MMOKbX3-a0EIM9OOPn?Vy=7jgjP_{@;xFp!D@( zG*MDrzRxeC2Q*ye*k}=*jR}i{g^w*Y|Hw~yT~PAlr~fQ!U78WPlH89j8gg}Y348v0 z=}xuMi2Lye%%HMJ`$w(n5->0H0f6fzjDoJE4b@l;Em`hb6d0pVd2s}rwgkiuq*6TM zbnG4~eZ>7!mg^a$dy?ut-cWzMUk$)Qyi5oGc>i!~)oOG9r)~^2@{H|T7h~k3#$2l0 zn+nFyQxZS|Nbc{+v+E1bmkH1Qehs+(N%d?asZMSf=xT``*7-in?MZ?ne7+d>ZfSKy ziz}}V@|b1j5flm`08FXdJ};j$M65{PeUPA00RHP=fieeS6X!e!m1g4l-qfpa-xcoI z@2pRJ8F+1h;+E2RlMA4m*e80KpA2w48JIX@)h zDmGM{ZvEhr)yG&K_Jo&nkQ z=@?3=D9Z2pb{gP}IXaQF0RA9(WzJ9zALa~)B%n1D$@R+2Fz?Ly@LiP8Io76yRb2aT z-XGAXs*@W50xvd+RkXhk?=InB!JQZZMwudz+K*2cK1lEO{P#f!!3idDoXoR9FfXBV zHuZ=ZGO2cdf0~pT+|3Q4mJPzeRDE7_)hkMV)s=A2YLad)p1imy8y)hvpFgGd4Ln+E z)SGb{oYNmBpnO|+N;U01sm8raVP3Ui`6aKOO9YGQf*t&2f!y5P<+HiC(5|mj;n`2; zrvhqng`)NQmNltFWJ1`3uo9klCN;k<%Xa|W`MGP4lpSpx$G2Zs-gQjnMoE!AW7G7%j^9|j8z(BSWx%p8&6MOTv z-t`M71j>UmLz3=|z(SN17`kplY8-LeY__L2KTk8nzuQLUtfKYbSc5VKC3zR#RdT)dFgZ?5%9ULJ0A8*Lv|ZO@V=s)GNdZeB^RCb?i9>Ce`} z27axDd?Or19AH&-?cr~47LpY&>WcsC!O4R9Vbpl{gMwkHPQhAM^ylJwo0v2Gi`qxP zlUa*8p@-EWI~m1{qYLmTr?+|QtG3|a22S}8_^qfl*Z4whM%7ZjSaT2ZFSiv~IP?dP zPV=AKJ1yvSl7+6!ZZWhCBT0D2_YhfE}gcfy^*P|5ZcE} ztbreI0gvWZAKR7w?}&tR{Q2tx6A54Oy<`8kM$u7bXz5xkv^I(H8{8z(6k?Vz&*gJL zY92hLJ7(r^lGB2CTOOhYDWdm4eT|ApIPiH|j8sX>r{V8pBOKiz$(Qh|SDa{v zv7Oftj5J9I;(~`@=77gK-`ILmQ%EYCqw7SRU!J#`3z zPeQ<_2uBlCGAo7Bo&=dcy>~VSsU>wX9v+2{W(4O9%)*XNdm@7k094m_S}df+M7Mumzj-EuhK{Vlz z5K_n+-2BHx`TUAIlR_7Y5SStYrzVw$^WqchLIp?kU-(!i$Cb(tmFo7AUVtltl)y~; zr^jegPQNEnYAdV28%uX!I+UjMFuUA*3Q5EFh$NyeYtSC^MyN>O%p92k25mW+S3OS= z-CwlC(6oxA^Bo-f=Yn&)cBa*d*|8^IT+p+_dZhqJ9;RH*sR8zV8_)NM^VuN-t+;zL zSxL>ju6AtQyxe!rmmhD8HEQ&b`J4&bR7>@SM})rPu|rLa(gdVxL~1wC)ZS+YmwnVn zF?@5Fuj}IdAJY*xmrOZ7DH@=T`%JD{4UlIn$^AMwXlVjZq;X!lJJme#;CYxX*dQ`1 zu^;)23sx(YjP$F*HLg|zSAJERc44-lsQYHbNn5{cdjGsT))O@nmG>}BnN9osZ!zzy zU^nySMCaeSR;U5B>P{3evHgHf(I=c@)EXh8+0Jz$vWxaw8y|>!g2-YXDTm1Ye8GPX z&c^m~nsO$wNj_&@7XGwc7kJM%79l`=>XT&bNX<}|eZqr_L#bIpl`Rl6CE5d!*Ib&H zXPsNi3IgKQAnMp&fEx97YbtM3;2Y^w4oB8nNmAdIb_Nl*T9t};mWnu%lJ8?2h-H(7 zAbT-iK`1M7k{5A6m5%EKgOdUHRJ#0q%9L6Y(zFLb=-Kq4s?SI!pP(D*sNlE%9h=Tm44eC5{1Q>; zBz#s#rdvs->++Z|4OF=qBRZRnA2pAS7VCNh99|8VV7DS^2g^B z?{OJbb2YqGVpBi-re1!5KR^eyi~m;r^RoUhMTYw6N}P?@=HvG8?-}bKyn{kt+*=XW zK7tj}r>)L}D?i*ZDE}-bm)3~f^Kq~_Z_H#;icJZnL7nsXXvCB#DeLveD}d7}$IZ5k zo@;;^4ZdxQar;kVz#L+u;ueC4>PEoP4|($Hi7`{^_lRpXorARgy_MMcF$n&!7=7>g zrK0I1$etf3EvatnZ%DxDMcex{>|Z(`9YJStGxGi02z#1q)4cm@;lF=*e$BrRx9AA2 z9SILTUs4Uc+rViL+97Ubl!)rP_%kKkMkmqwC!N}MU-bddb!*>L1$?+q#Eh4FjPuMt zh5Xg{e^?Mc&gh96W4MxI$yLy-a2AQpJ`NbSl5t`jey}I8I7G8JvLvm8O%~55l+>{{e9#_14%zRTVjvp4#5YSKsTU#fWg&#wKggdXa5^))qtYzu znYX4?*m04}LZ}MGtzG;S4b{u)Qjq>TOuZNtYcinNS4VzTM&s9x)$+sC@TbB(2IcBF zP)TkjBNwAtU0$iOFXfYft70QC>q_wa!MB9WULGqz77rg1v(_P-=pT zu@p*rgUojS+mSWh?OK~oRWXsv|euYm;_bk@w2kw&(9#cwXi3RHB>LInm>qDFR?;xcH3!vA)YDn~Oy8+ADPw%|)$DihMZQdG$1df^;d?m_kWSfa7p*F3u5%f{Eyck3wS4x zH99km9h?dNPWb=KZ=MjY0LZ0ts{O!O!u?74ZK)U!l&;r@-Gyldz86#2N#*(y>`}`@ z>)|q&r#wfSF(*58XfO_$FBLC6toj1W^k(M0<=Af#G^{E%EibD{HI@M@<;NbFxEY-< z7O)iT*{)B!Bo@#9hkPT^N4dD=EIe4)$U0S0Y;*+SjZkwi!K%(3()%p!r_`YRRw2QJnXCCcpmkc~*YC-IPbCf7jkGG$d!v19guRQvj*W~e z1YUiX^Ia;WC0c`Jqmj?C`c`nOcj>dTV4oviF%QZf8S#|8fs)WhVyj>L@Cfh_BjIa9 zaKZsr7JvtU5Xkt`+D-{@;Qhh!{ev}#X+N46C#(ihzV2eic(S*9iHG|~$@h`7HZOpuj!vPS<0{|jS^{BA^+YJ ztmblNOpCQOildAmB%+QOur=Qy%)M$OFGo8q>wLZld^?QS3s_ZfJhU({;S-8S)2=t1 zM*l7`wx3N)HGr|jluZ9yKQt)?`v&3NPo05^#>2)LO0T{EH^k1=$7_t(#|#4_pQ5Or zexwS+$1d>bYTZQp%<|vsg*`8x)yp)$`+v3jUvnbN)ZdTHo}l`rFb8k$p?cMF@;)9h-__GPl{C z^2A9iRA2#5c-C^AJusuE;%)Fy=UvLDv?*$f)WnydMwC%o+`ecEFwn!Odds01n z9B9(y?!PvI&UkQdOaOo4dqUaI^Ux0$`&ZY(V__%Lea{{)-!umU@HE-%xl{tru7paD zxM{hMafjgtD1pZ0M#h%9Y95f za=5aNHYU+i^qYj>I1J>$p4p;)Q%MGExlMvjAN+k9Xpq!^3qi)_*X5`z!;b^g^o2`0 zew_+U}K4z55JSnwLqOSjUybJX4=)7(Y#|>{PYU(duW{F5(vN2ifE1 zN03n4{u|k9K=OqFS?&qDT}McEd((S1RWsHch5H8HPH%F3i56+->vsek0g0)ZGD%B~ ztgt=a>YYQgB2?CZT7rf?rMTz%&Vg!_5A0$hyczpb`l>er0sl&W89_k(;XKY_*k0Iy z-BN1QSK0nPH%6Q9+t7wzGi2^SouF9H9j?#LkZtdF}RPY!6> zZ?6;>85GK2!gwbbL>8S3(yAFWsLe2#J~?5ky{<&n{%{N|w?f*_y21RrV#e3pI2gil z!iJyQtq)p45Lir#q@gRrz3M~x9sGSGq%gh3#!qI}`6+7*aypE3QdhXe{L+KF1m{7D z<;Qj>gY@V0VN^0Wb;b2p_(I>FsRqwtvpS`+2sLB&tq_Lx3#^PXEpA~7r~)F#Rl%y( zH}d&|m~mRajJ`NRL|0|yLYh*Oa`bY31ZPg%hfZ9db{tCopD&=}tAxnKpKgC)?{*TPs0x#`&zria-S*M*Tr(KJm#x3MV_A&L^>-4)P57?IWR=G%EM}y-hfWUO7 z%3GEgl_r#{BlqoO#(Qx9THq9d^)PD1lbMlj4P)X)d=~77xIyMWkz-GHX5$qJ(@`?A zqTAw0Q5-%9zig2OLGCwMn1ZYhblL1F8uSEL-zxE{rFDBksl#%AqX`j*NAP72X2~yJ z6{gySD)dA9wYUovb`^7vbUjI@T}h@L)OAl*;HqzAVu)LBrk%&8tYRf6xH4JvlT2g8 zwE6dQwyPqOkEh=!o6nlNGmG@_`2K|hYx8&^#v!VNf}+cvagc>rjeAAgaX?5pxRBry zxjhDeZ*9H_sf+Ay2?0WoZtiGysi7Po1~k(aISVVP^9oMc{-O0FoD9%A=~1Uru8~y8 zuC5ixyAW)q8&#OIVHKD)-E|AdCEK;`yWlH}Y^K3g$s;;1YFkkAt2csxje;X0YHHC5Id{Z?VtYY*l!)u)GB#^iFqsRKq4H zSu`OKiAt@6gHu8IF&NkRpRmlosEg!f;NB^9=c z-SI3uzE^Y%1mEZ_h0hB!@fXh0-a4LZd8P|74efPvOu*lGF0J2?P)f@&S=2cKMn4Re zx5RdVTYpJM*1mH;UE4#*flp4A!&yrYE0+(r6+ybcr0)ZBYI1zE`UH*fZXEGDz+tvp&)DtL zsh6{yaDMI28rQ~G9gdZA|M{&0sJ~#~EgMDjT6Pm-*Y@Yk+!%gM&}Jr(HdJ%Wt_r2N zb`8$Q2mP}Wb71T*{9xtr!Y_IQd~<*r264r+fJWGq0eb5%*2jZMjfI=ifx~ z6tppdvS122cK1`lf_Y)k>zA;OUWDXlP|1KWh=PvMkc%ahB)`o`l(SY3%yecIkD-u_ z8o^&cH&$74zL@AOo|ZtVd&$ z36Yo2?r}rbZeg8kp^-I&NJ?M`p67N_%LNe(sCpI!e5d#kU=`WEZ8Z4xBd(nb8pyq|Qhkl<92h8Xwzvc11?wU|r zpSIO39FULju6cx6EQQ@l8IFT2?QWL;h|>- zO<#LP$4qi2^?I1j=p^L6u2Ohw9r4TA48j`29zvPyZ(LlhwHXB1Oe1&AX{<^>Qf~d5 zpnk>W3o$XZiWFe+?eaitya#mVZd3lr2p*?$b3CLZ1((_%e9+9sMDc8T?B|T=mX0Tbe;*!ET>pKXlGcNE{mZK6P-5|uNfkLb2)bf?gD8ndpEjWrL0^L_$4$<>ps_!@nfLx6sf=7E&@yS#y+HiDyY{R9u>{`NzA~K8 z+(33>j-fQz2zp-3T6UN`cFZrH=!esc*QyPMx}i+_ImzQpE&!ZiyE~x90=VGM_KNGPQxP>TwyhovcSd>dWdRtiS5Gyo55l1 z+2d0g7Iozmg06}0Fx>5k(>urMwtDj5#MA_XuQn1Wv~FYM!euS^BIGYtW(8Laci=1` ziSov~9=-;w#xi@L-P)t>CKYMnLD1oscNA1xv^S^Yr+`0DAe~lnle$`A8g1 zL}_xn0SX4WumgvWIQkk)2+=`rl#F zuC$Q!Tmz>qHY-pEW&+3VekZoeQn;8X6`N?FQmZzg0NVL!4k{j?5#OHdCLiy^r3Tf1 zKm#jiV%M-CrG}Gw>e(^PW$)w#wtSr32V5J@>a+~w zBT6f$0`B`cA7JAVU2rw^tev-_52_Z>%)SQ;{fCp-yYD;m?Z16zH#0ZwltYtP8q(^o zdUroqtX)(8MRcoSN_t-?6Lk6FbWY^RRDA@RN7I=7{>)+1??Pfy;3^WF!PkY&1DO)- zPXUNv;IJF}bLlR~rJ{>aKH=m_Y+^M(R9Bj;5raw@)>1lSk27NtQ=~*CRl^YF#{BR! zN?k3ku%T)rUk}sE-Hvaqq~X~8-iH%i z;s!3_Mua+HKmKXxydfl;3o6(cC@(>-$$F+Fo5b=4|9NEBI_lK{ zf?UNZ#A5VbOwyZu-5qYDfqZYy{Zrd_kPtY*fTWy+W^n?uFVpZ)CS@v|trxCMs& zwH-$C*W}+s{^&FD^--I}X4&d00ghK+$9t=*YuQoc7Lz}^oaN@&5~8tXOWUMHfuztt z!Q?MBCoRN@KKkJKUrn7`_VZPHX=rB=O zgRN)RB4y5^)y@@5sE^vr0CQ3b|J;Qyv?;{8s-ZWtJDI;I?E}GJfN2h+i}?|PFFhso zyUBemM?6aNGHR8HE|^IY%0#zV+b%&O3Ck4nqOnbe77>A{F6;U`Ktjt+TD2suNM0gV z`{ogz)D;D=DBQOh}t>$GS^Ye&1?#dK&1!&322!Z6Sna8N{S)Z{l7( zL7cG`lY0PHayT?zZ+?m#)fle&O*nGv7%d7Y8z5fs{5LMk_XTsBrNB!6Wag}EC4xKB z))IXrG<(u~>oo{{te2@=IZ4)<_A*Vg?L5p}WYRoK3mGBUnBi)~6BfmRXq8^V8Or-MiK>YN<%cw%isF*#T0D|zVxyzK?b0v^8Ff1ylP_7O^8m2cs+!WecL2-AJ$ z*oA@d&LF0GBc{M&cp>r28LLfpK%z1GDr0Fxyfn-&2+J+Ia7Y4)wggd#s6hlf;7V$A za$(9}pwstAB!R>K>D{_F`UJ9m$?d__*NV;-i&O|pLM#!kf|pJE6~;M6pe>TM0=06+ zDp=%-(bK0&LVH(#(fh^L`+)LC=fAla{PgFQg=(u?Q%&^N0AP;Se4{8FgnH(qsf@0w z;_EkehcW^#s7rwZ@P1^OSl|)!5%aTz|9{!Cc77Na14M}#qHr?)v>LC#%FhQM8eEc~ zS{OpySl;+I9U+0#M^s~r*R#|RVzzA);m{reP|3qotwFi8Er3#k67kdM28Ur&_$g~ z3lUj^u&^2qzl6f76)36IwE;;s=8z2G$^mBa-N|m^aUjqqh-XQ^FgT-6YB7vJtsL9~ zi_V(x{nmoX_jELWEXNo_OJIM|`X@)myJ&4NS~MRp?hxw(COr@&fwOlHuMh6}zkkf7nyLXL1EDtMEZ#a=nOmJZ+YnU}Oe>i9-9Ub+R4x~F6 ztO?8UomH@!W(l36=}?C^sDgwXLR#~cTUT=KV5@u|)s&}d&M((o$m|?j)j>`!jmIDO z)ImmBB}+|u-fH~i$dSUn%wQ3SoerR)bcJ#T){#d5*L>4*q%Ujaq&2YCF-~(NfHp!# zwW#RtcTy$z3BlYq@IayNCo26CRMS-E7`H=q;ZIZ&;fdAi?}0Fa!gwZUu-V8V=g^FC zp*wGCrdYUum}!JGspK*H;B=wolnaq;r{m5dreqw(>=7urx3@ zn?};Gc+|j3k2YV7Xh@I;Va8^WXWz=RZa~)fT1y?*rde*pWZ=l%YgrSTv-JJ2MxgpP zs!kb!ytP-Au0`=ou0&&11g|9}5NQp}y>q-Uq}iaFFOuQ(k;>5!5Dn(|EA~;2ShWM< z*0fL$;xY^qCz_VA30G9I#z1!7+8ZsXmrpb<`NsMd!F`XT?llE4ws5kR2gU~t%x-wS zZE-bFDN1dg&#>s$n%xvxrUi`%orIt_4p#dQ5X!QV(XdicY1sQY-s@mOMmM+1#3NSJ zG*PLZo$)T2Hj99HPhwyGUIjGJaIV_+l9;KsP&-Hf>eZ`@YHXirf!OTh=>t6n|KZpQ zI>LU8&mAaeBsyQ(9rJwalez!f{^|V0BX1)<;F0a0USgv*;H9%8o_`-;QEp;n_Bcwfl>VNq#)OxojvEt=PmG005&5@Zhv3e1ady$Q`lQ8i_Gl6Df zpDah%11mzbw0JmVC^jD)wxK)b>o;_;Jt2)p>0U91cyRpB+3^VRmkk(K84H6^SN?vI z)&-ijkHQivMRkUYYK?WsTy^J8;wX?(9dOPiIL(tO@SMvDB&XP$mJvwJiRczV`rWpd zdu35K18~QX8k2Bycf3@RL)wObrktoU72y=nETE_;%R@x@=nLIP2jZ0|puC)6yl46F z*mk)vt`A5vyDWD7)^1opDA$?86*{Mp*PvJU^k3TMP;iJ*@t=<&7AW%k5saERyEkdV zX;2x_#?Ps}GL0VaH*qkDqcLsc6YA_T z8}-i%^Zva_FlPhSYG*dKY;4avbX88alOWLMRi;{jw~uhs2$IZ`Y@`qU zpbi@bYBUl?gS4S3RO<*~6`I!Q%<2h*$0ck93uO3_WC%0qe1;v5qf^9$k@i4E)M{Ve zl`qIK7iMnekh|HKFW1b$N8UT{A;7lp^!`rU+xz#rFas$_+e51U`%c-zSMEi?YF2~) z`lTk#1-$Zozy&W&wA59FcScM zb=#Y&$CN7W^bt%KVrUL)e=|dl|EM94t9!zjO=Y~G(kH0;`ymRK5hDU zIaebO;GeBD(j15-Otc%oPT2SFk_lIicF zEfjE-SjT31rQy7uG?LR`w}p~ts^bd*4RQ%XFeygp)W=wjn{l%GtQ$_pCNf4zgR;m% zX@UYVF}$iIp8mzdpWpbt@?iUxkK-#kxQzrk`%fq%NY*JLITYxZDHRS3=KO}ciUF^f6@hR5p^6T zO?}B?%>r?#>gYh$EHe*B)4}#Wd%to0JL-_~Kg@*qB_JOUa47Luxa(7SZp-pJ8Ukfn zG9?M*vKb25BDTz+Au0FjI>V4ZiIS;;aj2T)f3n~!n^BmM)T$Kn$l_p~2D9ac-RT|H{DCa7c8(y-#z0=vq!h{M2moD4 z66Q9Jv3k2%3;p1!D>kJp`b>B_06xJSZNH*EcG!g=Wbr%dEQOSD7~xbjR~i1f6Q&>9 z9(%_HzvdBhjrNq9s6VS`mp|1b(cP@)I_ja!CppHP|87r#uVQ~aS^qvEGiTov)NA8O zzt3220&ohPSE?DzFFe}(bl8CY234KY^?Y0==!-!?@cGgge{x8g1w>0lbo5wTzD|~9 zE*`hp?6a1_?DleEPVt7X6VOmB!%Nw{^FtzI9mqq#`qqECZRvFUJl1-9>gId7h;;v_ zwyXcl|IOvOo-XiJX3_tqHm}g%m#vD5{w`Ah-#4F+9JV$x)7hJEupj^4=6BCwIhnC+K}$AW0*r;9L#6J~qR~YNHzwYz z*wa?2h&rR*09Bfn7L>|_l6#}!Yy|{>boP_n>O^ zzwkUJOhhy9qYTN4@Yvrm&^1d^k%S9M9)^G9g8O8TS=x{9`uW7jhl;c`BxU^*9JZ8% zmSZt@-DIWLpB`i4B2!1pQsbD|q8!~?Js~)&J9Nl4m87LWpyz=fg#qB`$LXUV>OEPZ zoIjb}ydKQl*8<$JPK!;Lu+n1R|IVi>E~Ks z%Z-$Eat1O&_Zv_PL$K8(FPl(s$NTV^yE}F+*^#c;k(}8dIN7~s*?+3TQ=Q^puc31T z%k*QK!x)rm^`W}T?Ls``La=aOYhn8JKVSZQKPi-T%q`uj zMbXFnAZIFbf6PJTT;!I?!4|dHdvGd!U+#f!?&KGu|^O6 z%wsECI70(G@-yvv&Ph$bfU#=%kw3|YVXKKC((U&BLr{&7rSvjm1($|mcb-Mng_X13}NWw*>NmBt^nyb|cKiWgQ!pxNr^0xb%u<|Z8R0+&>JvGc;Z zFU@4S^lT184X9S`f9db7nts#p2DGoqKNQLfSAcCaoaS^ni#_XXuCDVJbrTw>QxHZ9 zdIsn4W#Yt?Fk^Z3iX7^SRUMQICK(GyXnFyPf<*uXNXH(HU`P!qt=Ud?90}+$G`YVp zHGo&FcX5!uX0U%`HJ7wXNa$7}o6P57%%7)}0f^8K`mp|N2&2OGID;yr6G3#9b{yQq zTUNgZ3OLoe6vmu+><0PUUYI0YVG5u6bfR2a4(DZyMRhOD4%lCOQHIm#+AC`km-Ks;bogtQDy zs<$d;4Vl`kxVJDFsjV~N^wx0E7z3a*A;C`7gtQApDs!nrW}%IuW?_H9n3Dhv0NvRj zZzwua-C3qm&!z(%1!GV5$(J|@t{_%KW zd!$+MIKwwJ7cUk1STG!lUcDYpP3U-*y$;PK(S6y^D@kV6`8|d(<5A5nsZ;6BNRVhL zCL6R|-FnHUHKPUx5h2I$%-B#(}UslDRAFcb+B215IPru!qtTdKmL(hsiMOELffjZE0~sF$((!=c z>5O*%_h1EGyaV+HT185Z`}yD}?oD5Mc3Ew*AszAvTZ(-EV+zJcv|Jyx-{*|S+R9R| zeaw^HNg4~a3&aKQ1rQXRQUCVivqsA4;5qZuM*g`bHNj)=XE2IWH|WRB3(SQHqZdF4 zFs961AxDp7+BZp_mU@@JJ+{XJJ50<(Vt!k-tC65)LpTlBKGwVd;*;0Jq$BjWLR$W)+rZ~8-Z!9BvCrye zL}hl1LOeRWf(~64Sz1dFlY(5R^^hZmkg7+<^Ah<-$0aEH!^*&|HkHZHz+D{xqe+kT z>8q!Fc_w=$WebCU;{Oxr9@JhR8ce4$eNl+7zn?W7&kcwe`R&2szD08g5{A%ie@D@RL#}8*y0)1;aOk8u@_x&dNEP+ zh_HS^bNgDR0hTok|6COoJjM*Z(`tQU`7Gede$MYsG*INB%I}TzQ{s%K{S8sA{X0$b zixP6Sp_K21l;pd3TA@0$o@dzS3RTYqzb#YomfWLmZ=VkrFVq z5g#Fx76^fk$Q*3xa0hAB#XJ8+-DOH3WVA1GAajJu5^x|ovp+Vn-*d8i{${T`4j;{t zZVXL{-^2I9q>M-l-a|dt!4#SQid#NCJ6rFJ;3ojuWUIEB_=;NSF(Q!AjBYm19K5gj z2oF?b;F4)ovBYb=YmV1El&ZGKX0g%vs1XaOYXv4=e{PlYpjb7O%p8utuQvv6%Fn9U zs{YE^?SY8;h(}FwD6_d|DZdP-JS5Emx6+t>5L3NjfFZYDx$nfdq3!o^KEk!dJK+zS zVt^;BOlO;vN%_wsT~;+y)4vjU6+in>hA=@>SW-hwdt;EuEuOojGbm0{)b_%^a@}0C z=j>YLNfRn12@Qf>ud!_`QdIz{mBr=DQ-~FbFgtkfn^;Y&W~YvlhmU?sz{g!n_|qQ- zXQP3`&CE&7bI3^A#IawEGVe+t6V60!F1l~SFm0g-vBR7GJ1n2ybE2^;kE~n4m~T*^ zBIZdLlB>-)0tM(uE0YPGYyVqv%b-_2M@JBl*qtK>3IB-Z;2i<;neDoV2H;kk1ZJ(8 zA{^-f9Q{n3e5~o~IGs+J)<8{Zj17GIm0s{?*5qwMMB_LDRr9#MQ=$zlHGNGQ#@;>U zSqm93LiRg^PH0x$vjL8UJ}#gO6I6ix0sw1_Q@J9_{y0i$ph~&W4gvO&GA-#SAlk)2 zn%q@!A>WE$oKfA3zCCcs+PO9OnR-=I|QumPs5LVRqPq zP^c)r2}k!H3ov<#up&%pW2UG39?Mi~!$mhy&3%3~85e3k80H9{Ow+#OI%z7}c zy?|{$Km%4C_;EEnQZF{(pQ-l_;Ie3u1U~C96!SO3JuvAWFtP&>uJ%1 ziUAbIgv_#-iw?HXmgp#aO5YU)j2uJv^U#b%C-|egS=7fa^}X}U?DX^fm#2S>z(qD- zG!=cmNWXu5`o{>cG#b9_oO=PEv;FCQd0nf)@P+i(i!hJj%a-=~))CMpmA>v9_Yv#N z^eoaPW8Dp(YZ=Sb_csiaZ*I;)+}yqvUDyxsD2T2YlmIb?=@JT$m-4)f#tpp3|B1!c zXeOZh3T2^FyQSs(G~LtPSED2B(V&E-Zyh#>mr?KdVocv9v!FnSNQ>x0?7l__ZUlvY0# zS5WZz`Hoyl#t1*BN7WT^XqtqyXlR32kdD~6ED(o8HVj3&Rcfq{3W>mhWpXUP?_==o z27mQKjmprT(TH8oTx3iA&F<5}?I_%_=LwGcuL}`CvLJ>McCgBlUa7Vt9-|i9 zm-RE4!0d16QwF~qkpy5&I|EgKGwo`7`I?B9_TlwDca}F3s@i=33_NYYTgb|lipMjb zA*nwD^`1a_;*G%6+Q;XDIbzrJlDO(YG0=Bbc(!kc{)`1GHbemr?H*~ap$ssst-Cx^ zddD&KKsRUu?s++p*2FB%+=|@|!s>3^8Vo1$B+M>}+mPI;GqS@C=|E2Oh{n;kJ=ps} zOZtI=(@<+ImY+$m4V4OO_P}r1%EKZb4IiJ{H53&WNPl1g@8}Y#btA#y;6brX*|7j4 z1Q0gX89#{FyvDke!!$>dtW#CEGU#G^1@Wf-QtHjf;;GG%3N_fNFJQL|PMaYK)Hp0B zY>9)BO%{e~Sz_8vl9SqzXzU|YZwX*a#Ys;76WbQ!7At5ZNc#YRGbt%>x8s1Gs->K9GjrVDQlHMm>v&Zg@|sqoXh5tOBqx)! z+KMU+s;Qf8ig>?ftVaxB!k!Z}hWvh$ItnD!eM~y{hKJXsuU)5w*eQ1d zO~ic=-fAsB^bgv&#(5F0{IOkTS`9`BolQ?Tw`JJ3k=TX0#sB2EU;BG?Ltfx%B2T&7 zUakd%Bhj0F(9OHfGRQVF#Oc|=y0yUr-U;qQTq{2M88dtp^Zd6D^32HUe5A($UmrR~ zbRo@=%*_uj){0-HXbG7Z0LR->4U-isEH^I>1tCn$AYEHEtT{vtu5lQ1N`g2;!o&!3 z=2f>?ns7LZ=O;<0x_Ma2S=wQwHdWR~^1`tv6JlCVk3(}nR>>a{2!=vez7`D*{4s_ja^ zKk~IF==a{m-9r2P}~j?EZ6!! zwHt0~|9Zt-f4Q{reV8D+->UlLv_1LWR@4{K| zFEBKr6s*M}6Y_y|KF6y#1u=VGp`8-~48G+aJ%Z$7*sf*_uD7#`Et?tU+R8VxU(PJ} zSeW>;m0s3}?unFN4oFb*$}G&EQgKB>zUt_#^-XR-`HXal9W(GaV=}hjDae@>Bjr4~ zxR4{7;=UhHLa7BYJ=_s{a=jMRegmWK0nIjUpw$A+qcf7W%y# zSpyK~78N1ySkA0|M6%N{kaD=f6sI5#7U2(Z5B*cQ$`_)1VB@^M(anMA<_TMQisBkN zI731XecujKt|^Khc6VK--*J)YLkJ`5@Z!sc$l_09ot)S=xJw2OqNw+Evst6L5^#Y?um|8@XV1 z{80k0MYg@^&RbV&-8DkrsTaC~cVU^Oy$h6*kr51D#(47e3Q z7Ak+P<%JF=i%mCO+s zz>i=RT=jDG0>byEvmUH@Wn1Nqmn&z{l9GB^zS_h%O9$UV_RD_r{Noh zPT?fPNK2V3Y<8wN`-GIBMbvr!rA$fw?OR8WjixrfP1}B6J0KJz<>`!HUSf8uUL8wg z(iHs`1)R3WfZ+ns2k}PB98)r(GK|H|jA#3o3{)4A&VteW4o$rk*{6^y&59~!6_AGB z63rX{4Uef3jkHi8_AGa3x_>TSO9EYKkns>*wfeX8c?UzxUbAuaA1PHE#lj^lJo_>e4&lFSpNC0tX) zXKkvIiHrOoDG8@hMHaV%9sM`qP?>sPfqI8%(*;d7Y!>-RicaFI=L&3_A5Fg_slP*% zpFL{*DLU&KYh`l^QibWcY8CxW(OQN$lqVYS;A7m9>sA*-yh(W&P>X(FdZoGRenXIB zQWclYp@&K%>F#8Gk!os3vuZ)M;-D*NjGkVCFR$*!5*@>sdPyMtCgp8~89IXy0lkX2 zo1*4rj~?ImzE-rgpbg1Z`35E^wsb~o!1Gbb5Q*w-n)P-=56$Fa9Cy6g7J4L{G;(~| zOd4I?1w*T~qdpIRLe5nnXupa&9@;Xvo;)*HNF;~5lmzx zZ1ek$79lJ(N-7y%7o4=p=2%)k6Om zwp#yUz;isXX=+RMkGoY}s71_pv9?||9zPQdn?O=F`R}5U-}{t)rPU8F&+h{N*Xsn| zeIJ#7r084bQtj*Oo#;m1+cVzl&Dq&lcag7e-Dd<{O33Twf1<3(Z})7^e?6MKUr(lf z^`;vJg#Ggzk2x3&mcG2>Xy0aJ_(9$~{phFmr0MPZF^Sgp$<&BT{3RRvcs0;yil!~v zwV)RkVFoR_*oYC-UxZwQ z&5cCl{xm$Zf^78hi;cK{lWZkYP1eA62%F+wsHVcVb4?k&uu$^JH&&wwSh+25f@+8Cb*L zzB$Q-GUt`rRgM|0C#EtRLeuC7|76e=sZ_Qe!tR3nV+BzWkUq+MSnWBe!g6}P^t*Nt zMJwXR(gdLVy!g62BqCzMmgKKI`7Woesk0chmr61F;fJb66I?maY$<7Ruoh(BQ$1dz40p z&&fanBJ&L2xR@%yM)9!bTPL|9w2tLatKf$H&*)mWwGmY!xv z^s%0%IpB#5#6A0}BJ8~24py}jO#$O!{l|Un`LkCx%>+v^q*cyJzzessxjaniNpv90 zm$2l9(R<66xBxIe(QMQ}-q9*8(8{`u7~qb$w!=OafZk1h3Y|BUY>&2uXd3Bke0LNh^$#!Zw3S!>5bxs?DOZZF0&~k|0K~6$)fUTN$l(M{7P&KKvG3}08LVt}J6KG-Su8~Z zYxgxWrD*fSxH`=Mp;daj)ib4n7_fQ37|s%;#U%g`Pl3F z{5|d6IE{n`BxD%vpF$a?p&uMzP5|F^jxRh%ETTHO5~2Z=3@99lW3VB|_(6PlqN=e^ zt5X!2uSO;n%Mc}Rhn~7bT*<9bvuqzB_kbb7x-bbT6(f@>VHWR;sYK3N02#xXE|}*j1NQHi>Ajoh4LjRBuMHfa#50iz4KOPlACvz|0|aNzv+ZG_OPaHSdeR zu$oASgdEpXrzd4`PnNMRHV#G_{!)%^>wwrulsPhC!M|Lg$->2~;CaJ9z5)HZuuVcF zobkBs0emb&Kt;B8jlBYk@TX?RK!*k&qV40%E-->ifEID?C3*kCFB}!gwpdo*u#&o9$biZgeDtE$%Wh-)#EVJ`bIugtgbfN-WCP;*H-&82E=1LEgB%}HhNne z2t3~%=PZYAjekIaJmPy{>%K5*O48kIlRQyLVN$7oqz8>$-8q3ar!3F(KX`tx-cALD zG+Q!JOHTT!cna|-Gl%ha*+s%Oe0%JH2{E)V`Ph&w|MW*B#!et2^F&7el4|dRL4W7n z>Bf^USWj1mK(AP*AY2$NkG5?cJ~iXc5b zxl}3WD-o5oMlJWE!r^#;8dumS3hU!89OnLQVB@xN;pq~Cyu%Z1Xssh$U7KpFfA@*s z?*wPE;|2NMccJb?1&{OI*gMC=LkZSgPrTE$nrX?h{75AUikx6U&VhV0=Sa2Lf{qP- zL2jwU5%{%xdU9=xC zDFdn7|6`ZQKGnUrExj&WE+H*EGcVSrfEqkEg;_i9DJ`Y|g@)PrImY#Id(?3pfTx}? z^T!O_?LMlOXHv1L60(V`S`4s>)-FNj;!)R5E-*KfV#Jp|8`%Q!(_3Q^cK#G2Cl1tr zF9RQQP4X;JAJ_N%akW65r3wr;r6QIF8s>P2QrOu3a494IC;s}?BVo-2Zfmki*1l5` z#Q8?kn>>U=x)cpDrtR2*ub`@j(V_8U57{ppu8AW*9LM+GMcc;>Nm;DBkDl^wjNp~g zgTdC8ByU;+}W{RLe}FcuXpjXF%w4xhl9l(u?adS+atEY>f_+YX&)iI|l2>kl<$ zwtM~6&nF50jXl)vS9$9R62N&|KKC07alR6-oTH3Mv{xg=qSXCdQLbHE zOC}{&SFI}q#t0g!k)T%uvdafKM7fKx;*9<-?`T4swN(Hd#b{ig7F)d6RpqfSV==zo8yIDH1lgf*StH^t?m{dpwpV zg-XK17(I86{cwVblrn{I;`e3Y&-dYkLUxJO{hZrMbg@l@}kEJxeskP)`eyM zpO;PA=`j$U3efRo2=r?tG!_Sr1I5?3Lf(6yjEycpy8?eb6w2TeU`kzCTb}A?_l+tZ zdzKosG(_cuYkh-f~R9`CFCr=PU!yS9LhtYC&VI_B&?n8yg{ zDUxmONFLo3qYt#zM+M`3OvqfQhZh0N#fg;bTCliV3qNoP%zpl5k>gOUq{0K740120 zle7!1XZ-Hu0#LuQ$?dJwG0)2x+UIAYyzQ1>Z-w)Bzi&%z(LcVjcqc@97eZ9k?<*g@Lo-`O(O9%8C1N!`KH`J4#eL{%rg$Bo3 za<_K%KRIo#zH2={#rxL&Afo(*mRR6+-tSw-E%Mr$-SnVkzQVXTSzahFZ(pDpY2`T` zdauy&!^CvI#SB5NxV9(mmrW*D_p2eM{ZJ`I%FdVxB74&{ixEs5g}pfvq#0*lyF zXyA2>iW8Iw-IKpDwGjyHs0LwEN{YU72u7#;8QBH>FLC{aP%ZmIch+)@mNwPliC=m1 zO~K$2lyoGnq{)mxVWW7B2i;{I27ZqX+;BjHtIsC3;zsZQ(F~M`W_Lo&@y|SIF^HQgt35pEGqm zfvT*nmpZ9OWAq#GBeudZZOO(QUWio)dywWA6cTa42U?q6wMKcJGyAN zpojGxamA=X*3^$shN?hjJMt-y@72yiWg6m3J9onCIOgp@8k)@5?1t7QDPi1R@=d{38H zO{4+H{?>gLIzxd9QZ*C1=kzX#(+l?u{3V_ZiB<|3%nlk&7Hj`F6ny2C#x_zoqD;`( z%zzV%sK(mrJ!6tD|DT)QsDBf&$v!78KlfJ!?HRAD)KONbY&JCmjBJrem=>IvTzVvF zt)LS3cpq!wqMkLG_$W|XN9cpb3xz94Wfx}b~CS~ZlG1hmx5h%Df}u!lsc z__zR>cK-(CiNrAarRdXM#SLhSinW7q@0N*fd);>12fT#&6flgvy2`2lQl7bwJTfLumWn3Bsg`ICm)pp ztF}sx65Z)IYkQ6K@-q( z{Vw2M*Vy$ne0-XGR^mz)Yl4=mBk*~jrlIdj7JZzSmpvSyD;f-y?4+H%Jt`hK{4y%2 z%2YCh$4<$;_ofO1F4%R8h&|EA&j!0;zq|<{PCSK^w`Zm|4&&B>+ z-OpTxc2TK{djEXn_=Pl}8;teJVK7xiPQ3#u3_&w5u{X~ACL>nh4+Oodi#e;8q;@{Y z(FYDI>@TA1J|T;9jxE$7iwsLkff}08AwN=&z0J}w@*L7PXoY(YJ-nX&Y>C9!3kCua z40Ux+jJ#)}L0^U@H}-#~pWoJy-Ctk512ks8djDz6NU5He&;G6Me4qK+38;&0LlVUI zSwIo^kT-#@r-A?O50|Gd7Sr=K=ArEiK3n7#9+U%fKl+H*JVBjTK8bmYq1XMGbTTb8 zyiEv+Jrl@x4&rqlw86qhIIJILv5oy-!TOPvlQDY0axJP0Cx>jy5Y6$62l1o&1AoqQoGFfLi+c-b+_&4r;Yri07>$-w5 zXurexu=Ye;yY_-y+c=a?9P|G$><1vUZ(w~VTVIkc7L@(dyU9MjR2Tk}LlleU4(f*4A^n42RK=U8V_{y=R)z%HeG*Dc7$ARt7zR?PJa}V|CuJKuN-$Xa{~~zi?X&rJb*iBG|e@_UFF3Vx7o< zf8mHYp`P|5lh?y6&;UPu?}AH0Mp?TFpmJFh;d7C)Q7m)4B#f7GgGnN@iX{yK&@0l1 zZ(smZ|4fHaeE%DUPLlc>(~{JU0X0X#y>fCNcNYp5iK{3-hvg2C?ugA6QuURzQGZyG z4eYR090+HCDBa&VfRr}y{Sur<2iD(HKx^Ef=CZ*2J)ncMVs#t&J_YCn(WG=>{fxAD| z${AhZ#y@N+*-*ClbiQiT$r=BAWCG28Zcw0JuCrF8fqU;SSCQK?nIc)nBIW*3ChMdO ze|l?t%|msYqcBK85XSrged&}91G z0XKa<=kHI40_CoH@c&kBTzGSuB$5D{&dPg1-$%Q((f!LhL)8D?A2pDQW1p_ZYa;hV zsk|7aX^y?HKE)5<)MD^JN~)d$qRkx2To#wr)vc^Rf(0U-8exBCIAG?l$pDoo_* z(PU=T0{TCQCdf{_G)UCc28%`$l5BO{=BsU&8}>@{48DGwPLY29=1qvmJ4vHg^A)fS zPcKQL7FdS=O(4sZanHa{n41=Iri~tsV-+`&m$k5kdo2A?!0*?JFH*|nX^`P3)?j!u zo+Gi|i*n6&47l!lLRX3P@?~^U3XXF2l(b4lhr79g_vjCYdJRUM#+_{b*k9MK>sR_a z-m8>T$=@?hj^?d%DY#b$J0pDg8De13%&gd$|IoCOq50h(AD;w!B#i!jA;2nW0}3r5 z-hm{<44=0;DSIJq{GPXX=m(AP4>y#MVg`UC4z6HG{+MnzDt~p+Q;`GIVN0Jq8(9BZ za>fSga83JiO&8qv@o&HJM>p1XM18b<0R+1u{Zwz)EWU3qwHGbFUMb)1hw{#+0$xep zUjMtJ-w?awJ4h3c_y+edB$|r>{$+>=5qUer>u|Zlbf*-CF6PLv|2)A4G#fH!E0jBB zOmB(Ai&6X2gutFJeW5lOu&`y^FlXe+BuD_uQz0)k(Uocpmi+4NiHYAoWWreW)~Zdg z=x7ZE0$YD`Io5ZCD}4)9`W7YuJTiiFa*BN!8z_a03^2g}MRARK&n`JsU<%q&RP4_D z78uz%1@Of0_`(55wlF3YOe2_)87$bt&;ex7I&~=^PI(aS^ViYv%4|gJKLt4Zv_Iw#8z@F(&4ur}1iM`<*~ z;!*!LaaVUX>$C9o*Oa{D8762bwT$2OM1s5v2v##R1v!Tj{*xD;&>zY$1=^~BhPOiR z*aKdv0oJ0MuF)8S!V5|Gsg_zK0Cfpl6A2IK@-_ym^@;T_L9L^G-EPHP2l;xrywWyI zhxBI;1+a4Qe1&wJC1yvghr8dPsF$pu5z3Cx;~ro}?hLw~w83uajNB>x58JRKaDNBI z73)|U+z$HW3{(Sv0Z`VVd6`D=nLc33A4rtS5r}2(jA+iH)2cB4=X%&=8$VK{(K~J; zGCKUwOM2qP5LgXQ{nvhXDBv^9jAx@&eThnmrOhry$|oHZLHQxXA~ns^%1L61C(==K zSMQ5FqfM6|5c|E`Dk0k$O8)Im$A0gE+g;TPZQgLH`qJp$(dWuGnsRk6gb+R(4l?~l z;j!QifjM0r?9S+{#`%iE^4Wfs0`nhqBVAHHh^IIS7&67chko5g#)=#&{)`QO>Z0^ z#O$yd9`1R){jHWK236QD;5?yqHh7>%qH@};-hzcMbOsOsYLG2{K(30kzq>75)P#g8 z=dYL1M!i{KnC9?CYFP}>NQG4EICs&7BkG5du8sqiZ%M!!?b_PlNQYF+-X;QYEXh)3 zEKrLoWWPEciAlfq+sqa)M-zb{Y$eMGo^wVR&h(b4G%O&0fY=& zIUVxra?Zh-%J?ExqIU#i-ykAs(oG+sR_qABv?+-d-IE8R_zWTw(P>5uLUc;|`d&!{ zd_&O8nlDSjNg`tM0X`Yx4&Q~IBg%#D=fPHqURbTiSgn4eSa0RLqv|jw2W&5o1ybOc z5C}$N5>R{po3V)*-P@Z!W-T1hg@j8ar|3awRY&D%YLRP^c5&hjUL-H&D}7~5F769Ab$k{hH=c1 z{qk*H9U~v>yZ^)s1B0@9rN1oz(N`?xR4%BXO`F4NiYop_JOrkU4=gmHUl%Rt0Sg)W zfq>8%bsrKEp1FdSe^%Ob`j}sePM!Sxj5(-)p^5_ah@b+?0Qd8zoNV6JPz*;|dNy#Kn> z@^#`>M4m)o)uMy_F~Ok-A(vOkyL&h)W@4=`qv`KgVV%r%*J!zrK9%ANJ>&W&ASkGb z>QMG4W(B?HL91eit74}W3s)-e*1@&4VyA{f5{7ZoerB+3!~Dk; zUqieJH%6v#;E`YB*Fx^Qx3yrg_S8a_nYmF3=a`jtVFx$@m zaQnpXbR$gu>ya|fz$>Ikn{s>M&k(=+E=SyFub6)?hg0vI?nj^aop=4n+Y~+S5An!< z-r|SXiVP&$P;KomQ*90dPvGzNIq=;0Kcdb$DC+n9`n&YfE!{|W_tGiS9nwe%C|ye< zAf<#N4N7+@-3XEbA|aj9-Tdy)_xacgSv+1s?%+nT9h zMF<#|`GLRpW5_YV=IF3+`NSG#33;x>d6}$E8Edp|xSgj@RE8So218B>!=RKs92q~k8nWb=V!|dxL z-Qo`q&-Dv)I?HUa(mZjpkW~O|w~h-nRRn!a09vRAN*)PLpF;`I=)^;CvktH+G>~RW zUY6X6c@rY)dGw`h0|?ltsN|TAv?QYqaSWYG=u5gd^FRKn(#z&N3#BSwVK94ZF>BMN z<>y(HOmNNqrhCWPUQ_U!nTpgmM1>MA6F~JDj{XwQbZ=13Q|#Ycz=lOrDuhxULJ= zVp0du?rK<<+~h%$Ha#2GLh{0S~=yZy{nyC~?0}nEBLqDt2J3c`Z#UK9Dj?eOb ze1OOCMG4zbxi*S^`s^VXuS2ox(iRxJAA#{hL7cJtI%#?Ia+$daroW9+{)_q8Oybrj=bqZPT_8-qR1~}u{>WDpYLiMqnq1}l z5HUeH%dJwu2MemkXyOG?k7#0S+6JozV5+W;!LW@c_^E@RC1QzM*Mm`AY7yd(;cb`D z`(80l>fKY0P|X6qw}|K{h&eY@m<4rY9$PPTAwRJ|lPG*54bGV)H}%}R%pI=KnWOZ< zHRykshnFZRK}YsV%g^w7a;TH(dKh&?r9V(A(y4pbz}<+u7FdzK5%}u%ps@6LT(oOP zVA?po_Sgu^4JA$h6y*Ait_mZeFK<-m^0d>W)YUXotZqY=xa-EnW zB!xQrmcBp>e!^(mHI&H7AW|E%dgWiJOqxt(0=IUg`BoA>_?*^8xV#6*vR>x^RxMaY zR4LqRbq_4xxt$4IZRgm`lwa%UE9l4?U}Vdv-){qJ#Y0~ZnTbxz@HE~Z|7n3HQzZPG zxq8^7M46V9Xf6QT0t-JM-#zR=Es1 zZci

;RWZ%Q+aq=2H{j9duIEAq0ua?2jE=+X>3TC!^}J?ud;}QeCALKJ^rbE@!+}l$-6$E zGf*NAty-a5w;_I?KT6`?@*`?M9C|CoZIyF}V4}@`s}p?QnSS;FH+Yr#*EiQ-uNS#8 zC?+o?c^$ReJ%WEX4{<*ydtl;C%F=|2BGw@)GMLS;+RZqy>nI zVYf0zblP;lU?C)XL2>e%;B5qoVI=v?!}Y(s>yC)A!Jowwk~t>)%KehDFgR@t#v_$o zHV#6`+rcC#${$w}u|7Y#!a2p}Od&2Js?s0MP;QzE*b!YO=n{i<7#dxbP3)%@&C6-q z&7D0wl-JjjH`$Yyv7%Tnu^sFTi+y0M;J;#@QSc?;frnMDAU*@tFFPTF{wZDqIUOWJ zPIMO@E{IE1UEq7{Dli^VfQ8_mU2?ATbM~Vh-4M(j?8^C}OmhE92pXyF=vsH+Tm_^h zuyvnTblwN=@4NmQ%IVXYPW4!#Qrxqfs45W~a~=2*(HtLr6ynhnLheH)I=?J3zvxo% zi{Eyn!Uj`bNfyQD|FVLYID|C6k3Vmg%WkARfsj;seXHK$HDG9Y=X2X=O^D2=jjm9N zu#}G|YL?*nmBr;C-Ord8MHvj{2X#9$Gm*S1k14#uD0jsb!Z?k_81ts4{vaxIpWYLv zMqSJ4r(o5M{VYN{zt#jM4}B%YqVjkxZQMixY2pO^m-$M1Ac!xXu!*yF2FJfjQb2-r zY$3nm$BK!_hyQw=lT$}8BB_th2iH&f=}uq(rVtn8EZ4Q2m)&xY(^mRP7w}qlz~@lw zjwZEiWYZrhMa}7e38nE8tJe}>8|Alspd6wssc2*edBQbu!WZ#`4o)&_HL!qWW67&* zaGj_Q3NmZO`t_A>5r$13ObZCpOdGtww&PrN0NjsQ>MD+E1(}*W%^1F6*AdDjC-S7H z7`;HYoNX2D_sWH`32H8>#jG_9Xa~3B15UYPMZoDF`0w;g+mR*e>wO3AG>q_1%mdA` zf3Hh|wW7oVHH|rAe`r3GqcC(zObmpl@p5GGDt}MG==7u29Mp2f#t5S(E>bZ=Cg5p* z>b#CQhqPn?(E_!F^^VQ2d7#`@;u*~I4)>r%h18LW^1PvHT-w7e#N zWHL(DB88O0Rd9EFCNcVoOoG<8wj;Gp|Eg#f_c6ysGK|($y7kkQ>oe>ZWpsb(T4liH}`PS&4rbqdz?bVT)c9$BMpA z@1li}x9&WQBrgmb-$Raz#pNQDCl*I{#Zdwo7KgQNY8_kGHMum9B(<rc0Xrrc|~@8ND3}3f-V2PGX`x>f83wRvg*nD9fqx|a3k*7 zawUX5y2ue=aTw?`7P#=i9s7~SArT<6c;`7qhK)(-CW~6>b8!fv%Twwc18n5DazBhY z7&j~s>ky_gz^C&1cXWZ1QXH^1;_|l#D))ODw?%*24G#)xg$@o1vcX3#fV=O%+iWRK zAFz0|flw|3K!cKSjqB&>s4p4T(HR!eu@(_|mHE7^Z4=-Kt6pROE!?c;NF0@JYMg+} zpl@W0ZoT`|HZf|-1vw&EhA{hrH~4Y4>!qLWLO=8H;&Q8SHROCtx(lMF5Wny9fUm!h zJhv1cFGJ3(0#3`Zy@>M*>EX`xr&&LqDSL)(GSg_99>E#emU(LI=}Uu!f#6zF`^>8p zo@UcC%zPQxy$7e-)Pt47qeozhDP|tt*W+cct z_?0_hG1vpYg9qKWvHsy~&i$-}qz2OIZdYZ=pM2FwF|5CLN^?ulU8yN9?KXa%w= zTMa@9oWIE;i`+y%kh+M3SdHfLqNj?RDyt_$7DM$9&FPYB<#3!nQoQ5qtRm7R485kr zi*O{4Dmj4>)L6$?xhp4_Drclfa-C1%hBsusuQPWCE-<2XUz$Zj2a!`taA&V zz_eWBx99AMsoMLn^DX~JI0%eFqnvBJIZSs1G0|jhxBe| ze-)ynQb_@7quR^+?ka9s4CO?qJIFYO-`vy%D9?t7K&L^*S7Uz0C-%~^FBe1<>JKi8 zA6b?tXbnZw%Bcw&Ddyu1hC2EOKcqVbfG!+qtg_^GUAM)%6-bIUl|OwSoq@H-LM=lT zrKBQRrfGyy;_O_Y)qLQ0NJmIO_l9U4cC`NHa6SHDJz;-cXP+(s2F}rH?CdX;DLRVc zKz2&cVAn$4+?#aq$Wa2v@cMLVcjF18z-#+jh;ATkdXtHAK**ug5B*RM%*X7H+0Qi7 z*66$eB5GIdJukz?fV|zIkXkoACtc9;T^izSvC`H@scU-a=4zmN{#s`D9UultcqLJk z)lr1`JjRNyn({v)yRwK zS;VRCc>wg@uQw>i9^4uR!LTjH1}s>5L?(`@G$VsGK$9~YGqY%1B+;(1G%d{;lpi*1 zUpIZ)mlz_^l^v%|H}4P;k7aN%F-jCiC>cFw+%Ik9HQ_q;LZUT{c=qpy_S05w@eAX} zmONflH$`4`B^5IgeC!NJI$t)R01Q#3F?=AdX*-`2HWxcxv3bZMu%+J+@u`G$d#gVd ze@oHJNNE#$y-(zM&jaAPqjA&lYzM<@XCmY9{0u0EryrgljPVb9Ik%s0e5^Pa1mU9A z>bUvEu-vR6kTp9?UH;zwB7YgS&UL!VFB!a%Y3qe|nyS3YwsB#JL-?uPlE& zz7%v;+~;%kS*|kh7*Bw;i8L)sKHgp`s|NsdJdPq~0|J;|aB}};6aAb3$ybL^7H=!( z=l?SE ztd)hfftb62Si^@t%#nFu=42{#C{)_}^Z`@rk<1f6aCtuH0GH>yilut)Ya@L48YpvI z#c*B820IBSWubIz7bKVpeN(3^$1O1yAHwjZEZI>^!Ta%rHNPMF&OupS0fAHQT>K{oh$MLN;Ofe9egh`gGum^ejxS>??2FeYcq?>x7uz@3-Ud z6<44}a=i0DDqx!H^3E8+K?o7EsT2Lo*6j^y#Ia~0cGHf*yRM3eTVT3HkChKB(#em=zS=_3IkE^Lo1GDeM!D$c`9y}!;0+=uAd3V;2(!TaO z@?{UJn{e0JJ2HYk`o++*ARD9thRuGmV}GxqSRKzqkQarViRh zk$_Y@{S%U4s@|ZBNYh2c#&%_AX>i_UW4e1*8B|2#_G>6_@T;vfUp9Yd9{;yI{{Fms z?Ku;VVEMwFx#<94t+^k=g)=pI8w2lmK<9lpZEK(@y-QPPHrpeuC$`hYlw-`lAWQ-V3XT?F18hTlzUN(5WMazVIM71G_~Lz#Js z%udxbLyb+!TJ0LA77h;>hOvH;q8@+Y)cf@&T|QEz4cjM}c5#suwZx^yPGz<>21Aua zc<17n>Z!5c<)BYW)J^#@C39+2JmNshG(7z{;B_(NTycvzR1tvrv~F{Q;Px4bH9 zu%76MS-3EL#@f5Q3Ha4oBxYI{#n7!1L#d_y_=bh1+1>V5G9|Rq^*^$+ZLhthEic86 zhG@Jp>#%<`H|LWena4;aj`dz=OktRF&XLzXc4Wfdmm4gQ-lQsj{w=9-FHyt$W+`ED zgZ4vDp03iX9}Ry%)ynL7x#iVE4FZ{G5*aJ~_szGP4ms=h6yCg=;NaO)#Bo`GoPj{l zZ%?9redov64rth^#E`i*&)7pS63mF(LH9-hGWtgCHCk4Cy^RhjLNGmrbgTps38Ssi z#OSQ3F@^hexNa0**l~Zv!w8`Lo;!_aj?xkrDL&}^F{pzdk0>8}{FCGGP*-ABOpS={ z1y|2~ER3v(d2}rFt%jL$Wi9PQsFdx_IllM)wxP7o13yWErh+ZiM^|%Xh^JNxLea&PVWN2K&3q3rbSVyuiM9V+L?= zsecWOF@@xI5X`^WB6u^nf&37*>$^P+U)2;@9#QdegLI~KD2OD%4*Rpi^XYfQWoKQ# z`=10OkNeo<0fciYv!q(SlzEAKL^pg4=wmVdpU5_pVpgXSIW|&y6YAi`jP%aH>NmMZ zlq1KB0vI1bt7sYXPE9?s{J$aVLeJ6++ab*(OoRis){BIZ%pFpEYuZ!Kh8j#$N|#Ae zi2+?sq)|j5BUltHk8T0U#U0U-Ri#cb^+?L-ONWk4UvK9cYKg5B7>oImktIt{qhKz- zSP5Sq-@VN(mnvWL)$BAuF0vBHSa(Fhhie4=P9Q}&jR6Z@`c-kJgl*lsjisx=kXfgK z(<-4fpcaW^%R-3?ldS5CWX|XIS%H%vqCzV>T9{_st40qmf6kzt#*oDVARVe#%T0(F zr5sW}dp5+e2)}f%&{Y-&h$?D?O32Z~J{~pdN+^WdznRlt`j$md9`bpjH*c0B?+06M zAD4~5lg^<0xGHi93tSMkahQ(^@=F51LFZ%<^9Vs5NkIVnHmt?5$n8WrVy&9dcPWR& z*D~qwuLEbu+#ubX@pQ-H2$qE0TTEg|pepm3p&vXSt!*Q1ZXZ}iD5#YimL=JYOr%rr z;w;(oD}s;F^5o6xeVtt~5r1xymN8vJ9QdhYA4kICpBA{@)7vW&O17avT$C-XhqKug zd$c7WkFkeDu+PZX?u>4&Ex=y&b8>R#va8rKa4_xfuOA#b`}s~eEr~Etj4-Z^?kRz#BcG2HY10h^pjF#rT@=`XUzH$|6y+vW;r$3E%)P?ZiD@2bgO#rFh5R&-pN8)jwP&R%+$e9Q!<>o#R z00WI(HF*d^#AJW$LLK5mP3vNqHyTmE%L<_I4cUE}YE`FEw3Q_in^kcahkmJ7&?Z4QIs@x0QfBqfb<}WBFM+P?rsz$)!>Vt5KzDo3_ zzEZ5V2GPlD{Im7ku6%mq?2e(;UL~42#8)ah(b30KBOZ{u}Mg?)g?!z=W>;& zJ{u9X9npB&uBCxXerGVwUj}z5Wa4{Ch}^b{rNS-^N6=KTKL`$KD%N?{FKovNw-w;A z72vc5e~^aTwsUXJ+wywq$&2rcY`pGwB-t^Y-8|%ZB=Fe8^>ou$YyDtg{e+(pny-AN zH*8a+Li>rvfc2c|{;{mI|CDBd3jodcP+^q0V@OR}XICgk_fkYRlWb23Z*5_pgCnT? zC^98UTRkZvJH%#~v2LLZqCe(sV(O44TF|t2N6wBMs2!7P$3%wCdn-stegg#}y;U0@ zQ{vh6dL5oy0$2Fq%>5v`C0lquOU}+UBc{XSj8vWuSURo+e?7+U-ePZ?C zTgUJefayqsi#7PE95)5Wo#6(hPYf*FnLm#8#w`kwVo8EOrS851lUF7T%z`{aLL7bx zwzHVb1FZ`~g`K=XhZzdtEv@<5C_zKL&AP*^_O(d{LQ?P~{iH$Agyq98abVtDPS4FL zVFCeN(12>29!>)TSdzn_fuM!HOEjWDK8A;=^@8X}S)H5QlPJO|81+;XW$zK?xjnl% zz(cfR84%(o7R5Omsf$}G^8gW7ep`c-00&DF1+kW94>ji!mF#dnRgfyByJEEm*P@u6 zDE+%zyw|^zX9d%(Z6;0+uF}m~UYBPXdOr`@0fd(~Am-yywtZf%J{j%#S+*$B>PCiv zUL4Z@n)L3(oPe1p>h&CnYm73q_zA=)4q{hpU2KzM-ZK8sO2X`SI&^flQu5~k!$Mah z?HGudlZbN2JJ0zdEKC=TPbq0i|$w|NDj4{HwLB zjyW;~^lW&zl4oni{L*syn)g}ny~fS)Av2{Aj*h+*ZizF{tr5RlQGDI}Nj+?p&*53o z=Y-Jwu<@N2db=E*zkfpe?~B1ZK$+bFxx>h_<+=R_=Lb^yN=9^|C9L4A%A$I=yHD7S zx<%QRFsvh;5D5M_A*1|3v=o%7(N6+?9mE`m{8s(z<=N9@M7?ZKZpMETP3^Yur_N5o z=upS{M&P!1)!j+R^Iuo)Hw9$B1KIor>v*GpXPH=wYfkguJY!@;UoCj2cp!NgUL037 zA21-#{EhPmx#)f2Sn-R+zjtC0{WN%ROJYQ?3e5dLjOi74UKgU$+5LOFHYuCp*gz&b zWV&9P!n|SE>Di`5`G0}V<9SK)?i-ditBx6-^M#P>WDF#Qi3|#QCZd!hZR7tuCB$1veO=88&ceoI`}^v)h&>NF zo__b%HjgW?d-?qz01`|sh1?@CprK#F@+N~ z63TTPN<4;Z+=6;w+USyxeHbvQmHPwdA0uJ zD=U!!fIz6UiM5HRS1iE%vzo2f^>;7%XHpiterG)yaD6k{lf)-K57ya{d7Zh5*Z*>> za&IbL+8a39!j5EqowQ>Ext!^KTEZU?C;TPStL=jE%T3>(Iy`{@+$-yw^S-;}2H~6Y zOV%eHesw3C8GDMi3X}-I9OPpOIrRDEbA#Qu^Wnn#{7tj>=C@!bg;2&*Yd@k>7Nz(U z)k*v762qy_3FVofz&UQfyZ>FyI~kufQf_PvCOR>)z9NiBAc5p|_7!0D-&H;?gs@L! zAym)gr)=6_=)wKi6Ud@HIK*Gc!$&M6ZWdNj!MFAF<(tt|$8X`|*k}qxe~9QCil534 z3Oin>{EQ(0glg;;MIuQVF?k|n+>vCaVKkq9G5sgQtiq!=d~J0p_N&t~sK7Y?8B6D< zu7;%n3zn{hBjAb)#+9PST3?&~Oo#lh6+ycE7NS3!O75`5iBJ)RD=gb10pY!4G zSeaRVgg92eSILUP%|M$+kE^7PbU47dlOn9zPZ>Y-jMwSr%@Dxd8rY@6VH+F#i2}lI zY{zJ6A|-&J(QF*x3!1ics~64Yhs&algOW)gV|E2{i9=8nP_NgT6H=Wk;J{C%J7PkN zB)VyYyBLJKDET|6^hIcLRgo%u4;r*8HjH=7UA0n6WZm!GyGS%dw8hNZ%YTbl1z~zn zLe($|OC6ZF7f?~(AM&nD>?waAqVEi2u^^@qmZ0;hwf7Jm->aX-^_RU57I??cH+1&A zi{e0$CWN&!sfLu(72*F?%_TSWZ1nFm;bi|{OuqUMUSTMA=Iy0C}qU% zj`Nezho3QFsn~3|nur9A+{<`fRFq&VnXF804e_G}3zaNg zGw{yetXMrLBT6;n5#poam@#=I*4TJ-0WZ8xR_><_I{Ic^#wdDZDRpFLesnJzcNZKV zLWL;o7ht`4{(oO^=2sqKv1F360Ke~df09qN=A(n|rqhJ!d5&gxsLu|Q_USy#1pbaM z7B-GoH=P~41bXYl@v1vxL`cTGS533m$gINwylVCqS?8O3Hh{$DtG!WAIWp5gya$eiY#_MX zh`B3_UQU4N)4eqB%vV&&Lj3q%VKl{u)v15cTCr#XA~YcpLFy{`;@ZN{u#K#KujYRm z;eY~*iJaC7{}QB)la|7^;<)^l62?oIQ$*05C14!bhR9x95#4kcviBtY4oR`l#tojr zl4nv33HQ=NDhcGKCz8V`P{~9C32o%7E`*s`N|3OPkmN~V;wqg}nDBAXn?0YJC1vs8 zdl0je@UyTKWP9*!eS9CW+FPbMM29fViFkRR-?#!?&tDCv4vlXwf$P1P*99q^(>hE)YN}gYW$aMZ|i`(*QMYc-) zelua;V0(RT@i>;=Le5&|P3NNiGTn=OCr?DK4o9TxiYNEk6cs{tJCv@11kt?%MJIUG zTm74&%W0_nDXv-65yOVu7217Sk?(~BR|u9uWYIM2nJx8)Lh^H##`oh13YCtg?;-ir zin24+lCuzf;8TvfW9~OtDY_B~aY%%4HWNQj^+;KECLc}xgRNmp;^`@T$lqYMl4`wh zrZ7C;dtu%FF2<^7r!DvnZB`KDGo`CHc&xIhmhb>-2YyI!U@81OMgV=ipo@ihRBi^E zKW01vnTzp@XuXgcYBxE){*#+T*x@Qbs-}`xdr&Xek@EGIrnjB(ISIGK_5P#Ple=IV zkWwPt==LH&kp7P8?B&X*^~zxt&@8P*2?=s=(uu(VaYzNQ|K2lJz85qDj#>7>FzWRLgyh>yZDwaB|D7U0^j_s7r|e{lM6HNBIzttm5hY`# zT#+=H)4`uRDQNdG1*^sKF36EZR76FrH*W4+ecenYCjeDpk%unp8Y;)V^l#JlUZob@ zq!C#LVZ7#uwmPJ(1r$3~{@ndOaqxZOf1Jn9fiZtprw6yo3aZM&vYM`v7pYHQi2gQH z?OLfutsUbSBqkA59RS?b@s#I|#33$mehryjNYgRCfI9c+!U*&XO^j=ofi5;#p%WeU z>ifEZkGsL-Mj%F6yL)qHP3#TP8=S$RAyX65P?mS)nS(P+$94U5B*rJq6lv%=QU+>? zU>WUZFuw(+iL9*J_@>z$rDEP3XmaD=aDdhcYNdo9+l;cosLBe#Sqf}b8nPl&{*R-x z4vMN_qxdecuyi9Jv4C_)OS3czNG@GVcY`Rk(!xr-ga{}pjdVyzhk%rHmq<6#@Lj)| zJB=?r!Z4M2iAhrWA&kA>ddR3VZX4rk2A{*edr9u< zuqX+~aOa0YG(Z)yM0{1Jj{~kPjz(6tfV+h{Rstw3}-5SPEt9es7It_E;9hy35Fxykr_jDAknKV37ytTiL$yq{iCQ@Z>N=Fp&Q%_wEm!8a`` z-5HqURCShcaX9>?lQ;jo#{oj}xdR9dr&w6i_E1yVKL4Fc0G$^qKKO#S^i83`@*}wa zyurNv7^rN2Fx$Gh-CLqHWday2g6?p^{TCKGkP12QRolbGjU9CCAWH-3ErA(GUCsD# zJN*n$vbC)?AGUQa-{0GtULCng9pBb8J|wDmPFFB=(qG(>6+T^#(rs9dV6i{wzRz&$ z`@C*n<)8Kfi;F;}cJ!)~l=mXB$Rgf<{|&ti7xuZr0SGq!7o0DGS~Bh{HRne8i*;c% zUGI|V%BEqgt)DGK^=b8$VnRD2Js&9ssM9kIX=CT(!qe)07@0=Z)P5~ybOq&h^bHjJ zG*kwzvV^)N;zciyazg0T{Ai~3$Xq@u%?QO-77}u)ruO1$6f50b*z2!we9f!%d#vw% zN9oph`NZwbic)6KrN}}KM!(QL$ZHt^+W5>1%11!7r^gOo-(xOV&tL$#OT@K$$1?tu zl!^%Xuh>kF2uQpRwl6&AlMdI1k|hM*E7o&?>h)Lg`FAoBVR>H)E0+?%G z__@K+9ihLq%Y`=j4t$R(GV44kLV=__XM*#OpAZS5*f7bTN=^+r;3v75(b!C`{LId- zMg^7O?@%ZtaXk1@l-#rTkN(c!Dmpw#_?BQs z(nZf|aBsIxVK@)2IS}`1@M=mHI=bgC|EE&H8vk`$%1<2-!zH+RGe{Qr`Z_nf&ohk$ z)}B;6z%dR;cEL<|kwoY$oNYP5ZZ)J(S4IAnOnKjia@YP_Dw7E~C>7&+rmc^j0OM6U ze(e#EPqabGPoHXZgP{3EN(0yies-a+_lG1g(fIvs0#2~Xn1YeFF{uq(o_Ii|%FsiP zX?;XY?`YmO(@P-^lmRc@PUw5AdiT)L${fITCLVZ-FVTPR&w}d;)K#)fJt+}UpBvh zMu?k1aPd5D#MLW#R5{e^nGj&l8!^LHx&l*Hv}CdBiZM20D-i<_ET_OwU_K+Rt~B6+ zPEf|a>!G=pd;#dwrX2*NO`;@qqX0~X)%>lve#esL&E`*_B#!R&N8h}j39E(t_xuI_jl+!Z z%nu~+boN-!bRfrnc9Cj6e#>2&(B|d zHtxFP^R06X?oI0&gW1>&4{B+_!irNhsLGLKe3juG;wfDQErSvu+FL>$Veo?UMJQhjUisdN@vXJB&+ZGOp$QBkP z7FZ=H;R~#b!N1piwvH$=cKv;4U=YRfwewVTjt>UOBS4)S^9Db)lyjxk4D{^{>tSmA zV;Q1iZnesMDx?~3XCfQ$hcz09cc&YNvexBu3jDpLy?pO&D0|8uw|FP)_U1^bWF=^i z*VKx#MdRrBHlXqF>caEzRMreKYfiM$Rk{fmMZnSeWxPxqmHJWa z6o{j9_x10;H87ldExG$&t_dmS|IVU33$re5C7*+_Pu|DNiT#B(cC{%Y56x7cepYUI zLybfd%P%l9uaPk`+rn>^05cW>)p!NCyBd+=&tTyO%R0>dx?j8`)$ho1xnPU+WZ1yU zJ&<{b)F>=o6e=)NT_!-IZ}%ge;6I3Sw47>N5^aqi|7GKF{-!XVG02Qwc+V<;=1pk| z6P?VL1~W54sV3KnY>}ogI^0XJM*(DisTLf^l0W(3zcnw`aWF?k7Fzbab>rN$25B5wYwD^zU zNq5#u>iS3g{jl&dB$m9S#_KsLPy8)!FX|IKp!QA#_b5YKjjE9v5wje~f|pl`m1V`S zprM$V{S^T^j>oXvTm*LMdW6mNxT_)gn1r%XYFL>ep?Wthb*!*^5JAl+;z_ni+jW7B zimk&^z6=~dkgG+dSOH?2*|PU-zB4zvp*9mW*OkK#!n>B*Ny`DkJ`qR8Ep&BO-(FCA zk6z4d{~@u*3?*X3sVNP|)x-^2V!qX8NCZM0P@S8)!(>1KBbbj#^GRv9wcXGq13D$Y zrxD|e!N#VHeqLz=q&({3HfS6h0wMeq34dCSpG-hh5*JT2~-g(em&2d4-BOu|g z?b_BhR|k{u)(0k#G5VJHCv&;q5|WrUY?1|qpQNdc86x>O-)ateY$_5cik)4H%~75l z9YOl*5d-}RCwMWA)vm9*fV;6&WF{Tb-_TXJc{%4VHd6Zr>`BM++m)zCJTJ6n$p#$-${f2M{?m8PC$m_&8J5N!4*P?!36x zhN`L5HJN|6g_zC#B7mK$gJ;D&8KT_2p&mb7c;A;5gm)NnDf<2L#5(Z&yzp`}Lv~$~ z1$9ddh8DxHp=0ok0D1|-l@>x7f@a2@t(E2PSNJmbX9^1sM=Xsu)5Pm>H;mmhVb`83 z1@l#ZW{h|iJZRrzVkN9`4F)-={fSC+;Xe;U9Ml&x&Vxy+Fi}tgFv*ffCw2?{1aZTv zR3vF<9M}giq0y3SQRmd=_BZR1KJq?GQ*%uo-!lkE-#5U%oY4b2YRjgVyq;{vLs3WJ z0GHM`G@EB+L&ZvlIx$ObJyg{MJq%koC%hFq!f$YO}JQo`+lCGW32geuLf}o z%A2??5+86DRnz?bKH&460)8L~$|p1d=!k#wx)}b9-C}fe#@}!v@rs{9pZC?jG1q{M zmAqc=;Wg&1_!?^J`)K3C!$X6W83N*1h2(X@>*r2uJrcAVZi}A#Xb)gH6V@y7QsHYI zH;E?A(cOFRqg8K6d3c!(GgZHcTxUkav-;!;kJ}gEr}8- zX#dR7^|7S=6Wis{rqj`%$38vSVF^azVmdO+w{*-Hy6`kSGLB&@!7|HdHQDFQ#XV)f zxQSEKyI-9=+UMkXo^?-ViS}1gzgASoQB=o%LhuGl-`dnloCMG4Q20^hV6w{78l-Q= zbMUN)(o~r_K5z0a_~t*V6@75N8RQ!t3TrU!2oDR!M-PwOS2{C-$}7|9F-i5i7_|~8 zHmSe%5tz|Ke0-OHE{+bBc@!_hj^o@y09dJb>%HaV>Pjhg%nK)%!(|B`&@XyeDkdBx zQM8}p@O4*k{kh{CJ7HK*!pe&mtzR>^;~Rxxt6!*wXliz$yI#;q3W`lmNSEQ;LJ+je zulkn%H=RRF{@DlN9mV11a3ZIP~53IklNf|6`U4w!T&G)KRMlQy>~ z5j3lLT#IALV==vCj2PNY z&yY~pTME{9L&hLTY;PDk#(AW^(b)Z9K7u-lGzxjx?;dT^&h0LlV#YlQatWx$Q~7VU z-pW=zoI+h?fSQ;Ljm83W!&n5bpZMd~sP@-JA3PoE?0Z?hgD=vZS39e%t_F08Kne&ME^baG$}|QRHpt0gXQP;hfv0{2B(8JG6aH|4{9<4T z5+%ALB9fjWdsD`GHZP8Dx?~JtdP;Yxohb{lJ%%NJQ6Qlrk~bC)9k|BTdzSu8R`}eS z{BpG2rq#D0&s#TDo7a(%O=_~h%fWr#p~?gx0Wh8*6k=1gi;G+qqUV+}v}Om>zfwbm zC-+1GAGh2(Xrdr$SYH)AHGE%OkcP3OMX_+$e{NPGccj^_(qP{fL}R4 zmGE=GRE8}-f&0G&9Q4Ijw4!8#Z;52C&de|pLT+i6gC1;ku{V|?JTC5~U{u5bc z5`l#WhofWq`#ag?)#V4b@})bxhs(cefp-_O>;KfOt;Evk!L~r?pTi(fgL%^<_Q}1z z;!{KEH;*@o7GtizXTT~xg;#pfed)38A7PZU`^&HM{&7NC&A=kpSmM$TIdNpyYR*SgxKilBEe(*43pim- zA5`sy013Eb!qb=QvAo~lrVcTeeN=k$(L9{D6{_NgJG@8M^37IE@JyV?N}ECWHKs{CxnFn!FCt<3nYNrUXk)E3t@%ih_RnXP{h^woh1)0jl_+zj#L@h*-MInGMqvviYN64bdcR(Xi6hFHG|Fm}@DcyCnb2aSzG17k=6=r~qAg z-w0O1;uP669i4IuhB^{ge+p&$Zk*i5#PqFrNjqI4GOj-z!|L65%z2S!yFXl!@$~kv znxZPt(H__uZ14VQQrdZ-#>O+r>Aw8y%yvGoxLD78O-EtF=;KZ8<4JvdV!Ra;RXmxl zB#9Hoz_1R+1%|KsMhul|f)99%>UT$W&PTs#p&O5(6!z($C)K#9@J8`8Ysxb*|2->^ z;8xydk(vHfWY3<_-Oy&upm8Uk=;vn}Dg0D={4`%JndRpxc0Mb{hfOPAap2@)sDh=Z zF#OUv@W)+;^QMiv-P96q?+P&H^Hyr5Nm_B$+;rd*O-Q`l-N%pfa`5)EE?L!^0Dpb9 zOeMQ6uIy!bkl+r7RljmfKghXvr;1_}Xz>Qih~WqIA1Y%h$@i)$1ZZ-3qItD*{K{-7 z4}kem5u*F=M*Pi@9B`!uc0%PTEnzZB0c{M0sAJXl6vXuqt8n5xULb^&pg5&PeG+KP z>R^(;Wu377nM_igigkn-Svv4)kniT!o9QtkG4y^&uIT=g$o`b+Lz#q&Ke6V~>#fu* zXk~0b1rx_FerE<0vS=~KcT0>^4xc0kSV%T3&r|sKxU5EXJKbK9O71K9m;lilVjE-_ zwn|nQnZXQ1PerUWnqTlko&Xy?z&U10Uw^9IvYWk=t`vqam##6G5a1UUI1oLgdCTqy-! zlfE6NYq>JIjP*YHZNEA!42=Fr%_++`1j%#N1TVmr1bl@KwE{#}EIA3OBD8G5}RlI-7a1RpU)v>rL(9L0##+RhOa) z=6uQ+Uh4r$`J$ke>IO%I#s8d$*WX15p?sXW1oi)j5|Y$o{dDGi5i_2P0?eDf2G`0I zJk2iEFDBQ}Fu)REp93k1mQe9>sd`gZ$Q?UqtD@Us`;L*MV-5{Y+7jU@*M3Na(}e zVTc3l#GNJD0e&KVbAB;rt#LGF({_!w{4d4#93VapQkGX&**~{O+=RTVd9@gy!ME@} zufeRlBjd3B`dy8oR3NPoj+?S=STUno-^|<{>8QvLvz0fvW{ zf}kOkpluJgxc$%~qXeB(<~Q7dMX_5YcLQm-xE{{6;7iP7~de5H9|*^Hc2>mVf|yT@lTJaHjx@r0;F8lX?2$8f;Vy4%m8&4({vXTG5RXa z7c|QkZfb8O%2*#ML;0U&Tt9z=V<}QXJwbrAInppUhDE<1pV7u| zRb6`RM7mWFsS{d5AbPa-ts;y6E#psRr4k%M_Ei3Mly!HP&=CxXFm)x)#|&(I{`(^y zsm=CL2Vm91)dGmse(yjjfX4^&WC)}Pi3f5!fqrYRm==2hSiS+m_&f7~x2E=dRyevW z*NcEqLC|kjjPM0^E17bbt*eO*kEv3;NjH&NqEQpnuE~YYPyLSrOSfEzdoz#HUfOWp zps8i-d8WQ}OCBeVRpl8Cub~W{rZb*u<#<6TFeRzKd9B_AWTtaj4QY30m#fP8NES2a z5h!B2DiKsxRP+ry`j(rC#&z})DEk?y0VAu2?FG)$S$MUOhfFQ39}FGyP)6({;#r z#AO_D=thM))JBlRmqCVK8FQdz7>XUmNfF}PzVFgv^aW`6tcBs4{Wwz0*Je^K!9;<^ ziZZ+`q?9Ctr>cq&z_Oi(lwt8Rv!8ejwO=y7!_&^4RsP?(mH|93@&ev9LJgut`S%zG zV$k9-P{E$gk6*ibKhJ0aT@>LcG)Hn8E?+=ZO7bi!tr6s0tt<)CCz}4~P$xY!!laiD z_;lw*Oq#irvS_8rRSK8>RtAPex?)=OF+84QJT`@ibkUs;{G`dGYkv~U%K=9Xpk`6Z z+C26s*mlm08GVUP(}iu?PzaH&2^jNfc5`H#5A<^s*yfXySqYGC1DS2|p*mVxyqqh7 zfWDN}%N+YdN3f zjKP<*z#@P7s3PQ!{^9!2{b>2&j`04b?cwdi{e|q&VMs_R_(vOJg?}OB;l`xt;U4Gy zyu!V9KOW#gxW8ZZ{U2yMp3Rc&1wJS2^g;^t>%;8U%C=IYwEvT?Vb6Zl_U z%Ma$U;>xKglspZ9?McT1BV_NYn&xWnO;(>Paa)XJ@C_TEbd?6^_5B}k|8F9$=%vVW z@PR8h;l>1GJ43Gj&h_nCeEo2!Q~;zwHVE?P^PBkn(3V&eh5!T1gz~w{dOf*%a@9lr zm;S!oQ~Gbus3^n1{bZO4J+T#52c6t$;t$NU4bo8qyqa?2=O$1U2Km*MJJpJXw+`o6 zx8H0p#|bZm2rp+f|6&lph4J-UB7bPnu$bcp5rKn<817!ab&=!?CGnj!uKVaCaBltK zw=8CYInLE7d)R;VcLFp|wy2L|sQ=>qdydE6<0ujYV4Vpb%{Ur9GH@?6x}()Yu*5$I z&E8gD&2=c4y$U` z6`SM*#XFP}vh^DBw=T0hdynlW2~qEP++<~CsLE(nUtx}UrsbE9mTCBYlM|eYoSL&W zeR)`|eKb#3s+FV%S8Qkwf2iIN*aR|Q^IeGr{-r6B#6hEhJo7+0EA6*_^32RG40stC z(i47^(Fw+61jo=wz^pyfPxmX?9;uS^x04N8k9;7mvosBl8(2XCAw?c`_73|CoGZq< z+NGndad&SDQ^MF~!}w(ZrUHBE7Cn{zW%CPk=}+xYGz%gO*zAj#N3d$MW`c3H(f%l&$=@Ka3#uVd2N+Mbp_GyHR zBOg~MSDUnlfRp`OEm}Su{-pQ2fli#L;x+J9WFmeh2Bc0Y0S{hI>?wu(hYxP>pV`4h zsO-rTKd08YdAGK47ZX?TS(3(7S%I9KEBG$?`_u6Phgt=tW<0MF&WD_~LtISMsP@Y| z8bQ4;ih{z{B80@%9i<g%}@)OxV1HbjZL4M6z#iceIn*u zI=JGtOY58{%Ehi@ErbEpNJwZ1_?+zePlB4#A3SLM;Ktx?6J}t~LxRo85F7>y|5RE# zh6URJi5D&@$lbF4t;yX@zAkn z(79@nQ+dHBmMapz(REZ{xB7Bo<)`q<;LlErv}rvO3r~ixdjw_gXq8PdA{Uvj=>vrT z3D~xG;$2D9bGmjjvT)>JS#66NgRdShT2Yu1|IE#;G(H= z=fcw&$8m!x95XuQASt%6S|h7Cfn7u{!5=%kemjtk6H$&z#Ov_aB~W0Ek_H8AM>G>& z)nr}2GE(CSf0=X3_gIC0HW_nu^beH)U4j6Re9dg!cGL%q5lPkw3DbPnrcWV%moxp3_(EzDoMtm*MPC&#h985%OKm)et#=S9FEun-UWt z%ST*qzA^Qs`7{B!yK^Ei+?jBpbhnhJrzO};Eg1tsGGg57UQ7>Lk6QHl*A6Eq&_;$) z;(aaU&(S}Tm~m=0=tUU_%+z4jr+pp0L}rgCGj3l1fWheulH2m1dEI%vtsn*)g%K=vvYJ!vozGH#fn zygkXe9T*XxX|}JcCy~iF3*h~h#}EvJ%t78A;S<2Of?VHm@f?@@z5fNq{TN;pF&t5b zHrAGtDTk#bYpd(RTGIgLBbFl>D#lC-Hr1EoDt7>!@eLK9a52-6GuhaPDYy*w43|E{ z1>Z)r_-yr^jLRi|AkL`|rkgw`$70-N*EVy9p#LhJ8J7xa0?LOrB1)x zsV{3SPb~qGiZ*|O&o+Ual>yowOb_; zDR}{K121Z5t3O`n%vY%1kr>1&7>i>&UQsJjN&R`&N(HeY2CMo$1^3_Pn0TJmOCHY` zGISk29MLZM??V2e4}mA!0hhNUjH6Wj%Q9Wd56AYm>+}CSh%DBCX|em&@&hGMsVKic ztUBKwjkM8NZak(}Cb)QtxU$@d`uvcMT~^U{PX}~q)>8KiLSjMN=Clk_0q^z<*hi4t z{WL>#`QYcTN9_KVDq!DC0?AMW@C_mmvl%@cLly_#xR2RycSS5>dLY1)dt(fG(qF;E zRhD$!0qQ=j0Vx{5%jPi>zHD+WZEU9U(8~iZ%fB?(AMt-OY}Z==F&#tHS*iF_MiIbl zNEwl0Qss5})bs9>=E}_C$V#fkcXUmBOXR<<>EO-IMdQWns|q5fk-I?34X;wlLBPTs zwjqNVzOanPR8eaW2h2a4=Rq4`uHfj;m`otYMXak?{W1-`1UBd_GyZs4C<#iq6vm6! zPw#ZUPSZaW+(Z8cG+P%NE#jsO7lUfH#Hr?DxZ6d70nd$-M}Jm_hXGLvlFPKWNK?Ko zOrlJ;wTX4AgBbOlwH-~s1?HX<1L7;WS&p2^&lH%viBX)xJGQmp<3 zpJmiXuV-f)ncw4_e?ou(($c_$sGCIbqB!;tFVY13MEwOCkC_}yqifEf>lPaS{23%G z%8)95TBqGjsLo?w`1hFWI>*+*7g7aE#jRa#NB*flRQxolBC*3hhLNoLk?ba6($C?7 zYaeQRya!|wTVtjMO3QRUc)_j(o3dx?*sKWAD!VpyK%_Mpvp+Td?oPjIQ3;S;eeLVN zReid3F_4D-)u)9+q7t?PW1g)S-hC7>F0u7AZ#mCFw9HJOA;^u!dNsWuVN`SaIg`MR z*kz~`1`{nFS`o@254_xwpI!RM&yoT)wNPCuKlN8DQ4Wfzr~O^zxhq$-rC1GF3LNUq zG-DjRh0T~!d*(#H_=xPD;nHJN{*Y- zemhG2Rql@cLd2O~s8dixCR)!_k&TIo<^%uAM%AD)sA+yU34{45ouchIw8WWR%l0T| z$qtpnNq0k#TKwMc(gBma3tQFq@O=h`YF*c8wzhy{`SK*lrsDhY7!gdOlKO2PZ{U(s zv$5sYWs0yxzycC>zvT3_+sGD=_E zyKsGk>GCV`fBWy#SIe=F%!8;7&0gcX-yYbuy!y=>csV9{c~*0A{Nd?+bX)LwRXy%W zLt98(TgWL;pBO{NQ2DsZ!IzKkuSVK_-R(ZcAfuF`4*XZ3)^8ZU_ckmGfRK3o9{_8~ zc$q8ENb4=eLCA)7X45(!M#B1^N}o$%JK`nzc}5_?ac>GlwmllC)BrH4p&1}m73gXM zip0$sdhBomOnW;LO@*~YkHQFL8;Gv@P*P{z6rjxN^RWW6VZ)MWQA2=8=q)Dgv1s9ff1RCVw=&zfaw2LZBK9X8+( zxKS%wR9+7|d0uTnNxTqsHb5V(r`c{XhvGI56GB8ilf-1Ku`H$`2?3g@Ap)0o5(Qn9 z=P+?E8F6p9Kvcm#?vk8FV!`yU)fnF)n zv^MSgFZK7vdeUl?ZHqkYf}7+3_hgB1HBbirjM3bSWb*bjBnU8Yqr?^AFr+uF+c5KCVzf01Uh>}O9LCn>fP)ad~RJ%$g_pQgx~ z=;_Ks1D@>J%`-Re({Wn81WT4%u;QfbAB;=rD6Y0v+-@<;qp~HOgoYWJWtP1)zax(j+6w7e}wIC*g~gF zKarY(#!tWNr&(D&JFdiHRR;{#u2~g(AgQa_qhkASM#*or+pu(N2~@u}^yvP~nUf!!1y4 zz;ZSh+qt^e#n6_}upms(ij?#!AM2xm76%8(W+}%6Mf9L;H?3fGz+jrVwgO-buqrI# zVEaqZ>xxSr2?p%VwbHzRdu}plcV8314FHjM#rJ!Pkei!70MF32k`WU4HYD)o zpVfE878+@GRwBxft`pMkm?%s|MaRlA+2tisc3 z4HDUgI8fU#*DG9!bc#d_$e==}MChKU2#!2W(#s{@v7W7f^Q`!$eb>$0^CQ5#D94M`CNs9$;KhJEu5MQ`mQ4>4eHSp+j zcO>38`E|JR+5WyAZgZ0t4%8?<*^A&PWuC=2Uw3xsEQVrzE6(_T;8`Nnttn-G5~cIQ zNTpTz;yeK?01e8WIu<-KoC0kihAjMPg#K8-&!_CQzHj3~T>|;r4&CxohnaQ6u`Q6q zQpdEN@9)58hAETDES;KxYMub(53^Db=T?|gGJ7d-C6cU9km>qp?&ZMnGA{QN?Cu~CJ3Jn&;c+pjm!Dd{P z16A2Lz>;CJ$qU|no6LST=tpp4i^d+@@_yGirDyX3QjAExg2AbeqK958ik2}%F(@*| z>j}`5Bc)7jd5y2gT}|hzm&i_?11Vn z&(?y$wwQ?xE5Q@AdTJHDm|Y%i&RzP-FP8d*d+rYtibUk`6iOxEc&U;=B}RV~@i-Oe zqr?j=#bDXfKSR&lNTv5irfmNR(D9IyICO;~cr$W>`E=47>q8#Q{1~hgX$#1O(xOFc z%b-9H{7dVt+o%OFxAytxe>JL%#LP#XJ(mAtCOVKsP~8_`M%MI+8I%2EBrYc9RHKqb z-p{8n@<$1pqnf9SUqV-Nk@CbuPuO7DJ)t1h z*Ag>Sb~2X}ljo-*z&(mm6_4pw_WTcI<)E#VQ-JqHh6 z{#|^}ZqD8qlcIruUh~9{`aqTWf!AtDDaIe2UA~tTzddh#RzF)N>~APLJ7zbTe(um< zQz!eitFO4AX=w_r(tN&SqcW(!TWQHYlaLNt3rFHER^n81qD+=QLL*6(OA#ZTA!w5BowIG>)N(02BXeIV1w0vK|Lt zzHR@1Gj*{XQa)Ru2fEq;>QseAP^2s{>;>L#QwAROy*fTfX*llo)?A;NjWv|jDRIk64-Xs){=ItP z2Bg4JwuoY)s8iyzFkqV#n;EdC7o8LF-GNDK0-v%o&?DB&%7yZ(rIgMRb?DoHa`O+Kr$6zAR8bAeZ3vuc=%h^PfzjS z*UEZ)`t=wo+z?-%9rW#7pe|+_1mnT+GKD0>ajE`+Uq7T$mQup!0CJ(q>ycdF$?xe( zpKXK=oUb(|0$7y)jr*V_tG4QW^^dxe4)4stNi=FkUoMnG2cNYY7`_#f#Mf*BhkWi( zab%El1HT=|2)q(+6v6_=JH%(AZ&(EN9I&95;MSq(@AJdEJ5i)?i6R(1lVS~0gd4UF z#)f(No@c^`)2!)X<#ydViDZDKKu4!%bQAI zWd#5}MuBLV-yAuEz~RusPR_@!Lr~bHSmCXWFIi>mdx*{rHK$(JTS3T>byIbYJb|t7 z6GBTM)twEfVd!W4G|rZp#V{78pfE+^RB|jL$e@Icm{Rp=^bzJrDGQG#0Z zQ52R~7n!L{>YpP|)m|)$|CpO0YPviyO_vO= zE)oDQAmnlo;NN#{_0?`H2tLDHT8mfpId9*m?Ej};op4oTpJ)^d_j16QY=}67AKnG8!tu=P`yQswsv#RuN?#+xE2lGqV zON-*BzpA#VEB~Ce1!ep+LELdE!`)Zx_v(r|+?F2RXiG2iLQO^6SOVMa-H!h^+fdTi zBhU3jU*>wQ*!ewMooq1gs9?C^HTU0VMhIyoM$i{i0s5&R#?{Y=33d^+yO+8ip0!6TpVT**^#yq^*K`w?NChCNX)G zI%P6UV0m~7 z=om|2ydbZOUBlK`x2uyKJ3qlMiR zwWPv-s1h#uV1C~t2#pZOiamu2f^bu3#@+oQBY$DwvE2$PFJMGwV!`er=~OF{B4k}# z0I#=?n1BMhB-DjcwNS)|=#CGdr%2iA6Or#Z`9*By{Lds`^WJza*3K2w(fGS4kZyyx zfh5J(aeUm9gMY<=H-CIEm>n_{MSvL|=0?=Tz+fHBKrV+@;(XMhzi0yP2Hb@HQ1OJQ zK^G0u-m)NiqAhaiFip4&_H}=aaSh?lc{5RlQUDo((QfS0V0}u!Z8m(-ubQ0HQk51| z#JwZQd-ltw+Tn-Gu6%)n$=|9Qz%0iU!>>q`$K?5->>mFkN31d9PPYIxl11lm5*@e% z;y8}RO)A^6Q^B{zhmNg9s<(w%IfzU-P;insK(U}3I!AuFo2FB6|5}xGMS!05va)CJ z$Y$5&*tjD#I<~Fh484q`$z6?KxOsZ{@oJQ25BswF;(Yd3QI3< z9|newPM)Zi&=Ctxpy1;rik)3Q^vkU8`oYy0s-l_r>qkC*~LsHTueEo96%!w(>XMp##_ z^HwTQ{gbCHt;Ys;Wp@cb>%h?fUM4GKOdJw{fP6a_l*bp8Lg4Zlg%&b1jU}v7D9*5w zt~-MBJQ;Ll7+wN4@^Dno({`$4%ah|ue@I%Z)PfxNI6T}zuRHle)a1zjiT0I$MElVx zPGXiMs`C~c&8-5Z_`4MS2IsuXFvVoi%Cd4CXe*AYvOxLcb~S=nKc|hk{W3c8n#NkP zm!={o|2qaWhCq_3VUa`~l4hyUHM(;0v#m>&vE%C?-&3}-pXn7oAf|H#LvgUDrVvVt z`i`R*MgYfCQ-Lvx#jRn0RXvY6V$^&V#s!YlumsmWlP64TI$eG2m7Bvh0??>Zl@ZIk zZt=agZKr?7L*x5F6Y& zO857KZ~K?quJG@V_dn#L18)ohZ|E0gzu#5k!tbxo?JrLsVZlOfFQr=oe!Jcte0p{? z@c8L^kAX$|ea69PBz3II-R%y@%Q67Od{~&ok@;O3H<2%fthofD-pynJIyZ6BI?};p({9B;aPSq$)UXu#eNFt@Xha{7 zId9KNe8N2tws1US(s~Wvj~qhdKghUL zTacnmnLw{MgLL3CB&&esSPm}yrSv$h;$e2^Edlq`TUWmP2AuKbQCCCSz?R6A!3yN| zIJe>VGcKybKpOm4-_ci+=G_bXPc1hWyo<74_a@x=Q}-wkGuK?WJ)s(A(i0~Nal|~Z zq5rOq`F4T8IhqNC>xmDg`m;Ltv;AX97j0=Lg+B1k@^6yz4+a0{LXcDHJlgCchhX3lQs26RT3=M{m6v|BSi+UTbN+t)RXs3!4s$ z9`f_Wq%CLeys~}?*Z>zOaCzno)-rc&w-{_;0Q%MRBfGy{AykA-q$5iDYt-nEP=upC zz@x4GoUDU2m7x5+2?5X)eOc`E>O)F0OHfx{=(Zu@lt1AwB;@WTLo+pO=e)*7gK0N8 zUoOAI1I-^{U0BzB?}kUA14w;{IH>V|Y0fv(pZ(fc^fPx>)_rhma$zm^dsXQBSe%3r zljH%xW4OxIt6-~ssi^Mn|L^BDt2!1Xx_FeV%<>7`c{zwry8+Mm1uemtRb#eM4_j#R zMP=`x#}@#JeO$?2T8XU$@C5}@bjqJt3B+GepC|*kMyGI$y0HEFG52ygrSkr0ky6u z0EQ}tLo_swYp{6{KeQ%+Ef}7C6Si7QZbT1zC|7g>GubAtjh=|oU}!g2TAW_($YYM- zD%&#}Med306w|Nmx+Tn_7H=DvS-u&|IeiPYQBsDnbh5sv371hBQg)i(Oh z(Ag=Myh)TT90L7aw{Cpy=DMydo%|ix$EOfAGn$kz-nh#H`s=yjD1iq63^|EBKGw}J zuHfS3H6BPO0_-&NfYbW?hha(HoM%Sm5^rCWN{nMu{T$p>h5?D|gn0e+6Y(jjRSLkC z0i%|-(8^DW1oUdW(uf=@aAPe*KL z$#!QwoRHq1{LVW1Z6VuXV3EXZrKbd7S|2o?KHUGbphgA8$%Y)W2VT!cU2c&NylpvM zIy{;>Ty9s0myP_*Vh=0-jB4ldpXV{m2p^RU>z7%KWIa?+osF;b0x`Xo#aO%FM;rrL zc{3=B1)R3V3L{bhcyzo)RMzq+D1SD%2V*<(HmV7ijBF}{f<)8tQ}(;oEWg_~D(78h z0I(2IXJL&s)~#gKF?uHFZb5gES_Bz9doOg3Cq zSh{Z@9Rs9#?v3c(!$1s`!#CLM2SKSPFd$0QTOIeCZbSlaaza3G4BiPrGZl1Jo$%Xy zcBF7vKjZvxQQ*SeT2$k11hMB;1hMeVB>jka2mOd?$5r7{-z@ubm#bz=>@SyS4{i`3 z=avODK{Zy=M^p6;a)0YV{XmG7K406vN@#U8UTWBMY8x7l{}g%f_YwcA``5y50oao! zS@OR(*&dIC?HFAEQ4m z4m3{0-$X*Yy-E5bYd;hm^h72?vQ*0{P^A7i}-PLLO&uF6*=qP6_$JwpKQ zT^w2D!i1H`0q{Rc!QZnYFRhyf&pYSQ#`|PqE$E^QnjH%55rpaWlww9Zb>UGsX#Gt5 zYSpch(y;SgxlOGdXg|d8|D?0nisj-hFoD-!;uRiNYKdCo+%(UXhtfF{=LyJzyMiHk zaszyOwOS4a<@5AM1L@Mv!g_M?Y7S15PW8x?(R~u(j9+!-;v}!UiEP@{XcBT>f;xFL zdLI*WQ4{x53(fSP-<~I08r8&{Hz@`^biE7^sXcg^GTyu|r5wl%SS|wIi@?v@2<*&l zE*DZ7KLCc6P^0!t{^uQW;+1xCl=jzy|K_zigmTJGDJ(os{fm~uc9_hU?K4uiaWUf= z_e4U^OGw(7R!VwVOH6^z**8`Icr|93GHi^@fkUMEp5uSIC@#ScqvN8}66U6+B=gt{ z(2Tuk-ecXX99w?HugG-juMQXHYTwD}12FNNbfpx!6Bib^Nwk*))aW`$@oQW^fVrmi7(1^1iFEFoi zl7Du=1kRQ6E{9#vCuidQ|0${Ml9hkN2fjLS<N-BswXwPy+n=C@$S2nu$xv5K zJHboy@TB(gqV^*TBxv?mzfnYg!$LRttG~fAyd4T<<R^Bnj6xG4?~k?dSk32+C98%I|Njkr?TmE?=DlS<bh zq_-tR{O-cFxBP5--y=dAT};Ez9ywVzM!7&5Z)5K0&fl>?b9KNYSbL; zMlv#|JQl7Gr(QagGPklWe{N%?S@AnSd!zG4wraQxGsurO)H8N{U$0o$7vX>7K7!LhN22=uLp8PEx#&-c64#O3_h!DZ zCjlbQ1MfC)K5(=^t6iLHMV${Z0gVRTX%CoLmw!IMJ4h^(yE{3d)l)PRVUPXhArGbD zd=-}qZf4PiS!z+BPkep1xz9SS#B9eTH4D~Qe)6F9_0S9NS6)LOP+?CaB1Z>AZG0e3 z{+)-J&wikM{_xHf62e<$alJI8E!Gh3-&Vd9%Vk)4Y}K_qpB|qT$h__)Yx0qdI?j=2 z&N#t01nnTom~+@(Iozlp+%zq$QWecrvY9H+rc9L@TW3x10b&xkwwm9& zEPG>kD)VW}sbj;hpg-k512Z?(Uy-2%uR*-&if)fQYJ%fJUf&8Gj(ywpHFU4_w``ST zB-2QiGxurBhR*26Kd{g5)l*v=-eW$$emT){eBCl2^78P|N3_Z>`WBAphm$XUr_Hxe z)txQUTc-5fT%a=XK&I%kf&Q<%&raJQm~iI@MUdaNygJE)Qm9QK!dJU11fWK{MQ%;; zyNr96t%n}4WB2Os%#{eEJe;8O7#}FnA5Bow4Ic}MVSca0K(-8vyzDp7?RKil*-!mI z3A?pg_W{CrAK)XzJ&JB21}w3iJ&eqlfOZ0DVx-wcmD%;URAb2c5&+nW+ESyBs0T%J zx7ib-3TbI*x#GCMHI>o=N;y+NYNL-+H&SnZ9+ENcKBHkcc5AP`A};OP47grOZKX+q zoMlnVl3z|7CN6^zSK@q4Kd)7io)7E6@KlBSL@>&7z+qDJd&Stc5_5w5XLJ&?=zTiv zF|6gYW{?X@AqA0wT`xAcX<=K_WtCI*FU9j|{B?Mm_{r_&*&+LCAgX)IQ}tbXk6Ke@ zUTNtm`<@hhr55rse*l*lCL-X-pZ)f-k@NHaEV|Qg7Ryz6<;@pXEOZt;`@%{)UjACN z$N*$Udkf|5#~PKGx`%^dm6EbH;`(;rnSwSCY$=*+<12&i{mYRg z{CjsMw>*S+d2`ZNsSvdhLW1iD-&yZ6t`TgIOw4N%qn%m2SjmB5d*V{YD_$#S-RykN zMUGGs>{Sq@0?q{bnOVqBpI1djyWflVj`5DZ=k5LwUI0#+cS~tKEBgO93*FT;+$~N3 zwlDC6*VBXtr%Tkm9PBO;mI2GXub?)rtDKU^5JayY%<#2{Fr3p+t~^R|(bBzR!d5;l zeOVD%6oAO^d<@Kz042#Xyc#Ust5RK%cqXm+P}+!#ORfVFjP5N+)aw8Qqr8DK@U50O z(4yCgGwH_JoPKAS-qcbzNCe4qN~G>*k(RT@UX@=+5xT4j<;ir`R=zX3%28#<&F;L} zdw|a)wlmNcAQ&5mEx0Oj+PjBCfW8glsccSn!! z?e<3;#y6*8&mGCBto7i2R{2OV`62rUe`v0DvU|N9gIEKpJBWH3%h??C9_ z16C-`Ld@QW{~OooX(%Xkr-r`vfy>!{=cv(F|7xuL`0Q(@^2~bTcmUKG%T`~%dV8!` z6ILICOk3xndbWE2I=dcAM^z`dS;ph*OxoFqTR3{(Fgm}p&}=YkDnzIQIt733pW{k} z--Ej?8=%ImKj|27GU+IapOhyd`p?%skGPWczt40Hlcv4Kr&lZ?^sT=^bC*$c{5A50 zOq65z3F2$`=li)2?5)(V{tfz7=MN!BCA|~E`aR%q^A(xN;k2ap=xX~-v)8&SD|#~u zZg}?{u8&IM)*5K+9(+|CT{)rlFjkN6uQn-++>tjmRzYkJ)^q`dS_#R|7cD=<`Lb^7 zwS@7)&Nae=D+5bB)^1EAhsRL%&vbHg^pbM)$`n%380J5YB=15vUxhQxNJ0nGZ)!Ft z_vlk$kCaG{=4c?drlD>!6!VwSk8YSG)jSn1ShUxyX~(IN&sUe}l$Xu!hOtWfweM?C z++WFKMx^{yGO%xd)fV`wg0r+1@C6FP8awf1C^Js9pV&#I993prg1m*R)!Q-VD$^h` zK(=w!c)BTV@Q-vSY;~ z`B#9I?lUX;cG~8TyxyqEYFTZ{BkgM_*M9~>i&X;~Ok&pBf8*w_#hhc*1-O|@1ebs& zUSNse=$?Ynz3?0Grze!z)Hd_x5r)isj?>ONTJi4fYs2C$FEe@qYYT-?MVJLjvjIx- z`)<`cp@v(biF0E<9yNL5x9|_|$otToNOG|5{T$p1+maKt3N;gnoMwoz)YRtF&0#do ze`opJfB@Eax|_6!+OzN^B?H#bU{;#{QMo>tY39GdnMsh_VEr6g`Sx#-YQn0Vot2+d zlIq#&8fEKct8U*d*#&xipxT$z@%qBsJJxeEyQB+E2H!dTSavg3%uLJCUfZZ}O@m2^ zhuR*%Yyc??0LQqj_kB&w%kHa`iEx+NGI0l_+(EUHEs5sbdT4{WmC;cYP5B{Bdhel< z`H#?E8%FIcra1$Kw^o$zo{`?vNr=C+RylGo>#qHQp|=Xg{SrMWLZQb;s>M?;#O7$M zp~TIdm1#OGOrgVnG_OdltSD>(ypeYgSlxUEiBARyiTELjKc`gg+vBOjliXJgXSJMF z7aA{s6kW_fXSyX}W#N%~*|5Krx=&8o7534pI^D{drlY1OrYE(#1vq*}Hugqp;*0j% z_}7&)J5C#}`v)(?U*!7@-(%gkUYBd&V#kI+STXKDKpIKQ7rx%eOe{@7?Ggqm%r~XtsRb6R6l;e8v*}ICXJ^6l33V`2I$DdUSp^9UBMaYq!HI>#? z1P!Fwn%2E`EsFaxr{fT9;DfvZ>sE_&NQ93J_E$gNf%CJ7o^c0Ae3jUNYJn2Dd6rMU9rgu3dl z2xDuro`9Pvt}CUa$+cWqKN2ob8asE#SF$9tF7Plq_wBccrSlPhken^XIfkF#Z8<6i zIBd@x;X!M;Dnm{*&gGNAC4!?|EFn@NocZGPPE+D`y{@1J5r{>z`FTgR&Dq|qV3xY_-NjJvIfuRx*JCp zWy|LZJ};x=79Q%MIREhDw0_1dKA^j^o0aC=N;2`(fj*tKC+B9IvMinFTf~Ekl)wP8 zx=A3C=vu!V)yj4%9U5*StKiCH+k-HoMhiqS7&%w0FEgM=OG`D@2bC56@OTda`Ru&{7%Z<=R}M3}kJbK(97^ z<^lUd|B;fBe(#v?&RGOZzL9M6s8aD~t+u&I!=tZbU72~#0nkL;t2sy6w?d#s??hsrU zdhdEYCL%bUBxryUpcufFz*+)--G)+tj=UiY0RHxDJ@T>Tf$^3}W$yxBb&-?Mg?@46 zvz)fCoa(R8$S+*1;34I9rS?dObL(S27O z+V9v~mZNp8J3R$LhtL0$^dW#2`r2@f>Y!G#GGk~AGj7(+*Kn)k5)V+$0|l74n8xUk zey{hjG7}46b{$lr*4HFGB)Ek}dBw$1w$I{ZoCKNp40__8aKm4P(3r(A4>~<1yIig` z`W-R-slO~!epCX*Ex{uo#xpp^4Z1XOF&=ISZa_cO!o~2=P)7cc5zT%j=UX@Zqo7bD zNf}UiK43*YU}f#%#q4_Ava#;H5@~&v3W-?TxEk>uhb*bQOH!G|xdSfQdd-PiH92w1 z5~%#lG{YfNguAFd(HI zAM#6&`g&g0-8rJ3G0yGl9}1qkyAc7L@L`wRj%hEe1q-IEgdqps-|U`fUVJvLSN@qMyFDNL;f)!{|4UH6e*#te^9iALy5%H>`_nBVvAX4- zWjf!2jJ58%$2dRVGdQ|5E`{R~yP{n+NsYqLplLy#3^^b|yc9wS<4)n3e_iH@Sf8%- zWHw@QDYK}$Nh^ISKn8xXG-QU73kh@h$-B{foqTo@dUi@P)?M;hJ!#gb;|{YD38C)M z?4(EE0s@^B7h{<10hzRK^)(bj+1YD1*1FU>j$ztJ!i}_((YL%t4934m^JlqS7wdUu z7cct;5gf@@*?f-px0xIGhT-6*Yfo5wFrv9##g-_ix$-wcSYHI|2jj_7!VYeJsqrFC zL}pz(Xo*dH@3c*Q#RM6Z8}XJ2z2Z$mtSm>VlWWojh|m?146giM=~ZgLR4-q!TT8UZ zZYtmG?LPY=_29&AG%tc(rdcIsr~G3<oW4Z zSFgl0*Rs6&q~ch|zJ!GT3E@PNV6|H#aEOKjcaDQ%-vd71z+U0nc&6;Qdca%_qFUgI z%zyot+l%|iDH8;9z7eLlU~DGjmGZQS=^WW^xwDKY?p@0o_ursE8};2_nQkUW#S1{r zYRXl@o+WO%LZq1(n@MSTL;Sou+7MU;(6KhsqI{?_CEiP;`q)knX#f+(FN!GahF9Sc zc*}Sa3Scx^mv14thFDWg2?H&aI49Aph7aA(&l?15l`Z4rtfo_>A#ABrUd7}6-mlA} z>15rK<14cXQ4s#R2$$XZp&%UaZ?pSuV;rD zmKMqy4Q!PbS{Z4Vwb_s$XLOquyNVW#A-6!3CX<;Y(_@T@<*L4wi;4BxkSvA%x;wzI z!bFLxYoeGXD<1G&h@T(n+1r%lBuc(0m-%JZkl{R0S;4VmA6b**E<1O1E#y|F)!_~_ zI8-(-{gSHND>Ru%p=kQ+QhCf-8 zHe#c+h(Ly2@3u8Zr{?q&`(a$|#z>L?N-ebt11^N6nfE?T9|2s>Z=_(-USirV{IRHyn{S5DI=+uTUD z6@-yR$!%C~)5+0eb#i&mGg#ER~kTr_6Q>&-=l7Oi$10|~+F z(cm3&9k-^|`j+}2UZ39qn)m;XWh;iud?5RWuV&(aIa<9(>qW2>h|H z5HiBq@@Gal=%Sh>@JHU=jZJyy{(%RPbPvuy+&kSE__nrTvNAA`@7SfcxB0KU(Wyt$ z*{DUad~-TeUHQ|K6Mj)`^S!%LV)dbCet(gPT8d28w|EfncPChnn5UX_G)kjCT{8*C3AIg%a_~gku4vuQ`{*@{EfXei83?W(1nrJKE)n5YTgj&6 z{+)5trP{hAwB-@0Ff{1O`DAoBO=zd{ShRafCcCqqAY>?X4mQt>743TLjN@;GJn6b4 zn_-KcFTfi0f5F`NkJsK7EAhrfNj{ z|5bIHEs>vf>RfI;zXnK(qQ)yfVF72;BLCaRZPa~So3!}0`s(Fh>>CF^TXj8nYvXhi zcCf^=W_2>yAs?yoHR=Q*uJR+ABP#d4=KE-`17O3HS8Y>;oC#T1aYV1n4Mvlps)YxC zsn)o@-?XW_^W9x^`Hu?oe`;}Oi_iN<#ZrsH4$ab2|1b>G&=o|TLI=sek#$6JEj?c} zvsFtx8cik);@3o~dNOkHGUo9j_A!EHTBr|bJ`)IoD?-0T|3u_=8<|Nx!t*Wco^}j> zaVKNC6cbTu2kA{57jo&XA(AhPnot*QvZA=m z4t9L)-i!&3SV~QJYCVFlfuS;uEA*(awncY1qCkf%#tbx1Qf_FluYY?+c6pnmEeB=i1Xp57?am+dr?+P>RN%OFg~ zVO;{(l(SIPKVwaukz}jvVyx+TR@U=8p!2CWF<#ItUdXynyCoI_^88q=uG2;E&#g~I zm(bEFSy%x;bjxIDOG7C5LwF$rOv4Ndz4!7rB4pUSmdWk8^LR z^+F$;Te8Cr9aY(O6~T-pRR|;u3*x~Ott_OtjU#wzqfw&Wn}QIw&^y^jcUXUdVU@WK z{MP_^_u^4!dvysG#&jygq0qxHk#!!xWeqXcP0!Iu&&LbdbI0?di|zwo{Pv-=K?4YI z1Spl!?zF0|%rbyQamD@@LUP@`yj*OAy{4P}rFGQ=7FSz~Evv<5w-A6#4jE&aTBe^W zn89B>Y)D81-f}S5c&-{XKzsG=Mlt}33F##dc8EWe!V0ZR^>+TfpJcj=kM zpPIwfj~`}$vBJTgaLCRyqWT$k8T|}=;(RaVs z&M#L9|8ME`|HSI%wKT!}-rraLaDBUfAh+^+_2>U?55xFxtHW3RV(HW(SwOub|5xw+ z9Q^rq@aFDHCr8IU8j1E3hUbxg*v?PN1rJtvQ&*qgRK*SVC%bjrf;_IenTq57`@+6< z-6~RaffPj!vXh8!uV@5aiCv%ew~a|bcORnOb_Mi_qsGfYuEK0+MsERum1UxRNhvB8 zam6=~X?AsO21z{W65Nlokz8336SKWRwe{~ZLs<{U+ER;r`8>trWR6eqejTaiZL28X z_hoGe@HJoL4m6To3C>O$yCtoZ_;5=!j<)ULmY;>~ea!}pSa+^{tYQ-^*n=r^kIOdL z_drA*yLeBT);Sy|uX@T5a4*}EXlU~1IefC2jJRKhsvZvtYPdHOZlko4_a5l=;yqUe zI89_u!*^73AArxj$MNs&PFzJGihYnzpL)jV3!#HnRknGDC%Zvc9t%vu7P_;5TB9;zL}Ns%Bqk zxOs4(?r@-1z13+2_q2Hb3Yoj(%4ffn*R~>nUdgc z{}P|f=e*9M1_fQ0B)UG8v{SV!@UVw&|w@~B1o=$_kN7)AOw$@9gJ;BvzC%G+AnYG~eDV$GgP?A^}=gKR+E4GUzwleo8m znDgEU%qt-P;9RMSiolYJE~U`dWsW!S`vE#!2OzwRzRKZ zNlu*n)p4b^EWur?N9m~{ZPeT%yvTnRaW`|sttHX7ep3_AtGXG5Tt`hd88U5|FafmQ z?v$@WIRBiBZlVj_vt1kOkjSeWYa{QwpK?>w^?Iq^zlQ30R>f`QtWohcsihGosh*nM zQf5~RU?)5(vKR5KiVBmV{-hI^DUgR1tX8H9jPL%$CLq+s#Am~KP}DB zB3tFTB|SCO0V%xq7NgwVUvPyuo`hwXxe#SvV=RcXlDcuy7-f(^w4f&pQt%Dy_wf@V z;12<8BnubtdUkSyapIfV_%|y_v;hTF-~GK*`mC|!pcfa(p4*#>CfMLRj+|*4EkFdk zRJ^Qfb*8w3uS>YQ(SKu#?&61EY4lZJLGEVJXCgUG7+DRidt$eNPxQF=wXx6HMYYwN zJodV0OiwbY^~oVazOfd=;yyJRVJFda4*G z^SP#jDN#PRe=<$RRxyn1UP^x7I?ciYAW7wpYT5%TG(g2a5~ z*rm&MwMtO^syp=G7mf+DuV!IeX#$XmHC}r~LhYT}2x8zRjv4C;{Q>uo%nMVfcJ&&~ z0S5(wV~pu-0;CP!WPf%>Q++YqCmepUu6Ejc|9}$Im2N!#qt_xVh>c~unFKXo*@&s@ zY}ILSns~}Ubrf!HgBEZNu6_A=%@aZJc=PB#AB_+uO#$iysd+}r{8{G78$<5dlOvKP zl$ulMHnEPB?&phvhwoSdKfjm_{5l~Yv=$Ucv)g*N<{jnXk~QS;c^FH6#BHEj3%si~ z@|Eo(X|;|mYRRM4dHL6($M5MdNbwWIVK5m&zUfw|sm9E=2+n(7Bbh3}xnWcJ`9Qb7 zi7O~^Qo$c?o2ee6itlHk_7qdsmy)ker52j1Cf(YnIGpAn0{)1-eZ0CXiOE}pNfqpF z6~g8%+3kuH7qFY->C*dma>&;!R=~T2k%4=|bC7-H#*_lC4*G1L1KCQ6vDZ6rnC9ny zw>*-SKwi?DDwTV%%G)tp%%V)_DPJ26aJX!esyu!r(>Xxfuwpsw&btVL<7RgvYL?wT z)!sNWUF$LL1@B_JvAx)p?+Di8iR3f*OeDVHZlVO?ahPi; z?+4ZuY5ZQSCnDJtgV`sBwQ!v|9%+FK9x^|jJ!uwJx9tadK4QN44wGv!@q_q_wr(k| z^1_e2u2~r$Vz;!!G>+0t;mgJgzvjj)AFDOv#5rn62(OWoem#XcM`O@pD=3hyl&pY; zu-w*(gkG-=YLc?r^WGs0=K=O1}Qz zloV&0)ZXU!uJDVG7Tsm|xFM0w^-H$&c~!O_pmx3hBe=spO;=qgZ~j3z^7p(hzU@QZ zhha=svgb#=6sym|3oUEdtcoylCzxL}R3N|e_4TdDJ$^^elCa9%(PGh)IRn<9JJ}&W zSc8ACnnHW6yKy;MqQc#5j8dD0{;Ax8Cp{zkDdC8`@<T|ZEdk3?(pql>3@v>Vx8U${$5)yK7iI17n|(FM3X%S zuv*I-4tDv}SyDS$0NciES*R;|J3!ZW^-i%*BQJxvFV%J_F)2h-lTSEyM0l{&t#_Rv zSA+6-0Yzo1=1-3rELvMr+9AfV3j1E@sv9GY7xbdBeg>MYwz^V9XyL1b{;PLqK~AeP z3ysZ5t2_0X2rH%agL9qGZ&b`CJ4^j3;% znW_FXsGQ{}s-#g4;d?BLG1^WRUmWDFGgi}M|ERH7=6T;HyOA&=Sjw^f089ULIv#sfLillHZzUPfRYhAV5(ce+2Q;Oig@wDE z4Gr6~&zfi#gWRHiK^|^}^nUdToB;FYTS8D~4t3|$YEe1DsC{Np&mjNbkV*5gMN-sL z_qm3VgHKs&qvG9sqT7y6C5k4$t6@$92~m0?y6ppGiyKiyCXapoCk8vpv7lN zffL)}tlzvz!c~sB0_3p+tw0zzFSs&Yf5nsQcU)<72q{qyoGfcGd0tRrigne^zm_61 z4xH7t?AWE>WO834IDNBjb`9rA+}b|*QXBYLXmshEbw}`u?%C=x{p^25*B&6wh5t^b^qQy77xc=s2RYJ)MEl4K^%r|89K zetgFC61Qwr&U!#R#;?XOrf_#?Y8+h^q9IX>uUGR^j2f?nOCzhd{q2BT-cOY9HFJD( zH7ETNQk+-Hq{#q0^(&`QS=Vit@l4dQT>7>jeGg*9_dgs6_FM@&Y8JggOaJL-hO; z+3X^wq`J{TTXc-PC=Vkt%~+q%=XTn|pov6w5hxOEuw#OqpEiL)IE`R9DBw{E@bO7uKOW08emc>C(&3d2LU2v3ccz*`mUkt9!fEg`{Sz z#>Lzl)#Es9yj{KhYEj|l^#ysgqze7k4+g+RQ8fIH%v{}AHm28Vnl3JRcUC zO=WcivR$mQY0SX4ZQ6yUw4vE4riIu&lFku>9IWIjUN zG#;s9P3P?S$Uom0pu5reZ-GYz5FD|sT6?cLn1W|NJ_75tzI~tz-td$tto!RR_48x# zrV&{8!J4C}XY=1-$+;p(>43$R9VnawP9zV5@o9PO(Cr(rt%>@8KIw`py2^lnF{N8o z4dFvoKs4S7eCe68GR?6*bzgnH&Bi0eg=6NL|uX{@vtFlOoaAP|)X~c;~>Aor1*!x$znKg@yhLO9*6W z8?yedfKC6a8p+o5kA@`SZb_lAf6C_kTn6m;er+R!UfLU1O> zM++uj3R^T>5a<^-OcS-++Z3m=OHEQt^L+}tQ(aCFH>4yH=PFXGSjwXyupT3EN#UVa zpHfg{({39O+!IekMyw%^O9@H4n+2DH3=Z3yH=ezysZF{Cb`9K`=z1o*sSr^~=R zvRTugUIlce41X7u;(`(5Z;N9-x9>L8*860zAEh1R8EMV=LgGOl;8oN90DJ)nAr-2x z{XT~J*T|fANp4qw^2<%#Fx!yY?VtKvVTgqen&Vwbn7$yqm`$^S)8F>j#HW zxR|%bA$UhIGsUu>0G~*tXptW?r4tcn){K>sPsNbq!9yvZYQ};$6HJ9Fmvdgo(YglM z&wXuv;$Jyy-5sF3AAa-(WSe{lEKuj`++hOt^}$f0+WHBdo`4vLASOu5RoA4;jT(rWPIeB@CQb&4+Td#4XUSVk)_p>6C%# zG!|x|F*n?b$AjZ*R_V7i$E#XGnNot*X+!C0##w1eh9KKXKLUQsIA&e~lNI-8MV6_T z*R}KI`DtQ^`~HC3aSuI%M6;XvGe&TiyJD0v-s!r}R{^kV4(bot^}ufP=D_(*?D&i2Q# zcN}Ib1;egSt7m?U2%0*oluj#rfUIHMJOjp=#{pHnuwwnis~1^xVq- zpE){K>;N;0y#}TDco}Vj;k`O8P9Q^xntok7>9#2BuOhbC*r09Uw@nxDXmCF>MYqt5 zJpx89cC`G;dnmm_7+cpm;;mi1%lwDp*fKWyd(U30TY{#o#!m=F+-{*|`tZFHqHk%V zA8q6nlBH2l+GlCerx!){*D%M z=UbQ+(Hb&OswN)NqWnCX?yibXGgEl3`>MvlckY}4d2>yuSX?uw31>5H;X$0wvuPt3)l5KqYeQnX7j8VqyYopv=aW}G z;7Kd%=Bn&u7VBX!ms~5ltZ!mL#q4B54w?5}TYwf{!a2f~UU`o_EGxk9!`+&b7wX#f zBL%c=^o|DZO2^~WQrjMCAO^9C1KB26AyJI5HoY`J8-gG@WDOQWl4L~I=W(#r7##qi z|1EGLaszrj;5ign@_nt*2D6*yT|l z9g}l7bvVC&gdpw4}<^fIcP6NL?-~7!mj4{;@l{^BIp|`-S)^ zE;5@=GC@XpUz&`X`-rvz-d_Cn(nofCNN;)N=_6zOf+5Qc@+7LLH&*;}0It{UYQ@$BR<8v!tB+x}J?Ky|FN z(#EA}6Sq|%%~0-otygpV1%m7XK^6smb*HY|{mFm>OS7%8N32I#-nru@8@Oe0N)ltP zjerF{w&3rq9&3l7PJtqYWP$3ZW*G4N0&P~?VC=Mi3AKJ!HE?d?va`|*vesx22jp;t zC>5ywV=Oo8i~OU-3l)Lo#;pBi;@WGHmJ``q&y4>s_F1;4+D@ZsGG0n0jYmcc_jk`0T|Dx zw&zW!BH~gjq-MKTi{3>uBqu*9&s=#NCSv*W1Sq?Jx>ggjqbGtrcRO~iJZQy) zzTNnvhqqq|JMbcBDZ21c-qCA-8#X`qJ~GfH#`*g_#O=~mDd&K9BuR}Px|!5#p+!4I zGwe0_vGqZS&GtRHtx)$1#!tsjh%?#J#S0^uULlh2|ETyJ2efJIgIZ|DQPaqOBmhzL zg3!DE*%&t=p%2ReA!z3bYMNdY1;2A(TVoOQ63wr=5dN`}5TxAdmm@Px6K_s#_Xj}w z(t!DXPoAcbgJdfY)$8M^{f$WOZH1of7G`f!B{1hO5zBjFm&OsL z5ZFZpm92v*oElu}ZgTkBHd59PirOYhzRbj2uj$NmidP+g6t_S(SMyrF|6vLG%nc(d zUy+9l{`j`>?#su4_V<6OnTln}C!y$TTj2&B)(0&Y*I}tYOx`61|L+r$KsOy(QgNkO z@^p(DGBKlZNNyE*V{(*cUE4Eyef%FB-zR+HShz|N<~A1f{;NN zq!f^#ol{56vxQ5`P;0UW0^LS`WnjN>txAyK9I?o=st+s z(zv87vf6@{&kWB$k5yg9iYWJ3(ktD5MeErHvoPwnwe7Se;>84dGAgR{%U$u+ZWv5}cHipz}ndGvmj!0Ei575%O{E3+DSFMZC@d z8{795g2G}eMS>1#4-W_nDaYZ=bz^dEOoz=m{l$e|q^EJSF!J@n-GoIBWO6cOoCZRQ zVTQTgAGxEU*WI7eFq&uf^ev3#ZYu#=aZ_}wHg!0kQT+7@)8a22thXhrJluI(X0VJS=y7apv#A=+C=GG$1uXMkh13(fUG z&k_1Nh{u$a|6w6|Xsis{|JDi$1gf+|7~Lavdm?@4y#OC_XFM2&0mvGzD%Ly`#g|b~ z`>RDyJ4;JDm03S)94s$aB6S}1QQm--2e@}kKC3pCO=a`}-{`5b=4$L5f)jK15XYJE z!9~B!?22kMCX8(~h7*?QXt2~f_;Z>1D-QARlb_PLE?Vt2xvN?$RdS8(ZuJLg_I#VC zjS7L#W1h~8FG4>B>OtlaO46JGGLjRpeJY=@PhKDT2{WbcgUJ+?f)tW7UcTB(T7r8o zn!i^by*rn7cX*UIV4AHS+kKAocynv|4GpJS5`@81uFCcdqCuDhwC_U{845_$7r2Xg zqbQX8NFCVgVl{)w_{O1VONF4UnYCMIsYHE9;ih_cz5Ce$sFXl60J*iRpxYA31hJbq zyrLMyl)NBZSmK`jxb0#%-4QF+4ypX5L_!}N3(~RLZ*t-jH4~@uRu& za^4?~QojK|dl*3!BS(DnX}Goj=G%?E_AjATACHAk9HS^j?y97g1iyFrnmJ&q{zqhx zTs-FHJ9zvr?oa8egV#j{heZYlMF#ap^bJS!5s8F5i4@ErJrG1m=f!8WQ-AV6ijVOM zi1LVw^9V5f6OoZpUDMqf8tu&U?#z1%Mi#t?S)7PjJgn%{g{1c%N7 zn{HeEu8_vqp+L6#;u^k8i|(6^W}Ul6Ivx+r_ic)!k6PWC!)BmvSJ5Z=;v63t9cMLn zMhi>6#wU>;x6S#MChy=2%CGDkHiI~w&*)#Og(tG*H?xrF5DtKMlJX1C-p#gz@;T!b z=dofsR&Q5wX;H6?XkO!B_bjozqdk|_kxADNO3JIfm8v=~^Xv4oSs{sP-u?nMJNg6s zq&+ZAGfLwQtPl&`O;fazI1fWfrXbz~yFAeFQ3UAck*SXeecCwIsBldl@N?C%&cCX^ zPWd!F=}ujeb`pdyC!HuXg=AqFdX$m>PvL578Y2s2Bc=(wR(gQ?O3cx#y_Sj&Vt%KR zOw~3YfX~>+WfwN`ORo#+vmWSAk$P-OGK&JgKv#agdsrVC2p|zbmAOclb~;(nKb7dY zX|c-aPRfpmZIE6Ez(yNJTLc3c2~T9Z%C99A9y7|J7EkX9T6{F?D|jW&uOAj zD461QnMjDA$5KxqZ4;U$-Fp67_*l>@^{-fzHCY`_4ph9lRAo71Tu>ht8>4@ZDwAEU zX0IK&8R~RFd=UFzeBa8?IaUW@bHBz(cE;9@_dD^ls4=SDbp(`R zfO+BpE!L}3s%V8qOhO*|n7J~OjEAbfuE#YpK)cDWn(L(l25g>6+>b9(3LCW-`68GV zBu0_gPae0?VV}v|*k^g2I=F_~5U5|D$(NzA#LVL#a>qq?Kyf=!e@%tr{E2?H6L!o= z4`bj|I0vfV>2thu*P9e#3yTIuYmqdFWp?$_3D4DUw`1u(T62fIQ~ir^RJZAJwGgr9 zz*cqUIcS*K>$KJ*)JL$kk4dk5E)M7_G*yBUO5kV#R&2IBl=z(@@5I(Gi~~|nPD_Tu ze+{oJuGb{%tIS zYlP?vQYhBJahKZ-xZEnyk$NJT71*U?VX$DrWl+6$-Rw>r9R6*p7DzeVHL_|Gpz$gU zqUcUz=g!0y=IzcT6alC7rZkJDd@%{zdukV6-*E6{3wEZ6GyFjSMJch0Edi=uCg}^I zSF&k?-hJFpnOBD};)WM-frU^^J!v(wC`XMuWC4m>&9V{lx;Ch2)xm8=7vmFP|Whx8W7w>tC7KdJ6tvb5f-s6X( zvLit>wLg5vb$oy8hul7v6;iC2WNa`Pp1rC!R#3L~<2o5vsW!;Qk_jyKTpiu=x3%nZ zh*N%rV!uS6N=eXz_qy`LmLqb9gh$Qbr39GaTWViRT}j}~W?rQ_Bxr9_HmQq(JDdw0 zLNb2D{zQwWz(g9wCf_;W_V&eotk)w74xy=qy6(nmX@=t3UtVPi(3;rj<|Hn#;RgcF zchb5rrh3m-z7S=dBV{3!`r3=lJs{xX^1V(~@N+?7&qFL!%Xm28UuvTi~ZJEo@p*4f1e7`e@PjF1H(t+u4XL!YEya-6Es1&>Gx6OVY&qjmZ8)7#Sy)Di47@1eY(_904Dca?bfnm`} z>eHqMm^ji1YCZT7eCuOmM;v}ykmpG{GW8N}^8@1Xb+-SAq&JV0cOV7gisKj;%k^TH(VeutJ_Pf@YHHt@u0H~oB zy9B$x9C7TMKLOQ_CtB{)KW@@;fDA^5kvC@P{$`?~|N0xCC)znNJuOs)`?$beP7vBr zm`sF>;KS!&ZBl&*=Lm%e_~x)MSX}#)_okyZd(xb7R$z)L ziksmpNA;6cZO>gc`mR|0-KV<+&LEZhj0WT{-A)$8w87E2fD`ulg-sBcOupX#+AatB zGfl9r9swjVf9T*Ff5@FzAf6Xv0cmZzg!Ow7o4YebIFR&d3 zwxSV(=i7p&>fb@zA`$2Cj_s_U+f8J5F#RXWzr`|wi82B%6-0?CjU_z{rugg$Mk#K~ zT&-+}aR^@kDUnCxk)Se(jR)D+J!+MwWJ~2rDnjNOqHEIoF+jdk=kZ(&+Uoq%BBdfc2in^M>CL~5GWF`rE61ql zFLEl|320TXmvJR3np95~kOG zyJX9+XhqlG1QK{w$_kOK+><)*pd2Wni4AR;y(K?a8C!9C((u{WF3n9*;(UcNR zJc6&M3y}bGrP0Mf;}~>sLx$XR9G4#>>hRUz}bfxBvpnwBIG5G1kf^38MH9X^8%F z>AiBL!fu{hqJCe8CjMHtHn{bfXV8nOGhhtAV34jsNG%ME5S>qPH!LB3VwY4DV{dci z#31_-@FFtJ=}>M60h$=JJ(|na8M@)j)nm+ci3@4nLGY%Vmc;WibR#JzSlw^F2a0fz_8}!!Wb1?d;=_7Om~(ek zKMJBy|HI?p@V9P0GPJM(91E{K{}om#4`r}{&Vhi}+Zy7{ z&gFRfeRTTYn`Kw-$x-G55PU;tFlFZ~yjna)D3oWab zxs1f}xm;$s{H^fxi-Pk3mC_BWY-4d3rB>45Ng{OU5;pwoLLu@@Xz6G*@tW>wj(pJe zQ1d*kz9+;xp7_@i?%nLt1R1=vNJ5m!fec#P5#=Z%T4Zp35_FRh1^-9Vbw{)H|NTUS z*s)iUShb55wIgO#YZF_ns!dhV){MPkmR4);t!lT3SyX9lYEz}uu35kPeV%jfImtQx zaFTQLzVFX#?wx-z!UN#Ur;CNoKE)dB&bRxRk9$NJUzNinZtLa;9Uuj!7O8@ED9Hg) ze$|e8Ykj1zBURZTn?bswR{CE=StXz!;UV1Ow#?Qn6^{~c(|XKF8wA#`gQ8BMxHyM< zdk&A521f{Q-$uyX4}g0DJ>ONy|AiYy{s26YhNNWf zS4e7qEjc2xvM=|IX3l%F zU|v5mcd_bL>h~2{cOPHYjL*;JfI`iDN3rP269Nh#BFjy!y@ov`^u>%!e%b&k?nP#izsxiB@nz>WW(ca>r zdxd`(9o?_i!>vFlrxG@f5ajNrU0L2cWb+5IniW(6>E6YDr~j*FsV2bRmG04*@~+z` zKd)P}f^P_}Awx2%IStSgLTu6E>>0X?SDQ}Z5vp$YKIY8SwsH`WSOJMvX{4;R-$!ke z-gZAVId7_7S9WXg;f&SW;9+5+jf({$XzpGeJ$lghE2bgB5jD)oxeNFlVwVWag`)7( zsQ%K_{>)TWAr%Wm3=U_j78d8I4){3dv1I5B5v?M(tWQzD0VNMcTjf(@Y-Tge=AERx zbYqZ*-3i(T`_Q$AJj1!BJ6)nvv!2|rKEA9WKCe0CA0nv>mNb?bQkRR9po!?YDkE1g zd+Ds_KF@YM#Bwl@sioy503b+2Dc)p7maL)vtncvAUPfUu0t7~eWe0L#>&Q+%GI45xf&vD6})^7v#JxlMe#&}HX0v{x+?XcIk$My#dzKrz~i)+d>rpIljoDM zexwF})$U=NtZ>5@)W!Zo8=9JM36K_Ga?Z|Y5_#^I?&5#wIv}V%U z2nS(CwJ3a(FOYFEaK8SkF7PJ>=F^p#$ifM)(?i9ugX9auZX2X19gt|ZaQ@noGnjZ< zSWb-mJje#@eUf$rI_`NQ?%n{kxF-PW3%5V1$ZQ@bMgUOn@`?fkZ`NG@-fP`y`O6o= ztH+%=?wzUS-JBJ6LMZ9VFQCFXhpbRRBkVqyI8Yy9}jc7LzT)l&u zvHfBARXGRB#T{tu_yqP$RM`F~cF<5E)u^h(y1Fb`Y!3jVgRghW-|V=Ra-Le5ysHvU zz0$7IS=brfF)dK3$563vKQnXx7C&_;yGXSR0fWZ zPOLIKHu{% zX%on!`_zbUH-zj)r_)A9!y>iL_9C7C*bnw2-ywtz6dr=;67B&;#@a$BiMN@L>+KRW zfvlIbb>lnFO&SvSwNxRAbs89Zs-G4Ja;(tu7l3K5Gc`|3s~u;*vK}Ecm=3-ph#SRo)9#1b-JB z?Q&8yps_L1W@H!~(n^1|{N=0dol@JoBG{6OXinuQa1QKIYbapWyXVNN@2xU->?INR z_O@X^2Ga%LE_ZHrb22Pb8T7jI3-YA%79rv3W*?qH8j0slVM8o&S}fGbKgx%?yJ?w{ zAL7+TlJVF>vf2xn!f#6cVQX+=NVJ=_3V+#ds8(SZju%KWl(K7qHnQ_{vNH%?10}!c z>Ue|dcwg;MydnOc)&R51fcI^!1B%)wb_;5%I5NymnI(jIDAZvi*n+6P1U-)!Ozw7Wq|izw0N91ci5eh7_@r`2>VY&jD8zDBmMwv}WQ*5;cghWS{RI?M0h$Bv~m6N&#Tk|I(S8{%!GP zKRt=^-dDAO%K;+qUXnj4;nLjcsnLSY+>N^YcCT>zf;EH%QP@s;55QEs$$7VmX}0TLUs4)g;B*8)-BjTIkHZF`}HsGf3B|) zxY=6b$#?2p_dhsMJr9UKhsIyrI|H;i8N!U(BKj@e|Dve5w%jwWr*ELP(!dhLV~Q;# zk?jVlk`imF5^Q<^cxXRbQT-;B&!y=t(T04My0&}K77!AEvZ@;7I1rYz#Z@rqH66T8 zA1t*y3J|!g+|WE%Ji540tS`>~-Dqeyl?x~uA|Vd!vt?pM?1U{1Xb%jL7E|h5Yb$Xv zah=q1?ee5jZq5&To$;rr&1dAE?9Xhe_k{-Q^I+#(dTL^OpAnW-9M$yQl_Q0d^ZUOo zT~|5nMId(HvSzjaer{{VIxL74q$#9KqCl7+kFrv z*5+_4eCnSn^zAWg%bhaBOhdeywPx;Un7k|Eb^hc{&-R#gfBM^bBpa$!YV>ql&_V4q z3O4cps(m~5cXrIKEn+5;R=5Aur7iUM6b~`rAKa#?PqX_|;vDbAU24}OJX00>dq+Pf zOtx4%fz&8I;9f6x`hYmtVfdy!QUDtRK*rYPvu_WiC4RZvj?Z!PcN%YEk@G#cj!>-U+sJcC$>J5N z(?O2r+rUS%$V_^?*T*<~#@@_UioIjruT`1YVgwmWqkLvSuq=%EoEv}qg2J?0DxQCf zg=|WKp%lwK-}6FEwY@I9vNcK1kz&7(8l5giV4OYK6Q6SyE6LZN%)4W*RaBNNoL%oJCY`kFT|@C!@aLK%`Zm+mkYk2Hyb(dfAp?Kv)j1b)UWEdqI~ksyOvj_Usr+$ znG|F?HrgQY>KD!>luFev7hB)o%*&pS^7Wmn-1=A=^w$DBz|>Z~nw&tw#A3_P2$Mdw z|MZ;VOtjd~cgFswzC*x(W%He{feoA*jaTA6qOFxPVUC`i+Tx&lTQYc;A8O@S;s&A= zsFYbMURE6M__o$v6mKyl2p&a85Dw(2^pg>?x(!yNEV9Ugn=AeN6NTB}nN?7Y2W#OI z05(Ze?UTnldQ>2y(3>PULCTh@botmQaakIyHW0?}{1EZ(8*=4XHEms$*X1MF*Aq+Q zp$}dL8BFucrP+3yKlGeK*_&CSbmK0#96r)5+e@`Y9bbNeBHW@!O%+wvmo%II_Id7) zUv%_8;kstMwSU>~`Oh&tNd@8aj&Xa!vmos9fQWJJ=g$g+?$vK1;YroDsqmynN&CL*pr~d9tl^IY(2mvw4;2#cZIT_>P zM4O+85`Py;5o8U;;ZU(cCRWIL2S#!>@(&Lf-dG3>$P>#QaONLd5f9GoF*Gd+x!Ef= zMNIr=GGW2#8BXy#*^_8okyp3AZVaY3m1fhaswd}&RD4ixsqQ-&t)2zw^z~OEk@iZg z^h#v+k*tSE=yzm#y}~=W>e{+4K~Kn&P<|o_@|b=)I&N=PS4z|dPnc)~oUq0XibYVG|5a+DHDwuQwIi|^aRQAhqec=x%&nj5< zrzCz?&;xb1EGJXqYgO30T5;RLSTY*-QKAccO=5+0tFTyW)Vx&u`D>VQBR1$6g`hEZisL* zIXizIaCPeX0E7?PilRbgzu}@j?hZ@6aDMyk@a;BJd*-Nj_zw_tO=W^+2MBJS{j6Ae zbL4kF-#87>hU^E@PuxW*wNw2EO4!fs}|N&*IB*ry3t?ze9Zo87`H^Zib{p5ZC4DMwIvW@&Gr-<@!Ebf{G?NTLi6-8xg^qtEE0hQK%u^;;zJy!w)ijfRTZ$dXO21wL zeY>k}&;dlAsK~;pxsVx<{fUPp5SXd5&`ZMROHhx6oLYm1kXEgmdq^h8;5QV1e9394 zUcPPhW!El3%3jpbZ@^j#=mVl_1#u0{ScN5J7X>xPYBnMXJMx}OpPQ8WZ*#qf`5ElA zuDoz53c-K9p8Ds14@L`KV=qGxg(#GguMp$8j`dYWTzgypg5cl2$4@-U^~z=3-sxD` zm<#Uu()2IPwdR_(q$VgP^;OU#qJa^^9E9V1$jLN2-m^Vqc8o@EHi$A}P-|Y`v z;T;mPDI0zJohg}4)7%#sZh3&8`#1P7+%*7a^MCz{GW(c@;@C`XNV7E z8)j2)gQu!QL=0vbCwy?oI&N!cntD`~I0x#Px|5S*dm=*3s=6ClW;d*+bp{XrSu964 zCc)eWL&5l+fb17i$>02p4)Zm(+_|>gr~vrQ5HChGOU0j{`s6uWQ$vL9)43PkukH4d zQ=TQK!BBJw?rP<4_ST#ac~Xi)6+L>j9~t#%i=L8;p5B&AsT>o0m7J_I2vd8#*XK~^ zV&yRLa?rT!`M@@*09(|6%f&$Hg_iJz*5Czf>e;f8Z(Yhvk3;nDM=Kqn726I8?0zy5 zzp+0(UNcU0>o{hUC;Qx4N%nFq2)$l(p;`q)pVVcL@hcQ6F?-reYvjsorAqvIwUi{h zcawoAsUgfwLqnjtll@g46Hk%no%v4Z(op0x4t83ymKz_v{?)x zI>6}3q54m*`h2UI(D|$U6(`qhslC$8ZexkswDG#^ZxUJM_9Eu}Mvb9kUL5bCWYxHb zqsjVu17!p2Mm?FLLJXWfqB@4U+`-7PTrCJLhM{@G_1e34Es9{8T?V>nKFeQj3p z{#A1q$^jI@GQ#Lvhux;z(zJ0k&PmE5k7iN&L$B}$ikE*0R#R-HINqclFOb)x_EeQ^ zr!vFQumk3(kpr%uOU8|h-WdOH&-=#>p7`4=v^$s# z(QQiFUu-J}Qauq5@TI%L zsWo`VtF6L5RBW6i&40C1nbT3b`OO6NjskG|&DKcng0*z%1L6y_3G_6L7Q z^jA4Z_B}e%e&E6N z%X|9B`^;SwSHAB|4-(IKb%@6~L0OKB^`@Byx7YHOFK9jK?SszSdR2dosGzHZqR9tb zoanb-_}1zOX=T3>6Cj2OW*Ont?B^=)ENGcYSH6gpvU7Ccr639Gm2Q`Xj5UP$#)_DK zE~I?c920?}UqDBN_HowFg2}5?8R8*p4KH~Mt<<*V_ts?UvfZ%5nh!KgPxVSFumot6 z#6i)aL`T>@NZzS}?fCQWj{D()yb7y4-~F+}OZR73jt$;LO7gI2ydZZXasVG_@Zsns z(PSC=T7#K(&zXQ7*!%!7bSfc7_1C1S6U=Z)`19 z<{`56@L$UJ)Ez4OjVjfRMbwQe`Kb!mUZ%=sPW|%|rW{R#Q!*ds&b#0v-I zho4%`^X~pO9o!Ge*6b*H0`|}W$+km`LGZIqY=_*xTQfD8=h(X-HTmb?C<~_ia>Tn< z4B&R*$rdkfb3T>0cHIGQ@DIEa>I%fsg!i8?Uomzp|J8drK=egVYE4|s8ic!jZL zTWGB>RbC%!*s)<4>kdD+4;MuSL<#-!fa@g~r)(dMy^o_<9A9%EL85hlWUy~*G}oz!N`^=kxi zRj+_ue*-lNf=Nq9zy5mvNmyLb{BuS9_3B91fB&b=@`TMb#Pi>VjsL~_>knWpWmt<5 z;!5S23JGYSQ$r+*{9yRzA~ibuL;IpS=UUxiC8jdtZ{HhY#G{%kaR05K(D0wZaX%gf z#q823X>5Ew2V_Hzu>Ht#xrasf3MR{2#3O z-n41m0k-GmL%p&%y~h-B-jMAqYV-t$nhP*`p24d>=kOH6-gnY6Y#4|85Q3u{l0#d)KVJxID;bZC6y4A#c$5EU-RRU z;ju8~>;T$v9bMeb*7rj4d7c|hvTl^r;giVuhHSC0q0A&Vtf};G;h(9$d&NnU%!(a! zB8@1Y|0>xj;5@(0=_e!pJGrz>IM-HkK!c1F@EDvZpKj)spvbK;dMc9SDzGv{n-2IF z;gzSoRFS<@u^zCft9;5u8j9m>2UF#z&;nJ+w<)vU@^nWc`3xit_p9;#7J< zBpFXPB~eMY+=dy;%do4~`FB#lezW%2ZrZBf9D}}-hj^FI-1DilCu5MY)R-zEHdN=e zd09Oxv?V(%#*2feOD^(CDqho-g(}5ve^jok2M=Sn4oj%;2)qVXm@)W!2X&Yn|H{!z zpd(@*c?(P#l^Qjf^{q|=A+dIIXwtbMvCf~PpiWMs`)NE5rli3`j8I*W>svi~{#H<0 z{Dxa6qp7}_b2OiW+A29gf>pm5RE2Z+PQ9M=c~5cxqw_iQ!F`O-AjT8u4w8}BepTBO z3BAqg@|T>?__RQh$h#g>6~QY)$~%0{TN&wi+cia)4aPVN%V_m-oU5FOE3aqHZ}3h@ z`K!MuCuNNHxnK#ng7=-pR<68JJE8W z>_eo7W!tTIss+Z~cM~|r>Nkrr!Y|w>g-M5_w@5wv>9DG8ZYQdj?MgyXb`UDg8-J{n z{*WSOmpPoHn)2ir@t!P7%1uFkPdOQ)fO)eNUcvPxT)uQy$@}ps%MF8IH$-&wPa|cW zq5^vxapqh0Vz1+}XuwKp>)m8rz#XEPaW(4sdV5oFhs5A#XH+Jb_B|ImZVp}zzQnS`OHrj0`82(}&rB=s~{7HE821@89sL)3u zq#1g;1X`)d;m)(xENrDQ#nS8&IN5LTUZgjn7~8iM{v`j1XzKx~;qb#^q3W}2d~01t zj&sLfgWeo*P1cvPpROk#`JZ$vFP$Y_$G-|blWE`orMy4sc^%QjK_1Pa z_RoFcP0rQxT=IiiMWQs>F0J zcoHF)-NO}{74H)#Egzqs!M~BJRabu3UGC33j8>;N|E(<^M?yT8t}U%yU5;`(GkAS2;{$7}rl6|NA>72H zqU?+_wRd!&ygFxWnfrBvm}lLTHHH?ivwC$ev+`jP~rF)?0h; zE%{aYzhqw?Q_eRJkIb7tBT*?;kgMjGlONP9kBfYZk! zi|zQzcrY`OHPc1l0l4vUqW^0aMmHlK>lmitm&EL=I?I`q)E*aXhr%q!f{NwK6AAnp zFD3gRM*Z?D$hld!%7|alA2OAGyQjSF%st!EfK(vKiWD4~C0QA>8e;Wy(7edJOv5n& zSG+JAxh!K=d~8B3E(^XcRozNYu;cA;-P z@g{$&6uonGpi8Fqlmr{#R??R_6uPWF-wY--)$Cg(=2|5qO00v0C&SBl3zp>~!=LK( zzux1&!$2W-AWIc`w=3!v`j}9Gtbg!DlXtk7Pp6MhgnxkZ!;OrkSZx6YU!zz#Nmg^w zuMV4EN0?XH5t2+-!{v-AwRpS)hbO^w2O;_gIX10QJ0Ed#G4$qQmqu|!I&sy9TYSF5 zI7X41lnitIrS5O@rB+IGz0FN7*+vBbVUcBE8lm|!?Wa5fg%^hjyacVa)!W>Q z@;yMlR3?Il(Wt_53{O@$Uz0v_Hhb}x%&4&g8sbI;!Yg$hUKXo@f0>^MkJ&jAG=~C+ zd>eKKqaJ^>E7zn65$EI0TSO6>LwUoKLP7b*r1)mE8N7sVh>WW++EP`g#mVrV4(PEQ zsPHi<{5@?&KxAeh2kkn^x-6T~4|YRO#JB~2rG>z--Sk`PCyv4Xfot%Arkl4!u(gPC2OP1tg1Cri50*raF(S$Grg zVW{lK@jjYA{P^n zuEU=xUE8$VhbINUc_xOVEM2?O5E=l%WObnd=iH2IbOCry7;7f!*#+cJ_)!GDshM$G z_wLK%`!_m{pb2zJR}^knd-e?;9gyS6ZD;EXiE`4v`ddn2FSZ%Xu2@(TO!s$@#)~TX z8a%kV^7LQPl23We=Tr){6HL1f{+lGYa(Mtwpe_5uZ7`=^TTkVg7nk5h8b`J(HC4%s zQh=<`3j3?W9$QnRK0)BiHqRq|>}hbAV!U1=a4>O#C}!2#HQOuYgKL8SmYeLyn5+4v@48*c)e31+(l6o^AYsT2E4pSD?sPpEJ>0<&sI!SKjYMEQBa(9UY90b3;!;@ zyIN&*NBZtoy3Wv7m?4u!`-9t?!#10`;%#4H7x&~nM^^?1h+P}Gi%OBD?6GBf@n?)A zVoy!3D{7YlJrnJvokl5k@nKM9=z20y}Tru)oIx(&4Zw9#ns3LgDANsD@bpHi!^B93)$zD;7sN?s7PBH8|! zW7q8s$$=dk|0NxuS#m;?Z{!OxN!j-2W`?L@;^IaxLTI_z{U| zJbkTr)v`BwR{AO}wMC8ny@bo>*S2Q(bUZG-Hr^};cMs@pFP0Q4SEt(N-SOxBPEI62 z77q~V*(-{r76}0i5}qL*=}FbC6o#vK$5!3C>CSmKM`vsfm?8XjNB>l}jpK>6 zq?R+PVpzbRF@=$1UQ|3P=jUVakJqDe?`)R`F7E*RCC7>mEkkXZ4wlPpA-FREzFsMfYapEXkHeu9{0j3@Or zCl)m)wnRssmBs@6R?&%sB%2^t`iO+2klA~-xsp=16rq&wG=Mh!qb@~;*~cO9>YC41 zR9Dy9(I+Y;b2sLmyDc&x)Nc3Pmc^#CSlbQua<2aH37V@l&V~YcVs=6qK`_b>UI!WA zu<%f0MB#!Hj%;de?&*AS=A2hK+@oHjCqYd82Iaq1B0D>+2L3@!{o!39`Hx=uoO?k5 zo&9m#c()(*?$0pkt;9E^8GDlVYo#nD_Lkx{vL?F+d|7;bZ|osMG;J;z!)a+z2GpQ? zRwO8+{BoOks{}T# zyIk|O(?*_^65+(2k$znZ)+*u(xgl5mRS$ax>)H^s+oA$GS-jGzYpoGa?G-yT*%9iK zvFRT`Jq@6<3+b-5SQy2#Es#&Q$GvLiGf0NzE6VmK<9qbXXs>D=r1;vm2_?xSELQ=S`ta7|`kD)CI@hBVd=mv7A z5BB|wBCqRQw2AY&!f>M^TEv#K`kQVH&j$`Qp(D#uLX{~oSKiit2OfWNtI9|6nD{2~ zFQj8c^IKR_JSStJF8ib^vr06Go8~1w$n4qt>(i@q2#lus5Pt3(qCxd&=2JB0i#&UZ zIB?RLIG(}dT7b42^ROoDaoG~12!37iU(!un)sdc|F z>UP8MMc~$zHQH0mQinQ5Tx#mWDc7ahh&|cUkjpbkS<#VYwS9!IPfxb*qaUgkS>iPb z#-`t$KGuJ*=@kJPp_JxqSC&wNnaQ}Cg?-Hp3<6~6Qe;J!juj-Gu&HrPmI^(GjlA)kFe z`QtjRdVlli4<6wlREbquD0ZWQ;3IP59hvfr0SUyV1ZzS{q@9ZD9VAbd(b7Gw%!CPm z=fU1FkXc?G45TuZ7SZx|PO!C8FzGM6MaxX)iK-fK)Ot zD9)slWUIzDqVx_%HNFtRO}St*2#ZO88cGI%`!R)yNE(#^eE<3DsOd#}-82Mmc3K@% zk=#yJGp?)|x35QE5XzqsMki^;*xMfIpE6tDJexf9?INZy%vQTA(6}p5wadq>OHGa7 zpBq!ekgo5aawIho7VGmq4)cU2PtusUt=_$|!~%1V4Rg=DJLUb_<#o##obbXVkv?45k53iBi&xM_15 zXy*!HdGt36;H!xt;WIUAjy-|Nw?H@$J57F&*WGVPf6(%u>_Z2TWz4T1d|m?iys_$l zxBfWbyOsg3h0Ip6T|WN{Xl7kLrBMILZ#=x~(w0=v`riym%4vffBp4@)Mv>d?2EdjN zzbI{K_FLDu5=d)i+~<~g9APIFOoqy{FA-`@2;Mvk#`gRb?_~0Cy8F>N6o@I2UbQ;l zhR^w1vBt=V*E?h*d~v;_HxLqD!4?_`MRfI<;|Hos!*gs)$}^RUpJIl% zY^%INjtNN1B73I}Idu6G_NkmRxN_iM3WbZVSN{8{9r$zLc;hzMFQ0RLYvF7qcz=ZX zx=-H5k^~iqTvK3NYe%&{$=p+^!sz}D#d9eN;4E!>*{0)<5dm;brnL==;Jyzs|3bc- zcJy=|cJ%&B`W!jY@|TmH|B}pwR5yS6WhQ_`Nj^gvBv|zbS-=<{k16O)<2q1MZJ~6g z@-Q^o_{7hhH2IvG@PPw3+w8q+S`zi>N?+_TFAhJ;RJm15VB-&G(=g+xfg%iQht6Xo{WpdvG6U^B@n@$2^ z1XhjPwMq^`0)CxK;VD1|kUH9`s3ZxaGGBaYE{ zrf>a<4=N*h*WQy~HFQ)WQwl`}TpD6%P2!$Us4jU=sD_BsR$zsUZ$^X*vmhredn?TV zV3nWlXg`KHJOief80ng+GcJ+ET`{3HOkSR(zBv`>Y}HJ4@+YW3On_S_U?2a{<*uzD zA5F~lh|KT5!O~lqlW(w(6k&=EK8HjIax4qzofQJ23o+ zq4|&_ZSJN(157Tq%HH9FYGK+-;BpXTMuWcjfTDu}lZ2kkC}y5_fqJkXUEbCP{s2>% zDnth@97;#zJyIL3_OUDs%4|tnZ4*!Y(|Pw3WM?`o!5Y-!-WCM z@3E-7O)Xu=0mn|Z!$sq%BjRB>;N6qQ}E+4x&CN88%t zqqe{l9xj5pf$pKgYkfCB>p<1&K{#Pf{WCf4;ly4r@4UkHTr?la8004?x}OX|)mRc)lMvtyHvFAt826*cqh5qud=A(GJ}`eT5#4 zU$EUlGJ~DD=@*xb^QZfo%@^l2`{U0$x}R`e(cZegtnuHO3hsZ?advaz>@s+7m-*V2 zGm3^D{pmE(2p?C8>F_BFd(xGD zUf!5HA;`_W-;)Lc>~%nO=GCyfPJp#IoX!bwFan9nc<_LoQQsB_+LJm)8aeur8rtL5 zWjB*_7ClQZmID*WOu%2c2$k9n{1A5+wp?CnynQ>aTR31wH}cEuTyB^|j$LH-8O1f( zWKU1`?{*2-0TLOisJBD)*80*t2FmB)0ZXH9v{s)T@PGq-M7`UWlIRKIy5ZEE!fjrg zfjON||3k1rhEPvEgS+cNO!8ai-a`pd+eBwf-^>_`+QSUqWqds3gM2=hrc2=H*~*|A zvf1oRm#Ag|uRE8vdpbKxmez*(+EB|f^<~|Mg3=7}LzIk_ zcE+V`4Av0?eAaz`t?XF#GmP z>2$Pq^9nZL-M5lA9bYNVQxUs->-Z zHxKbP@52!=4hp`ZxvRQfxp!N*cUwu+T8~M*#s7B*$w{v>Fc!~wC9#`l{u4Ees(OMm z_=)>q$HDXEb*;90y@TTi$bInG4RTl%P02YH_`PSxxNcfr)e8ApP#=d23$?4?cl)%m zmq#I+aOmQ<1CqpCjdE;7ks-p?2Zy}@B1H=6ARdzGx)nuW8dz=`3Yi{H>TYwsF%L+> z1}QYm@T#M^#%ls=Q^#pM$st;Q>Xg{xE5`QQ_1S|itX9afh4 zOE0$T)AExN@^5UTFZf7Cp)3+$oFGDR4_N%HOu#KLl-Da< z|H2_!9yIU1ffd$O-56*}{bZW@-7v%~8;;LlN`YN`X&o(hOwQ`we|oj=%KeixLFB9Z zGDw?X>WPnS0`;Q!Y(HGKPl(PFnwTwWLa*56jI`xF2>WLy>2L1M^$z-EQ+~_0JiAS2 z!)h9!x@8o)c@(;JamNIHq6zo^4jK2F>eAe>N**&B#oZ4nG89-)(wq!vF);T_qvRm3 zF=mAud)^TT@?Pt$d$0Tt)1jP#F)sdJMByhaWgcBQo;+E6p212b22f8G z&DJ_ck_r1`Q8iZ!m?ZmT;B2S4c7Nbtr;la70lHf|<#qg|0f}Xc^rWP_PL#0@u|q}+ z63#-KG_@l+3dh=Wqtro{U%g^KV87s`bfN%A*7*CmG{>0Po@IBYuEe#4IUlX$Mwnzq z_fdYp@b?~I|F84nC}5Y;sf{d0a=k}KxHw7M-*G5I79b520ea-_?;0%k2t)E+a8%|t zOI$5JFr=%GL~+&@&pfAK_cg_6z5Nq5-BmF5_up3%(XK;q=Xx$q zmTTr)@y7@8&o}wo=`y+{GXSuK6{mB-N5VtL-(JZ3AdpWa(xFm=p;D94-%cojp8uXK zSwAE3D!GgLES1?8;mo1WnX&gUT7y8~e{(9i0&V$;F}wR(y-->`$-M>i<3on^5wZih z1h|t_y%VEFzW|G-O>j*vS8x@Ve8%V(4WZ@U*3)(tg=d7%GpU3r+3_U$`&XmA@li0g zn}2iP!uGti_queI8>6N>gaMjX6r=eJlX+R44weO!TW`p`#Y*NrjnJZBxpf_TPKNMt zEHI8I$>WnQW@^@btzF~lLlr5A+&Qs(H3)zihb#> ze(X%111{FLZ*#Ou2#+hM);|2xZw3e2z6Y%{LmfQZps)NMB{)tRjG>&-cn?qa`19jV_t@psYN+ol1iQEF>?e6^1YF1m zipHherdH|7h!g7JHzMzb4EIug5BreD3w7XWA_JgW+W?9&xiYSMkC_ECF0^jLmfbPQ zTTJa|()ngoMeVV6iGAzjP^uYo=6j8d1b0l{0so6LX=zCklTKxjS|Jf;6&I(U z6sI?l;4t{_4P)_^mAOjE8}ejzpWzzY`4U@M5qq(*9;1fD3U+{3-OAK{FE{VY!2_b0> zqd15-lN;!@0a~sPe}?v_Cy-P(Z$?@^AQGpShOPBq(rH}LX@t{hK#W{JvKWZ3zLMDC zS;{;xli5uc-^goX28I|~(uAAbgg`#Y?aNLJb;YuVHizknj?>r_1>Ydhtqa8Z{e4!TV3$*#2@J{T$TZnq`f+pePob*J&e~9JWZ}-D}38The zFK>E{uC5L|^H@GT`QCiC_I}{0huK%p1p<$N0?-0Yb5QeF;67%vTX;xJ5Bw z*~p*mf^6m=bnTexuWKX`eWOR!%zz6$*(aeO^fQ>LH`l#02K{4_%VWdl`-Og$KmXRf zTZ}4s;VkXw&OlRZUHiHQc84WITzJyO?`yp+)!mYnWg-35^jBtm`CHx2%I9>P0skH~ zU-xT(=1#7@PjqiX)_E>Vpb<+q(XwJvwndRo_s=M*L!|T zWx(;(x3}S&7500z~u#_}_^EtVN zcX*5!)hpX0Y^x!j-#P;=`(5Tcedaq2>Lb>TD1@^b1BQM{cWI#eU!eOfE&FwJx^;}Y z9WcGXWrXSFbya;0D`jz%YA;wAA{uB4#e2fInL*JoWVcwO|L#woaH5c&O(q`l4Ri*P zBzu0+lT%ELFvbzI(kdPjBnu*Anw!=F3WK$rj(18;3Ah}h&HH2=hx!Q`Fqu-Z%%76} zyY^a`iH)UBu*1L)hBP{rE0~Z|XO=~j|JzFEem3lJeX0u75Ie{>J&~l;DBLfqCM6QJ zdGos~(&gssy*uI!V?DJNcDKrnPYCm!cKN+bqh!TaXAk^it#IXYfZBxCb(dRk2U%5{ z`YVNwidLiCVsCA3ujJ`ky-|(%z}WhrXgyZy*?@uZ9J+8;J-30(6yO32sh?F-+2lc< zH9~FbAi;G2$sCam3|WSk^Xcx`^oTLjR1(pi+v?qvMVe1VdMq&7jddyc77tQm>j7<; z;JxE%_AKf77HUApQOQSD$xA7sAvLU_1 zyU3@28_0h07FIgfcDBYgQe~h}m(cu5$+Jgwa6lW=rD4>I*6T9B+)htz33&=A_FVO$ zpK!4l6HS4#E_%aS+6-FVGUqg^!rMYFju4Ia39$_cFSc1^cS8C|XHdxZcKd7#N<#fJ zFWb(&13#U2DLX~m-0Y0HD^@Bm$;th~`R3ospB#JG?0NNzqiT1-kNqip@vwIlLD};W z%e6LUdtLQ6fP?*$=uv8fh%z^(Q3TX-@dfB6Rt6~2fv~5j6X98K9umF2rj$m1a@PM> zWN(^DWmTfzOq`oD_|x>qh?C<#tG`}ZcL{rbO60m+);Nh#@%KS6*GBD=7UCxCuaoC`pt}D6`lEkR?6@9`fZ_;PttBzj zr<(+MLs|qTOMk$X!FRvG9=gS#^HUz#D1kncCxIjJyMkQYMzU(?mdMgR_F8Abmx>*_ z;3M)6t}U^o(y+R!oJW4O8H>Gv3qUgwDR)JSBKwQ~SW?r6OJ&)eriu|IFX9XLSsHWv z8IwAWo?I?fEw23f8x+N?^pD>9YTeZT@O$vm+pqr|38X(deg*wqg4-FYh=t$}8&#|? zBTYo85wE_6U%sD;J+?v*T>L~ut3vA-@VC4#R~|`&#ymfg{5pDU)X1fp_cS()9;Iyo zbCBQTrK;?w66xK%S$gOVp|}T$`^?0YLQ-reiwnL^S4sd7H@g*m~HbIZSz=6spC~(OW%G~RQFk= zKfESef*^n|hDBh%!py51WPQ4HsqZg(yJmF^JmuZ2`*PwHF8QF`u-idMMXKy8FF~&v z#)rpL$|XB?1oaZ1| z4$2p{ke`mT)ph5@F2QfYE>we%f1NR4}`Xu1R0;^&lwgYA^P`5WBx zJ-1pTOlN`^Je$s?9t5B3HvJoA54->`!*AD$`Iq4J_;sr}@kZVm`N6N?UUx+oLd^m) zG>3p@nG!~NzJnNcVOMs~REZ2NQHK#}kNGhb?Z*{Kp0VYA+0yVpggi28 zAPv5fDTEB?65Ho?R^eM>ByUNZX?kc;@rM<=36&b0dlDYQsgnH19Qy>)X(OYC^N+>& zM92DYZvRCZ-l4(g%|@05eqqF_ioYH#H+#7IdgO0>Y43YTp_*zW7+=bdFa)}O*c}-J zPY7cADdG9?Z2OjJSR8lD1#8&9`K-)~jryz3&o-imivj;G-9HDM<`Nh4t0U->bv3-8cb5!%ryYF%Z_At(tn_|o(m9Jgea&Mf(4%e0Jl~#6CaRFhTfTqFZ`<@k%h-HzcMkagn z$q@c!NyaJx;Lm+&!F;nQvvbq2E8gfcIB7kuS&vWkKAD>>1iH`NX z^L?i?!IB_0!rQJvQd0U#@Y*$`;G?h+-7of(SqWb%?If+Ny-~)IW6K{I+`RA&8QQH}!{UhY0?BZcxG0CTIBG$trZgP`+cP0`m0vUmb zp6{&~--1|oyW<$!kp!wk$g$i{WGVL6vGH8rPx^+ zcXwnlH?D7Njaf_S;YLp?Cpt*T?1MkFfD`+L%fhX?!$zv(!$RLs*emxQ=0QG@v(pUWa~++Op%U2_TJ{c+hvJyJ512RBnk(;^PQreqgzDhWLrm>1iNk9}js3c8d2xAumv|_k72+OAzEar!>^%X_>T5B~e%Uvfquj`g($?VxFsnm`lA00%L zcTuc{D5g{tlZhyOI_eMeT*nQ&*tQ;QPuN4_VhG~eEFoHil7~Y+dfa^LUKZ6yIXks* z7?%onebmqvq}>>M8tXR0QMR5-{o`DFg{46C0{o5_gkVk$Wh6)A5V98&d$~z*5c7P# ze^t8EbMYjeAJ~rc`{^szo7=0{-{C^zlzJ>bsPWI+eBZJ(#r!5SRqA}MAUiFkIQ}{O z-qRTKj~Fj#Ts@w}v$9)q8dLl~$B6g1eusVgm!LW#o5}=zKgu6xQVU6(IcNX*El1YG z`dVx|CY{hf)DiFAVQ;XT#3cj-shDV?UJ2n z8Q&X-!I>}qkiB{1aS(5r2`44oK(Q#ThD0pmW6qI4<&SvP=*F%2kBg58G;kvA+nY^}4MHtmv(2XL&8DGq)9G|fJh^V=cN<0j zrn`DCJn^woTfcp5`im}XL?brhW~-a2Hl|)ffnMsZfE5Zp(-04me$9|Nq5$#IB=x&1 zKeI&52C0h^=hsOou?+(IL+iS!nxsdetD8H^W~6FLjjkeZ7=(V;rW4X2oR3U|La}Gw z3r0%Ylp8S+Zo=%?zE~9c;!&l(Tnw!@M4#co!Lg%^8dT>FkrTueWy8TZ00E?ci3M#52XwFypZiX|NdlgFGh{cq91QE zk^JV=HRB7n8jW^(O@z!M#ukpUtF_99|6XI|_O+;d`$yVKErZ>$-r&#o{Xb+SoXr~= z0|e}Cq^4?vI@(O0tqVY#or^#i{f)+OfRLYbXqIJ0lky{5`sjFSRT!xu7iG36hLSn@H!k=<7of<9dr6X+!wY5E>U1U;Px4Ln)-YUqw&1dI+n10>pr z8@Ixu-!W$sE5HNKK2ZEaQx`kOHdv*eS_y7<;cT4K@Nb0B= zB}OqOo;XpRuc@mLBUNV}oHT6sN5s0R^gf0B{GgltN9Z7;Wv#7c2iL(j=c^ zrc8%`Wl^$;2;z8C{rSNiCarvC2u8?EVDyE6l)=RaEf^Z#a2o4Cwe5)Y7e+eNQ-jR|4U_o2>_#$ii#nx}Ey`)I{ zTm9OtEw|cD8w9UGTE=NFKX9B4y$aJeb_Onw72h;rii95Y?k@!mQ*=Pzx_n5(>>G;%C4*utUTaA$NoL2TL0 zz3w`h!rqP@_Lodd_Oj~D@uxd(!?T^frFZMf%sAgEf3maT?07&JEBKMEo5w9g)abV9 z*NRV%mqU0S^k8F*Qp$8jSg3zM<^yY@Q*Cq0v&PJ?G1WSFAF5%JV@An&rLD5zpWS*Q zo#j6Ui4d^cul;sXdf+|asTs(@q|WL5QF6V;iH4R;gZ7AGJ#Bw#fRBTqn*Bq*2V zjTy~IA`fAsY%mS^JW<-`Ck6}dcg%M z`WTV%*Te5VOLZwbL`H-nJ1Z61_2e4Kme=yA`P2?onda0K>1`L}Au^R>ynpAdHO@yO zm16?w4V5~Ip5TAWEL7teyR?Q zNh%KEL>_UtSnG4H zSTMgiyDt;{!NpW55APoU{~(|mHcg%aA1C! z2>MIJQvX18|KM?YJ-6z;4-_+rKH-iIw3Qn)gi*o`Ak6uSbz|ySpy(n8HokXMii89H zPLpN4RC4njTherB`Own9=`0c$rOL-VA|9TQ#0HL@ysK`%7AZ@*X~zBlX#&UVAMLMy ze1%YPiES4$JNWIQvQ-i8HKHp21Keon%nIN~+#$r)ravcdbsYTz44id39+H;SaNoggB5m-f$h1c@rE?kPPb!lR^oKN`AQLHx(9poSMs6}}2qD4_J zZ3XUDCBGDU-sM;YR*lpQak9}w#6sz`$TgO~sXSs_Wz|x`1Wdm( zASr_FyDL~~Y5rr0je^$O*S7gUSCl9YcO3O3=ydy1rK5WaZhHfRp$xBsaFHDfXP+55 zBSb{o0vDTqAAW|hX?Ha1cGT~7RO@zBY4f#cb2DiRj5S(rd_!nzr7HctQuGsrr;ajj z2~X+|eUS~#LSwLRY`;t0rb2dUz?>(a0SnyEX^K8hJ|w(U3tSR5A=I?WzVIsME>~WR z2nDnMbmgz>3Jd~)FPLIzlb*+v1VYOV&wg+|8L^TS^b^(`!o0G%I8dzlb*`_sZB7vb zvt7j_a}W+Uxzjo#-b>FfszIQnh`;jyan0nryBS3rM-W>aHmtS_b2F17>GY2LV-_M< z_+(455R!KQ!E5i@`4$`0*AN#g zL*q^c7zt$Pgll`6v^cgfj}$frup@W zGC%k@5;2(G)kmAbLKW&Y8nM6g%HNJXbv+GrOQ+!+6$H4Axw3pDuM*YzWXj&ScK%$< zPDr$~(uu-@v!(BWxqynCfAzf)@>dt>I0U-(Dtl{E6;dk32TUqqfo+=e;5qPBsCd-1 zL5A==B*5-Gdqk-DcoVf$<4~Bc%3DapyAd2~;y-uGw=#9x_WDFOSZ1+a{#xT-R^+=T z&>f+3u}e8YLxaqFu$jT2g8QS<$|v-7rJ0KuY3hDsy!5rQ0Rg((iaN1z-5YZgIa@b+ z9RDUfo8ZX@!gd0TDwOj5_ZTN3HMmfZ5d(Vk1>0yE8~ADUxcv5cYV9!XGj7NpB@@mz z4yRy9@Upof%`CUfP1r?Tl-1|9uJ$XZ{4}@uy|RmFVv?y$-8*zw|41aGUR4=A`4ExW zV9trNv4gjUyqu0mwtI5;Ic_gJVjXH;cj9vv@*3i(08CPoXi?;~JR|Hke$Dsrfs?Pv zlJHCvLn?~%KAz=QW#$U3>f7jdVL_&wi1UYhyzjQJ-Q40aDq!|+Y3HN=De|)~uS6xg zk*WtVv?rJ5rq`;hrWP>=XbU2ig>lZ4X0e;uyMinZ z0>8i>?%#V|$8?2XuQJm8Q;o^f(~95&FUi(<1|rtM;BQ;#CXeenNb+oa4AcyYoo*yi zpIjdvZvSUiK<6fr(fcNfCXC=yTmqN{s1u{1YDGW&o}_z8SUFG78kl`-=o}!cen2jh z(%+_j@mqFUc@CK@PxEAaZD0D&WBXoJ^AvL>7iF#eWAW=IiG$tQRgd@O1)&&I2gT^M^b07T5jb%p=7 zVaG&>QwjaiLqSWE4ywRv1z5~hJW=eR={J(=g*IGjPRjn5_OldtIh;xIi(m`<8MrNA zAzyrE_gsU!tHZ99e*PU87$5xhcy_&$29YuaP8hrh4%}EC^A0*TUy`fGq$ni!%`6sk zD<)62Ef#MpCHLjkavRv|nt@S1WBnQhAPaLr9xF+QOCy(jASydIf(OZYZU;kn1t{<482QQOU4HF3nV)Lydcqz06|&?h zbhW2+G8b@_KpS@K`Dyl7^Q{>W$Y0_|h>)$#ztQvkSpax7L3Y~JCAbc%`6ic{D_Kkv zAnk5G`?9W0jQFhgOhtPQr1Zt5$BcCz$Pb)Ao4_*&;kBB0etR}b@ESz36I|kpjs6M^ zZd+Tu#ZvCoIN`EfX)<^|y9|U&*E=7+m{W3}U8{v#JB^mn(QwbQpw9^64&Me3|LO#J zAyJjUoSqRD0VAQjZ=lowqTNwa8QV_qQ26T~vx~_JpUjKCqA*d&9`mG^6P1vfapLLP z_w<;do)D9;NTOc6MmwBNYy4SRS%g6Q^YE*kR)NwR|Gsw)^hyXVcQ^?9?;CG>E7@q* z8__UGOZ)CRdDw-gh~2DmZwm&rI+2IAGIt;g{r)iB5)jz{xCHnJ>?rbn6gm4{*1W>R zC@coN1{1}}8IF{BA!Mnq-bCPqpsk5jdbj@MeEyFUd_ym@1Q#?^&6?&`B`O;{&n@)g z;<2#Pm)v)xLM}ybA!npz8`io8q1z!w|Jf%T(Ot!+-O}f?N(=8t8_GWNtvJZOJ#^>2 z9+3;gN`JJTbcLRj<3{qyoZ7bBYJFxLECrQ z+>kTIMW;gAx*ebR7()cEiZN}FR?>v3UewYVV1EFW~G6dk!8 zi}w>>cpQ2sg?|iT2&kUS3ZpY5Bf=So^?Q{X#SccTdQ#gOt1H9!cj9 z4?p{gF=LX$4r1&zN;GgFJuJ&0;SX>#5gtL=J}Tv0*quv#w_d8pFxm)Nz}tMyDh8J` zQ{J`Bwbd)Jo!9@6Z%FFCWB~124xt$097(8|+orMp+BWDr#ix@~FkNoy_ehye=2WD} zsn@s7L3EXCr0(PqAtD*Eo(>&9Uo+uyz)6q_nSN64+uzuxFP)>l>q1k52r$p?C3*&m zBJMr{b*@!?3L^!zS-}eH!p32q2~Ly%0U^6g#q|cb=JfkcS;&})J!387;DtqbhSSg{YaogxfO>W3dONf05cly=t=y%v{ zu8x((in+b4XV1ZCjYH{ljW+Of^;sKx>m@sAzw-n0iF$XgrjMa2myyTMuDF|y<-)E) z1xNd5MQQ*3t`Em@U;Me^!o)(_cYXw1Mrh2ORg)t$zF(0B>phG3cFv7%J!ISH(JR28 z@>l6x#NMXG0)?>EWb|$4n}{csOe=4rOCko;{B)uupNu)YF6T>mWlqz0%jzJ8W>YQ7 z5eD8tj3wXefDyazpd5Io!nBlQdS)SYtBhQ`T}K~+Esl84VyY-aIjW=CZKc^3lD(|V zLs9*xB%4++n?hd-*p?j24f>UFk-ain1ayZ!_E#c(_Gp4y@cy#H_jwdcgx$>arR1hk&PkQg%Vsd^b z3wCcf=k*)ssWrf=tSt48C-*+qHtSnyuaohKy%^sGJzt~%*nefFxdYo22KcLF(y=vf zFojDBylisN^iN)^a!})XY+6(bC2Nwj>$sMLzs~uupjWon%q9zu#cR^H1%2nf`Qcyv zL@^i8wPzGQcamahOdmqA7rggvDG+Bx^qXkSsN$=lYIWEX$cZ|*zScN-Z<^p*k|g@$ zh_wp8sFhmcN)jNCul;HdEKH7LskS}c$c`0*0AeLqNu|>sTXd6OVibQ5itYyG$fH;x z3so)yS#?4`s^HD509yx0$ZIkVg;fAv&<+^Uy)E?bBKP2K(V@%acQ+%U&uwiE>CFl& zStz!2QLYRWSEa2(#K^7)#<(u_V>^5d&t@{0yyczB>AF=3%zb6c%XcYPJc`QrW0+lUE`>K8WRyP@GHsA zShHiY%K(b5{V(t{(^cC{5OmHqka})WeLY$nZ@FOGZaUMJznEbTy!`O&i(u;s<;+Ps z$c`r`bH`V0WK@cSk=T8gr>&`QSG4es(>@~7^e3QE=7&CkHd-m{%nCu*fmm_ol#oO=Sof(PM9fB5*>L+DaALf@~orwUD{5hY2a#4xtYu`9Hek4|G&+}&dNIkllF+4x%k(;d-L*75Wc5|YyH4!?| z;qS1E?#2SZK)c6i{um%2i&Ou<7=Xd&Q@R@wmC2Spr=Jv5hywfl z)E39r#>OufC%=a#!3Rklk7@;03@C~i#4`H@R(^`9htLT;da<=e?wFv-Q5D_{}j{=Tz%AX4{nx?@EWZWn2fxu?`akYB5bu*?!WzAnp}pK|?$MvA=hB{P zhZR5&%ueVkB1Y^0(e`sHVtV!vX@X8!1Np#~#psNE*xWl$NG>gnz{PAm0kG_5t1t<* zM02^lekqd%=3I2AYzrII?CIGMo@6>HGJ@W_&meXh8(joe%S473UT|`?_9O=i!qVRTiz)M!{sM+cg<;hHMQ`Ii+jh&5p#1se&Tf0p zv(B>C6Tz8(2Rnhs)z9W5XD@Ck{<~;(UnRy;A`4UCo8_Ja$VjH2+`P1ZbrDM?S9%E0 zayYh~(SP`F0G=Nb-~2&I`FQ4BpZh5&bGQq}!-!eeA?A;1OS(nu0V;q32*;!<^Cmid z-nx4b>cmj%5I?#fB!zPj(7ZJcbfMkEBuiprWntq$$cCX^|IJJx&n>o5CuC+CL`qeD z+-RIISh{#ow-|j7@)8g)zOYxYgbci5M`)#}v?CovaJI6&{wi+|{)J%jY~oA2oN#-} zITr$+PN4LzdOh?lV;|WTCJ8q{0pTgD{y@+S^60H==d~#aMm3H>Dw+e*9z#|U3lsDD zU2YedOjo^;MJjm1OdS&$^AbM4JD-Kx$P(Rn0dC<9ken?ysJ{z|68ZOD!#ByfOKye{%!uwuZIO#%B9n znZj9mz?qEZgzeh%HLL259>n3|?>{jx5oXgLUl+O%YLA*+WY{V?Q`YO|PIFs692av3 z{DJtmwUOB*fbjdDWTHv?Tm!z14;q0W28`R$(edsLK)Ex)Td%x0Ci&CQu_Y3~noU`-bSt*6BR z9`fxO)g)o#c*LEoQBR&NNbIt-9&|ekmgVt%nsC`XqL?!L;2MEd{5cRP6QdDmRrsZc8ac)>%BrBabUF zODuIO)ZfX!@`7l-(KILGl3JxUT3pdPmmG*TPDH^m *ym(l-g)V!#)fN%rEd|d* z$B$5#9z2nJH%nk*!rXj#N(nYT?oC8ocw!u6WaA#dUjfG`>2(~&seztNzESr?+Y&lf zM_1vSI=I=3>NiG~y?yTV8M2N=|jDhf&V_lu~i)6}|~Z zaePifAQv_~;Z)n4>MaFZu1po6$T<98LsIMzf(M6s4pAse8OY&|hl=~VZ zdpS;DuH;(TO`?8sB5iM?Cv$qFp5H0}Qzh0c73#qJ=lKl|y zquHN!+I86Weg46Hr9tv+S_37E563?go1GuTD8#=39jZ3CvZ(LMOK%aME<7gn zAgS6!n%w8cN?i`NQ0q_8#Y@GrTdddRRn=rwRj$`Y($fFcg>gyIqRx$t>X?3>MqPi{ z3fetMI&_eo8r6q$0S&NzqALa9Adj}c>9lki_vnm2c9_c9`3nm!&X;o>n&GY96K!(X z`Bq-^J#3|i6pn@Yxs-BWcKd;?GIr`y!aMG!q#LvU7?mz}j|118pS8QT{uBI9Kf)6J zFZjy^88`60MUqw8A9CIZ(TASqQ|==aU_NbHXK#XLJSmaP?wEr}7<+ir6`U)0^;Y0P zxzhZ~=0L>Z3%$y#;Tvl+!OR;;%=)vz^dwtUFTuvO*1EHQ3d;OxcU5YB&=;S!Vf#Q| zY2_^`6ZkmDGV!oI1V!XE@Dt#3DELAsx-r%%K#o2Hfy`_54#^;XGAj-eV8gb|Y5xee zLeSj+a%h#^K@yo#4A;u1OxRUE!oAOq7%7aeEsP$)s3Q*xNpG8?eaaue)r#k+86WQj z$rfh2L_!e>D9$JMzY(X~)ptVF>TvvAQX*>^<@q$hyaYzLXn`LOuSeuiEB+oGONb|P zk~h*JHj)bmwgO!;M-ZR`WY>jAoJwV>`^RH@fgUoj%AF7^Ff#bC-+k$cK$W>N$=4SY z1_FzP-C;L2k0u zzhxvLq*~e@GU&FrY>n27hmZ` z#864vtwNm$=%bY4{Cjz(k->`kR?Uf_eW#}?`>z63ak#nm#F(keE7lGwiDH*5f=CVg zy~d{x;?SV$jqiS>-~K4pI4Kx6cbcA``QyWdSW(DA3z_mjO@22;RtJU2J7Q)I#msCH zS4kCa%Vj3PI#d3dn4e70=PQEE+Mj}uYQjue0TNb*$-ND!-y8Mlu{xC zAx-6;R*lhPjr5BlVs`jdrpA?G8F5FQ&U9=f{&L1qy8jIS=&RRBOVIdM<4gkASP zcBqZ2S(TfK9XO+7bqY#{^cHS#Kwt~>eHU z9dFeYdLp3lP}JH89mu((?wxtFUV%j+X)ah@yFczEpc#HFT_P#xf%1a@`I*M z#a<`G()yJc#;m|sndE8y_TKTO3s}L0|66ljn+c`un@G7o^(m>zH__LREUr)LZI_73 zQy1DvO+S44BL@*J!LQn1X;$8mX4=bUI>=^%DUiJ^kX){)2ow=f6sf^G&p8P+ZJ?!mdNxTKV$b>L$WA=O5TLz#7n~wTmT7q$wa6_5C=qC zCBE42uDz@LL#2!;myTIS2yoPVid^<3D_f_L^06isn1Y%H zz=S-JMic5y%Hee7mQpzBYCF2ueOwx2IA4$jZ z=6r@`f+~ITA@#O#7KB5@PT?OxxnbnCyk_O|7$WItjK<6>sr47`mMTRf-wQmlQ&b)} zjC&7<+~Hm%*!OOAYdOiM{5jiWuBgVMFFK#0D>`3S4ql1(qRX;Y-bsJCfG40M{nU(# zE>-TK zf?7ufzu|t@3i3RRUK|fo5crx(!o89D=8<$pa$YF*bKR=@k>LEM4y5r7L0Rir8$u0Q zbW8$M&V|)0xey8+7%I9!+TBe5xr+x5`fw2mh6Zq{`o$>bt7<+?fONXG(hsLZ5TUDP zQQ?jpDWg-fT!$W=)2d4@F{)f!!%6_exq$2E{^iSc>&&54?UU71

gSK9Ht|#$_p;iqD*k znBoXFZBEvXuevpCWOtOLAgoa2s#zuAEZhNR4`jsyG1{NE(!*x7&Z5|n`BucptCMX6 z=$-YN^dNtshUh_J632aT6Xjl5qSiT6)nRC1-&8D+7_Z)@>-A{=Hd(>6;Mn|%Vtp9K zD2`_vs{|jWUzKdX@bo|MFwkl0i-OO(spyIyI(Ez(_`-=0jt#W22Qv^zqgUtd+h8aHNqji^~BkPPP+@Ao=_HHfm*okWIOO7J6~=fENw7>=%bs&-jI3)&oKATSA0#0 zr;P03iDW`>M|sm-9q`ooq`uuQM&bnuFoK%jka`QwD*$?^iBzgE zOD{9^l9uq2mOEoS=>(pF@uxM-*N2J^!32x%tpjqVn~;6M>h66x6MR*YmmhoTB#nI% zXO-PZz*<)r$iJav=35Zfkt&y$CPJBQAiwI)ndt#xw>#2cTBW#&MDHWDXG>&~4*M^= zq7#gfTIm#!jU6<<0xR;7#weE_x8Do%e{El8j!pjw{#0#L`T6xwC2RzrCIJx0$dUi1 zTWwmUN$c2XWIYB(`R>*YDpEv}woPkj5;E((S!^FkYuihj`At&gn0L`r9CW^xF5Sft z&TB%2p4__b_OX#5tWr@MzCbt!$g;XC&Ovy+);PYh%*``rM)m6(8GL}mSmzwhfG+wc*4=z?RIJhM zrmw76QGgxO7s8SVW=am>>XD{Yh2m@*PDEP|6Jmx^T0L@S?wqF+^(y!d^7DI$yp@9| z?+?>Hs1*DHy5Nq-tyLsLdYyhx{55EXyoR?xRV{!tVd~@(yFEfX??@*WlsU8`J51Xj zcD>H`W=uVjdxonxBK!6mA5-Ggup`0ydtNJwXVF9F#NS*awn}Bu-{wj+X#=4{_Zbj{ zHC^HFv;_c_dh&`N&(YgR(Mx2q_i#{#JsiL3+^i)-fDz9Bwei&R(!o~LnuU7_O>gRn zD6){jvRLXd6Lbz>vPV7})w07k1K8hQPblFzH0(4c#Kyh}+a<+4hx~NT7B!PoH;`4n zC!<^(1hskTqzsh4#`5Umy8?-(`f`DaoenL+#6!7EIBkgL&WUa7KY)VPY>8W07Z3c? zrMEi}oWFRQ($XoYbOl2B(Dc8l)B>1F>DipXc6gvqcjTh6%2SA|D;ng*=F=;W7+4N` z(=*u}+q&Rg6#hGKOWP`V9auYiAWLz#k=#lNX?y$z8P=VY)@pxqpbu})>w4NN{OH!{ z{NmgB#i;j-Z?+hB8H$LVob#h}uG~jEh0?a1p-Q?DQ3fLv90A85I!jmmX6870Wwd&q zuBMTKHeP14m4x^Apc6r?8ySo}1o(fFrd?F3)hQOi3XxX=taPiKPIJttw9JxzP-c^m z-Yz4bHd2-j*`>^s-DQ?#RC8uWG +3Lh?ssY!O!*q}1(jfi2HlqiDE$Bh>CSB_I2 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�YVB+V47hi`8QwW= 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≪OfNZrGn@C%#AVxMl7fs>4rX_?4 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

o;MQ3 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 literal 0 HcmV?d00001 diff --git a/HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png b/HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png new file mode 100644 index 0000000000000000000000000000000000000000..8c55c559cff93e7d768bebe84529527e7f4fcd14 GIT binary patch literal 254340 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 OxmnMzENK=$(ndrNy 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 b-3uD%wlFx?AJqjF1bisSs7lvKnuh#8zbu;j literal 0 HcmV?d00001 diff --git a/HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png b/HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png new file mode 100644 index 0000000000000000000000000000000000000000..dae14da11c0bfb9ccc4e8c988cd488f4d418122e GIT binary patch literal 672574 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 z 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℞m}cX_4a3^z}#qWr-F~=Ac}h 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

dD*zJ5KjxSPSqm16!yb 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
DkQlL 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

;iN*84M9-SfN2N0$nol5Eb| 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
17Dwo-fSs9 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 z

Uaxumje=4a1w3%Pm71zycV;Cw{G3pOBiK~5|PbzJSuKwLWTGdufSs;uO(XygI zNK)I1=b)!cg&9mP1!qfo_~JqjY#u7T&B0ht?}2mKf2|j9b4?b-=Vy_C4}s2m3W7-( zVNTrc^}wny&nq5DAamFJXflzUoDEV)z9`&A6Fh2?(jE>drD z1XWhZMN!n1;Qs)gO-#l-q1q12eeORGaZnC&dC#>uuw0B}`kE*OmG`@O51lx>;F-M4W(j8^^i{BaUp*RS0in#)-P z<(v_o^RECD(G zm6LLqnfA%J5~CY``t_q{s-?Pwk_BKpN5((Kwqm}5dvaq! zyz{tKS*NN4o6@xD?ez#+MJkzWW2Zybx(#~xL9KOvd6C->pm|K3tPu660q(^40s%7w1`-pd^XpU z8SYL2;6%UF{{Ww@Xq^T&gC0tl$3c!NOKpDM>NAMiGQ8od8(h{UmLZqG2jx{5#TT1; zu@YT)O4d?Jp^35l2aNqXRvqVr?jZ%Cm1I$#9Bs#-@BJ$EpNVebVVOL|^pocOdez&l zL8pybh6x$M@H14UHPoxv&PfZVa53voLKlKD+Ze31y9I}^tCsTlfP>U`s(K2=#M(&t zh{t-Ai6v1VEV=9J_|;V-Ib|d2X-kCro7D$hr;3JJHZ6SlB9R1zlmYVRr&`9ok9Fba zYXCSrR<50Pg(Nv(c*!-Ls9wZw7)ZN@0sSrl(K>_8LT=@9uH;axk>hKH?VQwxc~#CF ztABW88fvs^a}>G%0AfYK{0%)yNQZM2Bd&R?xeXU>FRmvI9Fv(w3Hh*3=hm`rP<^gk z9P{g18gW&cLPp>h@vO_xqVi9hXeT%{EyZEz#~2)Aimj|n#^rO*UVkcb5$lofTNb)B zS1Jn>mCq+U{{Z@_-rI)9I~3SB!3M0~w3AyvsD;Y%KozYwhhsVFnEvl-t!a60X_#Cy zvYuQ4&-hWyx&emF@hIG-Msb2F{i_CtBbMrOT?9tT@jw$HImXxH`PL4(GT7f3?UiCc zyx?$8;nIZpoq%|3V>lkCwM}WYoNsag!#t$jaMc-Lqkf&JydQC$2RloH2jBN+py=UP_4lnO|f13fwXFl&~2 z^*d?$8*8nce8@oL?o<6LDfL@$-x{7bI{D$L&~Cwb&mtFnsR$FzcZ2b#mZm44G0WBff&J5XA@Bt`m}~`(N$wANH3D&T0VMwbg(}@C2Q9Sr-QKE}82iA3#wn-{;D0(U$74Zf z00X<9r7Fs~JD7u>y$xsWY;llBY}9P>DLM7@r_EqBCw92ljVG88-~w|{HMmeg87Hu; z>26tYbJwN?FWVSkZswmd9gC7cryEY+L7HKKm(ZW@5sIw$#6n9BeYvKlq(K`-J-ShN zm16a+qg-4^8>uMA2h*ipeHJB=kz@+vs&C|e2D9z;GjAfu6a$=qY5Jb1m!4dk0!juM zvz-1FF89%aVf0sDn0(%xb*e1N7^^EI4hS_ISF*r&$0H%=aB;;)cc@8mDwZLRG4l@9 zTJ;(v$3hPo#VFCu!f#g2PI(!{R$Jp4`=jet;MBlSaJW5a)44+1Fqh`rE0FJl_WP`Q<3`9zqHhKRXHtXS$nB-SV)n2-PmqVvTYi0@C#o|ZL!)dDXOe8;I{ zpUR>)Dt+pRIqGWNwx2c34>Br<(BPIh?V22t++3~fJI&8;!kipcQ2zBby{y->2;(U@*i~bItCl@SAFu0K zTD6*4s(CHBTeI=_)VJD|+T^5QIOid9N2hP+SgiMkLo=CJ=Q+oGRx!VEN-FO{OPedD ziUyF)lt9RaHLmr}^*b30&tYimiP8FE`=p_rI~ z$pB}La%!v0*xY2#wrf1h5FNuGtwSZ!vHI~;jI`)kI+W`<^5tNE*)_3ks4y8W&5@D- z$LCy=PRS`BcbxOaYWv)=MaknGDX~2@H0Hc%8zr-!e$|hyOdQ4sAZ5L&@xwIiaHIp& zk;P2f0JS|*#2v0cc(={7i#?Cgb4mddLQh9@60A%}`u6EYI;pSF11&^TWO-l{Rj;n?K z^+rG~xSyERayqkP91f@aYd&)M3$t8A4&-HSoee_w1+oXrgU;TDm{)iJWQ=_|#YRTN zB%ZyLU=OV&A{wzgH&R0(^4PCDB(tAWCF7+S8Kfcwd@O2A$}5}dCBeTSd(6lw7Dc_+owvB=H;g)qu~!m9V&^pB;@_$-1V-A#gvVW zHuG_ivCkD>QoP-j9FlkyK`uVZ;2iCIf=5w`on8xp@<=c_IXGka)hIjNfJHGU(EIkS zq9nWdQz3d5u6}YMQaC5u`Q%o{pW+E^;#71;MaBj&PvcWG*1@>RJUwv|7DnIx$>5q> zD5bY%S)(fFpgk*~hgY|n4dORh0M6FI8T$VK^{buLuN=&WJPhZxW~AQa?oalHjP2?P z#xqVwz{;PNv!c1(%N`9_452fhpzdfc?HaZ(G8QT@3g;YS{PnE6>!q6Uw}OmDJ*vf% zGsqN36`Q#@D&rr{v7fUx=Kbmh7}071vZ0`j=q%c zC#k6pr8`Nm%+90{hB@OEg>g16pN_5GtwSSkTyjrA>r=jhZX_;ThV&eY6G(d$mQxl0 zBd2PwtWFL3lD{_5{ObIgB+#)6M56=S6{BfyZ#pUoQdU2C8`tSo%%biza?06Y%yzf; zx#qSs{hwr3Om#db9sMg#9!i?=KZe?f%I#z@U)4ZlTRhSr_PDwv^xi&PW}N zXxh0&7(u(K<0Rs-pk|H39I($(*0t7En~ZK=+3G8jXKgj1b}%F-EEJQ`#tlI{f+9xL zZ1U5K1b2GNY}L!N$yubN23T<7Hy#kjmqfORE!{OUin9AmgO*0tr7(S{O*=L2xY zMK*mV-tjUK91-`|9sASg?mL{Po_Xgv{3!cD9A_U|*`LD^f%3B_usIcc|~lGm< zI!dTVJb-v3@u_o2W&wugB7b(@hc#l#2E5)JGP(i59P?d6+D6|n;2&y4wenwb`f@uO zk7_%d^XSf0lyUy)7^s>Sw;N>O`}8%_8Eslq8#*ic9uMLw8|^(Vp=9BEhhEz<4~h6t!Gqn65cievK*LG>P@k~zlU2;3_|>{#>Jd*F5CQj3=yt7GVK zOfI!!cYO#^QIRctw{_r6BQgVGu zvM-%pRmLXWk6-@1N}AJwhDAQ7*0H2LM?yaeiJXI+{Ya_i9jC&poE^bpFGlswfa&SLRznyuenXg>wcYkV#@0$b%kZ#6%{cE<;{v@^Z`z|eG z+7tkb&Pc(}KjeGV$`xU=x#+1?M_m%jGBTMQg5Y;PpNII=x{2%5Ib3dx?HWS2MQt?wsml4Y z@_PQ98t5a6DEB<^g2%F`9jcAKtsSso5^Zz+-}BO-mr@gf<~SMq%A@=$9Hl37E^8|z zde-teByW{beHX9eRqmuKBWxoL(6&0_vn{W&lz?S%!97R${*^q_#S9oEv0;O|*Z%<5 zQ)@D#G_`D!Y3>~zqhw|Sj1H$Bzn|$aK>T_FOEC#R=Xq#}x!RLM*L@R5dDf-bw766~2c<_gxZYwF zV7TY$?^S6BJXxzJhl^#I@TZ{ZRV30D4?qP={{RUS$pFCxhXj$xs)p&A$tOAM>sFk) zoYUpF+nW?<&Q!O#;}q>2+ew9B5@($Z_0f z)~wvh&oYurDS=B80lS<`fL(LQR4+i zQhR@ebGQ0raK3Hj^Az$_^&gFC7k!N&*2QaUmr#CVwDkbuq}*6#oRCIHT7o#TP6z|g znsQppD)I7Lw|jCh#m}JaPnE8s=Z@AV zFP;xUQ4XiysWl0l=OFXxOf&A<8>gpZQzX$*k}f+bSi#E>F@`l9jB}DgZR>;A=}~Un zxC0{{hvQH?6$F+5vFJaoN+s@0jmIY+g>Ptf)>8cU8_o~P58dO|xt}`&-`2Ktmn~`E zJCF3OCiFR^j^;Z!-Vo81X#W7%ITaL$iU3i#`wUh#n8Zv_XAHeFTMT@)&IU-p!LBy7 zGiNvA5U|~mf<95lPHP<9Wsf=MrD*t_-c3vlidgUFK&j=j3p6HOsBZWjQSJm6>M>6)Q; zenOq69Y?)7=0g-r`NlEMD+=o8c27)otd^p&&qH>|;Hwe-dy3Ip*OmfUE_-bN9P!?< zJgFl;I*>YK^!)0?Yy@NiNp9o4cNWqtUq}ELCwA|^)nt<=uW!%Vru!L}1>0%s#YEQ9 z1M;Ti9Gnm7MZsHQ<4j*0Ngx0>b`@ePo&nBkJ9}4_+(^R_5yzpU$SPNZl6w#Fsgk)S zy@k6+IJs<~`uJPO3SD-w~rB=_Tw#8sHC$p8_%^r@1tw=a2xiNPFot5Iq*+YH4kAv|%= zkD;vi<=xQZ>*-P~go5XV`c`)nH7_sZp4l159Akls=LE_*9V*T3*=Us)JG)}B{$*{d zcX3x0rh`b?x0se2cs!cYw$-j}@D;KLAU`$F+CJGpZap$O){96RV~q$+!YE0tT840g6pTDRtH z$tR+o)rhWC`eX8?71(JV4W6-cZ=I8{9WYKuurw zS3ItcMA7?F*seyJAsiF^mE#+I0C819MHKkAy7M>m2XKZ_sAQkKgzcn*$5!ugT+L&&=!UQ$~uhwDNLoa z+dhJgQqim*astseLQg~KRD{6w>DM$bCRuNJUUE;+(|o}H0DF(G6$pIuoQi7_pdH+L z14Y>MCMvk&r=>>G9P!Y0sCNd>&9wE+FPzFS&Aa`eXu4w<@v-M=6p;SukC+Kvy@qL8 zatPP-8PGQ#_WIQ7bf)K0<>bE%;ND=FvS4wKWY|yE>WVo?B*b zJOt_h$Q_Ob4{!6*u4vacQ=OU23URrHNy+@Ho3%-=h(&$Dahwd`S65{^*juDyp!Mrm zP4cT12}*A3L~UDzwj0?(x2s6V2?WQ21dBDaiKJx6&*vZH^6#IF_yhXaO=lp9_*_7$Uqegd4Hs8!= z-0l1$fDLo=>Qmgw$?9={d8*gfZ*?gwdGyUwX}WSi9<|X0)tpnd$h;@ZV>r)V^sL|< z6P$PAv&5v4wC6QAibwt&4tmy&kdU%Ugz^FURZEE!5OP88YWTIzGsyQGR96=1B9uJl zl95itx?HH%_|8cup0#F41_!58nxkl+WQZX-J#*_xHOS5fK~HlRV%s({K?Hh=rEK|@ zK0!N$Rk^(V*}=v#ahk1Xafwrsc^p-A5!H!69e%jsrgo#2)jze$<)7H6=^35}p85sZ{!lSr?VIwhc zt<(@|*DdueQ*zlFcQ+3x9%QAv@Oo7VrBoT=y}RO(48?wV3vT!0{{XL0d0SHfmxGK} z%1fYoHitdHSyoj6hoP&H-9az~n`37MK=W|Z0ZnzB#4 zoq`6E|>B*+sN>zf7oDMqjDU(d0wli)R#shFTteo52zD`{PeYwFTFd5>a z0FX{W&uU}NyFdqV>r6>7dez0<64i@QM{iDehMXoo6+~6?u7yyc~Z!sK?} zhI888+ry}mq!lQ++y`Q5v0p(b3$>B+jDeDWT7$#{3;gxU4!t|oC?x`M@{$gCA4=+v z!iu%cDH|?RfI%3~THVodwmD_S<|hE>J+t~(IFFFr3;+q-Kd<9m9-At~ro?uRd1e(MM>gomKL3QxUP2E>Edw6#d+id)KjLCLrUuA zyC}gVsRPv2HJxoIW=O-ME<&Ev=_Y52BJGj~-aO|uopSh-JOW2J=QXXtBX-{I3Ck95 zERL(!tv2Fyh`J!@@}Aik^sH#-+E-}fBffJ}Jo)Dt!RUILE-q0L@zIXQWf>!n>sMmb zUSw^+XK2X-2Q`Yt!-d)b+j zbFo9%XQe>avPMA(xk1mT=}zL&mt>q6*OQELYIv?dBd&j1OIuy`>ocxYkC&h4LO{ck zIrRdjO5~b0tVENNWmxC2~ApH8=aXR zq;#y?eNIU5xmN?JZa$pU5KQr|3z7iGUJYl7GINac)2&-&Mmn9HuBMk!4>Sy~1RQcc zwSL*&E>XT*{nq4H4-39{I630CG~3w`+c_iJxu+KPI^!kO>k{NL;eZFY^`ti_hYU^+ z>z#y9{F6DxOI1S#IHFApwoOIpVaQ6o}*! z532E1Wp-C@F$9b1I@QJMbIoW~^LJ+}pZ16N)K0^HR?ngJsf?;v>`({yO+g@1Il`W% zwYkr0j@lmsEyr47OXVxC-Urs2OJjq_O!la^9oRV;8TK_-Cf&!W3_S;4DmNpy9)_m# zzCd~t!KkHmB;(h;3=vl8$~tER`_UZb$KJ*|RClG=s0vsN!uB%#3K1oxa#N$7OW?ntUnQ%5p-b)Oxa6M{yn;znwEXOKHued7$ zRQgquiS-!+^u1 zrVc8*>bDk-M4?*)9FD&Aj})wjmMfk!OL27XjnXrKdz_kHrC8Y->=y`9Xh>Gza0TrM*4r%O*(afl=J3Yz@HvG|_1ffyUAZ&pD|Z0Fp6-RMnazfynFDoGw!s zCz>0vT%@i}K2c2bo1+YmLr7Uz5(qUBd;%LkjZMao^81c)!0k;f^576py+rMt@IMNP zCskGI6l1S7SZcy!g*hLkaE*BR0KXo9)r)DR4VBN= zwO6wz+MT;!0UjB@0aPc|e6>4RoSgnOh_XDKw1oS1sXju-l09+Wg%LW4w%VfwEsjSZ zRd4NfnmlCf>G)JE@q>-o$E7mM$Z44{3lo(D@mnO3jHcQqS!I~~fS%c_kmkWjY!}vJl=V0^74K7rsde@)U^yL2qh41>7Mk~c+}^90CgwnR2}yo`1P%nTOz~exX$1?Bx8zojKwBX+<%2te~=PJMMm@ads#XG zlUHpDv9$M?APzI>RHe9P;0$~ERB_x#a+w%U?*e(LMis$2`8_H2 ztrXloclH>oAr8=S!0Iv5sSzh)oR;boa!Y@+(yKfyI*<=wI#tOoVu?Od80YY+H@ETi z1n2ARP3%f~h{1rtNT8zLl52))YQc`DY&CBK=PhO zz&Zjc!YLvraNu_biql9#x68rkbBt6|$h%%V4c(4wWUO2W%S1(xw}noE!?0;^2VWx&Hub70%wI*u~eT z2T&N`1OxfidpU6`;NYL)1KOk3NjI4zZ^%EbM__kOwbdPwT@7O>0AmHQjz?=;L4b_~_5sh%pTXkb$k-{)4PpGYl1~Igd z2#yAwoEfx4|?);59+VO3d%9b$LINmys z@vCbja>w#IGM-A4{W1P=PT{GV*0NfUFpQ>oIIRS-!l~id{{Rr=Ra=XKP~m<;Ib7$O zt7~xa5K+qH522uMV__|J{qSF?3V*_?d6C*&i2@RbAgMk70MGNMzMyA>jjAz^n;1Fo zS+`P>LC!hpo(&fgSKQf-@*A=_C_N-$$LB<+$>B*S*yLicl1!+^N$39n)mm}7`7z_1 zFVKoE4OoFL8aWS^N-peU9e%Z?2B)2<$Qk*|LiTo&z|m6jsd2}DPxS2 zfsQHKh8E@5u5tXTva=`FwNFGl8c{-yhiisDp#K0*%8#?`IX!*&HJFY;8*{i5z&whz z1?20rWlCqRJ5vi-W!r6)RY3zCGsvh_@JSft_Wf!}3abWSI&f;MHdyuRnnOkFc>d7j zh2y5t%}eASMt=d!+J622NbS54!dtEBkp+^#X_LrNY6b- zN_G6{JZM!)4D`=@)i#`*4w#`1#)MD?RU8x0{{Z!>Q>TL5C(Ln-fAy+_S1by$pO|zt zq?)JAhF#ze2pFWz==*O0#)NRZf1VrDm<;s}QmfG0(T5rFodKW;rMM z*F5z`=`>z>h{s>ctw7UduzC?tiJNW%XFZKQCEdGnjC)igDIt@pNV!G9?nP8$RE(2> z{pz&EOqfxOd(~Nv2?PvhHLcETSZf^M42*TA77C{)J*mxtqzq%$tFy2m4u`QFY21d1 zQblCr-OKJ9Vu)eQDSaG8Jrk9A>g5 zXxdp8FhUk3K_FmNEA;{XWUA0CH)!Hw+@$7=R9X@M$0BZaeh#s`Igu5;OVI zzNI2Xy9~QeYIvJ@>sg8zw|sTtrH*0;sQl{n9gE!VRTC8*Ni>sOf}naH z)fXuu!pbxJjaJm(n47;nX{$d>9xAo#vxF+Vbs7C>@ytTyiS{6M zsx0Il;PM4STLgYQ%~jDl*y$O?{fD>mBPT&tk@8z&>D z)}m&@^&HYZK;YnGrB{&g{uMV1SlU)*H~^FFR^YOB+z$*j5cLW{KkQ|(bL%#tx;#FO0eYOcs})YO`IVmJru zQ8n^Qk(>{D$&yAc*~#|JMDuMtwOS)*v8eZvDLY0^YP#wT=j03!at&u2kfdXetwxt1 z&7Qo~i&L!oY?8Kj5~tMhPWwR^CCNUx>r_R+U@^cRl<_YE9WjxLi9Nn%Q#hnk!0a!QQ5l}>u%svTikR|sz%Jprm0I&r&l%OPBx zoboD^o&DiBq`lNj2Bm1^<{+3I{c6OTvOA6gVD;%$ZFKly%CRok$F&B)J8tL)OqzF# zC8;9E+K@SHH?9Gwq`XN^GlD&7jcO2baz}Gj=C|CLKbXZdkvz>7MZ)%AO-wH&+skfN z2RS`CtR~$N`M)}qSQQ5(vFqbdxAm3@(&pt3aNJ{{fBTQ6UHi7<8lt>!sER- z+arOv9D4L3sp>*$GQG5za4P&4l0d;w_%#21QH~Xd-WenLQ{2Tfosuh|`=s~& zwF(;Dk-1LoTIN9`HXEP|%|&h`is=K4b?2z*S4bPMTVcWBx@YmGhYzzLE2+oIF_Bu_ zW2Alt2s!oZRHl%L+o-_@j^X;3}|JAoVIUkLyl(Op=p; zLpQHKmu}UaYRAq8cFv%ho!LO@81>B;6IzvB{{VfA@w@S)$Z`n_mchUVtD(R?U@M-ZrC<9#$jfAI?~rJcA2SOsIN))>KE!pR z_cGI#jEV$0@xZ|x{DwBd^#EbO&x=TXYi}SP%Y4cIt*3EWw%|bq&INGlg~MlOWPSrOq+8QZ7B_^~j-k6(zbAT1ED-- zqD!d^lJURNSR%aY>#U;f1q~QL!sP_^Mc+F^@gGiBEpQkxJYFvkq0DkGn=k*m> zwgx)W;A6kI=bB+|qptq&$3aXxcH|O$sw>&>_#NsP=c3?~EIaPTIlsGAZJdp0F-Ewn^wj)6iZU%ZB zkI(s2CiXF7IFoAz9dbGvupAa1xa(40U_+6#^T8czv~yzsbq6&ji&Evbe8KXcQU~*? zZOd;Xp&hCVX>i~Jj(EVS(o`-(U>x5eb*$K*3)B_Q zTC|rSBL`jJ42&FCJ@2{IW{~eY?+_2rijoVZY=XfU_HOlG%|`%dJ^8>HsyFIZL6Q#~ zjM2)v8OvQ6tuEllj=k!;$Z`oJW7e{v)Sey{$piRLH9UHNxRYs6rMcs!J2Z?X9>vV= zz{v;cQBJ;A2s?-Jq$HjOKD5bYBw%8Tn6;?)m`s@Ddz!B%GIo*Asi8=4I2q}R8CEb= zhEHr$+>M5A+84K|CXt&Qp5C z4oyQX!4ohU=9&uL>s`r;>H;smN_Z>wwxk(71l5%(+ zl_YYsc-_dyQC0rjra&2R0R98PsRWVBj4}*%Clz)>u{oHjIX|sMcW_JxX~Pad6<$e5 zY!j9pFnZK7%pN8OkUhDq_GKhUZ`cL-0U75U8gzG&5)_@EQJT(?zFtV@x#F5!5(gvt zR+lf7`U}F}4)n{NH%zyl1h_ZwB$CK2*`zz#+vX3rY}mJv-~d4=+p-7)nDK9gv`g47 zUdm~$^*cQSP1K~fOLR+fy57_{$T{A|Uof^gB!ka2$!Wh4FXPZgl_XI}vBuFyIF@MS zRUv@kBvo<)Fa_0)4&S?gD9_?;R#&-^?y)V+lv;d^u}0`4Sk^S@#so2pj!xcBCq2`x zMa4x&`u_ljIO9s9mE4Y=@8Qptt$3qPwU+AcO($B9Nr54VG?RvsWX>`^Z`}+GfzMji zli`+<)9EsQY0Va$cNV5)b$BkG7PGYzlbB>>A-4gyAdDYSYmdA5!QzRePd55Ak#1tT zd0@4M8DyF~l#$&K85nMFnTaPSIjE-io2%Y=DAzFCM*`g>P}|wV6i6;25l$5m02|O_ zryWKQH5~Y4-@E-^*S3b7mGsy8x2MeN?EW2Tn#sq&75YROpE5lY_X`a(qn?}B!8XI-;CQ~@oSc!nf-o_MwxXBAzxCYP*;H@h+xqNvw;m3L z+UHe>UCPU6pxNr-ijSG5irLD20k|VS?24=6t9xr-5BOf@+af!=NhDzLpm4%>M$0G# z##fEmAYgW^*7%vPPog%M_fZ>1wOc1)X$YC%Ql(>QLT_bViGWz+Xaf}vvE!{vUDGY} x>$7BSZI^5-4xMicMmH89GDa8zNhh93=DFuOHfk&I^Yt`T>fJW~0IPZ*|Jex#1l|Au literal 0 HcmV?d00001 diff --git a/HMCL/launch4j.xml b/HMCL/launch4j.xml new file mode 100644 index 000000000..b78c4bf25 --- /dev/null +++ b/HMCL/launch4j.xml @@ -0,0 +1,41 @@ + + false + gui + F:\Documents\NetBeansProjects\HMCL\HMCL\build\libs\HMCL-2.1.3.jar + F:\Documents\NetBeansProjects\HMCL\HMCL\build\libs\HMCL-2.1.3-Launch4j.exe + + + + normal + http://java.com/download + + false + + F:\Documents\NetBeansProjects\HMCL\HMCL\icon.ico + + + false + 1.6.0 + + preferJre + + + 2.1.3.0 + 2.1.3.0 + Hello Minecraft! Launcher + Copyright(c) 2013~2014 huangyuhui + 2.1.3.0 + 2.1.3.0 + Hello Minecraft! Launcher + + Hello Minecraft! Launcher + HMCL-2.1.3.exe + + + ʱִ + δҵJava + ˳ҪJava + δҵJava + Ѵһʵ + + \ No newline at end of file diff --git a/HMCL/proguard.pro b/HMCL/proguard.pro new file mode 100644 index 000000000..cda8d2319 --- /dev/null +++ b/HMCL/proguard.pro @@ -0,0 +1,77 @@ +-libraryjars D:\Develop\Java\jdk1.6.0_45\jre\lib\rt.jar +-libraryjars D:\Develop\Java\jdk1.6.0_45\jre\lib\jce.jar +-libraryjars D:\Develop\Java\jdk1.6.0_45\jre\lib\jsse.jar + +-dontoptimize +-dontshrink +-dontwarn java.lang.invoke.* + +-overloadaggressively +-repackageclasses 'org.jackhuang.hellominecraft.launcher' +-allowaccessmodification + +-renamesourcefileattribute SourceFile + +-keepattributes *Annotation*,SourceFile,LineNumberTable,Signature + +-keep class com.** { *; } +-keep class org.jackhuang.hellominecraft.lookandfeel.* { *; } +-keep class org.jackhuang.hellominecraft.lookandfeel.painters.* { *; } +-keep class org.jackhuang.hellominecraft.lookandfeel.ui.* { *; } + +-keepclassmembers class org.jackhuang.mojang.authlib.Agent { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.UserType { *; } + +-keepclassmembers class org.jackhuang.mojang.authlib.properties.Property { *; } + +-keepclassmembers class org.jackhuang.mojang.authlib.minecraft.MinecraftProfileTexture$Type { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.minecraft.MinecraftProfileTexture { *; } + +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.request.AuthenticationRequest { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.request.InvalidateRequest { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.request.JoinMinecraftServerRequest { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.request.RefreshRequest { *; } + +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.AuthenticationResponse { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.HasJoinedMinecraftServerResponse { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.MinecraftProfilePropertiesResponse { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.MinecraftTexturesPayload { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.ProfileSearchResultsResponse { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.RefreshResponse { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.Response { *; } +-keepclassmembers class org.jackhuang.mojang.authlib.yggdrasil.response.User { *; } + +-keep class org.jackhuang.hellominecraft.launcher.Main { public static void main(java.lang.String[]); } +-keep class org.jackhuang.hellominecraft.launcher.Launcher { public static void main(java.lang.String[]); } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.settings.Profile { private ; public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.settings.Config { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.assets.AssetsObject { ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.assets.AssetsIndex { ; } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.version.IMinecraftLibrary { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.version.Natives { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.version.OS { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.version.Rules { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.forge.InstallProfile { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.forge.Install { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla.MinecraftForgeVersionRoot { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla.MinecraftForgeVersion { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl.ForgeVersion { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl.Downloads { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.optifine.OptiFineVersion { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersionsRoot { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderMCVersions { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersion { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersionsMeta { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.version.MinecraftRemoteLatestVersion { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.MinecraftRemoteVersion { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.MinecraftRemoteVersions { public ; } diff --git a/HMCL/src/main/icon.icns b/HMCL/src/main/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..dc329d24ba3c08a97dcfe1883bb97ea43bba26f3 GIT binary patch literal 114786 zcmce+byr=#(>{D~hl9IAad&rjhvM!o#oZl>7b()>Ufdm8+#L???i}FPe(v@C<9P#5 z_FBnIva(1+F4*)>G+nTfT0w8!X z|F%2;fVPdT&A)LRXPf`V5#Vhd{_%*a4*&7c@c)}1_5np@YDOFN0ml|r+|pbU%^dm> zM8@jbGtp9C1sK*8A+(>zfES5_H^QdbL!KvUV6MI4C~ zhf^4rL_z@t!^4jkJ5U#nT$l>LWNeItCS+;GN1po!6HiGAT1bo)4Lib{9Vhq~F21V@ zBCV1d2AX=dCyq-9DXxwhs)&^c+y{p?A8lSFE~ZWZ?k6fh=m#8%Z8RmJsxVU22b2^w z8h6;oKb)FcRDW@@7`X)dxtcTl!^y1e6B1yr?;aJQ$xilxCGC{urDkt!V*=%zPM8?9~DIti%9H2}wjGAw^wAtnlCH zXd-s{#|u2ZtB~iJLtEDz6>} zDeiwb)vbtdc05og@cr+4vP9!=Was(Vg6ckc2SQPqCbm;g1AR-zLDl#51ER3udEGF3NcD_aLk0Du=gLTk%;O%qEv##y}tM}$mQCMtHQR!c*_jgX*v7*_72Jg9i66fB3fe4h0U4)+B|DZJToNwW2dBYx1V3(!ZACq~$Bc&Nj{~K+RVk zD>J41nZRJ~!+xAR1rf)>|2a>&cvpU)?D36TpNXMR>2<;;4#0mxRvVwUZ&twSfqQ+j zZGm0CCAym9hK8(!%nZoI@SYi=5mF`>K}ejYKgF(w?}QcXT()9qF*Sz58~qB>aw2S} zuu5sHPBnF#0iGV2fNO{#WRo*Lk>c_?FST#dB}y9whr<5G&G^lInH=0}8AKXXrgnl(zvyX0w& z(O7~Te5w8PYuWrLrEFBgcH4BjPd=a`+c?Kn`yhPdPvht8aY)J}i=NVnyJ`y$bRF;K&cp9DfR` zw(_+`UtNaj$j4nxF4&ko^MJ+kSr+N!XE}f+S~HwiH)}5Ll{u1>q*TUXGFvE@7bsE9 zXHOgKlI9kqW*-fY82Dq#Mxio`;jrPum$W+)9^Zi5#Z;vBLtv!VrDv>OS43k40!(Vw zc*aU-jagF1v;6H0UZIb_4;2Q{&5<9QelCFa{zbZ!dC&D)<|=<7x7|+uq&-?0TE95$8Ccc&4PUa7mbGUZ@)d<{WNeVxIvJx4y(lONMHG#)1!HEbU2(y-=Gc%=u9-de%epX%JB!^?M+rCtWP`x&v`{Q0povN4x& zDuW|C9FQ&folizjpXz=>-M@duWaa1Ic4Snf9_84{<9F4TxCSxfsg_7@3w*9BCF>P03iLPkuV_uIk|WMfG9vt zQcTku;;aiUD^JI#tmCJ>ui8?XLa|y)Y^4REIpH@Pahh-{(SA9yH9%r|5gxHYPb%S`?@dO|aYZvFGiqx_>Yp=@WeK6b`UTe+A4? zShhU?Q|Qu{m5qj0Ktw?BGB>g2^>LncifL>#&%i1MFq&Tz;BVuq%yFVa9x9-vWwb#Q zE3Y-V8v&~fNWeu#^zu&DS4y4LhULwLJhoQ_s4);I(T6m=5?1-56A2R#V8 zoi3vd43vuFy^Q{>_IpRAb2T|j!rU@q{O=o#0@*xC_YAl!B+QIHDztd-)WD$6n=1a} z4#Fyw5Ze8AqbFH;#+;4*R^^xznbgnj#SWZ zjkA+=sYt^nD8Jxd&53@ff{hH+@lu(1J08^~L+u9!9#K(Ig05m5J1z-rZFUBbd}02| z1IhPwcALfCF2_(^?e1})@G8A{ZY-L4hsuEi8TV`|Qh*vJMP}iHOo1;%z z4K0#HG;}%2H+)o>Xyoi!*3rk1J`gJ}uRkeIfXnN}#^dnCCnF=5|Ac9xzqq`ttEOXk zT@f1E{}`4|_zWe2S%Gtn&kscOf!m@3YqJvZPZ=Xu6XOnquH1v#xe`nVPO?FV&IUxW z_P^_HUDt-*uM#>?!#jA0M1gC`MK0(v zS9#jpmFceuI~1q06Av)-k@WuosqhJ55KZsHVDC^k@cnLks5|MBpS6%=aL6~mM-do& z_zcU%#kHWRL=SEZDeT`O3JW$fjr4Eh8%@Dp*GIqY@O>GuoR}L}bFxKsZg*9)(On0= zOnO8ux^I}ckT(NjiE_E6?*btKpH#|`sWmG4p9juC3STaeKDTC~>RfWrW6(fPN zx(%*-?Mhf7UJamS2V2u8kD#O1?Zs+1<)n3PYboJ=xGK^E^h3fcU;*w zFZAD`lX;R?)r0Auot>o5?wDEIsA)D7qi~PN^01{VFX+38U7{I+;C2c+z!2A(6Mt~f5PeheA z1vGAwfGl)mEB^$HC@f@&1oerm|8l%cT<#nEb8Gi+t=`%Ri0ihw^~KK?HK<@A<93^B zE-H^Q$D-b*qKA&gh_yaUBB_ZOw|U!n-zq7AaGe}seeA`ju2JtkgwG(0VFgpPJBf*i zkUg8eQuH_HU;eP%1Hdbq?IQeuBZFOqv?GJYow^HW+4Ldve;4o@IM^uNo&JSR>nt^U_J*b|onNROviJC+D< z`GF>GPHoKw#%e)tH~1j)%MRgjLv9$x!Jl7t{EyB~;-vZUU$Y)0Pjci6Jw99Vb~aKY z-=Ty{&3Cvo)BN%@h|U#AMT(EolY&V+xk**!z!ZQeNV;%F3i4hv2W?Ksh+F!&(wc6& zeOzM<|F8OJ|Pu+?VwJe$}D z3jGk^O-tTVN@xmf~xg3w*T&BR+V?2G=JTl9XVI3hsLI*^%t$i zB_^tdBm8ZEr>9<4yM-MUK>>K25|kI@FXKH@;LqR>{)&c)>%unvnG-*3i>d^n1fnC# zcaTRIXP4PS^RKA|#R!!S^!7@Tn-@hn&7E^o=t z^!%x7NXPn9i6kzwG&CKF*Hcz6-08m?dNoX#)6WP7za9FD+v}^8NzE6`>k>|0@DaX) z?AQ8<(TI`TU+x|`GNxBHaII7-QF)B{SimhyjA$I+lHrx}lKR9^24OUntC4BYnj>pB z{m9new+riDw^vjR^>7G0DAgt3<0P>k?gzG>8O5$xx-1%RCePd-NNPP<>qVSxFW=*e zWs)dD71Ih15dW%r!GYb}QibJ251JVmJvy`Q5aTV5WQ>*vi{JM}oMluCRi^;4U#tHf z0UR^Tj}R(Fh114=^%ysvFlX1FpfiqC8)&OxlQRc=AazDVbKocF_CL(8JDqM*MH4Hl z%)vUf!yJtcrtd9ky9a3jQ&8-!qYivfKtQi>feQ}lZ5v+iqP%wnvw#?FD`-tH%U%Sl z>3X6>AxxM#8nZNl7F3N?SlVy}Tw90?|MoJ|Fg|jC_wC}w2SY%C_nU3iU(5MKS9KG6 zAjN}%i}T^;3c>aQ6QQAz$wvi9!LU};ks1y}_ORynqeNex=H%+M8@j7I*Ys<(Hdbg2 zp4?Q0kclFb3^Q^9H&e_U$@q)-6A%K_f-bu~rJhJ@^|6KD6Y@Z{-SsGc0>pGV8=0}f zs&);17P)$@KgJTLk#4%*ekk;lcDrglojPA220h<97B)0cjeq-0EUyL=DRu{*Q3!e= zQ$LJmq5TAJx?5BZk{3kZTHC<50M)hxv0~J+uS2B(%ZznxB`HRgC=6|*QvK~&k>CGh zIQsQ)zx)|2Eg1ao9}QL8Hc`A$DkcBn=gT#EK!@UL2A_D ztG&$H!i+4&ib#(0y2>0GNka-?8!Pmkj;RA&}^{n#{fOh2v`Eid7r)v*O}Q# z;Su2>!?;{e;9>W)-+L^3{7Mgem5{*pJk|ksP0RFbly5N{D5KU={=PccpTl?efj{p8 zO`ewy9C8y!0dr9e=kr1#8i**^wJD+pMrXw26q>nB3Dx^*Q%m+{)`>Blr*8hCw)PQo zbQ+rd$rBY?Bto`nwGUrOw1uWyS+6p=29=sG#C;mF!EH}H5ONSBf_&A zld4iQz6P_rHE5);`KoPVq(2XDcU8w?(gs=!3GN65$lx0A`5TC#^A zT0yTWO7Kz*2k60(MuIRr_E{>_-TXHGs@bz~;Ne^I$cRRlii zf|vLm1fm2vQ9&YTN$i)XqSO=2x2B}~uV=zqgqzrSi(E{Jto`y_a$Kp#yquc+PYl+? z<_rv(Og;>vubE_8%Hvb^{^8{@?s7p+5-CeYhYJUz;2Pt#B8}~R_puMqiuqN`H9A&T|kFv)`}`R zV%=R!-Vq|{`%B_z-^UfULjPG?lPTU32qC#;sa>50DXX-%c9oTwLL*k-iadI>lvEhm zl@|4~-6~KQ<~mqBoLdkf;Mx3V5LBEzIqm&da-*Rk(~(Vgkb4p-($=ysJCXBwD12Jc zY??TWJ2wmzajxs;GBMQL!K%whZ|^o-{&M#r2dZNc`01Zd7C6pj&|opf9&cC+VG)Ef z=oGtMnfT4Mw)3GlA4Poh9HqfFUkjJ-a;-KCGlRuZG@k_Ck<5g&M~;e}sE$ivFoZ~K zT8jr?&0tTH26s(m2ca%W(xd_1#6UsBJt(^j+bjPFc>|bFlhiCT*$unL!oq~0V5KEx z3nB^^H8U5e4`qW$<7L{kHjQTt6-N&HH8jd*ef-6nHv(7YRJ10?vw<%j$U=oaMRc~| z&g}m%Qw*Ass5WJgmIt5<^p#k!j`J42Q^>`ff{Qc$ znrO-z19x|Kb2-z#(vT~C>F?{!gXzd8Z)Z9{IRMVJX|m~C=NM=rlP9vJ>KiuwPt9=h z!DH<^%cKLz8l|rB{``|Q3p)?s;N_uUkO)f5lT`HjHo2G>SrrduLtHKuObooe-^tn6 z=?NERectcz`ag_D-dQWlW`9HYIm54md1vrc2H83-f?E%J$1Vv@e^%Hk$ z2q7xtaly|&ZGYGO(YmIT525ZKBJa= zAY|RXz{g}_>9wIh%_r4f_`{;oLFkT^cW$*hi9JPBT1Ba<5%~gdr6e!0%Q)~_NPGOm zJ~8ef2itUc!@)}Vzq``2Zfpk}U!+`OB$+W@P^1z(cuhhIw)b#32+ziLnX(d~NwK1j z3ZD;L?RaUXs^2}N1A`fGl~F6bqej`@sp|0#|3a38-&uMRqSW<;kZ1dpA&TsvA8Hx% z_B0t~z~N7l7&$5*O{U2NK9rCda6}_P)KC0X?=)b_9-@Fju*7`tpwPAxQKiO$f)Z33 zWV0>N@#V6B74IP9D7#bX?>^QbzYaChgKY7nPZlHr-C1P>8%?>jzaV+qm$Jq>jnJmU zn1vB|eZvPr$(%x@UieWMr{O~~l>Qov{Opp;MXA$t7jhQ>1(mWJ7p#T>e8n)j?pw{^ z1SSOCV^gEga1-02CAm~M<3fwt2L$-odhEui7IW>4Jej=?-bfCZK|~9XcD=n=&J8r- z;SeY0hjw=trqtX<6_$XOVeykTp`b#4|49~%RVdOlj}IJ~9jzzTQv$r@72+ zjK#Rc47GK8Dj_@iJ6b6;QMm|@;QU}?ym_HgPeYwedfxX}<96D0-<9~_A;vqG??0gc zNzvmIkUgG^fjEU!h+c(RTZHJOX$=82BPIqYX4eItRn)ggYPq$8tYy4G0D*o=xV6;8 zsib?nmDEcSa{a2bM|SaO8|!4@x6=rdBU9F1>w9oyUCL;`Wuu+>oiUobjf7CNxf^5+ zTo`v?A?eKoH z4^QFMrWEhdvcY_>67Tu|Jlx63=`T|JR3Px>qKn~O_}Xm@JBtjEsfz<>aT&V#K}sI@ zZWtj2lUp|?p#i~kSy{&-?gjZ>`g|f!o!F@3C)@h0Aa#|VF6r-?9sx1`fOCpD4fz@& zzHWmCXB#rN0KNj+RLQr}d3lN_RR{_XwXArxbJf!bm#NK05UbOGMjkFXi3Iw!d+NI^ z6uOE(1cG0y%wBbH19I>kRQwDF)cct?Q7ye9!zeREc8q`v=K09qmEQPMI)gW0JD=GJ{7T&M046EmYE(??{3isTIMb)K z`X|HSR%uima(h9SYat3ofDLjWkKPxL+Ae&ykCqx^yiYuCcBo$raN(@6?kRUPXx!ZN z$D6EgG0@tw*Wbm1f@Z&nH7ml55*mT=D#dB-WT({<%C;64NJ)gJaW00s7DH>8#r_7p z-gUJtp-=eC2u?MzKf1|4qFx+(T)^N`qB1)y zzqnfZLW*qceWuIncHz(IaI&J>5N*NGQiDv%wJqs3C)R#sDe_UV>;EXj=RSR+f*G;z zni90AaDn_z8WMlGQ>$yTbVHPl3rGtqd?N41QTTMoAsw`T*6xBddc|G!;(o9c0kL!3 zbRl7!1ZdbdH>9q@p6e6q#gPc1wH<&?3*+9htx`tBb zB4y5YdH1y+zX{ZJ^w<+G)$=`29S`8M3co}QJ1Pw{bWr>-ziqZ>dr=xB1zf{8$n2LCApHS@HEU~;VcKW!0Yv` zCQJ{qW4y#p$a3qymmxUh%_{xC73KU;k`g4H;^lj>wG>m0b)TnNj@Z87wiU5bSgq z8n1)cc>ifR*RKg_?OS(LAOlXI@Eg7fH;Vfk6`moSo!qCK-Z~{Av`|>wFzL7%!#ubF z%W?LwW_XB?;iEWdkr*Gao%;AgvKPFKF=(HynK9Ihi+qeI99l5 z$55emKk3bTG29^}p<=&DBrc7%IwK&5e!k}bmqzerJ~>?u45)lB@;6(m>1z35FCtJY zq5&NYjnxAS^v5G4O?*8ptXww12LN2oA1+23O^(4ak#^6VI&Gmiv@Crct@itWt6!_x+@~nLW5C& zd2+c#f(a>?DRa2}5~c0^D;E%uPlyuOl60p$J{9ex_`dMK#G(4sjf-UyjMw|U7nZp^F^aFq{B^otou3lIFj(GiifI1c z1Dy_3m%Dy_~UW3aOlY}hzj8@h#Jof`%aek}MQ`#z zifrcmi5*-=W}WkZAo#{N`1pzQbSCjeSc(~*RU2aT^Iejt0SUWH6xJ)vQ7v)_2lbMy zqwwC8=y7pntq8?CGKP26F44#EkVZfFSgVkfa?b~-j`R`HTq6q)i#~x=EKD-P(oD@9 z4bOTlOO|VdVoXmC9X0tFHNx8K=+p*O_Iiw>*G#1kjB9^;dVbAo|Lf%zyL#}$cK+c_ z_ja7K*g>SHm^lltYq!f@Esn+3A`zA>v5=HUr0BVrR~Lkr^K{vKZ+x&Jzqaupx0}jR zk8(vH*f!EE2?{*(ep+4B0FACN!;8tKnN>NiaqsY^E8e;A;^fj_^TQ4Z!`=jOJ8!+2 z4u4fCl@SO?@%Np<096rk^j%oL zs??c6;W(WCt?g5UI^)9keXMUxmO(s~u8|56DteQmOZ#%>t5fltrB`tHUHb?xt%T-x zpL=D=M3oy<#upl3A2qyI8)b*ZhKoMz62RydR1s0P0ZBGT7UzELulA@|CFN?U2HFK*B|WQdkxEXT9pHM7Cty z^)RzfOslQoJ6)8|hUb0qt%YX3`1`7|S42cj4kkhZ59STwUi8eD7+y!eTJE2T`;Ws;u@s(C^a@gI9Af^5-&^D0d_7 zQsz#ph4DJO<1|+2;CvW5nBT}N&}q?M0s*$aV*hmcCgWil$Bm^Nq7alI%6zvg(S}xS z%jJK>8uZt&bv(4#6uWtL>}$nEFW{E+PuY3J4(f*IDTr_V$p7|Dg0dd2OGXZ2QkUpz zG|T<`X`>M;!et&p^1f!08GP1N2z^Y3_@LIA)JQm2y+G_PB&)Hcij!E-hUesWgFM>{ zu!bkI)qWN>zyGpPct|ckCn_%ykBjl%K|~lko8St2%{U;tL`k~CTQrm0wBW9)XN2Pj zt+r)yNpX7c;81;Y=wLFlmouv>4qLK8#r~GWRN9Zz`6*J8(2(y(&MiDJb8siGcRA4f zP}vbLh738#%f{sjQ^jGcgRkS=%sXfX7_6m$YiOkY`9ZDu>gP;?sm5-8;)ZTp9e@lD z!=#1+VfeL1AInL%58q#M$W-07APkCOM_kbildoJDlHXfpXJRM%$q<-y3pSMWjppZk zv4SD`NmRlJ-5Mq8l0xI=4|_19I|Pn%={AgBK!eB)`jor}%;s|JAgvm=rBP z<#MJ5TCs)~?)t?}JduUQt`^y|5Q*YD=kAkvOe;m^I6h^YU{$xo8@c3-X$ee2tV;?Z zC{^#eGB*%W@)$C87!!}2G{l5hhADZQ?&m3X^o9l0gcga2)n%I~ZGAKLE=tB^6}h{r zp{`i7sYYJjP(`i%!gEQ#jg(vWD^aLf7kuYy`#lbs#7&Tg0hjMD8y43qfquBNCxh(Y4 z6~cbe!K)Yvl|mOC&;u{k?NUCTeAbit*#V3@7&W8{TO#uu5o< zNcSYGfYMD62f0!W#_gOcBOfLjLiHWz5-;GImlSfG*U>Y;Nm3*xAUv%2Kfv6?+f{yxE+QRvpa& z2g|2Ko*}wh>~{n8XL>r&>*(!U%f<6BTIZvW{{T`3pvti647T~~( zmlH5#;>V#ak4oRhFEi<<347e|Kd$@btX=~P?I6V+u|WN62Aw_r#ap&j-0jr7qf{ZX z*l`(bGVwLuEPU~*2leXmR*2TX!3!Z^)+;Yu51b@MVUy7x1WZNu7VNCF!QN&T_5-J6 z_3L#>LU}lnQ)1A`dOkL2-G^W1(vY=@{u90$MOlBv)=;YyV@ys6&!kc={_P|rZw4ur1QFml>W>LeieKIW~(#N<& zN@^afgizrbo3Z$lx)7NxF3j(o2~>1!kr3bH&+HVVD49yOo+>z1M~mpt2k&EuuTxJ| z`%{F?N=*ytRiEujxA{y=^y}OFiDI_>1R*DWIW#R>&{Ml;jusrqnip>nX4ZMOx?F`N ziPRsS`eYijk{YW*2PZJ;F0S9Lxnyif-8sy=?0?c59*7bpqv39gFbE=e$u(yuL ztU7Q(4YrN%hW%BQ@T<>(?;}B%fl@9~YS5Y7;DOWiNKlwYQCx&YX1=8;mp?>~AR4e+ z%715>a!e)sx^c)H`4&A+^HgP_7UwKX-uC4+GnPn?d0{3DJq00K?F-jS0|d8z5;|Cd zS+on2qQ1xHVRMRaG|{=)J`Mv?BVl5Yp$>M^7iPFm>S>&K4PTRJ=#dxJuO!r-4;y{O zQy}&b6nKLs+9_BznuNKAEBQoI_18H1Ldh4V|xmt+-)-Ij`@`8l1J&M%eXHZ6fni6 z?{V7|%CR_fb))IZL(d5;HI1I~*&1CK5K#W!k8M{GG|E8j09afHm30w`1ddR_S+WGn zaWU~~f<+O|_1O8_LxC@s??+GF`BPiQKxmWwouRlWg;*4%>1-p^{TTP6e}-MK{XI$w=dT2>fSFeJV~@y8hM0GX?0L@P$dN+`E~{8}qUl};Ii zmnhx2JXv$&GRM!c){Z(IeQwDpDI_5jo>-O)#ebQmOCq&F+3FAKe)YEI9m!S5D%*sa z^J9RJd-^1XMUBDs9YOgL-Bity>v*u~hUHWFs3Hjk0eX6~%8n4wbb(Oz)FjI$#>(fb#l z=@aFaStD|8P@P?s3}nBMZH`HabZ8S$nomjrK%7&Otx-*Xy^6%|HF?E(z^~akyS+JT zLxmUvKWf4yfjghxZxaS&K;Mv0Rlc0B-dhk%+&

C;?os{$ZWi#$ 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 literal 0 HcmV?d00001 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java new file mode 100644 index 000000000..4cb62e5e3 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java @@ -0,0 +1,129 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import javax.swing.SwingUtilities; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.functions.TrueDoneListener; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.views.LogWindow; +import org.jackhuang.hellominecraft.launcher.launch.MinecraftCrashAdvicer; +import org.jackhuang.hellominecraft.utils.DoubleOutputStream; +import org.jackhuang.hellominecraft.utils.JdkVersion; +import org.jackhuang.hellominecraft.utils.LauncherPrintStream; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.OS; +import org.jackhuang.hellominecraft.utils.Utils; + +/** + * + * @author hyh + */ +public final class Launcher { + + private static final Launcher instance = new Launcher(); + + public static void println(String s) { + System.out.println(s); + } + + public static void main(String[] args) { + println("*** " + Main.makeTitle() + " ***"); + + Thread.currentThread().setName("launcher"); + try { + File logFile = new File("hmclmc.log"); + if (!logFile.exists()) logFile.createNewFile(); + FileOutputStream tc = new FileOutputStream(logFile); + DoubleOutputStream out = new DoubleOutputStream(tc, System.out); + System.setOut(new LauncherPrintStream(out)); + DoubleOutputStream err = new DoubleOutputStream(tc, System.err); + System.setErr(new LauncherPrintStream(err)); + } catch (Exception e) { + println("Failed to add log file appender."); + e.printStackTrace(); + } + + LogWindow.instance.setTerminateGame(Utils::shutdownForcely); + + boolean showInfo = false; + String classPath = ""; + String mainClass = "net.minecraft.client.Minecraft"; + + ArrayList cmdList = new ArrayList<>(); + + for (String s : args) + if (s.startsWith("-cp=")) classPath = classPath.concat(s.substring("-cp=".length())); + else if (s.startsWith("-mainClass=")) mainClass = s.substring("-mainClass=".length()); + else if (s.equals("-debug")) showInfo = true; + else cmdList.add(s); + + String[] cmds = (String[]) cmdList.toArray(new String[cmdList.size()]); + + String[] tokenized = StrUtils.tokenize(classPath, File.pathSeparator); + int len = tokenized.length; + + if (showInfo) { + println("Arguments: {\n" + StrUtils.parseParams(" ", args, "\n") + "\n}"); + println("Main Class: " + mainClass); + println("Class Path: {\n" + StrUtils.parseParams(" ", tokenized, "\n") + "\n}"); + SwingUtilities.invokeLater(() -> LogWindow.instance.setVisible(true)); + } + + URL[] urls = new URL[len]; + + try { + for (int j = 0; j < len; j++) + urls[j] = new File(tokenized[j]).toURI().toURL(); + } catch (Throwable e) { + MessageBox.Show(C.i18n("crash.main_class_not_found")); + println("Failed to get classpath."); + e.printStackTrace(); + return; + } + + if (!JdkVersion.isJava64Bit() && OS.is64Bit()) + MessageBox.Show(C.i18n("advice.os64butjdk32")); + + Method minecraftMain; + try { + minecraftMain = new URLClassLoader(urls).loadClass(mainClass).getMethod("main", String[].class); + } catch (Throwable t) { + MessageBox.Show(C.i18n("crash.main_class_not_found")); + println("Minecraft main class not found."); + return; + } + + println("*** Launching Game ***"); + + try { + minecraftMain.invoke(null, new Object[]{cmds}); + } catch (Throwable throwable) { + HMCLog.err("Cought exception!"); + final StringWriter trace = new StringWriter(); + PrintWriter writer = new PrintWriter(trace); + throwable.printStackTrace(writer); + final String advice = MinecraftCrashAdvicer.getAdvice(throwable); + MessageBox.Show(C.i18n("crash.minecraft") + ": " + advice); + + LogWindow.instance.log(C.i18n("crash.minecraft")); + LogWindow.instance.log(advice); + LogWindow.instance.log(trace.toString()); + LogWindow.instance.setExit(TrueDoneListener.instance); + LogWindow.instance.setVisible(true); + } + + println("*** Game Exited ***"); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java new file mode 100644 index 000000000..8e64bde4a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java @@ -0,0 +1,126 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher; + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.StringSelection; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URI; +import javax.swing.ImageIcon; +import javax.swing.UIManager; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.GameLauncher; +import org.jackhuang.hellominecraft.launcher.utils.CrashReport; +import org.jackhuang.hellominecraft.logging.Configuration; +import org.jackhuang.hellominecraft.logging.appender.ConsoleAppender; +import org.jackhuang.hellominecraft.logging.layout.DefaultLayout; +import org.jackhuang.hellominecraft.views.LogWindow; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.launcher.views.MainFrame; +import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author hyh + */ +public final class Main implements DoneListener0 { + + public static String launcherName = "Hello Minecraft! Launcher"; + public static byte firstVer = 2, secondVer = 3, thirdVer = 2; + public static int minimumLauncherVersion = 16; + + /** + * Make the version of HMCL. + * + * @return the version: firstVer.secondVer.thirdVer + */ + public static String makeVersion() { + return "" + firstVer + '.' + secondVer + '.' + thirdVer; + } + + /** + * Make the main window title. + * + * @return the MainWindow title. + */ + public static String makeTitle() { + return launcherName + ' ' + makeVersion(); + } + + public static final Main instance = new Main(); + + public static void main(String[] args) { + { + Thread.setDefaultUncaughtExceptionHandler(new CrashReport(true)); + + try { + File file = new File("hmcl.log"); + if (!file.exists()) + file.createNewFile(); + Configuration.DEFAULT.appenders.add(new ConsoleAppender("File", new DefaultLayout(), true, new FileOutputStream(file), true)); + } catch (IOException ex) { + System.err.println("Failed to add log appender File because an error occurred while creating or opening hmcl.log"); + ex.printStackTrace(); + } + + HMCLog.log("*** " + Main.makeTitle() + " ***"); + + LogWindow.instance.clean(); + LogWindow.instance.setTerminateGame(GameLauncher.PROCESS_MANAGER::stopAllProcesses); + + try { + UIManager.setLookAndFeel(new HelloMinecraftLookAndFeel()); + } catch (Throwable ex) { + HMCLog.warn("Failed to set look and feel...", ex); + } + + Settings.UPDATE_CHECKER.start(); + + MainFrame.showMainFrame(Settings.isFirstLoad()); + } + } + + @Override + public void onDone() { + GameLauncher.PROCESS_MANAGER.stopAllProcesses(); + } + + public static void update() { + if (MessageBox.Show(C.i18n("update.newest_version") + Settings.UPDATE_CHECKER.getNewVersion().firstVer + "." + Settings.UPDATE_CHECKER.getNewVersion().secondVer + "." + Settings.UPDATE_CHECKER.getNewVersion().thirdVer + "\n" + + C.i18n("update.should_open_link"), + MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + try { + java.awt.Desktop.getDesktop().browse(new URI(C.URL_PUBLISH)); + } catch (Throwable e) { + HMCLog.warn("Failed to browse uri: " + C.URL_PUBLISH, e); + + Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); + cb.setContents(new StringSelection(C.URL_PUBLISH), null); + MessageBox.Show(C.i18n("update.no_browser")); + } + else + Settings.s().setCheckUpdate(false); + } + + public static void invokeUpdate() { + if (Settings.s().isCheckUpdate()) update(); + MainFrame.instance.invokeUpdate(); + } + + public static ImageIcon getIcon(String path) { + try { + return new ImageIcon(Main.class.getResource("/org/jackhuang/hellominecraft/launcher/" + path)); + } catch (Exception e) { + HMCLog.err("Failed to load icon", e); + return null; + } + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java new file mode 100644 index 000000000..1b3f7ca5f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java @@ -0,0 +1,69 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.io.IOException; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.GameLauncher.DownloadLibraryJob; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.LoginInfo; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.tasks.ParallelTask; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.jackhuang.hellominecraft.utils.Compressor; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author hyh + */ +public class DefaultGameLauncher extends GameLauncher { + + public DefaultGameLauncher(Profile version, LoginInfo info, IAuthenticator lg) { + super(version, info, lg); + register(); + } + + public DefaultGameLauncher(Profile version, LoginInfo info, IAuthenticator lg, DownloadType downloadType) { + super(version, info, lg, downloadType); + register(); + } + + private void register() { + downloadLibrariesEvent.register((sender, t) -> { + final TaskWindow dw = TaskWindow.getInstance(); + ParallelTask parallelTask = new ParallelTask(); + for (DownloadLibraryJob o : t) { + final DownloadLibraryJob s = (DownloadLibraryJob) o; + parallelTask.addDependsTask(new FileDownloadTask(s.url, s.path).setTag(s.name)); + } + dw.addTask(parallelTask); + boolean flag = true; + if (t.size() > 0) flag = dw.start(); + if (!flag && MessageBox.Show(C.i18n("launch.not_finished_downloading_libraries"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + flag = true; + return flag; + }); + decompressNativesEvent.register((sender, value) -> { + //boolean flag = true; + for (int i = 0; i < value.decompressFiles.length; i++) + try { + Compressor.unzip(value.decompressFiles[i], value.decompressTo, value.extractRules[i]); + } catch (IOException ex) { + HMCLog.err("Unable to decompress library file: " + value.decompressFiles[i] + " to " + value.decompressTo, ex); + //flag = false; + } + /*if(!flag) + if(MessageBox.Show(C.i18n("launch.not_finished_decompressing_natives"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + flag = true;*/ + return true; + }); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java new file mode 100644 index 000000000..ee5f61140 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java @@ -0,0 +1,191 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.util.List; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.LoginInfo; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.JavaProcess; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.OS; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.EventHandler; +import org.jackhuang.hellominecraft.utils.ProcessManager; + +/** + * + * @author hyh + */ +public class GameLauncher { + + public static final ProcessManager PROCESS_MANAGER = new ProcessManager(); + Profile get; + IMinecraftProvider provider; + LoginInfo info; + UserProfileProvider result; + IAuthenticator login; + public final EventHandler failEvent = new EventHandler(this); + public final EventHandler> downloadLibrariesEvent = new EventHandler(this); + public final EventHandler> successEvent = new EventHandler(this); + public final EventHandler launchEvent = new EventHandler(this); + public final EventHandler decompressNativesEvent = new EventHandler(this); + DownloadType downloadType; + + public GameLauncher(Profile version, LoginInfo info, IAuthenticator lg) { + this(version, info, lg, DownloadType.Mojang); + } + + public GameLauncher(Profile version, LoginInfo info, IAuthenticator lg, DownloadType downloadType) { + this.get = version; + this.provider = get.getMinecraftProvider(); + this.info = info; + this.login = lg; + this.downloadType = downloadType; + } + + public Profile getProfile() { + return get; + } + + public IMinecraftLoader makeLaunchCommand() { + IMinecraftLoader loader; + try { + if (info != null) result = login.login(info); + else result = login.loginBySettings(); + } catch (Exception e) { + HMCLog.err("An exception has thrown when logging in.", e); + result = new UserProfileProvider(); + result.setSuccess(false); + result.setErrorReason(e.getLocalizedMessage()); + } + if (result == null || result.isSuccessful() == false) { + String error; + if (result == null || result.getErrorReason() == null) + error = C.i18n("login.failed"); + else { + error = C.i18n("login.failed") + result.getErrorReason(); + HMCLog.warn("Login failed by method: " + login.getName() + ", state: " + result.isSuccessful() + ", error reason: " + result.getErrorReason()); + } + failEvent.execute(error); + return null; + } + + try { + loader = provider.provideMinecraftLoader(result, downloadType); + } catch (IllegalStateException e) { + HMCLog.err("Failed to get minecraft loader", e); + failEvent.execute(C.i18n("launch.circular_dependency_versions")); + return null; + } + + File file = provider.getDecompressNativesToLocation(); + if (file != null) FileUtils.cleanDirectoryQuietly(file); + + if(!downloadLibrariesEvent.execute(provider.getDownloadLibraries(downloadType))) { failEvent.execute(C.i18n("launch.failed")); return null; } + if(!decompressNativesEvent.execute(provider.getDecompressLibraries())) { failEvent.execute(C.i18n("launch.failed")); return null; } + successEvent.execute(loader.makeLaunchingCommand()); + return loader; + } + + /** + * Launch the game "as soon as possible". + * + * @param str launch command + */ + public void launch(List str) { + try { + provider.onLaunch(); + ProcessBuilder builder = new ProcessBuilder(str); + builder.directory(provider.getRunDirectory(get.getSelectedMinecraftVersion().id)) + .environment().put("APPDATA", get.getCanonicalGameDirFile().getParent()); + JavaProcess jp = new JavaProcess(str, builder.start(), PROCESS_MANAGER); + launchEvent.execute(jp); + } catch (IOException e) { + failEvent.execute(C.i18n("launch.failed_creating_process") + "\n" + e.getMessage()); + HMCLog.err("Failed to launch when creating a new process.", e); + } + } + + /** + * According to the name... + * + * @param launcherName the name of launch bat/sh + * @param str launch command + * @return launcher location + * @throws java.io.IOException write contents failed. + */ + public File makeLauncher(String launcherName, List str) throws IOException { + provider.onLaunch(); + boolean isWin = OS.os() == OS.WINDOWS; + File f = new File(launcherName + (isWin ? ".bat" : ".sh")); + if (!f.exists()) f.createNewFile(); + BufferedWriter writer; + try { + writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), System.getProperty("sun.jnu.encoding", "UTF-8"))); + } catch (UnsupportedEncodingException ex) { + HMCLog.warn("Failed to create writer, will try again.", ex); + writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f))); + } + if (isWin) { + writer.write("@echo off"); + writer.newLine(); + String appdata = IOUtils.tryGetCanonicalFilePath(get.getCanonicalGameDirFile().getParentFile()); + if (appdata != null) { + writer.write("set appdata=" + appdata); + writer.newLine(); + } + } + writer.write(StrUtils.makeCommand(str)); + writer.close(); + if (!isWin) + try { + Runtime.getRuntime().exec("chmod +x " + IOUtils.tryGetCanonicalFilePath(f)); + } catch (IOException e) { + HMCLog.warn("Failed to give sh file permission.", e); + MessageBox.Show(C.i18n("launch.failed_sh_permission")); + } + + HMCLog.log("Command: " + StrUtils.parseParams("", str, " ")); + return f; + } + + public static class DownloadLibraryJob { + + String url, name; + File path; + + public DownloadLibraryJob(String n, String u, File p) { + url = u; + name = n; + path = IOUtils.tryGetCanonicalFile(p); + } + } + + public static class DecompressLibraryJob { + File[] decompressFiles; + String[][] extractRules; + File decompressTo; + + public DecompressLibraryJob(File[] decompressFiles, String[][] extractRules, File decompressTo) { + this.decompressFiles = decompressFiles; + this.extractRules = extractRules; + this.decompressTo = decompressTo; + } + + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncherRequest.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncherRequest.java new file mode 100644 index 000000000..8be1580b2 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncherRequest.java @@ -0,0 +1,19 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +/** + * + * @author hyh + */ +public enum GameLauncherRequest { + + ERROR, + DOWNLOAD_ASSETS, + DOWNLOAD_LIBRARIES, + UNZIP_LIBRARIES, + PROCESS_STARTED, + SUCCEED +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java new file mode 100644 index 000000000..301f574f2 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java @@ -0,0 +1,179 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.Launcher; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.JdkVersion; +import org.jackhuang.hellominecraft.utils.MathUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.OS; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.Utils; + +/** + * + * @author hyh + */ +public abstract class IMinecraftLoader { + + protected File minecraftJar; + protected Profile v; + protected UserProfileProvider lr; + protected File gameDir; + protected IMinecraftProvider provider; + + public IMinecraftLoader(Profile ver, IMinecraftProvider provider, UserProfileProvider lr, File minecraftJar) { + this.lr = lr; + + this.minecraftJar = minecraftJar; + v = ver; + this.provider = provider; + gameDir = v.getCanonicalGameDirFile(); + } + + public void makeHeadCommand(List res) { + HMCLog.log("On making head command."); + + if (StrUtils.isNotBlank(v.getWrapperLauncher())) + res.addAll(Arrays.asList(v.getWrapperLauncher().split(" "))); + + String str = v.getJavaDir(); + JdkVersion jv = null; + File f = new File(str + ".hmc"); + try { + String s = FileUtils.readFileToString(f); + String[] strs = s.split("\n"); + if (str.length() >= 2) + jv = new JdkVersion(strs[0], MathUtils.parseInt(strs[1], -1)); + else + throw new IllegalStateException("The format of file: " + f + " is wrong: " + s); + } catch (IOException | IllegalStateException e) { + try { + jv = JdkVersion.getJavaVersionFromExecutable(str); + jv.write(f); + if (!f.exists()) + HMCLog.warn("Failed to load version from file " + f, e); + } catch (Exception ex) { + HMCLog.warn("Failed to read JDKVersion.", ex); + } + } + res.add(str); + + if (v.hasJavaArgs()) + res.addAll(Arrays.asList(StrUtils.tokenize(v.getJavaArgs()))); + + if (!v.isNoJVMArgs() && !(jv != null && jv.isEarlyAccess())) { + res.add("-Xincgc"); + res.add("-XX:+UseConcMarkSweepGC"); + res.add("-XX:+CMSIncrementalMode"); + res.add("-XX:-UseAdaptiveSizePolicy"); + + res.add("-Xmn128m"); + } + + if (jv != null && jv.is64Bit == 0 && OS.is64Bit()) + MessageBox.Show(C.i18n("advice.os64butjdk32")); + + if (!StrUtils.isBlank(v.getMaxMemory())) { + int mem = MathUtils.parseMemory(v.getMaxMemory(), 2147483647); + if (jv != null && jv.is64Bit == 0 && mem > 1024) + MessageBox.Show(C.i18n("launch.too_big_memory_alloc_64bit")); + else { + long a = OS.getTotalPhysicalMemory() / 1024 / 1024; + HMCLog.log("System Physical Memory: " + a); + if (a > 0 && a < mem) + MessageBox.Show(C.i18n("launch.too_big_memory_alloc_free_space_too_low", a)); + } + String a = "-Xmx" + v.getMaxMemory(); + if (MathUtils.canParseInt(v.getMaxMemory())) a += "m"; + res.add(a); + } + + if (!StrUtils.isBlank(v.getPermSize()) && !v.isNoJVMArgs()) + if (jv != null && jv.ver != null && (jv.ver.startsWith("1.8") || jv.ver.startsWith("1.9"))); else res.add("-XX:MaxPermSize=" + v.getPermSize() + "m"); + + if (!v.isNoJVMArgs()) + appendJVMArgs(res); + + HMCLog.log("On making java.library.path."); + + res.add("-Djava.library.path=" + provider.getDecompressNativesToLocation().getPath());//v.getSelectedMinecraftVersion().getNatives(v.getCanonicalGameDirFile())); + res.add("-Dfml.ignoreInvalidMinecraftCertificates=true"); + res.add("-Dfml.ignorePatchDiscrepancies=true"); + + if (OS.os() != OS.WINDOWS) + res.add("-Duser.home=" + gameDir.getParent()); + + if (!v.isCanceledWrapper()) { + res.add("-cp"); + res.add(StrUtils.parseParams("", Utils.getURL(), File.pathSeparator)); + res.add(Launcher.class.getCanonicalName()); + } + } + + public List makeLaunchingCommand() { + HMCLog.log("*** Make shell command ***"); + + ArrayList res = new ArrayList<>(); + + makeHeadCommand(res); + makeSelf(res); + + HMCLog.log("On making launcher args."); + + if (StrUtils.isNotBlank(v.getHeight()) && StrUtils.isNotBlank(v.getWidth())) { + res.add("--height"); + res.add(v.getHeight()); + res.add("--width"); + res.add(v.getWidth()); + } + + if (StrUtils.isNotBlank(v.getServerIp())) { + String[] args = v.getServerIp().split(":"); + res.add("--server"); + res.add(args[0]); + res.add("--port"); + res.add(args.length > 1 ? args[1] : "25565"); + } + + if (v.isFullscreen()) + res.add("--fullscreen"); + + if (v.isDebug() && !v.isCanceledWrapper()) + res.add("-debug"); + + if (StrUtils.isNotBlank(v.getMinecraftArgs())) + res.addAll(Arrays.asList(v.getMinecraftArgs().split(" "))); + + return res; + } + + /** + * You must do these things:
+ * 1 minecraft class path
+ * 2 main class
+ * 3 minecraft arguments
+ * + * @param list the command list you shoud edit. + */ + protected abstract void makeSelf(List list); + + protected void appendJVMArgs(List list) { + } + + public Profile getUserVersion() { + return v; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java new file mode 100644 index 000000000..e4f52a374 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java @@ -0,0 +1,63 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.io.File; +import java.util.Collection; +import java.util.List; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; + +/** + * + * @author huangyuhui + */ +public abstract class IMinecraftProvider { + Profile profile; + + public IMinecraftProvider(Profile profile) { + this.profile = profile; + } + + public abstract File getRunDirectory(String id); + public abstract List getDownloadLibraries(DownloadType type); + public abstract void openSelf(String version); + public abstract void open(String version, String folder); + public abstract File getAssets(); + public abstract File getResourcePacks(); + public abstract GameLauncher.DecompressLibraryJob getDecompressLibraries(); + public abstract File getDecompressNativesToLocation(); + public abstract File getMinecraftJar(); + public abstract File getBaseFolder(); + + /** + * Launch + * @param p player informations, including username & auth_token + * @param type according to the class name 233 + * @return what you want + * @throws IllegalStateException circular denpendency versions + */ + public abstract IMinecraftLoader provideMinecraftLoader(UserProfileProvider p, DownloadType type) throws IllegalStateException; + + // Versions + public abstract boolean renameVersion(String from, String to); + public abstract boolean removeVersionFromDisk(String a); + public abstract boolean refreshJson(String a); + public abstract boolean refreshAssetsIndex(String a); + + public abstract MinecraftVersion getOneVersion(); + public abstract Collection getVersions(); + public abstract MinecraftVersion getVersionById(String id); + public abstract int getVersionCount(); + public abstract void refreshVersions(); + + public abstract boolean install(String version, DownloadType type); + + public abstract void onLaunch(); + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java new file mode 100644 index 000000000..2daa0fad2 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java @@ -0,0 +1,103 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.TrueDoneListener; +import org.jackhuang.hellominecraft.launcher.views.MainFrame; +import org.jackhuang.hellominecraft.utils.tinystream.CollectionUtils; +import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.utils.JavaProcess; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.functions.Predicate; +import org.jackhuang.hellominecraft.utils.ProcessThread; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.views.LogWindow; + +/** + * + * @author huangyuhui + */ +public class LaunchFinisher implements Event> { + + private final HashSet al = new HashSet(); + + @Override + public boolean call(Object sender, List str) { + final GameLauncher obj = (GameLauncher) sender; + obj.launchEvent.register(new Event() { + @Override + public boolean call(Object sender, JavaProcess p) { + if (obj.getProfile().getLauncherVisibility() == 0 && !LogWindow.instance.isVisible()) + System.exit(0); + else if (obj.getProfile().getLauncherVisibility() == 2) + MainFrame.instance.closeMessage(); + else { + if (LogWindow.instance.isVisible()) + LogWindow.instance.setExit(TrueDoneListener.instance); + MainFrame.instance.dispose(); + } + Event event = new Event() { + @Override + public boolean call(Object sender, JavaProcess t) { + processThreadStopped((ProcessThread) sender, obj, t, false); + return true; + } + }; + ProcessThread a = new ProcessThread(p, true, true); + a.stopEvent.register(new Event() { + @Override + public boolean call(Object sender, JavaProcess p) { + if (p.getExitCode() != 0 && p.getStdErrLines().size() > 0 && StrUtils.containsOne(p.getStdErrLines(), + Arrays.asList("Could not create the Java Virtual Machine.", + "Error occurred during initialization of VM", + "A fatal exception has occurred. Program will exit."))) + MessageBox.Show(C.i18n("launch.cannot_create_jvm")); + processThreadStopped((ProcessThread) sender, obj, p, false); + return true; + } + }); + a.start(); + al.add(a); + + a = new ProcessThread(p, false, true); + a.stopEvent.register(event); + a.start(); + al.add(a); + + a = new ProcessThread(p, false, false); + a.stopEvent.register(event); + a.start(); + al.add(a); + return true; + } + }); + obj.launch(str); + return true; + } + + void processThreadStopped(ProcessThread t, GameLauncher obj, JavaProcess p, boolean forceTermintate) { + al.remove(t); + al.removeAll(CollectionUtils.sortOut(al, new Predicate() { + + @Override + public boolean apply(Thread t) { + return !t.isAlive(); + } + + })); + if (al.isEmpty() || forceTermintate) { + for (Thread a : al) a.interrupt(); + al.clear(); + GameLauncher.PROCESS_MANAGER.onProcessStopped(p); + if (obj.getProfile().getLauncherVisibility() != 2 && !LogWindow.instance.isVisible()) + System.exit(0); + } + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java new file mode 100644 index 000000000..3b47a2b86 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.io.IOException; +import java.util.List; +import javax.swing.JOptionPane; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.views.MainFrame; +import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author huangyuhui + */ +public class LaunchScriptFinisher implements Event> { + + @Override + public boolean call(Object sender, List str) { + boolean flag = false; + try { + String s = JOptionPane.showInputDialog(C.i18n("mainwindow.enter_script_name")); + if(s != null) MessageBox.Show(C.i18n("mainwindow.make_launch_succeed") + " " + ((GameLauncher)sender).makeLauncher(s, str).getAbsolutePath()); + flag = true; + } catch (IOException ex) { + MessageBox.Show(C.i18n("mainwindow.make_launch_script_failed")); + HMCLog.err("Failed to create script file.", ex); + } + MainFrame.instance.closeMessage(); + return flag; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java new file mode 100644 index 000000000..9d7973821 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.util.ConcurrentModificationException; +import org.jackhuang.hellominecraft.C; + +/** + * Give the advice to solve the Minecraft crashing. + * + * @author hyh + */ +public final class MinecraftCrashAdvicer { + + public static String getAdvice(Throwable t) { + return getAdvice(t, false); + } + + public static String getAdvice(Throwable t, boolean selfCrash) { + if (t.getCause() instanceof UnsupportedClassVersionError) { + return C.i18n("crash.advice.UnsupportedClassVersionError"); + } else if (t instanceof ConcurrentModificationException) { + return C.i18n("crash.advice.ConcurrentModificationException"); + } else if (t instanceof SecurityException) { + return C.i18n("crash.advice.SecurityException"); + } else if (t instanceof NoSuchFieldError || (t.getCause() != null && t.getCause() instanceof NoSuchFieldException)) { + return C.i18n("crash.advice.NoSuchFieldError"); + } else if (t instanceof NoClassDefFoundError || (t.getCause() != null && t.getCause() instanceof ClassNotFoundException)) { + return C.i18n("crash.advice.ClassNotFondException"); + } + + if (t.getMessage() != null) { + if (t.getMessage().contains("OpenGL") || t.getMessage().contains("OpenAL")) { + return C.i18n("crash.advice.OpenGL"); + } + } + if (t.getCause() != null && t.getCause().getMessage() != null) { + if (t.getCause().getMessage().contains("no lwjgl in java.library.path")) { + return C.i18n("crash.advice.no_lwjgl"); + } + } + return selfCrash ? C.i18n("crash.advice.no") : C.i18n("crash.advice.otherwise"); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java new file mode 100644 index 000000000..8904379c8 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java @@ -0,0 +1,136 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.launcher.utils.MCUtils; +import org.jackhuang.hellominecraft.launcher.utils.assets.AssetsIndex; +import org.jackhuang.hellominecraft.launcher.utils.assets.AssetsObject; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.utils.OS; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author hyh + */ +public class MinecraftLoader extends IMinecraftLoader { + + private MinecraftVersion version; + String text; + + public MinecraftLoader(Profile ver, IMinecraftProvider provider, UserProfileProvider lr, File minecraftJar) throws IllegalStateException { + this(ver, provider, lr, minecraftJar, DownloadType.Mojang); + } + + public MinecraftLoader(Profile ver, IMinecraftProvider provider, UserProfileProvider lr, File minecraftJar, DownloadType downloadtype) throws IllegalStateException { + super(ver, provider, lr, minecraftJar); + version = ver.getSelectedMinecraftVersion().resolve(provider, downloadtype); + } + + @Override + protected void makeSelf(List res) { + String library = v.isCanceledWrapper() ? "" : "-cp="; + for (MinecraftLibrary l : version.libraries) { + l.init(); + if (l.allow()) + library += l.getFilePath(gameDir).getAbsolutePath() + File.pathSeparator; + } + library += IOUtils.tryGetCanonicalFilePath(minecraftJar) + File.pathSeparator; + library = library.substring(0, library.length() - File.pathSeparator.length()); + if (v.isCanceledWrapper()) res.add("-cp"); + res.add(library); + String mainClass = version.mainClass; + res.add((v.isCanceledWrapper() ? "" : "-mainClass=") + mainClass); + + String arg = v.getSelectedMinecraftVersion().minecraftArguments; + String[] splitted = org.jackhuang.hellominecraft.utils.StrUtils.tokenize(arg); + + if (!new File(v.getGameDirFile(), "assets").exists()) + MessageBox.Show(C.i18n("assets.no_assets")); + + String game_assets = reconstructAssets().getAbsolutePath(); + + for (String t : splitted) { + t = t.replace("${auth_player_name}", lr.getUserName()); + t = t.replace("${auth_session}", lr.getSession()); + t = t.replace("${auth_uuid}", lr.getUserId()); + t = t.replace("${version_name}", version.id); + t = t.replace("${profile_name}", provider.profile.getName()); + t = t.replace("${game_directory}", provider.getRunDirectory(version.id).getAbsolutePath()); + t = t.replace("${game_assets}", game_assets); + t = t.replace("${assets_root}", provider.getAssets().getAbsolutePath()); + t = t.replace("${auth_access_token}", lr.getAccessToken()); + t = t.replace("${user_type}", lr.getUserType()); + t = t.replace("${assets_index_name}", version.assets == null ? "legacy" : version.assets); + t = t.replace("${user_properties}", lr.getUserProperties()); + t = t.replace("${user_property_map}", lr.getUserPropertyMap()); + res.add(t); + } + + if (res.indexOf("--gameDir") != -1 && res.indexOf("--workDir") != -1) { + res.add("--workDir"); + res.add(gameDir.getAbsolutePath()); + } + } + + @Override + protected void appendJVMArgs(List list) { + super.appendJVMArgs(list); + + try { + if (OS.os() == OS.OSX) { + list.add("-Xdock:icon=" + MCUtils.getAssetObject(C.gson, v.getCanonicalGameDir(), version.assets, "icons/minecraft.icns").getAbsolutePath()); + list.add("-Xdock:name=Minecraft"); + } + } catch (IOException e) { + HMCLog.err("Failed to append jvm arguments when searching for asset objects.", e); + } + } + + private File reconstructAssets() { + File assetsDir = new File(provider.getBaseFolder(), "assets"); + File indexDir = new File(assetsDir, "indexes"); + File objectDir = new File(assetsDir, "objects"); + String assetVersion = version.assets == null ? "legacy" : version.assets; + File indexFile = new File(indexDir, assetVersion + ".json"); + File virtualRoot = new File(new File(assetsDir, "virtual"), assetVersion); + + if (!indexFile.isFile()) { + HMCLog.warn("No assets index file " + virtualRoot + "; can't reconstruct assets"); + return virtualRoot; + } + + try { + AssetsIndex index = (AssetsIndex) C.gson.fromJson(FileUtils.readFileToString(indexFile, "UTF-8"), AssetsIndex.class); + + if (index.isVirtual()) { + HMCLog.log("Reconstructing virtual assets folder at " + virtualRoot); + for (Map.Entry entry : index.getFileMap().entrySet()) { + File target = new File(virtualRoot, (String) entry.getKey()); + File original = new File(new File(objectDir, ((AssetsObject) entry.getValue()).getHash().substring(0, 2)), ((AssetsObject) entry.getValue()).getHash()); + + if (!target.isFile()) + FileUtils.copyFile(original, target, false); + } + } + } catch (IOException e) { + HMCLog.warn("Failed to create virutal assets.", e); + } + + return virtualRoot; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReport.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReport.java new file mode 100644 index 000000000..52c5c4b90 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReport.java @@ -0,0 +1,59 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils; + +import java.text.DateFormat; +import java.util.Date; +import javax.swing.SwingUtilities; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.Main; +import org.jackhuang.hellominecraft.launcher.launch.MinecraftCrashAdvicer; +import org.jackhuang.hellominecraft.utils.UpdateChecker; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.views.LogWindow; + +/** + * + * @author hyh + */ +public class CrashReport implements Thread.UncaughtExceptionHandler { + + boolean enableLogger = false; + + public CrashReport(boolean enableLogger) { + this.enableLogger = enableLogger; + } + + @Override + public void uncaughtException(Thread t, Throwable e) { + try { + String text = "\n---- Hello Minecraft! Crash Report ----\n"; + text += " Version: " + Main.makeVersion() + "\n"; + text += " Time: " + DateFormat.getDateInstance().format(new Date()) + "\n"; + text += " Thread: " + t.toString() + "\n"; + text += "\n Advice: \n "; + text += MinecraftCrashAdvicer.getAdvice(e, true); + text += "\n Content: \n "; + text += StrUtils.getStackTrace(e) + "\n\n"; + text += "-- System Details --\n"; + text += " Operating System: " + System.getProperty("os.name") + " (" + System.getProperty("os.arch") + ") version " + System.getProperty("os.version") + "\n"; + text += " Java Version: " + System.getProperty("java.version") + ", " + System.getProperty("java.vendor") + "\n"; + text += " Java VM Version: " + System.getProperty("java.vm.name") + " (" + System.getProperty("java.vm.info") + "), " + System.getProperty("java.vm.vendor") + "\n"; + if (enableLogger) HMCLog.err(text); + else System.out.println(text); + SwingUtilities.invokeLater(() -> LogWindow.instance.showAsCrashWindow(UpdateChecker.OUT_DATED)); + } catch (Throwable ex) { + try { + MessageBox.Show(e.getMessage() + "\n" + ex.getMessage(), "ERROR", MessageBox.ERROR_MESSAGE); + } catch (Throwable exx) { + System.out.println("Failed to catch exception thrown by " + t + " on " + Main.makeVersion() + "."); + exx.printStackTrace(); + } + } + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java new file mode 100644 index 000000000..5a7c0dcf6 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java @@ -0,0 +1,306 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import java.io.File; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.assets.AssetsIndex; +import org.jackhuang.hellominecraft.launcher.utils.assets.AssetsObject; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.version.MinecraftRemoteVersions; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.jackhuang.hellominecraft.utils.ArrayUtils; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MinecraftVersionRequest; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.OS; + +/** + * + * @author huang + */ +public final class MCUtils { + + public static File getAssetObject(Gson gson, String dir, String assetVersion, String name) throws IOException { + File assetsDir = new File(dir, "assets"); + File indexDir = new File(assetsDir, "indexes"); + File objectsDir = new File(assetsDir, "objects"); + File indexFile = new File(indexDir, assetVersion + ".json"); + try { + AssetsIndex index = (AssetsIndex) gson.fromJson(FileUtils.readFileToString(indexFile, "UTF-8"), AssetsIndex.class); + + String hash = ((AssetsObject) index.getFileMap().get(name)).getHash(); + return new File(objectsDir, hash.substring(0, 2) + "/" + hash); + } catch(JsonSyntaxException e) { + throw new IOException("Assets file format malformed.", e); + } + } + + private static int lessThan32(byte[] b, int x) { + for (; x < b.length; x++) { + if (b[x] < 32) { + return x; + } + } + return -1; + } + + private static MinecraftVersionRequest getVersionOfOldMinecraft(ZipFile paramZipFile, ZipEntry paramZipEntry) throws IOException { + MinecraftVersionRequest r = new MinecraftVersionRequest(); + byte[] tmp = NetUtils.getBytesFromStream(paramZipFile.getInputStream(paramZipEntry)); + + byte[] arrayOfByte = "Minecraft Minecraft ".getBytes("ASCII"); + int j; + if ((j = ArrayUtils.matchArray(tmp, arrayOfByte)) < 0) { + r.type = MinecraftVersionRequest.Unkown; + return r; + } + int i = j + arrayOfByte.length; + + if ((j = lessThan32(tmp, i)) < 0) { + r.type = MinecraftVersionRequest.Unkown; + return r; + } + String ver = new String(tmp, i, j - i, "ASCII"); + r.version = ver; + + if (paramZipFile.getEntry("META-INF/MANIFEST.MF") == null) { + r.type = MinecraftVersionRequest.Modified; + } else { + r.type = MinecraftVersionRequest.OK; + } + return r; + } + + private static MinecraftVersionRequest getVersionOfNewMinecraft(ZipFile file, ZipEntry entry) throws IOException { + MinecraftVersionRequest r = new MinecraftVersionRequest(); + byte[] tmp = NetUtils.getBytesFromStream(file.getInputStream(entry)); + + byte[] str = "-server.txt".getBytes("ASCII"); + int j = ArrayUtils.matchArray(tmp, str); + if (j < 0) { + r.type = MinecraftVersionRequest.Unkown; + return r; + } + int i = j + str.length; + i += 11; + j = lessThan32(tmp, i); + if (j < 0) { + r.type = MinecraftVersionRequest.Unkown; + return r; + } + r.version = new String(tmp, i, j - i, "ASCII"); + + char ch = r.version.charAt(0); + // 1.8.1+ + if(ch < '0' || ch > '9') { + str = "Can't keep up! Did the system time change, or is the server overloaded?".getBytes("ASCII"); + j = ArrayUtils.matchArray(tmp, str); + if (j < 0) { + r.type = MinecraftVersionRequest.Unkown; + return r; + } + i = -1; + while (j > 0) { + if(tmp[j] >= 48 && tmp[j] <= 57) { + i = j; + break; + } + j--; + } + if (i == -1) { + r.type = MinecraftVersionRequest.Unkown; + return r; + } + int k = i; + while (tmp[k] >= 48 && tmp[k] <= 57 || tmp[k] == 46) k--; + k++; + r.version = new String(tmp, k, i - k + 1); + } + + if (file.getEntry("META-INF/MANIFEST.MF") == null) { + r.type = MinecraftVersionRequest.Modified; + } else { + r.type = MinecraftVersionRequest.OK; + } + return r; + } + + public static MinecraftVersionRequest minecraftVersion(File file) { + MinecraftVersionRequest r = new MinecraftVersionRequest(); + if (!file.exists()) { + r.type = MinecraftVersionRequest.NotFound; + return r; + } + if (!file.isFile()) { + r.type = MinecraftVersionRequest.NotAFile; + return r; + } + if (!file.canRead()) { + r.type = MinecraftVersionRequest.NotReadable; + return r; + } + ZipFile localZipFile = null; + try { + localZipFile = new ZipFile(file); + ZipEntry minecraft = localZipFile + .getEntry("net/minecraft/client/Minecraft.class"); + if (minecraft != null) { + return getVersionOfOldMinecraft(localZipFile, minecraft); + } + ZipEntry main = localZipFile.getEntry("net/minecraft/client/main/Main.class"); + ZipEntry minecraftserver = localZipFile.getEntry("net/minecraft/server/MinecraftServer.class"); + if ((main != null) && (minecraftserver != null)) { + return getVersionOfNewMinecraft(localZipFile, minecraftserver); + } + r.type = MinecraftVersionRequest.Invaild; + return r; + } catch (IOException localException) { + HMCLog.warn("Zip file is invalid", localException); + r.type = MinecraftVersionRequest.InvaildJar; + return r; + } finally { + if (localZipFile != null) { + try { + localZipFile.close(); + } catch (IOException ex) { + HMCLog.warn("Failed to close zip file", ex); + } + } + } + } + + public static File getLocation() { + String localObject = "minecraft"; + String str1 = System.getProperty("user.home", "."); + File file; + OS os = OS.os(); + if (os == OS.LINUX) { + file = new File(str1, '.' + (String) localObject + '/'); + } else if (os == OS.WINDOWS) { + String str2; + if ((str2 = System.getenv("APPDATA")) != null) { + file = new File(str2, "." + (String) localObject + '/'); + } else { + file = new File(str1, '.' + (String) localObject + '/'); + } + } else if (os == OS.OSX) { + file = new File(str1, "Library/Application Support/" + localObject); + } else { + file = new File(str1, localObject + '/'); + } + return file; + } + + public static boolean is16Folder(String path) { + path = IOUtils.addSeparator(path); + return new File(path, "versions").exists(); + } + + public static String minecraft() { + String os = System.getProperty("os.name").trim().toLowerCase(); + if (os.contains("mac")) { + return "minecraft"; + } + return ".minecraft"; + } + + public static File getInitGameDir() { + File gameDir = IOUtils.currentDir(); + if (gameDir.exists()) { + gameDir = new File(gameDir, MCUtils.minecraft()); + if (!gameDir.exists()) { + File newFile = MCUtils.getLocation(); + if(newFile.exists()) gameDir = newFile; + } + } + return gameDir; + } + + public static MinecraftVersion downloadMinecraft(File gameDir, String id, DownloadType sourceType) { + String vurl = sourceType.getProvider().getVersionsDownloadURL() + id + "/"; + File vpath = new File(gameDir, "versions/" + id); + File mvt = new File(vpath, id + ".json"); + File mvj = new File(vpath, id + ".jar"); + vpath.mkdirs(); + mvt.delete(); + mvj.delete(); + + if (TaskWindow.getInstance() + .addTask(new FileDownloadTask(vurl + id + ".json", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".json")) + .addTask(new FileDownloadTask(vurl + id + ".jar", IOUtils.tryGetCanonicalFile(mvj)).setTag(id + ".jar")) + .start()) { + MinecraftVersion mv = new Gson().fromJson(FileUtils.readFileToStringQuietly(mvt), MinecraftVersion.class); + //File apath = new File(gameDir, "assets/indexes"); + //downloadMinecraftAssetsIndex(apath, mv.assets, sourceType); + return mv; + } + return null; + } + + public static boolean downloadMinecraftVersionJson(File gameDir, String id, DownloadType sourceType) { + String vurl = sourceType.getProvider().getVersionsDownloadURL() + id + "/"; + File vpath = new File(gameDir, "versions/" + id); + File mvv = new File(vpath, id + ".json"), moved = null; + if (mvv.exists()) { + moved = new File(vpath, id + "-renamed.json"); + mvv.renameTo(moved); + } + File mvt = new File(vpath, id + ".json"); + vpath.mkdirs(); + if (TaskWindow.getInstance() + .addTask(new FileDownloadTask(vurl + id + ".json", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".json")) + .start()) { + if (moved != null) { + moved.delete(); + } + return true; + } else { + mvt.delete(); + if (moved != null) { + moved.renameTo(mvt); + } + return false; + } + } + + public static boolean downloadMinecraftAssetsIndex(File assetsLocation, String assetsId, DownloadType sourceType) { + String aurl = sourceType.getProvider().getIndexesDownloadURL(); + + assetsLocation.mkdirs(); + File assetsIndex = new File(assetsLocation, "indexes/" + assetsId + ".json"); + File renamed = null; + if (assetsIndex.exists()) { + renamed = new File(assetsLocation, "indexes/" + assetsId + "-renamed.json"); + assetsIndex.renameTo(renamed); + } + if (TaskWindow.getInstance() + .addTask(new FileDownloadTask(aurl + assetsId + ".json", IOUtils.tryGetCanonicalFile(assetsIndex)).setTag(assetsId + ".json")) + .start()) { + if (renamed != null) { + renamed.delete(); + } + return true; + } + if (renamed != null) { + renamed.renameTo(assetsIndex); + } + return false; + } + + public static MinecraftRemoteVersions getRemoteMinecraftVersions(DownloadType sourceType) throws IOException { + String result = NetUtils.doGet(sourceType.getProvider().getVersionsListDownloadURL()); + return MinecraftRemoteVersions.fromJson(result); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsIndex.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsIndex.java new file mode 100644 index 000000000..249981e60 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsIndex.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +/** + * + * @author hyh + */ +public class AssetsIndex { + + public static final String DEFAULT_ASSET_NAME = "legacy"; + private Map objects; + private boolean virtual; + + public AssetsIndex() { + this.objects = new LinkedHashMap(); + } + + public Map getFileMap() { + return this.objects; + } + + public Set getUniqueObjects() { + return new HashSet(this.objects.values()); + } + + public boolean isVirtual() { + return this.virtual; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java new file mode 100644 index 000000000..67d0ae0ee --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java @@ -0,0 +1,91 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.EventHandler; +import org.jackhuang.hellominecraft.utils.MathUtils; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * + * @author hyh + */ +public class AssetsLoader extends Thread { + + Document doc; + Element root; + NodeList nodes; + public String uri; + ArrayList al; + public final EventHandler failedEvent = new EventHandler(this); + public final EventHandler> successEvent = new EventHandler>(this); + + AssetsLoader(String uri) { + this.uri = uri; + } + + private Contents modifyContents(NodeList contents) { + Contents ret = new Contents(); + for (int i = 0; i < contents.getLength(); i++) { + Node result = contents.item(i); + if (result.getNodeType() == Node.ELEMENT_NODE) { + if (result.getNodeName().equalsIgnoreCase("Key")) { + ret.key = result.getTextContent(); + } + if (result.getNodeName().equalsIgnoreCase("ETag")) { + ret.eTag = result.getTextContent(); + } + if (result.getNodeName().equalsIgnoreCase("LastModified")) { + ret.lastModified = result.getTextContent(); + } + if (result.getNodeName().equalsIgnoreCase("Size")) { + ret.size = MathUtils.parseInt(result.getTextContent(), 0); + } + if (result.getNodeName().equalsIgnoreCase("StorageClass")) { + ret.storageClass = result.getTextContent(); + } + } + } + return ret; + } + + @Override + public void run() { + Thread.currentThread().setName("AssetsLoader"); + al = new ArrayList(); + try { + HMCLog.log("AssetsLoader - Download begin."); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = factory.newDocumentBuilder(); + doc = db.parse(uri); + HMCLog.log("AssetsLoader - Download end and format begin."); + root = doc.getDocumentElement(); + nodes = root.getChildNodes(); + for (int i = 0; i < nodes.getLength(); i++) { + Node result = nodes.item(i); + if (result.getNodeType() == Node.ELEMENT_NODE && result.getNodeName().equals("Contents")) { + Contents c = modifyContents(result.getChildNodes()); + if(c.key != null) + al.add(c); + } + } + HMCLog.log("AssetsLoader - Format end."); + + successEvent.execute(al); + } catch (Exception e) { + HMCLog.warn("AssetsLoader - Failed", e); + failedEvent.execute(e); + } + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java new file mode 100644 index 000000000..7f3877382 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java @@ -0,0 +1,18 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +import java.util.ArrayList; + +/** + * + * @author hyh + */ +public interface AssetsLoaderListener { + + void OnDone(ArrayList loader); + + void OnFailed(Exception e); +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java new file mode 100644 index 000000000..f2279826f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java @@ -0,0 +1,99 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.launcher.utils.MCUtils; +import org.jackhuang.hellominecraft.launcher.utils.download.IDownloadProvider; +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.utils.VersionNumber; + +/** + * + * @author hyh + */ +public class AssetsMojangLoader extends IAssetsHandler { + + public AssetsMojangLoader(String name) { + super(name); + } + + @Override + public void getList(final Consumer dl) { + if (mv == null) { + dl.accept(null); + return; + } + String assetsId = mv.assets == null ? "legacy" : mv.assets; + File assets = mp.getAssets(); + HMCLog.log("Get index: " + assetsId); + File f = IOUtils.tryGetCanonicalFile(new File(assets, "indexes/" + assetsId + ".json")); + if (!f.exists() && !MCUtils.downloadMinecraftAssetsIndex(assets, assetsId, Settings.s().getDownloadSource())) { + dl.accept(null); + return; + } + + String result; + try { + result = FileUtils.readFileToString(f); + } catch (IOException ex) { + HMCLog.warn("Failed to read index json: " + f, ex); + dl.accept(null); + return; + } + if (StrUtils.isBlank(result)) { + HMCLog.err("Index json is empty, please redownload it!"); + dl.accept(null); + return; + } + AssetsIndex o; + try { + o = C.gson.fromJson(result, AssetsIndex.class); + } catch (Exception e) { + HMCLog.err("Failed to parse index json, please redownload it!", e); + dl.accept(null); + return; + } + assetsDownloadURLs = new ArrayList<>(); + assetsLocalNames = new ArrayList<>(); + ArrayList al = new ArrayList<>(); + contents = new ArrayList<>(); + if (o != null && o.getFileMap() != null) + for (Map.Entry e : o.getFileMap().entrySet()) { + Contents c = new Contents(); + c.key = e.getValue().getHash().substring(0, 2) + "/" + e.getValue().getHash(); + c.eTag = e.getValue().getHash(); + c.size = e.getValue().getSize(); + contents.add(c); + assetsDownloadURLs.add(c.key); + assetsLocalNames.add(new File(assets, "objects" + File.separator + c.key.replace("/", File.separator))); + al.add(e.getKey()); + } + + dl.accept(al.toArray(new String[1])); + } + + @Override + public Task getDownloadTask(IDownloadProvider sourceType) { + return new AssetsTask(sourceType.getAssetsDownloadURL()); + } + + @Override + public boolean isVersionAllowed(String formattedVersion) { + VersionNumber ur = VersionNumber.check(formattedVersion); + if (ur == null) return false; + return VersionNumber.check("1.6.0").compareTo(ur) <= 0; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java new file mode 100644 index 000000000..a14651c3e --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java @@ -0,0 +1,61 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +import java.io.File; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.download.IDownloadProvider; +import org.jackhuang.hellominecraft.utils.VersionNumber; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.utils.functions.Consumer; + +/** + * + * @author hyh + */ +public class AssetsMojangOldLoader extends IAssetsHandler { + + private static final String URL = "http://bmclapi.bangbang93.com/resources/"; + + public AssetsMojangOldLoader(String name) { + super(name); + } + + @Override + public void getList(final Consumer dl) { + AssetsLoader al = new AssetsLoader(URL); + al.failedEvent.register((sender, e) -> { + HMCLog.warn("Failed to get assets list.", e); + dl.accept(null); + return true; + }); + al.successEvent.register((sender, t) -> { + assetsDownloadURLs = new ArrayList<>(); + assetsLocalNames = new ArrayList<>(); + contents = t; + for (Contents c : t) { + assetsDownloadURLs.add(c.key); + assetsLocalNames.add(new File(mp.getAssets(), c.key.replace("/", File.separator))); + } + dl.accept(assetsDownloadURLs.toArray(new String[1])); + return true; + }); + new Thread(al).start(); + } + + @Override + public boolean isVersionAllowed(String formattedVersion) { + VersionNumber r = VersionNumber.check(formattedVersion); + if(r == null) return false; + return VersionNumber.check("1.7.2").compareTo(r) >= 0 && + VersionNumber.check("1.6.0").compareTo(r) <= 0; + } + + @Override + public Task getDownloadTask(IDownloadProvider sourceType) { + return new AssetsTask(URL); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java new file mode 100644 index 000000000..421e4d1ab --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +/** + * + * @author hyh + */ +public class AssetsObject { + private String hash; + private long size; + + public AssetsObject() { + } + + public String getHash() { + return this.hash; + } + + public long getSize() { + return this.size; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AssetsObject that = (AssetsObject) o; + if (this.size != that.size) return false; + return this.hash.equals(that.hash); + } + + @Override + public int hashCode() { + int result = this.hash.hashCode(); + result = 31 * result + (int) (this.size ^ this.size >>> 32); + return result; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/Contents.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/Contents.java new file mode 100644 index 000000000..51384eebc --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/Contents.java @@ -0,0 +1,16 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +/** + * + * @author hyh + */ +public class Contents { + + public String key, eTag, lastModified, storageClass; + public long size; + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java new file mode 100644 index 000000000..64e95dff3 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java @@ -0,0 +1,152 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.assets; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.utils.download.IDownloadProvider; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.utils.DigestUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; + +/** + * Assets + * + * @author hyh + */ +public abstract class IAssetsHandler { + + protected ArrayList assetsDownloadURLs; + protected ArrayList assetsLocalNames; + protected final String name; + protected List contents; + + public IAssetsHandler(String name) { + this.name = name; + } + + private static final List assetsHandlers = new ArrayList<>(); + + public static IAssetsHandler getAssetsHandler(int i) { + return assetsHandlers.get(i); + } + + public static List getAssetsHandlers() { + return assetsHandlers; + } + + static { + assetsHandlers.add(new AssetsMojangLoader(C.i18n("assets.list.1_7_3_after"))); + //assetsHandlers.add(new AssetsMojangOldLoader(C.i18n("assets.list.1_6"))); + } + + /** + * interface name + * + * @return + */ + public String getName() { + return name; + } + + /** + * All the files assets needed + * + * @param x finished event + */ + public abstract void getList(Consumer x); + + /** + * Will be invoked when the user invoked "Download all assets". + * + * @param sourceType Download Source + * @return Download File Task + */ + public abstract Task getDownloadTask(IDownloadProvider sourceType); + + /** + * assets path + */ + protected MinecraftVersion mv; + protected IMinecraftProvider mp; + + /** + * @param mp + * @param mv + */ + public void setAssets(IMinecraftProvider mp, MinecraftVersion mv) { + this.mp = mp; + this.mv = mv; + } + + public abstract boolean isVersionAllowed(String formattedVersion); + + protected class AssetsTask extends Task { + + ArrayList al; + String u; + int progress, max; + + public AssetsTask(String url) { + this.u = url; + } + + @Override + public boolean executeTask() { + if (mv == null || assetsDownloadURLs == null) { + setFailReason(new RuntimeException(C.i18n("assets.not_refreshed"))); + return false; + } + progress = 0; + max = assetsDownloadURLs.size(); + al = new ArrayList<>(); + for (int i = 0; i < max; i++) { + String mark = assetsDownloadURLs.get(i); + String url = u + mark; + File location = assetsLocalNames.get(i); + if (!location.getParentFile().exists()) location.getParentFile().mkdirs(); + if (location.isDirectory()) continue; + boolean need = true; + try { + if (location.exists()) { + FileInputStream fis = new FileInputStream(location); + String sha = DigestUtils.sha1Hex(NetUtils.getBytesFromStream(fis)); + IOUtils.closeQuietly(fis); + if (contents.get(i).eTag.equals(sha)) { + HMCLog.log("File " + assetsLocalNames.get(i) + " has downloaded successfully, skipped downloading."); + continue; + } + } + } catch (IOException e) { + HMCLog.warn("Failed to get hash: " + location, e); + need = !location.exists(); + } + if (need) al.add(new FileDownloadTask(url, location).setTag(mark)); + } + return true; + } + + @Override + public Collection getAfterTasks() { + return al; + } + + @Override + public String getInfo() { + return C.i18n("assets.download"); + } + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/BestLogin.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/BestLogin.java new file mode 100644 index 000000000..1a0bed932 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/BestLogin.java @@ -0,0 +1,95 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import org.jackhuang.hellominecraft.utils.DigestUtils; + +/** + * + * @author hyh + */ +public final class BestLogin extends IAuthenticator { + + public BestLogin(String clientToken) { + super(clientToken); + } + + @Override + public UserProfileProvider login(LoginInfo info) { + try { + String request = "bl:l:" + info.username + ":" + DigestUtils.sha1Hex(info.password); + + Socket socket = new Socket("auth.zhh0000zhh.com", 8); + OutputStream os = socket.getOutputStream(); + os.write(request.length()); + os.write(request.getBytes()); + + UserProfileProvider lr = new UserProfileProvider(); + lr.setSuccess(false); + + InputStream is = socket.getInputStream(); + int code = is.read(); + switch (code) { + case -1: + lr.setErrorReason("internet error."); + break; + case 200: + lr.setErrorReason("server restarting."); + break; + case 255: + lr.setErrorReason("unknown error"); + break; + case 3: + lr.setErrorReason("unregistered."); + break; + case 50: + lr.setErrorReason("please update your launcher and act your account."); + break; + case 2: + lr.setErrorReason("wrong password."); + break; + case 100: + lr.setErrorReason("server reloading."); + break; + case 0: + lr.setSuccess(true); + byte[] b = new byte[64]; + is.read(b, 0, b.length); + String[] ss = new String(b).split(":"); + lr.setUserName(info.username); + lr.setUserId(ss[1]); + lr.setSession(ss[0]); + lr.setAccessToken(ss[0]); + break; + } + lr.setUserType("Legacy"); + return lr; + } catch (Throwable t) { + UserProfileProvider lr = new UserProfileProvider(); + lr.setSuccess(false); + lr.setErrorReason(t.getMessage()); + return lr; + } + } + + @Override + public String getName() { + return "BestLogin"; + } + + @Override + public UserProfileProvider loginBySettings() { + return null; + } + + @Override + public void logout() { + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java new file mode 100644 index 000000000..852005385 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java @@ -0,0 +1,83 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +import java.util.ArrayList; +import java.util.List; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; + +/** + * Login interface + * + * @author hyh + */ +public abstract class IAuthenticator { + + public static final YggdrasilAuthenticator yggdrasilLogin; + public static final OfflineAuthenticator offlineLogin; + public static final SkinmeAuthenticator skinmeLogin; + //public static final BestLogin bestLogin; + + public static final List logins; + + static { + String clientToken = Settings.s().getClientToken(); + logins = new ArrayList<>(); + logins.add(offlineLogin = new OfflineAuthenticator(clientToken)); + logins.add(yggdrasilLogin = new YggdrasilAuthenticator(clientToken)); + logins.add(skinmeLogin = new SkinmeAuthenticator(clientToken)); + //logins.add(bestLogin = new BestLogin(clientToken)); + yggdrasilLogin.onLoadSettings(Settings.s().getYggdrasilConfig()); + + Runtime.getRuntime().addShutdownHook(new Thread() { + + @Override + public void run() { + Settings.s().setYggdrasilConfig(yggdrasilLogin.onSaveSettings()); + } + }); + } + + protected String clientToken; + + public IAuthenticator(String clientToken) { + this.clientToken = clientToken; + } + + /** + * Login Method + * + * @param info username & password + * @return login result + */ + public abstract UserProfileProvider login(LoginInfo info); + + /** + * + * @return the name of login method. + */ + public abstract String getName(); + + /** + * Has password? + * + * @return Will I hide password box? + */ + public boolean isHidePasswordBox() { + return false; + } + + public boolean isLoggedIn() { + return false; + } + + public void setRememberMe(boolean is) { + + } + + public abstract UserProfileProvider loginBySettings(); + + public abstract void logout(); +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/LoginInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/LoginInfo.java new file mode 100644 index 000000000..ff1537882 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/LoginInfo.java @@ -0,0 +1,18 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +/** + * + * @author hyh + */ +public final class LoginInfo { + public String username, password; + + public LoginInfo(String username, String password) { + this.username = username; + this.password = password; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java new file mode 100644 index 000000000..15b025651 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java @@ -0,0 +1,55 @@ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.DigestUtils; + +/** + * + * @author hyh + */ +public final class OfflineAuthenticator extends IAuthenticator { + + public OfflineAuthenticator(String clientToken) { + super(clientToken); + } + + @Override + public UserProfileProvider login(LoginInfo info) { + UserProfileProvider result = new UserProfileProvider(); + result.setSuccess(StrUtils.isNotBlank(info.username)); + result.setUserName(info.username); + String md5 = DigestUtils.md5Hex(info.username); + String uuid = md5.substring(0, 8) + '-' + md5.substring(8, 12) + '-' + md5.substring(12, 16) + '-' + md5.substring(16, 21) + md5.substring(21); + result.setSession(uuid); + result.setUserId(uuid); + result.setAccessToken("${auth_access_token}"); + result.setUserType("Legacy"); + result.setErrorReason(C.i18n("login.no_Player007")); + return result; + } + + @Override + public String getName() { + return C.i18n("login.methods.offline"); + } + + @Override + public boolean isHidePasswordBox() { + return true; + } + + @Override + public UserProfileProvider loginBySettings() { + return null; + } + + @Override + public void logout() { + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java new file mode 100644 index 000000000..e8e9443de --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java @@ -0,0 +1,125 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.DigestUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.views.Selector; + +/** + * + * @author hyh + */ +public final class SkinmeAuthenticator extends IAuthenticator { + + public SkinmeAuthenticator(String clientToken) { + super(clientToken); + } + + public String[] parseType1(String s) { + return s.split(","); + } + + public String getCharacter(String user, String hash, String $char) throws Exception { + if ($char == null) + return NetUtils.doGet( + "http://www.skinme.cc/api/login.php?user=" + user + "&hash=" + hash); + else + return NetUtils.doGet( + "http://www.skinme.cc/api/login.php?user=" + user + "&hash=" + hash + "&char=" + $char); + } + + @Override + public UserProfileProvider login(LoginInfo info) { + UserProfileProvider req = new UserProfileProvider(); + if (info.username == null || !info.username.contains("@")) { + req.setSuccess(false); + req.setErrorReason(C.i18n("login.not_email")); + return req; + } + try { + String usr = info.username.toLowerCase(); + String pwd = info.password; + + String str = DigestUtils.sha1Hex(usr); + String hashCode = DigestUtils.sha1Hex(DigestUtils.md5Hex(DigestUtils.sha1Hex(pwd) + pwd) + str); + String data = getCharacter(usr, hashCode, null); + String[] sl = data.split(":"); + if (null != sl[0]) switch (sl[0]) { + case "0": + req.setSuccess(false); + req.setErrorReason(sl[1]); + break; + case "1": { + req.setSuccess(true); + String[] s = parseType1(sl[1]); + req.setUserName(s[0]); + req.setSession(s[1]); + req.setUserId(s[1]); + req.setAccessToken(s[1]); + break; + } + case "2": { + req.setSuccess(true); + String[] charators = sl[1].split(";"); + int len = charators.length; + String[] $char = new String[len]; + String[] user = new String[len]; + System.out.println(sl[1]); + for (int i = 0; i < len; i++) { + String[] charator = charators[i].split(","); + $char[i] = charator[0]; + user[i] = charator[1]; + } + Selector s = new Selector(null, user, C.i18n("login.choose_charactor")); + s.setVisible(true); + if (s.sel == Selector.failedToSel) { + req.setSuccess(false); + req.setErrorReason(C.i18n("message.cancelled")); + } else { + int index = s.sel; + String character = $char[index]; + sl = getCharacter(usr, hashCode, character).split(":"); + String[] s2 = parseType1(sl[1]); + req.setUserName(s2[0]); + req.setSession(s2[1]); + req.setUserId(s2[1]); + req.setAccessToken(s2[1]); + } + break; + } + } + + req.setUserType("Legacy"); + return req; + } catch (Exception e) { + HMCLog.warn("Failed to login skinme.", e); + + req.setUserName(info.username); + req.setSuccess(false); + req.setUserType("Legacy"); + req.setErrorReason(e.getMessage()); + return req; + } + } + + @Override + public String getName() { + return "Skinme"; + } + + @Override + public UserProfileProvider loginBySettings() { + return null; + } + + @Override + public void logout() { + + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java new file mode 100644 index 000000000..9e91b2ea0 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java @@ -0,0 +1,112 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +/** + * + * @author hyh + */ +public final class UserProfileProvider { + + public String getUserName() { + return username; + } + + public void setUserName(String username) { + this.username = username; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getSession() { + return session; + } + + public void setSession(String session) { + this.session = session; + } + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + public boolean isSuccessful() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getErrorReason() { + return error; + } + + public void setErrorReason(String error) { + this.error = error; + } + + public String getUserProperties() { + return userProperties; + } + + public void setUserProperties(String userProperties) { + this.userProperties = userProperties; + } + + public String getUserPropertyMap() { + return userPropertyMap; + } + + public void setUserPropertyMap(String userPropertyMap) { + this.userPropertyMap = userPropertyMap; + } + + public String getOtherInfo() { + return otherInfo; + } + + public void setOtherInfo(String otherInfo) { + this.otherInfo = otherInfo; + } + + public String getClientIdentifier() { + return clientIdentifier; + } + + public void setClientIdentifier(String clientIdentifier) { + this.clientIdentifier = clientIdentifier; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + private String username = ""; + private String userId = ""; + private String session = ""; + private String accessToken = ""; + private boolean success = false; + private String error = ""; + private String userProperties = "{}"; + private String userPropertyMap = "{}"; + private String otherInfo = ""; + private String clientIdentifier = ""; + private String userType = "Offline"; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java new file mode 100644 index 000000000..7057caae4 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java @@ -0,0 +1,145 @@ +package org.jackhuang.hellominecraft.launcher.utils.auth; + +import com.google.gson.GsonBuilder; +import java.net.Proxy; +import java.util.Map; +import javax.swing.JOptionPane; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.ArrayUtils; +import org.jackhuang.hellominecraft.views.Selector; +import org.jackhuang.mojang.authlib.Agent; +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.UserType; +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import org.jackhuang.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; +import org.jackhuang.mojang.authlib.yggdrasil.YggdrasilUserAuthentication; +import org.jackhuang.mojang.util.LegacyPropertyMapSerializer; +import org.jackhuang.mojang.util.UUIDTypeAdapter; + +/** + * + * @author hyh + */ +public final class YggdrasilAuthenticator extends IAuthenticator { + + YggdrasilAuthenticationService service; + YggdrasilUserAuthentication ua; + + public YggdrasilAuthenticator(String clientToken) { + super(clientToken); + service = new YggdrasilAuthenticationService(Proxy.NO_PROXY, clientToken); + ua = (YggdrasilUserAuthentication)service.createUserAuthentication(Agent.MINECRAFT); + } + + @Override + public UserProfileProvider login(LoginInfo info) { + if(ua.canPlayOnline()) { + UserProfileProvider result = new UserProfileProvider(); + result.setUserName(info.username); + result.setSuccess(true); + result.setUserId(UUIDTypeAdapter.fromUUID(ua.getSelectedProfile().getId())); + result.setUserProperties(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new LegacyPropertyMapSerializer()).create().toJson(ua.getUserProperties())); + result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties())); + result.setAccessToken(ua.getAuthenticatedToken()); + result.setSession(ua.getAuthenticatedToken()); + result.setUserType(ua.getUserType().getName()); + return result; + } + UserProfileProvider result = new UserProfileProvider(); + String usr = info.username; + if(info.username == null || !info.username.contains("@")) { + result.setSuccess(false); + result.setErrorReason(C.i18n("login.not_email")); + return result; + } + String pwd = info.password; + + if(!ua.isLoggedIn()) + ua.setPassword(pwd); + ua.setUsername(usr); + try { + ua.logIn(); + if(!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password")); + GameProfile selectedProfile = ua.getSelectedProfile(); + GameProfile[] profiles = ua.getAvailableProfiles(); + String[] names; + String username; + if(selectedProfile == null) { + if(ArrayUtils.isNotEmpty(profiles)) { + names = new String[profiles.length]; + for(int i = 0; i < profiles.length; i++) { + names[i] = profiles[i].getName(); + } + Selector s = new Selector(null, names, C.i18n("login.choose_charactor")); + s.setVisible(true); + selectedProfile = profiles[s.sel]; + username = names[s.sel]; + } else { + username = JOptionPane.showInputDialog(C.i18n("login.no_charactor")); + } + } else { + username = selectedProfile.getName(); + } + result.setUserName(username); + result.setSuccess(true); + result.setUserId(UUIDTypeAdapter.fromUUID(selectedProfile.getId())); + result.setUserProperties(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new LegacyPropertyMapSerializer()).create().toJson(ua.getUserProperties())); + result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties())); + result.setAccessToken(ua.getAuthenticatedToken()); + result.setSession(ua.getAuthenticatedToken()); + result.setUserType(ua.getUserType().getName()); + } catch (Exception ex) { + result.setErrorReason(ex.getMessage()); + result.setSuccess(false); + result.setUserName(ua.getUserID()); + result.setUserType(UserType.MOJANG.getName()); + + HMCLog.err("Failed to login by yggdrasil authentication.", ex); + } + return result; + } + + @Override + public boolean isLoggedIn() { + return ua.isLoggedIn(); + } + + @Override + public String getName() { + return C.i18n("login.methods.yggdrasil"); + } + + public Map onSaveSettings() { + return ua.saveForStorage(); + } + + public void onLoadSettings(Map settings) { + if(settings == null) return; + ua.loadFromStorage(settings); + } + + @Override + public UserProfileProvider loginBySettings() { + UserProfileProvider info = new UserProfileProvider(); + try { + ua.logIn(); + if(!ua.isLoggedIn()) throw new Exception(C.i18n("WrongPassword")); + GameProfile profile = ua.getSelectedProfile(); + info.setUserName(profile.getName()); + info.setSuccess(true); + info.setUserId(profile.getId().toString()); + info.setAccessToken(ua.getAuthenticatedToken()); + } catch (Exception ex) { + info.setErrorReason(ex.getMessage()); + info.setSuccess(false); + info.setUserName(ua.getUserID()); + } + return info; + } + + @Override + public void logout() { + ua.logOut(); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java new file mode 100644 index 000000000..be7fafdc8 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java @@ -0,0 +1,70 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.download; + +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; + +/** + * + * @author huangyuhui + */ +public class BMCLAPIDownloadProvider implements IDownloadProvider { + + @Override + public InstallerVersionList getForgeInstaller() { + return org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl.ForgeBMCLVersionList.getInstance(); + } + + @Override + public InstallerVersionList getLiteLoaderInstaller() { + return org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersionList.getInstance(); + } + + @Override + public InstallerVersionList getOptiFineInstaller() { + return org.jackhuang.hellominecraft.launcher.utils.installers.optifine.bmcl.OptiFineBMCLVersionList.getInstance(); + } + + @Override + public InstallerVersionList getInstallerByType(String type) { + if(type.equalsIgnoreCase("forge")) return getForgeInstaller(); + if(type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller(); + if(type.equalsIgnoreCase("optifine")) return getOptiFineInstaller(); + return null; + } + + @Override + public String getLibraryDownloadURL() { + return "http://bmclapi2.bangbang93.com/libraries"; + } + + @Override + public String getVersionsDownloadURL() { + return "http://bmclapi2.bangbang93.com/versions/"; + } + + @Override + public String getIndexesDownloadURL() { + return "http://bmclapi2.bangbang93.com/indexes/"; + } + + @Override + public String getVersionsListDownloadURL() { + return "http://bmclapi2.bangbang93.com/versions/versions.json"; + } + + @Override + public String getAssetsDownloadURL() { + return "http://bmclapi2.bangbang93.com/assets/"; + } + + @Override + public boolean isAllowedToUseSelfURL() { + return false; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/DownloadType.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/DownloadType.java new file mode 100644 index 000000000..81a0a529a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/DownloadType.java @@ -0,0 +1,33 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.download; + +import org.jackhuang.hellominecraft.C; + +/** + * + * @author hyh + */ +public enum DownloadType { + Mojang(C.i18n("download.mojang"), new MojangDownloadProvider()), + BMCL(C.i18n("download.BMCL"), new BMCLAPIDownloadProvider()); + + private final String name; + private final IDownloadProvider provider; + + DownloadType(String a, IDownloadProvider provider) { + name = a; + this.provider = provider; + } + + public IDownloadProvider getProvider() { + return provider; + } + + public String getName() { + return name; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java new file mode 100644 index 000000000..9f5015ccc --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java @@ -0,0 +1,25 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.download; + +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; + +/** + * + * @author huangyuhui + */ +public interface IDownloadProvider { + InstallerVersionList getInstallerByType(String type); + InstallerVersionList getForgeInstaller(); + InstallerVersionList getLiteLoaderInstaller(); + InstallerVersionList getOptiFineInstaller(); + String getLibraryDownloadURL(); + String getVersionsDownloadURL(); + String getIndexesDownloadURL(); + String getVersionsListDownloadURL(); + String getAssetsDownloadURL(); + boolean isAllowedToUseSelfURL(); +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java new file mode 100644 index 000000000..4c0c4b72f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java @@ -0,0 +1,70 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.download; + +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; + +/** + * + * @author huangyuhui + */ +public class MojangDownloadProvider implements IDownloadProvider { + + @Override + public InstallerVersionList getForgeInstaller() { + return org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla.MinecraftForgeVersionList.getInstance(); + } + + @Override + public InstallerVersionList getLiteLoaderInstaller() { + return org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersionList.getInstance(); + } + + @Override + public InstallerVersionList getOptiFineInstaller() { + return org.jackhuang.hellominecraft.launcher.utils.installers.optifine.vanilla.OptiFineVersionList.getInstance(); + } + + @Override + public InstallerVersionList getInstallerByType(String type) { + if(type.equalsIgnoreCase("forge")) return getForgeInstaller(); + if(type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller(); + if(type.equalsIgnoreCase("optifine")) return getOptiFineInstaller(); + return null; + } + + @Override + public String getLibraryDownloadURL() { + return "https://libraries.minecraft.net"; + } + + @Override + public String getVersionsDownloadURL() { + return "https://s3.amazonaws.com/Minecraft.Download/versions/"; + } + + @Override + public String getIndexesDownloadURL() { + return "https://s3.amazonaws.com/Minecraft.Download/indexes/"; + } + + @Override + public String getVersionsListDownloadURL() { + return "https://s3.amazonaws.com/Minecraft.Download/versions/versions.json"; + } + + @Override + public String getAssetsDownloadURL() { + return "http://resources.download.minecraft.net/"; + } + + @Override + public boolean isAllowedToUseSelfURL() { + return true; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallProfile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallProfile.java new file mode 100644 index 000000000..125c118ba --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallProfile.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.launcher.utils.installers; + +import com.google.gson.annotations.SerializedName; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.launcher.utils.installers.forge.Install; + +/** + * + * @author hyh + */ +public class InstallProfile { + @SerializedName("install") + public Install install; + @SerializedName("versionInfo") + public MinecraftVersion versionInfo; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java new file mode 100644 index 000000000..0ecb7ac20 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java @@ -0,0 +1,56 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers; + +import java.util.Comparator; +import java.util.List; +import org.jackhuang.hellominecraft.utils.functions.Consumer; + +/** + * + * @author hyh + */ +public abstract class InstallerVersionList implements Consumer { + /** + * Refresh installer versions list from the downloaded content. + */ + public abstract void refreshList(String[] versions) throws Exception; + public abstract String getName(); + public abstract List getVersions(String mcVersion); + + public static class InstallerVersion implements Comparable { + public String selfVersion, mcVersion; + public String installer, universal; + public String changelog; + + public InstallerVersion(String selfVersion, String mcVersion) { + this.selfVersion = selfVersion; + this.mcVersion = mcVersion; + } + + @Override + public int compareTo(InstallerVersion o) { + return selfVersion.compareTo(o.selfVersion); + } + } + + public static class InstallerVersionComparator implements Comparator { + public static final InstallerVersionComparator INSTANCE = new InstallerVersionComparator(); + @Override + public int compare(InstallerVersion o1, InstallerVersion o2) { + return o2.compareTo(o1); + } + } + + @Override + public void accept(String[] v) { + try { + refreshList(v); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionNewerComparator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionNewerComparator.java new file mode 100644 index 000000000..45e5ba6f8 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionNewerComparator.java @@ -0,0 +1,21 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers; + +import java.util.Comparator; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList.InstallerVersion; + +/** + * + * @author hyh + */ +public class InstallerVersionNewerComparator implements Comparator { + + @Override + public int compare(InstallerVersion o1, InstallerVersion o2) { + return -o1.compareTo(o2); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java new file mode 100644 index 000000000..31c33d684 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java @@ -0,0 +1,35 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.utils.Compressor; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; + +/** + * + * @author hyh + */ +public class PackMinecraftInstaller { + + File dest; + ArrayList src; + + public PackMinecraftInstaller(ArrayList src, File dest) { + this.dest = dest; + this.src = src; + } + + public void install() throws IOException { + File file = new File(IOUtils.currentDir(), "HMCL-MERGE-TEMP"); + file.mkdirs(); + for (String src1 : src) Compressor.unzip(new File(src1), file); + Compressor.zip(file, dest); + FileUtils.deleteDirectory(file); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java new file mode 100644 index 000000000..35d587a21 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java @@ -0,0 +1,103 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge; + +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallProfile; +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author hyh + */ +public class ForgeInstaller extends Task { + + private final Gson gson = new Gson(); + public File gameDir; + public File forgeInstaller; + public IMinecraftProvider mp; + + public ForgeInstaller(IMinecraftProvider mp, File forgeInstaller) { + this.gameDir = mp.getBaseFolder(); + this.forgeInstaller = forgeInstaller; + this.mp = mp; + } + + @Override + public boolean executeTask() { + try { + HMCLog.log("Extracting install profiles..."); + + ZipFile zipFile = new ZipFile(forgeInstaller); + ZipEntry entry = zipFile.getEntry("install_profile.json"); + String content = NetUtils.getStreamContent(zipFile.getInputStream(entry)); + InstallProfile profile = gson.fromJson(content, InstallProfile.class); + + File from = new File(gameDir, "versions" + File.separator + profile.install.minecraft); + if(!from.exists()) { + if(MessageBox.Show(C.i18n("install.no_version_if_intall")) == MessageBox.YES_OPTION) { + if(!mp.install(profile.install.minecraft, Settings.s().getDownloadSource())) { + setFailReason(new RuntimeException(C.i18n("install.no_version"))); + } + } else { + setFailReason(new RuntimeException(C.i18n("install.no_version"))); + } + return false; + } + + File to = new File(gameDir, "versions" + File.separator + profile.install.target); + to.mkdirs(); + + HMCLog.log("Copying jar..." + profile.install.minecraft + ".jar to " + profile.install.target + ".jar"); + FileUtils.copyFile(new File(from, profile.install.minecraft + ".jar"), + new File(to, profile.install.target + ".jar")); + HMCLog.log("Creating new version profile..." + profile.install.target + ".json"); + FileUtils.write(new File(to, profile.install.target + ".json"), gson.toJson(profile.versionInfo)); + + HMCLog.log("Extracting universal forge pack..." + profile.install.filePath); + + entry = zipFile.getEntry(profile.install.filePath); + InputStream is = zipFile.getInputStream(entry); + + MinecraftLibrary forge = new MinecraftLibrary(profile.install.path); + forge.init(); + File file = new File(gameDir, "libraries/" + forge.formatted); + file.getParentFile().mkdirs(); + try (FileOutputStream fos = new FileOutputStream(file)) { + BufferedOutputStream bos = new BufferedOutputStream(fos); + int c; + while ((c = is.read()) != -1) bos.write((byte) c); + bos.close(); + } + return true; + } catch(IOException | JsonSyntaxException e) { + setFailReason(e); + return false; + } + } + + @Override + public String getInfo() { + return C.i18n("install.forge.install"); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeOldInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeOldInstaller.java new file mode 100644 index 000000000..a0017f1fc --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeOldInstaller.java @@ -0,0 +1,25 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.launcher.utils.installers.PackMinecraftInstaller; + +/** + * + * @author hyh + */ +public class ForgeOldInstaller { + + public static void install(String destMinecraftJar, String srcMinecraftJar, String forgeUniversal) throws IOException { + ArrayList al = new ArrayList(); + al.add(srcMinecraftJar); + al.add(forgeUniversal); + new PackMinecraftInstaller(al, new File(destMinecraftJar)).install(); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/Install.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/Install.java new file mode 100644 index 000000000..82598700b --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/Install.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.launcher.utils.installers.forge; + +/** + * + * @author hyh + */ +public class Install { + public String profileName; + public String target; + public String path; + public String version; + public String filePath; + public String welcome; + public String minecraft; + public String mirrorList; + public String logo; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/Downloads.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/Downloads.java new file mode 100644 index 000000000..ce6e91d9c --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/Downloads.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl; + +/** + * + * @author huangyuhui + */ +public class Downloads { + + public String changelog; + public String[] universal, src, javadoc, installer; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java new file mode 100644 index 000000000..72b5f7450 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java @@ -0,0 +1,87 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl; + +import com.google.gson.JsonSyntaxException; +import com.google.gson.reflect.TypeToken; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.ArrayUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; +import org.jackhuang.hellominecraft.utils.NetUtils; + +/** + * + * @author hyh + */ +public class ForgeBMCLVersionList extends InstallerVersionList { + + private static ForgeBMCLVersionList instance; + + public static ForgeBMCLVersionList getInstance() { + if (instance == null) instance = new ForgeBMCLVersionList(); + return instance; + } + + public ArrayList root; + public Map> versionMap; + public List versions; + + @Override + public void refreshList(String[] neededVersions) throws Exception { + if(versionMap == null) { + versionMap = new HashMap>(); + versions = new ArrayList(); + } + + for (String x : neededVersions) { + if(versionMap.containsKey(x)) continue; + String s = NetUtils.doGet("http://bmclapi2.bangbang93.com/forge/minecraft/" + x); + + if (s == null) { + continue; + } + + try { + root = C.gson.fromJson(s, new TypeToken>(){}.getType()); + for (ForgeVersion v : root) { + InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.minecraft)); + + List al = ArrayUtils.tryGetMapWithList(versionMap, StrUtils.formatVersion(v.minecraft)); + iv.changelog = v.downloads.changelog; + iv.installer = "http://bmclapi.bangbang93.com/forge/getforge/" + iv.mcVersion + "/" + iv.selfVersion; + iv.universal = ArrayUtils.getEnd(v.downloads.universal); + al.add(iv); + versions.add(iv); + } + } catch(JsonSyntaxException e) { + HMCLog.warn("Failed to parse BMCLAPI response.", e); + } + } + Collections.sort(versions, new InstallerVersionComparator()); + } + + @Override + public List getVersions(String mcVersion) { + if (versions == null || versionMap == null) return null; + if (StrUtils.isBlank(mcVersion)) return versions; + List c = versionMap.get(mcVersion); + if (c == null) return versions; + Collections.sort(c, InstallerVersionComparator.INSTANCE); + return c; + } + + @Override + public String getName() { + return "Forge - BMCLAPI (By: bangbang93)"; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java new file mode 100644 index 000000000..a8d7a45d9 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java @@ -0,0 +1,14 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl; + +/** + * + * @author hyh + */ +public class ForgeVersion { + public String time, minecraft, version, _id, __v; + public Downloads downloads; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java new file mode 100644 index 000000000..9ad018d19 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla; + +/** + * + * @author huangyuhui + */ +public class MinecraftForgeVersion { + public String branch, mcversion, jobver, version; + public int build; + public double modified; + public String[][] files; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java new file mode 100644 index 000000000..b86212373 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java @@ -0,0 +1,95 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionNewerComparator; +import org.jackhuang.hellominecraft.utils.NetUtils; + +/** + * + * @author hyh + */ +public class MinecraftForgeVersionList extends InstallerVersionList { + private static MinecraftForgeVersionList instance; + public static MinecraftForgeVersionList getInstance() { + if(instance == null) + instance = new MinecraftForgeVersionList(); + return instance; + } + + public MinecraftForgeVersionRoot root; + public Map> versionMap; + public List versions; + + @Override + public void refreshList(String[] needed) throws Exception { + String s = NetUtils.doGet(C.URL_FORGE_LIST); + if(root!=null) return; + + root = C.gson.fromJson(s, MinecraftForgeVersionRoot.class); + + versionMap = new HashMap>(); + versions = new ArrayList(); + + for(Map.Entry arr : root.mcversion.entrySet()) { + String mcver = StrUtils.formatVersion(arr.getKey()); + ArrayList al = new ArrayList(); + for(int num : arr.getValue()) { + MinecraftForgeVersion v = root.number.get(num); + InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.mcversion)); + for(String[] f : v.files) { + + String ver = v.mcversion + "-" + v.version; + if(!StrUtils.isBlank(v.branch)) { + ver = ver + "-" + v.branch; + } + String filename = root.artifact + "-" + ver + "-" + f[1] + "." + f[0]; + String url = root.webpath + "/" + ver + "/" + filename; + if(f[1].equals("installer")) { + iv.installer = url; + } else if(f[1].equals("universal")) { + iv.universal = url; + } else if(f[1].equals("changelog")) { + iv.changelog = url; + } + } + if(StrUtils.isBlank(iv.installer) || StrUtils.isBlank(iv.universal)) { + continue; + } + Collections.sort(al, new InstallerVersionNewerComparator()); + al.add(iv); + versions.add(iv); + } + + versionMap.put(StrUtils.formatVersion(mcver), al); + } + + Collections.sort(versions, new InstallerVersionComparator()); + } + + @Override + public List getVersions(String mcVersion) { + if (versions == null || versionMap == null) return null; + if(StrUtils.isBlank(mcVersion)) return versions; + List c = versionMap.get(mcVersion); + if(c == null) return versions; + Collections.sort(c, InstallerVersionComparator.INSTANCE); + return c; + } + + @Override + public String getName() { + return "Forge - MinecraftForge Offical Site"; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java new file mode 100644 index 000000000..db55d564e --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java @@ -0,0 +1,19 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla; + +import java.util.Map; + +/** + * + * @author hyh + */ +public class MinecraftForgeVersionRoot { + public String artifact, webpath, adfly, homepage, name; + public Map branches, mcversion; + public Map promos; + public Map number; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java new file mode 100644 index 000000000..03a7122cc --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java @@ -0,0 +1,90 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResult; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResultRegistrator; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; + +/** + * + * @author hyh + */ +public class LiteLoaderInstaller extends Task implements PreviousResultRegistrator { + + public LiteLoaderVersionList.LiteLoaderInstallerVersion version; + public File installer; + public Profile profile; + + public LiteLoaderInstaller(Profile profile, LiteLoaderVersionList.LiteLoaderInstallerVersion v) { + this(profile, v, null); + } + + public LiteLoaderInstaller(Profile profile, LiteLoaderVersionList.LiteLoaderInstallerVersion v, File installer) { + this.profile = profile; + this.version = v; + this.installer = installer; + } + + @Override + public boolean executeTask() { + if(profile == null || profile.getSelectedMinecraftVersion() == null) { + setFailReason(new RuntimeException(C.i18n("install.no_version"))); + return false; + } + if(pre.size() != 1 && installer == null) throw new IllegalStateException("No registered previous task."); + if(installer == null) + installer = pre.get(pre.size() - 1).getResult(); + try { + MinecraftVersion mv = (MinecraftVersion) profile.getSelectedMinecraftVersion().clone(); + mv.inheritsFrom = mv.id; + mv.jar = mv.jar == null ? mv.id : mv.jar; + mv.libraries = new ArrayList(Arrays.asList(version.libraries)); + + mv.libraries.add(0, new MinecraftLibrary("com.mumfrey:liteloader:" + version.selfVersion)); + FileUtils.copyFile(installer, new File(profile.getCanonicalGameDir(), "libraries/com/mumfrey/liteloader/" + version.selfVersion + "/liteloader-" + version.selfVersion + ".jar")); + + mv.id += "-LiteLoader" + version.selfVersion; + + if(!mv.mainClass.startsWith("net.minecraft.launchwrapper.")) { + mv.mainClass = "net.minecraft.launchwrapper.Launch"; + mv.minecraftArguments += " --tweakClass " + version.tweakClass; + } + File folder = new File(profile.getCanonicalGameDir(), "versions/" + mv.id); + folder.mkdirs(); + File json = new File(folder, mv.id + ".json"); + HMCLog.log("Creating new version profile..." + mv.id + ".json"); + FileUtils.write(json, C.gsonPrettyPrinting.toJson(mv)); + + return true; + } catch (Exception e) { + setFailReason(e); + return false; + } + } + + @Override + public String getInfo() { + return C.i18n("install.liteloader.install"); + } + + ArrayList> pre = new ArrayList(); + @Override + public Task registerPreviousResult(PreviousResult pr) { + pre.add(pr); + return this; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderMCVersions.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderMCVersions.java new file mode 100644 index 000000000..d1b9e9bfa --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderMCVersions.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader; + +import java.util.Map; + +/** + * + * @author huangyuhui + */ +public class LiteLoaderMCVersions { + public Map> artefacts; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersion.java new file mode 100644 index 000000000..9b18bc18d --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersion.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader; + +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary; + +/** + * + * @author huangyuhui + */ +public class LiteLoaderVersion { + public String tweakClass, file, version, md5, timestamp; + public MinecraftLibrary[] libraries; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java new file mode 100644 index 000000000..a8b2f6c87 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java @@ -0,0 +1,94 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList.InstallerVersion; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionNewerComparator; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; + +/** + * + * @author hyh + */ +public class LiteLoaderVersionList extends InstallerVersionList { + private static LiteLoaderVersionList instance; + public static LiteLoaderVersionList getInstance() { + if(instance == null) { + instance = new LiteLoaderVersionList(); + } + return instance; + } + + public LiteLoaderVersionsRoot root; + public Map> versionMap; + public List versions; + + @Override + public void refreshList(String[] needed) throws Exception { + String s = NetUtils.doGet(C.URL_LITELOADER_LIST); + if(root != null) return; + + root = C.gson.fromJson(s, LiteLoaderVersionsRoot.class); + + versionMap = new HashMap>(); + versions = new ArrayList(); + + for(Map.Entry arr : root.versions.entrySet()) { + ArrayList al = new ArrayList(); + LiteLoaderMCVersions mcv = arr.getValue(); + for(Map.Entry entry : mcv.artefacts.get("com.mumfrey:liteloader").entrySet()) { + if("latest".equals(entry.getKey())) continue; + LiteLoaderVersion v = entry.getValue(); + LiteLoaderInstallerVersion iv = new LiteLoaderInstallerVersion(v.version, StrUtils.formatVersion(arr.getKey())); + iv.universal = "http://dl.liteloader.com/versions/com/mumfrey/liteloader/" + arr.getKey() + "/" + v.file; + iv.tweakClass = v.tweakClass; + iv.libraries = Arrays.copyOf(v.libraries, v.libraries.length); + iv.installer = "http://dl.liteloader.com/redist/" + iv.mcVersion + "/liteloader-installer-" + iv.selfVersion.replace("_", "-") + ".jar"; + al.add(iv); + versions.add(iv); + } + Collections.sort(al, new InstallerVersionNewerComparator()); + versionMap.put(StrUtils.formatVersion(arr.getKey()), al); + } + + Collections.sort(versions, InstallerVersionComparator.INSTANCE); + } + + @Override + public List getVersions(String mcVersion) { + if (versions == null || versionMap == null) return null; + if(StrUtils.isBlank(mcVersion)) return versions; + List c = versionMap.get(mcVersion); + if(c == null) return versions; + Collections.sort(c, InstallerVersionComparator.INSTANCE); + return c; + } + + @Override + public String getName() { + return "LiteLoader - LiteLoader Official Site(By: Mumfrey)"; + } + + public static class LiteLoaderInstallerVersion extends InstallerVersion { + public MinecraftLibrary[] libraries; + public String tweakClass; + + public LiteLoaderInstallerVersion(String selfVersion, String mcVersion) { + super(selfVersion, mcVersion); + } + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsMeta.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsMeta.java new file mode 100644 index 000000000..1da5f165e --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsMeta.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader; + +/** + * + * @author huangyuhui + */ +public class LiteLoaderVersionsMeta { + public String description, authors, url; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsRoot.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsRoot.java new file mode 100644 index 000000000..17dc78118 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsRoot.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader; + +import java.util.Map; + +/** + * + * @author hyh + */ +public class LiteLoaderVersionsRoot { + public Map versions; + public LiteLoaderVersionsMeta meta; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java new file mode 100644 index 000000000..d71d43765 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java @@ -0,0 +1,87 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.optifine; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.zip.ZipFile; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResult; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResultRegistrator; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftLibrary; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; + +/** + * + * @author hyh + */ +public class OptiFineInstaller extends Task implements PreviousResultRegistrator { + + public File installer; + public Profile profile; + public String version; + + public OptiFineInstaller(Profile profile, String version) { + this(profile, version, null); + } + + public OptiFineInstaller(Profile profile, String version, File installer) { + this.profile = profile; + this.installer = installer; + this.version = version; + } + + @Override + public boolean executeTask() { + if(profile == null || profile.getSelectedMinecraftVersion() == null) { + setFailReason(new RuntimeException(C.i18n("install.no_version"))); + return false; + } + MinecraftVersion mv = (MinecraftVersion)profile.getSelectedMinecraftVersion().clone(); + + try { + mv.inheritsFrom = mv.id; + mv.jar = mv.jar == null ? mv.id : mv.jar; + mv.libraries.clear(); + mv.libraries.add(0, new MinecraftLibrary("optifine:OptiFine:" + version)); + FileUtils.copyFile(installer, new File(profile.getCanonicalGameDir(), "libraries/optifine/OptiFine/" + version + "/OptiFine-" + version + ".jar")); + + mv.id += "-" + version; + if(new ZipFile(installer).getEntry("optifine/OptiFineTweaker.class") != null) { + if(!mv.mainClass.startsWith("net.minecraft.launchwrapper.")) { + mv.mainClass = "net.minecraft.launchwrapper.Launch"; + mv.minecraftArguments += " --tweakClass optifine.OptiFineTweaker"; + mv.libraries.add(1, new MinecraftLibrary("net.minecraft:launchwrapper:1.7")); + } + } + File loc = new File(profile.getCanonicalGameDir(), "versions/" + mv.id); + loc.mkdirs(); + File json = new File(loc, mv.id + ".json"); + FileUtils.writeStringToFile(json, C.gsonPrettyPrinting.toJson(mv, MinecraftVersion.class)); + } catch (IOException ex) { + setFailReason(ex); + return false; + } + return true; + } + + @Override + public String getInfo() { + return "Optifine Installer"; + } + + ArrayList> pre = new ArrayList(); + @Override + public Task registerPreviousResult(PreviousResult pr) { + pre.add(pr); + return this; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java new file mode 100644 index 000000000..d72e02e2f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java @@ -0,0 +1,13 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.optifine; + +/** + * + * @author hyh + */ +public class OptiFineVersion { + public String dl, ver, date, mirror, mcver; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java new file mode 100644 index 000000000..226551497 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java @@ -0,0 +1,87 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.optifine.bmcl; + +import com.google.gson.reflect.TypeToken; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.ArrayUtils; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; +import org.jackhuang.hellominecraft.launcher.utils.installers.optifine.OptiFineVersion; +import org.jackhuang.hellominecraft.utils.tinystream.CollectionUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; + +/** + * + * @author hyh + */ +public class OptiFineBMCLVersionList extends InstallerVersionList { + + private static OptiFineBMCLVersionList instance; + + public static OptiFineBMCLVersionList getInstance() { + if (null == instance) + instance = new OptiFineBMCLVersionList(); + return instance; + } + + public ArrayList root; + public Map> versionMap; + public List versions; + + @Override + public void refreshList(String[] needed) throws Exception { + String s = NetUtils.doGet("http://bmclapi.bangbang93.com/optifine/versionlist"); + + versionMap = new HashMap<>(); + versions = new ArrayList<>(); + + if (s == null) return; + root = C.gson.fromJson(s, new TypeToken>() { + }.getType()); + for(OptiFineVersion v : root) { + v.mirror = v.mirror.replace("http://optifine.net/http://optifine.net/", "http://optifine.net/"); + + if (StrUtils.isBlank(v.mcver)) { + Pattern p = Pattern.compile("OptiFine (.*) HD"); + Matcher m = p.matcher(v.ver); + while (m.find()) v.mcver = m.group(1); + } + InstallerVersion iv = new InstallerVersion(v.ver, StrUtils.formatVersion(v.mcver)); + + List al = ArrayUtils.tryGetMapWithList(versionMap, StrUtils.formatVersion(v.mcver)); + String url = "http://bmclapi.bangbang93.com/optifine/" + iv.selfVersion.replace(" ", "%20"); + iv.installer = iv.universal = v.mirror; + al.add(iv); + versions.add(iv); + } + + Collections.sort(versions, InstallerVersionComparator.INSTANCE); + } + + @Override + public List getVersions(String mcVersion) { + if (versions == null || versionMap == null) return null; + if (StrUtils.isBlank(mcVersion)) return versions; + List c = versionMap.get(mcVersion); + if (c == null) return versions; + Collections.sort(c, InstallerVersionComparator.INSTANCE); + return c; + } + + @Override + public String getName() { + return "OptiFine - BMCLAPI(By: bangbang93)"; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java new file mode 100644 index 000000000..09833cac0 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java @@ -0,0 +1,49 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.optifine.vanilla; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResult; +import org.jackhuang.hellominecraft.utils.NetUtils; + +/** + * + * @author hyh + */ +public class OptiFineDownloadFormatter extends Task implements PreviousResult { + String url, result; + + public OptiFineDownloadFormatter(String url) { + this.url = url; + } + + @Override + public boolean executeTask() { + try { + String content = NetUtils.doGet(url); + Pattern p = Pattern.compile("\"downloadx\\?f=OptiFine(.*)\""); + Matcher m = p.matcher(content); + while(m.find()) result = m.group(1); + result = "http://optifine.net/downloadx?f=OptiFine" + result; + return true; + } catch (Exception ex) { + setFailReason(ex); + return false; + } + } + + @Override + public String getInfo() { + return "Get OptiFine Download Link."; + } + + @Override + public String getResult() { + return result; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineVersionList.java new file mode 100644 index 000000000..5bd3f8295 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineVersionList.java @@ -0,0 +1,119 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.installers.optifine.vanilla; + +import java.io.StringBufferInputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; +import org.jackhuang.hellominecraft.launcher.utils.installers.optifine.OptiFineVersion; +import org.jackhuang.hellominecraft.utils.ArrayUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +/** + * + * @author hyh + */ +public class OptiFineVersionList extends InstallerVersionList { + private static OptiFineVersionList instance; + public static OptiFineVersionList getInstance() { + if(null == instance) + instance = new OptiFineVersionList(); + return instance; + } + + + public ArrayList root = new ArrayList(); + public Map> versionMap; + public List versions; + + @Override + public void refreshList(String[] sss) throws Exception { + String content = NetUtils.doGet("http://optifine.net/downloads"); + if(versions != null) return; + versionMap = new HashMap>(); + versions = new ArrayList(); + + content = content.replace(" ", " ").replace(">", ">").replace("<", "<"); + + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = factory.newDocumentBuilder(); + Document doc = db.parse(new StringBufferInputStream(content)); + Element r = doc.getDocumentElement(); + NodeList tables = r.getElementsByTagName("table"); + for(int i = 0; i < tables.getLength(); i++) { + Element e = (Element)tables.item(i); + if("downloadTable".equals(e.getAttribute("class"))) { + NodeList tr = e.getElementsByTagName("tr"); + for(int k = 0; k < tr.getLength(); k++) { + NodeList downloadLine = ((Element)tr.item(k)).getElementsByTagName("td"); + OptiFineVersion v = new OptiFineVersion(); + for(int j = 0; j < downloadLine.getLength(); j++) { + Element td = (Element)downloadLine.item(j); + if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineMirror")) { + v.mirror = ((Element)td.getElementsByTagName("a").item(0)).getAttribute("href"); + } + if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineDownload")) { + v.dl = ((Element)td.getElementsByTagName("a").item(0)).getAttribute("href"); + } + if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineDate")) { + v.date = td.getTextContent(); + } + if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineFile")) { + v.ver = td.getTextContent(); + } + } + if(StrUtils.isBlank(v.mcver)) { + Pattern p = Pattern.compile("OptiFine (.*?) "); + Matcher m = p.matcher(v.ver); + while(m.find()) v.mcver = StrUtils.formatVersion(m.group(1)); + } + InstallerVersion iv = new InstallerVersion(v.ver, StrUtils.formatVersion(v.mcver)); + iv.installer = iv.universal = v.mirror; + root.add(v); + versions.add(iv); + + + List ivl = ArrayUtils.tryGetMapWithList(versionMap, StrUtils.formatVersion(v.mcver)); + ivl.add(iv); + } + } + } + } catch (Exception ex) { + throw new RuntimeException(ex); + } + + Collections.sort(versions, InstallerVersionComparator.INSTANCE); + } + + @Override + public String getName() { + return "OptiFine - OptiFine Official Site"; + } + + @Override + public List getVersions(String mcVersion) { + if (versions == null || versionMap == null) return null; + if(StrUtils.isBlank(mcVersion)) return versions; + List c = versionMap.get(mcVersion); + if(c == null) return versions; + Collections.sort(c, InstallerVersionComparator.INSTANCE); + return c; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java new file mode 100644 index 000000000..5fee69978 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java @@ -0,0 +1,151 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.settings; + +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import com.google.gson.annotations.SerializedName; +import java.util.Map; +import java.util.TreeMap; +import java.util.UUID; +import org.jackhuang.hellominecraft.utils.OS; + +/** + * + * @author hyh + */ +public final class Config { + @SerializedName("last") + private String last; + @SerializedName("bgpath") + private String bgpath; + @SerializedName("username") + private String username; + @SerializedName("clientToken") + private String clientToken; + @SerializedName("enableShadow") + private boolean enableShadow; + @SerializedName("theme") + private int theme; + + public int getTheme() { + return theme; + } + + public void setTheme(int theme) { + this.theme = theme; + Settings.save(); + } + + public boolean isEnableShadow() { + return enableShadow; + } + + public void setEnableShadow(boolean enableShadow) { + this.enableShadow = enableShadow; + Settings.save(); + } + + public String getLast() { + return last; + } + + public void setLast(String last) { + this.last = last; + Settings.save(); + } + + public String getBgpath() { + return bgpath; + } + + public void setBgpath(String bgpath) { + this.bgpath = bgpath; + Settings.save(); + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + Settings.save(); + } + + public String getClientToken() { + return clientToken; + } + + public int getLoginType() { + return logintype; + } + + public void setLoginType(int logintype) { + this.logintype = logintype; + Settings.save(); + } + + public int getDownloadType() { + return downloadtype; + } + + public void setDownloadType(int downloadtype) { + this.downloadtype = downloadtype; + Settings.save(); + } + + public TreeMap getConfigurations() { + if(configurations == null) + configurations = new TreeMap(); + return configurations; + } + + public boolean isCheckUpdate() { + return checkUpdate; + } + + public void setCheckUpdate(boolean checkUpdate) { + this.checkUpdate = checkUpdate; + Settings.save(); + } + + public Map getYggdrasilConfig() { + return yggdrasil; + } + + public void setYggdrasilConfig(Map yggdrasil) { + this.yggdrasil = yggdrasil; + Settings.save(); + } + + @SerializedName("logintype") + private int logintype; + @SerializedName("downloadtype") + private int downloadtype; + @SerializedName("configurations") + private TreeMap configurations; + @SerializedName("checkUpdate") + private boolean checkUpdate; + @SerializedName("yggdrasil") + private Map yggdrasil; + + public Config() + { + clientToken = UUID.randomUUID().toString(); + username = ""; + logintype = downloadtype = 0; + checkUpdate = true; + configurations = new TreeMap(); + Profile profile = new Profile(); + configurations.put(profile.getName(), profile); + enableShadow = OS.os() == OS.WINDOWS; + theme = 0; + } + + public DownloadType getDownloadSource() { + if(downloadtype >= DownloadType.values().length || downloadtype < 0) return null; + return DownloadType.values()[downloadtype]; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Profile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Profile.java new file mode 100644 index 000000000..9ad0470ff --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Profile.java @@ -0,0 +1,297 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.settings; + +import java.io.File; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.launcher.utils.MCUtils; +import org.jackhuang.hellominecraft.launcher.utils.version.GameDirType; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.Utils; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersionManager; + +/** + * + * @author hyh + */ +public final class Profile { + + private String name, selectedMinecraftVersion = "", javaArgs, minecraftArgs, maxMemory, permSize, width, height, userProperties; + private String gameDir, javaDir, wrapperLauncher, serverIp; + private boolean fullscreen, debug, noJVMArgs, canceledWrapper; + + /** + * 0 - Close the launcher when the game starts.
+ * 1 - Hide the launcher when the game starts.
+ * 2 - Keep the launcher open.
+ */ + private int launcherVisibility; + + /** + * 0 - .minecraft
+ * 1 - .minecraft/versions/<version>/
+ */ + private int gameDirType; + + protected transient IMinecraftProvider minecraftProvider; + + public Profile() { + this("Default"); + } + + public Profile(String name) { + this.name = name; + gameDir = MCUtils.getInitGameDir().getPath(); + debug = fullscreen = canceledWrapper = false; + javaDir = IOUtils.getJavaDir(); + launcherVisibility = gameDirType = 0; + minecraftArgs = serverIp = ""; + } + + public Profile(Profile v) { + this(); + if (v == null) { + return; + } + name = v.name; + gameDir = v.gameDir; + maxMemory = v.maxMemory; + width = v.width; + height = v.height; + fullscreen = v.fullscreen; + javaArgs = v.javaArgs; + javaDir = v.javaDir; + debug = v.debug; + minecraftArgs = v.minecraftArgs; + permSize = v.permSize; + gameDirType = v.gameDirType; + canceledWrapper = v.canceledWrapper; + noJVMArgs = v.noJVMArgs; + launcherVisibility = v.launcherVisibility; + wrapperLauncher = v.wrapperLauncher; + serverIp = v.serverIp; + } + + public IMinecraftProvider getMinecraftProvider() { + if(minecraftProvider == null) minecraftProvider = new MinecraftVersionManager(this); + return minecraftProvider; + } + + public MinecraftVersion getSelectedMinecraftVersion() { + if (StrUtils.isBlank(selectedMinecraftVersion)) { + MinecraftVersion v = getMinecraftProvider().getOneVersion(); + if (v == null) { + return null; + } + selectedMinecraftVersion = v.id; + return v; + } + MinecraftVersion v = getMinecraftProvider().getVersionById(selectedMinecraftVersion); + if(v == null) v = getMinecraftProvider().getOneVersion(); + if(v != null) setSelectedMinecraftVersion(v.id); + return v; + } + + public String getGameDir() { + if (StrUtils.isBlank(gameDir)) { + gameDir = MCUtils.getInitGameDir().getPath(); + } + return IOUtils.addSeparator(gameDir); + } + + public String getCanonicalGameDir() { + return IOUtils.tryGetCanonicalFolderPath(getGameDirFile()); + } + + public File getCanonicalGameDirFile() { + return IOUtils.tryGetCanonicalFile(getGameDirFile()); + } + + public File getGameDirFile() { + return new File(getGameDir()); + } + + public Profile setGameDir(String gameDir) { + this.gameDir = gameDir; + Settings.save(); + return this; + } + + public String getJavaDir() { + if (StrUtils.isBlank(javaDir)) { + javaDir = IOUtils.getJavaDir(); + } + return javaDir; + } + + public File getJavaDirFile() { + return new File(getJavaDir()); + } + + public void setJavaDir(String javaDir) { + this.javaDir = javaDir; + Settings.save(); + } + + public File getFolder(String folder) { + return new File(getGameDir(), folder); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public void setSelectedMinecraftVersion(String selectedMinecraftVersion) { + this.selectedMinecraftVersion = selectedMinecraftVersion; + } + + public String getJavaArgs() { + if(StrUtils.isBlank(javaArgs)) return ""; + return javaArgs; + } + + public void setJavaArgs(String javaArgs) { + this.javaArgs = javaArgs; + Settings.save(); + } + + public boolean hasJavaArgs() { + return StrUtils.isNotBlank(getJavaArgs().trim()); + } + + public String getMaxMemory() { + if(StrUtils.isBlank(maxMemory)) return String.valueOf(Utils.getSuggestedMemorySize()); + return maxMemory; + } + + public void setMaxMemory(String maxMemory) { + this.maxMemory = maxMemory; + Settings.save(); + } + + public String getWidth() { + if(StrUtils.isBlank(width)) return "854"; + return width; + } + + public void setWidth(String width) { + this.width = width; + } + + public String getHeight() { + if(StrUtils.isBlank(height)) return "480"; + return height; + } + + public void setHeight(String height) { + this.height = height; + Settings.save(); + } + + public String getUserProperties() { + if(userProperties == null) return ""; + return userProperties; + } + + public void setUserProperties(String userProperties) { + this.userProperties = userProperties; + } + + public boolean isFullscreen() { + return fullscreen; + } + + public void setFullscreen(boolean fullscreen) { + this.fullscreen = fullscreen; + Settings.save(); + } + + public boolean isDebug() { + return debug; + } + + public void setDebug(boolean debug) { + this.debug = debug; + Settings.save(); + } + + public int getLauncherVisibility() { + return launcherVisibility; + } + + public void setLauncherVisibility(int launcherVisibility) { + this.launcherVisibility = launcherVisibility; + Settings.save(); + } + + public GameDirType getGameDirType() { + return GameDirType.values()[gameDirType]; + } + + public void setGameDirType(GameDirType gameDirType) { + this.gameDirType = gameDirType.ordinal(); + Settings.save(); + } + + public String getPermSize() { + return permSize; + } + + public void setPermSize(String permSize) { + this.permSize = permSize; + Settings.save(); + } + + public boolean isNoJVMArgs() { + return noJVMArgs; + } + + public void setNoJVMArgs(boolean noJVMArgs) { + this.noJVMArgs = noJVMArgs; + } + + public String getMinecraftArgs() { + return minecraftArgs; + } + + public void setMinecraftArgs(String minecraftArgs) { + this.minecraftArgs = minecraftArgs; + Settings.save(); + } + + public boolean isCanceledWrapper() { + return canceledWrapper; + } + + public void setCanceledWrapper(boolean canceledWrapper) { + this.canceledWrapper = canceledWrapper; + Settings.save(); + } + + public String getWrapperLauncher() { + return wrapperLauncher; + } + + public void setWrapperLauncher(String wrapperLauncher) { + this.wrapperLauncher = wrapperLauncher; + Settings.save(); + } + + public String getServerIp() { + return serverIp; + } + + public void setServerIp(String serverIp) { + this.serverIp = serverIp; + Settings.save(); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java new file mode 100644 index 000000000..be5b40f56 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java @@ -0,0 +1,148 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.settings; + +import java.io.File; +import java.io.IOException; +import java.util.Collection; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.Main; +import org.jackhuang.hellominecraft.utils.tinystream.CollectionUtils; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.UpdateChecker; +import org.jackhuang.hellominecraft.utils.VersionNumber; + +/** + * + * @author hyh + */ +public final class Settings { + public static final File settingsFile = new File(IOUtils.currentDir(), "hmcl.json"); + + private static boolean isFirstLoad; + private static Config settings; + public static final UpdateChecker UPDATE_CHECKER; + + public static Config s() { + return settings; + } + + public static boolean isFirstLoad() { + return isFirstLoad; + } + + static { + if (settingsFile.exists()) { + try { + String str = FileUtils.readFileToString(settingsFile); + if (str == null || str.trim().equals("")) { + init(); + + HMCLog.log("Settings file is empty, use the default settings."); + } else { + settings = C.gsonPrettyPrinting.fromJson(str, Config.class); + } + HMCLog.log("Initialized settings."); + } catch (Exception e) { + HMCLog.warn("Something happened wrongly when load settings.", e); + if (MessageBox.Show(C.i18n("settings.failed_load"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + init(); + } else { + HMCLog.err("Cancelled loading settings."); + System.exit(1); + } + } + } else { + HMCLog.log("No settings file here, may be first loading."); + + isFirstLoad = true; + init(); + } + if(settings == null) init(); + isFirstLoad = StrUtils.isBlank(settings.getUsername()); + if(!settings.getConfigurations().containsKey("Default")) { + settings.getConfigurations().put("Default", new Profile()); + } + + UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.firstVer, Main.secondVer, Main.thirdVer), "hmcl", settings.isCheckUpdate(), new DoneListener0() { + + @Override + public void onDone() { + Main.invokeUpdate(); + } + }); + } + + public static void init() { + settings = new Config(); + save(); + } + + public static void save() { + try { + FileUtils.write(settingsFile, C.gsonPrettyPrinting.toJson(settings)); + } catch (IOException ex) { + HMCLog.err("Failed to save config", ex); + } + } + + public static Profile getVersion(String name) { + if (settings == null) { + return null; + } + if (settings.getConfigurations() == null) { + return null; + } + return settings.getConfigurations().get(name); + } + + public static Map getVersions() { + return settings.getConfigurations(); + } + + public static void setVersion(Profile ver) { + if (ver == null) { + return; + } + settings.getConfigurations().put(ver.getName(), ver); + } + + public static Collection getProfiles() { + return CollectionUtils.sortOut(settings.getConfigurations().values(), (t) -> t != null && t.getName() != null); + } + + public static Profile getOneProfile() { + if(settings.getConfigurations().size() == 0) { + settings.getConfigurations().put("Default", new Profile()); + } + return settings.getConfigurations().firstEntry().getValue(); + } + + public static boolean trySetVersion(Profile ver) { + if (ver == null || ver.getName() == null) { + return false; + } + if (settings.getConfigurations().containsKey(ver.getName())) { + return false; + } + settings.getConfigurations().put(ver.getName(), ver); + return true; + } + + public static void delVersion(Profile ver) { + delVersion(ver.getName()); + } + + public static void delVersion(String ver) { + if (settings == null) return; + settings.getConfigurations().remove(ver); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Extract.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Extract.java new file mode 100644 index 000000000..af987a497 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Extract.java @@ -0,0 +1,25 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +import java.util.Arrays; + +/** + * + * @author huangyuhui + */ +public class Extract extends Object implements Cloneable { + String[] exclude; + + @Override + protected Object clone() { + Extract e = new Extract(); + e.exclude = exclude == null ? null : Arrays.copyOf(exclude, exclude.length); + return e; + } + + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/GameDirType.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/GameDirType.java new file mode 100644 index 000000000..511021f52 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/GameDirType.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +/** + * + * @author huangyuhui + */ +public enum GameDirType { + ROOT_FOLDER, + VERSION_FOLDER; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/IMinecraftLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/IMinecraftLibrary.java new file mode 100644 index 000000000..f6a86e7a4 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/IMinecraftLibrary.java @@ -0,0 +1,46 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.launcher.utils.version; + +import java.io.File; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; + +/** + * + * @author hyh + */ +public abstract class IMinecraftLibrary { + + public String name; + public IMinecraftLibrary(String name) { + this.name = name; + } + + public abstract boolean isRequiredToUnzip(); + public abstract String[] getDecompressExtractRules(); + public abstract void init(); + public abstract boolean allow(); + public abstract File getFilePath(File gameDir); + public abstract String getDownloadURL(String urlBase, DownloadType downloadType); + + @Override + public boolean equals(Object obj) { + if(obj instanceof MinecraftLibrary) + return ((MinecraftLibrary) obj).name.equals(name); + return false; + } + + @Override + public int hashCode() { + int hash = 3; + hash = 89 * hash + (this.name != null ? this.name.hashCode() : 0); + return hash; + } + + @Override + protected abstract Object clone(); +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftClassicVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftClassicVersion.java new file mode 100644 index 000000000..8b99dd27f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftClassicVersion.java @@ -0,0 +1,63 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +import java.io.File; +import java.util.ArrayList; +import java.util.Set; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; + +/** + * + * @author hyh + */ +public class MinecraftClassicVersion extends MinecraftVersion { + + public MinecraftClassicVersion() { + super(); + + mainClass = "net.minecraft.client.Minecraft"; + id = "Classic"; + type = "release"; + processArguments = assets = releaseTime = time = null; + minecraftArguments = "${auth_player_name} ${auth_session} --workDir ${game_directory}"; + libraries = new ArrayList<>(); + libraries.add(new MinecraftOldLibrary("lwjgl")); + libraries.add(new MinecraftOldLibrary("jinput")); + libraries.add(new MinecraftOldLibrary("lwjgl_util")); + } + + @Override + public Object clone() { + return super.clone(); + } + + @Override + public MinecraftVersion resolve(IMinecraftProvider manager, Set resolvedSoFar, DownloadType sourceType) { + return this; + } + + @Override + public File getJar(File gameDir) { + return new File(gameDir, "bin/minecraft.jar"); + } + + @Override + public File getJar(File gameDir, String suffix) { + return new File(gameDir, "bin/minecraft" + suffix + ".jar"); + } + + @Override + public File getNatives(File gameDir) { + return new File(gameDir, "bin/natives"); + } + + @Override + public boolean isAllowedToUnpackNatives() { + return false; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftLibrary.java new file mode 100644 index 000000000..ff3961fff --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftLibrary.java @@ -0,0 +1,137 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.utils.OS; +import org.jackhuang.hellominecraft.utils.StrUtils; + +/** + * + * @author hyh + */ +public class MinecraftLibrary extends IMinecraftLibrary implements Cloneable { + + public ArrayList rules; + public String url, formatted=null; + //public boolean serverreq=true, clientreq=true; + public String[] checksums; + public Natives natives; + public Extract extract; + + public MinecraftLibrary(String name) { + super(name); + } + + public MinecraftLibrary(ArrayList rules, String url, String[] checksums, Natives natives, String name, Extract extract) { + super(name); + this.rules = rules == null ? null : (ArrayList) rules.clone(); + this.url = url; + this.checksums = checksums == null ? null : Arrays.copyOf(checksums, checksums.length); + this.natives = natives == null ? null : (Natives)natives.clone(); + this.extract = extract == null ? null :(Extract)extract.clone(); + } + + @Override + public Object clone() { + return new MinecraftLibrary(rules, url, checksums, natives, name, extract); + } + + /** + * is the library allowed to load. + * + * @return + */ + @Override + public boolean allow() { + boolean flag = false; + if (rules == null || rules.isEmpty()) { + flag = true; + } else { + for (Rules r : rules) { + if (r.action.equals("disallow")) { + if (r.os != null && (StrUtils.isBlank(r.os.name) || r.os.name.equalsIgnoreCase(OS.os().toString()))) { + flag = false; + break; + } + } else { + if (r.os != null && (StrUtils.isBlank(r.os.name) || r.os.name.equalsIgnoreCase(OS.os().toString()))) { + flag = true; + } + if (r.os == null) { + flag = true; + } + } + } + } + return flag; + } + + private String formatArch(String nati) { + String arch = System.getProperty("os.arch"); + if (arch.contains("64")) { + arch = "64"; + } else { + arch = "32"; + } + if (nati == null) { + return ""; + } + return nati.replace("${arch}", arch); + } + + private String getNative() { + OS os = OS.os(); + if (os == OS.WINDOWS) { + return formatArch(natives.windows); + } else if (os == OS.OSX) { + return formatArch(natives.osx); + } else { + return formatArch(natives.linux); + } + } + + @Override + public boolean isRequiredToUnzip() { + return natives != null && allow(); + } + + @Override + public void init() { + String str = name; + String[] s = str.split(":"); + str = s[0]; + str = str.replace('.', File.separatorChar); + if (natives == null) { + str += File.separator + s[1] + File.separator + s[2] + + File.separator + s[1] + '-' + s[2] + ".jar"; + } else { + str += File.separator + s[1] + File.separator + s[2] + + File.separator + s[1] + '-' + s[2] + '-'; + str += getNative(); + str += ".jar"; + } + formatted = str; + } + + @Override + public File getFilePath(File gameDir) { + return new File(gameDir, "libraries" + File.separatorChar + formatted); + } + + @Override + public String getDownloadURL(String urlBase, DownloadType downloadType) { + if(StrUtils.isNotBlank(url)&&downloadType.getProvider().isAllowedToUseSelfURL()) urlBase = this.url; + return urlBase + formatted.replace('\\', '/'); + } + + @Override + public String[] getDecompressExtractRules() { + return extract == null || extract.exclude == null ? new String[0] : extract.exclude; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftOldLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftOldLibrary.java new file mode 100644 index 000000000..011095699 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftOldLibrary.java @@ -0,0 +1,51 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.launcher.utils.version; + +import java.io.File; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; + +/** + * + * @author hyh + */ +public class MinecraftOldLibrary extends MinecraftLibrary { + + public MinecraftOldLibrary(String name) { + super(name); + } + + @Override + public boolean isRequiredToUnzip() { + return false; + } + + @Override + public void init() { + } + + @Override + public boolean allow() { + return true; + } + + @Override + public File getFilePath(File gameDir) { + return new File(gameDir, "bin/" + name + ".jar"); + } + + @Override + public Object clone() { + return new MinecraftOldLibrary(name); + } + + @Override + public String getDownloadURL(String urlBase, DownloadType downloadType) { + return null; + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersion.java new file mode 100644 index 000000000..e90e50c8a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersion.java @@ -0,0 +1,113 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.utils.ArrayUtils; + +/** + * + * @author hyh + */ +public class MinecraftVersion implements Cloneable, Comparable { + + public String minecraftArguments, mainClass, time, id, type, processArguments, + releaseTime, assets, jar, inheritsFrom; + public int minimumLauncherVersion; + public boolean hidden; + + public List libraries; + + public MinecraftVersion() { + } + + public MinecraftVersion(String minecraftArguments, String mainClass, String time, String id, String type, String processArguments, String releaseTime, String assets, String jar, String inheritsFrom, int minimumLauncherVersion, List libraries, boolean hidden) { + this(); + this.minecraftArguments = minecraftArguments; + this.mainClass = mainClass; + this.time = time; + this.id = id; + this.type = type; + this.processArguments = processArguments; + this.releaseTime = releaseTime; + this.assets = assets; + this.jar = jar; + this.inheritsFrom = inheritsFrom; + this.minimumLauncherVersion = minimumLauncherVersion; + this.hidden = hidden; + if(libraries == null) this.libraries = new ArrayList<>(); + else { + this.libraries = new ArrayList<>(libraries.size()); + for (IMinecraftLibrary library : libraries) { + this.libraries.add((MinecraftLibrary) library.clone()); + } + } + } + + @Override + public Object clone() { + return new MinecraftVersion(minecraftArguments, mainClass, time, id, type, processArguments, releaseTime, assets, jar, inheritsFrom, minimumLauncherVersion, libraries, hidden); + } + + public MinecraftVersion resolve(IMinecraftProvider manager, DownloadType sourceType) { + return resolve(manager, new HashSet<>(), sourceType); + } + + protected MinecraftVersion resolve(IMinecraftProvider manager, Set resolvedSoFar, DownloadType sourceType) { + if (inheritsFrom == null) { + return this; + } + if (!resolvedSoFar.add(id)) { + throw new IllegalStateException("Circular dependency detected."); + } + + MinecraftVersion parent = manager.getVersionById(inheritsFrom); + if(parent == null) { + if(!manager.install(inheritsFrom, sourceType)) return this; + parent = manager.getVersionById(inheritsFrom); + } + parent = parent.resolve(manager, resolvedSoFar, sourceType); + MinecraftVersion result = new MinecraftVersion( + this.minecraftArguments != null ? this.minecraftArguments : parent.minecraftArguments, + this.mainClass != null ? this.mainClass : parent.mainClass, + this.time, this.id, this.type, parent.processArguments, this.releaseTime, + this.assets != null ? this.assets : parent.assets, + this.jar != null ? this.jar : parent.jar, + null, parent.minimumLauncherVersion, + this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden); + + return result; + } + + public File getJar(File gameDir) { + String jarId = this.jar == null ? this.id : this.jar; + return new File(gameDir, "versions/" + jarId + "/" + jarId + ".jar"); + } + + public File getJar(File gameDir, String suffix) { + String jarId = this.jar == null ? this.id : this.jar; + return new File(gameDir, "versions/" + jarId + "/" + jarId + suffix + ".jar"); + } + + public File getNatives(File gameDir) { + return new File(gameDir, "versions/" + id + "/" + id + + "-natives"); + } + + public boolean isAllowedToUnpackNatives() { + return true; + } + + @Override + public int compareTo(MinecraftVersion o) { + return id.compareTo(((MinecraftVersion) o).id); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersionManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersionManager.java new file mode 100644 index 000000000..f8aacc522 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/MinecraftVersionManager.java @@ -0,0 +1,306 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.GameLauncher; +import org.jackhuang.hellominecraft.launcher.launch.GameLauncher.DownloadLibraryJob; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftLoader; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.launch.MinecraftLoader; +import org.jackhuang.hellominecraft.utils.BaseLauncherProfile; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.launcher.utils.MCUtils; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.Utils; + +/** + * + * @author hyh + */ +public final class MinecraftVersionManager extends IMinecraftProvider { + + private File baseFolder; + private final Profile profile; + private final Map versions = new TreeMap(); + private final Gson gson = Utils.getDefaultGsonBuilder().create(); + + /** + * + * @param p + */ + public MinecraftVersionManager(Profile p) { + super(p); + this.profile = p; + refreshVersions(); + } + + public File getFolder() { + return baseFolder; + } + + @Override + public Collection getVersions() { + return versions.values(); + } + + @Override + public int getVersionCount() { + return versions.size(); + } + + @Override + public void refreshVersions() { + baseFolder = profile.getCanonicalGameDirFile(); + try { + BaseLauncherProfile.tryWriteProfile(baseFolder); + } catch (IOException ex) { + HMCLog.warn("Failed to create launcher_profiles.json, Forge/LiteLoader installer will not work.", ex); + } + + versions.clear(); + File oldDir = new File(baseFolder, "bin"); + if (oldDir.exists()) { + MinecraftClassicVersion v = new MinecraftClassicVersion(); + versions.put(v.id, v); + } + + File version = new File(baseFolder, "versions"); + File[] files = version.listFiles(); + if (files == null || files.length == 0) return; + + for (File dir : files) { + String id = dir.getName(); + File jsonFile = new File(dir, id + ".json"); + + if (!dir.isDirectory()) continue; + boolean ask = false; + File[] jsons = null; + if (!jsonFile.exists()) { + jsons = FileUtils.searchSuffix(dir, "json"); + if (jsons.length == 1) ask = true; + } + if (ask) { + HMCLog.warn("Found not matched filenames version: " + id + ", json: " + jsons[0].getName()); + if (MessageBox.Show(String.format(C.i18n("launcher.versions_json_not_matched"), id, jsons[0].getName()), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + jsons[0].renameTo(new File(jsons[0].getParent(), id + ".json")); + } + if (!jsonFile.exists()) { + if (StrUtils.formatVersion(id) == null) { + if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_cannot_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + FileUtils.deleteDirectoryQuietly(dir); + } else if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_needs_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + if (!refreshJson(id)) { + if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_cannot_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + FileUtils.deleteDirectoryQuietly(dir); + } + } + continue; + } + MinecraftVersion mcVersion = null; + try { + mcVersion = gson.fromJson(FileUtils.readFileToString(jsonFile), MinecraftVersion.class); + if (mcVersion == null) throw new RuntimeException("Wrong json format, got null."); + } catch (IOException | RuntimeException e) { + HMCLog.warn("Found wrong format json, try to fix it.", e); + if (MessageBox.Show(C.i18n("launcher.versions_json_not_formattedn", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + refreshJson(id); + try { + mcVersion = gson.fromJson(FileUtils.readFileToString(jsonFile), MinecraftVersion.class); + if (mcVersion == null) throw new RuntimeException("Wrong json format, got null."); + } catch (IOException | RuntimeException ex) { + HMCLog.err("Retried but still failed."); + HMCLog.warn("Ignoring: " + dir + ", the json of this Minecraft is malformed.", ex); + continue; + } + } + } + try { + if (!id.equals(mcVersion.id)) { + HMCLog.warn("Found: " + dir + ", it contains id: " + mcVersion.id + ", expected: " + id + ", the launcher will fix this problem."); + mcVersion.id = id; + FileUtils.writeQuietly(jsonFile, gson.toJson(mcVersion)); + } + + if (mcVersion.libraries != null) + for (MinecraftLibrary ml : mcVersion.libraries) + ml.init(); + versions.put(id, mcVersion); + } catch (Exception e) { + HMCLog.warn("Ignoring: " + dir + ", the json of this Minecraft is malformed."); + } + } + } + + @Override + public boolean removeVersionFromDisk(String name) { + File version = new File(baseFolder, "versions/" + name); + if (!version.exists()) return true; + + versions.remove(name); + return FileUtils.deleteDirectoryQuietly(version); + } + + @Override + public boolean renameVersion(String from, String to) { + try { + File fromJson = new File(baseFolder, "versions/" + from + "/" + from + ".json"); + MinecraftVersion mcVersion = gson.fromJson(FileUtils.readFileToString(fromJson), MinecraftVersion.class); + mcVersion.id = to; + FileUtils.writeQuietly(fromJson, gson.toJson(mcVersion)); + File toDir = new File(baseFolder, "versions/" + to); + new File(baseFolder, "versions/" + from).renameTo(toDir); + File toJson = new File(toDir, to + ".json"); + File toJar = new File(toDir, to + ".jar"); + new File(toDir, from + ".json").renameTo(toJson); + new File(toDir, from + ".jar").renameTo(toJar); + return true; + } catch (IOException | JsonSyntaxException e) { + HMCLog.warn("Failed to rename " + from + " to " + to + ", the json of this Minecraft is malformed.", e); + return false; + } + } + + @Override + public boolean refreshJson(String id) { + return MCUtils.downloadMinecraftVersionJson(baseFolder, id, Settings.s().getDownloadSource()); + } + + @Override + public boolean refreshAssetsIndex(String id) { + MinecraftVersion mv = getVersionById(id); + if (mv == null) return false; + return MCUtils.downloadMinecraftAssetsIndex(new File(baseFolder, "assets"), mv.assets, Settings.s().getDownloadSource()); + } + + @Override + public boolean install(String id, DownloadType sourceType) { + MinecraftVersion v = MCUtils.downloadMinecraft(baseFolder, id, sourceType); + if (v != null) { + versions.put(v.id, v); + return true; + } + return false; + } + + @Override + public File getRunDirectory(String id) { + switch (profile.getGameDirType()) { + case VERSION_FOLDER: + return new File(baseFolder, "versions/" + id + "/"); + default: + return baseFolder; + } + } + + @Override + public List getDownloadLibraries(DownloadType downloadType) { + ArrayList downloadLibraries = new ArrayList<>(); + MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(this, Settings.s().getDownloadSource()); + for (IMinecraftLibrary l : v.libraries) { + l.init(); + if (l.allow()) { + File ff = l.getFilePath(baseFolder); + if (!ff.exists()) { + String libURL = downloadType.getProvider().getLibraryDownloadURL() + "/"; + libURL = l.getDownloadURL(libURL, downloadType); + if (libURL != null) + downloadLibraries.add(new DownloadLibraryJob(l.name, libURL, ff)); + } + } + } + return downloadLibraries; + } + + @Override + public void openSelf(String mv) { + Utils.openFolder(getRunDirectory(mv)); + } + + @Override + public void open(String mv, String name) { + Utils.openFolder(new File(getRunDirectory(mv), name)); + } + + @Override + public File getAssets() { + return new File(profile.getCanonicalGameDirFile(), "assets"); + } + + @Override + public GameLauncher.DecompressLibraryJob getDecompressLibraries() { + MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(this, Settings.s().getDownloadSource()); + ArrayList unzippings = new ArrayList<>(); + ArrayList extractRules = new ArrayList<>(); + for (IMinecraftLibrary l : v.libraries) { + l.init(); + if (l.isRequiredToUnzip() && v.isAllowedToUnpackNatives()) { + unzippings.add(IOUtils.tryGetCanonicalFile(l.getFilePath(baseFolder))); + extractRules.add(l.getDecompressExtractRules()); + } + } + return new GameLauncher.DecompressLibraryJob(unzippings.toArray(new File[0]), extractRules.toArray(new String[0][]), getDecompressNativesToLocation()); + } + + @Override + public File getDecompressNativesToLocation() { + MinecraftVersion v = profile.getSelectedMinecraftVersion(); + return v.getNatives(profile.getCanonicalGameDirFile()); + } + + @Override + public File getMinecraftJar() { + return profile.getSelectedMinecraftVersion().getJar(baseFolder); + } + + @Override + public IMinecraftLoader provideMinecraftLoader(UserProfileProvider p, DownloadType type) + throws IllegalStateException { + return new MinecraftLoader(profile, this, p, getMinecraftJar(), type); + } + + @Override + public MinecraftVersion getOneVersion() { + return versions.isEmpty() ? null : versions.values().iterator().next(); + } + + @Override + public MinecraftVersion getVersionById(String id) { + return id == null ? null : versions.get(id); + } + + @Override + public File getResourcePacks() { + return new File(profile.getCanonicalGameDirFile(), "resourcepacks"); + } + + @Override + public File getBaseFolder() { + return baseFolder; + } + + @Override + public void onLaunch() { + File resourcePacks = getResourcePacks(); + if (!resourcePacks.exists()) resourcePacks.mkdirs(); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Natives.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Natives.java new file mode 100644 index 000000000..c2a2bf353 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Natives.java @@ -0,0 +1,22 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +/** + * + * @author hyh + */ +public class Natives implements Cloneable { + public String windows, osx, linux; + + @Override + protected Object clone() { + Natives n = new Natives(); + n.windows = windows; + n.osx = osx; + n.linux = linux; + return n; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/OS.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/OS.java new file mode 100644 index 000000000..0bc04d8fd --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/OS.java @@ -0,0 +1,13 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +/** + * + * @author hyh + */ +public class OS { + public String version, name; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Rules.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Rules.java new file mode 100644 index 000000000..4d346f317 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/version/Rules.java @@ -0,0 +1,14 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.utils.version; + +/** + * + * @author hyh + */ +public class Rules { + public String action; + public OS os; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java new file mode 100644 index 000000000..8b09d92b4 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java @@ -0,0 +1,63 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import javax.swing.JFrame; + +/** + * + * @author hyh + */ +public class DraggableFrame extends JFrame + implements MouseListener, MouseMotionListener { + + private int dragGripX; + private int dragGripY; + + public DraggableFrame() { + setUndecorated(true); + addMouseListener(this); + addMouseMotionListener(this); + } + + @Override + public void mouseClicked(MouseEvent e) { + } + + @Override + public void mousePressed(MouseEvent e) { + if (e.getButton() == 1) { + this.dragGripX = e.getX(); + this.dragGripY = e.getY(); + } + } + + @Override + public void mouseReleased(MouseEvent e) { + } + + @Override + public void mouseEntered(MouseEvent e) { + } + + @Override + public void mouseExited(MouseEvent e) { + } + + @Override + public void mouseDragged(MouseEvent e) { + if ((e.getModifiersEx() & 0x400) != 0) { + setLocation(e.getXOnScreen() - this.dragGripX, e.getYOnScreen() - this.dragGripY); + } + } + + @Override + public void mouseMoved(MouseEvent e) { + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form new file mode 100644 index 000000000..89290ee9e --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form @@ -0,0 +1,1073 @@ + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java new file mode 100644 index 000000000..8c8de5d27 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java @@ -0,0 +1,1468 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import java.awt.Color; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import javax.swing.JFileChooser; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; +import javax.swing.JTable; +import javax.swing.SwingUtilities; +import javax.swing.table.DefaultTableModel; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.MCUtils; +import org.jackhuang.hellominecraft.launcher.utils.assets.IAssetsHandler; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList; +import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionList.InstallerVersion; +import org.jackhuang.hellominecraft.launcher.utils.installers.forge.ForgeInstaller; +import org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderInstaller; +import org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersionList.LiteLoaderInstallerVersion; +import org.jackhuang.hellominecraft.launcher.utils.installers.optifine.OptiFineInstaller; +import org.jackhuang.hellominecraft.launcher.utils.installers.optifine.vanilla.OptiFineDownloadFormatter; +import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.launcher.utils.version.GameDirType; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.TaskRunnableArg1; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.communication.DefaultPreviousResult; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.jackhuang.hellominecraft.tasks.download.HTTPGetTask; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.MinecraftVersionRequest; +import org.jackhuang.hellominecraft.utils.OS; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.version.MinecraftRemoteVersion; +import org.jackhuang.hellominecraft.version.MinecraftRemoteVersions; +import org.jackhuang.hellominecraft.views.Selector; + +/** + * + * @author hyh + */ +public class GameSettingsPanel extends javax.swing.JPanel { + + /** + * Creates new form GameSettingsPanel + */ + public GameSettingsPanel() { + initComponents(); + setBackground(Color.white); + setOpaque(true); + + forge = new InstallerHelper(lstForge, "forge"); + liteloader = new InstallerHelper(lstLiteLoader, "liteloader"); + optifine = new InstallerHelper(lstOptifine, "optifine"); + // + ppmExplore = new JPopupMenu(); + class ImplementedActionListener implements ActionListener { + + ImplementedActionListener(String s) { + a = s; + } + String a; + + @Override + public void actionPerformed(ActionEvent e) { + Profile v = getProfile(); + if (v != null) + v.getMinecraftProvider().open(mcVersion, a); + } + } + JMenuItem itm; + itm = new JMenuItem(C.i18n("folder.game")); + itm.addActionListener((e) -> { + Profile v = getProfile(); + if (v != null) v.getMinecraftProvider().openSelf(mcVersion); + }); + ppmExplore.add(itm); + itm = new JMenuItem(C.i18n("folder.mod")); + itm.addActionListener(new ImplementedActionListener("mods")); + ppmExplore.add(itm); + itm = new JMenuItem(C.i18n("folder.coremod")); + itm.addActionListener(new ImplementedActionListener("coremods")); + ppmExplore.add(itm); + itm = new JMenuItem(C.i18n("folder.config")); + itm.addActionListener(new ImplementedActionListener("config")); + ppmExplore.add(itm); + itm = new JMenuItem(C.i18n("folder.resourcepacks")); + itm.addActionListener(new ImplementedActionListener("resourcepacks")); + ppmExplore.add(itm); + itm = new JMenuItem(C.i18n("folder.screenshots")); + itm.addActionListener(new ImplementedActionListener("screenshots")); + ppmExplore.add(itm); + // + // + ppmManage = new JPopupMenu(); + itm = new JMenuItem(C.i18n("versions.manage.rename")); + itm.addActionListener((e) -> { + Profile v = getProfile(); + if (v != null && mcVersion != null) { + String newName = JOptionPane.showInputDialog(C.i18n("versions.manage.rename.message"), mcVersion); + if (newName != null) + if (v.getMinecraftProvider().renameVersion(mcVersion, newName)) + refreshVersions(); + } + }); + ppmManage.add(itm); + itm = new JMenuItem(C.i18n("versions.manage.remove")); + itm.addActionListener((e) -> { + Profile v = getProfile(); + if (v != null && mcVersion != null && MessageBox.Show(C.i18n("versions.manage.remove.confirm") + mcVersion, MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) + if (v.getMinecraftProvider().removeVersionFromDisk(mcVersion)) + refreshVersions(); + }); + ppmManage.add(itm); + itm = new JMenuItem(C.i18n("versions.manage.redownload_json")); + itm.addActionListener((e) -> { + Profile v = getProfile(); + if (v != null && mcVersion != null) + v.getMinecraftProvider().refreshJson(mcVersion); + }); + ppmManage.add(itm); + itm = new JMenuItem(C.i18n("versions.manage.redownload_assets_index")); + itm.addActionListener((e) -> { + Profile v = getProfile(); + if (v != null && mcVersion != null) + v.getMinecraftProvider().refreshAssetsIndex(mcVersion); + }); + ppmManage.add(itm); + // + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel4 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + cboProfiles = new javax.swing.JComboBox(); + cboVersions = new javax.swing.JComboBox(); + jLabel2 = new javax.swing.JLabel(); + jPanel5 = new javax.swing.JPanel(); + btnModify = new javax.swing.JButton(); + btnRefreshVersions = new javax.swing.JButton(); + txtMinecraftVersion = new javax.swing.JTextField(); + btnNewProfile = new javax.swing.JButton(); + btnRemoveProfile = new javax.swing.JButton(); + btnExplore = new javax.swing.JButton(); + tabVersionEdit = new javax.swing.JTabbedPane(); + jPanel22 = new javax.swing.JPanel(); + jLabel24 = new javax.swing.JLabel(); + txtGameDir = new javax.swing.JTextField(); + jLabel25 = new javax.swing.JLabel(); + txtWidth = new javax.swing.JTextField(); + txtHeight = new javax.swing.JTextField(); + jLabel9 = new javax.swing.JLabel(); + chkFullscreen = new javax.swing.JCheckBox(); + txtJavaDir = new javax.swing.JTextField(); + jLabel11 = new javax.swing.JLabel(); + jLabel27 = new javax.swing.JLabel(); + txtMaxMemory = new javax.swing.JTextField(); + lblMaxMemory = new javax.swing.JLabel(); + btnDownloadAllAssets = new javax.swing.JButton(); + cboLauncherVisibility = new javax.swing.JComboBox(); + jLabel10 = new javax.swing.JLabel(); + jLabel12 = new javax.swing.JLabel(); + cboGameDirType = new javax.swing.JComboBox(); + jPanel2 = new javax.swing.JPanel(); + chkDebug = new javax.swing.JCheckBox(); + jLabel26 = new javax.swing.JLabel(); + txtJavaArgs = new javax.swing.JTextField(); + txtMinecraftArgs = new javax.swing.JTextField(); + jLabel28 = new javax.swing.JLabel(); + jLabel29 = new javax.swing.JLabel(); + txtPermSize = new javax.swing.JTextField(); + chkNoJVMArgs = new javax.swing.JCheckBox(); + chkCancelWrapper = new javax.swing.JCheckBox(); + jLabel30 = new javax.swing.JLabel(); + txtWrapperLauncher = new javax.swing.JTextField(); + jLabel31 = new javax.swing.JLabel(); + txtServerIP = new javax.swing.JTextField(); + pnlAutoInstall = new javax.swing.JPanel(); + tabInstallers = new javax.swing.JTabbedPane(); + jPanel16 = new javax.swing.JPanel(); + jScrollPane11 = new javax.swing.JScrollPane(); + lstForge = new javax.swing.JTable(); + btnRefreshForge = new javax.swing.JButton(); + btnDownloadForge = new javax.swing.JButton(); + btnRetryForge = new javax.swing.JButton(); + pnlOptifine = new javax.swing.JPanel(); + jScrollPane13 = new javax.swing.JScrollPane(); + lstOptifine = new javax.swing.JTable(); + btnRefreshOptifine = new javax.swing.JButton(); + btnDownloadOptifine = new javax.swing.JButton(); + jPanel3 = new javax.swing.JPanel(); + btnInstallLiteLoader = new javax.swing.JButton(); + jScrollPane12 = new javax.swing.JScrollPane(); + lstLiteLoader = new javax.swing.JTable(); + btnRefreshLiteLoader = new javax.swing.JButton(); + btnRetryLiteLoader = new javax.swing.JButton(); + pnlGameDownloads = new javax.swing.JPanel(); + btnDownload = new javax.swing.JButton(); + jScrollPane2 = new javax.swing.JScrollPane(); + lstDownloads = new javax.swing.JTable(); + btnRefreshGameDownloads = new javax.swing.JButton(); + btnIncludeMinecraft = new javax.swing.JButton(); + + setBackground(new java.awt.Color(255, 255, 255)); + + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + jLabel1.setText(bundle.getString("ui.label.profile")); // NOI18N + + cboProfiles.setMinimumSize(new java.awt.Dimension(32, 23)); + cboProfiles.setPreferredSize(new java.awt.Dimension(32, 23)); + cboProfiles.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboProfilesItemStateChanged(evt); + } + }); + + cboVersions.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboVersionsItemStateChanged(evt); + } + }); + + jLabel2.setText(bundle.getString("ui.label.version")); // NOI18N + + javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); + jPanel4.setLayout(jPanel4Layout); + jPanel4Layout.setHorizontalGroup( + jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboProfiles, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(jPanel4Layout.createSequentialGroup() + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboVersions, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + ); + jPanel4Layout.setVerticalGroup( + jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboProfiles, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboVersions, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2)) + .addContainerGap(11, Short.MAX_VALUE)) + ); + + btnModify.setText(bundle.getString("settings.manage")); // NOI18N + btnModify.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + btnModifyMouseClicked(evt); + } + }); + + btnRefreshVersions.setText(bundle.getString("ui.button.refresh")); // NOI18N + btnRefreshVersions.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshVersionsActionPerformed(evt); + } + }); + + txtMinecraftVersion.setEditable(false); + + btnNewProfile.setText(bundle.getString("setupwindow.new")); // NOI18N + btnNewProfile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnNewProfileActionPerformed(evt); + } + }); + + btnRemoveProfile.setText(bundle.getString("ui.button.delete")); // NOI18N + btnRemoveProfile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRemoveProfileActionPerformed(evt); + } + }); + + btnExplore.setText(bundle.getString("settings.explore")); // NOI18N + btnExplore.setToolTipText(""); + btnExplore.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + btnExploreMouseClicked(evt); + } + }); + + javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); + jPanel5.setLayout(jPanel5Layout); + jPanel5Layout.setHorizontalGroup( + jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel5Layout.createSequentialGroup() + .addGap(0, 0, 0) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnNewProfile, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtMinecraftVersion)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnRemoveProfile, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRefreshVersions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnModify, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnExplore, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + jPanel5Layout.setVerticalGroup( + jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel5Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnNewProfile, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnRemoveProfile, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnExplore, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtMinecraftVersion, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnRefreshVersions, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnModify, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(0, 0, Short.MAX_VALUE)) + ); + + tabVersionEdit.setName("tabVersionEdit"); // NOI18N + + jLabel24.setText(bundle.getString("settings.game_directory")); // NOI18N + + txtGameDir.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtGameDirFocusLost(evt); + } + }); + + jLabel25.setText(bundle.getString("settings.dimension")); // NOI18N + + txtWidth.setToolTipText(""); + txtWidth.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtWidthFocusLost(evt); + } + }); + + txtHeight.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtHeightFocusLost(evt); + } + }); + + jLabel9.setText("x"); + + chkFullscreen.setText(bundle.getString("settings.fullscreen")); // NOI18N + chkFullscreen.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + chkFullscreenFocusLost(evt); + } + }); + + txtJavaDir.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtJavaDirFocusLost(evt); + } + }); + txtJavaDir.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + txtJavaDirActionPerformed(evt); + } + }); + + jLabel11.setText(bundle.getString("settings.java_dir")); // NOI18N + + jLabel27.setText(bundle.getString("settings.max_memory")); // NOI18N + + txtMaxMemory.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtMaxMemoryFocusLost(evt); + } + }); + + lblMaxMemory.setText(C.i18n("settings.physical_memory") + ": " + OS.getTotalPhysicalMemory() / 1024 / 1024 + "MB"); + + btnDownloadAllAssets.setText(bundle.getString("assets.download_all")); // NOI18N + btnDownloadAllAssets.setToolTipText(""); + btnDownloadAllAssets.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadAllAssetsActionPerformed(evt); + } + }); + + cboLauncherVisibility.setModel(new javax.swing.DefaultComboBoxModel(new String[] { C.I18N.getString("advancedsettings.launcher_visibility.close"), C.I18N.getString("advancedsettings.launcher_visibility.hide"), C.I18N.getString("advancedsettings.launcher_visibility.keep") })); + cboLauncherVisibility.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + cboLauncherVisibilityFocusLost(evt); + } + }); + + jLabel10.setText(bundle.getString("advancedsettings.launcher_visible")); // NOI18N + + jLabel12.setText(bundle.getString("advancedsettings.run_directory")); // NOI18N + + cboGameDirType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { C.I18N.getString("advancedsettings.game_dir.default"), C.I18N.getString("advancedsettings.game_dir.independent") })); + cboGameDirType.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + cboGameDirTypeFocusLost(evt); + } + }); + + javax.swing.GroupLayout jPanel22Layout = new javax.swing.GroupLayout(jPanel22); + jPanel22.setLayout(jPanel22Layout); + jPanel22Layout.setHorizontalGroup( + jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel22Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel22Layout.createSequentialGroup() + .addComponent(btnDownloadAllAssets) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(jPanel22Layout.createSequentialGroup() + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel11) + .addComponent(jLabel27) + .addComponent(jLabel24) + .addComponent(jLabel12) + .addComponent(jLabel10) + .addComponent(jLabel25)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cboGameDirType, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cboLauncherVisibility, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtJavaDir, javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel22Layout.createSequentialGroup() + .addComponent(txtMaxMemory) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(lblMaxMemory)) + .addComponent(txtGameDir) + .addGroup(jPanel22Layout.createSequentialGroup() + .addComponent(txtWidth, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel9) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtHeight, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 306, Short.MAX_VALUE) + .addComponent(chkFullscreen))))) + .addContainerGap()) + ); + jPanel22Layout.setVerticalGroup( + jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel22Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtGameDir, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel24)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtJavaDir, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblMaxMemory) + .addComponent(txtMaxMemory, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel27)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboLauncherVisibility, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel10)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboGameDirType, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel12)) + .addGap(4, 4, 4) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtHeight, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(chkFullscreen, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel25) + .addComponent(txtWidth, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 92, Short.MAX_VALUE) + .addComponent(btnDownloadAllAssets) + .addContainerGap()) + ); + + tabVersionEdit.addTab(bundle.getString("settings"), jPanel22); // NOI18N + + chkDebug.setText(bundle.getString("advencedsettings.debug_mode")); // NOI18N + chkDebug.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + chkDebugFocusLost(evt); + } + }); + + jLabel26.setText(bundle.getString("advancedsettings.jvm_args")); // NOI18N + + txtJavaArgs.setToolTipText(bundle.getString("advancedsettings.java_args_default")); // NOI18N + txtJavaArgs.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtJavaArgsFocusLost(evt); + } + }); + + txtMinecraftArgs.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtMinecraftArgsFocusLost(evt); + } + }); + + jLabel28.setText(bundle.getString("advancedsettings.Minecraft_arguments")); // NOI18N + + jLabel29.setText(bundle.getString("advancedsettings.java_permanent_generation_space")); // NOI18N + + txtPermSize.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtPermSizeFocusLost(evt); + } + }); + + chkNoJVMArgs.setText(bundle.getString("advancedsettings.no_jvm_args")); // NOI18N + chkNoJVMArgs.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + chkNoJVMArgsFocusLost(evt); + } + }); + + chkCancelWrapper.setText("取消包裹启动器(出现奇怪问题时可尝试使用,与调试模式冲突)"); + chkCancelWrapper.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + chkCancelWrapperFocusLost(evt); + } + }); + + jLabel30.setText(bundle.getString("advancedsettings.wrapper_launcher")); // NOI18N + + txtWrapperLauncher.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtWrapperLauncherFocusLost(evt); + } + }); + + jLabel31.setText(bundle.getString("advancedsettings.server_ip")); // NOI18N + + txtServerIP.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtServerIPFocusLost(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtWrapperLauncher) + .addComponent(txtServerIP) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel30) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(chkDebug) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(chkCancelWrapper) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(chkNoJVMArgs)) + .addComponent(jLabel31)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel28) + .addComponent(jLabel29) + .addComponent(jLabel26)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtJavaArgs) + .addComponent(txtMinecraftArgs) + .addComponent(txtPermSize, javax.swing.GroupLayout.Alignment.TRAILING)))) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtJavaArgs, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel26)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtMinecraftArgs, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel28)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtPermSize, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel29)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel30) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtWrapperLauncher, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel31) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtServerIP, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 85, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(chkDebug) + .addComponent(chkNoJVMArgs) + .addComponent(chkCancelWrapper)) + .addContainerGap()) + ); + + tabVersionEdit.addTab(bundle.getString("advancedsettings"), jPanel2); // NOI18N + + lstForge.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.I18N.getString("install.version"), C.I18N.getString("install.mcversion")}, + new Class[]{String.class, String.class}, new boolean[]{false, false})); + lstForge.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane11.setViewportView(lstForge); + + btnRefreshForge.setText(bundle.getString("ui.button.refresh")); // NOI18N + btnRefreshForge.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshForgeActionPerformed(evt); + } + }); + + btnDownloadForge.setText(bundle.getString("ui.button.install")); // NOI18N + btnDownloadForge.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadForgeActionPerformed(evt); + } + }); + + btnRetryForge.setText(bundle.getString("ui.button.retry")); // NOI18N + btnRetryForge.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRetryForgeActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel16Layout = new javax.swing.GroupLayout(jPanel16); + jPanel16.setLayout(jPanel16Layout); + jPanel16Layout.setHorizontalGroup( + jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel16Layout.createSequentialGroup() + .addComponent(jScrollPane11, javax.swing.GroupLayout.DEFAULT_SIZE, 587, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnRetryForge, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDownloadForge, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRefreshForge, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel16Layout.setVerticalGroup( + jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane11, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addGroup(jPanel16Layout.createSequentialGroup() + .addComponent(btnDownloadForge) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnRetryForge) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnRefreshForge) + .addGap(0, 210, Short.MAX_VALUE)) + ); + + tabInstallers.addTab("Forge", jPanel16); + + lstOptifine.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.I18N.getString("install.version"), C.I18N.getString("install.mcversion")}, + new Class[]{String.class, String.class}, new boolean[]{false, false})); +lstOptifine.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); +jScrollPane13.setViewportView(lstOptifine); + +btnRefreshOptifine.setText(bundle.getString("ui.button.refresh")); // NOI18N +btnRefreshOptifine.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshOptifineActionPerformed(evt); + } + }); + + btnDownloadOptifine.setText(bundle.getString("ui.button.install")); // NOI18N + btnDownloadOptifine.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadOptifineActionPerformed(evt); + } + }); + + javax.swing.GroupLayout pnlOptifineLayout = new javax.swing.GroupLayout(pnlOptifine); + pnlOptifine.setLayout(pnlOptifineLayout); + pnlOptifineLayout.setHorizontalGroup( + pnlOptifineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlOptifineLayout.createSequentialGroup() + .addComponent(jScrollPane13, javax.swing.GroupLayout.DEFAULT_SIZE, 587, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlOptifineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnDownloadOptifine, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRefreshOptifine)) + .addContainerGap()) + ); + pnlOptifineLayout.setVerticalGroup( + pnlOptifineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane13, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addGroup(pnlOptifineLayout.createSequentialGroup() + .addComponent(btnDownloadOptifine) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnRefreshOptifine) + .addGap(0, 239, Short.MAX_VALUE)) + ); + + tabInstallers.addTab("OptiFine", pnlOptifine); + + btnInstallLiteLoader.setText(bundle.getString("ui.button.install")); // NOI18N + btnInstallLiteLoader.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnInstallLiteLoaderActionPerformed(evt); + } + }); + + lstLiteLoader.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.I18N.getString("install.version"), C.I18N.getString("install.mcversion")}, + new Class[]{String.class, String.class}, new boolean[]{false, false})); +lstLiteLoader.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); +jScrollPane12.setViewportView(lstLiteLoader); + +btnRefreshLiteLoader.setText(bundle.getString("ui.button.refresh")); // NOI18N +btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshLiteLoaderActionPerformed(evt); + } + }); + + btnRetryLiteLoader.setText(bundle.getString("ui.button.retry")); // NOI18N + btnRetryLiteLoader.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRetryLiteLoaderActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 587, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnInstallLiteLoader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRetryLiteLoader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRefreshLiteLoader)) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane12, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(btnInstallLiteLoader) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnRetryLiteLoader) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnRefreshLiteLoader) + .addGap(0, 210, Short.MAX_VALUE)) + ); + + tabInstallers.addTab("LiteLoader", jPanel3); + + javax.swing.GroupLayout pnlAutoInstallLayout = new javax.swing.GroupLayout(pnlAutoInstall); + pnlAutoInstall.setLayout(pnlAutoInstallLayout); + pnlAutoInstallLayout.setHorizontalGroup( + pnlAutoInstallLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(tabInstallers) + ); + pnlAutoInstallLayout.setVerticalGroup( + pnlAutoInstallLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(tabInstallers) + ); + + tabVersionEdit.addTab(bundle.getString("settings.tabs.installers"), pnlAutoInstall); // NOI18N + + btnDownload.setText(bundle.getString("ui.button.download")); // NOI18N + btnDownload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadActionPerformed(evt); + } + }); + + lstDownloads.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.I18N.getString("install.version"), C.I18N.getString("install.time"), C.I18N.getString("install.type")},new Class[]{String.class, String.class, String.class}, new boolean[]{false, false, false})); + lstDownloads.setToolTipText(""); + lstDownloads.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane2.setViewportView(lstDownloads); + + btnRefreshGameDownloads.setText(bundle.getString("ui.button.refresh")); // NOI18N + btnRefreshGameDownloads.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshGameDownloadsActionPerformed(evt); + } + }); + + javax.swing.GroupLayout pnlGameDownloadsLayout = new javax.swing.GroupLayout(pnlGameDownloads); + pnlGameDownloads.setLayout(pnlGameDownloadsLayout); + pnlGameDownloadsLayout.setHorizontalGroup( + pnlGameDownloadsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlGameDownloadsLayout.createSequentialGroup() + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 592, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlGameDownloadsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnRefreshGameDownloads, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDownload)) + .addContainerGap()) + ); + pnlGameDownloadsLayout.setVerticalGroup( + pnlGameDownloadsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlGameDownloadsLayout.createSequentialGroup() + .addComponent(btnRefreshGameDownloads) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDownload)) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 320, Short.MAX_VALUE) + ); + + tabVersionEdit.addTab(bundle.getString("settings.tabs.game_download"), pnlGameDownloads); // NOI18N + + btnIncludeMinecraft.setText(bundle.getString("setupwindow.include_minecraft")); // NOI18N + btnIncludeMinecraft.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnIncludeMinecraftActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(btnIncludeMinecraft) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(tabVersionEdit) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(tabVersionEdit) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnIncludeMinecraft) + .addContainerGap()) + ); + }// //GEN-END:initComponents + // + private void cboProfilesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboProfilesItemStateChanged + if (isLoading) return; + profile = getProfile(); + if (profile.getMinecraftProvider().getVersionCount() <= 0) + versionChanged(profile, null); + prepare(profile); + }//GEN-LAST:event_cboProfilesItemStateChanged + + private void btnNewProfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewProfileActionPerformed + NewProfileWindow window = new NewProfileWindow(null); + window.setVisible(true); + loadProfiles(); + }//GEN-LAST:event_btnNewProfileActionPerformed + + private void btnRemoveProfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRemoveProfileActionPerformed + if (profile == null) return; + if ("Default".equals(profile.getName())) { + MessageBox.Show(C.i18n("settings.cannot_remove_default_config")); + return; + } + if (MessageBox.Show(C.i18n("ui.message.sure_remove", profile.getName()), MessageBox.YES_NO_OPTION) == MessageBox.NO_OPTION) return; + cboProfiles.removeItem(profile.getName()); + Settings.delVersion(profile); + profile = Settings.getOneProfile(); + if (profile != null) { + prepare(profile); + loadVersions(); + } + }//GEN-LAST:event_btnRemoveProfileActionPerformed + + private void cboVersionsItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboVersionsItemStateChanged + if (isLoading || cboVersions.getSelectedIndex() < 0 || StrUtils.isBlank((String) cboVersions.getSelectedItem()) || getProfile() == null) return; + loadMinecraftVersion((String) cboVersions.getSelectedItem()); + versionChanged(getProfile(), (String) cboVersions.getSelectedItem()); + }//GEN-LAST:event_cboVersionsItemStateChanged + + private void btnRefreshVersionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshVersionsActionPerformed + refreshVersions(); + }//GEN-LAST:event_btnRefreshVersionsActionPerformed + + private void btnRefreshForgeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshForgeActionPerformed + forge.refreshVersions();//refreshForgeVersions(); + }//GEN-LAST:event_btnRefreshForgeActionPerformed + + private void btnDownloadForgeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadForgeActionPerformed + int idx = lstForge.getSelectedRow(); + if (idx == -1) { + MessageBox.Show(C.i18n("install.not_refreshed")); + return; + } + InstallerVersion v = forge.getVersion(idx);//forgeVersions.get(idx); + String url; + File filepath = IOUtils.tryGetCanonicalFile(IOUtils.currentDirWithSeparator() + "forge-installer.jar"); + if (v.installer != null) { + url = v.installer; + TaskWindow.getInstance() + .addTask(new FileDownloadTask(url, filepath).setTag("forge")) + .addTask(new ForgeInstaller(profile.getMinecraftProvider(), filepath)) + .start(); + } + }//GEN-LAST:event_btnDownloadForgeActionPerformed + + private void btnRetryForgeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRetryForgeActionPerformed + if (profile == null) return; + MinecraftVersion v = profile.getMinecraftProvider().getVersionById(mcVersion); + if (v == null) return; + TaskWindow.getInstance().addTask(new ForgeInstaller(profile.getMinecraftProvider(), IOUtils.tryGetCanonicalFile(IOUtils.currentDirWithSeparator() + "forge-installer.jar"))).start(); + }//GEN-LAST:event_btnRetryForgeActionPerformed + + private void btnRefreshOptifineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshOptifineActionPerformed + optifine.refreshVersions(); + }//GEN-LAST:event_btnRefreshOptifineActionPerformed + + private void btnDownloadOptifineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadOptifineActionPerformed + int idx = lstOptifine.getSelectedRow(); + if (idx == -1) { + MessageBox.Show(C.i18n("install.not_refreshed")); + return; + } + InstallerVersion v = optifine.getVersion(idx); + File filepath = IOUtils.tryGetCanonicalFile(IOUtils.currentDirWithSeparator() + "optifine-installer.jar"); + if (v.installer != null) { + OptiFineDownloadFormatter task = new OptiFineDownloadFormatter(v.installer); + TaskWindow.getInstance().addTask(task) + .addTask(new FileDownloadTask(filepath).registerPreviousResult(task).setTag("optifine")) + .addTask(new OptiFineInstaller(profile, v.selfVersion, filepath)) + .start(); + } + }//GEN-LAST:event_btnDownloadOptifineActionPerformed + + private void btnInstallLiteLoaderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnInstallLiteLoaderActionPerformed + int idx = lstLiteLoader.getSelectedRow(); + if (idx == -1) { + MessageBox.Show(C.i18n("install.not_refreshed")); + return; + } + InstallerVersion v = liteloader.getVersion(idx); + String url; + File filepath = IOUtils.tryGetCanonicalFile(IOUtils.currentDirWithSeparator() + "liteloader-universal.jar"); + url = v.universal; + FileDownloadTask task = (FileDownloadTask) new FileDownloadTask(url, filepath).setTag("LiteLoader"); + TaskWindow.getInstance() + .addTask(task).addTask(new LiteLoaderInstaller(profile, (LiteLoaderInstallerVersion) v).registerPreviousResult(task)) + .start(); + }//GEN-LAST:event_btnInstallLiteLoaderActionPerformed + + private void btnRefreshLiteLoaderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshLiteLoaderActionPerformed + liteloader.refreshVersions(); + }//GEN-LAST:event_btnRefreshLiteLoaderActionPerformed + + private void btnRetryLiteLoaderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRetryLiteLoaderActionPerformed + if (profile == null) return; + int idx = lstLiteLoader.getSelectedRow(); + if (idx == -1) return; + InstallerVersion v = liteloader.getVersion(idx); + File filepath = new File(IOUtils.currentDir(), "liteloader-universal.jar"); + TaskWindow.getInstance().addTask(new LiteLoaderInstaller(profile, (LiteLoaderInstallerVersion) v, filepath)).start(); + }//GEN-LAST:event_btnRetryLiteLoaderActionPerformed + + private void btnDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadActionPerformed + downloadMinecraft(Settings.s().getDownloadSource()); + refreshVersions(); + }//GEN-LAST:event_btnDownloadActionPerformed + + private void btnRefreshGameDownloadsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshGameDownloadsActionPerformed + refreshDownloads(Settings.s().getDownloadSource()); + }//GEN-LAST:event_btnRefreshGameDownloadsActionPerformed + + private void btnExploreMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnExploreMouseClicked + ppmExplore.show(evt.getComponent(), evt.getPoint().x, evt.getPoint().y); + }//GEN-LAST:event_btnExploreMouseClicked + + private void btnIncludeMinecraftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnIncludeMinecraftActionPerformed + JFileChooser fc = new JFileChooser(IOUtils.currentDir()); + fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + int ret = fc.showOpenDialog(this); + if (ret == JFileChooser.APPROVE_OPTION) { + File newGameDir = fc.getSelectedFile(); + String name = JOptionPane.showInputDialog(C.i18n("setupwindow.give_a_name")); + if (StrUtils.isBlank(name)) { + MessageBox.Show(C.i18n("setupwindow.no_empty_name")); + return; + } + Settings.trySetVersion(new Profile(name).setGameDir(newGameDir.getAbsolutePath())); + MessageBox.Show(C.i18n("setupwindow.find_in_configurations")); + loadProfiles(); + } + }//GEN-LAST:event_btnIncludeMinecraftActionPerformed + + private void btnModifyMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnModifyMouseClicked + ppmManage.show(evt.getComponent(), evt.getPoint().x, evt.getPoint().y); + }//GEN-LAST:event_btnModifyMouseClicked + + private void txtJavaArgsFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtJavaArgsFocusLost + profile.setJavaArgs(txtJavaArgs.getText()); + }//GEN-LAST:event_txtJavaArgsFocusLost + + private void txtMinecraftArgsFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMinecraftArgsFocusLost + profile.setMinecraftArgs(txtMinecraftArgs.getText()); + }//GEN-LAST:event_txtMinecraftArgsFocusLost + + private void txtPermSizeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPermSizeFocusLost + profile.setPermSize(txtPermSize.getText()); + }//GEN-LAST:event_txtPermSizeFocusLost + + private void chkDebugFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_chkDebugFocusLost + profile.setDebug(chkDebug.isSelected()); + }//GEN-LAST:event_chkDebugFocusLost + + private void chkNoJVMArgsFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_chkNoJVMArgsFocusLost + profile.setNoJVMArgs(chkNoJVMArgs.isSelected()); + }//GEN-LAST:event_chkNoJVMArgsFocusLost + + private void chkCancelWrapperFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_chkCancelWrapperFocusLost + profile.setCanceledWrapper(chkCancelWrapper.isSelected()); + }//GEN-LAST:event_chkCancelWrapperFocusLost + + private void txtWrapperLauncherFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtWrapperLauncherFocusLost + profile.setWrapperLauncher(txtWrapperLauncher.getText()); + }//GEN-LAST:event_txtWrapperLauncherFocusLost + + private void txtServerIPFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtServerIPFocusLost + profile.setServerIp(txtServerIP.getText()); + }//GEN-LAST:event_txtServerIPFocusLost + + private void cboGameDirTypeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cboGameDirTypeFocusLost + if (cboGameDirType.getSelectedIndex() >= 0) + profile.setGameDirType(GameDirType.values()[cboGameDirType.getSelectedIndex()]); + }//GEN-LAST:event_cboGameDirTypeFocusLost + + private void cboLauncherVisibilityFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cboLauncherVisibilityFocusLost + if (cboLauncherVisibility.getSelectedIndex() >= 0) + profile.setLauncherVisibility(cboLauncherVisibility.getSelectedIndex()); + }//GEN-LAST:event_cboLauncherVisibilityFocusLost + + private void btnDownloadAllAssetsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadAllAssetsActionPerformed + boolean flag = false; + ArrayList al = new ArrayList<>(); + if (minecraftVersion == null) { + MessageBox.Show(C.i18n("mainwindow.no_version")); + return; + } + String s = StrUtils.formatVersion(minecraftVersion.version); + for (IAssetsHandler a : IAssetsHandler.getAssetsHandlers()) { + if (a.isVersionAllowed(s)) { + downloadAssets(a); + return; + } + al.add(a.getName()); + } + if (!flag) { + Selector selector = new Selector(MainFrame.instance, al.toArray(new String[0]), C.i18n("assets.unkown_type_select_one", mcVersion)); + selector.setVisible(true); + if (selector.sel != -1) + downloadAssets(IAssetsHandler.getAssetsHandler(selector.sel)); + } + }//GEN-LAST:event_btnDownloadAllAssetsActionPerformed + + private void txtMaxMemoryFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMaxMemoryFocusLost + profile.setMaxMemory(txtMaxMemory.getText()); + }//GEN-LAST:event_txtMaxMemoryFocusLost + + private void txtJavaDirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtJavaDirActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_txtJavaDirActionPerformed + + private void txtJavaDirFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtJavaDirFocusLost + profile.setJavaDir(txtJavaDir.getText()); + }//GEN-LAST:event_txtJavaDirFocusLost + + private void chkFullscreenFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_chkFullscreenFocusLost + profile.setFullscreen(chkFullscreen.isSelected()); + }//GEN-LAST:event_chkFullscreenFocusLost + + private void txtHeightFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtHeightFocusLost + profile.setHeight(txtHeight.getText()); + }//GEN-LAST:event_txtHeightFocusLost + + private void txtWidthFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtWidthFocusLost + profile.setWidth(txtWidth.getText()); + }//GEN-LAST:event_txtWidthFocusLost + + private void txtGameDirFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtGameDirFocusLost + if (profile == null) return; + profile.setGameDir(txtGameDir.getText()); + loadVersions(); + }//GEN-LAST:event_txtGameDirFocusLost + + // + // + private void loadProfiles() { + isLoading = true; + cboProfiles.removeAllItems(); + Profile firstProfile = null, selectedProfile = null; + int index = 0, i = 0; + for (Profile s : Settings.getProfiles()) { + if (firstProfile == null) firstProfile = s; + cboProfiles.addItem(s.getName()); + if (Settings.s().getLast() != null && Settings.s().getLast().equals(s.getName())) { + index = i; + selectedProfile = s; + } + i++; + } + if (selectedProfile == null) selectedProfile = Settings.getOneProfile(); + + isLoading = false; + if (index < cboProfiles.getItemCount()) { + cboProfiles.setSelectedIndex(index); + profile = selectedProfile; + if (profile == null) profile = firstProfile; + prepare(profile); + loadVersions(); + } + } + + Profile getProfile() { + if (cboProfiles.getSelectedIndex() >= 0) + return Settings.getVersion(cboProfiles.getSelectedItem().toString()); + else return null; + } + + void prepare(Profile profile) { + if (profile == null) return; + txtWidth.setText(profile.getWidth()); + txtHeight.setText(profile.getHeight()); + txtMaxMemory.setText(profile.getMaxMemory()); + txtPermSize.setText(profile.getPermSize()); + txtGameDir.setText(profile.getGameDir()); + txtJavaArgs.setText(profile.getJavaArgs()); + txtMinecraftArgs.setText(profile.getMinecraftArgs()); + txtJavaDir.setText(profile.getJavaDir()); + txtWrapperLauncher.setText(profile.getWrapperLauncher()); + txtServerIP.setText(profile.getServerIp()); + chkDebug.setSelected(profile.isDebug()); + chkNoJVMArgs.setSelected(profile.isNoJVMArgs()); + chkFullscreen.setSelected(profile.isFullscreen()); + chkCancelWrapper.setSelected(profile.isCanceledWrapper()); + cboLauncherVisibility.setSelectedIndex(profile.getLauncherVisibility()); + cboGameDirType.setSelectedIndex(profile.getGameDirType().ordinal()); + + loadVersions(); + loadMinecraftVersion(); + } + + void loadVersions() { + if (profile == null) return; + isLoading = true; + cboVersions.removeAllItems(); + int index = 0, i = 0; + MinecraftVersion selVersion = profile.getSelectedMinecraftVersion(); + String selectedMC = selVersion == null ? null : selVersion.id; + for (MinecraftVersion each : profile.getMinecraftProvider().getVersions()) { + cboVersions.addItem(each.id); + if (each.id.equals(selectedMC)) index = i; + i++; + } + isLoading = false; + if (index < cboVersions.getItemCount()) cboVersions.setSelectedIndex(index); + } + + void loadMinecraftVersion() { + loadMinecraftVersion(profile.getSelectedMinecraftVersion()); + } + + void loadMinecraftVersion(String v) { + loadMinecraftVersion(profile.getMinecraftProvider().getVersionById(v)); + } + + /** + * Anaylze the jar of selected minecraft version of current profile to get + * the version. + * + * @param v + */ + void loadMinecraftVersion(MinecraftVersion v) { + txtMinecraftVersion.setText(""); + if (v == null) return; + File minecraftJar = v.getJar(profile.getGameDirFile()); + minecraftVersion = MCUtils.minecraftVersion(minecraftJar); + txtMinecraftVersion.setText(MinecraftVersionRequest.getResponse(minecraftVersion)); + } + // + // + public int assetsType; + + private void downloadAssets(final IAssetsHandler type) { + if (mcVersion == null || profile == null) return; + type.getList((value) -> { + if (value != null) + TaskWindow.getInstance().addTask(type.getDownloadTask(Settings.s().getDownloadSource().getProvider())).start(); + }); + } + + // + // + public void refreshDownloads(final DownloadType provider) { + TaskWindow.getInstance().addTask(new Task() { + HTTPGetTask tsk = new HTTPGetTask(provider.getProvider().getVersionsListDownloadURL()); + + @Override + public boolean executeTask() { + final MinecraftRemoteVersions v = MinecraftRemoteVersions.fromJson(tsk.getResult()); + if (v == null || v.versions == null) + return true; + SwingUtilities.invokeLater(() -> { + DefaultTableModel model = (DefaultTableModel) lstDownloads.getModel(); + while (model.getRowCount() > 0) model.removeRow(0); + for (MinecraftRemoteVersion ver : v.versions) { + Object[] line = new Object[3]; + line[0] = ver.id; + line[1] = ver.time; + if (StrUtils.equalsOne(ver.type, "old_beta", "old_alpha", "release", "snapshot")) + line[2] = C.i18n("versions." + ver.type); + else line[2] = ver.type; + model.addRow(line); + } + lstDownloads.updateUI(); + }); + return true; + } + + @Override + public String getInfo() { + return "Format list."; + } + + @Override + public Collection getDependTasks() { + return Arrays.asList((Task) tsk); + } + }).start(); + } + + void downloadMinecraft(DownloadType index) { + if (profile == null) return; + if (lstDownloads.getSelectedRow() < 0) + refreshDownloads(Settings.s().getDownloadSource()); + if (lstDownloads.getSelectedRow() < 0) { + MessageBox.Show(C.i18n("gamedownload.not_refreshed")); + return; + } + String id = (String) lstDownloads.getModel().getValueAt(lstDownloads.getSelectedRow(), 0); + MCUtils.downloadMinecraft(profile.getGameDirFile(), id, index); + } + + // + // + private String getMinecraftVersionFormatted() { + return minecraftVersion == null ? "" : (StrUtils.formatVersion(minecraftVersion.version) == null) ? mcVersion : minecraftVersion.version; + } + + class InstallerHelper { + List versions; + InstallerVersionList list; + JTable jt; + String id; + + public InstallerHelper(JTable jt, String id) { + this.jt = jt; + this.id = id; + } + + public void loadVersions() { + versions = loadVersions(list, jt); + } + + void refreshVersions() { + list = Settings.s().getDownloadSource().getProvider().getInstallerByType(id); + if (TaskWindow.getInstance().addTask(new TaskRunnableArg1<>(C.i18n("install." + id + ".get_list"), list) + .registerPreviousResult(new DefaultPreviousResult<>(new String[]{getMinecraftVersionFormatted()}))) + .start()) + loadVersions(); + } + + public InstallerVersion getVersion(int idx) { + return versions.get(idx); + } + + private List loadVersions(InstallerVersionList list, JTable table) { + if (list == null) + return null; + DefaultTableModel model = (DefaultTableModel) table.getModel(); + while (model.getRowCount() > 0) + model.removeRow(0); + String mcver = StrUtils.formatVersion(getMinecraftVersionFormatted()); + List versions = list.getVersions(mcver); + if (versions != null) { + for (InstallerVersionList.InstallerVersion v : versions) { + Object a = v.selfVersion == null ? "null" : v.selfVersion; + Object b = v.mcVersion == null ? "null" : v.mcVersion; + Object[] row = new Object[]{a, b}; + model.addRow(row); + } + table.updateUI(); + } + return versions; + } + } + + private void refreshVersions() { + getProfile().getMinecraftProvider().refreshVersions(); + loadVersions(); + } + + // + // + boolean isLoading = false; + Profile profile; + public MinecraftVersionRequest minecraftVersion; + InstallerHelper forge, optifine, liteloader; + String mcVersion; + + // + + // + public void versionChanged(Profile profile, String version) { + this.mcVersion = version; + forge.loadVersions(); + optifine.loadVersions(); + liteloader.loadVersions(); + + MinecraftVersion v = profile.getMinecraftProvider().getVersionById(version); + if (v != null) + for (IAssetsHandler ph : IAssetsHandler.getAssetsHandlers()) + try { + ph.setAssets(profile.getMinecraftProvider(), v); + } catch (Exception e) { + HMCLog.warn("Failed to load assets", e); + } + } + + public void onSelected() { + loadProfiles(); + if (profile == null) return; + if (profile.getMinecraftProvider().getVersionCount() <= 0) + versionChanged(profile, null); + else versionChanged(getProfile(), (String) cboVersions.getSelectedItem()); + } + + // + JPopupMenu ppmManage, ppmExplore; + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnDownload; + private javax.swing.JButton btnDownloadAllAssets; + private javax.swing.JButton btnDownloadForge; + private javax.swing.JButton btnDownloadOptifine; + private javax.swing.JButton btnExplore; + private javax.swing.JButton btnIncludeMinecraft; + private javax.swing.JButton btnInstallLiteLoader; + private javax.swing.JButton btnModify; + private javax.swing.JButton btnNewProfile; + private javax.swing.JButton btnRefreshForge; + private javax.swing.JButton btnRefreshGameDownloads; + private javax.swing.JButton btnRefreshLiteLoader; + private javax.swing.JButton btnRefreshOptifine; + private javax.swing.JButton btnRefreshVersions; + private javax.swing.JButton btnRemoveProfile; + private javax.swing.JButton btnRetryForge; + private javax.swing.JButton btnRetryLiteLoader; + private javax.swing.JComboBox cboGameDirType; + private javax.swing.JComboBox cboLauncherVisibility; + private javax.swing.JComboBox cboProfiles; + private javax.swing.JComboBox cboVersions; + private javax.swing.JCheckBox chkCancelWrapper; + private javax.swing.JCheckBox chkDebug; + private javax.swing.JCheckBox chkFullscreen; + private javax.swing.JCheckBox chkNoJVMArgs; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel24; + private javax.swing.JLabel jLabel25; + private javax.swing.JLabel jLabel26; + private javax.swing.JLabel jLabel27; + private javax.swing.JLabel jLabel28; + private javax.swing.JLabel jLabel29; + private javax.swing.JLabel jLabel30; + private javax.swing.JLabel jLabel31; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel16; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel22; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel5; + private javax.swing.JScrollPane jScrollPane11; + private javax.swing.JScrollPane jScrollPane12; + private javax.swing.JScrollPane jScrollPane13; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JLabel lblMaxMemory; + private javax.swing.JTable lstDownloads; + private javax.swing.JTable lstForge; + private javax.swing.JTable lstLiteLoader; + private javax.swing.JTable lstOptifine; + private javax.swing.JPanel pnlAutoInstall; + private javax.swing.JPanel pnlGameDownloads; + private javax.swing.JPanel pnlOptifine; + private javax.swing.JTabbedPane tabInstallers; + private javax.swing.JTabbedPane tabVersionEdit; + private javax.swing.JTextField txtGameDir; + private javax.swing.JTextField txtHeight; + private javax.swing.JTextField txtJavaArgs; + private javax.swing.JTextField txtJavaDir; + private javax.swing.JTextField txtMaxMemory; + private javax.swing.JTextField txtMinecraftArgs; + private javax.swing.JTextField txtMinecraftVersion; + private javax.swing.JTextField txtPermSize; + private javax.swing.JTextField txtServerIP; + private javax.swing.JTextField txtWidth; + private javax.swing.JTextField txtWrapperLauncher; + // End of variables declaration//GEN-END:variables + // +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java new file mode 100644 index 000000000..1e4f2171a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java @@ -0,0 +1,92 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import java.awt.EventQueue; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import javax.swing.BorderFactory; +import javax.swing.DefaultButtonModel; +import javax.swing.JLabel; + +/** + * + * @author hyh + */ +public class HeaderTab extends JLabel + implements MouseListener { + + private boolean isActive; + private final DefaultButtonModel model; + + public HeaderTab(String text) { + super(text); + + this.model = new DefaultButtonModel(); + setIsActive(false); + + setBorder(BorderFactory.createEmptyBorder(6, 18, 7, 18)); + addMouseListener(this); + } + + public boolean isActive() { + return this.isActive; + } + + public void setIsActive(boolean isActive) { + this.isActive = isActive; + setOpaque(isActive); + + EventQueue.invokeLater(HeaderTab.this::repaint); + } + + public void addActionListener(ActionListener listener) { + this.model.addActionListener(listener); + } + + public String getActionCommand() { + return this.model.getActionCommand(); + } + + public ActionListener[] getActionListeners() { + return this.model.getActionListeners(); + } + + public void removeActionListener(ActionListener listener) { + this.model.removeActionListener(listener); + } + + public void setActionCommand(String command) { + this.model.setActionCommand(command); + } + + @Override + public void mouseClicked(MouseEvent e) { + } + + @Override + public void mousePressed(MouseEvent e) { + this.model.setPressed(true); + this.model.setArmed(true); + } + + @Override + public void mouseReleased(MouseEvent e) { + this.model.setPressed(false); + this.model.setArmed(false); + } + + @Override + public void mouseEntered(MouseEvent e) { + this.model.setRollover(true); + } + + @Override + public void mouseExited(MouseEvent e) { + this.model.setRollover(false); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form new file mode 100644 index 000000000..8f5af0159 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form @@ -0,0 +1,178 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java new file mode 100644 index 000000000..4cc8fd676 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java @@ -0,0 +1,223 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import java.awt.Color; +import java.io.IOException; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JFileChooser; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author hyh + */ +public class LauncherSettingsPanel extends javax.swing.JPanel { + + /** + * Creates new form LancherSettingsPanel + */ + public LauncherSettingsPanel() { + initComponents(); + + txtBackgroundPath.setText(Settings.s().getBgpath()); + cboDownloadSource.setSelectedIndex(Settings.s().getDownloadType()); + cboTheme.setSelectedIndex(Settings.s().getTheme()); + chkEnableShadow.setSelected(Settings.s().isEnableShadow()); + + setBackground(Color.white); + setOpaque(true); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + cboDownloadSource = new javax.swing.JComboBox(); + jLabel4 = new javax.swing.JLabel(); + btnSelBackgroundPath = new javax.swing.JButton(); + jLabel14 = new javax.swing.JLabel(); + txtBackgroundPath = new javax.swing.JTextField(); + jLabel7 = new javax.swing.JLabel(); + btnCheckUpdate = new javax.swing.JButton(); + chkEnableShadow = new javax.swing.JCheckBox(); + jLabel1 = new javax.swing.JLabel(); + cboTheme = new javax.swing.JComboBox(); + + cboDownloadSource.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Mojang", "BMCLAPI(By bangbang93)" })); + cboDownloadSource.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboDownloadSourceItemStateChanged(evt); + } + }); + + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + jLabel4.setText(bundle.getString("launcher.about")); // NOI18N + + btnSelBackgroundPath.setText(bundle.getString("ui.button.explore")); // NOI18N + btnSelBackgroundPath.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSelBackgroundPathActionPerformed(evt); + } + }); + + jLabel14.setText(bundle.getString("launcher.background_location")); // NOI18N + jLabel14.setToolTipText(""); + + txtBackgroundPath.setToolTipText(bundle.getString("launcher.background_tooltip")); // NOI18N + txtBackgroundPath.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtBackgroundPathFocusLost(evt); + } + }); + + jLabel7.setText(bundle.getString("launcher.download_source")); // NOI18N + + btnCheckUpdate.setText(bundle.getString("launcher.update_launcher")); // NOI18N + btnCheckUpdate.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCheckUpdateActionPerformed(evt); + } + }); + + chkEnableShadow.setText(bundle.getString("launcher.enable_shadow")); // NOI18N + chkEnableShadow.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + chkEnableShadowFocusLost(evt); + } + }); + + jLabel1.setText(bundle.getString("launcher.theme")); // NOI18N + + cboTheme.setModel(new DefaultComboBoxModel(new String[]{C.i18n("color.blue"),C.i18n("color.green"),C.i18n("color.purple"),C.i18n("color.dark_blue"),C.i18n("color.orange"),C.i18n("color.red")})); + cboTheme.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboThemeItemStateChanged(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addComponent(chkEnableShadow) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnCheckUpdate)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel7) + .addComponent(jLabel1) + .addComponent(jLabel14)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(txtBackgroundPath) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSelBackgroundPath)) + .addComponent(cboDownloadSource, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cboTheme, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel14) + .addComponent(btnSelBackgroundPath, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtBackgroundPath, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel7) + .addComponent(cboDownloadSource, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(cboTheme, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(chkEnableShadow) + .addComponent(btnCheckUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 119, Short.MAX_VALUE) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void cboDownloadSourceItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboDownloadSourceItemStateChanged + Settings.s().setDownloadType(cboDownloadSource.getSelectedIndex()); + }//GEN-LAST:event_cboDownloadSourceItemStateChanged + + private void btnSelBackgroundPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSelBackgroundPathActionPerformed + JFileChooser fc = new JFileChooser(); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); + fc.setDialogTitle(C.i18n("launcher.choose_bgpath")); + fc.setMultiSelectionEnabled(false); + fc.showOpenDialog(this); + if (fc.getSelectedFile() == null) { + return; + } + try { + String path = fc.getSelectedFile().getCanonicalPath(); + path = IOUtils.removeLastSeparator(path); + txtBackgroundPath.setText(path); + Settings.s().setBgpath(path); + MainFrame.instance.loadBackground(); + } catch (IOException e) { + HMCLog.warn("Failed to set background path.", e); + MessageBox.Show(C.i18n("ui.label.failed_set") + e.getMessage()); + } + }//GEN-LAST:event_btnSelBackgroundPathActionPerformed + + private void txtBackgroundPathFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtBackgroundPathFocusLost + String path = txtBackgroundPath.getText(); + Settings.s().setBgpath(path); + MainFrame.instance.loadBackground(); + }//GEN-LAST:event_txtBackgroundPathFocusLost + + private void btnCheckUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheckUpdateActionPerformed + Settings.UPDATE_CHECKER.process(true); + }//GEN-LAST:event_btnCheckUpdateActionPerformed + + private void chkEnableShadowFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_chkEnableShadowFocusLost + Settings.s().setEnableShadow(chkEnableShadow.isSelected()); + }//GEN-LAST:event_chkEnableShadowFocusLost + + private void cboThemeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboThemeItemStateChanged + Settings.s().setTheme(cboTheme.getSelectedIndex()); + if(MainFrame.instance != null) + MainFrame.instance.reloadColor(); + }//GEN-LAST:event_cboThemeItemStateChanged + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnCheckUpdate; + private javax.swing.JButton btnSelBackgroundPath; + private javax.swing.JComboBox cboDownloadSource; + private javax.swing.JComboBox cboTheme; + private javax.swing.JCheckBox chkEnableShadow; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel7; + private javax.swing.JTextField txtBackgroundPath; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java new file mode 100644 index 000000000..b0a3fc8ba --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java @@ -0,0 +1,360 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import com.sun.awt.AWTUtilities; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Transparency; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.image.BufferedImage; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.Main; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.utils.UpdateChecker; +import org.jackhuang.hellominecraft.utils.Utils; +import org.jackhuang.hellominecraft.views.DropShadowBorder; +import org.jackhuang.hellominecraft.views.TintablePanel; +import org.jackhuang.hellominecraft.views.BasicColors; + +/** + * + * @author hyh + */ +public final class MainFrame extends DraggableFrame { + + public static final MainFrame instance = new MainFrame(); + + HeaderTab mainTab, gameTab, launcherTab; + TintablePanel centralPanel; + JPanel header; + MainPagePanel mainPanel; + GameSettingsPanel gamePanel; + LauncherSettingsPanel launcherPanel; + CardLayout infoLayout; + JPanel infoSwap; + JLabel backgroundLabel, windowTitle; + JPanel realPanel; + DropShadowBorder border; + boolean enableShadow; + String defaultTitle; + + MainFrame() { + defaultTitle = Main.makeTitle(); + enableShadow = Settings.s().isEnableShadow(); + if (enableShadow) + setSize(834, 542); + else + setSize(802, 511); + setDefaultCloseOperation(3); + setTitle(Main.makeTitle()); + initComponents(); + selectTab("main"); + loadBackground(); + + setLocationRelativeTo(null); + + if (enableShadow) + try { + AWTUtilities.setWindowOpaque(this, false); + getRootPane().setBorder(border = new DropShadowBorder(borderColor, 4)); + } catch (Throwable ex) { + HMCLog.err("Failed to set window transparent.", ex); + Settings.s().setEnableShadow(false); + setSize(802, 511); + } + + ((JPanel) getContentPane()).setOpaque(true); + } + + private void initComponents() { + borderColor = BasicColors.bgcolors[Settings.s().getTheme()]; + borderColorDarker = BasicColors.bgcolors_darker[Settings.s().getTheme()]; + + realPanel = new JPanel(); + realPanel.setLayout(null); + + header = new JPanel(); + header.setBounds(0, 0, 800, 30); + realPanel.add(header); + header.setOpaque(true); + header.setLayout(new BoxLayout(header, BoxLayout.LINE_AXIS)); + header.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 5)); + header.setBackground(borderColor); + header.setForeground(BasicColors.COLOR_WHITE_TEXT); + + ImageIcon headerIcon = Main.getIcon("icon.png"); + this.setIconImage(headerIcon.getImage()); + headerIcon = Utils.scaleImage(headerIcon, 16, 16); + JLabel headerLabel = new JLabel(headerIcon); + headerLabel.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0)); + header.add(headerLabel); + + header.add(Box.createRigidArea(new Dimension(8, 0))); + + ActionListener tabListener = (e) -> MainFrame.this.selectTab(e.getActionCommand()); + + this.mainTab = new HeaderTab(C.i18n("launcher.title.main")); + this.mainTab.setForeground(BasicColors.COLOR_WHITE_TEXT); + this.mainTab.setBackground(borderColorDarker); + this.mainTab.setActionCommand("main"); + this.mainTab.addActionListener(tabListener); + header.add(this.mainTab); + + this.gameTab = new HeaderTab(C.i18n("launcher.title.game")); + this.gameTab.setForeground(BasicColors.COLOR_WHITE_TEXT); + this.gameTab.setBackground(borderColorDarker); + this.gameTab.setIsActive(true); + this.gameTab.setHorizontalTextPosition(10); + this.gameTab.addActionListener(tabListener); + this.gameTab.setActionCommand("game"); + header.add(this.gameTab); + + this.launcherTab = new HeaderTab(C.i18n("launcher.title.launcher")); + this.launcherTab.setForeground(BasicColors.COLOR_WHITE_TEXT); + this.launcherTab.setBackground(borderColorDarker); + this.launcherTab.setLayout(null); + this.launcherTab.addActionListener(tabListener); + this.launcherTab.setActionCommand("launcher"); + header.add(this.launcherTab); + + header.add(Box.createHorizontalGlue()); + + JPanel rightHeaderPanel = new JPanel(); + rightHeaderPanel.setOpaque(false); + rightHeaderPanel.setLayout(new BoxLayout(rightHeaderPanel, BoxLayout.PAGE_AXIS)); + rightHeaderPanel.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0)); + + JPanel windowGadgetPanel = new JPanel(); + windowGadgetPanel.setOpaque(false); + windowGadgetPanel.setLayout(new BoxLayout(windowGadgetPanel, BoxLayout.LINE_AXIS)); + windowGadgetPanel.setAlignmentX(1.0F); + + ImageIcon minimizeIcon = Main.getIcon("minimize.png"); + JButton minimizeButton = new JButton(minimizeIcon); + minimizeButton.setBorder(BorderFactory.createEmptyBorder()); + minimizeButton.setContentAreaFilled(false); + minimizeButton.setCursor(new Cursor(12)); + minimizeButton.setFocusable(false); + minimizeButton.addActionListener((e) -> MainFrame.this.minimizeWindow()); + windowGadgetPanel.add(minimizeButton); + + ImageIcon closeIcon = Main.getIcon("close.png"); + JButton closeButton = new JButton(closeIcon); + closeButton.setBorder(BorderFactory.createEmptyBorder()); + closeButton.setContentAreaFilled(false); + closeButton.addActionListener((e) -> MainFrame.this.closeWindow()); + closeButton.setCursor(new Cursor(12)); + closeButton.setFocusable(false); + windowGadgetPanel.add(closeButton); + + rightHeaderPanel.add(windowGadgetPanel); + + windowTitle = new JLabel(defaultTitle); + windowTitle.setForeground(BasicColors.COLOR_WHITE_TEXT); + windowTitle.addMouseListener(new MouseListener() { + + @Override + public void mouseClicked(MouseEvent e) { + if (UpdateChecker.OUT_DATED) Main.update(); + } + + @Override + public void mousePressed(MouseEvent e) { + } + + @Override + public void mouseReleased(MouseEvent e) { + } + + @Override + public void mouseEntered(MouseEvent e) { + } + + @Override + public void mouseExited(MouseEvent e) { + } + }); + header.add(windowTitle); + header.add(Box.createHorizontalGlue()); + header.add(rightHeaderPanel); + + this.centralPanel = new TintablePanel(); + this.centralPanel.setTintColor(BasicColors.COLOR_CENTRAL_BACK); + realPanel.add(this.centralPanel); + JPanel truePanel = new JPanel(); + truePanel.setLayout(new BorderLayout()); + + this.infoSwap = new JPanel(); + this.infoLayout = new CardLayout(); + this.infoSwap.setLayout(infoLayout); + this.infoSwap.setOpaque(false); + + this.mainPanel = new MainPagePanel(); + this.infoSwap.add(mainPanel, "main"); + this.gamePanel = new GameSettingsPanel(); + this.infoSwap.add(gamePanel, "game"); + this.launcherPanel = new LauncherSettingsPanel(); + this.infoSwap.add(launcherPanel, "launcher"); + + truePanel.add(this.infoSwap, "Center"); + centralPanel.setLayout(null); + centralPanel.add(truePanel); + truePanel.setBounds(0, 0, 800, 480); + centralPanel.setBounds(0, 30, 800, 480); + + setLayout(null); + realPanel.setBounds(1, 0, 800, 511); + add(realPanel); + } + + public void selectTab(String tabName) { + this.mainTab.setIsActive(false); + this.gameTab.setIsActive(false); + this.launcherTab.setIsActive(false); + + if (tabName.equalsIgnoreCase("main")) { + this.mainTab.setIsActive(true); + this.mainPanel.onSelected(); + } else if (tabName.equalsIgnoreCase("game")) { + this.gameTab.setIsActive(true); + this.gamePanel.onSelected(); + } else if (tabName.equalsIgnoreCase("launcher")) + this.launcherTab.setIsActive(true); + + this.infoLayout.show(this.infoSwap, tabName); + } + + protected void closeWindow() { + System.exit(0); + } + + protected void minimizeWindow() { + setState(1); + } + + ImageIcon background; + + public void loadBackground() { + background = Utils.searchBackgroundImage(Main.getIcon("background.jpg"), Settings.s().getBgpath(), 800, 480); + if (background != null) { + if (backgroundLabel == null) { + backgroundLabel = new JLabel(background); + backgroundLabel.setBounds(0, 0, 800, 480); + } else + backgroundLabel.setIcon(background); + centralPanel.add(backgroundLabel, -1); + } else + HMCLog.warn("No Background Image, the background will be white!"); + } + + public JPanel getTitleBar() { + return header; + } + + boolean isShowedMessage = false; + + public void closeMessage() { + if (isShowedMessage) { + isShowedMessage = false; + reloadColor(); + windowTitle.setText(defaultTitle); + windowTitle.setForeground(UpdateChecker.OUT_DATED ? Color.red : Color.white); + } + } + + public void showMessage(String message) { + isShowedMessage = true; + borderColor = BasicColors.COLOR_RED; + borderColorDarker = BasicColors.COLOR_RED_DARKER; + header.setBackground(borderColor); + mainTab.setBackground(borderColorDarker); + gameTab.setBackground(borderColorDarker); + launcherTab.setBackground(borderColorDarker); + if (border != null) + border.setColor(borderColor); + repaint(); + windowTitle.setText(message); + windowTitle.setForeground(Color.white); + } + + public static void showMainFrame(boolean firstLoad) { + instance.mainPanel.onShow(firstLoad); + instance.show(); + } + + Color borderColor = BasicColors.COLOR_BLUE; + Color borderColorDarker = BasicColors.COLOR_BLUE_DARKER; + + public void reloadColor() { + borderColor = BasicColors.bgcolors[Settings.s().getTheme()]; + borderColorDarker = BasicColors.bgcolors_darker[Settings.s().getTheme()]; + if (border != null) + border.setColor(borderColor); + header.setBackground(borderColor); + mainTab.setBackground(borderColorDarker); + gameTab.setBackground(borderColorDarker); + launcherTab.setBackground(borderColorDarker); + repaint(); + } + + private void paintImpl(Graphics g) { + super.paint(g); + g.setColor(borderColor); + int off = enableShadow ? 16 : 0; + int width = 800; + int height = header.getHeight() + 480 - 1; + g.drawLine(off, off, off, height + off + 1); + g.drawLine(off + width + 1, off, off + width + 1, height + off + 1); + g.drawLine(off, height + off + 1, off + width + 1, height + off + 1); + } + + @Override + public void paint(Graphics g) { + if (!enableShadow) + paintImpl(g); + else { + int off = enableShadow ? 16 : 0; + int width = this.getWidth(); + int height = this.getHeight(); + int contentWidth = width - off - off; + int contentHeight = height - off - off; + BufferedImage contentImage = new BufferedImage(contentWidth, + contentHeight, Transparency.OPAQUE); + Graphics2D contentG2d = contentImage.createGraphics(); + contentG2d.translate(-off, -off); + paintImpl(g); + paintImpl(contentG2d); + contentG2d.dispose(); + g.drawImage(contentImage, off, off, this); + } + } + + public void invokeUpdate() { + if (!isVisible()) return; + defaultTitle = defaultTitle + C.i18n("update.found"); + if (!isShowedMessage) { + windowTitle.setText(defaultTitle); + windowTitle.setForeground(Color.red); + } + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form new file mode 100644 index 000000000..dbf9f9ed4 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form @@ -0,0 +1,280 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java new file mode 100644 index 000000000..98a1fea68 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java @@ -0,0 +1,540 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import java.awt.CardLayout; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ItemEvent; +import java.awt.event.KeyEvent; +import java.io.File; +import java.util.List; +import javax.swing.SwingUtilities; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.DefaultGameLauncher; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.LoginInfo; +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.launcher.utils.version.MinecraftVersion; +import org.jackhuang.hellominecraft.launcher.launch.GameLauncher; +import org.jackhuang.hellominecraft.launcher.launch.LaunchFinisher; +import org.jackhuang.hellominecraft.launcher.launch.LaunchScriptFinisher; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; +import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; +import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.views.LogWindow; +import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; +import org.jackhuang.hellominecraft.utils.functions.Consumer; + +/** + * + * @author hyh + */ +public class MainPagePanel extends javax.swing.JPanel { + + /** + * Creates new form MainPagePanel + */ + public MainPagePanel() { + initComponents(); + + pnlButtons = new javax.swing.JPanel(); + pnlButtons.setLayout(null); + + btnRun = new ConstomButton(); + btnRun.setBounds(0, 0, 150, 50); + Font font = btnRun.getFont(); + Font newFont = new Font(font.getName(), font.getStyle(), 15); + pnlButtons.add(btnRun); + + btnRun.setText(C.i18n("ui.button.run")); + btnRun.setFont(newFont); + btnRun.addActionListener(e -> btnRunActionPerformed()); + + this.add(pnlButtons); + pnlButtons.setBounds(0, 0, 150, 50); + + this.setSize(new Dimension(deWidth, deHeight)); + this.pnlButtons.setLocation(deWidth - pnlButtons.getWidth() - 25, deHeight - pnlButtons.getHeight() - 25); + pnlMore.setBounds(0, 0, pnlMore.getWidth(), deHeight); + pnlMore.setBackground(GraphicsUtils.getWebColorWithAlpha("FFFFFF7F")); + pnlMore.setOpaque(true); + + prepareAuths(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + pnlMore = new javax.swing.JPanel(); + txtPlayerName = new javax.swing.JTextField(); + jLabel7 = new javax.swing.JLabel(); + cboLoginMode = new javax.swing.JComboBox(); + lblUserName = new javax.swing.JLabel(); + jLabel10 = new javax.swing.JLabel(); + cboProfiles = new javax.swing.JComboBox(); + jLabel1 = new javax.swing.JLabel(); + cboVersions = new javax.swing.JComboBox(); + pnlPassword = new javax.swing.JPanel(); + jPanel1 = new javax.swing.JPanel(); + jLabel9 = new javax.swing.JLabel(); + txtPassword = new javax.swing.JPasswordField(); + jPanel3 = new javax.swing.JPanel(); + btnLogout = new javax.swing.JButton(); + btnShowLog = new javax.swing.JButton(); + btnMakeLaunchScript = new javax.swing.JButton(); + + setLayout(null); + + pnlMore.setBackground(new java.awt.Color(204, 204, 204)); + pnlMore.setOpaque(false); + + txtPlayerName.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + txtPlayerNameFocusGained(evt); + } + public void focusLost(java.awt.event.FocusEvent evt) { + txtPlayerNameFocusLost(evt); + } + }); + txtPlayerName.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + txtPlayerNameKeyPressed(evt); + } + }); + + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + jLabel7.setText(bundle.getString("login.type")); // NOI18N + + cboLoginMode.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboLoginModeItemStateChanged(evt); + } + }); + + lblUserName.setText(bundle.getString("login.username")); // NOI18N + + jLabel10.setText(bundle.getString("ui.label.profile")); // NOI18N + + cboProfiles.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboProfilesItemStateChanged(evt); + } + }); + + jLabel1.setText(C.I18N.getString("ui.label.version")); // NOI18N + jLabel1.setToolTipText(bundle.getString("ui.label.version")); // NOI18N + + cboVersions.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboVersionsItemStateChanged(evt); + } + }); + + pnlPassword.setLayout(new java.awt.CardLayout()); + + jLabel9.setText(bundle.getString("ui.label.password")); // NOI18N + + txtPassword.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + txtPasswordFocusGained(evt); + } + }); + txtPassword.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + txtPasswordActionPerformed(evt); + } + }); + txtPassword.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + txtPasswordKeyPressed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel9) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtPassword)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))) + ); + + pnlPassword.add(jPanel1, "card2"); + + btnLogout.setText(C.I18N.getString("ui.button.logout")); // NOI18N + btnLogout.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnLogoutActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnLogout, javax.swing.GroupLayout.DEFAULT_SIZE, 170, Short.MAX_VALUE) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnLogout, javax.swing.GroupLayout.DEFAULT_SIZE, 26, Short.MAX_VALUE) + ); + + pnlPassword.add(jPanel3, "card3"); + + btnShowLog.setText(bundle.getString("mainwindow.show_log")); // NOI18N + btnShowLog.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnShowLogActionPerformed(evt); + } + }); + + btnMakeLaunchScript.setText(bundle.getString("mainwindow.make_launch_script")); // NOI18N + btnMakeLaunchScript.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMakeLaunchScriptActionPerformed(evt); + } + }); + + javax.swing.GroupLayout pnlMoreLayout = new javax.swing.GroupLayout(pnlMore); + pnlMore.setLayout(pnlMoreLayout); + pnlMoreLayout.setHorizontalGroup( + pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlMoreLayout.createSequentialGroup() + .addContainerGap() + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(pnlPassword, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(pnlMoreLayout.createSequentialGroup() + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel10) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cboProfiles, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cboVersions, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addComponent(btnMakeLaunchScript, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnShowLog, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(pnlMoreLayout.createSequentialGroup() + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblUserName) + .addComponent(jLabel7)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cboLoginMode, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtPlayerName)))) + .addContainerGap()) + ); + pnlMoreLayout.setVerticalGroup( + pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlMoreLayout.createSequentialGroup() + .addContainerGap() + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel10) + .addComponent(cboProfiles, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboVersions, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel7) + .addComponent(cboLoginMode, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblUserName) + .addComponent(txtPlayerName, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pnlPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 254, Short.MAX_VALUE) + .addComponent(btnShowLog) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnMakeLaunchScript) + .addContainerGap()) + ); + + add(pnlMore); + pnlMore.setBounds(0, 0, 190, 480); + }// //GEN-END:initComponents + + private void txtPlayerNameFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPlayerNameFocusGained + MainFrame.instance.closeMessage(); + }//GEN-LAST:event_txtPlayerNameFocusGained + + private void txtPlayerNameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPlayerNameFocusLost + Settings.s().setUsername(txtPlayerName.getText()); + }//GEN-LAST:event_txtPlayerNameFocusLost + + private void cboLoginModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboLoginModeItemStateChanged + if (preaparingAuth) return; + int index = cboLoginMode.getSelectedIndex(); + if (index < 0) return; + + IAuthenticator l = IAuthenticator.logins.get(index); + if (l.isHidePasswordBox()) { + pnlPassword.setVisible(false); + lblUserName.setText(C.i18n("login.username")); + } else { + pnlPassword.setVisible(true); + lblUserName.setText(C.i18n("login.account")); + } + + CardLayout cl = (CardLayout) pnlPassword.getLayout(); + if (l.isLoggedIn()) cl.last(pnlPassword); + else cl.first(pnlPassword); + String username = Settings.s().getUsername(); + if (StrUtils.isNotBlank(username)) txtPlayerName.setText(username); + + Settings.s().setLoginType(index); + }//GEN-LAST:event_cboLoginModeItemStateChanged + + private void cboProfilesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboProfilesItemStateChanged + if (!isLoading && cboProfiles.getSelectedIndex() != -1 && !StrUtils.isBlank((String) cboProfiles.getSelectedItem())) { + Settings.s().setLast((String) cboProfiles.getSelectedItem()); + loadMinecraftVersions(); + } + }//GEN-LAST:event_cboProfilesItemStateChanged + + private void cboVersionsItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboVersionsItemStateChanged + if (isLoading || evt.getStateChange() != ItemEvent.SELECTED || cboVersions.getSelectedIndex() < 0 || StrUtils.isBlank((String) cboVersions.getSelectedItem()) || getCurrentProfile() == null) + return; + getCurrentProfile().setSelectedMinecraftVersion(cboVersions.getSelectedItem().toString()); + cboVersions.setToolTipText(cboVersions.getSelectedItem().toString()); + Settings.save(); + }//GEN-LAST:event_cboVersionsItemStateChanged + + private void txtPasswordFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPasswordFocusGained + MainFrame.instance.closeMessage(); + }//GEN-LAST:event_txtPasswordFocusGained + + private void txtPasswordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtPasswordActionPerformed + btnRunActionPerformed(); + }//GEN-LAST:event_txtPasswordActionPerformed + + private void btnLogoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLogoutActionPerformed + if (preaparingAuth) return; + int index = cboLoginMode.getSelectedIndex(); + + IAuthenticator l = IAuthenticator.logins.get(index); + CardLayout cl = (CardLayout) pnlPassword.getLayout(); + if (l.isLoggedIn()) l.logout(); + cl.first(pnlPassword); + }//GEN-LAST:event_btnLogoutActionPerformed + + private void btnShowLogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowLogActionPerformed + LogWindow.instance.setVisible(true); + }//GEN-LAST:event_btnShowLogActionPerformed + + private void btnMakeLaunchScriptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMakeLaunchScriptActionPerformed + MainFrame.instance.showMessage(C.i18n("ui.message.launching")); + genLaunchCode(value -> { + value.successEvent.register(new LaunchScriptFinisher()); + value.successEvent.register(new PrepareAuthDoneListener()); + }); + }//GEN-LAST:event_btnMakeLaunchScriptActionPerformed + + private void txtPlayerNameKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPlayerNameKeyPressed + if (evt.getKeyCode() == KeyEvent.VK_ENTER) { + int index = cboLoginMode.getSelectedIndex(); + if (index < 0) return; + IAuthenticator l = IAuthenticator.logins.get(index); + if (l.isHidePasswordBox()) btnRunActionPerformed(); + else if (!l.isLoggedIn()) txtPassword.requestFocus(); + } + }//GEN-LAST:event_txtPlayerNameKeyPressed + + private void txtPasswordKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPasswordKeyPressed + if (evt.getKeyCode() == KeyEvent.VK_ENTER) btnRunActionPerformed(); + }//GEN-LAST:event_txtPasswordKeyPressed + + // + void genLaunchCode(final Consumer listener) { + HMCLog.log("Start generating launching command..."); + File file = getCurrentProfile().getCanonicalGameDirFile(); + if (!file.exists()) { + HMCLog.warn("The minecraft path is wrong, please check it yourself."); + MessageBox.Show(C.i18n("minecraft.wrong_path")); + return; + } + final String name = (String) cboProfiles.getSelectedItem(); + if (StrUtils.isBlank(name) || getCurrentProfile().getSelectedMinecraftVersion() == null) { + HMCLog.warn("There's no selected version, rechoose a version."); + MessageBox.Show(C.i18n("minecraft.no_selected_version")); + return; + } + + if (cboLoginMode.getItemCount() == 0) { + HMCLog.warn("There's no login method."); + MessageBox.Show(C.i18n("login.methods.no_method")); + return; + } + final int index = cboLoginMode.getSelectedIndex(); + final IAuthenticator l = IAuthenticator.logins.get(index); + final LoginInfo li = new LoginInfo(Settings.s().getUsername(), l.isLoggedIn() || l.isHidePasswordBox() ? null : new String(txtPassword.getPassword())); + Thread t = new Thread() { + @Override + public void run() { + Thread.currentThread().setName("Game Launcher"); + DefaultGameLauncher gl = new DefaultGameLauncher(getCurrentProfile(), li, l, Settings.s().getDownloadSource()); + gl.failEvent.register((sender, s) -> { + if (s != null) MessageBox.Show(s); + MainFrame.instance.closeMessage(); + return true; + }); + listener.accept(gl); + gl.makeLaunchCommand(); + } + }; + t.start(); + } + // + + // + private void prepareAuths() { + preaparingAuth = true; + List list = IAuthenticator.logins; + cboLoginMode.removeAllItems(); + for (IAuthenticator str : list) + try { + cboLoginMode.addItem(str.getName()); + } catch (Exception ex) { + HMCLog.warn("Failed to get login name", ex); + } + if (Settings.s().getLoginType() < list.size()) { + preaparingAuth = false; + cboLoginMode.setSelectedIndex(Settings.s().getLoginType()); + + cboLoginModeItemStateChanged(null); + } + } + + void loadFromSettings() { + for (Profile s : Settings.getProfiles()) cboProfiles.addItem(s.getName()); + } + + boolean showedNoVersion = false; + + void loadMinecraftVersions() { + isLoading = true; + cboVersions.removeAllItems(); + int index = 0, i = 0; + getCurrentProfile().getMinecraftProvider().refreshVersions(); + MinecraftVersion selVersion = getCurrentProfile().getSelectedMinecraftVersion(); + String selectedMC = selVersion == null ? null : selVersion.id; + if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) { + if (!showedNoVersion) + SwingUtilities.invokeLater(() -> { + MessageBox.Show(C.i18n("mainwindow.no_version")); + showedNoVersion = true; + }); + } else { + for (MinecraftVersion mcVersion : getCurrentProfile().getMinecraftProvider().getVersions()) { + if (mcVersion.hidden) continue; + cboVersions.addItem(mcVersion.id); + if (mcVersion.id.equals(selectedMC)) index = i; + i++; + } + if (index < cboVersions.getItemCount()) cboVersions.setSelectedIndex(index); + } + isLoading = false; + } + + private void refreshMinecrafts(String last) { + isLoading = true; + cboProfiles.removeAllItems(); + loadFromSettings(); + for (int i = 0; i < cboProfiles.getItemCount(); i++) { + String s = (String) cboProfiles.getItemAt(i); + if (s != null && s.equals(last)) { + cboProfiles.setSelectedIndex(i); + break; + } + } + isLoading = false; + loadMinecraftVersions(); + } + // + + // + boolean preaparingAuth = true; + private boolean isLoading = false; + private final javax.swing.JPanel pnlButtons; + private final ConstomButton btnRun; + private static final int deWidth = 800, deHeight = 480; + // + + class PrepareAuthDoneListener implements Event> { + + @Override + public boolean call(Object sender, List value) { + prepareAuths(); + return true; + } + } + + private void btnRunActionPerformed() { + MainFrame.instance.showMessage(C.i18n("ui.message.launching")); + genLaunchCode(value -> { + value.successEvent.register(new LaunchFinisher()); + value.successEvent.register(new PrepareAuthDoneListener()); + }); + } + + public void onShow(boolean showLeft) { + if (showLeft) + SwingUtilities.invokeLater(() -> MainFrame.instance.showMessage(C.i18n("ui.message.first_load"))); + if (cboLoginMode.getSelectedIndex() >= 0 && cboLoginMode.getSelectedIndex() < cboLoginMode.getItemCount()) { + IAuthenticator l = IAuthenticator.logins.get(cboLoginMode.getSelectedIndex()); + if (!l.isHidePasswordBox() && !l.isLoggedIn()) + SwingUtilities.invokeLater(() -> MainFrame.instance.showMessage(C.i18n("ui.message.enter_password"))); + } + } + + public Profile getCurrentProfile() { + return Settings.getVersion((String) cboProfiles.getSelectedItem()); + } + + public void onSelected() { + refreshMinecrafts(Settings.s().getLast()); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnLogout; + private javax.swing.JButton btnMakeLaunchScript; + private javax.swing.JButton btnShowLog; + private javax.swing.JComboBox cboLoginMode; + private javax.swing.JComboBox cboProfiles; + private javax.swing.JComboBox cboVersions; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel3; + private javax.swing.JLabel lblUserName; + private javax.swing.JPanel pnlMore; + private javax.swing.JPanel pnlPassword; + private javax.swing.JPasswordField txtPassword; + private javax.swing.JTextField txtPlayerName; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.form new file mode 100644 index 000000000..65e0f21bf --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.form @@ -0,0 +1,124 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java new file mode 100644 index 000000000..69f2839ff --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java @@ -0,0 +1,150 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.launcher.views; + +import org.jackhuang.hellominecraft.launcher.utils.settings.Profile; +import org.jackhuang.hellominecraft.launcher.utils.settings.Settings; + +/** + * + * @author hyh + */ +public final class NewProfileWindow extends javax.swing.JDialog { + + /** + * Creates new form NewProfileWindow + */ + public NewProfileWindow(java.awt.Frame parent) { + super(parent, true); + initComponents(); + + setLocationRelativeTo(null); + + for (Profile s : Settings.getProfiles()) { + cboProfiles.addItem(s.getName()); + } + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jLabel1 = new javax.swing.JLabel(); + txtNewProfileName = new javax.swing.JTextField(); + jLabel2 = new javax.swing.JLabel(); + cboProfiles = new javax.swing.JComboBox(); + btnCancel = new javax.swing.JButton(); + btnOK = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + setTitle(bundle.getString("ui.newProfileWindow.title")); // NOI18N + + jLabel1.setText(bundle.getString("ui.label.newProfileWindow.new_profile_name")); // NOI18N + + txtNewProfileName.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + txtNewProfileNameKeyTyped(evt); + } + }); + + jLabel2.setText(bundle.getString("ui.label.newProfileWindow.copy_from")); // NOI18N + + btnCancel.setText(bundle.getString("button.cancel")); // NOI18N + btnCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCancelActionPerformed(evt); + } + }); + + btnOK.setText(bundle.getString("ui.button.ok")); // NOI18N + btnOK.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnOKActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtNewProfileName)) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboProfiles, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 262, Short.MAX_VALUE) + .addComponent(btnOK) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCancel))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(txtNewProfileName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2) + .addComponent(cboProfiles, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnCancel) + .addComponent(btnOK)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void txtNewProfileNameKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNewProfileNameKeyTyped + switch(evt.getKeyCode()) { + case 13: + Profile newProfile = new Profile(Settings.getVersion(cboProfiles.getSelectedItem().toString())); + newProfile.setName(txtNewProfileName.getText()); + Settings.trySetVersion(newProfile); + case 27: + this.dispose(); + } + }//GEN-LAST:event_txtNewProfileNameKeyTyped + + private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed + Profile newProfile = new Profile(Settings.getVersion(cboProfiles.getSelectedItem().toString())); + newProfile.setName(txtNewProfileName.getText()); + Settings.trySetVersion(newProfile); + this.dispose(); + }//GEN-LAST:event_btnOKActionPerformed + + private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed + this.dispose(); + }//GEN-LAST:event_btnCancelActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnCancel; + private javax.swing.JButton btnOK; + private javax.swing.JComboBox cboProfiles; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JTextField txtNewProfileName; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/Agent.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/Agent.java new file mode 100644 index 000000000..a83b0f678 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/Agent.java @@ -0,0 +1,28 @@ +package org.jackhuang.mojang.authlib; + +public class Agent { + + public static final Agent MINECRAFT = new Agent("Minecraft", 1); + public static final Agent SCROLLS = new Agent("Scrolls", 1); + private final String name; + private final int version; + + public Agent(String name, int version) { + this.name = name; + this.version = version; + } + + public String getName() { + return this.name; + } + + public int getVersion() { + return this.version; + } + + @Override + public String toString() { + return "Agent{name='" + this.name + '\'' + ", version=" + this.version + '}'; + } + +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/AuthenticationService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/AuthenticationService.java new file mode 100644 index 000000000..8776477a9 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/AuthenticationService.java @@ -0,0 +1,12 @@ +package org.jackhuang.mojang.authlib; + +import org.jackhuang.mojang.authlib.minecraft.MinecraftSessionService; + +public abstract interface AuthenticationService { + + public abstract UserAuthentication createUserAuthentication(Agent paramAgent); + + public abstract MinecraftSessionService createMinecraftSessionService(); + + public abstract GameProfileRepository createProfileRepository(); +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseAuthenticationService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseAuthenticationService.java new file mode 100644 index 000000000..3b484d3c4 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseAuthenticationService.java @@ -0,0 +1,5 @@ +package org.jackhuang.mojang.authlib; + +public abstract class BaseAuthenticationService + implements AuthenticationService { +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseUserAuthentication.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseUserAuthentication.java new file mode 100644 index 000000000..19fbe0a1e --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/BaseUserAuthentication.java @@ -0,0 +1,263 @@ +package org.jackhuang.mojang.authlib; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.jackhuang.hellominecraft.logging.logger.Logger; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.Validate; +import org.jackhuang.mojang.authlib.properties.Property; +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import org.jackhuang.mojang.util.UUIDTypeAdapter; + +public abstract class BaseUserAuthentication + implements UserAuthentication { + + private static final Logger LOGGER = new Logger("BaseUserAuthentication"); + protected static final String STORAGE_KEY_PROFILE_NAME = "displayName"; + protected static final String STORAGE_KEY_PROFILE_ID = "uuid"; + protected static final String STORAGE_KEY_PROFILE_PROPERTIES = "profileProperties"; + protected static final String STORAGE_KEY_USER_NAME = "username"; + protected static final String STORAGE_KEY_USER_ID = "userid"; + protected static final String STORAGE_KEY_USER_PROPERTIES = "userProperties"; + private final AuthenticationService authenticationService; + private final PropertyMap userProperties = new PropertyMap(); + private String userid; + private String username; + private String password; + private GameProfile selectedProfile; + private UserType userType; + + protected BaseUserAuthentication(AuthenticationService authenticationService) { + Validate.notNull(authenticationService); + this.authenticationService = authenticationService; + } + + @Override + public boolean canLogIn() { + return (!canPlayOnline()) && (StrUtils.isNotBlank(getUsername())) && (StrUtils.isNotBlank(getPassword())); + } + + @Override + public void logOut() { + this.password = null; + this.userid = null; + setSelectedProfile(null); + getModifiableUserProperties().clear(); + setUserType(null); + } + + @Override + public boolean isLoggedIn() { + return getSelectedProfile() != null; + } + + @Override + public void setUsername(String username) { + if ((isLoggedIn()) && (canPlayOnline())) { + throw new IllegalStateException("Cannot change username whilst logged in & online"); + } + + this.username = username; + } + + @Override + public void setPassword(String password) { + if ((isLoggedIn()) && (canPlayOnline()) && (StrUtils.isNotBlank(password))) { + throw new IllegalStateException("Cannot set password whilst logged in & online"); + } + + this.password = password; + } + + protected String getUsername() { + return this.username; + } + + protected String getPassword() { + return this.password; + } + + @Override + public void loadFromStorage(Map credentials) { + logOut(); + + setUsername((String)credentials.get("username")); + + if (credentials.containsKey("userid")) { + this.userid = (String)credentials.get("userid"); + } else { + this.userid = this.username; + } + + if (credentials.containsKey("userProperties")) { + try { + List list = (List) credentials.get("userProperties"); + + for (Map propertyMap : list) { + String name = (String) propertyMap.get("name"); + String value = (String) propertyMap.get("value"); + String signature = (String) propertyMap.get("signature"); + + if (signature == null) { + getModifiableUserProperties().put(name, new Property(name, value)); + } else { + getModifiableUserProperties().put(name, new Property(name, value, signature)); + } + } + } catch (Throwable t) { + LOGGER.warn("Couldn't deserialize user properties", t); + } + } + + if ((credentials.containsKey("displayName")) && (credentials.containsKey("uuid"))) { + GameProfile profile = new GameProfile(UUIDTypeAdapter.fromString((String)credentials.get("uuid")), (String)credentials.get("displayName")); + if (credentials.containsKey("profileProperties")) { + try { + List list = (List) credentials.get("profileProperties"); + for (Map propertyMap : list) { + String name = (String) propertyMap.get("name"); + String value = (String) propertyMap.get("value"); + String signature = (String) propertyMap.get("signature"); + + if (signature == null) { + profile.getProperties().put(name, new Property(name, value)); + } else { + profile.getProperties().put(name, new Property(name, value, signature)); + } + } + } catch (Throwable t) { + LOGGER.warn("Couldn't deserialize profile properties", t); + } + } + setSelectedProfile(profile); + } + } + + @Override + public Map saveForStorage() { + Map result = new HashMap(); + + if (getUsername() != null) { + result.put("username", getUsername()); + } + if (getUserID() != null) { + result.put("userid", getUserID()); + } else if (getUsername() != null) { + result.put("username", getUsername()); + } + + if (!getUserProperties().isEmpty()) { + List properties = new ArrayList(); + for (Property userProperty : getUserProperties().values()) { + Map property = new HashMap(); + property.put("name", userProperty.getName()); + property.put("value", userProperty.getValue()); + property.put("signature", userProperty.getSignature()); + properties.add(property); + } + result.put("userProperties", properties); + } + + GameProfile sel = getSelectedProfile(); + if (sel != null) { + result.put("displayName", sel.getName()); + result.put("uuid", sel.getId()); + + List properties = new ArrayList(); + for (Property profileProperty : sel.getProperties().values()) { + Map property = new HashMap(); + property.put("name", profileProperty.getName()); + property.put("value", profileProperty.getValue()); + property.put("signature", profileProperty.getSignature()); + properties.add(property); + } + + if (!properties.isEmpty()) { + result.put("profileProperties", properties); + } + } + + return result; + } + + protected void setSelectedProfile(GameProfile selectedProfile) { + this.selectedProfile = selectedProfile; + } + + @Override + public GameProfile getSelectedProfile() { + return this.selectedProfile; + } + + @Override + public String toString() { + StringBuilder result = new StringBuilder(); + + result.append(getClass().getSimpleName()); + result.append("{"); + + if (isLoggedIn()) { + result.append("Logged in as "); + result.append(getUsername()); + + if (getSelectedProfile() != null) { + result.append(" / "); + result.append(getSelectedProfile()); + result.append(" - "); + + if (canPlayOnline()) { + result.append("Online"); + } else { + result.append("Offline"); + } + } + } else { + result.append("Not logged in"); + } + + result.append("}"); + + return result.toString(); + } + + public AuthenticationService getAuthenticationService() { + return this.authenticationService; + } + + @Override + public String getUserID() { + return this.userid; + } + + @Override + public PropertyMap getUserProperties() { + if (isLoggedIn()) { + PropertyMap result = new PropertyMap(); + result.putAll(getModifiableUserProperties()); + return result; + } + return new PropertyMap(); + } + + protected PropertyMap getModifiableUserProperties() { + return this.userProperties; + } + + @Override + public UserType getUserType() { + if (isLoggedIn()) { + return this.userType == null ? UserType.LEGACY : this.userType; + } + return null; + } + + protected void setUserType(UserType userType) { + this.userType = userType; + } + + protected void setUserid(String userid) { + this.userid = userid; + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfile.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfile.java new file mode 100644 index 000000000..5475f5f3a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfile.java @@ -0,0 +1,72 @@ +package org.jackhuang.mojang.authlib; + +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import java.util.UUID; +import org.jackhuang.hellominecraft.utils.StrUtils; + +public class GameProfile { + + private final UUID id; + private final String name; + private final PropertyMap properties = new PropertyMap(); + private boolean legacy; + + public GameProfile(UUID id, String name) { + if ((id == null) && (StrUtils.isBlank(name))) { + throw new IllegalArgumentException("Name and ID cannot both be blank"); + } + + this.id = id; + this.name = name; + } + + public UUID getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public PropertyMap getProperties() { + return this.properties; + } + + public boolean isComplete() { + return (this.id != null) && (StrUtils.isNotBlank(getName())); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if ((o == null) || (getClass() != o.getClass())) { + return false; + } + + GameProfile that = (GameProfile) o; + + if (this.id != null ? !this.id.equals(that.id) : that.id != null) { + return false; + } + return this.name != null ? this.name.equals(that.name) : that.name == null; + } + + @Override + public int hashCode() { + int result = this.id != null ? this.id.hashCode() : 0; + result = 31 * result + (this.name != null ? this.name.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "GameProfile{" + "id=" + id + ", name=" + name + ", properties=" + properties + ", legacy=" + legacy + '}'; + } + + + public boolean isLegacy() { + return this.legacy; + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfileRepository.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfileRepository.java new file mode 100644 index 000000000..7b7eccfe3 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/GameProfileRepository.java @@ -0,0 +1,6 @@ +package org.jackhuang.mojang.authlib; + +public abstract interface GameProfileRepository { + + public abstract void findProfilesByNames(String[] paramArrayOfString, Agent paramAgent, ProfileLookupCallback paramProfileLookupCallback); +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpAuthenticationService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpAuthenticationService.java new file mode 100644 index 000000000..754b1917a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpAuthenticationService.java @@ -0,0 +1,153 @@ +package org.jackhuang.mojang.authlib; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.Proxy; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Map; +import org.jackhuang.hellominecraft.logging.logger.Logger; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.Validate; + +public abstract class HttpAuthenticationService extends BaseAuthenticationService { + + private static final Logger LOGGER = new Logger("HttpAuthenticationService"); + private final Proxy proxy; + + protected HttpAuthenticationService(Proxy proxy) { + Validate.notNull(proxy); + this.proxy = proxy; + } + + public Proxy getProxy() { + return this.proxy; + } + + protected HttpURLConnection createUrlConnection(URL url) throws IOException { + Validate.notNull(url); + LOGGER.debug(new StringBuilder().append("Opening connection to ").append(url).toString()); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(this.proxy); + connection.setConnectTimeout(15000); + connection.setReadTimeout(15000); + connection.setUseCaches(false); + return connection; + } + + public String performPostRequest(URL url, String post, String contentType) throws IOException { + Validate.notNull(url); + Validate.notNull(post); + Validate.notNull(contentType); + HttpURLConnection connection = createUrlConnection(url); + byte[] postAsBytes = post.getBytes("UTF-8"); + + connection.setRequestProperty("Content-Type", new StringBuilder().append(contentType).append("; charset=utf-8").toString()); + connection.setRequestProperty("Content-Length", new StringBuilder().append("").append(postAsBytes.length).toString()); + connection.setDoOutput(true); + + LOGGER.debug(new StringBuilder().append("Writing POST data to ").append(url).append(": ").append(post).toString()); + + OutputStream outputStream = null; + try { + outputStream = connection.getOutputStream(); + IOUtils.write(postAsBytes, outputStream); + } finally { + IOUtils.closeQuietly(outputStream); + } + + LOGGER.debug(new StringBuilder().append("Reading data from ").append(url).toString()); + + InputStream inputStream = null; + try { + inputStream = connection.getInputStream(); + String result = NetUtils.getStreamContent(inputStream, "UTF-8"); + LOGGER.debug(new StringBuilder().append("Successful read, server response was ").append(connection.getResponseCode()).toString()); + LOGGER.debug(new StringBuilder().append("Response: ").append(result).toString()); + String str1 = result; + return str1; + } catch (IOException e) { + IOUtils.closeQuietly(inputStream); + inputStream = connection.getErrorStream(); + + if (inputStream != null) { + LOGGER.debug(new StringBuilder().append("Reading error page from ").append(url).toString()); + String result = NetUtils.getStreamContent(inputStream, "UTF-8"); + LOGGER.debug(new StringBuilder().append("Successful read, server response was ").append(connection.getResponseCode()).toString()); + LOGGER.debug(new StringBuilder().append("Response: ").append(result).toString()); + String str2 = result; + return str2; + } + LOGGER.debug("Request failed", e); + throw e; + } finally { + IOUtils.closeQuietly(inputStream); + } + } + + public String performGetRequest(URL url) + throws IOException { + Validate.notNull(url); + HttpURLConnection connection = createUrlConnection(url); + + LOGGER.debug(new StringBuilder().append("Reading data from ").append(url).toString()); + + InputStream inputStream = null; + try { + inputStream = connection.getInputStream(); + String result = NetUtils.getStreamContent(inputStream, "UTF-8"); + LOGGER.debug(new StringBuilder().append("Successful read, server response was ").append(connection.getResponseCode()).toString()); + LOGGER.debug(new StringBuilder().append("Response: ").append(result).toString()); + String str1 = result; + return str1; + } catch (IOException e) { + IOUtils.closeQuietly(inputStream); + inputStream = connection.getErrorStream(); + + if (inputStream != null) { + LOGGER.debug(new StringBuilder().append("Reading error page from ").append(url).toString()); + String result = NetUtils.getStreamContent(inputStream, "UTF-8"); + LOGGER.debug(new StringBuilder().append("Successful read, server response was ").append(connection.getResponseCode()).toString()); + LOGGER.debug(new StringBuilder().append("Response: ").append(result).toString()); + String str2 = result; + return str2; + } + LOGGER.debug("Request failed", e); + throw e; + } finally { + IOUtils.closeQuietly(inputStream); + } + } + + public static String buildQuery(Map query) { + if (query == null) { + return ""; + } + StringBuilder builder = new StringBuilder(); + + for (Map.Entry entry : query.entrySet()) { + if (builder.length() > 0) { + builder.append('&'); + } + try { + builder.append(URLEncoder.encode((String) entry.getKey(), "UTF-8")); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Unexpected exception building query", e); + } + + if (entry.getValue() != null) { + builder.append('='); + try { + builder.append(URLEncoder.encode(entry.getValue().toString(), "UTF-8")); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Unexpected exception building query", e); + } + } + } + + return builder.toString(); + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpUserAuthentication.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpUserAuthentication.java new file mode 100644 index 000000000..27b7027f9 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/HttpUserAuthentication.java @@ -0,0 +1,13 @@ +package org.jackhuang.mojang.authlib; + +public abstract class HttpUserAuthentication extends BaseUserAuthentication { + + protected HttpUserAuthentication(HttpAuthenticationService authenticationService) { + super(authenticationService); + } + + @Override + public HttpAuthenticationService getAuthenticationService() { + return (HttpAuthenticationService) super.getAuthenticationService(); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/ProfileLookupCallback.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/ProfileLookupCallback.java new file mode 100644 index 000000000..335a118f2 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/ProfileLookupCallback.java @@ -0,0 +1,8 @@ +package org.jackhuang.mojang.authlib; + +public abstract interface ProfileLookupCallback { + + public abstract void onProfileLookupSucceeded(GameProfile paramGameProfile); + + public abstract void onProfileLookupFailed(GameProfile paramGameProfile, Exception paramException); +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/UserAuthentication.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/UserAuthentication.java new file mode 100644 index 000000000..1069ff8f1 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/UserAuthentication.java @@ -0,0 +1,42 @@ +package org.jackhuang.mojang.authlib; + +import org.jackhuang.mojang.authlib.exceptions.AuthenticationException; +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import java.util.Map; + +public abstract interface UserAuthentication { + + public abstract boolean canLogIn(); + + public abstract void logIn() + throws AuthenticationException; + + public abstract void logOut(); + + public abstract boolean isLoggedIn(); + + public abstract boolean canPlayOnline(); + + public abstract GameProfile[] getAvailableProfiles(); + + public abstract GameProfile getSelectedProfile(); + + public abstract void selectGameProfile(GameProfile paramGameProfile) + throws AuthenticationException; + + public abstract void loadFromStorage(Map paramMap); + + public abstract Map saveForStorage(); + + public abstract void setUsername(String paramString); + + public abstract void setPassword(String paramString); + + public abstract String getAuthenticatedToken(); + + public abstract String getUserID(); + + public abstract PropertyMap getUserProperties(); + + public abstract UserType getUserType(); +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/UserType.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/UserType.java new file mode 100644 index 000000000..7896022bb --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/UserType.java @@ -0,0 +1,33 @@ +package org.jackhuang.mojang.authlib; + +import java.util.HashMap; +import java.util.Map; + +public enum UserType { + + LEGACY("legacy"), + MOJANG("mojang"); + + private static final Map BY_NAME; + private final String name; + + private UserType(String name) { + this.name = name; + } + + public static UserType byName(String name) { + return (UserType) BY_NAME.get(name.toLowerCase()); + } + + public String getName() { + return this.name; + } + + static { + BY_NAME = new HashMap(); + + for (UserType type : values()) { + BY_NAME.put(type.name, type); + } + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationException.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationException.java new file mode 100644 index 000000000..e76598982 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationException.java @@ -0,0 +1,19 @@ +package org.jackhuang.mojang.authlib.exceptions; + +public class AuthenticationException extends Exception { + + public AuthenticationException() { + } + + public AuthenticationException(String message) { + super(message); + } + + public AuthenticationException(String message, Throwable cause) { + super(message, cause); + } + + public AuthenticationException(Throwable cause) { + super(cause); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationUnavailableException.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationUnavailableException.java new file mode 100644 index 000000000..f26dcda70 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/AuthenticationUnavailableException.java @@ -0,0 +1,19 @@ +package org.jackhuang.mojang.authlib.exceptions; + +public class AuthenticationUnavailableException extends AuthenticationException { + + public AuthenticationUnavailableException() { + } + + public AuthenticationUnavailableException(String message) { + super(message); + } + + public AuthenticationUnavailableException(String message, Throwable cause) { + super(message, cause); + } + + public AuthenticationUnavailableException(Throwable cause) { + super(cause); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/InvalidCredentialsException.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/InvalidCredentialsException.java new file mode 100644 index 000000000..5b37162b1 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/InvalidCredentialsException.java @@ -0,0 +1,19 @@ +package org.jackhuang.mojang.authlib.exceptions; + +public class InvalidCredentialsException extends AuthenticationException { + + public InvalidCredentialsException() { + } + + public InvalidCredentialsException(String message) { + super(message); + } + + public InvalidCredentialsException(String message, Throwable cause) { + super(message, cause); + } + + public InvalidCredentialsException(Throwable cause) { + super(cause); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/UserMigratedException.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/UserMigratedException.java new file mode 100644 index 000000000..0093630d2 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/exceptions/UserMigratedException.java @@ -0,0 +1,19 @@ +package org.jackhuang.mojang.authlib.exceptions; + +public class UserMigratedException extends InvalidCredentialsException { + + public UserMigratedException() { + } + + public UserMigratedException(String message) { + super(message); + } + + public UserMigratedException(String message, Throwable cause) { + super(message, cause); + } + + public UserMigratedException(Throwable cause) { + super(cause); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/BaseMinecraftSessionService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/BaseMinecraftSessionService.java new file mode 100644 index 000000000..b4ed7691d --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/BaseMinecraftSessionService.java @@ -0,0 +1,17 @@ +package org.jackhuang.mojang.authlib.minecraft; + +import org.jackhuang.mojang.authlib.AuthenticationService; + +public abstract class BaseMinecraftSessionService + implements MinecraftSessionService { + + private final AuthenticationService authenticationService; + + protected BaseMinecraftSessionService(AuthenticationService authenticationService) { + this.authenticationService = authenticationService; + } + + public AuthenticationService getAuthenticationService() { + return this.authenticationService; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/HttpMinecraftSessionService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/HttpMinecraftSessionService.java new file mode 100644 index 000000000..1f367b20b --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/HttpMinecraftSessionService.java @@ -0,0 +1,15 @@ +package org.jackhuang.mojang.authlib.minecraft; + +import org.jackhuang.mojang.authlib.HttpAuthenticationService; + +public abstract class HttpMinecraftSessionService extends BaseMinecraftSessionService { + + protected HttpMinecraftSessionService(HttpAuthenticationService authenticationService) { + super(authenticationService); + } + + @Override + public HttpAuthenticationService getAuthenticationService() { + return (HttpAuthenticationService) super.getAuthenticationService(); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/MinecraftSessionService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/MinecraftSessionService.java new file mode 100644 index 000000000..5041967be --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/minecraft/MinecraftSessionService.java @@ -0,0 +1,16 @@ +package org.jackhuang.mojang.authlib.minecraft; + +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationException; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationUnavailableException; + +public abstract interface MinecraftSessionService { + + public abstract void joinServer(GameProfile paramGameProfile, String paramString1, String paramString2) + throws AuthenticationException; + + public abstract GameProfile hasJoinedServer(GameProfile paramGameProfile, String paramString) + throws AuthenticationUnavailableException; + + public abstract GameProfile fillProfileProperties(GameProfile paramGameProfile, boolean paramBoolean); +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/Property.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/Property.java new file mode 100644 index 000000000..1d5266969 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/Property.java @@ -0,0 +1,57 @@ +package org.jackhuang.mojang.authlib.properties; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.PublicKey; +import java.security.Signature; +import java.security.SignatureException; +import org.jackhuang.hellominecraft.utils.Base64; + +public class Property { + + private final String name; + private final String value; + private final String signature; + + public Property(String value, String name) { + this(value, name, null); + } + + public Property(String name, String value, String signature) { + this.name = name; + this.value = value; + this.signature = signature; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + public String getSignature() { + return this.signature; + } + + public boolean hasSignature() { + return this.signature != null; + } + + public boolean isSignatureValid(PublicKey publicKey) { + try { + Signature signature = Signature.getInstance("SHA1withRSA"); + signature.initVerify(publicKey); + signature.update(this.value.getBytes()); + return signature.verify(Base64.decode(this.signature.toCharArray())); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (SignatureException e) { + e.printStackTrace(); + } + return false; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/PropertyMap.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/PropertyMap.java new file mode 100644 index 000000000..c5bd1868b --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/properties/PropertyMap.java @@ -0,0 +1,79 @@ +package org.jackhuang.mojang.authlib.properties; + +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public class PropertyMap extends HashMap { + + public PropertyMap() { + } + + public static class Serializer implements JsonSerializer, JsonDeserializer { + + @Override + public PropertyMap deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + PropertyMap result = new PropertyMap(); + Iterator i$; + Map.Entry entry; + if ((json instanceof JsonObject)) { + JsonObject object = (JsonObject) json; + + for (i$ = object.entrySet().iterator(); i$.hasNext();) { + entry = (Map.Entry) i$.next(); + if ((entry.getValue() instanceof JsonArray)) { + for (JsonElement element : (JsonArray) entry.getValue()) { + result.put(entry.getKey(), + new Property((String) entry.getKey(), element.getAsString())); + } + } + } + } else if ((json instanceof JsonArray)) { + for (JsonElement element : (JsonArray) json) { + if ((element instanceof JsonObject)) { + JsonObject object = (JsonObject) element; + String name = object.getAsJsonPrimitive("name").getAsString(); + String value = object.getAsJsonPrimitive("value").getAsString(); + + if (object.has("signature")) { + result.put(name, new Property(name, value, object.getAsJsonPrimitive("signature").getAsString())); + } else { + result.put(name, new Property(name, value)); + } + } + } + } + + return result; + } + + @Override + public JsonElement serialize(PropertyMap src, Type typeOfSrc, JsonSerializationContext context) { + JsonArray result = new JsonArray(); + + for (Property property : src.values()) { + JsonObject object = new JsonObject(); + + object.addProperty("name", property.getName()); + object.addProperty("value", property.getValue()); + + if (property.hasSignature()) { + object.addProperty("signature", property.getSignature()); + } + + result.add(object); + } + + return result; + } + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileIncompleteException.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileIncompleteException.java new file mode 100644 index 000000000..499092168 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileIncompleteException.java @@ -0,0 +1,19 @@ +package org.jackhuang.mojang.authlib.yggdrasil; + +public class ProfileIncompleteException extends RuntimeException { + + public ProfileIncompleteException() { + } + + public ProfileIncompleteException(String message) { + super(message); + } + + public ProfileIncompleteException(String message, Throwable cause) { + super(message, cause); + } + + public ProfileIncompleteException(Throwable cause) { + super(cause); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileNotFoundException.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileNotFoundException.java new file mode 100644 index 000000000..07a12a3e5 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/ProfileNotFoundException.java @@ -0,0 +1,19 @@ +package org.jackhuang.mojang.authlib.yggdrasil; + +public class ProfileNotFoundException extends RuntimeException { + + public ProfileNotFoundException() { + } + + public ProfileNotFoundException(String message) { + super(message); + } + + public ProfileNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public ProfileNotFoundException(Throwable cause) { + super(cause); + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilAuthenticationService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilAuthenticationService.java new file mode 100644 index 000000000..83d6214b2 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilAuthenticationService.java @@ -0,0 +1,118 @@ +package org.jackhuang.mojang.authlib.yggdrasil; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import org.jackhuang.mojang.authlib.Agent; +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.GameProfileRepository; +import org.jackhuang.mojang.authlib.HttpAuthenticationService; +import org.jackhuang.mojang.authlib.UserAuthentication; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationException; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationUnavailableException; +import org.jackhuang.mojang.authlib.exceptions.InvalidCredentialsException; +import org.jackhuang.mojang.authlib.exceptions.UserMigratedException; +import org.jackhuang.mojang.authlib.minecraft.MinecraftSessionService; +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import org.jackhuang.mojang.authlib.yggdrasil.response.Response; +import org.jackhuang.mojang.util.UUIDTypeAdapter; +import java.io.IOException; +import java.lang.reflect.Type; +import java.net.Proxy; +import java.net.URL; +import java.util.UUID; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.StrUtils; + +public class YggdrasilAuthenticationService extends HttpAuthenticationService { + + private final String clientToken; + private final Gson gson; + + public YggdrasilAuthenticationService(Proxy proxy, String clientToken) { + super(proxy); + this.clientToken = clientToken; + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(GameProfile.class, new GameProfileSerializer()); + builder.registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()); + builder.registerTypeAdapter(UUID.class, new UUIDTypeAdapter()); + this.gson = builder.create(); + } + + @Override + public UserAuthentication createUserAuthentication(Agent agent) { + return new YggdrasilUserAuthentication(this, agent); + } + + @Override + public MinecraftSessionService createMinecraftSessionService() { + return new YggdrasilMinecraftSessionService(this); + } + + @Override + public GameProfileRepository createProfileRepository() { + return new YggdrasilGameProfileRepository(this); + } + + protected T makeRequest(URL url, Object input, Class classOfT) throws AuthenticationException { + try { + String jsonResult = input == null ? performGetRequest(url) : performPostRequest(url, this.gson.toJson(input), "application/json"); + Response result = (Response) this.gson.fromJson(jsonResult, classOfT); + + if (result == null) { + return null; + } + + if (StrUtils.isNotBlank(result.getError())) { + if ("UserMigratedException".equals(result.getCause())) { + throw new UserMigratedException(result.getErrorMessage()); + } + if (result.getError().equals("ForbiddenOperationException")) { + throw new InvalidCredentialsException(result.getErrorMessage()); + } + throw new AuthenticationException(result.getErrorMessage()); + } + + return (T) result; + } catch (IOException e) { + throw new AuthenticationUnavailableException(C.i18n("login.failed.connect_authentication_server"), e); + } catch (IllegalStateException e) { + throw new AuthenticationUnavailableException(C.i18n("login.failed.connect_authentication_server"), e); + } catch (JsonParseException e) { + throw new AuthenticationUnavailableException(C.i18n("login.failed.connect_authentication_server"), e); + } + } + + public String getClientToken() { + return this.clientToken; + } + + private static class GameProfileSerializer implements JsonSerializer, JsonDeserializer { + + @Override + public GameProfile deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject object = (JsonObject) json; + UUID id = object.has("id") ? (UUID) context.deserialize(object.get("id"), UUID.class) : null; + String name = object.has("name") ? object.getAsJsonPrimitive("name").getAsString() : null; + return new GameProfile(id, name); + } + + @Override + public JsonElement serialize(GameProfile src, Type typeOfSrc, JsonSerializationContext context) { + JsonObject result = new JsonObject(); + if (src.getId() != null) { + result.add("id", context.serialize(src.getId())); + } + if (src.getName() != null) { + result.addProperty("name", src.getName()); + } + return result; + } + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java new file mode 100644 index 000000000..7a7d0df91 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java @@ -0,0 +1,134 @@ +package org.jackhuang.mojang.authlib.yggdrasil; + +import java.util.HashSet; +import java.util.Set; +import org.jackhuang.hellominecraft.logging.logger.Logger; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.mojang.authlib.Agent; +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.GameProfileRepository; +import org.jackhuang.mojang.authlib.ProfileLookupCallback; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationException; +import org.jackhuang.mojang.authlib.yggdrasil.response.ProfileSearchResultsResponse; + +public class YggdrasilGameProfileRepository + implements GameProfileRepository { + + private static final Logger LOGGER = new Logger("YggdrasilGameProfileRepository"); + private static final String BASE_URL = "https://api.mojang.com/"; + private static final String SEARCH_PAGE_URL = BASE_URL + "profiles/page/"; + private static final int MAX_FAIL_COUNT = 3; + private static final int DELAY_BETWEEN_PAGES = 100; + private static final int DELAY_BETWEEN_FAILURES = 750; + private final YggdrasilAuthenticationService authenticationService; + + public YggdrasilGameProfileRepository(YggdrasilAuthenticationService authenticationService) { + this.authenticationService = authenticationService; + } + + @Override + public void findProfilesByNames(String[] names, Agent agent, ProfileLookupCallback callback) { + Set criteria = new HashSet(); + + for (String name : names) { + if (StrUtils.isNotBlank(name)) { + criteria.add(new ProfileCriteria(name, agent)); + } + } + + Exception exception = null; + Set request = new HashSet(criteria); + int page = 1; + int failCount = 0; + while (!criteria.isEmpty()) { + try { + ProfileSearchResultsResponse response = (ProfileSearchResultsResponse) this.authenticationService.makeRequest(NetUtils.constantURL("https://api.mojang.com/profiles/page/" + page), request, ProfileSearchResultsResponse.class); + failCount = 0; + exception = null; + + if ((response.getSize() == 0) || (response.getProfiles().length == 0)) { + LOGGER.debug("Page {} returned empty, aborting search", new Object[]{page}); + } else { + LOGGER.debug("Page {} returned {} results of {}, parsing", new Object[]{page, response.getProfiles().length, response.getSize()}); + + for (GameProfile profile : response.getProfiles()) { + LOGGER.debug("Successfully looked up profile {}", new Object[]{profile}); + criteria.remove(new ProfileCriteria(profile.getName(), agent)); + callback.onProfileLookupSucceeded(profile); + } + + LOGGER.debug("Page {} successfully parsed", new Object[]{page}); + page++; + try { + Thread.sleep(DELAY_BETWEEN_PAGES); + } catch (InterruptedException ignored) { + } + } + } catch (AuthenticationException e) { + exception = e; + failCount++; + + if (failCount != 3) { + try { + Thread.sleep(DELAY_BETWEEN_FAILURES); + } catch (InterruptedException ignored) { + } + } + } + } + if (criteria.isEmpty()) { + LOGGER.debug("Successfully found every profile requested"); + } else { + LOGGER.debug("{} profiles were missing from search results", new Object[]{criteria.size()}); + if (exception == null) { + exception = new ProfileNotFoundException("Server did not find the requested profile"); + } + for (ProfileCriteria profileCriteria : criteria) { + callback.onProfileLookupFailed(new GameProfile(null, profileCriteria.getName()), exception); + } + } + } + + private class ProfileCriteria { + + private final String name; + private final String agent; + + private ProfileCriteria(String name, Agent agent) { + this.name = name; + this.agent = agent.getName(); + } + + public String getName() { + return this.name; + } + + public String getAgent() { + return this.agent; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if ((o == null) || (getClass() != o.getClass())) { + return false; + } + ProfileCriteria that = (ProfileCriteria) o; + return (this.agent.equals(that.agent)) && (this.name.toLowerCase().equals(that.name.toLowerCase())); + } + + @Override + public int hashCode() { + return 31 * this.name.toLowerCase().hashCode() + this.agent.hashCode(); + } + + @Override + public String toString() { + return "ProfileCriteria{" + "name=" + name + ", agent=" + agent + '}'; + } + + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java new file mode 100644 index 000000000..7834fa761 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java @@ -0,0 +1,97 @@ +package org.jackhuang.mojang.authlib.yggdrasil; + +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import org.jackhuang.hellominecraft.logging.logger.Logger; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.HttpAuthenticationService; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationException; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationUnavailableException; +import org.jackhuang.mojang.authlib.minecraft.HttpMinecraftSessionService; +import org.jackhuang.mojang.authlib.yggdrasil.request.JoinMinecraftServerRequest; +import org.jackhuang.mojang.authlib.yggdrasil.response.HasJoinedMinecraftServerResponse; +import org.jackhuang.mojang.authlib.yggdrasil.response.MinecraftProfilePropertiesResponse; +import org.jackhuang.mojang.authlib.yggdrasil.response.Response; +import org.jackhuang.mojang.util.UUIDTypeAdapter; + +public class YggdrasilMinecraftSessionService extends HttpMinecraftSessionService { + + private static final Logger LOGGER = new Logger("YggdrasilMinecraftSessionService"); + private static final String BASE_URL = "https://sessionserver.mojang.com/session/minecraft/"; + private static final URL JOIN_URL = NetUtils.constantURL(BASE_URL + "join"); + private static final URL CHECK_URL = NetUtils.constantURL(BASE_URL + "hasJoined"); + + protected YggdrasilMinecraftSessionService(YggdrasilAuthenticationService authenticationService) { + super(authenticationService); + } + + @Override + public void joinServer(GameProfile profile, String authenticationToken, String serverId) throws AuthenticationException { + JoinMinecraftServerRequest request = new JoinMinecraftServerRequest(); + request.accessToken = authenticationToken; + request.selectedProfile = profile.getId(); + request.serverId = serverId; + + getAuthenticationService().makeRequest(JOIN_URL, request, Response.class); + } + + @Override + public GameProfile hasJoinedServer(GameProfile user, String serverId) throws AuthenticationUnavailableException { + Map arguments = new HashMap(); + + arguments.put("username", user.getName()); + arguments.put("serverId", serverId); + + URL url = NetUtils.concatenateURL(CHECK_URL, HttpAuthenticationService.buildQuery(arguments)); + try { + HasJoinedMinecraftServerResponse response = (HasJoinedMinecraftServerResponse) getAuthenticationService().makeRequest(url, null, HasJoinedMinecraftServerResponse.class); + + if ((response != null) && (response.getId() != null)) { + GameProfile result = new GameProfile(response.getId(), user.getName()); + + if (response.getProperties() != null) { + result.getProperties().putAll(response.getProperties()); + } + + return result; + } + return null; + } catch (AuthenticationUnavailableException e) { + throw e; + } catch (AuthenticationException e) { + } + return null; + } + + @Override + public GameProfile fillProfileProperties(GameProfile profile, boolean requireSecure) { + if (profile.getId() == null) { + return profile; + } + try { + URL url = NetUtils.constantURL(new StringBuilder().append("https://sessionserver.mojang.com/session/minecraft/profile/").append(UUIDTypeAdapter.fromUUID(profile.getId())).toString()); + url = NetUtils.concatenateURL(url, new StringBuilder().append("unsigned=").append(!requireSecure).toString()); + MinecraftProfilePropertiesResponse response = (MinecraftProfilePropertiesResponse) getAuthenticationService().makeRequest(url, null, MinecraftProfilePropertiesResponse.class); + + if (response == null) { + LOGGER.debug(new StringBuilder().append("Couldn't fetch profile properties for ").append(profile).append(" as the profile does not exist").toString()); + return profile; + } + GameProfile result = new GameProfile(response.getId(), response.getName()); + result.getProperties().putAll(response.getProperties()); + profile.getProperties().putAll(response.getProperties()); + LOGGER.debug(new StringBuilder().append("Successfully fetched profile properties for ").append(profile).toString()); + return result; + } catch (Exception e) { + LOGGER.warn(new StringBuilder().append("Couldn't look up profile properties for ").append(profile).toString(), e); + } + return profile; + } + + @Override + public YggdrasilAuthenticationService getAuthenticationService() { + return (YggdrasilAuthenticationService) super.getAuthenticationService(); + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilUserAuthentication.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilUserAuthentication.java new file mode 100644 index 000000000..278895f92 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/YggdrasilUserAuthentication.java @@ -0,0 +1,248 @@ +package org.jackhuang.mojang.authlib.yggdrasil; + +import java.net.URL; +import java.util.Arrays; +import java.util.Map; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.logging.logger.Logger; +import org.jackhuang.hellominecraft.utils.ArrayUtils; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.mojang.authlib.Agent; +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.HttpUserAuthentication; +import org.jackhuang.mojang.authlib.UserType; +import org.jackhuang.mojang.authlib.exceptions.AuthenticationException; +import org.jackhuang.mojang.authlib.exceptions.InvalidCredentialsException; +import org.jackhuang.mojang.authlib.yggdrasil.request.AuthenticationRequest; +import org.jackhuang.mojang.authlib.yggdrasil.request.RefreshRequest; +import org.jackhuang.mojang.authlib.yggdrasil.response.AuthenticationResponse; +import org.jackhuang.mojang.authlib.yggdrasil.response.RefreshResponse; +import org.jackhuang.mojang.authlib.yggdrasil.response.User; + +public class YggdrasilUserAuthentication extends HttpUserAuthentication { + + private static final Logger LOGGER = new Logger("YggdrasilUserAuthentication"); + private static final String BASE_URL = "https://authserver.mojang.com/"; + private static final URL ROUTE_AUTHENTICATE = NetUtils.constantURL(BASE_URL + "authenticate"); + private static final URL ROUTE_REFRESH = NetUtils.constantURL(BASE_URL + "refresh"); + private static final URL ROUTE_VALIDATE = NetUtils.constantURL(BASE_URL + "validate"); + private static final URL ROUTE_INVALIDATE = NetUtils.constantURL(BASE_URL + "invalidate"); + private static final URL ROUTE_SIGNOUT = NetUtils.constantURL(BASE_URL + "signout"); + private static final String STORAGE_KEY_ACCESS_TOKEN = "accessToken"; + private final Agent agent; + private GameProfile[] profiles; + private String accessToken; + private boolean isOnline; + + public YggdrasilUserAuthentication(YggdrasilAuthenticationService authenticationService, Agent agent) { + super(authenticationService); + this.agent = agent; + } + + @Override + public boolean canLogIn() { + return (!canPlayOnline()) && (StrUtils.isNotBlank(getUsername())) && ((StrUtils.isNotBlank(getPassword())) || (StrUtils.isNotBlank(getAuthenticatedToken()))); + } + + @Override + public void logIn() throws AuthenticationException { + if (StrUtils.isBlank(getUsername())) { + throw new InvalidCredentialsException(C.i18n("login.invalid_username")); + } + + if (StrUtils.isNotBlank(getAuthenticatedToken())) { + logInWithToken(); + } else if (StrUtils.isNotBlank(getPassword())) { + logInWithPassword(); + } else { + throw new InvalidCredentialsException(C.i18n("login.invalid_password")); + } + } + + protected void logInWithPassword() throws AuthenticationException { + if (StrUtils.isBlank(getUsername())) { + throw new InvalidCredentialsException(C.i18n("login.invalid_username")); + } + if (StrUtils.isBlank(getPassword())) { + throw new InvalidCredentialsException(C.i18n("login.invalid_password")); + } + + LOGGER.info("Logging in with username & password"); + + AuthenticationRequest request = new AuthenticationRequest(this, getUsername(), getPassword()); + AuthenticationResponse response = (AuthenticationResponse) getAuthenticationService().makeRequest(ROUTE_AUTHENTICATE, request, AuthenticationResponse.class); + + if (!response.getClientToken().equals(getAuthenticationService().getClientToken())) { + throw new AuthenticationException(C.i18n("login.changed_client_token")); + } + + if (response.getSelectedProfile() != null) { + setUserType(response.getSelectedProfile().isLegacy() ? UserType.LEGACY : UserType.MOJANG); + } else if (ArrayUtils.isNotEmpty(response.getAvailableProfiles())) { + setUserType(response.getAvailableProfiles()[0].isLegacy() ? UserType.LEGACY : UserType.MOJANG); + } + + User user = response.getUser(); + + if ((user != null) && (user.getId() != null)) { + setUserid(user.getId()); + } else { + setUserid(getUsername()); + } + + this.isOnline = true; + this.accessToken = response.getAccessToken(); + + this.profiles = response.getAvailableProfiles(); + setSelectedProfile(response.getSelectedProfile()); + getModifiableUserProperties().clear(); + + updateUserProperties(user); + } + + protected void updateUserProperties(User user) { + if (user == null) { + return; + } + + if (user.getProperties() != null) { + getModifiableUserProperties().putAll(user.getProperties()); + } + } + + protected void logInWithToken() throws AuthenticationException { + if (StrUtils.isBlank(getUserID())) { + if (StrUtils.isBlank(getUsername())) { + setUserid(getUsername()); + } else { + throw new InvalidCredentialsException(C.i18n("login.invalid_uuid_and_username")); + } + } + if (StrUtils.isBlank(getAuthenticatedToken())) { + throw new InvalidCredentialsException(C.i18n("login.invalid_access_token")); + } + + LOGGER.info("Logging in with access token"); + + RefreshRequest request = new RefreshRequest(this); + RefreshResponse response = (RefreshResponse) getAuthenticationService().makeRequest(ROUTE_REFRESH, request, RefreshResponse.class); + + if (!response.getClientToken().equals(getAuthenticationService().getClientToken())) { + throw new AuthenticationException(C.i18n("login.changed_client_token")); + } + + if (response.getSelectedProfile() != null) { + setUserType(response.getSelectedProfile().isLegacy() ? UserType.LEGACY : UserType.MOJANG); + } else if (ArrayUtils.isNotEmpty(response.getAvailableProfiles())) { + setUserType(response.getAvailableProfiles()[0].isLegacy() ? UserType.LEGACY : UserType.MOJANG); + } + + if ((response.getUser() != null) && (response.getUser().getId() != null)) { + setUserid(response.getUser().getId()); + } else { + setUserid(getUsername()); + } + + this.isOnline = true; + this.accessToken = response.getAccessToken(); + this.profiles = response.getAvailableProfiles(); + setSelectedProfile(response.getSelectedProfile()); + getModifiableUserProperties().clear(); + + updateUserProperties(response.getUser()); + } + + @Override + public void logOut() { + super.logOut(); + + this.accessToken = null; + this.profiles = null; + this.isOnline = false; + } + + @Override + public GameProfile[] getAvailableProfiles() { + return this.profiles; + } + + @Override + public boolean isLoggedIn() { + return StrUtils.isNotBlank(this.accessToken); + } + + @Override + public boolean canPlayOnline() { + return (isLoggedIn()) && (getSelectedProfile() != null) && (this.isOnline); + } + + @Override + public void selectGameProfile(GameProfile profile) throws AuthenticationException { + if (!isLoggedIn()) { + throw new AuthenticationException(C.i18n("login.profile.not_logged_in")); + } + if (getSelectedProfile() != null) { + throw new AuthenticationException(C.i18n("login.profile.selected")); + } + if ((profile == null) || (!ArrayUtils.contains(this.profiles, profile))) { + throw new IllegalArgumentException("Invalid profile '" + profile + "'"); + } + + RefreshRequest request = new RefreshRequest(this, profile); + RefreshResponse response = (RefreshResponse) getAuthenticationService().makeRequest(ROUTE_REFRESH, request, RefreshResponse.class); + + if (!response.getClientToken().equals(getAuthenticationService().getClientToken())) { + throw new AuthenticationException(C.i18n("login.changed_client_token")); + } + + this.isOnline = true; + this.accessToken = response.getAccessToken(); + setSelectedProfile(response.getSelectedProfile()); + } + + @Override + public void loadFromStorage(Map credentials) { + super.loadFromStorage(credentials); + + this.accessToken = (String)credentials.get(STORAGE_KEY_ACCESS_TOKEN); + } + + @Override + public Map saveForStorage() { + Map result = super.saveForStorage(); + + if (StrUtils.isNotBlank(getAuthenticatedToken())) { + result.put("accessToken", getAuthenticatedToken()); + } + + return result; + } + + @Deprecated + public String getSessionToken() { + if ((isLoggedIn()) && (getSelectedProfile() != null) && (canPlayOnline())) { + return String.format("token:%s:%s", new Object[]{getAuthenticatedToken(), getSelectedProfile().getId()}); + } + return null; + } + + @Override + public String getAuthenticatedToken() { + return this.accessToken; + } + + public Agent getAgent() { + return this.agent; + } + + @Override + public String toString() { + return "YggdrasilAuthenticationService{agent=" + this.agent + ", profiles=" + Arrays.toString(this.profiles) + ", selectedProfile=" + getSelectedProfile() + ", username='" + getUsername() + '\'' + ", isLoggedIn=" + isLoggedIn() + ", userType=" + getUserType() + ", canPlayOnline=" + canPlayOnline() + ", accessToken='" + this.accessToken + '\'' + ", clientToken='" + getAuthenticationService().getClientToken() + '\'' + '}'; + } + + @Override + public YggdrasilAuthenticationService getAuthenticationService() { + return (YggdrasilAuthenticationService) super.getAuthenticationService(); + } +} \ No newline at end of file diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/AuthenticationRequest.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/AuthenticationRequest.java new file mode 100644 index 000000000..23adee90d --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/AuthenticationRequest.java @@ -0,0 +1,20 @@ +package org.jackhuang.mojang.authlib.yggdrasil.request; + +import org.jackhuang.mojang.authlib.Agent; +import org.jackhuang.mojang.authlib.yggdrasil.YggdrasilUserAuthentication; + +public class AuthenticationRequest { + + public Agent agent; + public String username; + public String password; + public String clientToken; + public boolean requestUser = true; + + public AuthenticationRequest(YggdrasilUserAuthentication authenticationService, String username, String password) { + this.agent = authenticationService.getAgent(); + this.username = username; + this.clientToken = authenticationService.getAuthenticationService().getClientToken(); + this.password = password; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/JoinMinecraftServerRequest.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/JoinMinecraftServerRequest.java new file mode 100644 index 000000000..261946670 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/JoinMinecraftServerRequest.java @@ -0,0 +1,10 @@ +package org.jackhuang.mojang.authlib.yggdrasil.request; + +import java.util.UUID; + +public class JoinMinecraftServerRequest { + + public String accessToken; + public UUID selectedProfile; + public String serverId; +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/RefreshRequest.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/RefreshRequest.java new file mode 100644 index 000000000..7c3dab1a7 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/request/RefreshRequest.java @@ -0,0 +1,22 @@ +package org.jackhuang.mojang.authlib.yggdrasil.request; + +import org.jackhuang.mojang.authlib.GameProfile; +import org.jackhuang.mojang.authlib.yggdrasil.YggdrasilUserAuthentication; + +public class RefreshRequest { + + public String clientToken; + public String accessToken; + public GameProfile selectedProfile; + public boolean requestUser = true; + + public RefreshRequest(YggdrasilUserAuthentication authenticationService) { + this(authenticationService, null); + } + + public RefreshRequest(YggdrasilUserAuthentication authenticationService, GameProfile profile) { + this.clientToken = authenticationService.getAuthenticationService().getClientToken(); + this.accessToken = authenticationService.getAuthenticatedToken(); + this.selectedProfile = profile; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/AuthenticationResponse.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/AuthenticationResponse.java new file mode 100644 index 000000000..7e4383243 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/AuthenticationResponse.java @@ -0,0 +1,32 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +import org.jackhuang.mojang.authlib.GameProfile; + +public class AuthenticationResponse extends Response { + + private String accessToken; + private String clientToken; + private GameProfile selectedProfile; + private GameProfile[] availableProfiles; + private User user; + + public String getAccessToken() { + return this.accessToken; + } + + public String getClientToken() { + return this.clientToken; + } + + public GameProfile[] getAvailableProfiles() { + return this.availableProfiles; + } + + public GameProfile getSelectedProfile() { + return this.selectedProfile; + } + + public User getUser() { + return this.user; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/HasJoinedMinecraftServerResponse.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/HasJoinedMinecraftServerResponse.java new file mode 100644 index 000000000..d2564080f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/HasJoinedMinecraftServerResponse.java @@ -0,0 +1,18 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import java.util.UUID; + +public class HasJoinedMinecraftServerResponse extends Response { + + private UUID id; + private PropertyMap properties; + + public UUID getId() { + return this.id; + } + + public PropertyMap getProperties() { + return this.properties; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/MinecraftProfilePropertiesResponse.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/MinecraftProfilePropertiesResponse.java new file mode 100644 index 000000000..23e91296b --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/MinecraftProfilePropertiesResponse.java @@ -0,0 +1,23 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +import org.jackhuang.mojang.authlib.properties.PropertyMap; +import java.util.UUID; + +public class MinecraftProfilePropertiesResponse extends Response { + + private UUID id; + private String name; + private PropertyMap properties; + + public UUID getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public PropertyMap getProperties() { + return this.properties; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse.java new file mode 100644 index 000000000..2aeafc88f --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse.java @@ -0,0 +1,17 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +import org.jackhuang.mojang.authlib.GameProfile; + +public class ProfileSearchResultsResponse extends Response { + + private GameProfile[] profiles; + private int size; + + public GameProfile[] getProfiles() { + return this.profiles; + } + + public int getSize() { + return this.size; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/RefreshResponse.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/RefreshResponse.java new file mode 100644 index 000000000..fa1260277 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/RefreshResponse.java @@ -0,0 +1,32 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +import org.jackhuang.mojang.authlib.GameProfile; + +public class RefreshResponse extends Response { + + private String accessToken; + private String clientToken; + private GameProfile selectedProfile; + private GameProfile[] availableProfiles; + private User user; + + public String getAccessToken() { + return this.accessToken; + } + + public String getClientToken() { + return this.clientToken; + } + + public GameProfile[] getAvailableProfiles() { + return this.availableProfiles; + } + + public GameProfile getSelectedProfile() { + return this.selectedProfile; + } + + public User getUser() { + return this.user; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/Response.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/Response.java new file mode 100644 index 000000000..f4c3063d3 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/Response.java @@ -0,0 +1,20 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +public class Response { + + private String error; + private String errorMessage; + private String cause; + + public String getError() { + return this.error; + } + + public String getCause() { + return this.cause; + } + + public String getErrorMessage() { + return this.errorMessage; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/User.java b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/User.java new file mode 100644 index 000000000..f74207e16 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/authlib/yggdrasil/response/User.java @@ -0,0 +1,17 @@ +package org.jackhuang.mojang.authlib.yggdrasil.response; + +import org.jackhuang.mojang.authlib.properties.PropertyMap; + +public class User { + + private String id; + private PropertyMap properties; + + public String getId() { + return this.id; + } + + public PropertyMap getProperties() { + return this.properties; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/util/LegacyPropertyMapSerializer.java b/HMCL/src/main/java/org/jackhuang/mojang/util/LegacyPropertyMapSerializer.java new file mode 100644 index 000000000..ae92e7f19 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/util/LegacyPropertyMapSerializer.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.mojang.util; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import java.lang.reflect.Type; +import org.jackhuang.mojang.authlib.properties.PropertyMap; + +/** + * + * @author hyh + */ +public class LegacyPropertyMapSerializer + implements JsonSerializer { + + @Override + public JsonElement serialize(PropertyMap src, Type typeOfSrc, JsonSerializationContext context) { + JsonObject result = new JsonObject(); + + for (String key : src.keySet()) { + JsonArray values = new JsonArray(); + + values.add(new JsonPrimitive(src.get(key).getValue())); + + result.add(key, values); + } + + return result; + } +} diff --git a/HMCL/src/main/java/org/jackhuang/mojang/util/UUIDTypeAdapter.java b/HMCL/src/main/java/org/jackhuang/mojang/util/UUIDTypeAdapter.java new file mode 100644 index 000000000..8dc012c73 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/mojang/util/UUIDTypeAdapter.java @@ -0,0 +1,27 @@ +package org.jackhuang.mojang.util; + +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.UUID; + +public class UUIDTypeAdapter extends TypeAdapter { + + public void write(JsonWriter out, UUID value) + throws IOException { + out.value(fromUUID(value)); + } + + public UUID read(JsonReader in) throws IOException { + return fromString(in.nextString()); + } + + public static String fromUUID(UUID value) { + return value.toString().replace("-", ""); + } + + public static UUID fromString(String input) { + return UUID.fromString(input.replaceFirst("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5")); + } +} diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/background.jpg b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b47d3ae740663858e4af787d50d16c4c914c6369 GIT binary patch literal 46864 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 literal 0 HcmV?d00001 diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/close.png b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/close.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2cb0a6f46f7de83623527d7ffb645679199ba9 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz4!3HGVuAW-~q*#ibJVQ8upoSx*1IXtr@Q5sC zVBmTU!i-Jbyiq_wnG)BClHmNblJdl&R0hYC{G?O`x6Go{^8BLgVg=`5vln|d^#IlV z@N{tuvFLp|#c*A-0Z*H6Jo~YhiD!2*s=qX?;=ZI@*z{emVVB`C<-2q8a$a5vNw~9J zBy?&Pr>4=j`G0<{5z$n=VN^DIRqgTz{om^*zW9C5|MC}UCyi5^_VhijNK88s@3m60 z?ct2y6vp#xt&S(_HR0KX8E3N*S5Ko z7#uU1bz_g&@i;Ysjmk&p^K4~0MeJb(RJ a)_jYGld(;6j&K9RfWgz%&t;ucLK6VQTB1Av literal 0 HcmV?d00001 diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/icon.png b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..25f3cf6c80eeddc17c9e24683ac340ea142427a7 GIT binary patch literal 5362 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000UdNklGKnk72vu`4RwC5$KvgAaQ+g+}?9V2y_h`PYOd7zpJUr zpCJ&gEC0&&{GS9gApu+u9Iy9}t_d^+Y!@_Dpa>8GJm2TFUtB@sqb&o(@9V1g;o*aQ5gN9G<@)%Z zPdK0w3mD|f9nRm_D(p6`e{end9iZ`H415@XAzzBG^~FMe_}ST!S;njsA=jJx+g=*(Jn##8|g~CSypeW*aKoj4X8i;@C`PtFH ziGdi7>#*H&SlVt-Z(HONA)c7(!|inW<;os=mLwX|m>!66csPS1;jPs&FJIrZ?-Uz9 zuw3~qT@~}c9)Oe|6No>FhxJeX(b*&7(TOx2%jWWpJS&wBsZ@+lJ~D=(E4;m2;`(YC z*Y%i6hxpACBM4pR$8X-D*|B+aW{8>L6ah_RZoR^{FDy#acF#*G|5gYteh|QCJzxCk zlcz?{JooezKYn$A--ucwdaAy2VzdO*Rq6c6=V4%priwi`y86N~LWP z7m`!MDXM5J7V8}BkD(hXudP*i{^Q5_$?HqJes$xr>w16v+8bBSDFActESwwf*Upso znr!Vf@uegj&`8Gu1OqxX+ox*;X>=V@(EzDPfKJzrx{B}nY!+)2b{h0W{L@!%+&7Q#gl@^5B3ufl6!?Rb1S<9f;z*Q2**d#v@$U+Ig%|~a$+pOU^0v+1+U#M za&viywT%KpaY-r#mSu4tfB-Vl7^-aHrdos+}t);ruT z)L1SyI1mZ&<=H_(@d&TZ7x>|&We)bodGcsKxkQAv>GINCfuCOAU}dAgk2l#`w-^uWoSYe<*!79T(XxxGhN@+_Tyo7!A^wRk*ZV7fk$V>vFb*LdmeCDw|o#I!mcx67rC3N_&L zsRJBHM_5?hqt@u43OGKVL=o?ipm%AgWaB{|9?L+;;7-2E>TZ*jmd&$gra3k}Kwm0^ zCtc2-O4IE6y!bcgK>D1T3^5S#Xm=c@2I3?_2AZaDb-Bz|rOn-q3W>PEsUtZeAsy54 z*jE7MT>!~&gw0ZmcUH=rm>lG(6BDFj5o%p1w`>BMj-lxkD^0pxlSEi$Wi8L@#unMA zPEb>@9gnqq4NpqCjt4-%P&qc1Vk{R!DuRyV5i|_M`-)IXstuFl2M1ZayF*aZK>DO( zK~iBbbjii5cez(;lFP*S%+tpZqPK+*peYJn*Qeg-vRm#jGLj}}^vI2cG_uhE;i!QT z4xk7@vD&#`g!?uW)S6uu*LJWS4-bWas)7V5Asq`cmVrd_sV5wLmn~I{;x|FIda_QK88}=j+aCD-d)5pfJTzGYE zg&TLbX>~1p35rn2MT3Mig(HXhLBQhr4$_yno=>&eWqc^Xe(U`vVLBVSKjM zm-zH^&!H$9sd$*l12Mt|>{h#UZJ$ql{)_z6zkZ)jfBp;jyc=P?6$u)&Ob1U1lZk0K zZjXVHY?y&eg#2EITEjv`5)bI_PeR}KdGlr-*rZ-5GCDm=K-GvE20E!}~RTLq}#Ur$uHjf;i;^ZS|Sh@2KZ(W-QpyPOS9gl%zkZ!p{S&{72 zJNWPR9=#4o;jx)f`qNP=m=e467c}+wyC#lZs%)6 z!y1nt>Z2tjLKE+opl26_g^eOJxhT(^o~F|5aPi6}rVEvZjdbDIXdlr~fR5wvZjvZM z;N!E`Xb=eN%=9a?T3c9_+iRnBh0(z%nyMfjpM;@cXvzm}Ln-NWT?YCh>@`dd<}?P9 z3Hp*1f*NQFENzwv2XwmEu96*|M(!7&1O$?(FsbjYu~}+h+AfCHlOP_}Nrw$=&qog! z1a*y_YWsc=Df>Eo@%DP@>c+h$m99gj-9k|Wx&mPXvdJKaMpHy0I{)@B|H%5<3f=Cn ztkh^)++44cFEz=gA{?LUCz}lQqF7ULWsj-N?HZSEY;bFB=bDuAh4%mR7fG+P*{QdwwN38TI+SWHmNv?4@3vaN z--A2^d)vl;14vHNMiZ>=!ff$PwvFJOQ`X%9xhBB;Z?8 z@;xarA9OfXKH_w20^gOAV~uwAdC!+`_`ZCzZ91QmQXZA?&->pz@cQ2Y06VEMXvP{b Qng9R*07*qoM6N<$f=Q}6H2?qr literal 0 HcmV?d00001 diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/minimize.png b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..25de72edb80cc8f1554c7a822d1ff79f6b4fdc9f GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf4nJ z@XY~XM)oPecY%U3C9V-A!TD(=<%vb942~)JNvR5MnMJAP`9;~q3eLf1FZOKe0jf*# zba4!^=zV)-BX6^V0Ly`c0WFW$Gka}x$@VBoy8cmU=IjmkELmcl8cL++ZCTvCEqm=w zrGD=#Ey8{l4-?w{F1%*-s5O1T|D#b}mGckHFj&lgz&?lLpuEl_dHH}BMK9iS|7Tpi XL1>Cr^zXAk+Za4u{an^LB{Ts5oJmp; literal 0 HcmV?d00001 diff --git a/HMCLAPI/build.gradle b/HMCLAPI/build.gradle new file mode 100644 index 000000000..2ff7ecd79 --- /dev/null +++ b/HMCLAPI/build.gradle @@ -0,0 +1,19 @@ +apply plugin: 'me.tatarka.retrolambda' + +if (!hasProperty('mainClass')) { + ext.mainClass = '' +} + +buildscript { + repositories { + mavenCentral(); + + dependencies { + classpath 'me.tatarka:gradle-retrolambda:3.1.0' + } + } +} + +retrolambda { + javaVersion = JavaVersion.VERSION_1_7 +} \ No newline at end of file diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java new file mode 100644 index 000000000..908786bea --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java @@ -0,0 +1,45 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.util.ResourceBundle; + +/** + * + * @author hyh + */ +public final class C { + public static final Gson gsonPrettyPrinting = new GsonBuilder().setPrettyPrinting().create(); + public static final Gson gson = new Gson(); + + public static final ResourceBundle I18N = ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); + + //http://repo1.maven.org/maven2 + + public static final String URL_PUBLISH = "http://www.mcbbs.net/thread-142335-1-1.html"; + public static final String URL_TIEBA = "http://tieba.baidu.com/f?kw=hellominecraftlauncher"; + public static final String URL_MINECRAFTFORUM = "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1265720-hello-minecraft-launcher-1-9-3-mc-1-7-4-auto"; + + public static final String FILE_MINECRAFT_VERSIONS = "versions"; + + public static final String LINE_SEPARATOR = System.getProperty("line.separator"); + + public static final String URL_FORGE_LIST = "http://files.minecraftforge.net/maven/net/minecraftforge/forge/json"; + public static final String URL_LITELOADER_LIST = "http://dl.liteloader.com/versions/versions.json"; + + private C(){} + + public static String i18n(String a, Object... format) { + try { + return String.format(C.I18N.getString(a), format); + } catch(Exception e) { + HMCLog.warn("Failed to read localization lang: " + a, e); + return a; + } + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java new file mode 100644 index 000000000..2fc8381ce --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java @@ -0,0 +1,40 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft; + +import org.jackhuang.hellominecraft.logging.logger.Logger; + + +/** + * + * @author hyh + */ +public class HMCLog { + + public static Logger logger = new Logger("HMC"); + + public static void log(String message) { + logger.info(message); + } + + public static void warn(String message) { + logger.warn(message); + } + + public static void warn(String msg, Throwable t) { + logger.warn(msg, t); + } + + public static void err(String msg) { + logger.error(msg); + } + + public static void err(String msg, Throwable t) { + logger.error(msg, t); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java new file mode 100644 index 000000000..3586825fe --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java @@ -0,0 +1,59 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging; + +import org.jackhuang.hellominecraft.logging.appender.IAppender; + +public class AppenderControl { + + private final ThreadLocal recursive = new ThreadLocal(); + private final IAppender appender; + private final Level level; + private final int intLevel; + + public AppenderControl(IAppender appender, Level level) { + this.appender = appender; + this.level = level; + this.intLevel = (level == null ? Level.ALL.level : level.level); + } + + public IAppender getAppender() { + return this.appender; + } + + public void callAppender(LogEvent event) { + if ((this.level != null) + && (this.intLevel < event.level.level)) { + return; + } + + if (this.recursive.get() != null) { + System.err.println("Recursive call to appender " + this.appender.getName()); + return; + } + try { + this.recursive.set(this); + + try { + this.appender.append(event); + } catch (RuntimeException ex) { + System.err.println("An exception occurred processing Appender " + this.appender.getName()); + ex.printStackTrace(); + if (!this.appender.ignoreExceptions()) { + throw ex; + } + } catch (Exception ex) { + System.err.println("An exception occurred processing Appender " + this.appender.getName()); + ex.printStackTrace(); + if (!this.appender.ignoreExceptions()) { + throw new LoggingException(ex); + } + } + } finally { + this.recursive.set(null); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java new file mode 100644 index 000000000..8086114b9 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java @@ -0,0 +1,30 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging; + +import java.util.ArrayList; +import org.jackhuang.hellominecraft.logging.appender.ConsoleAppender; +import org.jackhuang.hellominecraft.logging.appender.IAppender; +import org.jackhuang.hellominecraft.logging.layout.DefaultLayout; + +/** + * + * @author hyh + */ + +public class Configuration { + + public ArrayList appenders = new ArrayList(); + + public static Configuration DEFAULT; + + static { + DEFAULT = new Configuration(); + DEFAULT.appenders.add(new ConsoleAppender("Console", new DefaultLayout(), true, new ConsoleAppender.SystemOutStream(), true)); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java new file mode 100644 index 000000000..ae39860b5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java @@ -0,0 +1,37 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging; + +/** + * + * @author hyh + */ +public enum Level { + + OFF(0), + FATAL(1), + ERROR(2), + WARN(3), + INFO(4), + DEBUG(5), + TRACE(6), + ALL(2147483647); + + public final int level; + + private Level(int i) { + level = i; + } + + public boolean lessOrEqual(Level level) { + return this.level <= level.level; + } + + public boolean lessOrEqual(int level) { + return this.level <= level; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java new file mode 100644 index 000000000..30903da6e --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging; + +import org.jackhuang.hellominecraft.logging.message.IMessage; + +/** + * + * @author hyh + */ +public class LogEvent { + + public Level level; + public String threadName; + public Throwable thrown; + public IMessage message; + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java new file mode 100644 index 000000000..e20357f5e --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java @@ -0,0 +1,19 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging; + +/** + * + * @author hyh + */ +public class LoggingException extends RuntimeException { + + public LoggingException(Exception e) { + super(e); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java new file mode 100644 index 000000000..0eb847ef8 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java @@ -0,0 +1,45 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.appender; + +import java.io.Serializable; +import org.jackhuang.hellominecraft.logging.layout.ILayout; + +/** + * + * @author hyh + */ +public abstract class AbstractAppender implements IAppender { + + String name; + private final ILayout layout; + private final boolean ignoreExceptions; + + public AbstractAppender(String name, ILayout layout) { + this(name, layout, true); + } + + public AbstractAppender(String name, ILayout layout, boolean ignoreExceptions) { + this.name = name; + this.layout = layout; + this.ignoreExceptions = ignoreExceptions; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean ignoreExceptions() { + return ignoreExceptions; + } + + @Override + public ILayout getLayout() { + return this.layout; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java new file mode 100644 index 000000000..17591b9aa --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java @@ -0,0 +1,78 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.appender; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.Serializable; +import org.jackhuang.hellominecraft.logging.layout.ILayout; + +/** + * + * @author hyh + */ +public class ConsoleAppender extends OutputStreamAppender { + + public ConsoleAppender(String name, ILayout layout, boolean ignoreExceptions, OutputStream stream, boolean immediateFlush) { + super(name, layout, ignoreExceptions, stream, true); + } + + public static class SystemOutStream extends OutputStream { + + @Override + public void close() { + } + + @Override + public void flush() { + System.out.flush(); + } + + @Override + public void write(byte[] b) throws IOException { + System.out.write(b); + } + + @Override + public void write(byte[] b, int off, int len) + throws IOException { + System.out.write(b, off, len); + } + + @Override + public void write(int b) throws IOException { + System.out.write(b); + } + } + + public static class SystemErrStream extends OutputStream { + + @Override + public void close() { + } + + @Override + public void flush() { + System.err.flush(); + } + + @Override + public void write(byte[] b) throws IOException { + System.err.write(b); + } + + @Override + public void write(byte[] b, int off, int len) + throws IOException { + System.err.write(b, off, len); + } + + @Override + public void write(int b) { + System.err.write(b); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java new file mode 100644 index 000000000..1be2e4c45 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java @@ -0,0 +1,24 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging.appender; + +import java.io.Serializable; +import org.jackhuang.hellominecraft.logging.LogEvent; +import org.jackhuang.hellominecraft.logging.layout.ILayout; + +/** + * + * @author hyh + */ +public interface IAppender { + + void append(LogEvent event); + String getName(); + boolean ignoreExceptions(); + ILayout getLayout(); + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java new file mode 100644 index 000000000..1faa934c5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java @@ -0,0 +1,52 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.appender; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.Serializable; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import org.jackhuang.hellominecraft.logging.LogEvent; +import org.jackhuang.hellominecraft.logging.LoggingException; +import org.jackhuang.hellominecraft.logging.layout.ILayout; + +/** + * + * @author hyh + */ +public abstract class OutputStreamAppender extends AbstractAppender { + + protected final OutputStream stream; + protected final boolean immediateFlush; + private final Lock readLock = new ReentrantReadWriteLock().readLock(); + + public OutputStreamAppender(String name, ILayout layout, boolean ignoreExceptions, OutputStream stream, boolean immediateFlush) { + super(name, layout, ignoreExceptions); + + this.immediateFlush = immediateFlush; + this.stream = stream; + } + + @Override + public void append(LogEvent event) { + this.readLock.lock(); + try { + byte[] bytes = getLayout().toByteArray(event); + if (bytes.length > 0) { + stream.write(bytes); + } + if(event.thrown != null) + event.thrown.printStackTrace(new PrintStream(stream)); + } catch (IOException ex) { + System.err.println("Unable to write to stream for appender: " + getName()); + throw new LoggingException(ex); + } finally { + this.readLock.unlock(); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java new file mode 100644 index 000000000..33b757ebb --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging.layout; + +import org.jackhuang.hellominecraft.logging.LogEvent; + +/** + * + * @author hyh + */ +public abstract class AbstractStringLayout implements ILayout { + + @Override + public byte[] toByteArray(LogEvent event) { + return toSerializable(event).getBytes(); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java new file mode 100644 index 000000000..13603fab9 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java @@ -0,0 +1,25 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging.layout; + +import java.text.SimpleDateFormat; +import java.util.Date; +import org.jackhuang.hellominecraft.logging.LogEvent; + +/** + * + * @author hyh + */ +public class DefaultLayout extends AbstractStringLayout { + private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + + @Override + public String toSerializable(LogEvent event) { + return "[" + sdf.format(new Date()) + "][" + event.threadName + "/" + event.level.name() + "] " + event.message.getFormattedMessage() + "\n"; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java new file mode 100644 index 000000000..7326ea536 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging.layout; + +import java.io.Serializable; +import org.jackhuang.hellominecraft.logging.LogEvent; + +/** + * + * @author hyh + * @param + */ +public interface ILayout { + + byte[] toByteArray(LogEvent event); + T toSerializable(LogEvent event); + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java new file mode 100644 index 000000000..cae4f1458 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java @@ -0,0 +1,523 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.logger; + +import org.jackhuang.hellominecraft.logging.Level; +import org.jackhuang.hellominecraft.logging.message.IMessage; +import org.jackhuang.hellominecraft.logging.message.IMessageFactory; +import org.jackhuang.hellominecraft.logging.message.ParameterizedMessageFactory; +import org.jackhuang.hellominecraft.logging.message.StringFormattedMessage; + +public abstract class AbstractLogger + implements ILogger { + + public static final Class DEFAULT_MESSAGE_FACTORY_CLASS = ParameterizedMessageFactory.class; + + private static final String FQCN = AbstractLogger.class.getName(); + private static final String THROWING = "throwing"; + private static final String CATCHING = "catching"; + private final String name; + private final IMessageFactory messageFactory; + + public AbstractLogger() { + this.name = getClass().getName(); + this.messageFactory = createDefaultMessageFactory(); + } + + public AbstractLogger(String name) { + this.name = name; + this.messageFactory = createDefaultMessageFactory(); + } + + public AbstractLogger(String name, IMessageFactory messageFactory) { + this.name = name; + this.messageFactory = (messageFactory == null ? createDefaultMessageFactory() : messageFactory); + } + + private IMessageFactory createDefaultMessageFactory() { + try { + return (IMessageFactory) DEFAULT_MESSAGE_FACTORY_CLASS.newInstance(); + } catch (InstantiationException e) { + throw new IllegalStateException(e); + } catch (IllegalAccessException e) { + throw new IllegalStateException(e); + } + } + + @Override + public void catching(Level level, Throwable t) { + if (isEnabled(level, (Object) null, null)) { + log(level, this.messageFactory.newMessage(CATCHING), t); + } + } + + @Override + public void catching(Throwable t) { + catching(Level.ERROR, t); + } + + @Override + public void debug(IMessage msg) { + if (isEnabled(Level.DEBUG, msg, null)) { + log(Level.DEBUG, msg, null); + } + } + + @Override + public void debug(IMessage msg, Throwable t) { + if (isEnabled(Level.DEBUG, msg, t)) { + log(Level.DEBUG, msg, t); + } + } + + @Override + public void debug(Object message) { + if (isEnabled(Level.DEBUG, message, null)) { + log(Level.DEBUG, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void debug(Object message, Throwable t) { + if (isEnabled(Level.DEBUG, message, t)) { + log(Level.DEBUG, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void debug(String message) { + if (isEnabled(Level.DEBUG, message)) { + log(Level.DEBUG, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void debug(String message, Object[] params) { + if (isEnabled(Level.DEBUG, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.DEBUG, msg, msg.getThrowable()); + } + } + + @Override + public void debug(String message, Throwable t) { + if (isEnabled(Level.DEBUG, message, t)) { + log(Level.DEBUG, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void entry() { + entry(new Object[0]); + } + + @Override + public void entry(Object[] params) { + if (isEnabled(Level.TRACE, (Object) null, null)) { + log(Level.TRACE, entryMsg(params.length, params), null); + } + } + + private IMessage entryMsg(int count, Object[] params) { + if (count == 0) { + return this.messageFactory.newMessage("entry"); + } + StringBuilder sb = new StringBuilder("entry params("); + int i = 0; + for (Object parm : params) { + if (parm != null) { + sb.append(parm.toString()); + } else { + sb.append("null"); + } + i++; + if (i < params.length) { + sb.append(", "); + } + } + sb.append(")"); + return this.messageFactory.newMessage(sb.toString()); + } + + @Override + public void error(IMessage msg) { + if (isEnabled(Level.ERROR, msg, null)) { + log(Level.ERROR, msg, null); + } + } + + @Override + public void error(IMessage msg, Throwable t) { + if (isEnabled(Level.ERROR, msg, t)) { + log(Level.ERROR, msg, t); + } + } + + @Override + public void error(Object message) { + if (isEnabled(Level.ERROR, message, null)) { + log(Level.ERROR, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void error(Object message, Throwable t) { + if (isEnabled(Level.ERROR, message, t)) { + log(Level.ERROR, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void error(String message) { + if (isEnabled(Level.ERROR, message)) { + log(Level.ERROR, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void error(String message, Object[] params) { + if (isEnabled(Level.ERROR, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.ERROR, msg, msg.getThrowable()); + } + } + + @Override + public void error(String message, Throwable t) { + if (isEnabled(Level.ERROR, message, t)) { + log(Level.ERROR, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void fatal(IMessage msg) { + if (isEnabled(Level.FATAL, msg, null)) { + log(Level.FATAL, msg, null); + } + } + + @Override + public void fatal(IMessage msg, Throwable t) { + if (isEnabled(Level.FATAL, msg, t)) { + log(Level.FATAL, msg, t); + } + } + + @Override + public void fatal(Object message) { + if (isEnabled(Level.FATAL, message, null)) { + log(Level.FATAL, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void fatal(Object message, Throwable t) { + if (isEnabled(Level.FATAL, message, t)) { + log(Level.FATAL, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void fatal(String message) { + if (isEnabled(Level.FATAL, message)) { + log(Level.FATAL, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void fatal(String message, Object[] params) { + if (isEnabled(Level.FATAL, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.FATAL, msg, msg.getThrowable()); + } + } + + @Override + public void fatal(String message, Throwable t) { + if (isEnabled(Level.FATAL, message, t)) { + log(Level.FATAL, this.messageFactory.newMessage(message), t); + } + } + + @Override + public String getName() { + return this.name; + } + + @Override + public void info(IMessage msg) { + if (isEnabled(Level.INFO, msg, null)) { + log(Level.INFO, msg, null); + } + } + + @Override + public void info(IMessage msg, Throwable t) { + if (isEnabled(Level.INFO, msg, t)) { + log(Level.INFO, msg, t); + } + } + + @Override + public void info(Object message) { + if (isEnabled(Level.INFO, message, null)) { + log(Level.INFO, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void info(Object message, Throwable t) { + if (isEnabled(Level.INFO, message, t)) { + log(Level.INFO, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void info(String message) { + if (isEnabled(Level.INFO, message)) { + log(Level.INFO, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void info(String message, Object[] params) { + if (isEnabled(Level.INFO, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.INFO, msg, msg.getThrowable()); + } + } + + @Override + public void info(String message, Throwable t) { + if (isEnabled(Level.INFO, message, t)) { + log(Level.INFO, this.messageFactory.newMessage(message), t); + } + } + + protected abstract boolean isEnabled(Level paramLevel, IMessage paramIMessage, Throwable paramThrowable); + + protected abstract boolean isEnabled(Level paramLevel, Object paramObject, Throwable paramThrowable); + + protected abstract boolean isEnabled(Level paramLevel, String paramString); + + protected abstract boolean isEnabled(Level paramLevel, String paramString, Object[] paramArrayOfObject); + + protected abstract boolean isEnabled(Level paramLevel, String paramString, Throwable paramThrowable); + + protected abstract void abstractLog(Level level, IMessage msg, Throwable t); + + @Override + public boolean isErrorEnabled() { + return isEnabled(Level.ERROR); + } + + @Override + + public boolean isFatalEnabled() { + return isEnabled(Level.FATAL); + } + + @Override + public boolean isInfoEnabled() { + return isEnabled(Level.INFO); + } + + @Override + public boolean isTraceEnabled() { + return isEnabled(Level.TRACE); + } + + @Override + public boolean isWarnEnabled() { + return isEnabled(Level.WARN); + } + + @Override + public boolean isDebugEnabled() { + return isEnabled(Level.DEBUG); + } + + @Override + public boolean isEnabled(Level level) { + return isEnabled(level, (Object) null, null); + } + + @Override + public void log(Level level, IMessage msg) { + if (isEnabled(level, msg, null)) { + log(level, msg, null); + } + } + + @Override + public void log(Level level, IMessage msg, Throwable t) { + if (isEnabled(level, msg, t)) { + abstractLog(level, msg, t); + } + } + + @Override + public void log(Level level, Object message) { + if (isEnabled(level, message, null)) { + log(level, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void log(Level level, Object message, Throwable t) { + if (isEnabled(level, message, t)) { + log(level, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void log(Level level, String message) { + if (isEnabled(level, message)) { + log(level, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void log(Level level, String message, Object[] params) { + if (isEnabled(level, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(level, msg, msg.getThrowable()); + } + } + + @Override + public void log(Level level, String message, Throwable t) { + if (isEnabled(level, message, t)) { + log(level, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void printf(Level level, String format, Object[] params) { + if (isEnabled(level, format, params)) { + IMessage msg = new StringFormattedMessage(format, params); + log(level, msg, msg.getThrowable()); + } + } + + @Override + public T throwing(T t) { + return throwing(Level.ERROR, t); + } + + @Override + public T throwing(Level level, T t) { + if (isEnabled(level, (Object) null, null)) { + log(level, this.messageFactory.newMessage(THROWING), t); + } + return t; + } + + @Override + public String toString() { + return this.name; + } + + @Override + public void trace(IMessage msg) { + if (isEnabled(Level.TRACE, msg, null)) { + log(Level.TRACE, msg, null); + } + } + + @Override + public void trace(IMessage msg, Throwable t) { + if (isEnabled(Level.TRACE, msg, t)) { + log(Level.TRACE, msg, t); + } + } + + @Override + public void trace(Object message) { + if (isEnabled(Level.TRACE, message, null)) { + log(Level.TRACE, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void trace(Object message, Throwable t) { + if (isEnabled(Level.TRACE, message, t)) { + log(Level.TRACE, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void trace(String message) { + if (isEnabled(Level.TRACE, message)) { + log(Level.TRACE, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void trace(String message, Object[] params) { + if (isEnabled(Level.TRACE, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.TRACE, msg, msg.getThrowable()); + } + } + + @Override + public void trace(String message, Throwable t) { + if (isEnabled(Level.TRACE, message, t)) { + log(Level.TRACE, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void warn(IMessage msg) { + if (isEnabled(Level.WARN, msg, null)) { + log(Level.WARN, msg, null); + } + } + + @Override + public void warn(IMessage msg, Throwable t) { + if (isEnabled(Level.WARN, msg, t)) { + log(Level.WARN, msg, t); + } + } + + @Override + public void warn(Object message) { + if (isEnabled(Level.WARN, message, null)) { + log(Level.WARN, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void warn(Object message, Throwable t) { + if (isEnabled(Level.WARN, message, t)) { + log(Level.WARN, this.messageFactory.newMessage(message), t); + } + } + + @Override + public void warn(String message) { + if (isEnabled(Level.WARN, message)) { + log(Level.WARN, this.messageFactory.newMessage(message), null); + } + } + + @Override + public void warn(String message, Object[] params) { + if (isEnabled(Level.WARN, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.WARN, msg, msg.getThrowable()); + } + } + + @Override + public void warn(String message, Throwable t) { + if (isEnabled(Level.WARN, message, t)) { + log(Level.WARN, this.messageFactory.newMessage(message), t); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java new file mode 100644 index 000000000..307c670e5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java @@ -0,0 +1,146 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging.logger; + +import org.jackhuang.hellominecraft.logging.Level; +import org.jackhuang.hellominecraft.logging.message.IMessage; + +/** + * + * @author hyh + */ +public interface ILogger { + + void catching(Level paramLevel, Throwable paramThrowable); + + void catching(Throwable paramThrowable); + + void debug(IMessage paramIMessage); + + void debug(IMessage paramIMessage, Throwable paramThrowable); + + void debug(Object paramObject); + + void debug(Object paramObject, Throwable paramThrowable); + + void debug(String paramString); + + void debug(String paramString, Object[] paramArrayOfObject); + + void debug(String paramString, Throwable paramThrowable); + + void entry(); + + void entry(Object[] paramArrayOfObject); + + void error(IMessage paramIMessage); + + void error(IMessage paramIMessage, Throwable paramThrowable); + + void error(Object paramObject); + + void error(Object paramObject, Throwable paramThrowable); + + void error(String paramString); + + void error(String paramString, Object[] paramArrayOfObject); + + void error(String paramString, Throwable paramThrowable); + + void fatal(IMessage paramIMessage); + + void fatal(IMessage paramIMessage, Throwable paramThrowable); + + void fatal(Object paramObject); + + void fatal(Object paramObject, Throwable paramThrowable); + + void fatal(String paramString); + + void fatal(String paramString, Object[] paramArrayOfObject); + + void fatal(String paramString, Throwable paramThrowable); + + String getName(); + + void info(IMessage paramIMessage); + + void info(IMessage paramIMessage, Throwable paramThrowable); + + void info(Object paramObject); + + void info(Object paramObject, Throwable paramThrowable); + + void info(String paramString); + + void info(String paramString, Object[] paramArrayOfObject); + + void info(String paramString, Throwable paramThrowable); + + boolean isDebugEnabled(); + + boolean isEnabled(Level paramLevel); + + boolean isErrorEnabled(); + + boolean isFatalEnabled(); + + boolean isInfoEnabled(); + + boolean isTraceEnabled(); + + boolean isWarnEnabled(); + + void log(Level paramLevel, IMessage paramIMessage); + + void log(Level paramLevel, IMessage paramIMessage, Throwable paramThrowable); + + void log(Level paramLevel, Object paramObject); + + void log(Level paramLevel, Object paramObject, Throwable paramThrowable); + + void log(Level paramLevel, String paramString); + + void log(Level paramLevel, String paramString, Object[] paramArrayOfObject); + + void log(Level paramLevel, String paramString, Throwable paramThrowable); + + void printf(Level paramLevel, String paramString, Object[] paramArrayOfObject); + + T throwing(Level paramLevel, T paramT); + + T throwing(T paramT); + + void trace(IMessage paramIMessage); + + void trace(IMessage paramIMessage, Throwable paramThrowable); + + void trace(Object paramObject); + + void trace(Object paramObject, Throwable paramThrowable); + + void trace(String paramString); + + void trace(String paramString, Object[] paramArrayOfObject); + + void trace(String paramString, Throwable paramThrowable); + + void warn(IMessage paramIMessage); + + void warn(IMessage paramIMessage, Throwable paramThrowable); + + void warn(Object paramObject); + + void warn(Object paramObject, Throwable paramThrowable); + + void warn(String paramString); + + void warn(String paramString, Object[] paramArrayOfObject); + + void warn(String paramString, Throwable paramThrowable); + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java new file mode 100644 index 000000000..d9d34a2b9 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java @@ -0,0 +1,156 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.logger; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import org.jackhuang.hellominecraft.logging.AppenderControl; +import org.jackhuang.hellominecraft.logging.Configuration; +import org.jackhuang.hellominecraft.logging.Level; +import org.jackhuang.hellominecraft.logging.LogEvent; +import org.jackhuang.hellominecraft.logging.appender.IAppender; +import org.jackhuang.hellominecraft.logging.message.IMessage; +import org.jackhuang.hellominecraft.logging.message.IMessageFactory; + +public class Logger extends AbstractLogger { + + protected volatile PrivateConfig config; + private final Map appenders = new ConcurrentHashMap(); + + public Logger(String name) { + this(name, null, Level.INFO); + } + + public Logger(String name, IMessageFactory messageFactory, Level defaultLevel) { + super(name, messageFactory); + this.config = new PrivateConfig(Configuration.DEFAULT, this, defaultLevel); + } + + public synchronized void setLevel(Level level) { + if (level != null) { + this.config = new PrivateConfig(this.config, level); + } + } + + public Level getLevel() { + return this.config.level; + } + + @Override + public void abstractLog(Level level, IMessage data, Throwable t) { + LogEvent event = new LogEvent(); + event.level = level; + event.message = data; + event.thrown = t; + event.threadName = Thread.currentThread().getName(); + + log(event); + } + + public void log(LogEvent event) { + callAppenders(event); + } + + protected void callAppenders(LogEvent event) { + for (AppenderControl control : this.appenders.values()) { + control.callAppender(event); + } + } + + @Override + public boolean isEnabled(Level level, String msg) { + return this.config.filter(level, msg); + } + + @Override + public boolean isEnabled(Level level, String msg, Throwable t) { + return this.config.filter(level, msg, t); + } + + @Override + public boolean isEnabled(Level level, String msg, Object[] p1) { + return this.config.filter(level, msg, p1); + } + + @Override + public boolean isEnabled(Level level, Object msg, Throwable t) { + return this.config.filter(level, msg, t); + } + + @Override + public boolean isEnabled(Level level, IMessage msg, Throwable t) { + return this.config.filter(level, msg, t); + } + + public void addAppender(IAppender appender) { + this.appenders.put(appender.getName(), new AppenderControl(appender, null)); + } + + public void removeAppender(IAppender appender) { + this.appenders.remove(appender.getName()); + } + + public Map getAppenders() { + Map map = new HashMap(); + for (Map.Entry entry : this.appenders.entrySet()) { + map.put(entry.getKey(), ((AppenderControl) entry.getValue()).getAppender()); + } + return map; + } + + public String toString() { + String nameLevel = "" + getName() + ":" + getLevel(); + return nameLevel; + } + + protected class PrivateConfig { + + public final Configuration config; + private final Level level; + private final int intLevel; + private final Logger logger; + + public PrivateConfig(Configuration c, Logger logger, Level level) { + this.level = level; + this.intLevel = this.level.level; + this.logger = logger; + + this.config = c; + for(IAppender appender : config.appenders) + addAppender(appender); + } + + public PrivateConfig(PrivateConfig pc, Level level) { + this(pc.config, pc.logger, level); + } + + boolean filter(Level level, String msg) { + + return this.intLevel >= level.level; + } + + boolean filter(Level level, String msg, Throwable t) { + + return this.intLevel >= level.level; + } + + boolean filter(Level level, String msg, Object[] p1) { + + return this.intLevel >= level.level; + } + + boolean filter(Level level, Object msg, Throwable t) { + + return this.intLevel >= level.level; + } + + boolean filter(Level level, IMessage msg, Throwable t) { + + return this.intLevel >= level.level; + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java new file mode 100644 index 000000000..7b144b6df --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java @@ -0,0 +1,130 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.logger; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.jackhuang.hellominecraft.logging.Level; +import org.jackhuang.hellominecraft.logging.message.IMessage; +import org.jackhuang.hellominecraft.logging.message.IMessageFactory; + +public class SimpleLogger extends AbstractLogger { + + private static final char SPACE = ' '; + private DateFormat dateFormatter; + private Level level; + private final boolean showDateTime; + private final boolean showContextMap; + private PrintStream stream; + private final String logName; + + public SimpleLogger(String name, Level defaultLevel, boolean showLogName, boolean showShortLogName, boolean showDateTime, boolean showContextMap, String dateTimeFormat, IMessageFactory messageFactory, PrintStream stream) { + super(name, messageFactory); + this.level = defaultLevel; + if (showShortLogName) { + int index = name.lastIndexOf("."); + if ((index > 0) && (index < name.length())) { + this.logName = name.substring(index + 1); + } else { + this.logName = name; + } + } else if (showLogName) { + this.logName = name; + } else { + this.logName = null; + } + this.showDateTime = showDateTime; + this.showContextMap = showContextMap; + this.stream = stream; + + if (showDateTime) { + try { + this.dateFormatter = new SimpleDateFormat(dateTimeFormat); + } catch (IllegalArgumentException e) { + this.dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS zzz"); + } + } + } + + public void setStream(PrintStream stream) { + this.stream = stream; + } + + public Level getLevel() { + return this.level; + } + + public void setLevel(Level level) { + if (level != null) { + this.level = level; + } + } + + @Override + public void abstractLog(Level level, IMessage msg, Throwable throwable) { + StringBuilder sb = new StringBuilder(); + + if (this.showDateTime) { + Date now = new Date(); + String dateText; + synchronized (this.dateFormatter) { + dateText = this.dateFormatter.format(now); + } + sb.append(dateText); + sb.append(' '); + } + + sb.append(level.toString()); + sb.append(' '); + if ((this.logName != null) && (this.logName.length() > 0)) { + sb.append(this.logName); + sb.append(' '); + } + sb.append(msg.getFormattedMessage()); + Object[] params = msg.getParameters(); + Throwable t; + if ((throwable == null) && (params != null) && ((params[(params.length - 1)] instanceof Throwable))) { + t = (Throwable) params[(params.length - 1)]; + } else { + t = throwable; + } + if (t != null) { + sb.append(' '); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + t.printStackTrace(new PrintStream(baos)); + sb.append(baos.toString()); + } + this.stream.println(sb.toString()); + } + + @Override + protected boolean isEnabled(Level level, String msg) { + return this.level.level >= level.level; + } + + @Override + protected boolean isEnabled(Level level, String msg, Throwable t) { + return this.level.level >= level.level; + } + + @Override + protected boolean isEnabled(Level level, String msg, Object[] p1) { + return this.level.level >= level.level; + } + + @Override + protected boolean isEnabled(Level level, Object msg, Throwable t) { + return this.level.level >= level.level; + } + + @Override + protected boolean isEnabled(Level level, IMessage msg, Throwable t) { + return this.level.level >= level.level; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java new file mode 100644 index 000000000..3fb16a6c2 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java @@ -0,0 +1,24 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +/** + * + * @author hyh + */ +public abstract class AbstractMessageFactory + implements IMessageFactory { + + @Override + public IMessage newMessage(Object message) { + return new ObjectMessage(message); + } + + @Override + public IMessage newMessage(String message) { + return new SimpleMessage(message); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java new file mode 100644 index 000000000..062c05de8 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java @@ -0,0 +1,20 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.logging.message; + +import java.io.Serializable; + +/** + * + * @author hyh + */ +public interface IMessage extends Serializable { + String getFormattedMessage(); + String getFormat(); + Object[] getParameters(); + Throwable getThrowable(); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessageFactory.java new file mode 100644 index 000000000..0845c4309 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessageFactory.java @@ -0,0 +1,19 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +/** + * + * @author hyh + */ +public abstract interface IMessageFactory { + + public abstract IMessage newMessage(Object paramObject); + + public abstract IMessage newMessage(String paramString); + + public abstract IMessage newMessage(String paramString, Object[] paramArrayOfObject); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java new file mode 100644 index 000000000..69bf97665 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java @@ -0,0 +1,64 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +public class ObjectMessage + implements IMessage { + + private static final long serialVersionUID = -5903272448334166185L; + private transient Object obj; + + public ObjectMessage(Object obj) { + if (obj == null) { + obj = "null"; + } + this.obj = obj; + } + + @Override + public String getFormattedMessage() { + return this.obj.toString(); + } + + @Override + public String getFormat() { + return this.obj.toString(); + } + + @Override + public Object[] getParameters() { + return new Object[]{this.obj}; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if ((o == null) || (getClass() != o.getClass())) { + return false; + } + + ObjectMessage that = (ObjectMessage) o; + + return this.obj != null ? this.obj.equals(that.obj) : that.obj == null; + } + + @Override + public int hashCode() { + return this.obj != null ? this.obj.hashCode() : 0; + } + + @Override + public String toString() { + return "ObjectMessage[obj=" + this.obj.toString() + "]"; + } + + @Override + public Throwable getThrowable() { + return (this.obj instanceof Throwable) ? (Throwable) this.obj : null; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java new file mode 100644 index 000000000..e40b49f4c --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java @@ -0,0 +1,336 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +/** + * + * @author hyh + */ +public class ParameterizedMessage + implements IMessage { + + public static final String RECURSION_PREFIX = "[..."; + public static final String RECURSION_SUFFIX = "...]"; + public static final String ERROR_PREFIX = "[!!!"; + public static final String ERROR_SEPARATOR = "=>"; + public static final String ERROR_MSG_SEPARATOR = ":"; + public static final String ERROR_SUFFIX = "!!!]"; + private static final long serialVersionUID = -665975803997290697L; + private static final int HASHVAL = 31; + private static final char DELIM_START = '{'; + private static final char DELIM_STOP = '}'; + private static final char ESCAPE_CHAR = '\\'; + private final String messagePattern; + private final String[] stringArgs; + private transient Object[] argArray; + private transient String formattedMessage; + private transient Throwable throwable; + + public ParameterizedMessage(String messagePattern, String[] stringArgs, Throwable throwable) { + this.messagePattern = messagePattern; + this.stringArgs = stringArgs; + this.throwable = throwable; + } + + public ParameterizedMessage(String messagePattern, Object[] objectArgs, Throwable throwable) { + this.messagePattern = messagePattern; + this.throwable = throwable; + this.stringArgs = parseArguments(objectArgs); + } + + public ParameterizedMessage(String messagePattern, Object[] arguments) { + this.messagePattern = messagePattern; + this.stringArgs = parseArguments(arguments); + } + + public ParameterizedMessage(String messagePattern, Object arg) { + this(messagePattern, new Object[]{arg}); + } + + public ParameterizedMessage(String messagePattern, Object arg1, Object arg2) { + this(messagePattern, new Object[]{arg1, arg2}); + } + + private String[] parseArguments(Object[] arguments) { + if (arguments == null) { + return null; + } + int argsCount = countArgumentPlaceholders(this.messagePattern); + int resultArgCount = arguments.length; + if ((argsCount < arguments.length) + && (this.throwable == null) && ((arguments[(arguments.length - 1)] instanceof Throwable))) { + this.throwable = ((Throwable) arguments[(arguments.length - 1)]); + resultArgCount--; + } + + this.argArray = new Object[resultArgCount]; + System.arraycopy(arguments, 0, this.argArray, 0, resultArgCount); + String[] strArgs; + if ((argsCount == 1) && (this.throwable == null) && (arguments.length > 1)) { + strArgs = new String[1]; + strArgs[0] = deepToString(arguments); + } else { + strArgs = new String[resultArgCount]; + for (int i = 0; i < strArgs.length; i++) { + strArgs[i] = deepToString(arguments[i]); + } + } + return strArgs; + } + + @Override + public String getFormattedMessage() { + if (this.formattedMessage == null) { + this.formattedMessage = formatMessage(this.messagePattern, this.stringArgs); + } + return this.formattedMessage; + } + + @Override + public String getFormat() { + return this.messagePattern; + } + + @Override + public Object[] getParameters() { + if (this.argArray != null) { + return this.argArray; + } + return this.stringArgs; + } + + @Override + public Throwable getThrowable() { + return this.throwable; + } + + protected String formatMessage(String msgPattern, String[] sArgs) { + return format(msgPattern, sArgs); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + ParameterizedMessage that = (ParameterizedMessage) o; + if (this.messagePattern != null ? !this.messagePattern.equals(that.messagePattern) : that.messagePattern != null) + return false; + + return Arrays.equals(this.stringArgs, that.stringArgs); + } + + @Override + public int hashCode() { + int result = this.messagePattern != null ? this.messagePattern.hashCode() : 0; + result = HASHVAL * result + (this.stringArgs != null ? Arrays.hashCode(this.stringArgs) : 0); + return result; + } + + public static String format(String messagePattern, Object[] arguments) { + if ((messagePattern == null) || (arguments == null) || (arguments.length == 0)) + return messagePattern; + + StringBuilder result = new StringBuilder(); + int escapeCounter = 0; + int currentArgument = 0; + for (int i = 0; i < messagePattern.length(); i++) { + char curChar = messagePattern.charAt(i); + if (curChar == ESCAPE_CHAR) { + escapeCounter++; + } else if ((curChar == DELIM_START) + && (i < messagePattern.length() - 1) + && (messagePattern.charAt(i + 1) == DELIM_STOP)) { + int escapedEscapes = escapeCounter / 2; + for (int j = 0; j < escapedEscapes; j++) + result.append(ESCAPE_CHAR); + + if (escapeCounter % 2 == 1) { + result.append(DELIM_START); + result.append(DELIM_STOP); + } else { + if (currentArgument < arguments.length) + result.append(arguments[currentArgument]); + else + result.append(DELIM_START).append(DELIM_STOP); + currentArgument++; + } + i++; + escapeCounter = 0; + } else { + if (escapeCounter > 0) { + for (int j = 0; j < escapeCounter; j++) + result.append(ESCAPE_CHAR); + escapeCounter = 0; + } + result.append(curChar); + } + } + return result.toString(); + } + + public static int countArgumentPlaceholders(String messagePattern) { + if (messagePattern == null) return 0; + + int delim = messagePattern.indexOf(123); + + if (delim == -1) return 0; + int result = 0; + boolean isEscaped = false; + for (int i = 0; i < messagePattern.length(); i++) { + char curChar = messagePattern.charAt(i); + if (curChar == ESCAPE_CHAR) { + isEscaped = !isEscaped; + } else if (curChar == DELIM_START) { + if ((!isEscaped) + && (i < messagePattern.length() - 1) + && (messagePattern.charAt(i + 1) == DELIM_STOP)) { + result++; + i++; + } + + isEscaped = false; + } else { + isEscaped = false; + } + } + return result; + } + + public static String deepToString(Object o) { + if (o == null) return null; + if (o instanceof String) return (String) o; + StringBuilder str = new StringBuilder(); + Set dejaVu = new HashSet(); + recursiveDeepToString(o, str, dejaVu); + return str.toString(); + } + + private static void recursiveDeepToString(Object o, StringBuilder str, Set dejaVu) { + if (o == null) { + str.append("null"); + return; + } + if ((o instanceof String)) { + str.append(o); + return; + } + Class oClass = o.getClass(); + if (oClass.isArray()) { + if (oClass == byte[].class) { + str.append(Arrays.toString((byte[]) (byte[]) o)); + } else if (oClass == short[].class) { + str.append(Arrays.toString((short[]) (short[]) o)); + } else if (oClass == int[].class) { + str.append(Arrays.toString((int[]) (int[]) o)); + } else if (oClass == long[].class) { + str.append(Arrays.toString((long[]) (long[]) o)); + } else if (oClass == float[].class) { + str.append(Arrays.toString((float[]) (float[]) o)); + } else if (oClass == double[].class) { + str.append(Arrays.toString((double[]) (double[]) o)); + } else if (oClass == boolean[].class) { + str.append(Arrays.toString((boolean[]) (boolean[]) o)); + } else if (oClass == char[].class) { + str.append(Arrays.toString((char[]) (char[]) o)); + } else { + String id = identityToString(o); + if (dejaVu.contains(id)) { + str.append("[...").append(id).append("...]"); + } else { + dejaVu.add(id); + Object[] oArray = (Object[]) (Object[]) o; + str.append("["); + boolean first = true; + for (Object current : oArray) { + if (first) first = false; + else str.append(", "); + recursiveDeepToString(current, str, new HashSet(dejaVu)); + } + str.append("]"); + } + } + } else if ((o instanceof Map)) { + String id = identityToString(o); + if (dejaVu.contains(id)) { + str.append("[...").append(id).append("...]"); + } else { + dejaVu.add(id); + Map oMap = (Map) o; + str.append("{"); + boolean isFirst = true; + for (Object o1 : oMap.entrySet()) { + Map.Entry current = (Map.Entry) o1; + if (isFirst) isFirst = false; + else str.append(", "); + Object key = current.getKey(); + Object value = current.getValue(); + recursiveDeepToString(key, str, new HashSet(dejaVu)); + str.append("="); + recursiveDeepToString(value, str, new HashSet(dejaVu)); + } + str.append("}"); + } + } else if ((o instanceof Collection)) { + String id = identityToString(o); + if (dejaVu.contains(id)) { + str.append("[...").append(id).append("...]"); + } else { + dejaVu.add(id); + Collection oCol = (Collection) o; + str.append("["); + boolean isFirst = true; + for (Iterator i$ = oCol.iterator(); i$.hasNext();) { + Object anOCol = i$.next(); + if (isFirst) isFirst = false; + else str.append(", "); + recursiveDeepToString(anOCol, str, new HashSet(dejaVu)); + } + str.append("]"); + } + } else if ((o instanceof Date)) { + Date date = (Date) o; + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + + str.append(format.format(date)); + } else { + try { + str.append(o.toString()); + } catch (Throwable t) { + str.append("[!!!"); + str.append(identityToString(o)); + str.append("=>"); + String msg = t.getMessage(); + String className = t.getClass().getName(); + str.append(className); + if (!className.equals(msg)) { + str.append(":"); + str.append(msg); + } + str.append("!!!]"); + } + } + } + + public static String identityToString(Object obj) { + if (obj == null) return null; + return obj.getClass().getName()+"@"+Integer.toHexString(System.identityHashCode(obj)); + } + + @Override + public String toString() { + return "ParameterizedMessage[messagePattern="+this.messagePattern+", stringArgs="+Arrays.toString(this.stringArgs)+", throwable="+this.throwable+"]"; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java new file mode 100644 index 000000000..78fec7ce6 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java @@ -0,0 +1,20 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +/** + * + * @author hyh + */ +public final class ParameterizedMessageFactory extends AbstractMessageFactory { + + public static final ParameterizedMessageFactory INSTANCE = new ParameterizedMessageFactory(); + + @Override + public IMessage newMessage(String message, Object[] params) { + return new ParameterizedMessage(message, params); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java new file mode 100644 index 000000000..a665dd965 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java @@ -0,0 +1,69 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +/** + * + * @author hyh + */ +public class SimpleMessage + implements IMessage { + + private static final long serialVersionUID = -8398002534962715992L; + private final String message; + + public SimpleMessage() { + this(null); + } + + public SimpleMessage(String message) { + this.message = message; + } + + @Override + public String getFormattedMessage() { + return this.message; + } + + @Override + public String getFormat() { + return this.message; + } + + @Override + public Object[] getParameters() { + return null; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if ((o == null) || (getClass() != o.getClass())) { + return false; + } + + SimpleMessage that = (SimpleMessage) o; + + return this.message != null ? this.message.equals(that.message) : that.message == null; + } + + @Override + public int hashCode() { + return this.message != null ? this.message.hashCode() : 0; + } + + @Override + public String toString() { + return "SimpleMessage[message=" + this.message + "]"; + } + + @Override + public Throwable getThrowable() { + return null; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java new file mode 100644 index 000000000..5d39ebc08 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java @@ -0,0 +1,94 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.logging.message; + +import java.util.Arrays; +import java.util.IllegalFormatException; + +public class StringFormattedMessage + implements IMessage { + + private static final long serialVersionUID = -665975803997290697L; + private final String messagePattern; + private final transient Object[] argArray; + private String[] stringArgs; + private transient String formattedMessage; + private transient Throwable throwable; + + public StringFormattedMessage(String messagePattern, Object[] arguments) { + this.messagePattern = messagePattern; + this.argArray = arguments; + if ((arguments != null) && (arguments.length > 0) && ((arguments[(arguments.length - 1)] instanceof Throwable))) { + this.throwable = ((Throwable) arguments[(arguments.length - 1)]); + } + } + + @Override + public String getFormattedMessage() { + if (this.formattedMessage == null) { + this.formattedMessage = formatMessage(this.messagePattern, this.argArray); + } + return this.formattedMessage; + } + + @Override + public String getFormat() { + return this.messagePattern; + } + + @Override + public Object[] getParameters() { + if (this.argArray != null) { + return this.argArray; + } + return this.stringArgs; + } + + protected String formatMessage(String msgPattern, Object[] args) { + try { + return String.format(msgPattern, args); + } catch (IllegalFormatException ife) { + System.err.println("Unable to format msg: " + msgPattern); + ife.printStackTrace(); + } + return msgPattern; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if ((o == null) || (getClass() != o.getClass())) { + return false; + } + + StringFormattedMessage that = (StringFormattedMessage) o; + + if (this.messagePattern != null ? !this.messagePattern.equals(that.messagePattern) : that.messagePattern != null) { + return false; + } + + return Arrays.equals(this.stringArgs, that.stringArgs); + } + + @Override + public int hashCode() { + int result = this.messagePattern != null ? this.messagePattern.hashCode() : 0; + result = 31 * result + (this.stringArgs != null ? Arrays.hashCode(this.stringArgs) : 0); + return result; + } + + @Override + public String toString() { + return "StringFormatMessage[messagePattern=" + this.messagePattern + ", args=" + Arrays.toString(this.argArray) + "]"; + } + + @Override + public Throwable getThrowable() { + return this.throwable; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java new file mode 100644 index 000000000..074ab47a2 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +/** + * + * @author hyh + */ +public interface DoingDoneListener { + /** + * Task done. + * @param k + */ + void onDone(K k); + /** + * Before task executing. + * @param k + */ + void onDoing(K k); + /** + * Task failed. + * @param k + */ + void onFailed(K k); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java new file mode 100644 index 000000000..754536a90 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +import java.util.Collection; +import java.util.HashSet; +import org.jackhuang.hellominecraft.tasks.Task; + +/** + * + * @author huangyuhui + */ +public class ParallelTask extends Task { + Collection dependsTask = new HashSet(); + + @Override + public boolean executeTask() { + return true; + } + + @Override + public String getInfo() { + return "PARALLEL"; + } + + @Override + public Collection getDependTasks() { + return dependsTask; + } + + public void addDependsTask(Task t) { + dependsTask.add(t); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java new file mode 100644 index 000000000..0e2f95ddc --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java @@ -0,0 +1,19 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +/** + * + * @author hyh + */ +public abstract class ProgressProvider { + protected ProgressProviderListener ppl; + + public ProgressProvider setProgressProviderListener(ProgressProviderListener p) { + ppl = p; + return this; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java new file mode 100644 index 000000000..d31d55c8e --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +/** + * + * @author hyh + */ +public interface ProgressProviderListener { + void setProgress(int prog, int max); + void setStatus(String sta); + void onProgressProviderDone(); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java new file mode 100644 index 000000000..f32f3b72d --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java @@ -0,0 +1,54 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +import java.util.Collection; + +/** + * + * @author hyh + */ +public abstract class Task extends ProgressProvider { + + /** + * Run in a new thread(packed in TaskList). + * @return is task finished sucessfully. + */ + public abstract boolean executeTask(); + + /** + * if this func returns false, TaskList will force abort the thread. + * run in main thread. + * @return is aborted. + */ + public boolean abort() { return false; } + + public Throwable getFailReason() { return failReason; } + protected Throwable failReason = null; + protected void setFailReason(Throwable s) { + failReason = s; + } + + protected String tag; + protected boolean parallelExecuting; + public Task setTag(String tag) { + this.tag = tag; + return this; + } + + public boolean isParallelExecuting() { + return parallelExecuting; + } + + public void setParallelExecuting(boolean parallelExecuting) { + this.parallelExecuting = parallelExecuting; + } + + public abstract String getInfo(); + + public Collection getDependTasks() { return null; } + public Collection getAfterTasks() { return null; } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java new file mode 100644 index 000000000..b06b98501 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java @@ -0,0 +1,25 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +/** + * + * @author hyh + */ +public abstract class TaskInfo extends Task { + + String info; + + public TaskInfo(String info) { + this.info = info; + } + + @Override + public String getInfo() { + return info; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java new file mode 100644 index 000000000..003f3f376 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java @@ -0,0 +1,154 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public class TaskList extends Thread { + + List taskQueue = Collections.synchronizedList(new ArrayList()); + ArrayList allDone = new ArrayList(); + ArrayList> taskListener = new ArrayList(); + + int totTask = 0; + boolean shouldContinue = true; + + public TaskList() { + } + + public void clean() { + shouldContinue = true; + totTask = 0; + taskQueue.clear(); + } + + public void addAllDoneListener(DoneListener0 l) { + allDone.add(l); + } + + public void addTaskListener(DoingDoneListener l) { + taskListener.add(l); + } + + public void addTask(Task task) { + taskQueue.add(task); + totTask++; + } + + public int taskCount() { + return totTask; + } + + private class InvokeThread extends Thread { + + Task task; + Set s; + + public InvokeThread(Task task, Set ss) { + this.task = task; + s = ss; + } + + @Override + public void run() { + executeTask(task); + s.remove(this); + threadPool.remove(this); + } + + } + + static final Set threadPool = Collections.synchronizedSet(new HashSet()); + static final Set taskPool = Collections.synchronizedSet(new HashSet()); + + private void processTasks(Collection c) { + if (c == null) { + return; + } + this.totTask += c.size(); + Set runningThread = Collections.synchronizedSet(new HashSet()); + for (Task t2 : c) { + t2.setParallelExecuting(true); + InvokeThread thread = new InvokeThread(t2, runningThread); + threadPool.add(thread); + runningThread.add(thread); + thread.start(); + } + while (!runningThread.isEmpty()) { + try { + if(this.isInterrupted()) return; + Thread.sleep(1); + } catch (InterruptedException ex) { + HMCLog.warn("Failed to sleep task thread", ex); + } + } + + } + + private void executeTask(Task t) { + if (!shouldContinue || t == null) { + return; + } + processTasks(t.getDependTasks()); + + HMCLog.log("Executing task: " + t.getInfo()); + for (DoingDoneListener d : taskListener) { + d.onDoing(t); + } + + if (t.executeTask()) { + HMCLog.log("Task finished: " + t.getInfo()); + for (DoingDoneListener d : taskListener) { + d.onDone(t); + } + processTasks(t.getAfterTasks()); + } else { + HMCLog.err("Task failed: " + t.getInfo(), t.getFailReason()); + for (DoingDoneListener d : taskListener) { + d.onFailed(t); + } + } + } + + @Override + public void run() { + Thread.currentThread().setName("TaskList"); + + threadPool.clear(); + for (Task taskQueue1 : taskQueue) + executeTask(taskQueue1); + if (shouldContinue) + for (DoneListener0 d : allDone) + d.onDone(); + } + + public boolean isEmpty() { + return taskQueue.isEmpty(); + } + + public void abort() { + shouldContinue = false; + while(!threadPool.isEmpty()) + synchronized(threadPool) { + InvokeThread it = threadPool.iterator().next(); + if(!it.task.abort()) it.interrupt(); + threadPool.remove(it); + } + this.interrupt(); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java new file mode 100644 index 000000000..66b3673cb --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java @@ -0,0 +1,30 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +/** + * + * @author hyh + */ +public class TaskRunnable extends TaskInfo { + private final Runnable r; + public TaskRunnable(String info, Runnable r) { + super(info); + this.r = r; + } + + @Override + public boolean executeTask() { + try { + r.run(); + return true; + } catch(Throwable t) { + setFailReason(t); + return false; + } + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java new file mode 100644 index 000000000..730ffec44 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java @@ -0,0 +1,47 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +import java.util.ArrayList; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResult; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResultRegistrator; +import org.jackhuang.hellominecraft.utils.functions.Consumer; + +/** + * + * @author hyh + * @param Runnable<T> + */ +public class TaskRunnableArg1 extends TaskInfo implements PreviousResultRegistrator { + private final Consumer r; + public TaskRunnableArg1(String info, Consumer r) { + super(info); + this.r = r; + } + + @Override + public boolean executeTask() { + if(al.size() != 1) throw new IllegalStateException("the count of args is not one."); + try { + r.accept(al.get(0).getResult()); + return true; + } catch(Throwable t) { + setFailReason(t); + return false; + } + } + + ArrayList> al = new ArrayList(); + + @Override + public Task registerPreviousResult(PreviousResult pr) { + al.add(pr); + return this; + } + + + +} \ No newline at end of file diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form new file mode 100644 index 000000000..b24570722 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form @@ -0,0 +1,127 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java new file mode 100644 index 000000000..29f6c9144 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java @@ -0,0 +1,242 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks; + +import java.awt.EventQueue; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.SwingUtils; + +/** + * + * @author hyh + */ +public class TaskWindow extends javax.swing.JDialog + implements ProgressProviderListener, DoneListener0, DoingDoneListener { + + private static final TaskWindow instance = new TaskWindow(); + + public static TaskWindow getInstance() { + instance.clean(); + return instance; + } + + boolean suc = false; + + private TaskList taskList; + private final ArrayList failReasons = new ArrayList(); + + /** + * Creates new form DownloadWindow + */ + private TaskWindow() { + initComponents(); + + setLocationRelativeTo(null); + + setModal(true); + } + + public TaskWindow addTask(Task task) { + taskList.addTask(task); + return this; + } + + public void clean() { + taskList = null; + taskList = new TaskList(); + taskList.addTaskListener(this); + taskList.addAllDoneListener(this); + } + + public boolean start() { + if (taskList.isAlive()) return false; + pgsSingle.setValue(0); + pgsTotal.setValue(0); + suc = false; + SwingUtils.clear(lstDownload); + failReasons.clear(); + try { + taskList.start(); + } catch (Exception e) { + HMCLog.warn("Failed to start thread, maybe there're already a taskwindow here.", e); + MessageBox.Show(C.i18n("taskwindow.no_more_instance")); + return false; + } + this.setVisible(true); + return this.areTasksFinished(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + btnCancel = new javax.swing.JButton(); + pgsSingle = new javax.swing.JProgressBar(); + lblSingleProgress = new javax.swing.JLabel(); + lblTotalProgress = new javax.swing.JLabel(); + pgsTotal = new javax.swing.JProgressBar(); + srlDownload = new javax.swing.JScrollPane(); + lstDownload = new javax.swing.JList(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + setTitle(bundle.getString("taskwindow.title")); // NOI18N + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosed(java.awt.event.WindowEvent evt) { + formWindowClosed(evt); + } + }); + + btnCancel.setText(bundle.getString("taskwindow.cancel")); // NOI18N + btnCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCancelActionPerformed(evt); + } + }); + + pgsSingle.setStringPainted(true); + + lblSingleProgress.setText(bundle.getString("taskwindow.single_progress")); // NOI18N + + lblTotalProgress.setText(bundle.getString("taskwindow.total_progress")); // NOI18N + + pgsTotal.setStringPainted(true); + + srlDownload.setViewportView(lstDownload); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(lblSingleProgress) + .addGap(349, 349, 349)) + .addComponent(pgsSingle, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(lblTotalProgress) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(pgsTotal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCancel) + .addContainerGap()) + .addComponent(srlDownload) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(srlDownload, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnCancel, javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(lblSingleProgress) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pgsSingle, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblTotalProgress) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pgsTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed + if(MessageBox.Show(C.i18n("operation.confirm_stop"), MessageBox.YES_OPTION) == MessageBox.YES_OPTION) + this.dispose(); + }//GEN-LAST:event_btnCancelActionPerformed + + private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed + if (!this.failReasons.isEmpty()) { + MessageBox.Show(StrUtils.parseParams("", failReasons.toArray(), "\n"), C.i18n("message.error"), MessageBox.ERROR_MESSAGE); + failReasons.clear(); + } + + if (!suc) { + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + taskList.abort(); + } + }); + HMCLog.log("Tasks have been canceled by user."); + } + }//GEN-LAST:event_formWindowClosed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnCancel; + private javax.swing.JLabel lblSingleProgress; + private javax.swing.JLabel lblTotalProgress; + private javax.swing.JList lstDownload; + private javax.swing.JProgressBar pgsSingle; + private javax.swing.JProgressBar pgsTotal; + private javax.swing.JScrollPane srlDownload; + // End of variables declaration//GEN-END:variables + + @Override + public void setProgress(int progress, int max) { + pgsSingle.setMaximum(max); + pgsSingle.setValue(progress); + } + + @Override + public void onDone() { + suc = true; + this.dispose(); + HMCLog.log("Tasks are finished."); + } + + @Override + public void onDoing(Task task) { + if (!task.isParallelExecuting()) + task.setProgressProviderListener(this); + + SwingUtils.appendLast(lstDownload, task.getInfo()); + SwingUtils.moveEnd(srlDownload); + } + + public boolean areTasksFinished() { + return suc; + } + + @Override + public void onDone(Task task) { + pgsTotal.setMaximum(taskList.taskCount()); + pgsTotal.setValue(pgsTotal.getValue() + 1); + } + + @Override + public void onFailed(Task task) { + failReasons.add(task.getInfo() + ": " + (task.getFailReason() == null ? "No exception" : task.getFailReason().getLocalizedMessage())); + pgsTotal.setMaximum(taskList.taskCount()); + pgsTotal.setValue(pgsTotal.getValue() + 1); + SwingUtils.replaceLast(lstDownload, task.getFailReason()); + SwingUtils.moveEnd(srlDownload); + } + + @Override + public void onProgressProviderDone() { + + } + + @Override + public void setStatus(String sta) { + SwingUtils.replaceLast(lstDownload, sta); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java new file mode 100644 index 000000000..7d62b8784 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java @@ -0,0 +1,24 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.communication; + +/** + * + * @author huangyuhui + */ +public class DefaultPreviousResult implements PreviousResult{ + T a; + + public DefaultPreviousResult(T a) { + this.a = a; + } + + @Override + public T getResult() { + return a; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java new file mode 100644 index 000000000..0f0e55f00 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.communication; + +/** + * + * @author hyh + * @param Task result type + */ +public interface PreviousResult { + + T getResult(); + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrator.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrator.java new file mode 100644 index 000000000..bdbbecb97 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrator.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.communication; + +import org.jackhuang.hellominecraft.tasks.Task; + +/** + * + * @author hyh + * @param Previous task result type + */ +public interface PreviousResultRegistrator { + + /** + * + * @param pr previous task handler + * @return task self instance + */ + Task registerPreviousResult(PreviousResult pr); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java new file mode 100644 index 000000000..756647c8d --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.download; + +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.views.LogWindow; + +/** + * + * @author hyh + */ +public class ContentGetAndShowTask extends HTTPGetTask implements Event { + + public ContentGetAndShowTask(String info, String changeLogUrl) { + super(changeLogUrl); + this.info = info; + } + + @Override + public boolean executeTask() { + tdtsl.register(this); + return super.executeTask(); + } + + String info; + + @Override + public String getInfo() { + return info; + } + + @Override + public boolean call(Object sender, String value) { + LogWindow.instance.clean(); + LogWindow.instance.log(value); + LogWindow.instance.setVisible(true); + return true; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java new file mode 100644 index 000000000..ab297dc13 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java @@ -0,0 +1,17 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.download; + +import org.jackhuang.hellominecraft.tasks.ProgressProviderListener; + +/** + * + * @author hyh + */ +public interface DownloadListener extends ProgressProviderListener { + + boolean OnFailed(); + void OnFailedMoreThan5Times(String url); +} \ No newline at end of file diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java new file mode 100644 index 000000000..b171034c3 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java @@ -0,0 +1,247 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.download; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.RandomAccessFile; +import java.net.HttpURLConnection; +import java.net.URL; +import java.security.GeneralSecurityException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.X509TrustManager; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResult; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResultRegistrator; +import org.jackhuang.hellominecraft.utils.IOUtils; + +/** + * + * @author hyh + */ +// This class downloads a file from a URL. +public class FileDownloadTask extends Task implements PreviousResult, PreviousResultRegistrator { + + private static final X509TrustManager xtm = new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) { + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) { + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } + }; + private static final HostnameVerifier hnv = new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + + static { + SSLContext sslContext = null; + + try { + sslContext = SSLContext.getInstance("TLS"); + X509TrustManager[] xtmArray = new X509TrustManager[]{xtm}; + sslContext.init(null, xtmArray, new java.security.SecureRandom()); + } catch (GeneralSecurityException gse) { + } + if (sslContext != null) { + HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); + } + + HttpsURLConnection.setDefaultHostnameVerifier(hnv); + } + + // Max size of download buffer. + private static final int MAX_BUFFER_SIZE = 2048; + + private URL url; // download URL + private int size; // size of download in bytes + private int downloaded; // number of bytes downloaded + private final File filePath; + + public FileDownloadTask(File filePath) { + this((URL) null, filePath); + } + + public FileDownloadTask(String url, File filePath) { + this(IOUtils.parseURL(url), filePath); + } + + // Constructor for Download. + public FileDownloadTask(URL url, File filePath) { + this.url = url; + size = -1; + downloaded = 0; + this.filePath = filePath; + } + + // Get this download's URL. + public String getUrl() { + return url.toString(); + } + + RandomAccessFile file = null; + InputStream stream = null; + boolean shouldContinue = true, aborted = false; + + private void closeFiles() { + // Close file. + if (file != null) { + try { + file.close(); + file = null; + } catch (IOException e) { + HMCLog.warn("Failed to close file", e); + } + } + + // Close connection to server. + if (stream != null) { + try { + stream.close(); + stream = null; + } catch (IOException e) { + HMCLog.warn("Failed to close stream", e); + } + } + } + + // Download file. + @Override + public boolean executeTask() { + for (PreviousResult p : al) { + this.url = IOUtils.parseURL(p.getResult()); + } + + for (int repeat = 0; repeat < 6; repeat++) { + if (repeat > 0) { + HMCLog.warn("Failed to download, repeat: " + repeat); + } + try { + + // Open connection to URL. + HttpURLConnection connection + = (HttpURLConnection) url.openConnection(); + + connection.setConnectTimeout(5000); + connection.setRequestProperty("User-Agent", "Hello Minecraft! Launcher"); + + // Connect to server. + connection.connect(); + + // Make sure response code is in the 200 range. + if (connection.getResponseCode() / 100 != 2) { + setFailReason(new NetException(C.i18n("download.not_200") + " " + connection.getResponseCode())); + return false; + } + + // Check for valid content length. + int contentLength = connection.getContentLength(); + if (contentLength < 1) { + setFailReason(new NetException("The content length is invalid.")); + return false; + } + + // Set the size for this download if it hasn't been already set. + if (size == -1) { + size = contentLength; + } + + filePath.getParentFile().mkdirs(); + + File tempFile = new File(filePath.getAbsolutePath() + ".hmd"); + if (!tempFile.exists()) { + tempFile.createNewFile(); + } + + // Open file and seek to the end of it. + file = new RandomAccessFile(tempFile, "rw"); + file.seek(downloaded); + + stream = connection.getInputStream(); + while (true) { + // Size buffer according to how much of the file is left to download. + if (!shouldContinue) { + closeFiles(); + filePath.delete(); + break; + } + + byte buffer[] = new byte[MAX_BUFFER_SIZE]; + + // Read from server into buffer. + int read = stream.read(buffer); + if (read == -1) { + break; + } + + // Write buffer to file. + file.write(buffer, 0, read); + downloaded += read; + + if (ppl != null) { + ppl.setProgress(downloaded, size); + } + } + closeFiles(); + tempFile.renameTo(filePath); + if (ppl != null) { + ppl.onProgressProviderDone(); + } + return true; + } catch (Exception e) { + setFailReason(new NetException(C.i18n("download.failed") + " " + url, e)); + } finally { + closeFiles(); + } + } + return false; + } + + public static void download(String url, String file, DownloadListener dl) { + ((Task) new FileDownloadTask(url, new File(file)).setProgressProviderListener(dl)).executeTask(); + } + + @Override + public boolean abort() { + shouldContinue = false; + aborted = true; + return true; + } + + @Override + public String getInfo() { + return C.i18n("download") + ": " + url + " " + filePath; + } + + @Override + public File getResult() { + return filePath; + } + + ArrayList> al = new ArrayList(); + + @Override + public Task registerPreviousResult(PreviousResult pr) { + al.add(pr); + return this; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java new file mode 100644 index 000000000..32a27da5b --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java @@ -0,0 +1,85 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.download; + +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.tasks.TaskInfo; +import org.jackhuang.hellominecraft.tasks.communication.PreviousResult; +import org.jackhuang.hellominecraft.utils.EventHandler; + +/** + * + * @author hyh + */ +public class HTTPGetTask extends TaskInfo implements PreviousResult { + + String url, encoding, result; + EventHandler tdtsl = new EventHandler<>(this); + boolean shouldContinue = true; + + public HTTPGetTask(String url) { + this(null, url); + } + + public HTTPGetTask(String info, String url) { + this(info, url, "UTF-8"); + } + + public HTTPGetTask(String info, String url, String encoding) { + super(info); + this.url = url; + this.encoding = encoding; + } + + @Override + public boolean executeTask() { + for (int repeat = 0; repeat < 6; repeat++) { + if (repeat > 0) HMCLog.warn("Failed to download, repeat: " + repeat); + try { + URLConnection conn = new URL(url).openConnection(); + InputStream is = conn.getInputStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int i; + int size = conn.getContentLength(), read = 0; + while ((i = is.read()) != -1) { + baos.write(i); + if (ppl != null) { + ppl.setProgress(++read, size); + } + if (!shouldContinue) { + return true; + } + } + result = baos.toString(); + tdtsl.execute(result); + return true; + } catch (Exception ex) { + setFailReason(new NetException("Failed to get " + url, ex)); + } + } + return false; + } + + @Override + public boolean abort() { + shouldContinue = false; + return true; + } + + @Override + public String getInfo() { + return super.getInfo() != null ? super.getInfo() : "Get: " + url; + } + + @Override + public String getResult() { + return result; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java new file mode 100644 index 000000000..8b5afe29a --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.tasks.download; + +/** + * + * @author hyh + */ +public class NetException extends RuntimeException { + + public NetException(String message) { + super(message); + } + + public NetException(String message, Exception e) { + super(message, e); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java new file mode 100644 index 000000000..30e72553c --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java @@ -0,0 +1,122 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * + * @author hyh + */ +public class ArrayUtils { + + public static boolean isEmpty(T[] array) { + return array == null || array.length <= 0; + } + + public static boolean isNotEmpty(T[] array) { + return !isEmpty(array); + } + + public static boolean contains(T[] array, T objectToFind) { + return indexOf(array, objectToFind) != -1; + } + + public static int indexOf(T[] array, T valueToFind) { + return indexOf(array, valueToFind, 0); + } + + public static int indexOf(T[] array, T valueToFind, int startIndex) { + if (array == null) { + return -1; + } + if (startIndex < 0) { + startIndex = 0; + } + for (int i = startIndex; i < array.length; i++) { + if (valueToFind.equals(array[i])) { + return i; + } + } + return -1; + } + + public static int lastIndexOf(T[] array, T valueToFind) { + return lastIndexOf(array, valueToFind, 2147483647); + } + + public static int lastIndexOf(T[] array, T valueToFind, int startIndex) { + if (array == null) { + return -1; + } + if (startIndex < 0) { + return -1; + } + if (startIndex >= array.length) { + startIndex = array.length - 1; + } + for (int i = startIndex; i >= 0; i--) { + if (valueToFind.equals(array[i])) { + return i; + } + } + return -1; + } + + public static ArrayList merge(List a, List b) { + ArrayList al = new ArrayList(a.size() + b.size()); + al.addAll(a); al.addAll(b); + return al; + } + + public static K getEnd(K[] k) { + if(k == null) return null; + else return k[k.length-1]; + } + + public static List tryGetMapWithList(Map map, String key) { + List l = (List)map.get(key); + if(l == null) + map.put(key, l = new ArrayList()); + return l; + } + + public static int matchArray(T[] a, T[] b) { + for (int i = 0; i < a.length - b.length; i++) { + int j = 1; + for (int k = 0; k < b.length; k++) { + if (b[k].equals(a[(i + k)])) { + continue; + } + j = 0; + break; + } + if (j != 0) { + return i; + } + } + return -1; + } + + public static int matchArray(byte[] a, byte[] b) { + for (int i = 0; i < a.length - b.length; i++) { + int j = 1; + for (int k = 0; k < b.length; k++) { + if (b[k] == a[(i + k)]) { + continue; + } + j = 0; + break; + } + if (j != 0) { + return i; + } + } + return -1; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Base64.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Base64.java new file mode 100644 index 000000000..e2d20f85e --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Base64.java @@ -0,0 +1,100 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.UnsupportedEncodingException; + +/** + * + * @author hyh + */ +public class Base64 { + + public static char[] encode(byte[] data) { + char[] out = new char[((data.length + 2) / 3) * 4]; + for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { + boolean quad = false; + boolean trip = false; + int val = (0xFF & (int) data[i]); + val <<= 8; + if ((i + 1) < data.length) { + val |= (0xFF & (int) data[i + 1]); + trip = true; + } + val <<= 8; + if ((i + 2) < data.length) { + val |= (0xFF & (int) data[i + 2]); + quad = true; + } + out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; + val >>= 6; + out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; + val >>= 6; + out[index + 1] = alphabet[val & 0x3F]; + val >>= 6; + out[index + 0] = alphabet[val & 0x3F]; + } + return out; + } + + public static char[] encode(String s, String charset) throws UnsupportedEncodingException { + return encode(s.getBytes(charset)); + } + + public static char[] encode(String s) { + return encode(s.getBytes()); + } + + public static byte[] decode(char[] data) { + int len = ((data.length + 3) / 4) * 3; + if (data.length > 0 && data[data.length - 1] == '=') { + --len; + } + if (data.length > 1 && data[data.length - 2] == '=') { + --len; + } + byte[] out = new byte[len]; + int shift = 0; + int accum = 0; + int index = 0; + for (int ix = 0; ix < data.length; ix++) { + int value = codes[data[ix] & 0xFF]; + if (value >= 0) { + accum <<= 6; + shift += 6; + accum |= value; + if (shift >= 8) { + shift -= 8; + out[index++] = (byte) ((accum >> shift) & 0xff); + } + } + } + if (index != out.length) { + throw new Error("miscalculated data length!"); + } + return out; + } + private static final char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + .toCharArray(); + private static final byte[] codes = new byte[256]; + + static { + for (int i = 0; i < 256; i++) { + codes[i] = -1; + } + for (int i = 'A'; i <= 'Z'; i++) { + codes[i] = (byte) (i - 'A'); + } + for (int i = 'a'; i <= 'z'; i++) { + codes[i] = (byte) (26 + i - 'a'); + } + for (int i = '0'; i <= '9'; i++) { + codes[i] = (byte) (52 + i - '0'); + } + codes['+'] = 62; + codes['/'] = 63; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/BaseLauncherProfile.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/BaseLauncherProfile.java new file mode 100644 index 000000000..f3f5a3b27 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/BaseLauncherProfile.java @@ -0,0 +1,21 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.File; +import java.io.IOException; + +/** + * + * @author hyh + */ +public class BaseLauncherProfile { + public static String profile = "{\"selectedProfile\": \"(Default)\",\"profiles\": {\"(Default)\": {\"name\": \"(Default)\"}},\"clientToken\": \"88888888-8888-8888-8888-888888888888\"}"; + public static void tryWriteProfile(File gameDir) throws IOException { + File file = new File(gameDir, "launcher_profiles.json"); + if(!file.exists()) + FileUtils.writeStringToFile(file, profile); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Bytes.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Bytes.java new file mode 100644 index 000000000..49e173941 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Bytes.java @@ -0,0 +1,21 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +/** + * + * @author hyh + */ +public class Bytes { + + public static String substring(String src, int start_idx, int end_idx) { + byte[] b = src.getBytes(); + String tgt = ""; + for (int i = start_idx; i <= end_idx; i++) { + tgt += (char) b[i]; + } + return tgt; + } +} \ No newline at end of file diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Charsets.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Charsets.java new file mode 100644 index 000000000..f19955454 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Charsets.java @@ -0,0 +1,31 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.nio.charset.Charset; + +public class Charsets { + + public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); + + public static final Charset US_ASCII = Charset.forName("US-ASCII"); + + public static final Charset UTF_16 = Charset.forName("UTF-16"); + + public static final Charset UTF_16BE = Charset.forName("UTF-16BE"); + + public static final Charset UTF_16LE = Charset.forName("UTF-16LE"); + + public static final Charset UTF_8 = Charset.forName("UTF-8"); + + public static Charset toCharset(Charset charset) { + return charset == null ? Charset.defaultCharset() : charset; + } + + public static Charset toCharset(String charset) { + return charset == null ? Charset.defaultCharset() : Charset.forName(charset); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java new file mode 100644 index 000000000..86e19a3d7 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java @@ -0,0 +1,183 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + +/** + * 文件压缩/解压类 + * + * @author hyh + */ +public class Compressor { + + public static void zip(String sourceDir, String zipFile) throws IOException { + zip(new File(sourceDir), new File(zipFile)); + } + + /** + * 功能:把 sourceDir 目录下的所有文件进行 zip 格式的压缩,保存为指定 zip 文件 + * + * @param sourceDir + * @param zipFile + */ + public static void zip(File sourceDir, File zipFile) throws IOException { + FileOutputStream os; + os = new FileOutputStream(zipFile); + BufferedOutputStream bos = new BufferedOutputStream(os); + try (ZipOutputStream zos = new ZipOutputStream(bos)) { + String basePath; + if (sourceDir.isDirectory()) { + basePath = sourceDir.getPath(); + } else {//直接压缩单个文件时,取父目录 + basePath = sourceDir.getParent(); + } + zipFile(sourceDir, basePath, zos); + zos.closeEntry(); + } + } + + /** + * 将文件压缩成zip文件 + * + * @param source zip文件路径 + * @param basePath 待压缩文件根目录 + * @param zos + */ + private static void zipFile(File source, String basePath, + ZipOutputStream zos) throws IOException { + File[] files; + if (source.isDirectory()) { + files = source.listFiles(); + } else { + files = new File[1]; + files[0] = source; + } + String pathName;//存相对路径(相对于待压缩的根目录) + byte[] buf = new byte[1024]; + int length; + for (File file : files) { + if (file.isDirectory()) { + pathName = file.getPath().substring(basePath.length() + 1) + + "/"; + if (file.getName().toLowerCase().contains("meta-inf")) { + continue; + } + zos.putNextEntry(new ZipEntry(pathName)); + zipFile(file, basePath, zos); + } else { + pathName = file.getPath().substring(basePath.length() + 1); + try (InputStream is = new FileInputStream(file)) { + BufferedInputStream bis = new BufferedInputStream(is); + zos.putNextEntry(new ZipEntry(pathName)); + while ((length = bis.read(buf)) > 0) { + zos.write(buf, 0, length); + } + } + } + } + } + + public static void unzip(String zipFileName, String extPlace) throws IOException { + unzip(new File(zipFileName), new File(extPlace)); + } + + public static void unzip(File zipFileName, File extPlace) throws IOException { + unzip(zipFileName, extPlace, new String[0]); + } + + /** + * 将文件压缩成zip文件 + * + * @param zipFileName zip文件路径 + * @param extPlace 待压缩文件根目录 + * @param without 带前缀的不解压 + */ + public static void unzip(File zipFileName, File extPlace, String[] without) throws IOException { + extPlace.mkdirs(); + try (ZipFile zipFile = new ZipFile(zipFileName)) { + if (zipFileName.exists()) { + String strPath, gbkPath, strtemp; + strPath = extPlace.getAbsolutePath(); + java.util.Enumeration e = zipFile.entries(); + while (e.hasMoreElements()) { + ZipEntry zipEnt = (ZipEntry) e.nextElement(); + gbkPath = zipEnt.getName(); + if(StrUtils.startsWithOne(without, gbkPath)) continue; + if (zipEnt.isDirectory()) { + strtemp = strPath + File.separator + gbkPath; + File dir = new File(strtemp); + dir.mkdirs(); + } else { + //读写文件 + InputStream is = zipFile.getInputStream(zipEnt); + BufferedInputStream bis = new BufferedInputStream(is); + gbkPath = zipEnt.getName(); + strtemp = strPath + File.separator + gbkPath; + //建目录 + String strsubdir = gbkPath; + for (int i = 0; i < strsubdir.length(); i++) { + if (strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) { + String temp = strPath + File.separator + strsubdir.substring(0, i); + File subdir = new File(temp); + if (!subdir.exists()) { + subdir.mkdir(); + } + } + } + try (FileOutputStream fos = new FileOutputStream(strtemp); BufferedOutputStream bos = new BufferedOutputStream(fos)) { + int c; + while ((c = bis.read()) != -1) + bos.write((byte) c); + } + } + } + } + } + } + + /** + * 将zip1合并到zip2里面,即保留zip2 + * + * @param destFile zip1 + * @param srcFile zip2 + */ + public static void merge(File destFile, File srcFile) throws IOException { + try (ZipOutputStream os = new ZipOutputStream(new FileOutputStream(destFile))) { + if (destFile.exists()) { + File extPlace = new File(IOUtils.currentDir(), "HMCL-MERGE-TEMP"); + unzip(srcFile, extPlace); + ZipFile zipFile = new ZipFile(srcFile); + if (srcFile.exists()) { + String gbkPath;//, strtemp, strPath; + //strPath = extPlace.getAbsolutePath(); + java.util.Enumeration e = zipFile.entries(); + while (e.hasMoreElements()) { + ZipEntry zipEnt = (ZipEntry) e.nextElement(); + //gbkPath = zipEnt.getName(); + if (zipEnt.isDirectory()) { + //strtemp = strPath + File.separator + gbkPath; + } else { + gbkPath = zipEnt.getName(); + //strtemp = strPath + File.separator + gbkPath; + os.putNextEntry(zipEnt); + os.write(gbkPath.getBytes("UTF-8")); + } + } + } + } + os.closeEntry(); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DigestUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DigestUtils.java new file mode 100644 index 000000000..4ffbdacf4 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DigestUtils.java @@ -0,0 +1,273 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.IOException; +import java.io.InputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * + * @author hyh + */ +public class DigestUtils { + + private static final int STREAM_BUFFER_LENGTH = 1024; + + private static byte[] digest(MessageDigest digest, InputStream data) + throws IOException { + return updateDigest(digest, data).digest(); + } + + public static MessageDigest getDigest(String algorithm) { + try { + return MessageDigest.getInstance(algorithm); + } catch (NoSuchAlgorithmException e) { + throw new IllegalArgumentException(e); + } + } + + public static MessageDigest getMd2Digest() { + return getDigest("MD2"); + } + + public static MessageDigest getMd5Digest() { + return getDigest("MD5"); + } + + public static MessageDigest getSha1Digest() { + return getDigest("SHA-1"); + } + + public static MessageDigest getSha256Digest() { + return getDigest("SHA-256"); + } + + public static MessageDigest getSha384Digest() { + return getDigest("SHA-384"); + } + + public static MessageDigest getSha512Digest() { + return getDigest("SHA-512"); + } + + @Deprecated + public static MessageDigest getShaDigest() { + return getSha1Digest(); + } + + public static byte[] md2(byte[] data) { + return getMd2Digest().digest(data); + } + + public static byte[] md2(InputStream data) + throws IOException { + return digest(getMd2Digest(), data); + } + + public static byte[] md2(String data) { + return md2(data.getBytes(Charsets.UTF_8)); + } + + public static String md2Hex(byte[] data) { + return Hex.encodeHexString(md2(data)); + } + + public static String md2Hex(InputStream data) + throws IOException { + return Hex.encodeHexString(md2(data)); + } + + public static String md2Hex(String data) { + return Hex.encodeHexString(md2(data)); + } + + public static byte[] md5(byte[] data) { + return getMd5Digest().digest(data); + } + + public static byte[] md5(InputStream data) + throws IOException { + return digest(getMd5Digest(), data); + } + + public static byte[] md5(String data) { + return md5(data.getBytes(Charsets.UTF_8)); + } + + public static String md5Hex(byte[] data) { + return Hex.encodeHexString(md5(data)); + } + + public static String md5Hex(InputStream data) + throws IOException { + return Hex.encodeHexString(md5(data)); + } + + public static String md5Hex(String data) { + return Hex.encodeHexString(md5(data)); + } + + @Deprecated + public static byte[] sha(byte[] data) { + return sha1(data); + } + + @Deprecated + public static byte[] sha(InputStream data) + throws IOException { + return sha1(data); + } + + @Deprecated + public static byte[] sha(String data) { + return sha1(data); + } + + public static byte[] sha1(byte[] data) { + return getSha1Digest().digest(data); + } + + public static byte[] sha1(InputStream data) + throws IOException { + return digest(getSha1Digest(), data); + } + + public static byte[] sha1(String data) { + return sha1(data.getBytes(Charsets.UTF_8)); + } + + public static String sha1Hex(byte[] data) { + return Hex.encodeHexString(sha1(data)); + } + + public static String sha1Hex(InputStream data) + throws IOException { + return Hex.encodeHexString(sha1(data)); + } + + public static String sha1Hex(String data) { + return Hex.encodeHexString(sha1(data)); + } + + public static byte[] sha256(byte[] data) { + return getSha256Digest().digest(data); + } + + public static byte[] sha256(InputStream data) + throws IOException { + return digest(getSha256Digest(), data); + } + + public static byte[] sha256(String data) { + return sha256(data.getBytes(Charsets.UTF_8)); + } + + public static String sha256Hex(byte[] data) { + return Hex.encodeHexString(sha256(data)); + } + + public static String sha256Hex(InputStream data) + throws IOException { + return Hex.encodeHexString(sha256(data)); + } + + public static String sha256Hex(String data) { + return Hex.encodeHexString(sha256(data)); + } + + public static byte[] sha384(byte[] data) { + return getSha384Digest().digest(data); + } + + public static byte[] sha384(InputStream data) + throws IOException { + return digest(getSha384Digest(), data); + } + + public static byte[] sha384(String data) { + return sha384(data.getBytes(Charsets.UTF_8)); + } + + public static String sha384Hex(byte[] data) { + return Hex.encodeHexString(sha384(data)); + } + + public static String sha384Hex(InputStream data) + throws IOException { + return Hex.encodeHexString(sha384(data)); + } + + public static String sha384Hex(String data) { + return Hex.encodeHexString(sha384(data)); + } + + public static byte[] sha512(byte[] data) { + return getSha512Digest().digest(data); + } + + public static byte[] sha512(InputStream data) + throws IOException { + return digest(getSha512Digest(), data); + } + + public static byte[] sha512(String data) { + return sha512(data.getBytes(Charsets.UTF_8)); + } + + public static String sha512Hex(byte[] data) { + return Hex.encodeHexString(sha512(data)); + } + + public static String sha512Hex(InputStream data) + throws IOException { + return Hex.encodeHexString(sha512(data)); + } + + public static String sha512Hex(String data) { + return Hex.encodeHexString(sha512(data)); + } + + @Deprecated + public static String shaHex(byte[] data) { + return sha1Hex(data); + } + + @Deprecated + public static String shaHex(InputStream data) + throws IOException { + return sha1Hex(data); + } + + @Deprecated + public static String shaHex(String data) { + return sha1Hex(data); + } + + public static MessageDigest updateDigest(MessageDigest messageDigest, byte[] valueToDigest) { + messageDigest.update(valueToDigest); + return messageDigest; + } + + public static MessageDigest updateDigest(MessageDigest digest, InputStream data) + throws IOException { + byte[] buffer = new byte[STREAM_BUFFER_LENGTH]; + int read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); + + while (read > -1) { + digest.update(buffer, 0, read); + read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); + } + + return digest; + } + + public static MessageDigest updateDigest(MessageDigest messageDigest, String valueToDigest) { + messageDigest.update(valueToDigest.getBytes(Charsets.UTF_8)); + return messageDigest; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java new file mode 100644 index 000000000..b162d4378 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java @@ -0,0 +1,91 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * + * @author hyh + */ +public class DoubleOutputStream extends OutputStream { + + private OutputStream a = null; + private OutputStream b = null; + private boolean c = true; + + public DoubleOutputStream(OutputStream paramOutputStream1, OutputStream paramOutputStream2) { + this(paramOutputStream1, paramOutputStream2, true); + } + + private DoubleOutputStream(OutputStream paramOutputStream1, OutputStream paramOutputStream2, boolean paramBoolean) { + this.a = paramOutputStream1; + this.b = paramOutputStream2; + this.c = true; + } + + @Override + public final void write(byte[] arr, int off, int len) throws IOException { + if (this.a != null) { + this.a.write(arr, off, len); + } + if (this.b != null) { + this.b.write(arr, off, len); + } + if (this.c) { + flush(); + } + } + + @Override + public final void write(byte[] paramArrayOfByte) throws IOException { + if (this.a != null) { + this.a.write(paramArrayOfByte); + } + if (this.b != null) { + this.b.write(paramArrayOfByte); + } + if (this.c) { + flush(); + } + } + + @Override + public final void write(int paramInt) throws IOException { + if (this.a != null) { + this.a.write(paramInt); + } + if (this.b != null) { + this.b.write(paramInt); + } + if (this.c) { + flush(); + } + } + + @Override + public final void close() throws IOException { + flush(); + + if (this.a != null) { + this.a.close(); + } + if (this.b != null) { + this.b.close(); + } + } + + @Override + public final void flush() throws IOException { + if (this.a != null) { + this.a.flush(); + } + if (this.b != null) { + this.b.flush(); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java new file mode 100644 index 000000000..6499968ad --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +/** + * + * @author huangyuhui + * @param EventArgs + */ +public interface Event { + boolean call(Object sender, T t); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java new file mode 100644 index 000000000..a01f72f62 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java @@ -0,0 +1,39 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.util.HashSet; + +/** + * + * @author huangyuhui + * @param EventArgs + */ +public class EventHandler { + HashSet> handlers; + Object sender; + + public EventHandler(Object sender) { + handlers = new HashSet<>(); + this.sender = sender; + } + + public void register(Event t) { + handlers.add(t); + } + + public void unregister(Event t) { + handlers.remove(t); + } + + public boolean execute(T x) { + boolean flag = true; + for(Event t : handlers) + if(!t.call(sender, x)) flag = false; + return flag; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/FileUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/FileUtils.java new file mode 100644 index 000000000..d3aafae32 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/FileUtils.java @@ -0,0 +1,463 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.File; +import java.io.FileFilter; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.channels.FileChannel; +import java.util.ArrayList; +import java.util.List; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public class FileUtils { + + public static void deleteDirectory(File directory) + throws IOException { + if (!directory.exists()) { + return; + } + + if (!isSymlink(directory)) { + cleanDirectory(directory); + } + + if (!directory.delete()) { + String message = "Unable to delete directory " + directory + "."; + + throw new IOException(message); + } + } + + public static boolean deleteDirectoryQuietly(File directory) { + try { + deleteDirectory(directory); + return true; + } catch(Exception e) { + HMCLog.err("Failed to delete directory " + directory, e); + return false; + } + } + + public static boolean cleanDirectoryQuietly(File directory) { + try { + cleanDirectory(directory); + return true; + } catch(Exception e) { + HMCLog.err("Failed to clean directory " + directory, e); + return false; + } + } + + public static void cleanDirectory(File directory) + throws IOException { + if (!directory.exists()) { + //String message = directory + " does not exist"; + //throw new IllegalArgumentException(message); + directory.mkdirs(); + return; + } + + if (!directory.isDirectory()) { + String message = directory + " is not a directory"; + throw new IllegalArgumentException(message); + } + + File[] files = directory.listFiles(); + if (files == null) { + throw new IOException("Failed to list contents of " + directory); + } + + IOException exception = null; + for (File file : files) { + try { + forceDelete(file); + } catch (IOException ioe) { + exception = ioe; + } + } + + if (null != exception) { + throw exception; + } + } + + public static void forceDelete(File file) + throws IOException { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + boolean filePresent = file.exists(); + if (!file.delete()) { + if (!filePresent) { + throw new FileNotFoundException("File does not exist: " + file); + } + String message = "Unable to delete file: " + file; + + throw new IOException(message); + } + } + } + + public static boolean isSymlink(File file) + throws IOException { + if (file == null) { + throw new NullPointerException("File must not be null"); + } + if (File.separatorChar == '\\') { + return false; + } + File fileInCanonicalDir; + if (file.getParent() == null) { + fileInCanonicalDir = file; + } else { + File canonicalDir = file.getParentFile().getCanonicalFile(); + fileInCanonicalDir = new File(canonicalDir, file.getName()); + } + + return !fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile()); + } + + public static void copyDirectory(File srcDir, File destDir) + throws IOException { + copyDirectory(srcDir, destDir, true); + } + + public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) + throws IOException { + copyDirectory(srcDir, destDir, null, preserveFileDate); + } + + public static void copyDirectory(File srcDir, File destDir, FileFilter filter) + throws IOException { + copyDirectory(srcDir, destDir, filter, true); + } + + public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate) + throws IOException { + if (srcDir == null) { + throw new NullPointerException("Source must not be null"); + } + if (destDir == null) { + throw new NullPointerException("Destination must not be null"); + } + if (!srcDir.exists()) { + throw new FileNotFoundException("Source '" + srcDir + "' does not exist"); + } + if (!srcDir.isDirectory()) { + throw new IOException("Source '" + srcDir + "' exists but is not a directory"); + } + if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) { + throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same"); + } + + List exclusionList = null; + if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) { + File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter); + if ((srcFiles != null) && (srcFiles.length > 0)) { + exclusionList = new ArrayList(srcFiles.length); + for (File srcFile : srcFiles) { + File copiedFile = new File(destDir, srcFile.getName()); + exclusionList.add(copiedFile.getCanonicalPath()); + } + } + } + doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList); + } + + private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, List exclusionList) + throws IOException { + File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter); + if (srcFiles == null) { + throw new IOException("Failed to list contents of " + srcDir); + } + if (destDir.exists()) { + if (!destDir.isDirectory()) { + throw new IOException("Destination '" + destDir + "' exists but is not a directory"); + } + } else if ((!destDir.mkdirs()) && (!destDir.isDirectory())) { + throw new IOException("Destination '" + destDir + "' directory cannot be created"); + } + + if (!destDir.canWrite()) { + throw new IOException("Destination '" + destDir + "' cannot be written to"); + } + for (File srcFile : srcFiles) { + File dstFile = new File(destDir, srcFile.getName()); + if ((exclusionList == null) || (!exclusionList.contains(srcFile.getCanonicalPath()))) { + if (srcFile.isDirectory()) { + doCopyDirectory(srcFile, dstFile, filter, preserveFileDate, exclusionList); + } else { + doCopyFile(srcFile, dstFile, preserveFileDate); + } + } + + } + + if (preserveFileDate) { + destDir.setLastModified(srcDir.lastModified()); + } + } + + public static String readFileToString(File file) + throws IOException { + return NetUtils.getStreamContent(IOUtils.openInputStream(file)); + } + + public static String readFileToStringQuietly(File file) { + try { + return NetUtils.getStreamContent(IOUtils.openInputStream(file)); + } catch (IOException ex) { + HMCLog.err("Failed to read file: " + file, ex); + return null; + } + } + + public static String readFileToString(File file, String charset) + throws IOException { + return NetUtils.getStreamContent(IOUtils.openInputStream(file), charset); + } + + public static String readFileToStringIgnoreFileNotFound(File file) throws IOException { + try { + return NetUtils.getStreamContent(IOUtils.openInputStream(file)); + } catch (FileNotFoundException ex) { + return ""; + } + } + + public static void copyFile(File srcFile, File destFile) + throws IOException { + copyFile(srcFile, destFile, true); + } + + public static void copyFile(File srcFile, File destFile, boolean preserveFileDate) + throws IOException { + if (srcFile == null) { + throw new NullPointerException("Source must not be null"); + } + if (destFile == null) { + throw new NullPointerException("Destination must not be null"); + } + if (!srcFile.exists()) { + throw new FileNotFoundException("Source '" + srcFile + "' does not exist"); + } + if (srcFile.isDirectory()) { + throw new IOException("Source '" + srcFile + "' exists but is a directory"); + } + if (srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) { + throw new IOException("Source '" + srcFile + "' and destination '" + destFile + "' are the same"); + } + File parentFile = destFile.getParentFile(); + if ((parentFile != null) + && (!parentFile.mkdirs()) && (!parentFile.isDirectory())) { + throw new IOException("Destination '" + parentFile + "' directory cannot be created"); + } + + if ((destFile.exists()) && (!destFile.canWrite())) { + throw new IOException("Destination '" + destFile + "' exists but is read-only"); + } + doCopyFile(srcFile, destFile, preserveFileDate); + } + + private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) + throws IOException { + if ((destFile.exists()) && (destFile.isDirectory())) { + throw new IOException("Destination '" + destFile + "' exists but is a directory"); + } + + FileInputStream fis = null; + FileOutputStream fos = null; + FileChannel input = null; + FileChannel output = null; + try { + fis = new FileInputStream(srcFile); + fos = new FileOutputStream(destFile); + input = fis.getChannel(); + output = fos.getChannel(); + long size = input.size(); + long pos = 0L; + long count; + while (pos < size) { + count = size - pos > 31457280L ? 31457280L : size - pos; + pos += output.transferFrom(input, pos, count); + } + } finally { + IOUtils.closeQuietly(output); + IOUtils.closeQuietly(fos); + IOUtils.closeQuietly(input); + IOUtils.closeQuietly(fis); + } + + if (srcFile.length() != destFile.length()) { + throw new IOException("Failed to copy full contents from '" + srcFile + "' to '" + destFile + "'"); + } + + if (preserveFileDate) { + destFile.setLastModified(srcFile.lastModified()); + } + } + + public static int indexOfLastSeparator(String filename) { + if (filename == null) { + return -1; + } + int lastUnixPos = filename.lastIndexOf(47); + int lastWindowsPos = filename.lastIndexOf(92); + return Math.max(lastUnixPos, lastWindowsPos); + } + + public static int indexOfExtension(String filename) { + if (filename == null) { + return -1; + } + int extensionPos = filename.lastIndexOf(46); + int lastSeparator = indexOfLastSeparator(filename); + return lastSeparator > extensionPos ? -1 : extensionPos; + } + + public static String getName(String filename) { + if (filename == null) { + return null; + } + int index = indexOfLastSeparator(filename); + return filename.substring(index + 1); + } + + public static String getBaseName(String filename) { + return removeExtension(getName(filename)); + } + + public static String getExtension(String filename) { + if (filename == null) { + return null; + } + int index = indexOfExtension(filename); + if (index == -1) { + return ""; + } + return filename.substring(index + 1); + } + + public static String removeExtension(String filename) { + if (filename == null) { + return null; + } + int index = indexOfExtension(filename); + if (index == -1) { + return filename; + } + return filename.substring(0, index); + } + + public static void writeQuietly(File file, CharSequence data) { + try { + write(file, data); + } catch(IOException e) { + HMCLog.warn("Failed to write data to file: " + file, e); + } + } + + public static void write(File file, CharSequence data) + throws IOException { + write(file, data, "UTF-8", false); + } + + public static void write(File file, CharSequence data, boolean append) + throws IOException { + write(file, data, "UTF-8", append); + } + + public static void write(File file, CharSequence data, String encoding) + throws IOException { + write(file, data, encoding, false); + } + + public static void write(File file, CharSequence data, String encoding, boolean append) + throws IOException { + String str = data == null ? null : data.toString(); + writeStringToFile(file, str, encoding, append); + } + + public static void writeStringToFile(File file, String data) + throws IOException { + writeStringToFile(file, data, "UTF-8", false); + } + + public static void writeStringToFile(File file, String data, String encoding) + throws IOException { + writeStringToFile(file, data, encoding, false); + } + + public static void writeStringToFile(File file, String data, String encoding, boolean append) + throws IOException { + OutputStream out = null; + try { + out = openOutputStream(file, append); + IOUtils.write(data, out, encoding); + out.close(); + } finally { + IOUtils.closeQuietly(out); + } + } + + public static FileInputStream openInputStream(File file) + throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (!file.canRead()) { + throw new IOException("File '" + file + "' cannot be read"); + } + } else { + throw new FileNotFoundException("File '" + file + "' does not exist"); + } + return new FileInputStream(file); + } + + public static FileOutputStream openOutputStream(File file) + throws IOException { + return openOutputStream(file, false); + } + + public static FileOutputStream openOutputStream(File file, boolean append) + throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (!file.canWrite()) { + throw new IOException("File '" + file + "' cannot be written to"); + } + } else { + File parent = file.getParentFile(); + if ((parent != null) + && (!parent.mkdirs()) && (!parent.isDirectory())) { + throw new IOException("Directory '" + parent + "' could not be created"); + } + file.createNewFile(); + } + + return new FileOutputStream(file, append); + } + + public static File[] searchSuffix(File dir, String suffix) { + ArrayList al = new ArrayList(); + File[] files = dir.listFiles(); + for(File f : files) + if(f.getName().endsWith(suffix)) al.add(f); + return al.toArray(new File[0]); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Hex.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Hex.java new file mode 100644 index 000000000..016ad0a80 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Hex.java @@ -0,0 +1,124 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.nio.charset.Charset; + +public class Hex { + + public static final Charset DEFAULT_CHARSET = Charsets.UTF_8; + public static final String DEFAULT_CHARSET_NAME = "UTF-8"; + private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + + private static final char[] DIGITS_UPPER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + private final Charset charset; + + public static byte[] decodeHex(char[] data) throws Exception { + int len = data.length; + + if ((len & 0x1) != 0) { + throw new Exception("Odd number of characters."); + } + + byte[] out = new byte[len >> 1]; + + int i = 0; + for (int j = 0; j < len; i++) { + int f = toDigit(data[j], j) << 4; + j++; + f |= toDigit(data[j], j); + j++; + out[i] = (byte) (f & 0xFF); + } + + return out; + } + + public static char[] encodeHex(byte[] data) { + return encodeHex(data, true); + } + + public static char[] encodeHex(byte[] data, boolean toLowerCase) { + return encodeHex(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER); + } + + protected static char[] encodeHex(byte[] data, char[] toDigits) { + int l = data.length; + char[] out = new char[l << 1]; + + int i = 0; + for (int j = 0; i < l; i++) { + out[(j++)] = toDigits[((0xF0 & data[i]) >>> 4)]; + out[(j++)] = toDigits[(0xF & data[i])]; + } + return out; + } + + public static String encodeHexString(byte[] data) { + return new String(encodeHex(data)); + } + + protected static int toDigit(char ch, int index) throws Exception { + int digit = Character.digit(ch, 16); + if (digit == -1) { + throw new Exception("Illegal hexadecimal character " + ch + " at index " + index); + } + return digit; + } + + public Hex() { + this.charset = DEFAULT_CHARSET; + } + + public Hex(Charset charset) { + this.charset = charset; + } + + public Hex(String charsetName) { + this(Charset.forName(charsetName)); + } + + public byte[] decode(byte[] array) throws Exception { + return decodeHex(new String(array, getCharset()).toCharArray()); + } + + public Object decode(Object object) throws Exception { + try { + char[] charArray = (object instanceof String) ? ((String) object).toCharArray() : (char[]) (char[]) object; + return decodeHex(charArray); + } catch (ClassCastException e) { + throw new Exception(e.getMessage(), e); + } + } + + public byte[] encode(byte[] array) { + return encodeHexString(array).getBytes(getCharset()); + } + + public Object encode(Object object) + throws Exception { + try { + byte[] byteArray = (object instanceof String) ? ((String) object).getBytes(getCharset()) : (byte[]) (byte[]) object; + + return encodeHex(byteArray); + } catch (ClassCastException e) { + throw new Exception(e.getMessage(), e); + } + } + + public Charset getCharset() { + return this.charset; + } + + public String getCharsetName() { + return this.charset.name(); + } + + @Override + public String toString() { + return super.toString() + "[charsetName=" + this.charset + "]"; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/IOUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/IOUtils.java new file mode 100644 index 000000000..eea97c40a --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/IOUtils.java @@ -0,0 +1,282 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.ByteArrayOutputStream; +import java.io.Closeable; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; +import java.net.InetAddress; +import java.net.MalformedURLException; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.URL; +import java.net.UnknownHostException; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author huang + */ +public class IOUtils { + + public static String addSeparator(String path) { + if (path == null || path.trim().length() == 0) { + return ""; + } + if (isSeparator(path.charAt(path.length() - 1))) { + return path; + } else { + return path + File.separatorChar; + } + } + + public static boolean isSeparator(char ch) { + return ch == File.separatorChar || ch == '/' || ch == '\\'; + } + + public static String removeLastSeparator(String dir) { + String t = dir.trim(); + char ch = t.charAt(t.length() - 1); + if (isSeparator(ch)) { + return t.substring(0, t.length() - 1); + } + return t; + } + + public static String extractLastDirectory(String dir) { + String t = removeLastSeparator(dir); + int i = t.length() - 1; + while (i >= 0 && !isSeparator(dir.charAt(i))) { + i--; + } + if (i < 0) { + return t; + } + return t.substring(i + 1, (t.length() - i) + (i + 1) - 1); + } + + public static ArrayList findAllFile(File f) { + ArrayList arr = new ArrayList<>(); + if (f.isDirectory()) { + File[] f1 = f.listFiles(); + int len = f1.length; + for (int i = 0; i < len; i++) { + if (f1[i].isFile()) { + arr.add(f1[i].getName()); + } + } + } + return arr; + } + + public static ArrayList findAllFileWithFullName(File f) { + ArrayList arr = new ArrayList<>(); + if (f.isDirectory()) { + File[] f1 = f.listFiles(); + int len = f1.length; + for (int i = 0; i < len; i++) { + if (f1[i].isFile()) { + arr.add(addSeparator(f.getAbsolutePath()) + f1[i].getName()); + } + } + } + return arr; + } + + public static ArrayList findAllDir(File f) { + ArrayList arr = new ArrayList<>(); + if (f.isDirectory()) { + File[] f1 = f.listFiles(); + int len = f1.length; + for (int i = 0; i < len; i++) { + if (f1[i].isDirectory()) { + arr.add(f1[i].getName()); + } + } + } + return arr; + } + + public static File currentDir() { + return new File("."); + } + + public static String currentDirWithSeparator() { + return addSeparator(currentDir().getAbsolutePath()); + } + + public static String getLocalMAC() { + InetAddress addr; + try { + addr = InetAddress.getLocalHost(); + String ip = addr.getHostAddress(); + return getMacAddress(ip); + } catch (UnknownHostException e) { + HMCLog.warn("Failed to get local mac address because of the unknown host.", e); + } + return "ERROR"; + } + + public static String getMacAddress(String host) { + String mac; + StringBuilder sb = new StringBuilder(); + + try { + NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress.getByName(host)); + + byte[] macs = ni.getHardwareAddress(); + + for (int i = 0; i < macs.length; i++) { + mac = Integer.toHexString(macs[i] & 0xFF); + + if (mac.length() == 1) { + mac = '0' + mac; + } + + sb.append(mac).append("-"); + } + + } catch (SocketException e) { + HMCLog.warn("Failed to get mac address because the socket has thrown an exception.", e); + } catch (UnknownHostException e) { + HMCLog.warn("Failed to get mac address because of the unknown host.", e); + } + + mac = sb.toString(); + mac = mac.substring(0, mac.length() - 1); + + return mac; + } + + public static String extractFileName(String fileName) { + File file = new File(fileName); + return file.getName(); + } + + public static String getJavaDir() { + String path = System.getProperty("java.home") + File.separatorChar + "bin" + File.separatorChar; + path = addSeparator(path); + if (OS.os() == OS.WINDOWS && new File(path + "javaw.exe").isFile()) { + return path + "javaw.exe"; + } else { + return path + "java"; + } + } + + public static byte[] readFully(InputStream stream) throws IOException { + byte[] data = new byte[4096]; + ByteArrayOutputStream entryBuffer = new ByteArrayOutputStream(); + int len; + do { + len = stream.read(data); + if (len <= 0) { + continue; + } + entryBuffer.write(data, 0, len); + } while (len != -1); + + return entryBuffer.toByteArray(); + } + + public static void closeQuietly(Reader input) { + closeQuietly((Closeable) input); + } + + public static void closeQuietly(Writer output) { + closeQuietly((Closeable) output); + } + + public static void closeQuietly(InputStream input) { + closeQuietly((Closeable) input); + } + + public static void closeQuietly(OutputStream output) { + closeQuietly((Closeable) output); + } + + public static void closeQuietly(Closeable closeable) { + try { + if (closeable != null) { + closeable.close(); + } + } catch (IOException ioe) { + } + } + + public static void write(byte[] data, OutputStream output) + throws IOException { + if (data != null) { + output.write(data); + } + } + + public static void write(String data, OutputStream output, String encoding) + throws IOException { + if (data != null) { + output.write(data.getBytes(encoding)); + } + } + + public static FileInputStream openInputStream(File file) + throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (!file.canRead()) { + throw new IOException("File '" + file + "' cannot be read"); + } + } else { + throw new FileNotFoundException("File '" + file + "' does not exist"); + } + return new FileInputStream(file); + } + + public static String tryGetCanonicalFolderPath(File file) { + try { + return IOUtils.addSeparator(file.getCanonicalPath()); + } catch (IOException ex) { + return IOUtils.addSeparator(file.getAbsolutePath()); + } + } + + public static File tryGetCanonicalFile(File file) { + try { + return file.getCanonicalFile(); + } catch (IOException ex) { + return file.getAbsoluteFile(); + } + } + + public static File tryGetCanonicalFile(String file) { + return tryGetCanonicalFile(new File(file)); + } + + public static String tryGetCanonicalFilePath(File file) { + try { + return file.getCanonicalPath(); + } catch (IOException ex) { + return file.getAbsolutePath(); + } + } + + public static URL parseURL(String str) { + try { + return new URL(str); + } catch (MalformedURLException ex) { + HMCLog.warn("Failed to parse URL:" + str); + return null; + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JavaProcess.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JavaProcess.java new file mode 100644 index 000000000..133c676d8 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JavaProcess.java @@ -0,0 +1,79 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * + * @author hyh + */ +public class JavaProcess { + + private final List commands; + private final Process process; + private final ArrayList stdOutLines = new ArrayList<>(); + private final ArrayList stdErrLines = new ArrayList<>(); + + public JavaProcess(List commands, Process process, ProcessManager pm) { + this.commands = commands; + this.process = process; + if(pm != null) pm.registerProcess(this); + } + + public JavaProcess(String[] commands, Process process, ProcessManager pm) { + this(Arrays.asList(commands), process, pm); + } + + public Process getRawProcess() { + return this.process; + } + + public List getStartupCommands() { + return this.commands; + } + + public String getStartupCommand() { + return this.process.toString(); + } + + public ArrayList getStdOutLines() { + return this.stdOutLines; + } + + public ArrayList getStdErrLines() { + return this.stdErrLines; + } + + public boolean isRunning() { + try { + this.process.exitValue(); + } catch (IllegalThreadStateException ex) { + return true; + } + + return false; + } + + public int getExitCode() { + try { + return this.process.exitValue(); + } catch (IllegalThreadStateException ex) { + ex.fillInStackTrace(); + throw ex; + } + } + + @Override + public String toString() { + return "JavaProcess[commands=" + this.commands + ", isRunning=" + isRunning() + "]"; + } + + public void stop() { + this.process.destroy(); + } +} \ No newline at end of file diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java new file mode 100644 index 000000000..1fc2db6e2 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java @@ -0,0 +1,180 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public final class JdkVersion { + + public String ver; + /** + * -1 - unkown 0 - 32Bit 1 - 64Bit + */ + public int is64Bit; + + public JdkVersion(String ver, int is64Bit) { + this.ver = ver; + this.is64Bit = is64Bit; + } + + /** + * Constant identifying the 1.5 JVM (Java 5). + */ + public static final int UNKOWN = 2; + /** + * Constant identifying the 1.5 JVM (Java 5). + */ + public static final int JAVA_15 = 2; + /** + * Constant identifying the 1.6 JVM (Java 6). + */ + public static final int JAVA_16 = 3; + /** + * Constant identifying the 1.7 JVM (Java 7). + */ + public static final int JAVA_17 = 4; + /** + * Constant identifying the 1.8 JVM (Java 8). + */ + public static final int JAVA_18 = 5; + /** + * Constant identifying the 1.9 JVM (Java 9). + */ + public static final int JAVA_19 = 6; + + private static final String javaVersion; + private static final int majorJavaVersion; + + static { + javaVersion = System.getProperty("java.version"); + // version String should look like "1.4.2_10" + if (javaVersion.contains("1.9.")) { + majorJavaVersion = JAVA_18; + } else if (javaVersion.contains("1.8.")) { + majorJavaVersion = JAVA_18; + } else if (javaVersion.contains("1.7.")) { + majorJavaVersion = JAVA_17; + } else if (javaVersion.contains("1.6.")) { + majorJavaVersion = JAVA_16; + } else { + // else leave 1.5 as default (it's either 1.5 or unknown) + majorJavaVersion = JAVA_15; + } + } + + /** + * Return the full Java version string, as returned by + * System.getProperty("java.version"). + * + * @return the full Java version string + * @see System#getProperty(String) + */ + public static String getJavaVersion() { + return javaVersion; + } + + /** + * Get the major version code. This means we can do things like + * if (getMajorJavaVersion() < JAVA_14). @retu + * + * + * rn a code comparable to the JAVA_XX codes in this class + * @return + * @see #JAVA_13 + * @see #JAVA_14 + * @see #JAVA_15 + * @see #JAVA_16 + * @see #JAVA_17 + */ + public static int getMajorJavaVersion() { + return majorJavaVersion; + } + + /** + * Convenience method to determine if the current JVM is at least Java 1.6 + * (Java 6). + * + * @return true if the current JVM is at least Java 1.6 + * @deprecated as of Spring 3.0, in favor of reflective checks for the + * specific Java 1.6 classes of interest + * @see #getMajorJavaVersion() + * @see #JAVA_16 + * @see #JAVA_17 + */ + @Deprecated + public static boolean isAtLeastJava16() { + return (majorJavaVersion >= JAVA_16); + } + + public static boolean isJava64Bit() { + String jdkBit = System.getProperty("sun.arch.data.model"); + return jdkBit.contains("64"); + } + + static Pattern p = Pattern.compile("java version \"[1-9]*\\.[1-9]*\\.[0-9]*(.*?)\""); + + public static JdkVersion getJavaVersionFromExecutable(String file) throws IOException { + String[] str = new String[]{file, "-version"}; + ProcessBuilder pb = new ProcessBuilder(str); + JavaProcess jp = new JavaProcess(str, pb.start(), null); + InputStream is = jp.getRawProcess().getErrorStream(); + BufferedReader br = null; + int lineNumber = 0; + String ver = null; + int is64Bit = -1; + try { + br = new BufferedReader(new InputStreamReader(is)); + String line; + jp.getRawProcess().waitFor(); + while ((line = br.readLine()) != null) { + lineNumber++; + switch (lineNumber) { + case 1: + Matcher m = p.matcher(line); + if (m.find()) { + ver = m.group(); + ver = ver.substring("java version \"".length(), ver.length() - 1); + } + break; + case 3: + if (line.contains("64-Bit")) { + is64Bit = 1; + } else { + is64Bit = 0; + } + break; + } + } + } catch (InterruptedException | IOException e) { + HMCLog.warn("Failed to get java version", e); + } finally { + if (br != null) { + br.close(); + } + } + return new JdkVersion(ver, is64Bit); + } + + public void write(File f) throws IOException { + if (ver != null && is64Bit != -1) { + FileUtils.write(f, ver + "\n" + is64Bit); + } + } + + public boolean isEarlyAccess() { + return ver != null && ver.endsWith("-ea"); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java new file mode 100644 index 000000000..a5089d773 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java @@ -0,0 +1,37 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import java.io.OutputStream; +import java.io.PrintStream; +import java.util.ArrayList; + +/** + * + * @author hyh + */ +public class LauncherPrintStream extends PrintStream { + + private final ArrayList> printListeners = new ArrayList<>(); + + public LauncherPrintStream(OutputStream paramOutputStream) { + super(paramOutputStream); + } + + @Override + public final void println(String paramString) { + super.println(paramString); + + for (Consumer a1 : printListeners) { + a1.accept(paramString); + } + } + + public final void addPrintListener(Consumer paraml) { + this.printListeners.add(paraml); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MD5Utils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MD5Utils.java new file mode 100644 index 000000000..2763ff530 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MD5Utils.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author huang + */ +public class MD5Utils { + + private static final char e[] = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f' + }; + + public static String hash(String type, String source) { + try { + StringBuilder stringbuilder; + MessageDigest md = MessageDigest.getInstance(type); + md.update(source.getBytes()); + byte[] bytes = md.digest(); + int s2 = bytes.length; + stringbuilder = new StringBuilder(s2 << 1); + for (int i1 = 0; i1 < s2; i1++) { + stringbuilder.append(e[bytes[i1] >> 4 & 0xf]); + stringbuilder.append(e[bytes[i1] & 0xf]); + } + + return stringbuilder.toString(); + } catch (NoSuchAlgorithmException e) { + HMCLog.err("Failed to get md5", e); + return ""; + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java new file mode 100644 index 000000000..d185266dc --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils; + +/** + * + * @author huang + */ +public class MathUtils { + + public static int parseInt(String s, int def) { + try { + return Integer.parseInt(s); + } catch (Exception e) { + return def; + } + } + + public static boolean canParseInt(String s) { + try { + Integer.parseInt(s); + return true; + } catch (Exception e) { + return false; + } + } + + public static int parseMemory(String s, int def) { + try { + return Integer.parseInt(s); + } catch (Exception e) { + int a = parseInt(s.substring(0, s.length() - 1), def); + if(s.endsWith("g")) return a * 1024; + else if(s.endsWith("k")) return a / 1024; + else return a; + } + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java new file mode 100644 index 000000000..9d6e00d1d --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java @@ -0,0 +1,114 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import javax.swing.JOptionPane; +import org.jackhuang.hellominecraft.C; + +/** + * @author hyh + */ +public class MessageBox +{ + private static String Title = C.i18n("message.info"); + /** + * Buttons: OK + */ + public static final int DEFAULT_OPTION = -1; + /** + * Buttons: Yes No + */ + public static final int YES_NO_OPTION = 10; + /** + * Buttons: Yes No Cancel + */ + public static final int YES_NO_CANCEL_OPTION =11; + /** + * Buttons: OK Cancel + */ + public static final int OK_CANCEL_OPTION = 12; + /** + * User Operation: Yes + */ + public static final int YES_OPTION = 0; + /** + * User Operation: No + */ + public static final int NO_OPTION = 1; + /** + * User Operation: Cancel + */ + public static final int CANCEL_OPTION = 2; + /** + * User Operation: OK + */ + public static final int OK_OPTION = 0; + /** + * User Operation: Closed Message Box + */ + public static final int CLOSED_OPTION = -1; + /** + * Message Box Type: Error + */ + public static final int ERROR_MESSAGE = 0; + /** + * Message Box Type: Info + */ + public static final int INFORMATION_MESSAGE = 1; + /** + * Message Box Type: Warning + */ + public static final int WARNING_MESSAGE = 2; + /** + * Message Box Type: Question + */ + public static final int QUESTION_MESSAGE = 3; + /** + * Message Box Type: Plain + */ + public static final int PLAIN_MESSAGE = -1; + + /** + * Show MsgBox with title and options + * @param Msg The Message + * @param Title The title of MsgBox. + * @param Option The type of MsgBox. + * @return user operation. + */ + public static int Show(String Msg, String Title, int Option) + { + switch(Option) + { + case YES_NO_OPTION: + case YES_NO_CANCEL_OPTION: + case OK_CANCEL_OPTION: + return JOptionPane.showConfirmDialog(null, Msg, Title, Option - 10); + default: + JOptionPane.showMessageDialog(null, Msg, Title, Option); + } + return 0; + } + + /** + * Show MsgBox with options + * @param Msg The Message + * @param Option The type of MsgBox. + * @return User Operation + */ + public static int Show(String Msg, int Option) + { + return Show(Msg, Title, Option); + } + + /** + * Show Default MsgBox + * @param Msg The Message + * @return User Operation + */ + public static int Show(String Msg) + { + return Show(Msg, Title, INFORMATION_MESSAGE); + } +} \ No newline at end of file diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MinecraftVersionRequest.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MinecraftVersionRequest.java new file mode 100644 index 000000000..ee8c26e92 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MinecraftVersionRequest.java @@ -0,0 +1,48 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import org.jackhuang.hellominecraft.C; + +/** + * @author hyh + */ +public class MinecraftVersionRequest { + public static final int Unkown = 0, Invaild = 1, InvaildJar = 2, + Modified = 3, OK = 4, NotFound = 5, NotReadable = 6, NotAFile = 7; + public int type; + public String version; + + public static String getResponse(MinecraftVersionRequest minecraftVersion) { + String text = ""; + switch (minecraftVersion.type) { + case MinecraftVersionRequest.Invaild: + text = C.i18n("minecraft.invalid"); + break; + case MinecraftVersionRequest.InvaildJar: + text = C.i18n("minecraft.invalid_jar"); + break; + case MinecraftVersionRequest.NotAFile: + text = C.i18n("minecraft.not_a_file"); + break; + case MinecraftVersionRequest.NotFound: + text = C.i18n("minecraft.not_found"); + break; + case MinecraftVersionRequest.NotReadable: + text = C.i18n("minecraft.not_readable"); + break; + case MinecraftVersionRequest.Modified: + text = C.i18n("minecraft.modified") + " "; + case MinecraftVersionRequest.OK: + text += minecraftVersion.version; + break; + case MinecraftVersionRequest.Unkown: + default: + text = "???"; + break; + } + return text; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java new file mode 100644 index 000000000..179734ea5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java @@ -0,0 +1,175 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.Map; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author huang + */ +public final class NetUtils { + + public static byte[] getBytesFromStream(InputStream is) throws IOException { + ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream(); + byte[] arrayOfByte1 = new byte[1024]; + int i; + while ((i = is.read(arrayOfByte1)) >= 0) { + localByteArrayOutputStream.write(arrayOfByte1, 0, i); + } + is.close(); + return localByteArrayOutputStream.toByteArray(); + } + + public static String getStreamContent(InputStream is) throws IOException { + return getStreamContent(is, DEFAULT_CHARSET); + } + + public static String getStreamContent(InputStream is, String encoding) + throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(is, encoding)); + String result = ""; + String line; + while ((line = br.readLine()) != null) { + result += line + "\n"; + } + br.close(); + if(result.length() < 1) return ""; + else return result.substring(0, result.length() - 1); + } + + public static String doGet(String url, String encoding) throws IOException { + return getStreamContent(new URL(url).openConnection().getInputStream()); + } + + public static String doGet(String url) throws IOException { + return doGet(url, DEFAULT_CHARSET); + } + + /** + * Sends an HTTP GET request to a url + * + * @param endpoint - The URL of the server. (Example: " + * http://www.yahoo.com/search") + * @param requestParameters - all the request parameters (Example: + * "param1=val1¶m2=val2"). Note: This method will add the question mark + * (?) to the request - DO NOT add it yourself + * @return - The response from the end point + */ + public static String sendGetRequest(String endpoint, + String requestParameters) { + String result = null; + if (endpoint.startsWith("http://")) { + // Send a GET request to the servlet + try { + // Construct data + StringBuilder data = new StringBuilder(); + // Send data + String urlStr = endpoint; + if (requestParameters != null && requestParameters.length() > 0) { + urlStr += "?" + requestParameters; + } + URL url = new URL(urlStr); + URLConnection conn = url.openConnection(); + + // Get the response + InputStreamReader r = new InputStreamReader(conn.getInputStream()); + StringBuffer sb; + BufferedReader rd = new BufferedReader(r); + sb = new StringBuffer(); + String line; + while ((line = rd.readLine()) != null) + sb.append(line); + result = sb.toString(); + } catch (Exception e) { + HMCLog.warn("Failed to send get request.", e); + } + } + return result; + } + + public static String post(String url, Map params) { + URL u = null; + HttpURLConnection con = null; + StringBuilder sb = new StringBuilder(); + if (params != null) { + for (Map.Entry e : params.entrySet()) { + sb.append(e.getKey()); + sb.append("="); + sb.append(e.getValue()); + sb.append("&"); + } + sb = new StringBuilder(sb.substring(0, sb.length() - 1)); + } + System.out.println("send_url:" + url); + System.out.println("send_data:" + sb.toString()); + try { + u = new URL(url); + con = (HttpURLConnection) u.openConnection(); + con.setRequestMethod(METHOD_POST); + con.setDoOutput(true); + con.setDoInput(true); + con.setUseCaches(false); + con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), DEFAULT_CHARSET); + osw.write(sb.toString()); + osw.flush(); + osw.close(); + } catch (Exception e) { + HMCLog.warn("Failed to post.", e); + } + StringBuilder buffer = new StringBuilder(); + try { + BufferedReader br = new BufferedReader(new InputStreamReader(con + .getInputStream(), DEFAULT_CHARSET)); + String temp; + while ((temp = br.readLine()) != null) { + buffer.append(temp); + buffer.append("\n"); + } + } catch (Exception e) { + e.printStackTrace(); + } + + con.disconnect(); + + return buffer.toString(); + } + private static final String METHOD_POST = "POST"; + private static final String DEFAULT_CHARSET = "UTF-8"; + + public static URL constantURL(String url) { + try { + return new URL(url); + } catch (MalformedURLException ex) { + HMCLog.err("Failed to get url instance: " + url, ex); + return null; + } + } + + public static URL concatenateURL(URL url, String query) { + try { + if ((url.getQuery() != null) && (url.getQuery().length() > 0)) { + return new URL(url.getProtocol(), url.getHost(), url.getPort(), new StringBuilder().append(url.getFile()).append("&").append(query).toString()); + } + return new URL(url.getProtocol(), url.getHost(), url.getPort(), new StringBuilder().append(url.getFile()).append("?").append(query).toString()); + } catch (MalformedURLException ex) { + throw new IllegalArgumentException("Could not concatenate given URL with GET arguments!", ex); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/OS.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/OS.java new file mode 100644 index 000000000..f48157fe5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/OS.java @@ -0,0 +1,63 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import com.sun.management.OperatingSystemMXBean; +import java.lang.management.ManagementFactory; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * @author hyh + */ +public enum OS { + + LINUX, + WINDOWS, + OSX, + UNKOWN; + + public static OS os() { + String str; + if ((str = System.getProperty("os.name").toLowerCase()) + .contains("win")) { + return OS.WINDOWS; + } + if (str.contains("mac")) { + return OS.OSX; + } + if (str.contains("solaris")) { + return OS.LINUX; + } + if (str.contains("sunos")) { + return OS.LINUX; + } + if (str.contains("linux")) { + return OS.LINUX; + } + if (str.contains("unix")) { + return OS.LINUX; + } + return OS.UNKOWN; + } + + public static boolean is64Bit() { + String arch = System.getProperty("os.arch"); + return arch.contains("64"); + } + + /** + * @return Free Physical Memory Size (Byte) + */ + public static long getTotalPhysicalMemory() { + try { + OperatingSystemMXBean o = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + return o.getTotalPhysicalMemorySize(); + } catch(Throwable t) { + HMCLog.warn("Failed to get total physical memory size", t); + return -1; + } + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java new file mode 100644 index 000000000..f0b3644fe --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java @@ -0,0 +1,20 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +/** + * + * @author hyh + */ +public class Pair { + public K key; + public V value; + + public Pair(K k, V v) { + key = k; + value = v; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessManager.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessManager.java new file mode 100644 index 000000000..8ed34a30f --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessManager.java @@ -0,0 +1,32 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.util.HashSet; + +/** + * + * @author huangyuhui + */ +public class ProcessManager { + + private static final HashSet gameProcesses = new HashSet(); + + public void registerProcess(JavaProcess jp) { + gameProcesses.add(jp); + } + + public void stopAllProcesses() { + for(JavaProcess jp : gameProcesses) { + jp.stop(); + } + gameProcesses.clear(); + } + + public void onProcessStopped(JavaProcess p) { + gameProcesses.remove(p); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessThread.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessThread.java new file mode 100644 index 000000000..f8e9e4a37 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ProcessThread.java @@ -0,0 +1,92 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public class ProcessThread extends Thread { + + JavaProcess p; + boolean readError = false, enableReading = true; + + public final EventHandler printlnEvent = new EventHandler(this); + public final EventHandler stopEvent = new EventHandler(this); + + public ProcessThread(JavaProcess process, boolean readError, boolean enableReading) { + p = process; + this.readError = readError; + this.enableReading = enableReading; + } + + public JavaProcess getProcess() { + return p; + } + + @Override + public void run() { + InputStream in = null; + BufferedReader br = null; + if (enableReading) { + in = readError ? p.getRawProcess().getErrorStream() : p.getRawProcess().getInputStream(); + } + try { + if (enableReading) { + try { + br = new BufferedReader(new InputStreamReader(in, System.getProperty("sun.jnu.encoding", "UTF-8"))); + } catch (UnsupportedEncodingException ex) { + HMCLog.warn("Unsupported encoding: " + System.getProperty("sun.jnu.encoding", "UTF-8"), ex); + br = new BufferedReader(new InputStreamReader(in)); + } + } + + String line; + while (p.isRunning()) { + if (enableReading) { + while ((line = br.readLine()) != null) { + printlnEvent.execute(line); + if (readError) { + System.err.println(line); + p.getStdErrLines().add(line); + } else { + System.out.println(line); + p.getStdOutLines().add(line); + } + } + } else { + try { + Thread.sleep(1); + } catch (Exception e) { + } + } + } + if (enableReading) { + while ((line = br.readLine()) != null) { + printlnEvent.execute(line); + if (readError) { + System.err.println(line); + p.getStdErrLines().add(line); + } else { + System.out.println(line); + p.getStdOutLines().add(line); + } + } + } + stopEvent.execute(p); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void stopped() { + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java new file mode 100644 index 000000000..478393df9 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java @@ -0,0 +1,29 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * + * @author hyh + */ +public class ReflectUtils { + + public static Set> getClasses(Class c) { + HashSet set = new HashSet(); + set.addAll(Arrays.asList(c.getInterfaces())); + while(c != Object.class) { + set.add(c); + c = c.getSuperclass(); + } + return set; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java new file mode 100644 index 000000000..3c8757a43 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java @@ -0,0 +1,214 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.awt.Dimension; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.StringTokenizer; + +/** + * + * @author huang + */ +public final class StrUtils { + + public static String makeCommand(List cmd) { + StringBuilder cmdbuf = new StringBuilder(120); + for (int i = 0; i < cmd.size(); i++) { + if (i > 0) { + cmdbuf.append(' '); + } + String s = cmd.get(i); + if (s.indexOf(' ') >= 0 || s.indexOf('\t') >= 0) { + if (s.charAt(0) != '"') { + cmdbuf.append('"'); + cmdbuf.append(s); + if (s.endsWith("\\")) { + cmdbuf.append("\\"); + } + cmdbuf.append('"'); + } else if (s.endsWith("\"")) { + /* The argument has already been quoted. */ + cmdbuf.append(s); + } else { + /* Unmatched quote for the argument. */ + throw new IllegalArgumentException(); + } + } else { + cmdbuf.append(s); + } + } + String str = cmdbuf.toString(); + + return str; + } + + public static boolean startsWith(String base, String match) { + return base != null && base.startsWith(match); + } + + public static boolean startsWithOne(String[] a, String match) { + if (a == null) { + return false; + } + for (String b : a) { + if (startsWith(match, b)) { + return true; + } + } + return false; + } + + public static boolean equalsOne(String base, String... a) { + for (String s : a) { + if (base.equals(s)) { + return true; + } + } + return false; + } + + public static boolean containsOne(List base, List match) { + for (String a : base) { + for (String b : match) { + if (a.toLowerCase().contains(b.toLowerCase())) { + return true; + } + } + } + return false; + } + + public static int getCharShowTime(String s, char c) { + int res = 0; + for (int i = 0; i < s.length(); i++) { + if (s.charAt(i) == c) { + res++; + } + } + return res; + } + + public static String formatVersion(String ver) { + if (isBlank(ver)) { + return null; + } else { + for(char ch : ver.toCharArray()) { + if((ch < '0' || ch > '9') && ch != '.') return null; + } + } + int i = getCharShowTime(ver, '.'); + if (i == 1) { + return ver + ".0"; + } else { + return ver; + } + } + + public static String parseParams(String addBefore, Collection paramArrayOfObject, String paramString) { + return parseParams(addBefore, paramArrayOfObject.toArray(), paramString); + } + + public static String parseParams(String addBefore, Object[] paramArrayOfObject, String paramString) { + if (paramArrayOfObject == null) { + return ""; + } + StringBuilder localStringBuffer = new StringBuilder(); + for (int i = 0; i < paramArrayOfObject.length; i++) { + Object localObject = paramArrayOfObject[i]; + if (i > 0) { + localStringBuffer.append(addBefore).append(paramString); + } + if (localObject == null) { + localStringBuffer.append("null"); + } else if (localObject.getClass().isArray()) { + localStringBuffer.append("["); + + if ((localObject instanceof Object[])) { + Object[] arrayOfObject = (Object[]) localObject; + localStringBuffer.append(parseParams(addBefore, arrayOfObject, paramString)); + } else { + for (int j = 0; j < Array.getLength(localObject); j++) { + if (j > 0) { + localStringBuffer.append(paramString); + } + localStringBuffer.append(addBefore).append(Array.get(localObject, j)); + } + } + localStringBuffer.append("]"); + } else { + localStringBuffer.append(addBefore).append(paramArrayOfObject[i]); + } + } + return localStringBuffer.toString(); + } + + public static boolean isEquals(String base, String to) { + if (base == null) { + return (to == null); + } else { + return base.equals(to); + } + } + + public static Dimension parseDimension(String str) { + String[] tokenized = tokenize(str, "x,"); + if (tokenized.length != 2) { + return null; + } + int i = MathUtils.parseInt(tokenized[0], -1); + int j = MathUtils.parseInt(tokenized[1], -1); + if ((i < 0) || (j < 0)) { + return null; + } + return new Dimension(i, j); + } + + public static String[] tokenize(String paramString1) { + return tokenize(paramString1, " \t\n\r\f"); + } + + public static String[] tokenize(String paramString1, String paramString2) { + ArrayList localArrayList = new ArrayList(); + StringTokenizer tokenizer = new StringTokenizer(paramString1, paramString2); + while (tokenizer.hasMoreTokens()) { + paramString2 = tokenizer.nextToken(); + localArrayList.add(paramString2); + } + + return (String[]) localArrayList.toArray(new String[localArrayList.size()]); + } + + public static String trimExtension(String filename) { + if ((filename != null) && (filename.length() > 0)) { + int i = filename.lastIndexOf('.'); + if ((i > -1) && (i < (filename.length()))) { + return filename.substring(0, i); + } + } + return filename; + } + + public static boolean isBlank(String s) { + return s == null || s.trim().length() <= 0; + } + + public static boolean isNotBlank(String s) { + return !isBlank(s); + } + + public static String getStackTrace(Throwable t) { + StringWriter trace = new StringWriter(); + PrintWriter writer = new PrintWriter(trace); + t.printStackTrace(writer); + return trace.toString(); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java new file mode 100644 index 000000000..594868a90 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java @@ -0,0 +1,90 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils; + +import java.awt.Dimension; +import java.awt.Toolkit; +import java.awt.Window; +import java.net.URI; +import javax.swing.DefaultListModel; +import javax.swing.JList; +import javax.swing.JScrollBar; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.table.DefaultTableModel; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author huang + */ +public class SwingUtils { + + public static DefaultTableModel makeDefaultTableModel(String[] titleA, final Class[] typesA, final boolean[] canEditA) { + return new javax.swing.table.DefaultTableModel( + new Object[][]{}, + titleA) { + Class[] types = typesA; + boolean[] canEdit = canEditA; + + @Override + public Class getColumnClass(int columnIndex) { + return types[columnIndex]; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + }; + } + + public static void openLink(URI link) { + try { + java.awt.Desktop.getDesktop().browse(link); + } catch (Throwable e) { + HMCLog.warn("Failed to open link: " + link, e); + } + } + + public static void moveEnd(JTextArea tf) { + int position = tf.getText().length(); + tf.setCaretPosition(position); + } + + public static void moveEnd(JScrollPane pane) { + JScrollBar bar = pane.getVerticalScrollBar(); + bar.setValue(bar.getMaximum()); + } + + public static DefaultListModel getDefaultListModel(JList list) { + return (DefaultListModel)list.getModel(); + } + + public static void appendLast(JList list, Object element) { + getDefaultListModel(list).addElement(element); + } + + public static void replaceLast(JList list, Object element) { + DefaultListModel model = getDefaultListModel(list); + model.set(model.getSize()-1, element); + } + + public static void clear(JList list) { + list.setModel(new DefaultListModel()); + } + + public static void clearDefaultTable(JTable table) { + DefaultTableModel model = (DefaultTableModel)table.getModel(); + while(model.getRowCount() > 0) { + model.removeRow(0); + } + table.updateUI(); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/TextComponentOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/TextComponentOutputStream.java new file mode 100644 index 000000000..128bb3a32 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/TextComponentOutputStream.java @@ -0,0 +1,54 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import java.io.OutputStream; +import javax.swing.SwingUtilities; +import javax.swing.text.JTextComponent; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public class TextComponentOutputStream extends OutputStream { + + private JTextComponent txt; + + public TextComponentOutputStream(JTextComponent paramJTextComponent) { + txt = paramJTextComponent; + } + + @Override + public final void write(byte[] paramArrayOfByte) { + write(paramArrayOfByte, 0, paramArrayOfByte.length); + } + + @Override + public final void write(byte[] paramArrayOfByte, int off, int len) { + append(new String(paramArrayOfByte, off, len)); + } + + private void append(final String newString) { + try { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + String t = txt.getText() + newString.replace("\t", " "); + txt.setText(t); + txt.setCaretPosition(t.length()); + } + }); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + @Override + public final void write(int paramInt) { + append(new String(new byte[]{(byte) paramInt})); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java new file mode 100644 index 000000000..5a7e21472 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java @@ -0,0 +1,68 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public final class UpdateChecker extends Thread { + public static boolean OUT_DATED = false; + public VersionNumber base; + public String type; + public boolean continueUpdate; + public DoneListener0 dl; + + public UpdateChecker(VersionNumber base, String type, boolean continueUpdate, DoneListener0 dl) { + super("UpdateChecker"); + this.base = base; + this.type = type; + this.continueUpdate = continueUpdate; + this.dl = dl; + } + + VersionNumber value; + + @Override + public void run() { + + String url = "http://huangyuhui.duapp.com/info.php?type=" + type, version; + try { + version = NetUtils.doGet(url); + } catch (Exception e) { + HMCLog.warn("Failed to get update url.", e); + return; + } + value = VersionNumber.check(version); + if (!continueUpdate) { + return; + } + process(false); + } + + public void process(boolean showMessage) { + if (value == null) { + HMCLog.warn("Failed to check update..."); + if(showMessage) { + MessageBox.Show(C.i18n("update.failed")); + } + } else { + if (VersionNumber.isOlder(base, value)) { + OUT_DATED = true; + dl.onDone(); + } + } + } + + public VersionNumber getNewVersion() { + return value; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java new file mode 100644 index 000000000..26ffa2d5a --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java @@ -0,0 +1,179 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import com.google.gson.GsonBuilder; +import com.sun.management.OperatingSystemMXBean; +import java.awt.Desktop; +import java.awt.Image; +import java.awt.Toolkit; +import java.awt.datatransfer.StringSelection; +import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.lang.management.ManagementFactory; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLDecoder; +import java.util.Random; +import javax.swing.ImageIcon; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * @author hyh + */ +public final class Utils { + + private static final GsonBuilder gsonBuilder = new GsonBuilder().setPrettyPrinting(); + public static GsonBuilder getDefaultGsonBuilder() { + return gsonBuilder; + } + + public static String[] getURL() { + URL[] urls = ((URLClassLoader) Utils.class.getClassLoader()).getURLs(); + String[] urlStrings = new String[urls.length]; + for (int i = 0; i < urlStrings.length; i++) { + try { + urlStrings[i] = URLDecoder.decode(urls[i].getPath(), "UTF-8"); + } catch (UnsupportedEncodingException ex) { + HMCLog.warn("Unsupported UTF-8 encoding", ex); + } + } + return urlStrings; + } + + public static void addDir(String s) throws IOException { + try { + Field field = ClassLoader.class.getDeclaredField("usr_paths"); + field.setAccessible(true); + String[] paths = (String[]) field.get(null); + for (int i = 0; i < paths.length; i++) { + if (s.equals(paths[i])) { + return; + } + } + String[] tmp = new String[paths.length + 1]; + System.arraycopy(paths, 0, tmp, 0, paths.length); + tmp[paths.length] = s; + field.set(null, tmp); + } catch (IllegalAccessException e) { + throw new IOException("Failed to get permissions to set library path"); + } catch (NoSuchFieldException e) { + throw new IOException("Failed to get field handle to set library path"); + } + } + + public static int getSuggestedMemorySize() { + try { + OperatingSystemMXBean osmb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + int memory = (int)(osmb.getTotalPhysicalMemorySize() / 1024 / 1024) / 4; + memory = Math.round((float)memory/128.0f)*128; + return memory; + } catch(Throwable t) { + HMCLog.warn("Failed to get total memory size, use 1024MB.", t); + return 1024; + } + } + + public static void setClipborad(String text) { + Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(text), null); + } + + public static boolean openLink(String url) { + try { + Desktop.getDesktop().browse(new URI(url)); + return true; + } catch (Exception ex) { + HMCLog.warn("Failed to open link:" + url, ex); + return false; + } + } + + public static void openFolder(File f) { + try { + f.mkdirs(); + java.awt.Desktop.getDesktop().open(f); + } catch (Exception ex) { + MessageBox.Show(C.i18n("message.cannot_open_explorer") + ex.getMessage()); + HMCLog.warn("Failed to open folder:" + f, ex); + } + } + + public static ImageIcon scaleImage(ImageIcon i, int x, int y) { + return new ImageIcon(i.getImage().getScaledInstance(x, y, Image.SCALE_SMOOTH)); + } + + public static ImageIcon searchBackgroundImage(ImageIcon background, String bgpath, int width, int height) { + Random r = new Random(); + boolean loaded = false; + + // bgpath + if (StrUtils.isNotBlank(bgpath) && !loaded) { + String[] backgroundPath = bgpath.split(";"); + if(backgroundPath.length > 0) { + int index = r.nextInt(backgroundPath.length); + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundPath[index]).getScaledInstance(width, height, Image.SCALE_DEFAULT)); + HMCLog.log("Prepared background image in bgpath."); + loaded = true; + } + } + + // bgskin + if (!loaded) { + File backgroundImageFile = new File("bg"); + if (backgroundImageFile.exists() && backgroundImageFile.isDirectory()) { + String[] backgroundPath = backgroundImageFile.list(); + if(backgroundPath.length > 0) { + int index = r.nextInt(backgroundPath.length); + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage("bg" + File.separator + backgroundPath[index]).getScaledInstance(width, height, Image.SCALE_DEFAULT)); + HMCLog.log("Prepared background image in bgskin folder."); + loaded = true; + } + } + } + + // background.png + if (!loaded) { + File backgroundImageFile = new File("background.png"); + if (backgroundImageFile.exists()) { + loaded = true; + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundImageFile.getAbsolutePath()).getScaledInstance(width, height, Image.SCALE_DEFAULT)); + HMCLog.log("Prepared background image in background.png."); + } + } + + // background.jpg + if (!loaded) { + File backgroundImageFile = new File("background.jpg"); + if (backgroundImageFile.exists()) { + loaded = true; + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundImageFile.getAbsolutePath()).getScaledInstance(width, height, Image.SCALE_DEFAULT)); + HMCLog.log("Prepared background image in background.jpg."); + } + } + + return background; + } + + /** + * In order to fight against the permission manager. + */ + public static void shutdownForcely() { + try { + Class z = Class.forName("java.lang.Shutdown"); + Method exit = z.getDeclaredMethod("exit", int.class); + exit.setAccessible(true); + exit.invoke(z, 0); + } catch(Exception e) { + MessageBox.Show(C.i18n("launcher.exit_failed")); + e.printStackTrace(); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Validate.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Validate.java new file mode 100644 index 000000000..87f56c4cf --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Validate.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils; + +/** + * + * @author hyh + */ +public final class Validate { + + public static T notNull(T o) { + if(o == null) { + throw new IllegalArgumentException("The validated object is null"); + } + return o; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java new file mode 100644 index 000000000..773f11224 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java @@ -0,0 +1,67 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils; + +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public final class VersionNumber implements Comparable { + + public byte firstVer, secondVer, thirdVer; + + public VersionNumber(byte a, byte b, byte c) { + firstVer = a; secondVer = b; thirdVer = c; + } + + public static VersionNumber check(String data) { + while (!data.isEmpty() && ((data.charAt(0) < '0' || data.charAt(0) > '9') && data.charAt(0) != '.')) { + data = data.substring(1); + } + if (data.isEmpty()) { + return null; + } + VersionNumber ur = null; + String[] ver = data.split("\\."); + if (ver.length == 3) { + byte v1, v2, v3; + try { + v1 = Byte.parseByte(ver[0]); + v2 = Byte.parseByte(ver[1]); + v3 = Byte.parseByte(ver[2]); + ur = new VersionNumber(v1, v2, v3); + return ur; + } catch (Exception e) { + HMCLog.warn("Failed to parse the version", e); + } + } + return null; + } + + public static boolean isOlder(VersionNumber a, VersionNumber b) { + if (a.firstVer < b.firstVer) { + return true; + } else if (a.firstVer == b.firstVer) { + if (a.secondVer < b.secondVer) { + return true; + } else if (a.secondVer == b.secondVer) { + if (a.thirdVer < b.thirdVer) { + return true; + } + } + } + return false; + } + + @Override + public int compareTo(VersionNumber o) { + if(isOlder(this, o)) return -1; + else if(isOlder(o, this)) return 1; + else return 0; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java new file mode 100644 index 000000000..7d3aac131 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author huangyuhui + */ +public interface BiFunction { + C apply(A a, B b); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java new file mode 100644 index 000000000..34bc7fdf4 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author huangyuhui + */ +public interface Consumer { + void accept(T t); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0.java new file mode 100644 index 000000000..58bf079e5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author hyh + */ +public interface DoneListener0 { + void onDone(); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0Return.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0Return.java new file mode 100644 index 000000000..7af71ccbf --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener0Return.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author hyh + */ +public interface DoneListener0Return { + T onDone(); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener2.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener2.java new file mode 100644 index 000000000..711267e40 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener2.java @@ -0,0 +1,12 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * @author hyh + */ +public interface DoneListener2 { + void onDone(V value, V2 value2); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener3.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener3.java new file mode 100644 index 000000000..7170f96f3 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/DoneListener3.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author hyh + */ +public interface DoneListener3 { + void onDone(V1 v1, V2 v2, V3 v3); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseDoneListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseDoneListener.java new file mode 100644 index 000000000..6005240c5 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseDoneListener.java @@ -0,0 +1,19 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author hyh + */ +public class FalseDoneListener implements DoneListener0Return { + + @Override + public Boolean onDone() { + return Boolean.FALSE; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java new file mode 100644 index 000000000..5b0eea76e --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author huangyuhui + */ +public interface Function { + R apply(T t); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java new file mode 100644 index 000000000..f5ac8ab46 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author hyh + */ +public interface Predicate { + boolean apply(T t); +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueDoneListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueDoneListener.java new file mode 100644 index 000000000..db8d3b2af --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueDoneListener.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.functions; + +/** + * + * @author hyh + */ +public class TrueDoneListener implements DoneListener0Return { + + public static final TrueDoneListener instance = new TrueDoneListener(); + + private TrueDoneListener(){} + + @Override + public Boolean onDone() { + return Boolean.TRUE; + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/CollectionUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/CollectionUtils.java new file mode 100644 index 000000000..53247deed --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/CollectionUtils.java @@ -0,0 +1,39 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.tinystream; + +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.utils.functions.Predicate; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +/** + * + * @author hyh + */ +public final class CollectionUtils { + public static void forEach(Collection coll, Consumer p) { + for(T t : coll) p.accept(t); + } + + public static Collection sortOut(Collection coll, Predicate p) { + ArrayList newColl = new ArrayList<>(); + forEach(coll, t -> { if(p.apply(t)) newColl.add(t); }); + return newColl; + } + + public static boolean removeIf(Collection coll, Predicate p) { + boolean removed = false; + final Iterator each = coll.iterator(); + while (each.hasNext()) + if (p.apply(each.next())) { + each.remove(); + removed = true; + } + return removed; + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java new file mode 100644 index 000000000..d94b3ea4a --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java @@ -0,0 +1,91 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.utils.tinystream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import org.jackhuang.hellominecraft.utils.functions.BiFunction; +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.utils.functions.Function; +import org.jackhuang.hellominecraft.utils.functions.Predicate; + +/** + * + * @author huangyuhui + */ +public class Stream { + + List internal; + + public Stream(Collection internal) { + this.internal = new ArrayList<>(internal); + } + + protected Stream() { + } + + protected static Stream of(List a) { + Stream b = new Stream<>(); + b.internal = a; + return b; + } + + public Stream forEach(Consumer p) { + for (T t : internal) p.accept(t); + return this; + } + + public Stream filter(Predicate p) { + ArrayList newList = new ArrayList<>(); + forEach(a -> { + if (p.apply(a)) newList.add(a); + }); + internal = newList; + return this; + } + + public int count() { + return internal.size(); + } + + public Stream distinct() { + internal = new ArrayList<>(new HashSet<>(internal)); + return this; + } + + public Stream map(Function func) { + List newList = new ArrayList<>(internal.size()); + forEach(a -> newList.add(func.apply(a))); + return of(newList); + } + + public Stream sorted(Comparator c) { + Collections.sort(internal, c); + return this; + } + + public U reduce(U identity, BiFunction accumulator) { + for (T t : internal) identity = accumulator.apply(identity, t); + return identity; + } + + public boolean anyMatch(Predicate p) { + return map(t -> p.apply(t)).reduce(false, (accumulator, _item) -> accumulator | _item); + } + + public boolean allMatch(Predicate p) { + return map(t -> p.apply(t)).reduce(true, (accumulator, _item) -> accumulator & _item); + } + + public T findFirst() { + return internal.isEmpty() ? null : internal.get(0); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java new file mode 100644 index 000000000..71cc44530 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java @@ -0,0 +1,15 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.version; + +/** + * + * @author hyh + */ +public class MinecraftRemoteLatestVersion { + + public String snapshot, release; + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersion.java new file mode 100644 index 000000000..98f879413 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersion.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.version; + +/** + * + * @author hyh + */ +public class MinecraftRemoteVersion { + + public String id, time, releaseTime, type; +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java new file mode 100644 index 000000000..6eed696ac --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java @@ -0,0 +1,23 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.version; + +import java.util.ArrayList; +import org.jackhuang.hellominecraft.C; + +/** + * + * @author hyh + */ +public class MinecraftRemoteVersions { + + public ArrayList versions; + public MinecraftRemoteLatestVersion latest; + + public static MinecraftRemoteVersions fromJson(String s) { + return C.gson.fromJson(s, MinecraftRemoteVersions.class); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java new file mode 100644 index 000000000..79c293065 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java @@ -0,0 +1,87 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.awt.image.BufferedImageOp; +import java.awt.image.ColorModel; +import java.awt.image.Raster; +import java.awt.image.WritableRaster; + +public abstract class AbstractFilter + implements BufferedImageOp +{ + public abstract BufferedImage filter(BufferedImage paramBufferedImage1, BufferedImage paramBufferedImage2); + + public Rectangle2D getBounds2D(BufferedImage src) + { + return new Rectangle(0, 0, src.getWidth(), src.getHeight()); + } + + public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) + { + if (destCM == null) { + destCM = src.getColorModel(); + } + + return new BufferedImage(destCM, destCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight()), destCM.isAlphaPremultiplied(), null); + } + + public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) + { + return (Point2D)srcPt.clone(); + } + + public RenderingHints getRenderingHints() + { + return null; + } + + protected int[] getPixels(BufferedImage img, int x, int y, int w, int h, int[] pixels) + { + if ((w == 0) || (h == 0)) { + return new int[0]; + } + + if (pixels == null) + pixels = new int[w * h]; + else if (pixels.length < w * h) { + throw new IllegalArgumentException("pixels array must have a length >= w*h"); + } + + int imageType = img.getType(); + if ((imageType == 2) || (imageType == 1)) + { + Raster raster = img.getRaster(); + return (int[])(int[])raster.getDataElements(x, y, w, h, pixels); + } + + return img.getRGB(x, y, w, h, pixels, 0, w); + } + + protected void setPixels(BufferedImage img, int x, int y, int w, int h, int[] pixels) + { + if ((pixels == null) || (w == 0) || (h == 0)) + return; + if (pixels.length < w * h) { + throw new IllegalArgumentException("pixels array must have a length >= w*h"); + } + + int imageType = img.getType(); + if ((imageType == 2) || (imageType == 1)) + { + WritableRaster raster = img.getRaster(); + raster.setDataElements(x, y, w, h, pixels); + } + else { + img.setRGB(x, y, w, h, pixels, 0, w); + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java new file mode 100644 index 000000000..89ee20050 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +import java.awt.Color; + +/** + * + * @author hyh + */ +public class BasicColors { + + private static Color getWebColor(String c){ + return new Color( + Integer.parseInt(c.substring(0,2),16), + Integer.parseInt(c.substring(2,4),16), + Integer.parseInt(c.substring(4,6),16) + ); + } + + public static final Color COLOR_RED = new Color(229, 0, 0); + public static final Color COLOR_RED_DARKER = new Color(157, 41, 51); + public static final Color COLOR_GREEN = new Color(90, 184, 96); + public static final Color COLOR_BLUE = new Color(16, 108, 163); + public static final Color COLOR_BLUE_DARKER = new Color(12, 94, 145); + public static final Color COLOR_WHITE_TEXT = new Color(254, 254, 254); + public static final Color COLOR_CENTRAL_BACK = new Color(25, 30, 34, 160); + + public static final Color bgcolors[] = new Color[] { + COLOR_BLUE, + getWebColor("1ABC9C"), + getWebColor("9B59B6"), + getWebColor("34495E"), + getWebColor("E67E22"), + getWebColor("E74C3C") + }; + public static final Color bgcolors_darker[] = new Color[] { + COLOR_BLUE_DARKER, + getWebColor("16A085"), + getWebColor("8E44AD"), + getWebColor("2C3E50"), + getWebColor("D35400"), + getWebColor("C0392B") + }; +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/DropShadowBorder.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/DropShadowBorder.java new file mode 100644 index 000000000..e15e93250 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/DropShadowBorder.java @@ -0,0 +1,75 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Component; +import java.awt.Composite; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Insets; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import javax.swing.border.AbstractBorder; + +public class DropShadowBorder extends AbstractBorder { + + private Color color; + private int thickness = 1; + private Insets insets = null; + RenderingHints hints; + + public DropShadowBorder(Color color) { + this(color, 3); + } + + public DropShadowBorder(Color color, int thickness) { + this.thickness = thickness; + this.color = color; + this.hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + this.insets = new Insets(thickness * 4, thickness * 4, thickness * 4, thickness * 4); + } + + public void setColor(Color c) { + color = c; + } + + public Insets getBorderInsets(Component c) { + return this.insets; + } + + @Override + public Insets getBorderInsets(Component c, Insets insets) { + return getBorderInsets(c); + } + + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + BufferedImage shadow = new BufferedImage(width, height, 2); + + Graphics2D g2 = shadow.createGraphics(); + g2.setRenderingHints(this.hints); + Composite oldComposite = g2.getComposite(); + AlphaComposite composite = AlphaComposite.getInstance(1, 0.0F); + g2.setComposite(composite); + g2.setColor(new Color(0, 0, 0, 0)); + g2.fillRect(0, 0, width, height); + g2.setComposite(oldComposite); + g2.setColor(this.color); + int border = (int) (this.thickness * 4); + g2.fillRect(border, border + border / 6, width - border * 2, height - border * 2); + g2.dispose(); + + FastBlurFilter blur = new FastBlurFilter(this.thickness); + shadow = blur.filter(shadow, null); + shadow = blur.filter(shadow, null); + shadow = blur.filter(shadow, null); + shadow = blur.filter(shadow, null); + + g.drawImage(shadow, x, y, width, height, null); + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java new file mode 100644 index 000000000..e54099f56 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java @@ -0,0 +1,132 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +import java.awt.image.BufferedImage; + +public class FastBlurFilter extends AbstractFilter { + + private final int radius; + + public FastBlurFilter() { + this(3); + } + + public FastBlurFilter(int radius) { + if (radius < 1) { + radius = 1; + } + + this.radius = radius; + } + + public int getRadius() { + return this.radius; + } + + public BufferedImage filter(BufferedImage src, BufferedImage dst) { + int width = src.getWidth(); + int height = src.getHeight(); + + if (dst == null) { + dst = createCompatibleDestImage(src, null); + } + + int[] srcPixels = new int[width * height]; + int[] dstPixels = new int[width * height]; + + getPixels(src, 0, 0, width, height, srcPixels); + + blur(srcPixels, dstPixels, width, height, this.radius); + + blur(dstPixels, srcPixels, height, width, this.radius); + + setPixels(dst, 0, 0, width, height, srcPixels); + + return dst; + } + + static void blur(int[] srcPixels, int[] dstPixels, int width, int height, int radius) { + int windowSize = radius * 2 + 1; + int radiusPlusOne = radius + 1; + + int srcIndex = 0; + + int[] sumLookupTable = new int[256 * windowSize]; + for (int i = 0; i < sumLookupTable.length; i++) { + sumLookupTable[i] = (i / windowSize); + } + + int[] indexLookupTable = new int[radiusPlusOne]; + if (radius < width) { + for (int i = 0; i < indexLookupTable.length; i++) { + indexLookupTable[i] = i; + } + } else { + for (int i = 0; i < width; i++) { + indexLookupTable[i] = i; + } + for (int i = width; i < indexLookupTable.length; i++) { + indexLookupTable[i] = (width - 1); + } + } + + for (int y = 0; y < height; y++) { + int sumBlue; + int sumGreen; + int sumRed; + int sumAlpha = sumRed = sumGreen = sumBlue = 0; + int dstIndex = y; + + int pixel = srcPixels[srcIndex]; + sumAlpha += radiusPlusOne * (pixel >> 24 & 0xFF); + sumRed += radiusPlusOne * (pixel >> 16 & 0xFF); + sumGreen += radiusPlusOne * (pixel >> 8 & 0xFF); + sumBlue += radiusPlusOne * (pixel & 0xFF); + + for (int i = 1; i <= radius; i++) { + pixel = srcPixels[(srcIndex + indexLookupTable[i])]; + sumAlpha += (pixel >> 24 & 0xFF); + sumRed += (pixel >> 16 & 0xFF); + sumGreen += (pixel >> 8 & 0xFF); + sumBlue += (pixel & 0xFF); + } + + for (int x = 0; x < width; x++) { + dstPixels[dstIndex] = (sumLookupTable[sumAlpha] << 24 | sumLookupTable[sumRed] << 16 | sumLookupTable[sumGreen] << 8 | sumLookupTable[sumBlue]); + + dstIndex += height; + + int nextPixelIndex = x + radiusPlusOne; + if (nextPixelIndex >= width) { + nextPixelIndex = width - 1; + } + + int previousPixelIndex = x - radius; + if (previousPixelIndex < 0) { + previousPixelIndex = 0; + } + + int nextPixel = srcPixels[(srcIndex + nextPixelIndex)]; + int previousPixel = srcPixels[(srcIndex + previousPixelIndex)]; + + sumAlpha += (nextPixel >> 24 & 0xFF); + sumAlpha -= (previousPixel >> 24 & 0xFF); + + sumRed += (nextPixel >> 16 & 0xFF); + sumRed -= (previousPixel >> 16 & 0xFF); + + sumGreen += (nextPixel >> 8 & 0xFF); + sumGreen -= (previousPixel >> 8 & 0xFF); + + sumBlue += (nextPixel & 0xFF); + sumBlue -= (previousPixel & 0xFF); + } + + srcIndex += width; + } + } +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form new file mode 100644 index 000000000..2e5783db0 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form @@ -0,0 +1,168 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java new file mode 100644 index 000000000..388936a58 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java @@ -0,0 +1,286 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0Return; +import org.jackhuang.hellominecraft.utils.DoubleOutputStream; +import org.jackhuang.hellominecraft.utils.LauncherPrintStream; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.utils.TextComponentOutputStream; +import org.jackhuang.hellominecraft.utils.Utils; + +/** + * + * @author hyh + */ +public class LogWindow extends javax.swing.JFrame { + + boolean movingEnd; + DoneListener0Return listener; + DoneListener0 terminateGameListener; + + /** + * Creates new form LogWindow + */ + public LogWindow() { + initComponents(); + + movingEnd = true; + + setLocationRelativeTo(null); + + TextComponentOutputStream tc = new TextComponentOutputStream(txtLog); + DoubleOutputStream out = new DoubleOutputStream(tc, System.out); + System.setOut(new LauncherPrintStream(out)); + DoubleOutputStream err = new DoubleOutputStream(tc, System.err); + System.setErr(new LauncherPrintStream(err)); + } + + public static LogWindow instance = new LogWindow(); + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + txtLog = new javax.swing.JTextArea(); + btnClear = new javax.swing.JButton(); + btnClose = new javax.swing.JButton(); + btnCopy = new javax.swing.JButton(); + lblCrash = new javax.swing.JLabel(); + btnMCBBS = new javax.swing.JButton(); + btnTieBa = new javax.swing.JButton(); + btnMCF = new javax.swing.JButton(); + btnTerminateGame = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("Log"); + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosed(java.awt.event.WindowEvent evt) { + formWindowClosed(evt); + } + }); + + txtLog.setEditable(false); + txtLog.setColumns(20); + txtLog.setRows(5); + jScrollPane1.setViewportView(txtLog); + + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + btnClear.setText(bundle.getString("ui.button.clear")); // NOI18N + btnClear.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnClearActionPerformed(evt); + } + }); + + btnClose.setText(bundle.getString("ui.button.close")); // NOI18N + btnClose.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCloseActionPerformed(evt); + } + }); + + btnCopy.setText(bundle.getString("ui.button.copy")); // NOI18N + btnCopy.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCopyActionPerformed(evt); + } + }); + + lblCrash.setText(C.I18N.getString("ui.label.crashing")); // NOI18N + + btnMCBBS.setText("MCBBS"); + btnMCBBS.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMCBBSActionPerformed(evt); + } + }); + + btnTieBa.setText(bundle.getString("logwindow.tieba")); // NOI18N + btnTieBa.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnTieBaActionPerformed(evt); + } + }); + + btnMCF.setText("Minecraft Forum"); + btnMCF.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMCFActionPerformed(evt); + } + }); + + btnTerminateGame.setText(bundle.getString("logwindow.terminate_game")); // NOI18N + btnTerminateGame.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnTerminateGameActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(btnTieBa) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnMCBBS) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnMCF) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnTerminateGame) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCopy) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnClear) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnClose)) + .addComponent(lblCrash, javax.swing.GroupLayout.DEFAULT_SIZE, 639, Short.MAX_VALUE)) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(lblCrash, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnClear) + .addComponent(btnClose) + .addComponent(btnCopy) + .addComponent(btnMCBBS) + .addComponent(btnTieBa) + .addComponent(btnMCF) + .addComponent(btnTerminateGame)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCloseActionPerformed + this.dispose(); + }//GEN-LAST:event_btnCloseActionPerformed + + private void btnClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnClearActionPerformed + this.txtLog.setText(""); + }//GEN-LAST:event_btnClearActionPerformed + + private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed + if(listener != null && listener.onDone()) Utils.shutdownForcely(); + }//GEN-LAST:event_formWindowClosed + + private void btnCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCopyActionPerformed + Utils.setClipborad(this.txtLog.getText()); + }//GEN-LAST:event_btnCopyActionPerformed + + private void btnMCBBSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMCBBSActionPerformed + Utils.openLink(C.URL_PUBLISH); + }//GEN-LAST:event_btnMCBBSActionPerformed + + private void btnTieBaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTieBaActionPerformed + Utils.openLink(C.URL_TIEBA); + }//GEN-LAST:event_btnTieBaActionPerformed + + private void btnMCFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMCFActionPerformed + Utils.openLink(C.URL_MINECRAFTFORUM); + }//GEN-LAST:event_btnMCFActionPerformed + + private void btnTerminateGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTerminateGameActionPerformed + if(terminateGameListener != null) + terminateGameListener.onDone(); + }//GEN-LAST:event_btnTerminateGameActionPerformed + + public void log(String status) { + String text = txtLog.getText(); + text += status + System.getProperty("line.separator"); + txtLog.setText(text); + + if(movingEnd) { + int position = text.length(); + txtLog.setCaretPosition(position); + } + } + + public void log(String status, Throwable t) { + log(status); + log(StrUtils.getStackTrace(t)); + } + + public void setExit(DoneListener0Return exit) { + this.listener = exit; + } + + public void setTerminateGame(DoneListener0 l) { + this.terminateGameListener = l; + } + + public void clean() { + txtLog.setText(""); + } + + public boolean getMovingEnd() { + return movingEnd; + } + + public void setMovingEnd(boolean b) { + movingEnd = b; + } + + @Override + public void setVisible(boolean b) { + lblCrash.setVisible(false); + btnMCBBS.setVisible(false); + btnTieBa.setVisible(false); + btnMCF.setVisible(false); + super.setVisible(b); + } + + public void showAsCrashWindow(boolean out_date) { + if(out_date) { + lblCrash.setVisible(false); + btnMCBBS.setVisible(false); + btnTieBa.setVisible(false); + btnMCF.setVisible(false); + lblCrash.setText(C.i18n("ui.label.crashing_out_dated")); + } else { + lblCrash.setVisible(true); + btnMCBBS.setVisible(true); + btnTieBa.setVisible(true); + btnMCF.setVisible(true); + lblCrash.setText(C.i18n("ui.label.crashing")); + } + + super.setVisible(true); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnClear; + private javax.swing.JButton btnClose; + private javax.swing.JButton btnCopy; + private javax.swing.JButton btnMCBBS; + private javax.swing.JButton btnMCF; + private javax.swing.JButton btnTerminateGame; + private javax.swing.JButton btnTieBa; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JLabel lblCrash; + private javax.swing.JTextArea txtLog; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.form new file mode 100644 index 000000000..a43542b6e --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.form @@ -0,0 +1,101 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java new file mode 100644 index 000000000..c718c006c --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java @@ -0,0 +1,127 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +import org.jackhuang.hellominecraft.utils.SwingUtils; + +/** + * The frame given to choose things. + * @author hyh + */ +public class Selector extends javax.swing.JDialog { + String[] selList; + String msg; + /** + * The index of the chosen in select list. + */ + public int sel; + public static int failedToSel = -1; + + /** + * @param parent null + * @param selList Selection List + * @param msg Message + */ + public Selector(java.awt.Frame parent, String[] selList, String msg) { + super(parent, true); + initComponents(); + + setLocationRelativeTo(null); + + this.selList = selList; + this.sel = failedToSel; + this.msg = msg; + jLabel1.setText(msg); + for(String s : selList) + jComboBox1.addItem(s); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jLabel1 = new javax.swing.JLabel(); + jComboBox1 = new javax.swing.JComboBox(); + jButton1 = new javax.swing.JButton(); + btnCancel = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N + jLabel1.setText(bundle.getString("selector.choose")); // NOI18N + + jButton1.setText(bundle.getString("button.ok")); // NOI18N + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + btnCancel.setText(bundle.getString("button.cancel")); // NOI18N + btnCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCancelActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jComboBox1, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel1) + .addGap(0, 0, Short.MAX_VALUE)))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(212, Short.MAX_VALUE) + .addComponent(btnCancel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton1) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton1) + .addComponent(btnCancel)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed + sel = failedToSel; + this.dispose(); + }//GEN-LAST:event_btnCancelActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + sel = jComboBox1.getSelectedIndex(); + this.dispose(); + }//GEN-LAST:event_jButton1ActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnCancel; + private javax.swing.JButton jButton1; + private javax.swing.JComboBox jComboBox1; + private javax.swing.JLabel jLabel1; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java new file mode 100644 index 000000000..a3043e9d9 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java @@ -0,0 +1,92 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.views; + +/** + * + * @author huangyuhui + */ +import java.awt.Color; +import java.awt.EventQueue; +import java.awt.Graphics; +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class TintablePanel extends JPanel { + + private Color tintColor; + private boolean tintActive; + private JLabel overIcon = null; + + public TintablePanel() { + this.tintColor = new Color(0, 0, 0, 0); + } + + public Color getTintColor() { + return this.tintColor; + } + + public void setTintColor(Color color) { + this.tintColor = color; + } + + public void setOverIcon(ImageIcon image) { + if (this.overIcon != null) { + remove(this.overIcon); + } + + this.overIcon = new JLabel(image); + this.overIcon.setVisible(false); + add(this.overIcon); + revalidate(); + } + + public boolean isTintActive() { + return this.tintActive; + } + + public void setTintActive(boolean tintActive) { + this.tintActive = tintActive; + + if (this.overIcon != null) { + this.overIcon.setVisible(tintActive); + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + TintablePanel.this.revalidate(); + } + }); + } + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + TintablePanel.this.repaint(); + } + }); + } + + @Override + public void doLayout() { + super.doLayout(); + + if (this.overIcon != null) { + int width = this.overIcon.getIcon().getIconWidth(); + int height = this.overIcon.getIcon().getIconHeight(); + this.overIcon.setBounds(getWidth() / 2 - width / 2, getHeight() / 2 - height / 2, width, height); + } + } + + @Override + public void paint(Graphics graphics) { + super.paint(graphics); + + if (this.tintActive) { + graphics.setColor(getTintColor()); + graphics.fillRect(0, 0, getWidth(), getHeight()); + } + } +} diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties new file mode 100644 index 000000000..a459c26d7 --- /dev/null +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties @@ -0,0 +1,278 @@ +launch.failed=\u542f\u52a8\u5931\u8d25 +launch.failed_creating_process=\u542f\u52a8\u5931\u8d25\uff0c\u5728\u521b\u5efa\u65b0\u8fdb\u7a0b\u65f6\u53d1\u751f\u9519\u8bef\uff0c\u53ef\u80fd\u662fJava\u8def\u5f84\u9519\u8bef\u3002 +launch.failed_sh_permission=\u4e3a\u542f\u52a8\u6587\u4ef6\u6dfb\u52a0\u6743\u9650\u65f6\u53d1\u751f\u9519\u8bef +launch.failed_packing_jar=\u5728\u6253\u5305jar\u65f6\u53d1\u751f\u9519\u8bef +launch.unsupported_launcher_version=\u5bf9\u4e0d\u8d77\uff0c\u672c\u542f\u52a8\u5668\u73b0\u5728\u53ef\u80fd\u4e0d\u80fd\u542f\u52a8\u8fd9\u4e2a\u7248\u672c\u7684Minecraft\uff0c\u4f46\u542f\u52a8\u5668\u8fd8\u662f\u4f1a\u5c1d\u8bd5\u542f\u52a8\uff0c\u8bf7\u5c3d\u5feb\u5c06\u6b64\u95ee\u9898\u62a5\u544a\u7ed9\u4f5c\u8005\u3002 +launch.too_big_memory_alloc_64bit=\u60a8\u8bbe\u7f6e\u7684\u5185\u5b58\u5927\u5c0f\u8fc7\u5927\uff0c\u7531\u4e8e\u53ef\u80fd\u8d85\u8fc7\u4e8632\u4f4dJava\u7684\u5185\u5b58\u5206\u914d\u9650\u5236\uff0c\u6240\u4ee5\u53ef\u80fd\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\uff0c\u8bf7\u5c06\u5185\u5b58\u8c03\u81f31024MB\u6216\u66f4\u5c0f\uff0c\u542f\u52a8\u5668\u4ecd\u4f1a\u5c1d\u8bd5\u542f\u52a8\u3002 +launch.too_big_memory_alloc_free_space_too_low=\u60a8\u8bbe\u7f6e\u7684\u5185\u5b58\u5927\u5c0f\u8fc7\u5927\uff0c\u7531\u4e8e\u8d85\u8fc7\u4e86\u7cfb\u7edf\u5185\u5b58\u5927\u5c0f%dMB\uff0c\u6240\u4ee5\u53ef\u80fd\u5f71\u54cd\u6e38\u620f\u4f53\u9a8c\u6216\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\uff0c\u542f\u52a8\u5668\u4ecd\u4f1a\u5c1d\u8bd5\u542f\u52a8\u3002 +launch.cannot_create_jvm=\u622a\u83b7\u5230\u65e0\u6cd5\u521b\u5efaJava\u865a\u62df\u673a\uff0c\u53ef\u80fd\u662fJava\u53c2\u6570\u6709\u95ee\u9898\uff0c\u53ef\u4ee5\u5728\u8bbe\u7f6e\u4e2d\u5f00\u542f\u65e0\u53c2\u6570\u6a21\u5f0f\u542f\u52a8 +launch.circular_dependency_versions=\u53d1\u73b0\u6e38\u620f\u7248\u672c\u5faa\u73af\u5f15\u7528\uff0c\u8bf7\u786e\u8ba4\u60a8\u7684\u5ba2\u6237\u7aef\u672a\u88ab\u4fee\u6539\u6216\u4fee\u6539\u5bfc\u81f4\u51fa\u73b0\u6b64\u95ee\u9898\u3002 +launch.not_finished_downloading_libraries=\u672a\u5b8c\u6210\u6e38\u620f\u4f9d\u8d56\u5e93\u7684\u4e0b\u8f7d\uff0c\u8fd8\u8981\u7ee7\u7eed\u542f\u52a8\u6e38\u620f\u5417\uff1f +launch.not_finished_decompressing_natives=\u672a\u80fd\u89e3\u538b\u6e38\u620f\u672c\u5730\u5e93\uff0c\u8fd8\u8981\u7ee7\u7eed\u542f\u52a8\u6e38\u620f\u5417\uff1f + +install.no_version=\u672a\u627e\u5230\u8981\u5b89\u88c5\u7684\u5bf9\u5e94MC\u7248\u672c +install.no_version_if_intall=\u672a\u627e\u5230\u8981\u5b89\u88c5\u7684\u5bf9\u5e94MC\u7248\u672c\uff0c\u662f\u5426\u81ea\u52a8\u5b89\u88c5\u9700\u8981\u7684MC\u7248\u672c\uff1f +install.not_refrehsed=\u672a\u5237\u65b0\u5217\u8868 +install.download_list=\u4e0b\u8f7d\u5217\u8868 + +install.liteloader.get_list=\u83b7\u53d6LiteLoader\u5217\u8868 +install.liteloader.install=\u5b89\u88c5LiteLoader + +install.forge.get_list=\u83b7\u53d6Forge\u5217\u8868 +install.forge.install=\u5b89\u88c5Forge +install.forge.get_changelogs=\u83b7\u53d6Forge\u66f4\u65b0\u8bb0\u5f55 + +install.optifine.install=\u5b89\u88c5Optifine +install.optifine.get_list=\u83b7\u53d6Optifine\u5217\u8868 + +install.failed_forge=\u5b89\u88c5Forge\u5931\u8d25 +install.failed_optifine=\u5b89\u88c5Optifine\u5931\u8d25 +install.failed_liteloader=\u5b89\u88c5LiteLoader\u5931\u8d25 +install.failed_download_forge=\u4e0b\u8f7dForge\u5931\u8d25 +install.failed_download_optifine=\u4e0b\u8f7dOptifine\u5931\u8d25 +install.failed=\u5b89\u88c5\u5931\u8d25 +install.success=\u5b89\u88c5\u6210\u529f +install.no_forge=\u6ca1\u6709\u5b89\u88c5Forge +install.choose_forge=\u9009\u62e9\u4f60\u5b89\u88c5\u7684Forge\u7248\u672c +install.version=\u7248\u672c +install.mcversion=\u6e38\u620f\u7248\u672c +install.time=\u65f6\u95f4 +install.release_time=\u91ca\u653e\u65f6\u95f4 +install.type=\u7c7b\u578b + +crash.launcher=\u542f\u52a8\u5668\u5d29\u6e83\u4e86\uff01 +crash.minecraft=Minecraft\u5d29\u6e83\u4e86\uff01 + +login.choose_charactor=\u8bf7\u9009\u62e9\u60a8\u8981\u4f7f\u7528\u7684\u89d2\u8272 +login.no_charactor=\u8be5\u5e10\u53f7\u6ca1\u6709\u89d2\u8272 +login.your_password=\u60a8\u7684\u5bc6\u7801 +login.failed=\u767b\u5f55\u5931\u8d25\uff1a +login.no_Player007=\u4f60\u8fd8\u672a\u8bbe\u7f6e\u7528\u6237\u540d\uff01 +login.wrong_password=\u53ef\u80fd\u662f\u60a8\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef +login.invalid_username=\u65e0\u6548\u7684\u7528\u6237\u540d +login.invalid_uuid_and_username=\u65e0\u6548\u7684UUID\u548c\u7528\u6237\u540d +login.invalid_password=\u65e0\u6548\u7684\u5bc6\u7801 +login.invalid_access_token=\u65e0\u6548\u7684\u8bbf\u95ee\u4ee4\u724c +login.changed_client_token=\u670d\u52a1\u5668\u56de\u5e94\u5df2\u7ecf\u4fee\u6539\u5ba2\u6237\u7aef\u4ee4\u724c +login.not_email=\u7528\u6237\u540d\u5fc5\u987b\u662f\u90ae\u7bb1 +login.type=\u767b\u5f55 +login.username=\u540d\u5b57 +login.account=\u90ae\u7bb1 + +login.failed.connect_authentication_server=\u65e0\u6cd5\u8fde\u63a5\u8ba4\u8bc1\u670d\u52a1\u5668,\u53ef\u80fd\u662f\u7f51\u7edc\u95ee\u9898 + +login.profile.not_logged_in=\u65e0\u6cd5\u4fee\u6539\u6e38\u620f\u8d44\u6599\u540c\u65f6\u672a\u767b\u5f55 +login.profile.selected=\u65e0\u6cd5\u4fee\u6539\u6e38\u620f\u8d44\u6599. \u4f60\u5fc5\u987b\u767b\u51fa\u518d\u8fd4\u56de. + +login.methods.yggdrasil=\u6b63\u7248\u767b\u5f55 +login.methods.offline=\u79bb\u7ebf\u6a21\u5f0f +login.methods.no_method=\u6ca1\u6709\u767b\u5165\u65b9\u5f0f... + +log.playername_null=\u73a9\u5bb6\u540d\u4e3a\u7a7a\uff0c\u8fd9\u4ee3\u8868\u7740\u767b\u5f55\u65b9\u6cd5\u51fa\u73b0\u95ee\u9898 + +minecraft.no_selected_version=\u6ca1\u6709\u9009\u62e9\u4efb\u4f55\u4e00\u4e2aMinecraft\u7248\u672c +minecraft.wrong_path=\u9519\u8bef\u7684Minecraft\u8def\u5f84\uff0c\u542f\u52a8\u5668\u672a\u627e\u5230\u8bbe\u5b9a\u7684Minecraft\u8def\u5f84\uff0c\u8bf7\u68c0\u67e5\u3002 + +operation.stopped=\u64cd\u4f5c\u88ab\u5f3a\u884c\u7ec8\u6b62 +operation.confirm_stop=\u771f\u7684\u8981\u7ec8\u6b62\u64cd\u4f5c\u5417\uff1f + +ui.login.password=\u5bc6\u7801 +ui.more=\u66f4\u591a + +crash.advice.UnsupportedClassVersionError=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u8fc7\u4e8e\u8001\u65e7\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u66f4\u6362\u6700\u65b0Java\u5e76\u5728\u7248\u672c\u8bbe\u7f6e\u7684Java\u8def\u5f84\u4e2d\u8bbe\u7f6e. +crash.advice.ConcurrentModificationException=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u9ad8\u4e8eJava 1.8.0_11\u5bfc\u81f4\u7684,\u53ef\u4ee5\u5c1d\u8bd5\u5378\u8f7dJava8\u5b89\u88c5Java7\u3002 +crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 +crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 +crash.advice.SecurityException=\u53ef\u80fd\u662f\u60a8\u4fee\u6539\u4e86minecraft.jar\u4f46\u672a\u5220\u9664META-INF\u6587\u4ef6\u5939\u7684\u539f\u56e0\u3002\u8bf7\u901a\u8fc7\u538b\u7f29\u8f6f\u4ef6\u5220\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u5939\u3002 +crash.advice.otherwise=\u53ef\u80fd\u662fMod\u6216\u5176\u4ed6\u95ee\u9898\u3002 + +crash.advice.OpenGL=\u53ef\u80fd\u662f\u663e\u5361/\u58f0\u5361\u9a71\u52a8\u95ee\u9898\uff0c\u4e5f\u53ef\u80fd\u662fMod\u5bfc\u81f4\u7684\u95ee\u9898\u3002 +crash.advice.no_lwjgl=\u53ef\u80fd\u662f\u6e38\u620f\u4f9d\u8d56\u5e93\u4e0d\u5b8c\u6574\u6216\u89e3\u538b\u4f9d\u8d56\u5e93\u65f6\u51fa\u9519\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 + +crash.advice.no=\u65e0\u5efa\u8bae\u3002 + +crash.error=\u60a8\u7684Minecraft\u5d29\u6e83\u4e86\u3002 +crash.main_class_not_found=\u627e\u4e0d\u5230\u4e3b\u7c7b\uff0c\u53ef\u80fd\u662f\u60a8\u7684JSON\u6587\u4ef6\u586b\u5199\u9519\u8bef\u3002\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 +crash.class_path_wrong=\u89e3\u6790Class Path\u65f6\u51fa\u73b0\u9519\u8bef\uff0c\u6b64\u9519\u8bef\u672c\u4e0d\u5e94\u8be5\u53d1\u751f\u3002\u53ef\u80fd\u662f\u542f\u52a8\u811a\u672c\u9519\u8bef\uff0c\u8bf7\u4ed4\u7ec6\u68c0\u67e5\u542f\u52a8\u811a\u672c\u3002 + +ui.label.newProfileWindow.new_profile_name=\u65b0\u914d\u7f6e\u540d: +ui.label.newProfileWindow.copy_from=\u590d\u5236\u914d\u7f6e: +ui.newProfileWindow.title=\u65b0\u5efa\u914d\u7f6e + +ui.button.ok=\u786e\u8ba4 +ui.button.refresh=\u5237\u65b0 +ui.button.run=\u542f\u52a8Minecraft +ui.button.settings= +ui.button.about=\u5173\u4e8e +ui.button.others=\u5176\u4ed6 +ui.button.logout=\u767b\u51fa +ui.button.download=\u4e0b\u8f7d +ui.button.retry=\u91cd\u8bd5 +ui.button.delete=\u5220\u9664 +ui.button.install=\u5b89\u88c5 +ui.button.info=\u4fe1\u606f +ui.button.save=\u4fdd\u5b58 +ui.button.copy=\u590d\u5236 +ui.button.clear=\u6e05\u9664 +ui.button.close=\u5173\u95ed +ui.button.explore=\u6d4f\u89c8 +button.cancel=\u53d6\u6d88 +button.ok=\u786e\u5b9a + +ui.label.version=\u7248\u672c +ui.label.password=\u5bc6\u7801 +ui.label.profile=\u914d\u7f6e + +ui.message.first_load=\u8bf7\u5728\u5de6\u8fb9\u8f93\u5165\u60a8\u7684\u8d26\u53f7 +ui.message.enter_password=\u8bf7\u5728\u5de6\u8fb9\u8f93\u5165\u60a8\u7684\u5bc6\u7801 +ui.message.launching=\u542f\u52a8\u4e2d +ui.message.making=\u751f\u6210\u4e2d +ui.message.sure_remove=\u771f\u7684\u8981\u5220\u9664\u914d\u7f6e%s\u5417\uff1f + +ui.label.settings=\u9009\u9879 +ui.label.crashing=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u8bf7\u590d\u5236\u4e0b\u5217\u5185\u5bb9\u5e76\u901a\u8fc7mcbbs\u3001\u8d34\u5427\u6216Minecraft Forum\u53cd\u9988bug\u3002 +ui.label.crashing_out_dated=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u5df2\u68c0\u6d4b\u5230\u60a8\u7684\u542f\u52a8\u5668\u4e0d\u662f\u6700\u65b0\u7248\u672c\uff0c\u8bf7\u66f4\u65b0\u540e\u518d\u8bd5\uff01 +ui.label.failed_set=\u8bbe\u7f6e\u5931\u8d25\uff1a + +download=\u4e0b\u8f7d +download.mojang=\u5b98\u65b9 +download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/) +download.not_200=\u4e0b\u8f7d\u5931\u8d25\uff0c\u56de\u590d\u7801 +download.failed=\u4e0b\u8f7d\u5931\u8d25 +download.successfully=\u4e0b\u8f7d\u5b8c\u6210 + +message.error=\u9519\u8bef +message.cannot_open_explorer=\u65e0\u6cd5\u6253\u5f00\u6587\u4ef6\u7ba1\u7406\u5668: +message.cancelled=\u5df2\u53d6\u6d88 +message.info=\u63d0\u793a + +folder.game=\u6e38\u620f\u6587\u4ef6\u5939 +folder.mod=MOD\u6587\u4ef6\u5939 +folder.coremod=\u6838\u5fc3MOD\u6587\u4ef6\u5939 +folder.config=\u914d\u7f6e\u6587\u4ef6\u5939 +folder.resourcepacks=\u8d44\u6e90\u5305\u6587\u4ef6\u5939 +folder.screenshots=\u622a\u56fe\u6587\u4ef6\u5939 +folder.saves=\u5b58\u6863\u6587\u4ef6\u5939 + +settings.tabs.game_download=\u6e38\u620f\u4e0b\u8f7d +settings.tabs.installers=\u81ea\u52a8\u5b89\u88c5 +settings.tabs.assets_downloads=\u8d44\u6e90\u4e0b\u8f7d + +settings=\u666e\u901a\u8bbe\u7f6e +settings.explore=\u6d4f\u89c8 +settings.manage=\u7ba1\u7406 +settings.cannot_remove_default_config=\u4e0d\u80fd\u5220\u9664\u9ed8\u8ba4\u914d\u7f6e +settings.max_memory=\u6700\u5927\u5185\u5b58/MB +settings.java_dir=Java\u8def\u5f84 +settings.game_directory=\u6e38\u620f\u8def\u5f84 +settings.dimension=\u5206\u8fa8\u7387 +settings.fullscreen=\u5168\u5c4f +settings.update_version=\u66f4\u65b0\u7248\u672c\u6587\u4ef6 +settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f + +settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f + +advancedsettings=\u9ad8\u7ea7\u8bbe\u7f6e +advancedsettings.launcher_visible=\u542f\u52a8\u5668\u53ef\u89c1\u6027 +advancedsettings.run_directory=\u8fd0\u884c\u8def\u5f84 +advencedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f +advancedsettings.java_permanent_generation_space=\u5185\u5b58\u6c38\u4e45\u4fdd\u5b58\u533a\u57df(\u4e0d\u5fc5\u586b\u5199,MB) +advancedsettings.jvm_args=Java\u865a\u62df\u673a\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199) +advancedsettings.Minecraft_arguments=Minecraft\u989d\u5916\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199) +advancedsettings.launcher_visibility.close=\u6e38\u620f\u542f\u52a8\u540e\u7ed3\u675f\u542f\u52a8\u5668 +advancedsettings.launcher_visibility.hide=\u6e38\u620f\u542f\u52a8\u540e\u9690\u85cf\u542f\u52a8\u5668 +advancedsettings.launcher_visibility.keep=\u4fdd\u6301\u542f\u52a8\u5668\u53ef\u89c1 +advancedsettings.game_dir.default=\u9ed8\u8ba4(.minecraft/) +advancedsettings.game_dir.independent=\u5404\u7248\u672c\u72ec\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries) +advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c2\u6570(\u4f7f\u7528Java9\u65f6\u5fc5\u52fe) +advancedsettings.java_args_default=\u542f\u52a8\u5668\u9ed8\u8ba4\u6dfb\u52a0\u7684\u53c2\u6570\uff08\u8bf7\u4e0d\u8981\u91cd\u590d\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true + +mainwindow.show_log=\u67e5\u770b\u65e5\u5fd7 +mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c +mainwindow.make_launch_script_failed=\u751f\u6210\u542f\u52a8\u811a\u672c\u5931\u8d25 +mainwindow.enter_script_name=\u8f93\u5165\u8981\u751f\u6210\u811a\u672c\u7684\u6587\u4ef6\u540d +mainwindow.make_launch_succeed=\u542f\u52a8\u811a\u672c\u5df2\u751f\u6210\u5b8c\u6bd5: +mainwindow.no_version=\u672a\u627e\u5230\u4efb\u4f55\u7248\u672c\uff0c\u60a8\u53ef\u4ee5\u5230[\u8bbe\u7f6e]->[\u6e38\u620f\u4e0b\u8f7d]\u4e2d\u4e0b\u8f7d\u6e38\u620f\u3002 + +launcher.about=\u9ed8\u8ba4\u80cc\u666f\u56fe\u6765\u81eaLiberty Dome\u670d\u52a1\u5668\u3002
\u5173\u4e8e\u4f5c\u8005\uff1a
\n\u767e\u5ea6ID\uff1ahuanghongxun20
\nmcbbs\uff1ahuanghongxun
\n\u90ae\u7bb1\uff1ahuanghongxun2008@126.com
\nMinecraft Forum ID: klkl6523
\n\u6b22\u8fce\u63d0\u4ea4Bug\u54e6
\nCopyright (c) 2013-2015 huangyuhui.
\u514d\u8d23\u58f0\u660e\uff1aMinecraft\u8f6f\u4ef6\u7248\u6743\u5f52Mojang AB\u6240\u6709\uff0c\u6e38\u620f\u7531\u4e8e\u8bef\u64cd\u4f5c\u672c\u542f\u52a8\u5668\u800c\u4e22\u5931\u6570\u636e\u7684\u6982\u4e0d\u8d1f\u8d23\u3002 +launcher.download_source=\u4e0b\u8f7d\u6e90 +launcher.background_location=\u80cc\u666f\u5730\u5740 +launcher.exit_failed=\u5f3a\u5236\u9000\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662fForge 1.7.10\u53ca\u66f4\u9ad8\u7248\u672c\u5bfc\u81f4\u7684\uff0c\u65e0\u6cd5\u89e3\u51b3\u3002 +launcher.versions_json_not_matched=\u7248\u672c%s\u683c\u5f0f\u4e0d\u89c4\u8303\uff01\u8be5\u7248\u672c\u6587\u4ef6\u5939\u4e0b\u6709json:%s\uff0c\u662f\u5426\u66f4\u540d\u8fd9\u4e2a\u6587\u4ef6\u6765\u89c4\u8303\u683c\u5f0f\uff1f +launcher.versions_json_not_matched_needs_auto_completion=\u7248\u672c%s\u7f3a\u5931\u5fc5\u8981\u7684\u7248\u672c\u4fe1\u606f(JSON)\u6587\u4ef6\uff0c\u662f\u5426\u81ea\u52a8\u8865\u5168\uff1f +launcher.versions_json_not_matched_cannot_auto_completion=\u7248\u672c%s\u7f3a\u5931\u5fc5\u8981\u7684\u7248\u672c\u4fe1\u606f(JSON)\u6587\u4ef6\uff0c\u4f46\u662f\u4f3c\u4e4e\u4e0d\u662f\u539f\u7248\uff0c\u65e0\u6cd5\u81ea\u52a8\u8865\u5168\uff0c\u662f\u5426\u5220\u9664\u8be5\u7248\u672c\uff1f +launcher.versions_json_not_formatted=\u7248\u672c%s\u4fe1\u606f\u6587\u4ef6\u683c\u5f0f\u9519\u8bef\uff0c\u662f\u5426\u91cd\u65b0\u4e0b\u8f7d\uff1f +launcher.choose_bgpath=\u9009\u62e9\u80cc\u666f\u8def\u5f84 +launcher.background_tooltip=\n\n\u542f\u52a8\u5668\u9ed8\u8ba4\u4f7f\u7528\u81ea\u5e26\u7684\u80cc\u666f
\n\u5982\u679c\u5f53\u524d\u76ee\u5f55\u6709background.png\uff0c\u5219\u4f1a\u4f7f\u7528\u8be5\u6587\u4ef6\u4f5c\u4e3a\u80cc\u666f
\n\u5982\u679c\u5f53\u524d\u76ee\u5f55\u6709bgskin\u5b50\u76ee\u5f55\uff0c\u5219\u4f1a\u968f\u673a\u4f7f\u7528\u91cc\u9762\u7684\u4e00\u5f20\u56fe\u4f5c\u4e3a\u80cc\u666f
\n\u5982\u679c\u8be5\u80cc\u666f\u5730\u5740\u88ab\u4fee\u6539\uff0c\u5219\u4f1a\u4f7f\u7528\u80cc\u666f\u5730\u5740\u91cc\u7684\u4e00\u5f20\u56fe\u4f5c\u4e3a\u80cc\u666f
\n\u80cc\u666f\u5730\u5740\u5141\u8bb8\u6709\u591a\u4e2a\u5730\u5740\uff0c\u4f7f\u7528\u534a\u89d2\u5206\u53f7";"(\u4e0d\u5305\u542b\u53cc\u5f15\u53f7)\u5206\u9694\n\n +launcher.update_launcher=\u68c0\u67e5\u66f4\u65b0 +launcher.enable_shadow=\u542f\u7528\u7a97\u53e3\u9634\u5f71(\u91cd\u542f\u542f\u52a8\u5668\u751f\u6548,\u53ef\u52a0\u5feb\u6e32\u67d3\u901f\u5ea6) +launcher.theme=\u4e3b\u9898 + +launcher.title.game=\u6e38\u620f\u8bbe\u7f6e +launcher.title.main=\u4e3b\u9875 +launcher.title.launcher=\u542f\u52a8\u5668\u8bbe\u7f6e + +versions.release=\u7a33\u5b9a\u7248 +versions.snapshot=\u5feb\u7167\u7248 +versions.old_beta=\u6d4b\u8bd5\u7248 +versions.old_alpha=\u8fdc\u53e4\u7248 + +versions.manage.rename=\u91cd\u547d\u540d\u8be5\u7248\u672c +versions.manage.rename.message=\u8bf7\u8f93\u5165\u8981\u6539\u6210\u7684\u540d\u5b57 +versions.manage.remove=\u5220\u9664\u8be5\u7248\u672c +versions.manage.remove.confirm=\u771f\u7684\u8981\u5220\u9664\u7248\u672c +versions.manage.redownload_json=\u91cd\u65b0\u4e0b\u8f7d\u7248\u672c\u914d\u7f6e(minecraft.json) +versions.manage.redownload_assets_index=\u91cd\u65b0\u4e0b\u8f7d\u8d44\u6e90\u914d\u7f6e(assets_index.json) + +advice.os64butjdk32=\u60a8\u7684\u7cfb\u7edf\u662f64\u4f4d\u7684\u4f46\u662fJava\u662f32\u4f4d\u7684\uff0c\u63a8\u8350\u60a8\u5b89\u88c564\u4f4dJava. + +assets.download_all=\u4e0b\u8f7d\u8d44\u6e90\u6587\u4ef6 +assets.not_refreshed=\u8d44\u6e90\u5217\u8868\u672a\u5237\u65b0\uff0c\u8bf7\u5237\u65b0\u4e00\u6b21\u3002 +assets.failed=\u83b7\u53d6\u5217\u8868\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u91cd\u8bd5\u3002 +assets.list.1_7_3_after=1.7.3\u53ca\u4ee5\u540e +assets.list.1_6=1.6(BMCLAPI) +assets.unkown_type_select_one=\u65e0\u6cd5\u89e3\u6790\u6e38\u620f\u7248\u672c\uff1a%s\uff0c\u8bf7\u9009\u62e9\u4e00\u79cd\u8d44\u6e90\u7c7b\u578b\u4e0b\u8f7d\u3002 +assets.type=\u8d44\u6e90\u7c7b\u578b +assets.download=\u4e0b\u8f7d\u8d44\u6e90 +assets.no_assets=\u672a\u68c0\u6d4b\u5230assets\u6587\u4ef6\u5939\uff0c\u542f\u52a8\u6e38\u620f\u540e\u5c06\u6ca1\u6709\u58f0\u97f3\u548c\u8bed\u8a00\u6587\u4ef6\uff0c\u8bf7\u5230\u6e38\u620f\u8bbe\u7f6e->\u8d44\u6e90\u4e0b\u8f7d\u4e0b\u8f7d\u8d44\u6e90\u3002 + +gamedownload.not_refreshed=\u6e38\u620f\u4e0b\u8f7d\u5217\u8868\u672a\u5237\u65b0\uff0c\u8bf7\u518d\u5237\u65b0\u4e00\u6b21\u3002 + +taskwindow.title=\u4efb\u52a1 +taskwindow.single_progress=\u5355\u9879\u8fdb\u5ea6 +taskwindow.total_progress=\u603b\u8fdb\u5ea6 +taskwindow.cancel=\u53d6\u6d88 +taskwindow.no_more_instance=\u53ef\u80fd\u540c\u65f6\u6253\u5f00\u4e86\u591a\u4e2a\u4efb\u52a1\u7a97\u53e3\uff0c\u8bf7\u4e0d\u8981\u591a\u6b21\u6253\u5f00\uff01 + +setupwindow.include_minecraft=\u5bfc\u5165\u6e38\u620f\u6587\u4ef6\u5939 +setupwindow.find_in_configurations=\u5bfc\u5165\u5b8c\u6210\uff0c\u5feb\u5230\u914d\u7f6e\u4e0b\u62c9\u6846\u4e2d\u627e\u65b0\u6e38\u620f\u8def\u5f84\u5427\uff01 +setupwindow.give_a_name=\u7ed9\u65b0\u6e38\u620f\u8def\u5f84\u8d77\u4e2a\u540d\u5b57\u5427 +setupwindow.new=\u65b0\u5efa +setupwindow.no_empty_name=\u540d\u5b57\u4e0d\u53ef\u4e3a\u7a7a + +update.no_browser=\u65e0\u6cd5\u6253\u5f00\u6d4f\u89c8\u5668\uff0c\u7f51\u5740\u5df2\u7ecf\u590d\u5236\u5230\u526a\u8d34\u677f\u4e86\uff0c\u60a8\u53ef\u4ee5\u624b\u52a8\u7c98\u8d34\u7f51\u5740\u6253\u5f00\u9875\u9762 +update.should_open_link=\u662f\u5426\u524d\u5f80\u53d1\u5e03\u9875\u9762\u66f4\u65b0\uff1f +update.newest_version=\u6700\u65b0\u7248\u672c\u4e3a\uff1a +update.failed=\u68c0\u67e5\u66f4\u65b0\u5931\u8d25 +update.found=(\u53d1\u73b0\u66f4\u65b0!) + +logwindow.terminate_game=\u7ed3\u675f\u6e38\u620f\u8fdb\u7a0b +logwindow.tieba=\u8d34\u5427 + +selector.choose=\u9009\u62e9 + +minecraft.invalid=\u65e0\u6548\u7684 +minecraft.invalid_jar=\u65e0\u6548\u7684jar\u5305 +minecraft.not_a_file=\u4e0d\u662f\u6587\u4ef6 +minecraft.not_found=\u627e\u4e0d\u5230minecraft.jar +minecraft.not_readable=minecraft.jar\u4e0d\u53ef\u8bfb +minecraft.modified=(\u4fee\u6539\u7684!) + +color.red=\u7ea2\u8272 +color.blue=\u84dd\u8272 +color.green=\u7eff\u8272 +color.orange=\u6a59\u8272 +color.dark_blue=\u6df1\u84dd\u8272 +color.purple=\u7d2b\u8272 +advancedsettings.wrapper_launcher=\u524d\u7f6e\u542f\u52a8\u6307\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5185\u5bb9\u5c06\u52a0\u5728\u542f\u52a8\u811a\u672c\u6700\u524d\uff0c\u5982optirun...) +advancedsettings.server_ip=\u76f4\u5165\u670d\u52a1\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5199\uff0c\u542f\u52a8\u6e38\u620f\u540e\u76f4\u63a5\u8fdb\u5165\u5bf9\u5e94\u670d\u52a1\u5668) diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties new file mode 100644 index 000000000..7c67a94dd --- /dev/null +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties @@ -0,0 +1,274 @@ +launch.failed=Failed to launch +launch.failed_creating_process=Failed to create process, maybe your java path is wrong, please modify your java path. +launch.failed_sh_permission=Failed to add permission to the launch script +launch.failed_packing_jar=Failed to pack jar +launch.unsupported_launcher_version=Sorry, this launcher cannot launch this minecraft, but the launcher will try to launch it. +launch.too_big_memory_alloc_64bit=You have allocated too much memory, because of your 32-Bit Java Runtime Environment, your game probably crash. The maximum memory is 1024MB. The launcher will try to launch it. +launch.too_big_memory_alloc_free_space_too_low=You have allocated too much memory, because the physical memory size is %dMB, your game probably crash. The launcher will try to launch it. +launch.cannot_create_jvm=We find that it cannot create java virutal machine. The Java argements may have problems. You can enable the no args mode in the settings. +launch.circular_dependency_versions=Found circular dependency versions, please check if your client has been modified. +launch.not_finished_downloading_libraries=Did not finish downloading libraries, continue launching game? +launch.not_finished_decompressing_natives=Did not finish decompressing native libraries, continue launching game? + +install.no_version=The version is not found. +install.no_version_if_intall=The needed version is not found, should install the version automatically? +install.not_refrehsed=The installer list is not refreshed. +install.download_list=Download List + +install.liteloader.get_list=Get LiteLoader List +install.liteloader.install=Install LiteLoader + +install.forge.get_list=Get Forge List +install.forge.install=Install Forge +install.forge.get_changelogs=Get Forge Changelogs + +install.optifine.install=Install Optifine +install.optifine.get_list=Get OptifineList + +install.failed_forge=Failed to Install Forge +install.failed_optifine=Failed to Install Optifine +install.failed_liteloader=Failed to Install LiteLoader +install.failed_download_forge=Failed to Download Forge +install.failed_download_optifine=Failed to Download Optifine +install.failed=Failed to install +install.success=Install successfully +install.no_forge=No Forge +install.choose_forge=Choose the version you want to install Forge +install.version=Version +install.mcversion=Game Version +install.time=Time +install.release_time=Release Time +install.type=Type + +crash.launcher=Launcher has crashed! +crash.minecraft=Minecraft has crashed! + +login.choose_charactor=Please choose the charactor you want +login.no_charactor=No charactor in this account. +login.your_password=Your password +login.failed=Failed to login +login.no_Player007=You have not set username! +login.wrong_password=Wrong password or username +login.invalid_username=Invalid username +login.invalid_uuid_and_username=Invalid UUID and username +login.invalid_password=Invalid password +login.invalid_access_token=Invalid Access Token +login.changed_client_token=The server response has changed the client token. +login.not_email=The username must be a e-mail. +login.type=Login +login.username=Name +login.account=Email + +login.failed.connect_authentication_server=Cannot connect the authentication server. Check your network. + +login.profile.not_logged_in=Not Logged In and Cannot modify the profile. +login.profile.selected=Cannot modify the profile, you must logout and go back. + +login.methods.yggdrasil=Mojang +login.methods.offline=Offline +login.methods.no_method=No login method + +log.playername_null=The player name is empty. + +minecraft.no_selected_version=No selected Minecraft version +minecraft.wrong_path=Wrong Minecraft path, the launcher could not find the path. + +operation.stopped=The operation was aborted. +operation.confirm_stop=Terminate the operations? + +ui.login.password=Password +ui.more=More + +crash.advice.UnsupportedClassVersionError=Maybe your java is too old, try to update the java. +crash.advice.ConcurrentModificationException=Maybe your Java is newer than 1.8.0_11, you could downgrade to Java 7. +crash.advice.ClassNotFoundException=Minecraft or mods are incomplete. Update your game and mods! +crash.advice.NoSuchFieldError=Minecraft or mods are incomplete. Update your game and mods! +crash.advice.SecurityException=Maybe you have modified minecraft.jar but have not remove the META-INF.\u8bf7\u901a\u8fc7\u538b\u7f29\u8f6f\u4ef6\u5220\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u5939\u3002 +crash.advice.otherwise=Maybe mods caused problems. + +crash.advice.OpenGL=Maybe drivers caused problems. +crash.advice.no_lwjgl=Maybe drivers caused problems. + +crash.advice.no=No advice. + +crash.error=Minecraft has crashed. +crash.main_class_not_found=Main Class is not found, may be your mc has been broken. +crash.class_path_wrong=Maybe the launch script is malformed. + +ui.label.newProfileWindow.new_profile_name=New Profile Name: +ui.label.newProfileWindow.copy_from=Copy From: +ui.newProfileWindow.title=New Config + +ui.button.ok=OK +ui.button.refresh=Refresh +ui.button.run=Play +ui.button.settings=Settings +ui.button.about=About +ui.button.others=Others +ui.button.logout=LogOut +ui.button.download=Download +ui.button.retry=Retry +ui.button.delete=Delete +ui.button.install=Install +ui.button.info=Info +ui.button.save=Save +ui.button.copy=Copy +ui.button.clear=Clear +ui.button.close=Close +ui.button.explore=Explore +button.cancel=Cancel +button.ok=OK + +ui.label.version=Version +ui.label.password=Password +ui.label.profile=Profile + +ui.message.first_load=Please enter your name. +ui.message.enter_password=Please enter your password. +ui.message.launching=Launching... +ui.message.making=Generating... +ui.message.sure_remove=Sure to remove profile %s? + +ui.label.settings=Settings +ui.label.crashing=Hello Minecraft! Launcher has crashed! +ui.label.crashing_out_dated=Hello Minecraft! Launcher has crashed! And your launcher is not the latest version. Update it! +ui.label.failed_set=Failed to set: + +download=Download +download.mojang=Mojang +download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/) +download.not_200=Failed to download, the response code +download.failed=Failed to download +download.successfully=Download Successfully + +message.error=Error +message.cannot_open_explorer=Cannot open explorer: +message.cancelled=Cancelled +message.info=Info + +folder.game=Game Dir +folder.mod=Mod +folder.coremod=Core Mod +folder.config=Configs +folder.resourcepacks=Resourcepacks +folder.screenshots=Screenshots +folder.saves=Saves + +settings.tabs.game_download=Games +settings.tabs.installers=Installers +settings.tabs.assets_downloads=Assets + +settings=Settings +settings.explore=Explore +settings.manage=Manage +settings.cannot_remove_default_config=Cannot remove the default configution. +settings.max_memory=Max Memory/MB +settings.java_dir=Java Dir +settings.game_directory=Game Dir +settings.dimension=Dimension +settings.fullscreen=Fullscreen +settings.update_version=Update version json. +settings.physical_memory=Physical Memory Size + +settings.failed_load=Failed to load settings file. Remove it? + +advancedsettings=Advanced +advancedsettings.launcher_visible=Launcher Visibility +advancedsettings.run_directory=Run Directory +advencedsettings.debug_mode=Debug Mode +advancedsettings.java_permanent_generation_space=Permanent Generation Space/MB +advancedsettings.jvm_args=Java VM Arguments +advancedsettings.Minecraft_arguments=Minecraft Arguments +advancedsettings.launcher_visibility.close=Close the launcher when the game launched. +advancedsettings.launcher_visibility.hide=Hide the launcher when the game launched. +advancedsettings.launcher_visibility.keep=Keep the launcher visible. +advancedsettings.game_dir.default=Default (.minecraft/) +advancedsettings.game_dir.independent=Independent (.minecraft/versions//,\u9664assets,libraries) +advancedsettings.no_jvm_args=No JVM Args +advancedsettings.java_args_default=Default java args: -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true + +mainwindow.show_log=Show Logs +mainwindow.make_launch_script=Make Launching Script. +mainwindow.make_launch_script_failed=Failed to make script. +mainwindow.enter_script_name=Enter the script name. +mainwindow.make_launch_succeed=Finished script creation. +mainwindow.no_version=No version found. You could download the game in the game settings. + +launcher.about=About Author
\nEmail\uff1ahuanghongxun2008@126.com
\nMinecraft Forum ID: klkl6523
\nCopyright (c) 2013 huangyuhui +launcher.download_source=Download Source +launcher.background_location=Background Location +launcher.exit_failed=Failed to shutdown. +launcher.versions_json_not_matched=The version %s is malformed! There are a json:%s in this version. Do you want to fix this problem? +launcher.versions_json_not_matched_needs_auto_completion=The version %s lost json, needs auto completion? +launcher.versions_json_not_matched_cannot_auto_completion=The version %s lost json, but cannot auto complete it, delete it? +launcher.choose_bgpath=Choose background path. +launcher.background_tooltip=\n\n\u542f\u52a8\u5668\u9ed8\u8ba4\u4f7f\u7528\u81ea\u5e26\u7684\u80cc\u666f
\n\u5982\u679c\u5f53\u524d\u76ee\u5f55\u6709background.png\uff0c\u5219\u4f1a\u4f7f\u7528\u8be5\u6587\u4ef6\u4f5c\u4e3a\u80cc\u666f
\n\u5982\u679c\u5f53\u524d\u76ee\u5f55\u6709bgskin\u5b50\u76ee\u5f55\uff0c\u5219\u4f1a\u968f\u673a\u4f7f\u7528\u91cc\u9762\u7684\u4e00\u5f20\u56fe\u4f5c\u4e3a\u80cc\u666f
\n\u5982\u679c\u8be5\u80cc\u666f\u5730\u5740\u88ab\u4fee\u6539\uff0c\u5219\u4f1a\u4f7f\u7528\u80cc\u666f\u5730\u5740\u91cc\u7684\u4e00\u5f20\u56fe\u4f5c\u4e3a\u80cc\u666f
\n\u80cc\u666f\u5730\u5740\u5141\u8bb8\u6709\u591a\u4e2a\u5730\u5740\uff0c\u4f7f\u7528\u534a\u89d2\u5206\u53f7";"(\u4e0d\u5305\u542b\u53cc\u5f15\u53f7)\u5206\u9694\n\n +launcher.update_launcher=Check for update +launcher.enable_shadow=Enable Window Shadow +launcher.theme=Theme + +launcher.title.game=Games +launcher.title.main=Home +launcher.title.launcher=Launcher + +versions.release=Release +versions.snapshot=Snapshot +versions.old_beta=Beta +versions.old_alpha=Old Alpha + +versions.manage.rename=Rename this version +versions.manage.rename.message=Please enter the new name +versions.manage.remove=Delete this version +versions.manage.remove.confirm=Sure to remove the version +versions.manage.redownload_json=Redownload Minecraft Configuration(minecraft.json) +versions.manage.redownload_assets_index=Redownload Assets Index + +advice.os64butjdk32=Your OS is 64-Bit but your Java is 32-Bit. The 64-Bit Java is recommended. + +assets.download_all=Download Assets Files +assets.not_refreshed=The assets list is not refreshed, please refresh it once. +assets.failed=Failed to get the list, try again. +assets.list.1_7_3_after=1.7.3 And Higher +assets.list.1_6=1.6(BMCLAPI) +assets.type=Asset Type +assets.download=Download Assets +assets.no_assets=No assets folder found, there's no sound & language file gaming. You can go to Game Settings->Assets Download to download assets. + +gamedownload.not_refreshed=The game list is not refreshed, please refresh it once. + +taskwindow.title=Tasks +taskwindow.single_progress=Single progress +taskwindow.total_progress=Total progress +taskwindow.cancel=Cancel +taskwindow.no_more_instance=Maybe you opened more than one task window, dont open it again! + +setupwindow.include_minecraft=Import game +setupwindow.find_in_configurations=Finished importing. You can find it in the configuration selection bar. +setupwindow.give_a_name=Give a name to the new game. +setupwindow.new=New +setupwindow.no_empty_name=Version name cannot be empty. + +update.no_browser=Cannot open any browser. The link has been copied to the clipboard. You can paste it to the address bar. +update.should_open_link=Are you willing to open the update link? +update.newest_version=Newest version: +update.failed=Failed to check for updates. +update.found=(Found Update!) + +logwindow.terminate_game=Terminate Game +logwindow.tieba=Tieba + +selector.choose=Choose + +minecraft.invalid=Invalid +minecraft.invalid_jar=Invalid Jar +minecraft.not_a_file=Not a file +minecraft.not_found=Not found +minecraft.not_readable=Not readable +minecraft.modified=(Modified!) + +color.red=Red +color.blue=Blue +color.green=Green +color.orange=Orange +color.dark_blue=Dark Blue +color.purple=Purple \ No newline at end of file diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties new file mode 100644 index 000000000..27df800f2 --- /dev/null +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties @@ -0,0 +1,276 @@ +launch.failed=\u542f\u52a8\u5931\u8d25 +launch.failed_creating_process=\u542f\u52a8\u5931\u8d25\uff0c\u5728\u521b\u5efa\u65b0\u8fdb\u7a0b\u65f6\u53d1\u751f\u9519\u8bef\uff0c\u53ef\u80fd\u662fJava\u8def\u5f84\u9519\u8bef\u3002 +launch.failed_sh_permission=\u4e3a\u542f\u52a8\u6587\u4ef6\u6dfb\u52a0\u6743\u9650\u65f6\u53d1\u751f\u9519\u8bef +launch.failed_packing_jar=\u5728\u6253\u5305jar\u65f6\u53d1\u751f\u9519\u8bef +launch.unsupported_launcher_version=\u5bf9\u4e0d\u8d77\uff0c\u672c\u542f\u52a8\u5668\u73b0\u5728\u53ef\u80fd\u4e0d\u80fd\u542f\u52a8\u8fd9\u4e2a\u7248\u672c\u7684Minecraft\uff0c\u4f46\u542f\u52a8\u5668\u8fd8\u662f\u4f1a\u5c1d\u8bd5\u542f\u52a8\uff0c\u8bf7\u5c3d\u5feb\u5c06\u6b64\u95ee\u9898\u62a5\u544a\u7ed9\u4f5c\u8005\u3002 +launch.too_big_memory_alloc_64bit=\u60a8\u8bbe\u7f6e\u7684\u5185\u5b58\u5927\u5c0f\u8fc7\u5927\uff0c\u7531\u4e8e\u53ef\u80fd\u8d85\u8fc7\u4e8632\u4f4dJava\u7684\u5185\u5b58\u5206\u914d\u9650\u5236\uff0c\u6240\u4ee5\u53ef\u80fd\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\uff0c\u8bf7\u5c06\u5185\u5b58\u8c03\u81f31024MB\u6216\u66f4\u5c0f\uff0c\u542f\u52a8\u5668\u4ecd\u4f1a\u5c1d\u8bd5\u542f\u52a8\u3002 +launch.too_big_memory_alloc_free_space_too_low=\u60a8\u8bbe\u7f6e\u7684\u5185\u5b58\u5927\u5c0f\u8fc7\u5927\uff0c\u7531\u4e8e\u8d85\u8fc7\u4e86\u7cfb\u7edf\u5185\u5b58\u5927\u5c0f%dMB\uff0c\u6240\u4ee5\u53ef\u80fd\u5f71\u54cd\u6e38\u620f\u4f53\u9a8c\u6216\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\uff0c\u542f\u52a8\u5668\u4ecd\u4f1a\u5c1d\u8bd5\u542f\u52a8\u3002 +launch.cannot_create_jvm=\u622a\u83b7\u5230\u65e0\u6cd5\u521b\u5efaJava\u865a\u62df\u673a\uff0c\u53ef\u80fd\u662fJava\u53c2\u6570\u6709\u95ee\u9898\uff0c\u53ef\u4ee5\u5728\u8bbe\u7f6e\u4e2d\u5f00\u542f\u65e0\u53c2\u6570\u6a21\u5f0f\u542f\u52a8\u3002 +launch.circular_dependency_versions=\u53d1\u73b0\u6e38\u620f\u7248\u672c\u5faa\u73af\u5f15\u7528\uff0c\u8bf7\u786e\u8ba4\u60a8\u7684\u5ba2\u6237\u7aef\u672a\u88ab\u4fee\u6539\u6216\u4fee\u6539\u5bfc\u81f4\u51fa\u73b0\u6b64\u95ee\u9898\u3002 +launch.not_finished_downloading_libraries=\u672a\u5b8c\u6210\u6e38\u620f\u4f9d\u8d56\u5e93\u7684\u4e0b\u8f7d\uff0c\u8fd8\u8981\u7ee7\u7eed\u542f\u52a8\u6e38\u620f\u5417\uff1f +launch.not_finished_decompressing_natives=\u672a\u80fd\u89e3\u538b\u6e38\u620f\u672c\u5730\u5e93\uff0c\u8fd8\u8981\u7ee7\u7eed\u542f\u52a8\u6e38\u620f\u5417\uff1f + +install.no_version=\u672a\u627e\u5230\u8981\u5b89\u88c5\u7684\u5bf9\u5e94MC\u7248\u672c +install.no_version_if_intall=\u672a\u627e\u5230\u8981\u5b89\u88c5\u7684\u5bf9\u5e94MC\u7248\u672c\uff0c\u662f\u5426\u81ea\u52a8\u5b89\u88c5\u9700\u8981\u7684MC\u7248\u672c\uff1f +install.not_refrehsed=\u672a\u5237\u65b0\u5217\u8868 +install.download_list=\u4e0b\u8f7d\u5217\u8868 + +install.liteloader.get_list=\u83b7\u53d6LiteLoader\u5217\u8868 +install.liteloader.install=\u5b89\u88c5LiteLoader + +install.forge.get_list=\u83b7\u53d6Forge\u5217\u8868 +install.forge.install=\u5b89\u88c5Forge +install.forge.get_changelogs=\u83b7\u53d6Forge\u66f4\u65b0\u8bb0\u5f55 + +install.optifine.install=\u5b89\u88c5Optifine +install.optifine.get_list=\u83b7\u53d6Optifine\u5217\u8868 + +install.failed_forge=\u5b89\u88c5Forge\u5931\u8d25 +install.failed_optifine=\u5b89\u88c5Optifine\u5931\u8d25 +install.failed_liteloader=\u5b89\u88c5LiteLoader\u5931\u8d25 +install.failed_download_forge=\u4e0b\u8f7dForge\u5931\u8d25 +install.failed_download_optifine=\u4e0b\u8f7dOptifine\u5931\u8d25 +install.failed=\u5b89\u88c5\u5931\u8d25 +install.success=\u5b89\u88c5\u6210\u529f +install.no_forge=\u6ca1\u6709\u5b89\u88c5Forge +install.choose_forge=\u9009\u62e9\u4f60\u5b89\u88c5\u7684Forge\u7248\u672c +install.version=\u7248\u672c +install.mcversion=\u6e38\u620f\u7248\u672c +install.time=\u65f6\u95f4 +install.release_time=\u91ca\u653e\u65f6\u95f4 +install.type=\u7c7b\u578b + +crash.launcher=\u542f\u52a8\u5668\u5d29\u6e83\u4e86\uff01 +crash.minecraft=Minecraft\u5d29\u6e83\u4e86\uff01 + +login.choose_charactor=\u8bf7\u9009\u62e9\u60a8\u8981\u4f7f\u7528\u7684\u89d2\u8272 +login.no_charactor=\u8be5\u5e10\u53f7\u6ca1\u6709\u89d2\u8272 +login.your_password=\u60a8\u7684\u5bc6\u7801 +login.failed=\u767b\u5f55\u5931\u8d25\uff1a +login.no_Player007=\u4f60\u8fd8\u672a\u8bbe\u7f6e\u7528\u6237\u540d\uff01 +login.wrong_password=\u53ef\u80fd\u662f\u60a8\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef +login.invalid_username=\u65e0\u6548\u7684\u7528\u6237\u540d +login.invalid_uuid_and_username=\u65e0\u6548\u7684UUID\u548c\u7528\u6237\u540d +login.invalid_password=\u65e0\u6548\u7684\u5bc6\u7801 +login.invalid_access_token=\u65e0\u6548\u7684\u8bbf\u95ee\u4ee4\u724c +login.changed_client_token=\u670d\u52a1\u5668\u56de\u5e94\u5df2\u7ecf\u4fee\u6539\u5ba2\u6237\u7aef\u4ee4\u724c +login.not_email=\u7528\u6237\u540d\u5fc5\u987b\u662f\u90ae\u7bb1 +login.type=\u767b\u5f55 +login.username=\u540d\u5b57 +login.account=\u90ae\u7bb1 + +login.failed.connect_authentication_server=\u65e0\u6cd5\u8fde\u63a5\u8ba4\u8bc1\u670d\u52a1\u5668,\u53ef\u80fd\u662f\u7f51\u7edc\u95ee\u9898 + +login.profile.not_logged_in=\u65e0\u6cd5\u4fee\u6539\u6e38\u620f\u8d44\u6599\u540c\u65f6\u672a\u767b\u5f55 +login.profile.selected=\u65e0\u6cd5\u4fee\u6539\u6e38\u620f\u8d44\u6599. \u4f60\u5fc5\u987b\u767b\u51fa\u518d\u8fd4\u56de. + +login.methods.yggdrasil=\u6b63\u7248\u767b\u5f55 +login.methods.offline=\u79bb\u7ebf\u6a21\u5f0f +login.methods.no_method=\u6ca1\u6709\u767b\u5165\u65b9\u5f0f... + +log.playername_null=\u73a9\u5bb6\u540d\u4e3a\u7a7a\uff0c\u8fd9\u4ee3\u8868\u7740\u767b\u5f55\u65b9\u6cd5\u51fa\u73b0\u95ee\u9898 + +minecraft.no_selected_version=\u6ca1\u6709\u9009\u62e9\u4efb\u4f55\u4e00\u4e2aMinecraft\u7248\u672c +minecraft.wrong_path=\u9519\u8bef\u7684Minecraft\u8def\u5f84\uff0c\u542f\u52a8\u5668\u672a\u627e\u5230\u8bbe\u5b9a\u7684Minecraft\u8def\u5f84\uff0c\u8bf7\u68c0\u67e5\u3002 + +operation.stopped=\u64cd\u4f5c\u88ab\u5f3a\u884c\u7ec8\u6b62 +operation.confirm_stop=\u771f\u7684\u8981\u7ec8\u6b62\u64cd\u4f5c\u5417\uff1f + +ui.login.password=\u5bc6\u7801 +ui.more=\u66f4\u591a + +crash.advice.UnsupportedClassVersionError=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u8fc7\u4e8e\u8001\u65e7\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u66f4\u6362\u6700\u65b0Java\u5e76\u5728\u7248\u672c\u8bbe\u7f6e\u7684Java\u8def\u5f84\u4e2d\u8bbe\u7f6e. +crash.advice.ConcurrentModificationException=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u9ad8\u4e8eJava 1.8.0_11\u5bfc\u81f4\u7684,\u53ef\u4ee5\u5c1d\u8bd5\u5378\u8f7dJava8\u5b89\u88c5Java7\u3002 +crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 +crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 +crash.advice.SecurityException=\u53ef\u80fd\u662f\u60a8\u4fee\u6539\u4e86minecraft.jar\u4f46\u672a\u5220\u9664META-INF\u6587\u4ef6\u5939\u7684\u539f\u56e0\u3002\u8bf7\u901a\u8fc7\u538b\u7f29\u8f6f\u4ef6\u5220\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u5939\u3002 +crash.advice.otherwise=\u53ef\u80fd\u662fMod\u6216\u5176\u4ed6\u95ee\u9898\u3002 + +crash.advice.OpenGL=\u53ef\u80fd\u662f\u663e\u5361/\u58f0\u5361\u9a71\u52a8\u95ee\u9898\uff0c\u4e5f\u53ef\u80fd\u662fMod\u5bfc\u81f4\u7684\u95ee\u9898\u3002 +crash.advice.no_lwjgl=\u53ef\u80fd\u662f\u6e38\u620f\u4f9d\u8d56\u5e93\u4e0d\u5b8c\u6574\u6216\u89e3\u538b\u4f9d\u8d56\u5e93\u65f6\u51fa\u9519\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 + +crash.advice.no=\u65e0\u5efa\u8bae\u3002 + +crash.error=\u60a8\u7684Minecraft\u5d29\u6e83\u4e86\u3002 +crash.main_class_not_found=\u627e\u4e0d\u5230\u4e3b\u7c7b\uff0c\u53ef\u80fd\u662f\u60a8\u7684JSON\u6587\u4ef6\u586b\u5199\u9519\u8bef\u3002\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002 +crash.class_path_wrong=\u89e3\u6790Class Path\u65f6\u51fa\u73b0\u9519\u8bef\uff0c\u6b64\u9519\u8bef\u672c\u4e0d\u5e94\u8be5\u53d1\u751f\u3002\u53ef\u80fd\u662f\u542f\u52a8\u811a\u672c\u9519\u8bef\uff0c\u8bf7\u4ed4\u7ec6\u68c0\u67e5\u542f\u52a8\u811a\u672c\u3002 + +ui.label.newProfileWindow.new_profile_name=\u65b0\u914d\u7f6e\u540d: +ui.label.newProfileWindow.copy_from=\u590d\u5236\u914d\u7f6e: +ui.newProfileWindow.title=\u65b0\u5efa\u914d\u7f6e + +ui.button.ok=\u786e\u8ba4 +ui.button.refresh=\u5237\u65b0 +ui.button.run=\u542f\u52a8Minecraft +ui.button.settings= +ui.button.about=\u5173\u4e8e +ui.button.others=\u5176\u4ed6 +ui.button.logout=\u767b\u51fa +ui.button.download=\u4e0b\u8f7d +ui.button.retry=\u91cd\u8bd5 +ui.button.delete=\u5220\u9664 +ui.button.install=\u5b89\u88c5 +ui.button.info=\u4fe1\u606f +ui.button.save=\u4fdd\u5b58 +ui.button.copy=\u590d\u5236 +ui.button.clear=\u6e05\u9664 +ui.button.close=\u5173\u95ed +ui.button.explore=\u6d4f\u89c8 +button.cancel=\u53d6\u6d88 +button.ok=\u786e\u5b9a + +ui.label.version=\u7248\u672c +ui.label.password=\u5bc6\u7801 +ui.label.profile=\u914d\u7f6e + +ui.message.first_load=\u8bf7\u5728\u5de6\u8fb9\u8f93\u5165\u60a8\u7684\u8d26\u53f7 +ui.message.enter_password=\u8bf7\u5728\u5de6\u8fb9\u8f93\u5165\u60a8\u7684\u5bc6\u7801 +ui.message.launching=\u542f\u52a8\u4e2d +ui.message.making=\u751f\u6210\u4e2d +ui.message.sure_remove=\u771f\u7684\u8981\u5220\u9664\u914d\u7f6e%s\u5417\uff1f + +ui.label.settings=\u9009\u9879 +ui.label.crashing=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u8bf7\u590d\u5236\u4e0b\u5217\u5185\u5bb9\u5e76\u901a\u8fc7mcbbs\u3001\u8d34\u5427\u6216Minecraft Forum\u53cd\u9988bug\u3002 +ui.label.crashing_out_dated=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u5df2\u68c0\u6d4b\u5230\u60a8\u7684\u542f\u52a8\u5668\u4e0d\u662f\u6700\u65b0\u7248\u672c\uff0c\u8bf7\u66f4\u65b0\u540e\u518d\u8bd5\uff01 +ui.label.failed_set=\u8bbe\u7f6e\u5931\u8d25\uff1a + +download=\u4e0b\u8f7d +download.mojang=\u5b98\u65b9 +download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/) +download.not_200=\u4e0b\u8f7d\u5931\u8d25\uff0c\u56de\u590d\u7801 +download.failed=\u4e0b\u8f7d\u5931\u8d25 +download.successfully=\u4e0b\u8f7d\u5b8c\u6210 + +message.error=\u9519\u8bef +message.cannot_open_explorer=\u65e0\u6cd5\u6253\u5f00\u6587\u4ef6\u7ba1\u7406\u5668: +message.cancelled=\u5df2\u53d6\u6d88 +message.info=\u63d0\u793a + +folder.game=\u6e38\u620f\u6587\u4ef6\u5939 +folder.mod=MOD\u6587\u4ef6\u5939 +folder.coremod=\u6838\u5fc3MOD\u6587\u4ef6\u5939 +folder.config=\u914d\u7f6e\u6587\u4ef6\u5939 +folder.resourcepacks=\u8d44\u6e90\u5305\u6587\u4ef6\u5939 +folder.screenshots=\u622a\u56fe\u6587\u4ef6\u5939 +folder.saves=\u5b58\u6863\u6587\u4ef6\u5939 + +settings.tabs.game_download=\u6e38\u620f\u4e0b\u8f7d +settings.tabs.installers=\u81ea\u52a8\u5b89\u88c5 +settings.tabs.assets_downloads=\u8d44\u6e90\u4e0b\u8f7d + +settings=\u666e\u901a\u8bbe\u7f6e +settings.explore=\u6d4f\u89c8 +settings.manage=\u7ba1\u7406 +settings.cannot_remove_default_config=\u4e0d\u80fd\u5220\u9664\u9ed8\u8ba4\u914d\u7f6e +settings.max_memory=\u6700\u5927\u5185\u5b58/MB +settings.java_dir=Java\u8def\u5f84 +settings.game_directory=\u6e38\u620f\u8def\u5f84 +settings.dimension=\u5206\u8fa8\u7387 +settings.fullscreen=\u5168\u5c4f +settings.update_version=\u66f4\u65b0\u7248\u672c\u6587\u4ef6 +settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f + +settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f + +advancedsettings=\u9ad8\u7ea7\u8bbe\u7f6e +advancedsettings.launcher_visible=\u542f\u52a8\u5668\u53ef\u89c1\u6027 +advancedsettings.run_directory=\u8fd0\u884c\u8def\u5f84 +advencedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f +advancedsettings.java_permanent_generation_space=\u5185\u5b58\u6c38\u4e45\u4fdd\u5b58\u533a\u57df/MB +advancedsettings.jvm_args=Java\u865a\u62df\u673a\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199) +advancedsettings.Minecraft_arguments=Minecraft\u989d\u5916\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199) +advancedsettings.launcher_visibility.close=\u6e38\u620f\u542f\u52a8\u540e\u7ed3\u675f\u542f\u52a8\u5668 +advancedsettings.launcher_visibility.hide=\u6e38\u620f\u542f\u52a8\u540e\u9690\u85cf\u542f\u52a8\u5668 +advancedsettings.launcher_visibility.keep=\u4fdd\u6301\u542f\u52a8\u5668\u53ef\u89c1 +advancedsettings.game_dir.default=\u9ed8\u8ba4(.minecraft/) +advancedsettings.game_dir.independent=\u5404\u7248\u672c\u72ec\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries) +advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c2\u6570(\u4f7f\u7528Java9\u65f6\u5fc5\u52fe) +advancedsettings.java_args_default=\u542f\u52a8\u5668\u9ed8\u8ba4\u6dfb\u52a0\u7684\u53c2\u6570\uff08\u8bf7\u4e0d\u8981\u91cd\u590d\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true + +mainwindow.show_log=\u67e5\u770b\u65e5\u5fd7 +mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c +mainwindow.make_launch_script_failed=\u751f\u6210\u542f\u52a8\u811a\u672c\u5931\u8d25 +mainwindow.enter_script_name=\u8f93\u5165\u8981\u751f\u6210\u811a\u672c\u7684\u6587\u4ef6\u540d +mainwindow.make_launch_succeed=\u542f\u52a8\u811a\u672c\u5df2\u751f\u6210\u5b8c\u6bd5: +mainwindow.no_version=\u672a\u627e\u5230\u4efb\u4f55\u7248\u672c\uff0c\u60a8\u53ef\u4ee5\u5230[\u8bbe\u7f6e]->[\u6e38\u620f\u4e0b\u8f7d]\u4e2d\u4e0b\u8f7d\u6e38\u620f\u3002 + +launcher.about=\u9ed8\u8ba4\u80cc\u666f\u56fe\u6765\u81eaLiberty Dome\u670d\u52a1\u5668\u3002
\u5173\u4e8e\u4f5c\u8005\uff1a
\n\u767e\u5ea6ID\uff1ahuanghongxun20
\nmcbbs\uff1ahuanghongxun
\n\u90ae\u7bb1\uff1ahuanghongxun2008@126.com
\nMinecraft Forum ID: klkl6523
\n\u6b22\u8fce\u63d0\u4ea4Bug\u54e6
\nCopyright (c) 2013-2015 huangyuhui.
\u514d\u8d23\u58f0\u660e\uff1aMinecraft\u8f6f\u4ef6\u7248\u6743\u5f52Mojang AB\u6240\u6709\uff0c\u6e38\u620f\u7531\u4e8e\u8bef\u64cd\u4f5c\u672c\u542f\u52a8\u5668\u800c\u4e22\u5931\u6570\u636e\u7684\u6982\u4e0d\u8d1f\u8d23\u3002 +launcher.download_source=\u4e0b\u8f7d\u6e90 +launcher.background_location=\u80cc\u666f\u5730\u5740 +launcher.exit_failed=\u5f3a\u5236\u9000\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662fForge 1.7.10\u53ca\u66f4\u9ad8\u7248\u672c\u5bfc\u81f4\u7684\uff0c\u65e0\u6cd5\u89e3\u51b3\u3002 +launcher.versions_json_not_matched=\u7248\u672c%s\u683c\u5f0f\u4e0d\u89c4\u8303\uff01\u8be5\u7248\u672c\u6587\u4ef6\u5939\u4e0b\u6709json:%s\uff0c\u662f\u5426\u66f4\u540d\u8fd9\u4e2a\u6587\u4ef6\u6765\u89c4\u8303\u683c\u5f0f\uff1f +launcher.versions_json_not_matched_needs_auto_completion=\u7248\u672c%s\u7f3a\u5931\u5fc5\u8981\u7684\u7248\u672c\u4fe1\u606f(JSON)\u6587\u4ef6\uff0c\u662f\u5426\u81ea\u52a8\u8865\u5168\uff1f +launcher.versions_json_not_matched_cannot_auto_completion=\u7248\u672c%s\u7f3a\u5931\u5fc5\u8981\u7684\u7248\u672c\u4fe1\u606f(JSON)\u6587\u4ef6\uff0c\u4f46\u662f\u4f3c\u4e4e\u4e0d\u662f\u539f\u7248\uff0c\u65e0\u6cd5\u81ea\u52a8\u8865\u5168\uff0c\u662f\u5426\u5220\u9664\u8be5\u7248\u672c\uff1f +launcher.versions_json_not_formatted=\u7248\u672c%s\u4fe1\u606f\u6587\u4ef6\u683c\u5f0f\u9519\u8bef\uff0c\u662f\u5426\u91cd\u65b0\u4e0b\u8f7d\uff1f +launcher.choose_bgpath=\u9009\u62e9\u80cc\u666f\u8def\u5f84 +launcher.background_tooltip=\n\n\u542f\u52a8\u5668\u9ed8\u8ba4\u4f7f\u7528\u81ea\u5e26\u7684\u80cc\u666f
\n\u5982\u679c\u5f53\u524d\u76ee\u5f55\u6709background.png\uff0c\u5219\u4f1a\u4f7f\u7528\u8be5\u6587\u4ef6\u4f5c\u4e3a\u80cc\u666f
\n\u5982\u679c\u5f53\u524d\u76ee\u5f55\u6709bgskin\u5b50\u76ee\u5f55\uff0c\u5219\u4f1a\u968f\u673a\u4f7f\u7528\u91cc\u9762\u7684\u4e00\u5f20\u56fe\u4f5c\u4e3a\u80cc\u666f
\n\u5982\u679c\u8be5\u80cc\u666f\u5730\u5740\u88ab\u4fee\u6539\uff0c\u5219\u4f1a\u4f7f\u7528\u80cc\u666f\u5730\u5740\u91cc\u7684\u4e00\u5f20\u56fe\u4f5c\u4e3a\u80cc\u666f
\n\u80cc\u666f\u5730\u5740\u5141\u8bb8\u6709\u591a\u4e2a\u5730\u5740\uff0c\u4f7f\u7528\u534a\u89d2\u5206\u53f7";"(\u4e0d\u5305\u542b\u53cc\u5f15\u53f7)\u5206\u9694\n\n +launcher.update_launcher=\u68c0\u67e5\u66f4\u65b0 +launcher.enable_shadow=\u542f\u7528\u7a97\u53e3\u9634\u5f71(\u91cd\u542f\u542f\u52a8\u5668\u751f\u6548,\u53ef\u52a0\u5feb\u6e32\u67d3\u901f\u5ea6) +launcher.theme=\u4e3b\u9898 + +launcher.title.game=\u6e38\u620f\u8bbe\u7f6e +launcher.title.main=\u4e3b\u9875 +launcher.title.launcher=\u542f\u52a8\u5668\u8bbe\u7f6e + +versions.release=\u7a33\u5b9a\u7248 +versions.snapshot=\u5feb\u7167\u7248 +versions.old_beta=\u6d4b\u8bd5\u7248 +versions.old_alpha=\u8fdc\u53e4\u7248 + +versions.manage.rename=\u91cd\u547d\u540d\u8be5\u7248\u672c +versions.manage.rename.message=\u8bf7\u8f93\u5165\u8981\u6539\u6210\u7684\u540d\u5b57 +versions.manage.remove=\u5220\u9664\u8be5\u7248\u672c +versions.manage.remove.confirm=\u771f\u7684\u8981\u5220\u9664\u7248\u672c +versions.manage.redownload_json=\u91cd\u65b0\u4e0b\u8f7d\u7248\u672c\u914d\u7f6e(minecraft.json) +versions.manage.redownload_assets_index=\u91cd\u65b0\u4e0b\u8f7d\u8d44\u6e90\u914d\u7f6e(assets_index.json) + +advice.os64butjdk32=\u60a8\u7684\u7cfb\u7edf\u662f64\u4f4d\u7684\u4f46\u662fJava\u662f32\u4f4d\u7684\uff0c\u63a8\u8350\u60a8\u5b89\u88c564\u4f4dJava. + +assets.download_all=\u4e0b\u8f7d\u8d44\u6e90\u6587\u4ef6 +assets.not_refreshed=\u8d44\u6e90\u5217\u8868\u672a\u5237\u65b0\uff0c\u8bf7\u5237\u65b0\u4e00\u6b21\u3002 +assets.failed=\u83b7\u53d6\u5217\u8868\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u91cd\u8bd5\u3002 +assets.list.1_7_3_after=1.7.3\u53ca\u4ee5\u540e +assets.list.1_6=1.6(BMCLAPI) +assets.unkown_type_select_one=\u65e0\u6cd5\u89e3\u6790\u6e38\u620f\u7248\u672c\uff1a%s\uff0c\u8bf7\u9009\u62e9\u4e00\u79cd\u8d44\u6e90\u7c7b\u578b\u4e0b\u8f7d\u3002 +assets.type=\u8d44\u6e90\u7c7b\u578b +assets.download=\u4e0b\u8f7d\u8d44\u6e90 +assets.no_assets=\u672a\u68c0\u6d4b\u5230assets\u6587\u4ef6\u5939\uff0c\u542f\u52a8\u6e38\u620f\u540e\u5c06\u6ca1\u6709\u58f0\u97f3\u548c\u8bed\u8a00\u6587\u4ef6\uff0c\u8bf7\u5230\u6e38\u620f\u8bbe\u7f6e->\u8d44\u6e90\u4e0b\u8f7d\u4e0b\u8f7d\u8d44\u6e90\u3002 + +gamedownload.not_refreshed=\u6e38\u620f\u4e0b\u8f7d\u5217\u8868\u672a\u5237\u65b0\uff0c\u8bf7\u518d\u5237\u65b0\u4e00\u6b21\u3002 + +taskwindow.title=\u4efb\u52a1 +taskwindow.single_progress=\u5355\u9879\u8fdb\u5ea6 +taskwindow.total_progress=\u603b\u8fdb\u5ea6 +taskwindow.cancel=\u53d6\u6d88 +taskwindow.no_more_instance=\u53ef\u80fd\u540c\u65f6\u6253\u5f00\u4e86\u591a\u4e2a\u4efb\u52a1\u7a97\u53e3\uff0c\u8bf7\u4e0d\u8981\u591a\u6b21\u6253\u5f00\uff01 + +setupwindow.include_minecraft=\u5bfc\u5165\u6e38\u620f\u6587\u4ef6\u5939 +setupwindow.find_in_configurations=\u5bfc\u5165\u5b8c\u6210\uff0c\u5feb\u5230\u914d\u7f6e\u4e0b\u62c9\u6846\u4e2d\u627e\u65b0\u6e38\u620f\u8def\u5f84\u5427\uff01 +setupwindow.give_a_name=\u7ed9\u65b0\u6e38\u620f\u8def\u5f84\u8d77\u4e2a\u540d\u5b57\u5427 +setupwindow.new=\u65b0\u5efa +setupwindow.no_empty_name=\u540d\u5b57\u4e0d\u53ef\u4e3a\u7a7a + +update.no_browser=\u65e0\u6cd5\u6253\u5f00\u6d4f\u89c8\u5668\uff0c\u7f51\u5740\u5df2\u7ecf\u590d\u5236\u5230\u526a\u8d34\u677f\u4e86\uff0c\u60a8\u53ef\u4ee5\u624b\u52a8\u7c98\u8d34\u7f51\u5740\u6253\u5f00\u9875\u9762 +update.should_open_link=\u662f\u5426\u524d\u5f80\u53d1\u5e03\u9875\u9762\u66f4\u65b0\uff1f +update.newest_version=\u6700\u65b0\u7248\u672c\u4e3a\uff1a +update.failed=\u68c0\u67e5\u66f4\u65b0\u5931\u8d25 +update.found=(\u53d1\u73b0\u66f4\u65b0!) + +logwindow.terminate_game=\u7ed3\u675f\u6e38\u620f\u8fdb\u7a0b +logwindow.tieba=\u8d34\u5427 + +selector.choose=\u9009\u62e9 + +minecraft.invalid=\u65e0\u6548\u7684 +minecraft.invalid_jar=\u65e0\u6548\u7684jar\u5305 +minecraft.not_a_file=\u4e0d\u662f\u6587\u4ef6 +minecraft.not_found=\u627e\u4e0d\u5230minecraft.jar +minecraft.not_readable=minecraft.jar\u4e0d\u53ef\u8bfb +minecraft.modified=(\u4fee\u6539\u7684!) + +color.red=\u7ea2\u8272 +color.blue=\u84dd\u8272 +color.green=\u7eff\u8272 +color.orange=\u6a59\u8272 +color.dark_blue=\u6df1\u84dd\u8272 +color.purple=\u7d2b\u8272 \ No newline at end of file diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties new file mode 100644 index 000000000..c74290029 --- /dev/null +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties @@ -0,0 +1,274 @@ +launch.failed=\u555f\u52d5\u5931\u6557 +launch.failed_creating_process=\u555f\u52d5\u5931\u6557\uff0c\u5728\u5275\u5efa\u65b0\u9032\u7a0b\u6642\u767c\u751f\u932f\u8aa4\uff0c\u53ef\u80fd\u662fJava\u8def\u5f91\u932f\u8aa4\u3002 +launch.failed_sh_permission=\u70ba\u555f\u52d5\u6587\u4ef6\u6dfb\u52a0\u6b0a\u9650\u6642\u767c\u751f\u932f\u8aa4 +launch.failed_pa\u200b\u200bcking_jar=\u5728\u6253\u5305jar\u6642\u767c\u751f\u932f\u8aa4 +launch.unsupported_launcher_version=\u5c0d\u4e0d\u8d77\uff0c\u672c\u555f\u52d5\u5668\u73fe\u5728\u53ef\u80fd\u4e0d\u80fd\u555f\u52d5\u9019\u500b\u7248\u672c\u7684Minecraft\uff0c\u4f46\u555f\u52d5\u5668\u9084\u662f\u6703\u5617\u8a66\u555f\u52d5\uff0c\u8acb\u76e1\u5feb\u5c07\u6b64\u554f\u984c\u5831\u544a\u7d66\u4f5c\u8005\u3002 +launch.too_big_memory_alloc_64bit=\u60a8\u8bbe\u7f6e\u7684\u5185\u5b58\u5927\u5c0f\u8fc7\u5927\uff0c\u7531\u4e8e\u53ef\u80fd\u8d85\u8fc7\u4e8632\u4f4dJava\u7684\u5185\u5b58\u5206\u914d\u9650\u5236\uff0c\u6240\u4ee5\u53ef\u80fd\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\uff0c\u8bf7\u5c06\u5185\u5b58\u8c03\u81f31024MB\u6216\u66f4\u5c0f\uff0c\u542f\u52a8\u5668\u4ecd\u4f1a\u5c1d\u8bd5\u542f\u52a8\u3002 +launch.too_big_memory_alloc_free_space_too_low=\u60a8\u8bbe\u7f6e\u7684\u5185\u5b58\u5927\u5c0f\u8fc7\u5927\uff0c\u7531\u4e8e\u8d85\u8fc7\u4e86\u7cfb\u7edf\u5185\u5b58\u5927\u5c0f%dMB\uff0c\u6240\u4ee5\u53ef\u80fd\u5f71\u54cd\u6e38\u620f\u4f53\u9a8c\u6216\u65e0\u6cd5\u542f\u52a8\u6e38\u620f\uff0c\u542f\u52a8\u5668\u4ecd\u4f1a\u5c1d\u8bd5\u542f\u52a8\u3002 +launch.cannot_create_jvm=\u622a\u7372\u5230\u7121\u6cd5\u5275\u5efaJava\u865b\u64ec\u6a5f\uff0c\u53ef\u80fd\u662fJava\u53c3\u6578\u6709\u554f\u984c\uff0c\u53ef\u4ee5\u5728\u8a2d\u5b9a\u4e2d\u958b\u555f\u7121\u53c3\u6578\u6a21\u5f0f\u555f\u52d5\u3002 +launch.circular_dependency_versions=\u767c\u73fe\u904a\u6232\u7248\u672c\u5faa\u74b0\u5f15\u7528\uff0c\u8acb\u78ba\u8a8d\u60a8\u7684\u5ba2\u6236\u7aef\u672a\u88ab\u4fee\u6539\u6216\u4fee\u6539\u5c0e\u81f4\u51fa\u73fe\u6b64\u554f\u984c\u3002 +launch.not_finished_downloading_libraries=\u672a\u5b8c\u6210\u904a\u6232\u4f9d\u8cf4\u5eab\u7684\u4e0b\u8f09\uff0c\u9084\u8981\u7e7c\u7e8c\u555f\u52d5\u904a\u6232\u55ce\uff1f +launch.not_finished_decompressing_natives=\u672a\u80fd\u89e3\u58d3\u904a\u6232\u672c\u5730\u5eab\uff0c\u9084\u8981\u7e7c\u7e8c\u555f\u52d5\u904a\u6232\u55ce\uff1f + +install.no_version=\u672a\u627e\u5230\u8981\u5b89\u88dd\u7684\u5c0d\u61c9MC\u7248\u672c +install.no_version_if_intall=\u672a\u627e\u5230\u8981\u5b89\u88dd\u7684\u5c0d\u61c9MC\u7248\u672c\uff0c\u662f\u5426\u81ea\u52a8\u5b89\u88c5\u9700\u8981\u7684MC\u7248\u672c\uff1f +install.not_refrehsed=\u672a\u5237\u65b0\u5217\u8868 +install.download_list=\u4e0b\u8f09\u5217\u8868 + +install.liteloader.get_list=\u7372\u53d6LiteLoader\u5217\u8868 +install.liteloader.install=\u5b89\u88ddLiteLoader + +install.forge.get_list=\u7372\u53d6Forge\u5217\u8868 +install.forge.install=\u5b89\u88ddForge +install.forge.get_changelogs=\u7372\u53d6Forge\u66f4\u65b0\u8a18\u9304 + +install.optifine.install=\u5b89\u88ddOptifine +install.optifine.get_list=\u7372\u53d6Optifine\u5217\u8868 + +install.failed_forge=\u5b89\u88ddForge\u5931\u6557 +install.failed_optifine=\u5b89\u88ddOptifine\u5931\u6557 +install.failed_liteloader=\u5b89\u88ddLiteLoader\u5931\u6557 +install.failed_download_forge=\u4e0b\u8f09Forge\u5931\u6557 +install.failed_download_optifine=\u4e0b\u8f09Optifine\u5931\u6557 +install.failed=\u5b89\u88dd\u5931\u6557 +install.success=\u5b89\u88dd\u6210\u529f +install.no_forge=\u6c92\u6709\u5b89\u88ddForge +install.choose_forge=\u9078\u64c7\u4f60\u5b89\u88dd\u7684Forge\u7248\u672c +install.version=\u7248\u672c +install.mcversion=\u904a\u6232\u7248\u672c +install.time=\u6642\u9593 +install.release_time=\u91cb\u653e\u6642\u9593 +install.type=\u985e\u578b + +crash.launcher=\u555f\u52d5\u5668\u5d29\u6f70\u4e86\uff01 +crash.minecraft=Minecraft\u5d29\u6f70\u4e86\uff01 + +login.choose_charactor=\u8acb\u9078\u64c7\u60a8\u8981\u4f7f\u7528\u7684\u89d2\u8272 +login.no_charactor=\u8a72\u5e33\u865f\u6c92\u6709\u89d2\u8272 +login.your_password=\u60a8\u7684\u5bc6\u78bc +login.failed=\u767b\u9304\u5931\u6557\uff1a +login.no_Player007=\u4f60\u9084\u672a\u8a2d\u5b9a\u7528\u6236\u540d\uff01 +login.wrong_password=\u53ef\u80fd\u662f\u60a8\u7684\u7528\u6236\u540d\u6216\u5bc6\u78bc\u932f\u8aa4 +login.invalid_username=\u7121\u6548\u7684\u7528\u6236\u540d +login.invalid_uuid_and_username=\u7121\u6548\u7684UUID\u548c\u7528\u6236\u540d +login.invalid_password=\u7121\u6548\u7684\u5bc6\u78bc +login.invalid_access_token=\u7121\u6548\u7684\u8a2a\u554f\u4ee4\u724c +login.changed_client_token=\u670d\u52d9\u5668\u56de\u61c9\u5df2\u7d93\u4fee\u6539\u5ba2\u6236\u7aef\u4ee4\u724c +login.not_email=\u7528\u6236\u540d\u5fc5\u9808\u662f\u90f5\u7bb1 +login.type=\u767b\u9304 +login.username=\u540d\u5b57 +login.account=\u90ae\u7bb1 + +login.failed.connect_authentication_server=\u7121\u6cd5\u9023\u63a5\u8a8d\u8b49\u670d\u52d9\u5668,\u53ef\u80fd\u662f\u7db2\u7d61\u554f\u984c + +login.profile.not_logged_in=\u7121\u6cd5\u4fee\u6539\u904a\u6232\u8cc7\u6599\u540c\u6642\u672a\u767b\u9304 +login.profile.selected=\u7121\u6cd5\u4fee\u6539\u904a\u6232\u8cc7\u6599. \u4f60\u5fc5\u9808\u767b\u51fa\u518d\u8fd4\u56de. + +login.methods.yggdrasil=\u6b63\u7248\u767b\u9304 +login.methods.offline=\u96e2\u7dda\u6a21\u5f0f +login.methods.no_method=\u6c92\u6709\u767b\u5165\u65b9\u5f0f... + +log.playername_null=\u73a9\u5bb6\u540d\u70ba\u7a7a\uff0c\u9019\u4ee3\u8868\u8457\u767b\u9304\u65b9\u6cd5\u51fa\u73fe\u554f\u984c + +minecraft.no_selected_version=\u6c92\u6709\u9078\u64c7\u4efb\u4f55\u4e00\u500bMinecraft\u7248\u672c +minecraft.wrong_path=\u932f\u8aa4\u7684Minecraft\u8def\u5f91\uff0c\u555f\u52d5\u5668\u672a\u627e\u5230\u8a2d\u5b9a\u7684Minecraft\u8def\u5f91\uff0c\u8acb\u6aa2\u67e5\u3002 + +operation.stopped=\u64cd\u4f5c\u88ab\u5f37\u884c\u7d42\u6b62 +operation.confirm_stop=\u771f\u7684\u8981\u7d42\u6b62\u64cd\u4f5c\u55ce\uff1f + +ui.login.password=\u5bc6\u78bc +ui.more=\u66f4\u591a + +crash.advice.UnsupportedClassVersionError=\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u60a8\u7684Java\u7248\u672c\u904e\u65bc\u8001\u820a\uff0c\u53ef\u4ee5\u5617\u8a66\u66f4\u63db\u6700\u65b0Java\u4e26\u5728\u7248\u672c\u8a2d\u5b9a\u7684Java\u8def\u5f91\u4e2d\u8a2d\u5b9a. +crash.advice.ConcurrentModificationException=\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u60a8\u7684Java\u7248\u672c\u9ad8\u65bcJava 1.8.0_11\u5c0e\u81f4\u7684,\u53ef\u4ee5\u5617\u8a66\u5378\u8f09Java8\u5b89\u88ddJava7\u3002 +crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u885d\u7a81\u3002\u53ef\u4ee5\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002 +crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u885d\u7a81\u3002\u53ef\u4ee5\u901a\u904e\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002 +crash.advice.SecurityException=\u53ef\u80fd\u662f\u60a8\u4fee\u6539\u4e86minecraft.jar\u4f46\u672a\u522a\u9664META-INF\u6587\u4ef6\u593e\u7684\u539f\u56e0\u3002\u8acb\u901a\u904e\u58d3\u7e2e\u8edf\u4ef6\u522a\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u593e\u3002 +crash.advice.otherwise=\u53ef\u80fd\u662fMod\u6216\u5176\u4ed6\u554f\u984c\u3002 + +crash.advice.OpenGL=\u53ef\u80fd\u662f\u986f\u5361/\u8072\u5361\u9a45\u52d5\u554f\u984c\uff0c\u4e5f\u53ef\u80fd\u662fMod\u5c0e\u81f4\u7684\u554f\u984c\u3002 +crash.advice.no_lwjgl=\u53ef\u80fd\u662f\u904a\u6232\u4f9d\u8cf4\u5eab\u4e0d\u5b8c\u6574\u6216\u89e3\u58d3\u4f9d\u8cf4\u5eab\u6642\u51fa\u932f\u3002\u53ef\u4ee5\u901a\u904e\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002 + +crash.advice.no=\u7121\u5efa\u8b70\u3002 + +crash.error=\u60a8\u7684Minecraft\u5d29\u6f70\u4e86\u3002 +crash.main_class_not_found=\u627e\u4e0d\u5230\u4e3b\u985e\uff0c\u53ef\u80fd\u662f\u60a8\u7684JSON\u6587\u4ef6\u586b\u5beb\u932f\u8aa4\u3002\u7121\u6cd5\u555f\u52d5\u904a\u6232\u3002\u53ef\u4ee5\u901a\u904e\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002 +crash.class_path_wrong=\u89e3\u6790Class Path\u6642\u51fa\u73fe\u932f\u8aa4\uff0c\u6b64\u932f\u8aa4\u672c\u4e0d\u61c9\u8a72\u767c\u751f\u3002\u53ef\u80fd\u662f\u555f\u52d5\u8173\u672c\u932f\u8aa4\uff0c\u8acb\u4ed4\u7d30\u6aa2\u67e5\u555f\u52d5\u8173\u672c\u3002 + +ui.label.newProfileWindow.new_profile_name=\u65b0\u914d\u7f6e\u540d: +ui.label.newProfileWindow.copy_from=\u8907\u88fd\u914d\u7f6e: +ui.newProfileWindow.title=\u65b0\u5efa\u914d\u7f6e + +ui.button.ok=\u78ba\u8a8d +ui.button.refresh=\u5237\u65b0 +ui.button.run=\u555f\u52d5Minecraft +ui.button.settings= +ui.button.about=\u95dc\u65bc +ui.button.others=\u5176\u4ed6 +ui.button.logout=\u767b\u51fa +ui.button.download=\u4e0b\u8f09 +ui.button.retry=\u91cd\u8a66 +ui.button.delete=\u522a\u9664 +ui.button.install=\u5b89\u88dd +ui.button.info=\u4fe1\u606f +ui.button.save=\u4fdd\u5b58 +ui.button.copy=\u8907\u88fd +ui.button.clear=\u6e05\u9664 +ui.button.close=\u95dc\u9589 +ui.button.explore=\u700f\u89bd +button.cancel=\u53d6\u6d88 +button.ok=\u78ba\u5b9a + +ui.label.version=\u7248\u672c +ui.label.password=\u5bc6\u78bc +ui.label.profile=\u914d\u7f6e + +ui.message.first_load=\u8acb\u5728\u5de6\u908a\u8f38\u5165\u60a8\u7684\u8cec\u865f +ui.message.enter_password=\u8acb\u5728\u5de6\u908a\u8f38\u5165\u60a8\u7684\u5bc6\u78bc +ui.message.launching=\u555f\u52d5\u4e2d +ui.message.making=\u751f\u6210\u4e2d +ui.message.sure_remove=\u771f\u7684\u8981\u5220\u9664\u914d\u7f6e%s\u5417\uff1f + +ui.label.settings=\u9078\u9805 +ui.label.crashing=Hello Minecraft! Launcher\u9047\u5230\u4e86\u7121\u6cd5\u8655\u7406\u7684\u932f\u8aa4\uff0c\u8acb\u8907\u5236\u4e0b\u5217\u5167\u5bb9\u4e26\u901a\u904emcbbs\u3001\u8cbc\u5427\u6216Minecraft Forum\u53cd\u994bbug\u3002 +ui.label.crashing_out_dated=Hello Minecraft! Launcher\u9047\u5230\u4e86\u7121\u6cd5\u8655\u7406\u7684\u932f\u8aa4\uff0c\u5df2\u6aa2\u6e2c\u5230\u60a8\u7684\u555f\u52d5\u5668\u4e0d\u662f\u6700\u65b0\u7248\u672c\uff0c\u8acb\u66f4\u65b0\u5f8c\u518d\u8a66\uff01 +ui.label.failed_set=\u8a2d\u5b9a\u5931\u6557\uff1a + +download=\u4e0b\u8f09 +download.mojang=\u5b98\u65b9 +download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/) +download.not_200=\u4e0b\u8f09\u5931\u6557\uff0c\u56de\u590d\u7801 +download.failed=\u4e0b\u8f09\u5931\u6557 +download.successfully=\u4e0b\u8f09\u5b8c\u6210 + +message.error=\u932f\u8aa4 +message.cannot_open_explorer=\u7121\u6cd5\u6253\u958b\u6587\u4ef6\u7ba1\u7406\u5668: +message.cancelled=\u5df2\u53d6\u6d88 +message.info=\u63d0\u793a + +folder.game=\u904a\u6232\u6587\u4ef6\u593e +folder.mod=MOD\u6587\u4ef6\u593e +folder.coremod=\u6838\u5fc3MOD\u6587\u4ef6\u593e +folder.config=\u914d\u7f6e\u6587\u4ef6\u593e +folder.resourcepacks=\u8cc7\u6e90\u5305\u6587\u4ef6\u593e +folder.screenshots=\u622a\u5716\u6587\u4ef6\u593e +folder.saves=\u5b58\u6a94\u6587\u4ef6\u593e + +settings.tabs.game_download=\u904a\u6232\u4e0b\u8f09 +settings.tabs.installers=\u81ea\u52d5\u5b89\u88dd +settings.tabs.assets_downloads=\u8cc7\u6e90\u4e0b\u8f09 + +settings=\u666e\u901a\u8a2d\u5b9a +settings.explore=\u700f\u89bd +settings.manage=\u7ba1\u7406 +settings.cannot_remove_default_config=\u4e0d\u80fd\u522a\u9664\u9ed8\u8a8d\u914d\u7f6e +settings.max_memory=\u6700\u5927\u5167\u5b58\uff08MB\uff09 +settings.java_dir=Java\u8def\u5f91 +settings.game_directory=\u904a\u6232\u8def\u5f91 +settings.dimension=\u5206\u8fa8\u7387 +settings.fullscreen=\u5168\u5c4f +settings.update_version=\u66f4\u65b0\u7248\u672c\u6587\u4ef6 +settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f + +settings.failed_load=\u8a2d\u5b9a\u6587\u4ef6\u52a0\u8f09\u5931\u6557\uff0c\u53ef\u80fd\u662f\u5347\u7d1a\u4e86\u555f\u52d5\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u932f\u8aa4\uff0c\u662f\u5426\u6e05\u9664\uff1f + +advancedsettings=\u9ad8\u7d1a\u8a2d\u5b9a +advancedsettings.launcher_visible=\u555f\u52d5\u5668\u53ef\u898b\u6027 +advancedsettings.run_directory=\u904b\u884c\u8def\u5f91 +advencedsettings.debug_mode=\u8abf\u8a66\u6a21\u5f0f +advancedsettings.java_permanent_generation_space=\u5167\u5b58\u6c38\u4e45\u4fdd\u5b58\u5340\u57df/MB +advancedsettings.jvm_args=Java\u865b\u64ec\u6a5f\u53c3\u6578(\u4e0d\u5fc5\u586b\u5beb) +advancedsettings.Minecraft_arguments=Minecraft\u984d\u5916\u53c3\u6578(\u4e0d\u5fc5\u586b\u5beb) +advancedsettings.launcher_visibility.close=\u904a\u6232\u555f\u52d5\u5f8c\u7d50\u675f\u555f\u52d5\u5668 +advancedsettings.launcher_visibility.hide=\u904a\u6232\u555f\u52d5\u5f8c\u96b1\u85cf\u555f\u52d5\u5668 +advancedsettings.launcher_visibility.keep=\u4fdd\u6301\u555f\u52d5\u5668\u53ef\u898b +advancedsettings.game_dir.default=\u9ed8\u8a8d(.minecraft/) +advancedsettings.game_dir.independent=\u5404\u7248\u672c\u7368\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries) +advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c3\u6578(\u4f7f\u7528Java9\u6642\u5fc5\u52fe) +advancedsettings.java_args_default=\u555f\u52d5\u5668\u9ed8\u8a8d\u6dfb\u52a0\u7684\u53c3\u6578\uff08\u8acb\u4e0d\u8981\u91cd\u8907\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml. ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true + +mainwindow.show_log=\u67e5\u770b\u65e5\u8a8c +mainwindow.make_launch_script=\u751f\u6210\u555f\u52d5\u8173\u672c +mainwindow.make_launch_script_failed=\u751f\u6210\u555f\u52d5\u8173\u672c\u5931\u6557 +mainwindow.enter_script_name=\u8f38\u5165\u8981\u751f\u6210\u8173\u672c\u7684\u6587\u4ef6\u540d +mainwindow.make_launch_succeed=\u555f\u52d5\u8173\u672c\u5df2\u751f\u6210\u5b8c\u7562: +mainwindow.no_version=\u672a\u627e\u5230\u4efb\u4f55\u7248\u672c\uff0c\u60a8\u53ef\u4ee5\u5230[\u8a2d\u5b9a]->[\u904a\u6232\u4e0b\u8f09]\u4e2d\u4e0b\u8f09\u904a\u6232\u3002 + +launcher.about=\u9ed8\u8a8d\u80cc\u666f\u5716\u4f86\u81eaLiberty Dome\u670d\u52d9\u5668\u3002
\u95dc\u65bc\u4f5c\u8005\uff1a
\n\u767e\u5ea6ID\uff1ahuanghongxun20
\nmcbbs\uff1ahuanghongxun
\n\u90f5\u7bb1\uff1ahuanghongxun2008@126.com
\nMinecraft Forum ID: klkl6523
\n\u6b61\u8fce\u63d0\u4ea4Bug\u54e6
\nCopyright (c) 2013 huangyuhui +launcher.download_source=\u4e0b\u8f09\u6e90 +launcher.background_location=\u80cc\u666f\u5730\u5740 +launcher.exit_failed=\u5f37\u5236\u9000\u51fa\u5931\u6557\uff0c\u53ef\u80fd\u662fForge 1.7.10\u53ca\u66f4\u9ad8\u7248\u672c\u5c0e\u81f4\u7684\uff0c\u7121\u6cd5\u89e3\u6c7a\u3002 +launcher.versions_json_not_matched=\u7248\u672c%s\u683c\u5f0f\u4e0d\u898f\u7bc4\uff01\u8a72\u7248\u672c\u6587\u4ef6\u593e\u4e0b\u6709json:%s\uff0c\u662f\u5426\u66f4\u540d\u9019\u500b\u6587\u4ef6\u4f86\u898f\u7bc4\u683c\u5f0f\uff1f +launcher.versions_json_not_matched_needs_auto_completion=\u7248\u672c%s\u7f3a\u5931\u5fc5\u8981\u7684\u7248\u672c\u4fe1\u606f(JSON)\u6587\u4ef6\uff0c\u662f\u5426\u81ea\u52a8\u8865\u5168\uff1f +launcher.versions_json_not_matched_cannot_auto_completion=\u7248\u672c%s\u7f3a\u5931\u5fc5\u8981\u7684\u7248\u672c\u4fe1\u606f(JSON)\u6587\u4ef6\uff0c\u4f46\u662f\u4f3c\u4e4e\u4e0d\u662f\u539f\u7248\uff0c\u65e0\u6cd5\u81ea\u52a8\u8865\u5168\uff0c\u662f\u5426\u5220\u9664\u8be5\u7248\u672c\uff1f +launcher.choose_bgpath=\u9078\u64c7\u80cc\u666f\u8def\u5f91 +launcher.background_tooltip=\n\n\u555f\u52d5\u5668\u9ed8\u8a8d\u4f7f\u7528\u81ea\u5e36\u7684\u80cc\u666f
\n\u5982\u679c\u7576\u524d\u76ee\u9304\u6709background.png\uff0c\u5247\u6703\u4f7f\u7528\u8a72\u6587\u4ef6\u4f5c\u70ba\u80cc\u666f
\n\u5982\u679c\u7576\u524d\u76ee\u9304\u6709bgskin\u5b50\u76ee\u9304\uff0c\u5247\u6703\u96a8\u6a5f\u4f7f\u7528\u88e1\u9762\u7684\u4e00\u5f35\u5716\u4f5c\u70ba\u80cc\u666f
\n\u5982\u679c\u8a72\u80cc\u666f\u5730\u5740\u88ab\u4fee\u6539\uff0c\u5247\u6703\u4f7f\u7528\u80cc\u666f\u5730\u5740\u88e1\u7684\u4e00\u5f35\u5716\u4f5c\u70ba\u80cc\u666f
\n\u80cc\u666f\u5730\u5740\u5141\u8a31\u6709\u591a\u500b\u5730\u5740\uff0c\u4f7f\u7528\u534a\u89d2\u5206\u865f";"(\u4e0d\u5305\u542b\u96d9\u5f15\u865f)\u5206\u9694\n\n +launcher.update_launcher=\u68c0\u67e5\u66f4\u65b0 +launcher.enable_shadow=\u542f\u7528\u7a97\u53e3\u9634\u5f71(\u91cd\u542f\u542f\u52a8\u5668\u751f\u6548) +launcher.theme=\u4e3b\u9898 + +launcher.title.game=\u904a\u6232\u8a2d\u5b9a +launcher.title.main=\u4e3b\u9801 +launcher.title.launcher=\u555f\u52d5\u5668\u8a2d\u5b9a + +versions.release=\u7a69\u5b9a\u7248 +versions.snapshot=\u5feb\u7167\u7248 +versions.old_beta=\u6e2c\u8a66\u7248 +versions.old_alpha=\u9060\u53e4\u7248 + +versions.manage.rename=\u91cd\u547d\u540d\u8a72\u7248\u672c +versions.manage.rename.message=\u8acb\u8f38\u5165\u8981\u6539\u6210\u7684\u540d\u5b57 +versions.manage.remove=\u522a\u9664\u8a72\u7248\u672c +versions.manage.remove.confirm=\u771f\u7684\u8981\u522a\u9664\u7248\u672c +versions.manage.redownload_json=\u91cd\u65b0\u4e0b\u8f09\u7248\u672c\u914d\u7f6e(minecraft.json) +versions.manage.redownload_assets_index=\u91cd\u65b0\u4e0b\u8f09\u8cc7\u6e90\u914d\u7f6e(assets_index.json) + +advice.os64butjdk32=\u60a8\u7684\u7cfb\u7d71\u662f64\u4f4d\u7684\u4f46\u662fJava\u662f32\u4f4d\u7684\uff0c\u63a8\u85a6\u60a8\u5b89\u88dd64\u4f4dJava. + +assets.download_all=\u4e0b\u8f7d\u8d44\u6e90\u6587\u4ef6 +assets.not_refreshed=\u8cc7\u6e90\u5217\u8868\u672a\u5237\u65b0\uff0c\u8acb\u5237\u65b0\u4e00\u6b21\u3002 +assets.failed=\u7372\u53d6\u5217\u8868\u5931\u6557\uff0c\u8acb\u5237\u65b0\u91cd\u8a66\u3002 +assets.list.1_7_3_after=1.7.3\u53ca\u4ee5\u5f8c +assets.list.1_6=1.6(BMCLAPI) +assets.type=\u8cc7\u6e90\u985e\u578b +assets.download=\u4e0b\u8f09\u8cc7\u6e90 +assets.no_assets=\u672a\u68c0\u6d4b\u5230assets\u6587\u4ef6\u5939\uff0c\u542f\u52a8\u6e38\u620f\u540e\u5c06\u6ca1\u6709\u58f0\u97f3\u548c\u8bed\u8a00\u6587\u4ef6\uff0c\u8bf7\u5230\u6e38\u620f\u8bbe\u7f6e->\u8d44\u6e90\u4e0b\u8f7d\u4e0b\u8f7d\u8d44\u6e90\u3002 + +gamedownload.not_refreshed=\u904a\u6232\u4e0b\u8f09\u5217\u8868\u672a\u5237\u65b0\uff0c\u8acb\u518d\u5237\u65b0\u4e00\u6b21\u3002 + +taskwindow.title=\u4efb\u52d9 +taskwindow.single_progress=\u55ae\u9805\u9032\u5ea6 +taskwindow.total_progress=\u7e3d\u9032\u5ea6 +taskwindow.cancel=\u53d6\u6d88 +taskwindow.no_more_instance=\u53ef\u80fd\u540c\u6642\u6253\u958b\u4e86\u591a\u500b\u4efb\u52d9\u7a97\u53e3\uff0c\u8acb\u4e0d\u8981\u591a\u6b21\u6253\u958b\uff01 + +setupwindow.include_minecraft=\u5c0e\u5165\u904a\u6232\u6587\u4ef6\u593e +setupwindow.find_in_configurations=\u5c0e\u5165\u5b8c\u6210\uff0c\u5feb\u5230\u914d\u7f6e\u4e0b\u62c9\u6846\u4e2d\u627e\u65b0\u904a\u6232\u8def\u5f91\u5427\uff01 +setupwindow.give_a_name=\u7d66\u65b0\u904a\u6232\u8def\u5f91\u8d77\u500b\u540d\u5b57\u5427 +setupwindow.new=\u65b0\u5efa +setupwindow.no_empty_name=\u540d\u5b57\u4e0d\u53ef\u70ba\u7a7a + +update.no_browser=\u7121\u6cd5\u6253\u958b\u700f\u89bd\u5668\uff0c\u7db2\u5740\u5df2\u7d93\u5fa9\u88fd\u5230\u526a\u8cbc\u677f\u4e86\uff0c\u60a8\u53ef\u4ee5\u624b\u52d5\u7c98\u8cbc\u7db2\u5740\u6253\u958b\u9801\u9762 +update.should_open_link=\u662f\u5426\u524d\u5f80\u767c\u5e03\u9801\u9762\u66f4\u65b0\uff1f +update.newest_version=\u6700\u65b0\u7248\u672c\u70ba\uff1a +update.failed=\u6aa2\u67e5\u66f4\u65b0\u5931\u6557 +update.found=(\u767c\u73fe\u66f4\u65b0!) + +logwindow.terminate_game=\u7d50\u675f\u904a\u6232\u9032\u7a0b +logwindow.tieba=\u8cbc\u5427 + +selector.choose=\u9078\u64c7 + +minecraft.invalid=\u7121\u6548\u7684 +minecraft.invalid_jar=\u7121\u6548\u7684jar\u5305 +minecraft.not_a_file=\u4e0d\u662f\u6587\u4ef6 +minecraft.not_found=\u627e\u4e0d\u5230minecraft.jar +minecraft.not_readable=minecraft.jar\u4e0d\u53ef\u8b80 +minecraft.modified=(\u4fee\u6539\u7684!) + +color.red=\u7d05\u8272 +color.blue=\u85cd\u8272 +color.green=\u7da0\u8272 +color.orange=\u6a59\u8272 +color.dark_blue=\u6df1\u85cd\u8272 +color.purple=\u7d2b\u8272 \ No newline at end of file diff --git a/HMCSM/build.gradle b/HMCSM/build.gradle new file mode 100644 index 000000000..be0317039 --- /dev/null +++ b/HMCSM/build.gradle @@ -0,0 +1,90 @@ +//apply plugin: 'execjar' +apply plugin: 'launch4j' + +if (!hasProperty('mainClass')) { + ext.mainClass = 'org.jackhuang.hellominecraft.svrmgr.Main' +} + +String mavenGroupId = 'HMCSM' +String mavenVersion = '0.8.6' +String bundleName = "Hello Minecraft! Server Manager" + +group = mavenGroupId +version = mavenVersion + +String mavenArtifactId = name + +buildscript { + repositories { + mavenCentral(); + // You may define additional repositories, or even remove "mavenCentral()". + // Read more about repositories here: + // http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories + /* + maven { + url uri('../../../../repo') + }*/ + dependencies { + //classpath 'org.jackhuang.gradle:ExecJar:1.0-SNAPSHOT' + classpath 'net.sf.proguard:proguard-gradle:4.10' + classpath 'edu.sc.seis.gradle:launch4j:1.0.6' + } + } +} + +configure(install.repositories.mavenInstaller) { + pom.project { + groupId = mavenGroupId + artifactId = mavenArtifactId + version = mavenVersion + } +} + +dependencies { + compile project(":HMCLAPI") + compile project(":MetroLookAndFeel") + compile files("../../../../repo/org/ho/jyaml/1.3/jyaml-1.3.jar") + compile ("org.tukaani:xz:1.5") + compile ('org.jsoup:jsoup:1.7.2') +} + +jar { + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + + manifest { + attributes 'Created-By' : 'Copyright(c) 2014 huangyuhui.', + 'Main-Class' : mainClass + } +} + +task proguard(type: proguard.gradle.ProGuardTask, dependsOn: jar) { + ext { + injar = jar.archivePath + jar.classifier = 'proguard' + outjar = jar.archivePath + jar.classifier = '' + } + + injars injar + outjars outjar + printusage "shrinking_" + version + ".map" + printmapping "obfuscate_" + version + ".map" + + configuration 'proguard.pro' +} +/* +execjar.suffix = 'proguard' +execjar.version = mavenVersion +execjar.group = mavenGroupId +execjar.mainClass = mainClass +execjar.bundleName = bundleName + +execjar.dependsOn proguard +*/ +processResources { + from(sourceSets.main.resources.srcDirs) { + exclude 'icon.icns' + } +} + +build.dependsOn proguard diff --git a/HMCSM/proguard.pro b/HMCSM/proguard.pro new file mode 100644 index 000000000..f4d2fd4fe --- /dev/null +++ b/HMCSM/proguard.pro @@ -0,0 +1,50 @@ +-libraryjars D:\Java\jdk1.6.0_45\jre\lib\rt.jar +-libraryjars D:\Java\jdk1.6.0_45\jre\lib\jce.jar +-libraryjars D:\Java\jdk1.6.0_45\jre\lib\jsse.jar + +-dontoptimize +-dontwarn +-dontshrink + +-overloadaggressively +-repackageclasses 'org.jackhuang.hellominecraft.svrmgr' +-allowaccessmodification + +-renamesourcefileattribute SourceFile + +-keepattributes *Annotation*,SourceFile,LineNumberTable,Signature + +-keep class com.** { *; } +-keep class org.jackhuang.metro.** { *; } +-keep class yaml.** { *; } +-keep class org.ho.** { *; } +-keep class org.jsoup.** { *; } + +-keep class org.jackhuang.hellominecraft.svrmgr.Main { public static void main(java.lang.String[]); } + +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.settings.Settings { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.settings.BannedPlayers { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.settings.Op { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.settings.PlayerList { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.settings.Schedule { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.settings.WhiteList { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.cbplugins.Category { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.cbplugins.BukkitPlugin { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginInfo { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginInformation { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginVersion { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.installer.cauldron.InstallProfile { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.svrmgr.installer.cauldron.Install { public ; } + +-keepclassmembers class org.jackhuang.hellominecraft.version.Latest { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.MinecraftVersion { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.MinecraftLibrary { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.IMinecraftLibrary { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.MinecraftVersions { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.Natives { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.OS { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.Rules { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.AssetsObject { public ; } +-keepclassmembers class org.jackhuang.hellominecraft.version.AssetsIndex { public ; } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java new file mode 100644 index 000000000..a34a9b4e8 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java @@ -0,0 +1,65 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr; + +import java.awt.Font; +import java.io.PrintWriter; +import java.io.StringWriter; +import javax.swing.UIManager; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.views.LogWindow; +import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; +import org.jackhuang.hellominecraft.utils.UpdateChecker; +import org.jackhuang.hellominecraft.svrmgr.views.MainWindow; +import org.jackhuang.hellominecraft.utils.VersionNumber; +import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel; + +/** + * + * @author hyh + */ +public class Main { + + public static String launcherName = "Hello Minecraft! Server Manager"; + public static final String PUBLISH_URL = "http://www.mcbbs.net/thread-171239-1-1.html"; + public static byte firstVer = 0, secondVer = 8, thirdVer = 6; + public static String makeTitle() { + return launcherName + ' ' + firstVer + '.' + secondVer + '.' + thirdVer; + } + + public static void main(String[] args) { + try { + SettingsManager.load(); + try { + javax.swing.UIManager.setLookAndFeel(new HelloMinecraftLookAndFeel()); + UIManager.getLookAndFeelDefaults().put("defaultFont", new Font("微软雅黑", Font.PLAIN, 12)); + } catch (Throwable ex) { + HMCLog.warn("Failed to set look and feel", ex); + } + new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", SettingsManager.settings.checkUpdate, new DoneListener0() { + + @Override + public void onDone() { + SettingsManager.settings.checkUpdate = false; + } + }).start(); + new MainWindow().setVisible(true); + } catch(Throwable t) { + HMCLog.err("There's something wrong when running server holder.", t); + + LogWindow.instance.clean(); + LogWindow.instance.log("开服器崩溃了QAQ"); + StringWriter trace = new StringWriter(); + t.printStackTrace(new PrintWriter(trace)); + LogWindow.instance.log(trace.toString()); + LogWindow.instance.setVisible(true); + + System.exit(-1); + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/BukkitPlugin.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/BukkitPlugin.java new file mode 100644 index 000000000..1e53130b0 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/BukkitPlugin.java @@ -0,0 +1,37 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.cbplugins; + +import java.util.List; + +/** + * + * @author hyh + */ +public class BukkitPlugin { + + public String description, plugin_name, slug; + public List versions; + + public String getLatestVersion() { + if(versions != null) { + PluginVersion v = versions.get(0); + return v.version; + } + return null; + } + + public String getLatestBukkit() { + if(versions != null) { + PluginVersion v = versions.get(0); + List al = v.game_versions; + if(al != null && !al.isEmpty()) { + return al.get(0); + } + } + return ""; + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/Category.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/Category.java new file mode 100644 index 000000000..bcf3cae8d --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/Category.java @@ -0,0 +1,14 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.cbplugins; + +/** + * + * @author hyh + */ +public class Category { + public double count; + public String name; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java new file mode 100644 index 000000000..af255f38a --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java @@ -0,0 +1,18 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.cbplugins; + +import java.util.List; + +/** + * + * @author hyh + */ +public class PluginInfo { + public String website, dbo_page, description, slug, plugin_name, + link, stage, main; + public List authors, categories; + public List versions; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInformation.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInformation.java new file mode 100644 index 000000000..461c85407 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInformation.java @@ -0,0 +1,15 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.cbplugins; + +/** + * + * @author hyh + */ +public class PluginInformation { + + public String name, version, author, description; + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java new file mode 100644 index 000000000..2362d9e8c --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java @@ -0,0 +1,86 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.cbplugins; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import java.io.File; +import java.io.InputStream; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import org.ho.yaml.Yaml; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; + +/** + * + * @author hyh + */ +public class PluginManager { + + public static PluginInformation getPluginYML(File f) { + try { + ZipFile file = new ZipFile(f); + ZipEntry plg = file.getEntry("plugin.yml"); + InputStream is = file.getInputStream(plg); + return Yaml.loadType(is, PluginInformation.class); + } catch (Exception ex) { + Logger.getLogger(PluginManager.class.getName()).log(Level.SEVERE, null, ex); + } + return null; + } + + public static List getPlugins() throws Exception { + String result = NetUtils.doGet("http://api.bukget.org/3//plugins?fields=slug,plugin_name,description,versions.version,versions.game_versions"); + Gson gson = new Gson(); + List list = gson.fromJson(result, new TypeToken>(){}.getType()); + return list; + } + + public static final String CATEGORY_ADMIN_TOOLS = "Admin Tools", + CATEGORY_DEVELOPER_TOOLS = "Developer Tools", + CATEGORY_FUN = "Fun", + CATEGORY_GENERAL = "General", + CATEGORY_ANTI_GRIEFING_TOOLS = "Anti Griefing Tools", + CATEGORY_MECHAICS = "Mechanics", + CATEGORY_Fixes = "Fixes", + CATEGORY_ROLE_PLAYING = "Role Playing", + CATEGORY_WORLD_EDITING_AND_MANAGEMENT = "World Editing and Management", + CATEGORY_TELEPORTATION = "Teleportation", + CATEGORY_INFORMATIONAL = "Informational", + CATEGORY_ECONOMY = "Economy", + CATEGORY_CHAT_RELATED = "Chat Related", + CATEGORY_MISCELLANEOUS = "Miscellaneous", + CATEGORY_WORLD_GENERATORS = "World Generators", + CATEGORY_WEBSITE_ADMINISTRATION = "Website Administration"; + + public static List getPluginsByCategory(String category) throws Exception { + String result = NetUtils.doGet("http://api.bukget.org/3//categories/" + category + "?fields=slug,plugin_name,description,versions.version,versions.game_versions"); + Gson gson = new Gson(); + List list = gson.fromJson(result, new TypeToken>(){}.getType()); + return list; + } + public static List getCategories() throws Exception { + String result = NetUtils.doGet("http://api.bukget.org/3//categories/"); + Gson gson = new Gson(); + List list = gson.fromJson(result, new TypeToken>(){}.getType()); + return list; + } + public static PluginInfo getPluginInfo(String slug) throws Exception { + if(StrUtils.isNotBlank(slug)) { + String result = NetUtils.doGet("http://api.bukget.org/3//plugins/bukkit/" + slug.toLowerCase()); + if(StrUtils.isNotBlank(result)) { + if(!result.equals("null")) { + PluginInfo info = new Gson().fromJson(result, PluginInfo.class); + return info; + } + } + } + return null; + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginVersion.java new file mode 100644 index 000000000..03b236712 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginVersion.java @@ -0,0 +1,19 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.cbplugins; + +import java.util.List; + +/** + * + * @author hyh + */ +public class PluginVersion { + public long date; + public String download, link, version; + public List game_versions; + public String filename, type; + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java new file mode 100644 index 000000000..fbca5ca6f --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java @@ -0,0 +1,80 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.installer.bukkit; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.jackhuang.hellominecraft.DoneListener1; +import org.jackhuang.hellominecraft.HMCLog; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +/** + * + * @author hyh + */ +public class BukkitFormatThread extends Thread { + + DoneListener1> lis; + List formattedList; + String url; + + public BukkitFormatThread(String url, DoneListener1> lis) { + this.lis = lis; + this.url = url; + } + + public void format(String url) { + + formattedList = new ArrayList(); + + try { + Document doc = Jsoup.connect(url).get(); + Elements versionsTable = doc.getElementsByClass("versionsTable"); + Elements allforge = new Elements(); + for(Element table : versionsTable) + allforge.addAll(table.getElementsByTag("tr")); + for(Element e : allforge) { + Elements tds = e.getElementsByTag("td"); + if(tds.isEmpty()) continue; + BukkitVersion v = new BukkitVersion(); + Elements ths = e.getElementsByTag("th"); + v.buildNumber = v.infoLink = null; + if(ths.size() > 0) { + Elements a = ths.get(0).getElementsByTag("a"); + if(a.size() > 0) { + v.buildNumber = a.get(0).text(); + v.infoLink = a.get(0).attr("href"); + } + } + v.version = tds.get(0).text(); + v.type = tds.get(1).text(); + if(tds.get(2).getElementsByTag("a").isEmpty()) continue; + v.downloadLink = "http://dl.bukkit.org" + tds.get(2).getElementsByTag("a").get(0).attr("href"); + formattedList.add(v); + } + } catch (IOException ex) { + HMCLog.warn("Failed to get bukkit list", ex); + BukkitVersion v = new BukkitVersion(); + v.type = v.version = "获取失败"; + v.buildNumber = v.infoLink = null; + formattedList.add(v); + } + } + + @Override + public void run() { + List al = null; + format(url); + if(lis != null) + lis.onDone(formattedList); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java new file mode 100644 index 000000000..0a498bd20 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.installer.bukkit; + +/** + * + * @author hyh + */ +public class BukkitVersion { + + public String buildNumber, version, type, downloadLink, infoLink; + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java new file mode 100644 index 000000000..687066bb2 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java @@ -0,0 +1,97 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.jackhuang.hellominecraft.DoneListener1; +import org.jackhuang.hellominecraft.HMCLog; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +/** + * + * @author hyh + */ +public class ForgeFormatThread extends Thread { + + DoneListener1>> lis; + Map> formattedList; + + public ForgeFormatThread(DoneListener1>> lis) { + this.lis = lis; + } + + public void formatNew() { + + formattedList = new HashMap(); + + try { + Document doc = Jsoup.connect("http://files.minecraftforge.net/").get(); + Elements allbuilds = doc.getElementsByClass("builds"); + Elements tables = new Elements(); + for(Element build : allbuilds) + tables.addAll(build.getElementsByTag("table")); + Elements allforge = new Elements(); + for(Element table : tables) + allforge.addAll(table.getElementsByTag("tr")); + for(Element e : allforge) { + Elements tds = e.getElementsByTag("td"); + if(tds.isEmpty()) continue; + ForgeVersion v = new ForgeVersion(); + v.ver = tds.get(0).text(); + v.mcver = tds.get(1).text(); + v.releasetime = tds.get(2).text(); + v.installer = new String[2]; + v.universal = new String[2]; + v.javadoc = new String[2]; + v.src = new String[2]; + v.userdev = new String[2]; + Elements a = tds.get(3).getElementsByTag("a"); + String prev = null; + for(Element e2 : a) { + String href = e2.attributes().get("href").toLowerCase(); + if(e2.text().toLowerCase().contains("changelog")) { + v.changelog = href; + } else if(prev != null) { + int index; + if(href.contains("adf.ly")) index = 0; + else index = 1; + if(prev.toLowerCase().contains("installer")) { + v.installer[index] = href; + } else + if(prev.toLowerCase().contains("server")) { + v.universal[index] = href; + } + } + prev = e2.text(); + } + + if(!formattedList.containsKey(v.mcver)) + formattedList.put(v.mcver, new ArrayList()); + formattedList.get(v.mcver).add(v); + } + } catch (IOException ex) { + HMCLog.warn("Failed to get forge list", ex); + ForgeVersion v = new ForgeVersion(); + v.mcver = v.ver = "获取失败"; + formattedList.put(v.mcver, new ArrayList()); + formattedList.get(v.mcver).add(v); + } + } + + @Override + public void run() { + formatNew(); + if(lis != null) + lis.onDone(formattedList); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java new file mode 100644 index 000000000..66215b24a --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java @@ -0,0 +1,239 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +import com.google.gson.Gson; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarInputStream; +import java.util.jar.JarOutputStream; +import java.util.jar.Pack200; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import javax.swing.JOptionPane; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.DigestUtils; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.tukaani.xz.XZInputStream; + +/** + * + * @author hyh + */ +public class ForgeInstaller { + + private final Gson gson = new Gson(); + public File gameDir, gameLibraries; + public File forgeInstaller; + + public ForgeInstaller(File gameDir, File forgeInstaller) throws IOException { + this.gameDir = gameDir.getCanonicalFile(); + this.forgeInstaller = forgeInstaller; + } + + public void install() throws Exception { + HMCLog.log("Extracting install profiles..."); + + ZipFile zipFile = new ZipFile(forgeInstaller); + ZipEntry entry = zipFile.getEntry("install_profile.json"); + String content = NetUtils.getStreamContent(zipFile.getInputStream(entry)); + InstallProfile profile = gson.fromJson(content, InstallProfile.class); + + HMCLog.log("Extracting cauldron server pack..." + profile.install.filePath); + + entry = zipFile.getEntry(profile.install.filePath); + InputStream is = zipFile.getInputStream(entry); + + //MinecraftLibrary forge = new MinecraftLibrary(profile.install.path); + //forge.format(); + File file = new File(gameDir, profile.install.filePath); + file.getParentFile().mkdirs(); + FileOutputStream fos = new FileOutputStream(file); + BufferedOutputStream bos = new BufferedOutputStream(fos); + int c; + while ((c = is.read()) != -1) { + bos.write((byte) c); + } + bos.close(); + fos.close(); + + File minecraftserver = new File(gameDir, "minecraft_server." + profile.install.minecraft + ".jar"); + TaskWindow tw = TaskWindow.getInstance(); + if(minecraftserver.exists() && JOptionPane.showConfirmDialog(null, "已发现官方服务端文件,是否要重新下载?") == JOptionPane.YES_OPTION) { + tw.clean(); + if(!tw.addTask(new FileDownloadTask("https://s3.amazonaws.com/Minecraft.Download/versions/{MCVER}/minecraft_server.{MCVER}.jar".replace("{MCVER}", profile.install.minecraft), + minecraftserver).setTag("minecraft_server")).start()) + MessageBox.Show("Minecraft官方服务端下载失败!"); + } + tw.clean(); + for (MinecraftLibrary library : profile.versionInfo.libraries) { + library.init(); + File lib = new File(gameDir, "libraries" + File.separator + library.formatted + ".pack.xz"); + String libURL = "https://libraries.minecraft.net/"; + if (StrUtils.isNotBlank(library.url)) { + libURL = library.url; + } + tw.addTask(new FileDownloadTask(libURL + library.formatted.replace("\\", "/"), lib).setTag(library.name)); + } + tw.start(); + if(!tw.areTasksFinished()) + MessageBox.Show("压缩库下载失败!"); + tw.clean(); + for (MinecraftLibrary library : profile.versionInfo.libraries) { + File packxz = new File(gameDir, "libraries" + File.separator + library.formatted + ".pack.xz"); + if(packxz.exists()) return; + File lib = new File(gameDir, "libraries" + File.separator + library.formatted); + lib.getParentFile().mkdirs(); + String libURL = "https://libraries.minecraft.net/"; + if (StrUtils.isNotBlank(library.url)) { + libURL = library.url; + } + tw.addTask(new FileDownloadTask(libURL + library.formatted.replace("\\", "/"), lib).setTag(library.name)); + } + tw.start(); + if(!tw.areTasksFinished()) + MessageBox.Show("库下载失败!"); + tw.clean(); + ArrayList badLibs = new ArrayList(); + for (MinecraftLibrary library : profile.versionInfo.libraries) { + File lib = new File(gameDir, "libraries" + File.separator + library.formatted); + File packFile = new File(gameDir, "libraries" + File.separator + library.formatted + ".pack.xz"); + if (packFile.exists() && packFile.isFile()) { + try { + unpackLibrary(lib.getParentFile(), NetUtils.getBytesFromStream(FileUtils.openInputStream(packFile))); + if(!checksumValid(lib, Arrays.asList(library.checksums))) + badLibs.add(library.name); + } catch (IOException e) { + HMCLog.warn("Failed to unpack library: " + library.name); + badLibs.add(library.name); + } + } + } + if (badLibs.size() > 0) { + MessageBox.Show("这些库在解压的时候出现了问题" + badLibs.toString()); + } + } + + public static void unpackLibrary(File output, byte[] data) + throws IOException { + if (output.exists()) { + output.delete(); + } + + byte[] decompressed = IOUtils.readFully(new XZInputStream(new ByteArrayInputStream(data))); + + String end = new String(decompressed, decompressed.length - 4, 4); + if (!end.equals("SIGN")) { + HMCLog.warn("Unpacking failed, signature missing " + end); + return; + } + + int x = decompressed.length; + int len = decompressed[(x - 8)] & 0xFF | (decompressed[(x - 7)] & 0xFF) << 8 | (decompressed[(x - 6)] & 0xFF) << 16 | (decompressed[(x - 5)] & 0xFF) << 24; + + byte[] checksums = Arrays.copyOfRange(decompressed, decompressed.length - len - 8, decompressed.length - 8); + + FileOutputStream jarBytes = new FileOutputStream(output); + JarOutputStream jos = new JarOutputStream(jarBytes); + + Pack200.newUnpacker().unpack(new ByteArrayInputStream(decompressed), jos); + + jos.putNextEntry(new JarEntry("checksums.sha1")); + jos.write(checksums); + jos.closeEntry(); + + jos.close(); + jarBytes.close(); + } + + private static boolean checksumValid(File libPath, List checksums) { + try { + byte[] fileData = NetUtils.getBytesFromStream(FileUtils.openInputStream(libPath)); + boolean valid = (checksums == null) || (checksums.isEmpty()) || (checksums.contains(DigestUtils.sha1Hex(fileData))); + if ((!valid) && (libPath.getName().endsWith(".jar"))) { + valid = validateJar(libPath, fileData, checksums); + } + return valid; + } catch (IOException e) { + HMCLog.warn("Failed to checksum valid: " + libPath, e); + } + return false; + } + + private static boolean validateJar(File libPath, byte[] data, List checksums) throws IOException { + System.out.println("Checking \"" + libPath.getAbsolutePath() + "\" internal checksums"); + + HashMap files = new HashMap(); + String[] hashes = null; + JarInputStream jar = new JarInputStream(new ByteArrayInputStream(data)); + JarEntry entry = jar.getNextJarEntry(); + while (entry != null) { + byte[] eData = IOUtils.readFully(jar); + + if (entry.getName().equals("checksums.sha1")) { + hashes = new String(eData, Charset.forName("UTF-8")).split("\n"); + } + + if (!entry.isDirectory()) { + files.put(entry.getName(), DigestUtils.sha1Hex(eData)); + } + entry = jar.getNextJarEntry(); + } + jar.close(); + + if (hashes != null) { + boolean failed = !checksums.contains(files.get("checksums.sha1")); + if (failed) { + System.out.println(" checksums.sha1 failed validation"); + } else { + System.out.println(" checksums.sha1 validated successfully"); + for (String hash : hashes) { + if ((!hash.trim().equals("")) && (hash.contains(" "))) { + String[] e = hash.split(" "); + String validChecksum = e[0]; + String target = e[1]; + String checksum = (String) files.get(target); + + if ((!files.containsKey(target)) || (checksum == null)) { + System.out.println(" " + target + " : missing"); + failed = true; + } else { + if (checksum.equals(validChecksum)) { + continue; + } + System.out.println(" " + target + " : failed (" + checksum + ", " + validChecksum + ")"); + failed = true; + } + } + } + } + if (!failed) { + System.out.println(" Jar contents validated successfully"); + } + + return !failed; + } + + System.out.println(" checksums.sha1 was not found, validation failed"); + return false; + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeVersion.java new file mode 100644 index 000000000..d307a5d73 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeVersion.java @@ -0,0 +1,20 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +/** + * + * @author hyh + */ +public class ForgeVersion { + public String vername, ver, mcver, releasetime, changelog; + public String[] installer, javadoc, src, universal, userdev; + public int typeint; + + @Override + public String toString() { + return "ForgeVersion{" + "vername=" + vername + ", ver=" + ver + ", mcver=" + mcver + ", releasetime=" + releasetime + ", changelog=" + changelog + ", installer=" + installer + ", javadoc=" + javadoc + ", src=" + src + ", universal=" + universal + ", userdev=" + userdev + ", typeint=" + typeint + '}'; + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/Install.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/Install.java new file mode 100644 index 000000000..d0618b324 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/Install.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +/** + * + * @author hyh + */ +public class Install { + public String profileName, target, path, version, filePath, welcome, minecraft, mirrorList, logo; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/InstallProfile.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/InstallProfile.java new file mode 100644 index 000000000..dc1ab82a1 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/InstallProfile.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +/** + * + * @author hyh + */ +public class InstallProfile { + public Install install; + public MinecraftVersion versionInfo; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java new file mode 100644 index 000000000..dc57c2222 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java @@ -0,0 +1,29 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +import java.io.File; + +/** + * + * @author hyh + */ +public class MinecraftLibrary { + + public String url, formatted=null, name; + //public boolean serverreq=true, clientreq=true; + public String[] checksums; + + public void init() { + String str = name; + String[] s = str.split(":"); + str = s[0]; + str = str.replace('.', File.separatorChar); + str += File.separator + s[1] + File.separator + s[2] + + File.separator + s[1] + '-' + s[2] + ".jar"; + formatted = str; + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java new file mode 100644 index 000000000..0b5adc639 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java @@ -0,0 +1,21 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.installer.cauldron; + +import java.util.List; + +/** + * + * @author hyh + */ +public class MinecraftVersion { + + public String minecraftArguments, mainClass, time, id, type, processArguments, + releaseTime, assets, jar, inheritsFrom; + public int minimumLauncherVersion; + + public List libraries; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java new file mode 100644 index 000000000..05562bf97 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java @@ -0,0 +1,71 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server; + +import java.util.TimerTask; +import org.jackhuang.hellominecraft.svrmgr.server.schedules.*; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public class ScheduleTranslator { + + public static TimerTask translate(Server ser, Schedule s) { + switch(s.type) { + case Schedule.TYPE_AUTO_SAVE: + return new AutoSaveSchedule(s, ser); + case Schedule.TYPE_AUTO_RESTART: + return new AutoRestartSchedule(s, ser); + case Schedule.TYPE_AUTO_BACKUP: + return new AutoBackupSchedule(s, ser); + case Schedule.TYPE_AUTO_BROADCAST: + return new AutoBroadcastSchedule(s, ser); + case Schedule.TYPE_AUTO_SEND_COMMAND: + return new AutoBroadcastSchedule(s, ser); + } + return null; + } + + public static String getName(Schedule s) { + switch(s.type) { + case Schedule.TYPE_AUTO_SAVE: + return "自动保存"; + case Schedule.TYPE_AUTO_RESTART: + return "自动重启"; + case Schedule.TYPE_AUTO_BACKUP: + return "自动备份"; + case Schedule.TYPE_AUTO_BROADCAST: + return "自动广播"; + case Schedule.TYPE_AUTO_SEND_COMMAND: + return "自动发送命令"; + } + return ""; + } + + public static String getTimeTypeName(Schedule s) { + switch(s.timeType) { + case Schedule.TIME_TYPE_PER: + return "每x分钟"; + case Schedule.TIME_TYPE_PAST_HOUR: + return "整点后x分钟"; + case Schedule.TIME_TYPE_SERVER_STARTED: + return "当服务器启动"; + case Schedule.TIME_TYPE_SERVER_STOPPED: + return "当服务器关闭"; + case Schedule.TIME_TYPE_SERVER_CRASHED: + return "当服务器崩溃"; + } + return ""; + } + + public static Object[] getRow(Schedule s) { + return new Object[] { + getName(s), getTimeTypeName(s), s.per, s.content + }; + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java new file mode 100644 index 000000000..df7fba011 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java @@ -0,0 +1,431 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Timer; +import java.util.TimerTask; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.DoneListener1; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.Pair; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; +import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; +import org.jackhuang.hellominecraft.svrmgr.threads.MonitorThread; +import org.jackhuang.hellominecraft.svrmgr.threads.WaitForThread; +import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; + +/** + * + * @author hyh + */ +public class Server implements DoneListener1, MonitorThread.MonitorThreadListener, + ActionListener { + + private static Server instance; + private static boolean disactived = false; + + public static Server getInstance() { + return instance; + } + + public static boolean isInstanceRunning() { + return instance != null && instance.isRunning; + } + + public static void init(String jar, String memory) { + instance = new Server(jar, memory); + } + + String jar, memory; + Process server; + MonitorThread threadA, threadB; + WaitForThread threadC; + DoneListener1> gettingPlayerNumber; + ArrayList listeners; + ArrayList> listenersC; + ArrayList listenersBegin, listenersDone; + ArrayList timerTasks; + ArrayList schedules; + BufferedWriter bw; + Timer timer; + javax.swing.Timer pastTimer; + public boolean isRunning, isRestart, isDone; + int isGettingPlayerNumber; + String playerNumber; + + private Server(String jar, String memory) { + this.jar = jar; + this.memory = memory; + isRestart = isDone = false; + listeners = new ArrayList(); + listenersC = new ArrayList>(); + listenersBegin = new ArrayList(); + listenersDone = new ArrayList(); + schedules = new ArrayList(); + timerTasks = new ArrayList(); + } + + public void addListener(MonitorThread.MonitorThreadListener l) { + listeners.add(l); + } + + public void addListener(DoneListener1 l) { + listenersC.add(l); + } + + public void addServerStartedListener(DoneListener0 l) { + listenersBegin.add(l); + } + + public void addServerDoneListener(DoneListener0 l) { + listenersDone.add(l); + } + + public void run() throws IOException { + String jvmPath; + if (StrUtils.isBlank(SettingsManager.settings.javaDir)) { + jvmPath = IOUtils.getJavaDir(); + } else { + jvmPath = SettingsManager.settings.javaDir; + } + String[] puts = new String[]{ + jvmPath, + "-Xmx" + memory + "m", + "-jar", + SettingsManager.settings.mainjar, + "nogui", + "-nojline" + }; + ProcessBuilder pb = new ProcessBuilder(puts); + pb.directory(new File(SettingsManager.settings.mainjar).getParentFile()); + try { + disactiveMods(SettingsManager.settings.inactiveExtMods, + SettingsManager.settings.inactiveCoreMods, + SettingsManager.settings.inactivePlugins); + server = pb.start(); + registerThread(threadA, server.getInputStream()); + registerThread(threadB, server.getErrorStream()); + registerThreadC(server); + try { + bw = new BufferedWriter(new OutputStreamWriter(server.getOutputStream(), System.getProperty("sun.jnu.encoding", "utf-8"))); + } catch (UnsupportedEncodingException ex) { + bw = new BufferedWriter(new OutputStreamWriter(server.getOutputStream())); + } + isRunning = true; + for (DoneListener0 d : listenersBegin) { + d.onDone(); + } + sendStatus("*** 启动服务端中 ***"); + } catch (IOException ex) { + Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); + isRunning = false; + } + } + + public void sendCommand(String cmd) { + if (isRunning) { + try { + sendStatus("发送指令: " + cmd); + bw.write(cmd); + bw.newLine(); + bw.flush(); + } catch (IOException ex) { + Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + public void getPlayerNumber(DoneListener1> d) { + isGettingPlayerNumber = 1; + gettingPlayerNumber = d; + sendCommand("list"); + } + + public void restart() { + isRestart = true; + stop(); + } + + public void stop() { + if (timer != null) { + timer.cancel(); + } + sendCommand("stop"); + } + + public void shutdown() { + if (timer != null) { + timer.cancel(); + } + server.destroy(); + } + + public void clearSchedule() { + schedules.clear(); + } + + public void addSchedule(Schedule s) { + schedules.add(s); + } + + public void delSchedule(Schedule s) { + int index = schedules.indexOf(s); + if (index == -1) { + return; + } + schedules.remove(index); + timerTasks.get(index).cancel(); + timerTasks.remove(index); + } + + private void registerThread(MonitorThread thread, InputStream is) { + thread = new MonitorThread(is); + for (MonitorThread.MonitorThreadListener l : listeners) { + thread.addListener(l); + } + thread.addListener(this); + thread.start(); + } + + private void registerThreadC(Process p) { + threadC = new WaitForThread(p); + for (DoneListener1 l : listenersC) { + threadC.addListener(l); + } + threadC.addListener(this); + threadC.start(); + } + + @Override + public void onDone(Integer t) { + if (t == 0) { + sendStatus("*** 服务端已停止 ***"); + System.out.println("Server stopped successfully"); + } else { + sendStatus("*** 服务端崩溃了!(错误码:" + t + ") ***"); + System.err.println("Server crashed(exit code: " + t + ")"); + } + isRunning = false; + for (int i = 0; i < schedules.size(); i++) { + if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_STOPPED) { + ScheduleTranslator.translate(this, schedules.get(i)).run(); + } + } + if (timer != null) { + timer.cancel(); + } + if (pastTimer != null) { + pastTimer.stop(); + } + restoreMods(); + if (isRestart) { + try { + run(); + } catch (IOException ex) { + MessageBox.Show("重启失败!"); + HMCLog.warn("Failed to launch!", ex); + } + isRestart = false; + } + } + + private static void disactiveMods(ArrayList inactiveExtMods, + ArrayList inactiveCoreMods, ArrayList inactivePlugins) { + disactiveModsByType(inactiveExtMods, "mods"); + disactiveModsByType(inactiveCoreMods, "coremods"); + disactiveModsByType(inactivePlugins, "plugins"); + disactived = true; + } + + private static void disactiveModsByType(ArrayList paramArrayOfString, String paramString) { + restoreModsByType(paramString); + + System.out.println("禁用不活动的文件: " + paramString); + if ((paramArrayOfString == null) || (paramArrayOfString.size() <= 0)) { + return; + } + File[] files = new File(Utilities.getGameDir(), paramString).listFiles(); + if (files == null) { + System.out.println("没有文件: " + paramString); + return; + } + for (int i = 0; i < files.length; i++) { + File file = files[i]; + if (!file.isDirectory()) { + String name = file.getName(); + + if ((!paramArrayOfString.contains(name)) + || ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) { + continue; + } + + String newName = name + "X"; + File newFile = new File(file.getParentFile(), newName); + + if (newFile.exists()) { + newFile.delete(); + } + if (file.renameTo(newFile)) { + System.out.println("已禁用: " + name + ", 新名称: " + newFile.getName()); + } else { + System.out.println("无法禁用: " + name); + } + } + } + } + + private static void restoreModsByType(String paramString) { + System.out.println("还原被禁用的文件: " + paramString); + File[] files = new File(Utilities.getGameDir(), paramString).listFiles(); + if (files == null) { + return; + } + for (int i = 0; i < files.length; i++) { + File file = files[i]; + if (file.isDirectory()) { + continue; + } + String name = file.getName(); + String lowName = name.toLowerCase(); + if ((!lowName.endsWith(".zipx")) && (!lowName.endsWith(".jarx"))) { + continue; + } + String newName = name.substring(0, name.length() - 1); + + File newFile = new File(file.getParentFile(), newName); + if (newFile.exists()) { + file.delete(); + } else { + if (!file.renameTo(newFile)) { + System.out.println("无法重命名: " + file.getName() + " 到: " + newFile.getName() + " 在: " + file.getParent()); + } + } + } + } + + static void restoreMods() { + if (disactived) { + restoreModsByType("mods"); + restoreModsByType("coremods"); + restoreModsByType("plugins"); + disactived = false; + } + } + + @Override + public void onStatus(String status) { + System.out.println(status); + if (isGettingPlayerNumber == 1) { + Pattern p = Pattern.compile("There are [0-9]*/[0-9]* players online"); + Matcher m = p.matcher(status); + if (!m.find()) { + return; + } + String s = m.group(0); + s = s.substring(10, s.length() - 15); + playerNumber = s; + isGettingPlayerNumber = 2; + return; + } else if (isGettingPlayerNumber == 2) { + try { + status = status.substring(status.lastIndexOf("]")+1); + status = status.substring(status.indexOf(":")+1); + } catch(Exception e) { + HMCLog.warn("Failed to substring status.", e); + } + String[] s; + if(StrUtils.isNotBlank(status)) { + s = status.trim().split(", "); + } else { + s = new String[0]; + } + Pair p = new Pair(playerNumber, s); + isGettingPlayerNumber = 0; + gettingPlayerNumber.onDone(p); + return; + } + if (isDone == false) { + Pattern p = Pattern.compile("\\[INFO\\] Done \\([0-9]*\\.[0-9]*s\\)! For help, type \"help\" or \"\\?\""); + Matcher m = p.matcher(status); + if (m.find()) { + for (DoneListener0 d : listenersDone) { + d.onDone(); + } + timer = new Timer(); + timerTasks.clear(); + for (int i = 0; i < schedules.size(); i++) { + if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_STARTED) { + ScheduleTranslator.translate(this, schedules.get(i)).run(); + continue; + } + if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) { + continue; + } + long mill = (long) Math.floor(schedules.get(i).per * 60 * 1000); + timerTasks.add(ScheduleTranslator.translate(this, schedules.get(i))); + timer.schedule(timerTasks.get(i), mill, mill); + } + pastTimer = new javax.swing.Timer(1000, this); + pastTimer.start(); + System.out.println("Server started!"); + sendStatus("*** 服务端已启动完成 ***"); + isDone = true; + } + } + if (status.length() > 20) { + if (status.substring(20).contains("[SEVERE] This crash report has been saved to: ")) { + for (int i = 0; i < schedules.size(); i++) { + if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_CRASHED) { + ScheduleTranslator.translate(this, schedules.get(i)).run(); + } + } + } + } + } + + GregorianCalendar c = new GregorianCalendar(); + + @Override + public void actionPerformed(ActionEvent e) { + c.setTime(new Date()); + if (c.get(Calendar.SECOND) != 0) { + return; + } + int minute = c.get(Calendar.MINUTE); + for (int i = 0; i < schedules.size(); i++) { + if (schedules.get(i).timeType != Schedule.TIME_TYPE_PAST_HOUR) { + continue; + } + if (schedules.get(i).per == minute) { + ScheduleTranslator.translate(this, schedules.get(i)).run(); + } + } + } + + private void sendStatus(String status) { + for (MonitorThread.MonitorThreadListener l : listeners) { + l.onStatus(status); + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ServerChecker.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ServerChecker.java new file mode 100644 index 000000000..66a9b6c2c --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ServerChecker.java @@ -0,0 +1,35 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server; + +import java.io.File; +import java.io.IOException; +import java.util.zip.ZipFile; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public class ServerChecker { + + public static boolean isServerJar(File f) { + ZipFile file; + try { + file = new ZipFile(f); + } catch (IOException ex) { + HMCLog.warn("", ex); + return false; + } + if(file.getEntry("org/bukkit/craftbukkit/Main.class") != null) { + return true; + } + if(file.getEntry("net/minecraft/server/MinecraftServer.class") != null) { + return true; + } + return false; + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java new file mode 100644 index 000000000..d396e6358 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java @@ -0,0 +1,103 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.backups; + +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.Compressor; +import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; +import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; + +/** + * + * @author hyh + */ +public class BackupManager { + + public static String backupDir() { + return Utilities.getGameDir() + "backups-HMCSM" + File.separator; + } + + public static ArrayList getBackupList() { + String gameDir = backupDir(); + return Utilities.findAllFile(new File(gameDir)); + } + + public static void addWorldBackup(final String folder) { + new File(backupDir()).mkdirs(); + Thread t = new Thread() { + @Override + public void run() { + try { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); + Compressor.zip(Utilities.getGameDir() + folder + File.separator, + backupDir() + "world+" + f.format(new Date()) + "+" + folder + ".zip"); + } catch (IOException ex) { + HMCLog.warn("Failed to compress world pack.", ex); + } + } + }; + t.start(); + } + + public static ArrayList findAllWorlds() { + String gameDir = Utilities.getGameDir(); + ArrayList folders = Utilities.findAllDir(new File(gameDir)); + ArrayList result = new ArrayList(); + for(String folder : folders) { + String worldPath = gameDir + folder + File.separator; + ArrayList files = Utilities.findAllFile(new File(worldPath)); + if(files.contains("level.dat")) { + result.add(folder); + } + } + return result; + } + + public static void restoreBackup(String backupFile) { + try { + File file = new File(backupFile); + String name = Utilities.trimExtension(file.getName()); + String[] info = name.split("\\+"); + String folder = info[2]; + File world = new File(Utilities.getGameDir() + folder + File.separator); + Utilities.deleteAll(world); + world.mkdirs(); + Compressor.unzip(backupFile, world.getAbsolutePath()); + } catch (IOException ex) { + HMCLog.warn("Failed to decompress world pack.", ex); + } + } + + public static void backupAllWorlds() { + ArrayList al = findAllWorlds(); + for(String world : al) { + if(!SettingsManager.settings.inactiveWorlds.contains(world)) + addWorldBackup(world); + } + } + + public static void backupAllPlugins() { + new File(backupDir()).mkdirs(); + Thread t = new Thread() { + @Override + public void run() { + try { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); + Compressor.zip(Utilities.getGameDir() + "plugins" + File.separator, + backupDir() + "plugin+" + f.format(new Date()) + "+plugins.zip"); + } catch (IOException ex) { + HMCLog.warn("Failed to compress world pack with plugins.", ex); + } + } + }; + t.start(); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/download/ServerDownloadPackage.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/download/ServerDownloadPackage.java new file mode 100644 index 000000000..a053af6d1 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/download/ServerDownloadPackage.java @@ -0,0 +1,13 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.download; + +/** + * + * @author hyh + */ +public class ServerDownloadPackage { + public String mcversion, version, forgeversion, majorversion, file; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBackupSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBackupSchedule.java new file mode 100644 index 000000000..70a739216 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBackupSchedule.java @@ -0,0 +1,33 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import java.util.TimerTask; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.server.backups.BackupManager; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public class AutoBackupSchedule extends TimerTask { + + Schedule main; + Server server; + + public AutoBackupSchedule(Schedule s, Server s2) { + main = s; + server = s2; + } + + @Override + public void run() { + System.out.println("Backup"); + Server.getInstance().sendCommand("say 自动备份完毕"); + BackupManager.backupAllWorlds(); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBroadcastSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBroadcastSchedule.java new file mode 100644 index 000000000..7ceb63a71 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBroadcastSchedule.java @@ -0,0 +1,29 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import java.util.TimerTask; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public class AutoBroadcastSchedule extends TimerTask { + + Schedule main; + Server server; + + public AutoBroadcastSchedule(Schedule s, Server s2) { + main = s; + server = s2; + } + + @Override + public void run() { + server.sendCommand("say " + main.content); + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoExecuteSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoExecuteSchedule.java new file mode 100644 index 000000000..a8678c60a --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoExecuteSchedule.java @@ -0,0 +1,34 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import java.io.IOException; +import java.util.TimerTask; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public class AutoExecuteSchedule extends TimerTask { + Schedule main; + Server server; + + public AutoExecuteSchedule(Schedule s, Server s2) { + main = s; + server = s2; + } + + @Override + public void run() { + try { + Runtime.getRuntime().exec(main.content); + } catch (IOException ex) { + HMCLog.err("Failed to exec command: " + main.content, ex); + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java new file mode 100644 index 000000000..17ac55272 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java @@ -0,0 +1,28 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import java.util.TimerTask; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; +/** + * + * @author hyh + */ +public class AutoRestartSchedule extends TimerTask { + + Schedule main; + Server server; + + public AutoRestartSchedule(Schedule s, Server s2) { + main = s; + server = s2; + } + + @Override + public void run() { + server.restart(); + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSaveSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSaveSchedule.java new file mode 100644 index 000000000..01e74ce1b --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSaveSchedule.java @@ -0,0 +1,31 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import java.util.TimerTask; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public class AutoSaveSchedule extends TimerTask { + + Schedule main; + Server server; + + public AutoSaveSchedule(Schedule s, Server s2) { + main = s; + server = s2; + } + + @Override + public void run() { + System.out.println("auto save"); + server.sendCommand("save-all"); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSchedule.java new file mode 100644 index 000000000..966d48224 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSchedule.java @@ -0,0 +1,23 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import java.util.TimerTask; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public abstract class AutoSchedule extends TimerTask { + Schedule main; + Server server; + + public AutoSchedule(Schedule s, Server s2) { + main = s; + server = s2; + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSendCommandSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSendCommandSchedule.java new file mode 100644 index 000000000..aed4d21d2 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSendCommandSchedule.java @@ -0,0 +1,24 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.server.schedules; + +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + +/** + * + * @author hyh + */ +public class AutoSendCommandSchedule extends AutoSchedule { + + public AutoSendCommandSchedule(Schedule s, Server s2) { + super(s, s2); + } + + @Override + public void run() { + server.sendCommand(main.content); + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/BannedPlayers.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/BannedPlayers.java new file mode 100644 index 000000000..49f556874 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/BannedPlayers.java @@ -0,0 +1,36 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.settings; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * + * @author hyh + */ +public class BannedPlayers extends PlayerList { + + @Override + protected BannedPlayer newPlayer(String name) { + return new BannedPlayer(name); + } + + public static class BannedPlayer extends PlayerList.BasePlayer { + + public String source, expires, reason, created; + + public BannedPlayer(String name) { + super(name); + + created = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss +0800").format(new Date()); + source = "Server"; + expires = "forever"; + reason = "你已经被服务器封禁"; + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Op.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Op.java new file mode 100644 index 000000000..31f9625e7 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Op.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.settings; + +/** + * + * @author hyh + */ +public class Op extends PlayerList { + + @Override + protected Op.Operator newPlayer(String name) { + return new Op.Operator(name); + } + + public static class Operator extends PlayerList.BasePlayer { + + public int level; + + public Operator(String name) { + super(name); + level = 4; + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java new file mode 100644 index 000000000..c309cc2b9 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java @@ -0,0 +1,113 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.settings; + +import com.google.gson.Gson; +import java.io.File; +import java.io.IOException; +import java.util.HashSet; +import java.util.UUID; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.svrmgr.settings.PlayerList.BasePlayer; + +/** + * + * @author hyh + * @param Player type. + */ +public abstract class PlayerList { + + public static class BasePlayer { + + public String uuid, name; + + public BasePlayer(String name) { + uuid = UUID.randomUUID().toString(); + this.name = name; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof PlayerList.BasePlayer) { + BasePlayer player = (BasePlayer) obj; + return player.name.equals(name); + } + return false; + } + + @Override + public int hashCode() { + return this.name.hashCode(); + } + + @Override + public String toString() { + return name; + } + + } + + public HashSet op; + + protected abstract T newPlayer(String name); + + public void initByText(String s) { + String[] lines = s.split("\n"); + op = new HashSet(); + for (String l : lines) { + if(l.startsWith("#")) continue; + T player = newPlayer(l); + if (StrUtils.isBlank(l)) { + continue; + } + op.add(player); + } + } + + public void initByJson(String s) { + op = new Gson().>fromJson(s, HashSet.class); + } + + public void initByBoth(File txt, File json) { + HashSet player = new HashSet(); + /*op = null; + if(json.exists()) { + try { + initByJson(FileUtils.readFileToStringIgnoreFileNotFound(json)); + if(op != null) + player.addAll(op); + } catch(IOException e) { + HMCLLog.warn("Failed to load playerlist by json", e); + } + }*/ + op = null; + if(txt.exists()) { + try { + initByText(FileUtils.readFileToStringIgnoreFileNotFound(txt)); + if(op != null) + player.addAll(op); + } catch(IOException e) { + HMCLog.warn("Failed to load playerlist by txt", e); + } + } + op = player; + } + + public void saveAsText(File file) throws IOException { + FileUtils.write(file, StrUtils.parseParams("", op, System.getProperty("line.separator"))); + } + + public void saveAsJson(File file) throws IOException { + FileUtils.write(file, new Gson().toJson(op)); + } + + public void saveAsBoth(File txt, File json) throws IOException { + saveAsText(txt); + saveAsJson(json); + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java new file mode 100644 index 000000000..7ba697d38 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java @@ -0,0 +1,33 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.settings; + +/** + * + * @author hyh + */ +public class Schedule { + public static final int + TYPE_AUTO_SAVE = 0, + TYPE_AUTO_RESTART = 1, + TYPE_AUTO_BACKUP = 2, + TYPE_AUTO_BROADCAST = 3, + TYPE_AUTO_SEND_COMMAND = 4, + TYPE_AUTO_EXECUTE = 5; + public static final int + TYPE2_AUTO_BACKUP_PLUGINS = 1, + TYPE2_AUTH_BACKUP_CONFIG = 2, + TYPE3_AUTH_BACKUP_WORLD = 3; + public static final int + TIME_TYPE_PER = 0, + TIME_TYPE_PAST_HOUR = 1, + TIME_TYPE_SERVER_STARTED = 2, + TIME_TYPE_SERVER_STOPPED = 3, + TIME_TYPE_SERVER_CRASHED = 4; + + public int type, type2, timeType; + public String content; + public double per; +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java new file mode 100644 index 000000000..3bcc95c19 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java @@ -0,0 +1,253 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.settings; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Properties; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author jack + */ +public class ServerProperties { + + public static ServerProperties getInstance() { + return instance; + } + + private static ServerProperties instance; + + public static void init(String path) { + instance = new ServerProperties(path); + } + + String path; + InputStream is; + Properties p; + + public ServerProperties(String path) { + this.path = path; + } + + public String getProperty(String key) { + return getProperty(key, ""); + } + + public String getProperty(String key, String defaultValue) { + try { + is = new FileInputStream(new File(path, "server.properties")); + p = new Properties(); + p.load(is); + return p.getProperty(key, defaultValue); + } catch (IOException ex) { + HMCLog.warn("Failed to get property in server.properties", ex); + return ""; + } finally { + try { + if(is != null) + is.close(); + } catch (IOException ex) { + HMCLog.warn("Failed to close InputStream for server.properties", ex); + } + } + } + + public int getPropertyInt(String key, int defaultValue) { + try { + return Integer.parseInt(getProperty(key, String.valueOf(defaultValue))); + } catch(NumberFormatException e) { + return defaultValue; + } + } + + public boolean getPropertyBoolean(String key, boolean defaultValue) { + return getProperty(key, String.valueOf(defaultValue)).equals("true"); + } + + public void setProperty(String key, String value) { + try { + is = new FileInputStream(new File(path, "server.properties")); + p = new Properties(); + p.load(is); + p.setProperty(key, value); + SimpleDateFormat f = new SimpleDateFormat("E M d HH:mm:ss z y"); + p.store(new FileOutputStream(new File(path, "server.properties")), + "Minecraft server properties\n" + f.format(new Date())); + } catch (IOException ex) { + HMCLog.warn("Failed to set property in server.properties", ex); + } finally { + try { + if(is != null) + is.close(); + } catch (IOException ex) { + HMCLog.warn("Failed to close OutputStream for server.properties", ex); + } + } + } + + public void setProperty(String key, boolean value) { + setProperty(key, value ? "true" : "false"); + } + + public void setProperty(String key, int value) { + setProperty(key, String.valueOf(value)); + } + + public void setGeneratorSettings(String string) { + setProperty("generator-settings", string); + } + + public void setAllowNether(boolean bool) { + setProperty("allow-nether", bool); + } + + public void setLevelName(String string) { + setProperty("level-name", string); + } + + public void setEnableQuery(boolean bool) { + setProperty("enable-query", bool); + } + + public void setAllowFlight(boolean bool) { + setProperty("allow-flight", bool); + } + + public void setServerPort(int integer) { + setProperty("server-port", integer); + } + + public void setLevelType(String string) { + setProperty("level-type", string); + } + + public void setEnableRcon(boolean bool) { + setProperty("enable-rcon", bool); + } + + public void setForceGameMode(boolean bool) { + setProperty("force-gamemode", bool); + } + + public void setLevelSeed(String string) { + setProperty("level-seed", string); + } + + public void setServerIP(String string) { + setProperty("server-ip", string); + } + + public void setMaxBuildHeight(int integer) { + setProperty("max-build-height", integer); + } + + public void setSpawnNPCs(boolean bool) { + setProperty("spawn-npcs", bool); + } + + public void setWhiteList(boolean bool) { + setProperty("white-list", bool); + } + + public void setSpawnAnimals(boolean bool) { + setProperty("spawn-animals", bool); + } + + public void setTexturePack(String string) { + setProperty("texture-pack", string); + } + + public void setSnooperEnabled(boolean bool) { + setProperty("snooper-enabled", bool); + } + + public void setHardCore(boolean bool) { + setProperty("hardcore", bool); + } + + public void setOnlineMode(boolean bool) { + setProperty("online-mode", bool); + } + + public void setPVP(boolean bool) { + setProperty("pvp", bool); + } + + public void setDifficulty(int integer) { + setProperty("difficulty", integer); + } + + public void setServerName(String string) { + setProperty("server-name", string); + } + + public void setGameMode(int integer) { + setProperty("gamemode", integer); + } + + public void setMaxPlayers(int integer) { + setProperty("max-players", integer); + } + + public void setSpawnMonsters(boolean bool) { + setProperty("spawn-monsters", bool); + } + + public void setViewDistence(int integer) { + setProperty("view-distance", integer); + } + + public void setGenerateStructures(boolean bool) { + setProperty("generate-structures", bool); + } + + public void setMotd(String string) { + setProperty("motd", string); + } + + public static String getDefault() { + return "generator-settings=\n" + +"op-permission-level=4\n" + +"allow-nether=true\n" + +"level-name=world\n" + +"enable-query=false\n" + +"allow-flight=false\n" + +"announce-player-achievements=true\n" + +"server-port=25565\n" + +"level-type=DEFAULT\n" + +"enable-rcon=false\n" + +"force-gamemode=false\n" + +"level-seed=\n" + +"server-ip=\n" + +"max-build-height=256\n" + +"spawn-npcs=true\n" + +"white-list=false\n" + +"spawn-animals=true\n" + +"hardcore=false\n" + +"snooper-enabled=true\n" + +"online-mode=false\n" + +"resource-pack=\n" + +"pvp=true\n" + +"difficulty=1\n" + +"server-name=Unknown Server\n" + +"enable-command-block=false\n" + +"gamemode=0\n" + +"player-idle-timeout=0\n" + +"max-players=20\n" + +"spawn-monsters=true\n" + +"generate-structures=true\n" + +"view-distance=10\n" + +"spawn-protection=16\n" + +"motd=A Minecraft Server"; + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java new file mode 100644 index 000000000..dff19660f --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java @@ -0,0 +1,33 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.settings; + +import java.util.ArrayList; + +/** + * + * @author hyh + */ +public class Settings { + + public boolean checkUpdate; + public String maxMemory; + public String mainjar, bgPath, javaDir, javaArgs; + public ArrayList inactiveExtMods, inactiveCoreMods, inactivePlugins, + inactiveWorlds; + public ArrayList schedules; + + public Settings() { + maxMemory = "1024"; + checkUpdate = true; + schedules = new ArrayList(); + mainjar = bgPath = javaDir = javaArgs = ""; + inactiveExtMods = new ArrayList(); + inactiveCoreMods = new ArrayList(); + inactivePlugins = new ArrayList(); + inactiveWorlds = new ArrayList(); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/SettingsManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/SettingsManager.java new file mode 100644 index 000000000..f692c5b49 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/SettingsManager.java @@ -0,0 +1,62 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.settings; + +/** + * + * @author hyh + */ +import com.google.gson.Gson; +import java.io.File; +import java.io.IOException; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.utils.IOUtils; + +/** + * + * @author hyh + */ +public class SettingsManager { + + public static Settings settings; + public static boolean isFirstLoad = false; + static Gson gson; + + public static void load() { + gson = new Gson(); + File file = new File(IOUtils.currentDir(), "hmcsm.json"); + if (file.exists()) { + try { + String str = FileUtils.readFileToString(file); + if (str == null || str.trim().equals("")) { + init(); + } else { + settings = gson.fromJson(str, Settings.class); + } + } catch (IOException ex) { + init(); + } + } else { + settings = new Settings(); + save(); + } + } + + public static void init() { + settings = new Settings(); + isFirstLoad = true; + save(); + } + + public static void save() { + File f = new File(IOUtils.currentDir(), "hmcsm.json"); + try { + FileUtils.write(f, gson.toJson(settings)); + } catch (IOException ex) { + HMCLog.err("Failed to save settings.", ex); + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/WhiteList.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/WhiteList.java new file mode 100644 index 000000000..e420ebcf8 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/WhiteList.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.settings; + +/** + * + * @author hyh + */ +public class WhiteList extends PlayerList { + + @Override + protected WhiteList.WhiteListPlayer newPlayer(String name) { + return new WhiteList.WhiteListPlayer(name); + } + + public static class WhiteListPlayer extends PlayerList.BasePlayer { + + public WhiteListPlayer(String name) { + super(name); + } + + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java new file mode 100644 index 000000000..5db0dce32 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java @@ -0,0 +1,56 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.threads; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.HMCLog; + +/** + * + * @author hyh + */ +public class MonitorThread extends Thread { + + public interface MonitorThreadListener { + void onStatus(String status); + } + + InputStream is; + BufferedReader br; + ArrayList listeners; + + public MonitorThread(InputStream is) { + this.listeners = new ArrayList(5); + try { + br = new BufferedReader(new InputStreamReader(is, System.getProperty("sun.jnu.encoding", "gbk"))); + } catch (UnsupportedEncodingException ex) { + br = new BufferedReader(new InputStreamReader(is)); + } + } + + public void addListener(MonitorThreadListener l) { + listeners.add(l); + } + + @Override + public void run() { + String line; + try { + while((line = br.readLine()) != null) { + for(MonitorThreadListener l : listeners) + if(l != null) + l.onStatus(line); + } + } catch (IOException ex) { + HMCLog.warn("Failed to monitor threads.", ex); + } + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java new file mode 100644 index 000000000..5342f5c28 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java @@ -0,0 +1,45 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.threads; + +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.jackhuang.hellominecraft.DoneListener1; + +/** + * + * @author jack + */ +public class WaitForThread extends Thread { + + public ArrayList> al; + Process p; + + public WaitForThread(Process p) { + this.p = p; + al = new ArrayList>(); + } + + public void addListener(DoneListener1 dl) { + al.add(dl); + } + + @Override + public void run() { + try { + int exitCode = p.waitFor(); + for(DoneListener1 dl : al) + if(dl != null) + dl.onDone(exitCode); + } catch (InterruptedException ex) { + Logger.getLogger(WaitForThread.class.getName()).log(Level.SEVERE, null, ex); + for(DoneListener1 dl : al) + if(dl != null) + dl.onDone(-1); + } + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/FolderOpener.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/FolderOpener.java new file mode 100644 index 000000000..e48374700 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/FolderOpener.java @@ -0,0 +1,45 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.utils; + +import java.io.File; +import org.jackhuang.hellominecraft.utils.MessageBox; + +/** + * + * @author jack + */ +public class FolderOpener { + + public static void open(String s) { + try { + File f = new File(s); + f.mkdirs(); + java.awt.Desktop.getDesktop().open(f); + } catch (Exception ex) { + MessageBox.Show("无法打开资源管理器: " + ex.getMessage()); + } + } + + public static void openResourcePacks(String gameDir) { + open(gameDir + "resourcepacks"); + } + public static void openTextutrePacks(String gameDir) { + open(gameDir + "texturepacks"); + } + public static void openMods() { + open(Utilities.try2GetPath("mods")); + } + public static void openCoreMods() { + open(Utilities.try2GetPath("coremods")); + } + public static void openPlugins() { + open(Utilities.try2GetPath("plugins")); + } + public static void openConfig() { + open(Utilities.try2GetPath("config")); + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java new file mode 100644 index 000000000..0e47794cf --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java @@ -0,0 +1,20 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.utils; + +/** + * + * @author hyh + */ +public interface IMonitorService { + + /** + * 获得当前的监控对象. + * + * @return 返回构造好的监控对象 + * @throws Exception + */ + public MonitorInfoBean getMonitorInfoBean() throws Exception; +} \ No newline at end of file diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java new file mode 100644 index 000000000..122f3c040 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.svrmgr.utils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.jackhuang.hellominecraft.DoneListener1; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.select.Elements; + +/** + * + * @author hyh + */ +public class IPGet extends Thread { + + public DoneListener1 dl; + + @Override + public void run() { + try { + Document d = Jsoup.connect("http://www.ip138.com").get(); + Elements iframe = d.getElementsByTag("iframe"); + if(iframe.size() > 0) { + String url = iframe.get(0).attr("src"); + String s = NetUtils.doGet(url, "GBK"); + Pattern p = Pattern.compile("\\[(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}\\]"); + Matcher m = p.matcher(s); + s = ""; + while(m.find()) { + s += m.group() + ","; + } + dl.onDone(s.substring(0, s.length()-1)); + } + } catch (Exception ex) { + HMCLog.warn("Failed to get ip from ip138.", ex); + dl.onDone("获取失败"); + } + } + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java new file mode 100644 index 000000000..9c08af355 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java @@ -0,0 +1,86 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.utils; + +import java.io.File; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +/** + * 判断mod类型 + * @author hyh + */ +public class ModType { + + public static final int ForgeMod = 0; + public static final int ModLoaderMod = 1; + public static final int Forge = 2; + public static final int ModLoader = 3; + public static final int Unknown = 4; + + public static int getModType(String path) { + return getModType(new File(path)); + } + + public static int getModType(File path) { + boolean isModLoader = false; + ZipFile zipFile = null; + try { + if (path.exists()) { + zipFile = new ZipFile(path); + String gbkPath; + java.util.Enumeration e = zipFile.entries(); + while (e.hasMoreElements()) + { + ZipEntry zipEnt = (ZipEntry) e.nextElement(); + if(zipEnt.isDirectory()) continue; + gbkPath = zipEnt.getName(); + if("mcmod.info".equals(gbkPath)) + return ForgeMod; + else if("mcpmod.info".equals(gbkPath)) + return Forge; + else if("ModLoader.class".equals(gbkPath)) + isModLoader = true; + else if(gbkPath.trim().startsWith("mod_")) + return ModLoaderMod; + } + } + } catch(Exception e) { + + } finally { + try { + if(zipFile != null) + zipFile.close(); + } catch (IOException ex) { + Logger.getLogger(ModType.class.getName()).log(Level.SEVERE, null, ex); + } catch (Throwable t) { + + } + } + if(isModLoader) + return ModLoaderMod; + else + return Unknown; + } + + public static String getModTypeShowName(int type) { + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N"); // NOI18N + switch(type) { + case ForgeMod: + return bundle.getString("ForgeMod"); + case Forge: + return bundle.getString("Forge"); + case ModLoader: + return bundle.getString("ModLoader"); + case ModLoaderMod: + return bundle.getString("ModLoaderMod"); + default: + return bundle.getString("Unknown"); + } + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorInfoBean.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorInfoBean.java new file mode 100644 index 000000000..003a61761 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorInfoBean.java @@ -0,0 +1,121 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.utils; + +/** + * + * @author hyh + */ +public class MonitorInfoBean { + + /** + * 可使用内存. + */ + private long totalMemory; + /** + * 剩余内存. + */ + private long freeMemory; + /** + * 最大可使用内存. + */ + private long maxMemory; + /** + * 操作系统. + */ + private String osName; + /** + * 总的物理内存. + */ + private long totalMemorySize; + /** + * 剩余的物理内存. + */ + private long freePhysicalMemorySize; + /** + * 已使用的物理内存. + */ + private long usedMemory; + /** + * 线程总数. + */ + private int totalThread; + /** + * cpu使用率. + */ + private double cpuRatio; + + public long getFreeMemory() { + return freeMemory; + } + + public void setFreeMemory(long freeMemory) { + this.freeMemory = freeMemory; + } + + public long getFreePhysicalMemorySize() { + return freePhysicalMemorySize; + } + + public void setFreePhysicalMemorySize(long freePhysicalMemorySize) { + this.freePhysicalMemorySize = freePhysicalMemorySize; + } + + public long getMaxMemory() { + return maxMemory; + } + + public void setMaxMemory(long maxMemory) { + this.maxMemory = maxMemory; + } + + public String getOsName() { + return osName; + } + + public void setOsName(String osName) { + this.osName = osName; + } + + public long getTotalMemory() { + return totalMemory; + } + + public void setTotalMemory(long totalMemory) { + this.totalMemory = totalMemory; + } + + public long getTotalMemorySize() { + return totalMemorySize; + } + + public void setTotalMemorySize(long totalMemorySize) { + this.totalMemorySize = totalMemorySize; + } + + public int getTotalThread() { + return totalThread; + } + + public void setTotalThread(int totalThread) { + this.totalThread = totalThread; + } + + public long getUsedMemory() { + return usedMemory; + } + + public void setUsedMemory(long usedMemory) { + this.usedMemory = usedMemory; + } + + public double getCpuRatio() { + return cpuRatio; + } + + public void setCpuRatio(double cpuRatio) { + this.cpuRatio = cpuRatio; + } +} \ No newline at end of file diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java new file mode 100644 index 000000000..7003f75e1 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java @@ -0,0 +1,267 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import java.util.StringTokenizer; +import com.sun.management.OperatingSystemMXBean; +import org.jackhuang.hellominecraft.utils.Bytes; + +/** + * + * 获取系统信息的业务逻辑实现类. + * + * @author GuoHuang + */ +public class MonitorServiceImpl implements IMonitorService { + + private static final int CPUTIME = 30; + private static final int PERCENT = 100; + private static final int FAULTLENGTH = 10; + private static String linuxVersion = null; + + /** + * 获得当前的监控对象. + * + * @return 返回构造好的监控对象 + * @throws Exception + * @author GuoHuang + */ + public MonitorInfoBean getMonitorInfoBean() throws Exception { + int kb = 1024; + // 可使用内存 + long totalMemory = Runtime.getRuntime().totalMemory() / kb; + // 剩余内存 + long freeMemory = Runtime.getRuntime().freeMemory() / kb; + // 最大可使用内存 + long maxMemory = Runtime.getRuntime().maxMemory() / kb; + OperatingSystemMXBean osmxb = (OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean(); + // 操作系统 + String osName = System.getProperty("os.name"); + // 总的物理内存 + long totalMemorySize = osmxb.getTotalPhysicalMemorySize() / kb; + // 剩余的物理内存 + long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize() / kb; + // 已使用的物理内存 + long usedMemory = (osmxb.getTotalPhysicalMemorySize() - osmxb.getFreePhysicalMemorySize()) / kb; + // 获得线程总数 + ThreadGroup parentThread; + for (parentThread = Thread.currentThread().getThreadGroup(); parentThread.getParent() != null; parentThread = parentThread.getParent()); + int totalThread = parentThread.activeCount(); + double cpuRatio = 0; + if (osName.toLowerCase().startsWith("windows")) { + cpuRatio = this.getCpuRatioForWindows(); + } else { + cpuRatio = getCpuRateForLinux(); + } + // 构造返回对象 + MonitorInfoBean infoBean = new MonitorInfoBean(); + infoBean.setFreeMemory(freeMemory); + infoBean.setFreePhysicalMemorySize(freePhysicalMemorySize); + infoBean.setMaxMemory(maxMemory); + infoBean.setOsName(osName); + infoBean.setTotalMemory(totalMemory); + infoBean.setTotalMemorySize(totalMemorySize); + infoBean.setTotalThread(totalThread); + infoBean.setUsedMemory(usedMemory); + infoBean.setCpuRatio(cpuRatio); + return infoBean; + } + + private static double getCpuRateForLinux() { + InputStream is = null; + InputStreamReader isr = null; + BufferedReader brStat = null; + StringTokenizer tokenStat = null; + try { + System.out.println("Getting usage rate of CPU , linux version: " + linuxVersion); + Process process = Runtime.getRuntime().exec("top -b -n 1"); + is = process.getInputStream(); + isr = new InputStreamReader(is); + brStat = new BufferedReader(isr); + if (linuxVersion == null || linuxVersion.equals("2.4")) { + brStat.readLine(); + brStat.readLine(); + brStat.readLine(); + brStat.readLine(); + tokenStat = new StringTokenizer(brStat.readLine()); + tokenStat.nextToken(); + tokenStat.nextToken(); + String user = tokenStat.nextToken(); + tokenStat.nextToken(); + String system = tokenStat.nextToken(); + tokenStat.nextToken(); + String nice = tokenStat.nextToken(); + System.out.println(user + " , " + system + " , " + nice); + user = user.substring(0, user.indexOf("%")); + system = system.substring(0, system.indexOf("%")); + nice = nice.substring(0, nice.indexOf("%")); + float userUsage = new Float(user).floatValue(); + float systemUsage = new Float(system).floatValue(); + float niceUsage = new Float(nice).floatValue(); + return (userUsage + systemUsage + niceUsage) / 100; + } else { + brStat.readLine(); + brStat.readLine(); + tokenStat = new StringTokenizer(brStat.readLine()); + tokenStat.nextToken(); + tokenStat.nextToken(); + tokenStat.nextToken(); + tokenStat.nextToken(); + tokenStat.nextToken(); + tokenStat.nextToken(); + tokenStat.nextToken(); + String cpuUsage = tokenStat.nextToken(); + System.out.println("CPU idle : " + cpuUsage); + Float usage = new Float(cpuUsage.substring(0, cpuUsage.indexOf("%"))); + return (1 - usage.floatValue() / 100); + } + } catch (IOException ioe) { + System.out.println(ioe.getMessage()); + freeResource(is, isr, brStat); + return 1; + } finally { + freeResource(is, isr, brStat); + } + } + + private static void freeResource(InputStream is, InputStreamReader isr, + BufferedReader br) { + try { + if (is != null) { + is.close(); + } + if (isr != null) { + isr.close(); + } + if (br != null) { + br.close(); + } + } catch (IOException ioe) { + System.out.println(ioe.getMessage()); + } + } + + /** + * 获得CPU使用率. + * + * @return 返回cpu使用率 + * @author GuoHuang + */ + private double getCpuRatioForWindows() { + try { + String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount"; + // 取进程信息 + long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd)); + Thread.sleep(CPUTIME); + long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); + if (c0 != null && c1 != null) { + long idletime = c1[0] - c0[0]; + long busytime = c1[1] - c0[1]; + return Double.valueOf(PERCENT * (busytime) / (busytime + idletime)).doubleValue(); + } else { + return 0.0; + } + } catch (Exception ex) { + ex.printStackTrace(); + return 0.0; + } + } + + /** + * 读取CPU信息. + * + * @param proc + * @return + * @author GuoHuang + */ + private long[] readCpu(final Process proc) { + long[] retn = new long[2]; + try { + proc.getOutputStream().close(); + InputStreamReader ir = new InputStreamReader(proc.getInputStream()); + LineNumberReader input = new LineNumberReader(ir); + String line = input.readLine(); + if (line == null || line.length() < FAULTLENGTH) { + return null; + } + int capidx = line.indexOf("Caption"); + int cmdidx = line.indexOf("CommandLine"); + int rocidx = line.indexOf("ReadOperationCount"); + int umtidx = line.indexOf("UserModeTime"); + int kmtidx = line.indexOf("KernelModeTime"); + int wocidx = line.indexOf("WriteOperationCount"); + long idletime = 0; + long kneltime = 0; + long usertime = 0; + while ((line = input.readLine()) != null) { + if (line.length() < wocidx) { + continue; + } + // 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount, + // ThreadCount,UserModeTime,WriteOperation + String caption = Bytes.substring(line, capidx, cmdidx - 1).trim(); + String cmd = Bytes.substring(line, cmdidx, kmtidx - 1).trim(); + if (cmd.indexOf("wmic.exe") >= 0) { + continue; + } + String s1 = Bytes.substring(line, kmtidx, rocidx - 1).trim(); + String s2 = Bytes.substring(line, umtidx, wocidx - 1).trim(); + if (caption.equals("System Idle Process") || caption.equals("System")) { + if (s1.length() > 0) { + idletime += Long.parseLong(s1); + } + if (s2.length() > 0) { + idletime += Long.parseLong(s2); + } + continue; + } + if (s1.length() > 0) { + kneltime += Long.parseLong(s1); + } + if (s2.length() > 0) { + usertime += Long.parseLong(s2); + } + } + retn[0] = idletime; + retn[1] = kneltime + usertime; + return retn; + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + proc.getInputStream().close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + /** + * 测试方法. + * + * @param args + * @throws Exception + * @author GuoHuang + */ + public static void main(String[] args) throws Exception { + IMonitorService service = new MonitorServiceImpl(); + MonitorInfoBean monitorInfo = service.getMonitorInfoBean(); + System.out.println("cpu占有率=" + monitorInfo.getCpuRatio()); + System.out.println("可使用内存=" + monitorInfo.getTotalMemory()); + System.out.println("剩余内存=" + monitorInfo.getFreeMemory()); + System.out.println("最大可使用内存=" + monitorInfo.getMaxMemory()); + System.out.println("操作系统=" + monitorInfo.getOsName()); + System.out.println("总的物理内存=" + monitorInfo.getTotalMemorySize() + "kb"); + System.out.println("剩余的物理内存=" + monitorInfo.getFreeMemory() + "kb"); + System.out.println("已使用的物理内存=" + monitorInfo.getUsedMemory() + "kb"); + System.out.println("线程总数=" + monitorInfo.getTotalThread() + "kb"); + } +} \ No newline at end of file diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java new file mode 100644 index 000000000..ce88f9c4b --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java @@ -0,0 +1,195 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.utils; + +import java.io.File; +import java.util.ArrayList; +import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; + +/** + * + * @author hyh + */ +public class Utilities { + + public static String addSeparator(String path) { + if (path == null || path.trim().length() == 0) { + return ""; + } + if (path.charAt(path.length() - 1) == File.separatorChar) { + return path; + } else { + return path + File.separatorChar; + } + } + + public static boolean isSeparator(char ch) { + return ch == File.separatorChar || ch == '/' || ch == '\\'; + } + + public static String removeLastSeparator(String dir) { + String t = dir.trim(); + char ch = t.charAt(t.length() - 1); + if (isSeparator(ch)) { + return t.substring(0, t.length() - 1); + } + return t; + } + + public static String extractLastDirectory(String dir) { + String t = removeLastSeparator(dir); + int i = t.length() - 1; + while (i >= 0 && !isSeparator(dir.charAt(i))) { + i--; + } + if (i < 0) { + return t; + } + return t.substring(i + 1, (t.length() - i) + (i + 1) - 1); + } + + public static ArrayList findAllFile(File f) { + ArrayList arr = new ArrayList(); + if (!f.exists()) { + return arr; + } + if (f.isDirectory()) { + File[] f1 = f.listFiles(); + int len = f1.length; + for (int i = 0; i < len; i++) { + if (f1[i].isFile()) { + arr.add(f1[i].getName()); + } + } + } + return arr; + } + + public static ArrayList findAllDir(File f) { + ArrayList arr = new ArrayList(); + if (f.isDirectory()) { + File[] f1 = f.listFiles(); + int len = f1.length; + for (int i = 0; i < len; i++) { + if (f1[i].isDirectory()) { + arr.add(f1[i].getName()); + } + } + } + return arr; + } + + public static void deleteAll(File f) { + if (f == null || !f.exists()) { + return; + } + if (f.isFile()) { + f.delete(); + } else { + File f1[] = f.listFiles(); + int len = f1.length; + for (int i = 0; i < len; i++) { + deleteAll(f1[i]); + } + f.delete(); + } + } + + public static String extractFileName(String fileName) { + File file = new File(fileName); + return file.getName(); + } + + public static boolean is16Folder(String path) { + path = Utilities.addSeparator(path); + if (new File(path + "versions").exists()) { + return true; + } + return false; + } + + public static boolean isEmpty(String s) { + return s == null || s.trim().equals(""); + } + + public static int parseInt(String s, int def) { + try { + return Integer.parseInt(s); + } catch (Exception e) { + return def; + } + } + public static int tryParseInteger(String integer, int def) { + try { + return Integer.parseInt(integer); + } catch (NumberFormatException localNumberFormatException) { + return def; + } + } + + public static boolean isEquals(String base, String to) { + if (base == null) { + return (to == null); + } else { + return base.equals(to); + } + } + + public static String getGameDir() { + String path = new File(SettingsManager.settings.mainjar).getParent(); + path = Utilities.addSeparator(path); + return path; + } + + public static String getPath(String lastFolder) { + String path = getGameDir(); + File file = new File((new StringBuilder()).append(path).append(lastFolder).toString()); + if (file.exists()) { + return file.getPath(); + } else { + return null; + } + } + + public static String try2GetPath(String lastFolder) { + String path = getGameDir(); + return (new StringBuilder()).append(path).append(lastFolder).toString(); + + } + + public static String trimExtension(String filename) { + if ((filename != null) && (filename.length() > 0)) { + int i = filename.lastIndexOf('.'); + if ((i > -1) && (i < (filename.length()))) { + return filename.substring(0, i); + } + } + return filename; + } + + public static boolean openLink(String url) { + boolean isBrowsed = false; + //判断当前系统是否支持Java AWT Desktop扩展 + if (java.awt.Desktop.isDesktopSupported()) { + try { +//创建一个URI实例 + java.net.URI uri = java.net.URI.create(url); +//获取当前系统桌面扩展 + java.awt.Desktop dp = java.awt.Desktop.getDesktop(); +//判断系统桌面是否支持要执行的功能 + if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) { +//获取系统默认浏览器打开链接 + dp.browse(uri); + isBrowsed = true; + } + } catch (java.lang.NullPointerException e) { +//此为uri为空时抛出异常 + } catch (java.io.IOException e) { +//此为无法获取系统默认浏览器 + } + } + return isBrowsed; + } +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.form new file mode 100644 index 000000000..ee12f0b03 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.form @@ -0,0 +1,53 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.java new file mode 100644 index 000000000..3eb0d4a29 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.java @@ -0,0 +1,58 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.views; + +/** + * + * @author hyh + */ +public class CommandsWindow extends javax.swing.JDialog { + + /** + * Creates new form CommandsWindow + */ + public CommandsWindow(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + jTextArea1 = new javax.swing.JTextArea(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jTextArea1.setColumns(20); + jTextArea1.setRows(5); + jTextArea1.setText("--基本\n/register [密码] [确认密码]:注册 (Authme插件)\n/login [密码]:登录 (Authme插件)\n/sethome:设置你自己的家 (Esentials插件)\n/home:回到你自己的家 (Esentials插件)\n/money:查看你有的钱 (iConmey经济插件)\n/back:回到上一个位置 (Esentials插件)\n/tp [玩家名字]:传送到该玩家 需求OP\n/gamemode [玩家姓名] [游戏模式]:给某玩家更换游戏模式\n/ban [玩家名字]:封禁玩家\n/ban-ip [玩家名字]:封禁玩家IP\n/kick [玩家名字]:T出玩家\n/setspawn:设置出生点 (Esentials插件)\n/spawn:查看出生点 (Esentials插件)\n/whitelist add [玩家名字]:添加白名单\n/whitelist remove [玩家名字]:移除白名单\n/op [玩家名字]:给某人op\n/unban [玩家名字]:解除玩家ban (Essentials插件)\n/unbanip [玩家名字]:解除玩家ban-ip (Essentials插件)\n/pardon [玩家名字]:同unban (原版craftbukkit)\n/pardon-ip [玩家名字]:同unbanip (原版craftbukkit)\n/pay [玩家] [钱数] 把自己的游戏币转到其他玩家 (iConmey经济插件)\n/delwarp [地标] :删除传送标 (Essentials插件)\n/give [玩家名字] [物品ID] [数量]:给某人物品\n/petrelease 放生宠物 (MyPet插件)\n/reload 重启服务器\n\n--其他\n/help: 查看帮助命令列表.\n/helpop: 向在线OP发送求助信息.\n/heroicderp: 重新加载配置\n/home: 传送回家.\n/ignore: 忽略某玩家.\n/info: 方块信息工具\n/invsee: 查看某玩家背包.\n/item: 生成一个物品.\n/itemdb: 搜索物品.\n/jails: 显示所有监狱的列表.\n/jump: 传送到视野尽头.\n/jumpto: 跳转到一个地方\n/kick: 把某玩家以某理由从服务器踢出.\n/kickall: 把所有玩家踢出服务器,除了OP.\n/kill: 杀死某个玩家.\n/killall: 杀死这个世界的所有生物.\n/kit: 获得指定的工具包,或查看可用的工具包.\n/kittycannon: 向你的对手扔出一个爆炸的小猫.\n/lift: 检查电梯\n/lightning: 神的力量!让闪电劈到准星处或玩家头顶.\n/list: 查看所有在线的玩家.\n/listchunks: List chunks that your selection includes\n/listgroups: List the groups available.\n/lockette: Access to the Lockette plugin via commands.\n/login: Authenticate yourself as the owner of this player.\n/logout: Manually end your login session.\n/lrbuild: - Long-range buil\n/mail: 查看/清除/发送 邮件.\n/manclear: Clear world selection. Next commands will work on you\n/mandemote: Demote a player in the same heritage line to a lower\n/mangadd: Add group to the system.\n/mangaddi: Add a group to another group inheritance list.\n/mangaddp: Add permissions to a group.\n/mangaddv: Add, or replaces, a variable to a group (like prefix\n/mangcheckp: Check if group has a permissions, and where it come\n/mangcheckv: Verify a value of a variable of group, and where it\n/mangdel: Removes group from the system(all it's users become de\n/mangdeli: Remove a group from another group inheritance list.\n/mangdelp: Removes permissions from a group.\n/mangdelv: Remove a variable from a group.\n/manglistp: Lists all permissionss from a group.\n/manglistv: List variables a group has (like prefix or suffix).\n/manload: Reload current world and config.yml. Or load given wor\n/manpromote: Promote a player in the same heritage line to a hig\n/mansave: Save all permissionss on file.\n/manselect: Select a world to work with next commands.\n/mantogglesave: Toggle on/off the autosave.\n/mantogglevalidate: Toggle on/off the validating if player is on\n/manuadd: Move a player to desired group.(Adds to the file if no\n/manuaddp: Add permissions diretly to the player.\n/manuaddsub: Add a group to a player's subgroup list.\n/manuaddv: Add, or replaces, a variable to a user (like prefix o\n/manucheckp: Verify if user has a permissions, and where it come\n/manucheckv: Verify a value of a variable of user, and where it\n/manudel: Remove any user specific configuration. Make him defau\n/manudelp: Removes permissions diretly from the player.\n/manudelsub: Remove a group to a player's subgroup list.\n/manudelv: Remove a variable from a user.\n/manulistp: List all permissionss from a player.\n/manulistv: List variables a user has (like prefix or suffix).\n/manwhois: Tell the group that user belongs.\n/manworld: Prints the selected world name\n/mask: [mask] - Set the brush mask\n/mat: [pattern] - Set the brush material\n/me: 在接下来说的话中添加星号前缀.\n/mobbounty: Allows user to see MobBountyReloaded information.\n/mobbountycheck: Allows user to check the values for creatures.\n/mobbountydropscheck: Reloads the MobBountyReloadedDrops configs\n/mobbountydropsdrops: Allows the user to modify drop strings for\n/mobbountydropsload: Reloads the MobBountyReloadedDrops configs./mobbountydropssave: Reloads the MobBountyReloadedDrops configs./mobbountydropsworlddrops: Allows the user to modify drop string.\n/mobbountyenvmulti: Allows user to change an environment multipl\n/mobbountyexploitsload: Reloads the plugin's configs.\n/mobbountyexploitsmodify: Modifies the plugin's configs.\n/mobbountyexploitssave: Saves the plugin's configs.\n/mobbountygeneral: Allows user to change values of creatures.\n/mobbountygroupmulti: Allows user to change a group multiplier.\n/mobbountyload: Allows user to reload the MBR configs.\n/mobbountyreward: Allows user to change values of creatures.\n/mobbountysave: Allows user to reload the MBR configs.\n/mobbountytimemulti: Allows user to change a time multiplier.\n/mobbountyusermulti: Allows user to change a user multiplier.\n/mobbountyworldreward: Allows user to change values of creatures\n/mobhealth: Root command for all MobHealth Commands.\n/money: Distrobute, Check, Use Currency.\n/more: 让手中物品达到最大堆叠.\n/motd: 查看今日服务器消息.\n/msg: 发送一条密语给某玩家.\n/mute: 禁言或解禁 玩家.\n/mv: Generic Multiverse Command\n/mvc: Display World, Coordinates, Direction & Compression for a\n/mvclone: World clone command\n/mvco: Displays the player's coordinates.\n/mvconfirm: Confirms sensitive decisions like deleting a world.\n/mvcoord: Display World, Coordinates, Direction & Compression fo\n/mvcreate: World create command\n/mvdebug: Turns on debugging.\n/mvdelete: World delete command\n/mvenv: Tells the user all possible environment types.\n/mvgenerators: Displays all found world generators.\n/mvgens: Displays all found world generators.\n/mvh: Displays the Multiverse Help.\n/mvhelp: Displays the Multiverse Help.\n/mvi: Gets world info.\n/mvim: World import command\n/mvimport: World import command\n/mvinfo: Gets world info.\n/mvl: Print list of loaded Worlds\n/mvlist: Print list of loaded Worlds\n/mvload: Loads a world into Multiverse.\n/mvm: Modify the settings of an existing world\n/mvmadd: Modify the settings of an existing world\n/mvmclear: Modify the settings of an existing world\n/mvmodify: Modify the settings of an existing world\n/mvmremove: Modify the settings of an existing world\n/mvmset: Modify the settings of an existing world\n/mvpurge: Purge the targetted world of creatures.\n/mvr: Reload Configuration files.\n/mvregen: Regenerates a world Multiverse already knows about.\n/mvreload: Reload Configuration files.\n/mvremove: World remove command\n/mvs: Teleport to the spawn area\n/mvscript: Runs a script from the Multiverse scripts directory.\n/mvsearch: Displays the Multiverse Help.\n/mvset: Set the spawn area for a particular world\n/mvsetspawn: Set the spawn area for a particular world\n/mvsilent: Reduces startup messages\n/mvspawn: Teleport to the spawn area\n/mvss: Set the spawn area for a particular world\n/mvtp: Command to teleport between Worlds\n/mvunload: World unload command\n/mvv: Prints out version info.\n/mvversion: Prints out version info.\n/mvw: Display online users per world.\n/mvwho: Display online users per world.\n/mypet: Help for all MyPet commands.\n/near: 列出自己身边的玩家,或列出某玩家附近的其它玩家.\n/nick: 改变自己的昵称,或者别人的昵称<管理员>.\n/none: Unbind a bound tool from your current item\n/nuke: 发射核武器.\n/op: Gives the specified player operator status\n/packet: Add or remove a simple packet listener.\n/pardon-ip: Allows the specified IP address to use this server\n/pay: 从你的账户中转账付费给某玩家.\n/petadmin: Set the Exp or Name of a MyPet\n/petbeacon: Beacon!\n/petbehavior: Switch the behavior mode of your MyPet.\n/petcall: Call your MyPet.\n/petchooseskilltree: Chooses a skilltree.\n/petinfo: Shows HP and Exp of your MyPet\n/petinventory: Open the inventory of your MyPet.\n/petname: Set the name of your MyPet\n/petpickup: Toogles pickup of your MyPet.\n/petrelease: Release your MyPet.\n/petsendaway: Send your MyPet away.\n/petskill: Shows the skill-levels of a online MyPet\n/petskilltree: Shows a fully configured skilltree\n/petstop: your MyPet stop attacking.\n/ping: 啪啪啪啪啪啪啪啪啪!\n/pistonjump: To see the PistonJump help.\n/plugin: Load, unload or reload the specified plugins.\n/plugins: Gets a list of plugins running on the server\n/powertool: 给手中物品指定一个命令.\n/powertooltoggle: 开启或关闭当前所有的powertool.\n/protocol: Performs administrative tasks regarding ProtocolLib.\n/ptime: 专门调整某玩家客户端的时间. 添加 @ 前缀来修复.\n/pumpkins: [size] - Generate pumpkin patches\n/quit: Manually quit your session.\n/r: 快速回复别人发给你的信息(邮件/私信).\n/range: [pattern] - Set the brush range\n/rc: Chat in current residence channel.\n/realname: 查看某玩家的真名(nick之前的名字).\n/region: Region management commands\n/register: Register your player with the supplied password.\n/reload: Reloads the server configuration and plugins\n/remove: - Remove all entities of a type\n/repair: 修复<手中|所有>的物品.\n/repl: - Block replacer tool\n/res: Manage Residences\n/resadmin: Residence admin functions.\n/residence: Manage Residences\n/resload: Load the save file again after you have made modificat\n/resreload: Reload the entire residence plugin.\n/restore: [snapshot] - Restore the selection from a snapshot\n/resworld: Removes every residence in a world.\n/rules: 查看服务器规则.\n/save-all: Saves the server to disk\n/save-off: Disables server autosaving\n/save-on: Enables server autosaving\n/say: Broadcasts the given message as the console\n/sbackup: Run the map backup\n/seed: Shows the world seed\n/seen: 查看最后一位玩家登出的时间.\n/sell: 把手中的物品出售给系统.\n/serverstate: Show the server stats using a command\n/sethome: 把你的家设置在这个位置.\n/setjail: 在你所在位置设置一个监狱,名称叫 [监狱名称]\n/setspawn: Set the spawnpoint to your current position.\n/setwarp: 创建一个新的地标.\n/setworth: 设置某个物品的价值.\n/sg: Used to reload the plugin. Console use only.\n/shelfit: Lists ShelfIt's commands and uses.\n/showcasestandalone: Access to all ShowCaseStandalone related co\n/signedit: Allows you to edit a sign\n/size: [pattern] - Set the brush size\n/snapshot: Snapshot commands\n/socialspy: 切换你是否可以看到其他玩家的私聊和邮件.\n/spawn: Teleport to the spawnpoint.\n/spawner: 改变一个刷怪笼的类型.\n/spawnmob: 生成一个生物.\n/spawnpoint: Sets a player's spawn point\n/speed: 改变移动速度.\n/ss: Short-Command for serverstate\n/stop: Stops the server with optional reason\n/stopfire: [] - Disables all fire spread temporarily\n/sudo: 让某玩家强制执行一个命令.\n/suicide: 自杀.\n/superpickaxe: Select super pickaxe mode\n/tempadd: Creates a temporary permissions copy for that user.\n/tempban: 临时封禁一个玩家.\n/tempdel: Remove the temporary permissions copy for player.\n/tempdelall: Remove all overrides made by command /tempadd.\n/templist: List players in overload-permissionss mode made by /t\n/thru: Passthrough walls\n/thunder: 允许/禁止 自然雷击.\n/time: 显示/改变世界的时间,默认当前世界.\n/timeismoney: Give connection time and earned money\n/timeismoney:reload: Give connection time and earned money\n/timings: Records timings for all plugin events\n/togglechop: Toggle ChopTree\n/toggledownfall: Toggles rain on/off on a given world\n/toggleeditwand: Toggle functionality of the edit wand\n/togglejail: 监禁/解禁一个玩家,并传送他到监狱.\n/tool: Select a tool to bind\n/top: 传送到你所站坐标上的最高方块处.\n/tp: 强行传送到某玩家.\n/tpa: 发送一条传送请求,让你传送到对象玩家的地点.\n/tpaall: 发送一条传送请求,让所有玩家都传送到你这里.\n/tpaccept: 接受传送请求.\n/tpahere: 发送一条传送请求,让对象玩家传送到你所在的地点.\n/tpall: 强制把所有在线玩家传送到自己的位置.\n/tpdeny: 拒绝传送请求.\n/tphere: 强制把一个玩家传送到自己的位置.\n/tpo: 强行传送到某玩家,无视拒绝传送.\n/tpohere: 强制把一个玩家传送到自己的位置,无视拒绝传送.\n/tppos: 把自己传送到某个坐标.\n/tptoggle: 拒绝所有传送.\n/tree: [type] - Tree generator tool\n/unban: 解除封禁玩家.\n/unbanip: 解除封禁IP地址.\n/undisguise: Remove a disguise.\n/unlimited: 允许某玩家无限放置某方块.\n/unstuck: Escape from being stuck inside a block\n/up: - Go upwards some distance\n/vanish: 进入隐身模式,其他玩家将无法看到你.\n/vault-convert: Converts all data in economy1 and dumps it into\n/vault-info: Displays information about Vault\n/version: Gets the version of this server including any plugins\n/warp: 列出所有的地标,或传送到该地标.\n/we: WorldEdit commands\n/weather: 设置所在世界的天气.\n/whitelist: Prevents the specified player from using this server/whois: 在昵称后面显示真名,并列出玩家信息.\n/workbench: 随时随地开启一个工作台\n/world: 在各个世界间转换.\n/worldguard: WorldGuard commands\n/worth: 查看某物品的价值."); + jScrollPane1.setViewportView(jTextArea1); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextArea jTextArea1; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.form new file mode 100644 index 000000000..bdd51861b --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.form @@ -0,0 +1,147 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java new file mode 100644 index 000000000..c3b77138f --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java @@ -0,0 +1,234 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.views; + +import java.awt.Dimension; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import javax.swing.GroupLayout; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +/** + * + * @author hyh + */ +public class InputDialog extends javax.swing.JDialog { + + ArrayList textFields; + ArrayList panels; + public String[] result; + + /** + * Creates new form InputDialog + */ + public InputDialog(java.awt.Frame parent, boolean modal, String[] messages) { + super(parent, modal); + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + textFields = new ArrayList(); + panels = new ArrayList(); + jButton1 = new javax.swing.JButton(); + jButton1.setText("确认"); + jButton1.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + result = new String[textFields.size()]; + for(int i = 0; i < textFields.size(); i++) + result[i] = textFields.get(i).getText(); + InputDialog.this.dispose(); + } + }); + for(String s : messages) { + makeNewField(s); + } + makeLayout(); + Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation((scrSize.width - this.getWidth()) / 2, + (scrSize.height - this.getHeight()) / 2); + } + + void makeNewField(String message) { + JLabel label = new JLabel(); + label.setText(message); + JTextField textField = new JTextField(); + textField.setText(""); + JPanel panel = new JPanel(); + + javax.swing.GroupLayout jPanelLayout = new javax.swing.GroupLayout(panel); + panel.setLayout(jPanelLayout); + jPanelLayout.setHorizontalGroup( + jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelLayout.createSequentialGroup() + .addComponent(label) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(textField)) + .addContainerGap()) + ); + jPanelLayout.setVerticalGroup( + jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelLayout.createSequentialGroup() + .addContainerGap() + .addComponent(label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(textField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + textFields.add(textField); + panels.add(panel); + } + + void makeLayout() { + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + GroupLayout.ParallelGroup g = layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING); + for(JPanel p : panels) + g.addComponent(p, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE); + g.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jButton1)); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(g) + .addContainerGap()) + ); + GroupLayout.SequentialGroup g2 = layout.createSequentialGroup() + .addContainerGap(); + for(JPanel p : panels) + g2 = g2.addComponent(p, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED); + g2 = g2.addComponent(jButton1) + .addContainerGap(); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(g2) + ); + + pack(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jTextField1 = new javax.swing.JTextField(); + jPanel2 = new javax.swing.JPanel(); + jLabel2 = new javax.swing.JLabel(); + jTextField2 = new javax.swing.JTextField(); + jButton1 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jLabel1.setText("jLabel1"); + + jTextField1.setText("jTextField1"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel1) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jTextField1)) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jLabel2.setText("jLabel1"); + + jTextField2.setText("jTextField1"); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel2) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jButton1.setText("jButton1"); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jButton1))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 107, Short.MAX_VALUE) + .addComponent(jButton1) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JTextField jTextField1; + private javax.swing.JTextField jTextField2; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form new file mode 100644 index 000000000..6e0ccc789 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form @@ -0,0 +1,3484 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnManagePlugins"> + <Properties> + <Property name="text" type="java.lang.String" value="管理"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnManagePluginsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="btnAddPlugins"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/jackhuang/hellominecraftlauncher/VersionSettingsWindow.properties" key="增加" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnAddPluginsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="btnDeletePlugins"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/jackhuang/hellominecraftlauncher/VersionSettingsWindow.properties" key="删除" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDeletePluginsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="btnSavePlugins"> + <Properties> + <Property name="text" type="java.lang.String" value="保存"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnSavePluginsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel13"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="计划任务"> + <Property name="tabTitle" type="java.lang.String" value="计划任务"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jPanel14" max="32767" attributes="0"/> + <Component id="jScrollPane9" alignment="0" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <Component id="jScrollPane9" pref="356" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jPanel14" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel14"> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="cboTimerTask" alignment="0" min="-2" pref="95" max="-2" attributes="0"/> + <Component id="jLabel21" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel28" min="-2" max="-2" attributes="0"/> + <Component id="cboTimeType" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="32767" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="txtTimerTaskPeriod" alignment="1" min="-2" pref="96" max="-2" attributes="0"/> + <Component id="jLabel22" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <Component id="jLabel13" min="-2" max="-2" attributes="0"/> + <Component id="txtTimerTaskContent" alignment="0" min="-2" pref="197" max="-2" attributes="0"/> + </Group> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace min="-2" pref="73" max="-2" attributes="0"/> + <Component id="btnNewTask" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnDelSelectedSchedule" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel21" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel22" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel28" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="cboTimerTask" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="txtTimerTaskPeriod" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="cboTimeType" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jLabel13" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="txtTimerTaskContent" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="btnNewTask" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnDelSelectedSchedule" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel21"> + <Properties> + <Property name="text" type="java.lang.String" value="新建计划任务"/> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="cboTimerTask"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="5"> + <StringItem index="0" value="自动保存"/> + <StringItem index="1" value="自动重启"/> + <StringItem index="2" value="自动备份"/> + <StringItem index="3" value="自动广播"/> + <StringItem index="4" value="自动发送命令"/> + </StringArray> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtTimerTaskPeriod"> + </Component> + <Component class="javax.swing.JLabel" name="jLabel22"> + <Properties> + <Property name="text" type="java.lang.String" value="间隔时间(分钟)"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnNewTask"> + <Properties> + <Property name="text" type="java.lang.String" value="新建计划任务"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnNewTaskActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JLabel" name="jLabel13"> + <Properties> + <Property name="text" type="java.lang.String" value="内容"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtTimerTaskContent"> + </Component> + <Component class="javax.swing.JLabel" name="jLabel28"> + <Properties> + <Property name="text" type="java.lang.String" value="时间类型"/> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="cboTimeType"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="5"> + <StringItem index="0" value="每x分钟"/> + <StringItem index="1" value="整点过去x分钟"/> + <StringItem index="2" value="服务器启动"/> + <StringItem index="3" value="服务器关闭"/> + <StringItem index="4" value="服务器崩溃"/> + </StringArray> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnDelSelectedSchedule"> + <Properties> + <Property name="text" type="java.lang.String" value="删除选中"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDelSelectedScheduleActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JScrollPane" name="jScrollPane9"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstSchedules"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="4" rowCount="0"> + <Column editable="true" title="类型" type="java.lang.String"/> + <Column editable="false" title="时间类型" type="java.lang.String"/> + <Column editable="false" title="间隔时间(分钟)" type="java.lang.Double"/> + <Column editable="true" title="内容" type="java.lang.String"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel15"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="备份"> + <Property name="tabTitle" type="java.lang.String" value="备份"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Component id="jPanel16" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane11" pref="391" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jPanel16" max="32767" attributes="0"/> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane11" pref="0" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel16"> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jPanel17" alignment="0" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jButton1" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="btnDeleteBackup" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="btnRestoreBackup" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Component id="jPanel17" min="-2" max="-2" attributes="0"/> + <EmptySpace pref="272" max="32767" attributes="0"/> + <Component id="btnRestoreBackup" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnDeleteBackup" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton1" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel17"> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Component id="jLabel23" min="-2" max="-2" attributes="0"/> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + </Group> + <Component id="cboBackupTypes" max="32767" attributes="0"/> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + <Component id="btnBackup" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jLabel23" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="cboBackupTypes" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + <Component id="btnBackup" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel23"> + <Properties> + <Property name="text" type="java.lang.String" value="新建备份"/> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="cboBackupTypes"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="2"> + <StringItem index="0" value="地图备份"/> + <StringItem index="1" value="插件备份"/> + </StringArray> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnBackup"> + <Properties> + <Property name="text" type="java.lang.String" value="备份"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnBackupActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="jButton1"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新备份列表"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="btnDeleteBackup"> + <Properties> + <Property name="text" type="java.lang.String" value="删除选中备份"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDeleteBackupActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="btnRestoreBackup"> + <Properties> + <Property name="text" type="java.lang.String" value="恢复选中备份"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRestoreBackupActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JScrollPane" name="jScrollPane11"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstBackups"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="3" rowCount="0"> + <Column editable="true" title="类型" type="java.lang.String"/> + <Column editable="true" title="时间" type="java.lang.String"/> + <Column editable="true" title="名称" type="java.lang.String"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel18"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="地图管理"> + <Property name="tabTitle" type="java.lang.String" value="地图管理"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane10" alignment="0" pref="521" max="32767" attributes="0"/> + <Group type="102" alignment="0" attributes="0"> + <Component id="btnRefreshWorlds" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + <Component id="btnSaveWorld" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane10" pref="431" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="btnRefreshWorlds" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnSaveWorld" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane10"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstWorlds"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="3" rowCount="0"> + <Column editable="true" title="地图名" type="java.lang.String"/> + <Column editable="true" title="路径" type="java.lang.String"/> + <Column editable="true" title="是否允许备份" type="java.lang.Boolean"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnRefreshWorlds"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshWorldsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="btnSaveWorld"> + <Properties> + <Property name="text" type="java.lang.String" value="保存修改"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnSaveWorldActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel19"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="下载中心"> + <Property name="tabTitle" type="java.lang.String" value="下载中心"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jTabbedPane5" alignment="1" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jTabbedPane5" alignment="0" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JTabbedPane" name="jTabbedPane5"> + <AccessibilityProperties> + <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="CraftBukkit"/> + </AccessibilityProperties> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel20"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="CraftBukkit"> + <Property name="tabTitle" type="java.lang.String" value="CraftBukkit"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Component id="jLabel39" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="cboBukkitType" pref="442" max="32767" attributes="0"/> + </Group> + <Group type="102" attributes="0"> + <Component id="jScrollPane18" pref="450" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="btnDownloadCraftbukkit" alignment="1" min="-2" max="-2" attributes="0"/> + <Component id="lstRefreshCraftbukkit" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel39" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="cboBukkitType" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Component id="btnDownloadCraftbukkit" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lstRefreshCraftbukkit" min="-2" max="-2" attributes="0"/> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + </Group> + <Component id="jScrollPane18" pref="402" max="32767" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane18"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstCraftbukkit"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="2" rowCount="0"> + <Column editable="true" title="编译号" type="java.lang.String"/> + <Column editable="true" title="版本" type="java.lang.String"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor"> + <JTableSelectionModel selectionMode="0"/> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnDownloadCraftbukkit"> + <Properties> + <Property name="text" type="java.lang.String" value="下载"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDownloadCraftbukkitActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="lstRefreshCraftbukkit"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新"/> + <Property name="toolTipText" type="java.lang.String" value=""/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lstRefreshCraftbukkitActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JComboBox" name="cboBukkitType"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="3"> + <StringItem index="0" value="稳定版"/> + <StringItem index="1" value="测试版"/> + <StringItem index="2" value="最新开发版"/> + </StringArray> + </Property> + </Properties> + <Events> + <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="cboBukkitTypeItemStateChanged"/> + </Events> + </Component> + <Component class="javax.swing.JLabel" name="jLabel39"> + <Properties> + <Property name="text" type="java.lang.String" value="Bukkit类型"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel30"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Cauldron"> + <Property name="tabTitle" type="java.lang.String" value="Cauldron"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Component id="jScrollPane19" pref="450" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lstRefreshMCPC" min="-2" max="-2" attributes="0"/> + <Component id="btnInstallMCPC" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + <Component id="btnDownloadMCPC" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel38" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="cboCauldronMinecraft" max="32767" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel38" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="cboCauldronMinecraft" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane19" pref="402" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="lstRefreshMCPC" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnDownloadMCPC" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnInstallMCPC" min="-2" max="-2" attributes="0"/> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane19"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstMCPC"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="3" rowCount="0"> + <Column editable="false" title="MC版本" type="java.lang.String"/> + <Column editable="false" title="Cauldron版本" type="java.lang.String"/> + <Column editable="false" title="释放时间" type="java.lang.String"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor"> + <JTableSelectionModel selectionMode="0"/> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnDownloadMCPC"> + <Properties> + <Property name="label" type="java.lang.String" value="下载"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDownloadMCPCActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="lstRefreshMCPC"> + <Properties> + <Property name="toolTipText" type="java.lang.String" value=""/> + <Property name="label" type="java.lang.String" value="刷新"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lstRefreshMCPCActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JLabel" name="jLabel38"> + <Properties> + <Property name="text" type="java.lang.String" value="Minecraft版本"/> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="cboCauldronMinecraft"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="0"/> + </Property> + </Properties> + <Events> + <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="cboCauldronMinecraftItemStateChanged"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnInstallMCPC"> + <Properties> + <Property name="text" type="java.lang.String" value="重试"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnInstallMCPCActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel21"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="官方服务器"> + <Property name="tabTitle" type="java.lang.String" value="官方服务器"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane12" pref="450" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="btnRefreshDownloads" max="32767" attributes="0"/> + <Component id="btnMinecraftServerDownload" max="32767" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane12" pref="435" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="btnRefreshDownloads" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnMinecraftServerDownload" min="-2" max="-2" attributes="0"/> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnRefreshDownloads"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/jackhuang/hellominecraftlauncher/I18N.properties" key="刷新" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshDownloadsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane12"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstDownloads"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="4" rowCount="0"> + <Column editable="false" title="版本" type="java.lang.String"/> + <Column editable="false" title="发布时间" type="java.lang.String"/> + <Column editable="false" title="释放时间" type="java.lang.String"/> + <Column editable="false" title="类型" type="java.lang.String"/> + </Table> + </Property> + <Property name="toolTipText" type="java.lang.String" value=""/> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnMinecraftServerDownload"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/jackhuang/hellominecraftlauncher/I18N.properties" key="下载" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMinecraftServerDownloadActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel23"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="服务器插件"> + <Property name="tabTitle" type="java.lang.String" value="服务器插件"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane15" alignment="0" pref="516" max="32767" attributes="0"/> + <Group type="102" alignment="1" attributes="0"> + <Component id="btnShowPluginInfo" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton11" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + <Component id="jLabel24" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="cboCategory" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="cboCategory" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel24" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnShowPluginInfo" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jButton11" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane15" pref="401" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane15"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstBukkitPlugins"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="4" rowCount="0"> + <Column editable="false" title="名字" type="java.lang.String"/> + <Column editable="false" title="描述" type="java.lang.String"/> + <Column editable="false" title="版本" type="java.lang.String"/> + <Column editable="false" title="Bukkit版本" type="java.lang.String"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JComboBox" name="cboCategory"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="0"/> + </Property> + </Properties> + <Events> + <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="cboCategoryItemStateChanged"/> + </Events> + </Component> + <Component class="javax.swing.JLabel" name="jLabel24"> + <Properties> + <Property name="text" type="java.lang.String" value="分类"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnShowPluginInfo"> + <Properties> + <Property name="text" type="java.lang.String" value="选中插件信息"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnShowPluginInfoActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton11"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton11ActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel22"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="信息记录"> + <Property name="tabTitle" type="java.lang.String" value="信息记录"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Group type="102" attributes="0"> + <Component id="btnRefreshInfos" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + <Component id="btnShowInfo" min="-2" max="-2" attributes="0"/> + </Group> + <Component id="jScrollPane13" min="-2" pref="141" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane14" pref="374" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane14" pref="465" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="jScrollPane13" pref="0" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="btnRefreshInfos" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnShowInfo" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane13"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstInfos"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="2" rowCount="0"> + <Column editable="false" title="名字" type="java.lang.String"/> + <Column editable="false" title="时间" type="java.lang.String"/> + </Table> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnRefreshInfos"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshInfosActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane14"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTextArea" name="txtInfo"> + <Properties> + <Property name="editable" type="boolean" value="false"/> + <Property name="columns" type="int" value="20"/> + <Property name="rows" type="int" value="5"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnShowInfo"> + <Properties> + <Property name="text" type="java.lang.String" value="显示"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnShowInfoActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel26"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="崩溃记录"> + <Property name="tabTitle" type="java.lang.String" value="崩溃记录"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Group type="102" attributes="0"> + <Component id="btnRefreshReports" min="-2" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="27" max="-2" attributes="0"/> + <Component id="btnShowReport" min="-2" max="-2" attributes="0"/> + </Group> + <Component id="jScrollPane8" pref="0" max="32767" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane17" pref="368" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane17" pref="465" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="jScrollPane8" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="btnRefreshReports" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnShowReport" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnRefreshReports"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshReportsActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane17"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTextArea" name="txtCrashReport"> + <Properties> + <Property name="editable" type="boolean" value="false"/> + <Property name="columns" type="int" value="20"/> + <Property name="rows" type="int" value="5"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnShowReport"> + <Properties> + <Property name="text" type="java.lang.String" value="显示"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnShowReportActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane8"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JList" name="lstReports"> + <Properties> + <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor"> + <StringArray count="0"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel27"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="在线玩家"> + <Property name="tabTitle" type="java.lang.String" value="在线玩家"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane16" pref="521" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="lblPlayers" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + <Component id="btnRefreshPlayers" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel27" min="-2" max="-2" attributes="0"/> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="lblPlayers" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnRefreshPlayers" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane16" pref="407" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jLabel27" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="lblPlayers"> + <Properties> + <Property name="text" type="java.lang.String" value="在线人数"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnRefreshPlayers"> + <Properties> + <Property name="text" type="java.lang.String" value="刷新在线人数"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshPlayersActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane16"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JList" name="lstPlayers"> + <Properties> + <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor"> + <StringArray count="0"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JLabel" name="jLabel27"> + <Properties> + <Property name="text" type="java.lang.String" value="此列表每一分钟刷新一次"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel28"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="应用中心"> + <Property name="tabTitle" type="java.lang.String" value="应用中心"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jButton2" alignment="0" min="-2" max="-2" attributes="0"/> + <Group type="102" alignment="0" attributes="0"> + <Component id="jButton4" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton5" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton6" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton7" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jButton8" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton9" min="-2" max="-2" attributes="0"/> + </Group> + <Component id="jButton10" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace pref="100" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton2" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton10" min="-2" max="-2" attributes="0"/> + <EmptySpace pref="341" max="32767" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jButton8" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jButton9" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jButton4" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jButton5" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jButton6" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jButton7" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="jButton2"> + <Properties> + <Property name="text" type="java.lang.String" value="花生壳6.5工程版(无需公网IP,无需路由端口映射)"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton4"> + <Properties> + <Property name="text" type="java.lang.String" value="mcbbs"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton4ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton5"> + <Properties> + <Property name="text" type="java.lang.String" value="minecraft贴吧"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton5ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton6"> + <Properties> + <Property name="text" type="java.lang.String" value="mcbbs发布帖"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton6ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton7"> + <Properties> + <Property name="text" type="java.lang.String" value="minecraft官网"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton7ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton8"> + <Properties> + <Property name="text" type="java.lang.String" value="craftbukkit官网"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton8ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton9"> + <Properties> + <Property name="text" type="java.lang.String" value="MCPC+下载"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton9ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + <Component class="javax.swing.JButton" name="jButton10"> + <Properties> + <Property name="text" type="java.lang.String" value="指令大全"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton10ActionPerformed"/> + </Events> + <AuxValues> + <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ConstomButton()"/> + </AuxValues> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java new file mode 100644 index 000000000..44ad12c90 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java @@ -0,0 +1,4498 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.views; + +import java.awt.Dimension; +import java.awt.Image; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.KeyEvent; +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; +import java.util.Vector; +import javax.swing.DefaultListModel; +import javax.swing.ImageIcon; +import javax.swing.JFileChooser; +import javax.swing.JLabel; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.table.DefaultTableModel; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.utils.functions.DoneListener0; +import org.jackhuang.hellominecraft.DoneListener1; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.tasks.Task; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.jackhuang.hellominecraft.tasks.download.HTTPGetTask; +import org.jackhuang.hellominecraft.utils.FileUtils; +import org.jackhuang.hellominecraft.svrmgr.utils.IMonitorService; +import org.jackhuang.hellominecraft.utils.IOUtils; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.svrmgr.utils.ModType; +import org.jackhuang.hellominecraft.svrmgr.utils.MonitorInfoBean; +import org.jackhuang.hellominecraft.svrmgr.utils.MonitorServiceImpl; +import org.jackhuang.hellominecraft.utils.Pair; +import org.jackhuang.hellominecraft.version.MinecraftRemoteVersions; +import org.jackhuang.hellominecraft.svrmgr.Main; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.BukkitPlugin; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.Category; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginInfo; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginInformation; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginManager; +import org.jackhuang.hellominecraft.svrmgr.installer.bukkit.BukkitFormatThread; +import org.jackhuang.hellominecraft.svrmgr.installer.bukkit.BukkitVersion; +import org.jackhuang.hellominecraft.svrmgr.installer.cauldron.ForgeFormatThread; +import org.jackhuang.hellominecraft.svrmgr.installer.cauldron.ForgeInstaller; +import org.jackhuang.hellominecraft.svrmgr.installer.cauldron.ForgeVersion; +import org.jackhuang.hellominecraft.svrmgr.server.ScheduleTranslator; +import org.jackhuang.hellominecraft.svrmgr.server.Server; +import org.jackhuang.hellominecraft.svrmgr.server.ServerChecker; +import org.jackhuang.hellominecraft.svrmgr.server.backups.BackupManager; +import org.jackhuang.hellominecraft.svrmgr.settings.BannedPlayers; +import org.jackhuang.hellominecraft.svrmgr.settings.Op; +import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; +import org.jackhuang.hellominecraft.svrmgr.settings.ServerProperties; +import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; +import org.jackhuang.hellominecraft.svrmgr.settings.WhiteList; +import org.jackhuang.hellominecraft.svrmgr.threads.MonitorThread; +import org.jackhuang.hellominecraft.svrmgr.utils.FolderOpener; +import org.jackhuang.hellominecraft.svrmgr.utils.IPGet; +import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; +import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.version.MinecraftRemoteVersion; +import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; + +/** + * + * @author hyh + */ +public final class MainWindow extends javax.swing.JFrame + implements MonitorThread.MonitorThreadListener, DoneListener1<Integer> { + + ImageIcon background = new ImageIcon(getClass().getResource("/background.jpg")); + JLabel backgroundLabel; + + ImageIcon getResizedImage() { + Image image = background.getImage(); + image = image.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_FAST); + background.setImage(image); + return new ImageIcon(image); + } + + void resizeBackgroundLabel() { + backgroundLabel.setIcon(getResizedImage()); + backgroundLabel.setBounds(0, 0, this.getWidth(), this.getHeight()); + } + + ArrayList<String> commandSet; + int commandIndex; + JPopupMenu ppmBasically; + Timer getPlayerNumberTimer; + Timer tmrSystem; + + private boolean outOfCommandSet() { + return outOfCommandSet(commandIndex); + } + + private boolean outOfCommandSet(int commandIndex) { + return (commandIndex < 0 || commandIndex >= commandSet.size()); + } + + /** + * Creates new form MainWindow + */ + public MainWindow() { + initComponents(); + + Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation((scrSize.width - this.getWidth()) / 2, + (scrSize.height - this.getHeight()) / 2); + + this.setIconImage(new ImageIcon(getClass().getResource("/icon.png")).getImage()); + + if (!Utilities.isEmpty(SettingsManager.settings.bgPath)) { + txtBackgroundPath.setText(SettingsManager.settings.bgPath); + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(SettingsManager.settings.bgPath)); + } + backgroundLabel = new JLabel(getResizedImage()); + backgroundLabel.setBounds(0, 0, this.getWidth(), this.getHeight()); + this.getContentPane().add(backgroundLabel, -1); + + addComponentListener(new ComponentAdapter() { + @Override + public void componentResized(ComponentEvent e) { + resizeBackgroundLabel(); + } + }); + + setTitle(Main.makeTitle()); + String mainjar = SettingsManager.settings.mainjar; + if (!Utilities.isEmpty(mainjar)) { + ServerProperties.init(new File(mainjar).getParent()); + } + txtMainJar.setText(mainjar); + commandSet = new ArrayList<String>(); + btnStop.setEnabled(false); + btnShutdown.setEnabled(false); + btnCommand.setEnabled(false); + loadFromSettings(); + loadFromServerProperties(); + loadFromOPs(); + loadFromWhiteList(); + loadFromBannedPlayers(); + loadLocalMods(); + loadLocalCoreMods(); + loadLocalPlugins(); + loadWorlds(); + loadBackups(); + loadSchedules(); + refreshInfos(); + refreshReports(); + getIP(); + //lblMinecraftVersion.setText("服务端版本:" + MCUtils.minecraftVersion(new File(SettingsManager.settings.mainjar)).version); + + tmrSystem = new Timer(); + pgsCPURatio.setMinimum(0); + pgsCPURatio.setMaximum(100); + pgsMemoryRatio.setMinimum(0); + pgsMemoryRatio.setMaximum(100); + tmrSystem.schedule(new TimerTask() { + + @Override + public void run() { + try { + IMonitorService service = new MonitorServiceImpl(); + MonitorInfoBean monitorInfo = service.getMonitorInfoBean(); + pgsCPURatio.setValue((int) Math.round(monitorInfo.getCpuRatio())); + lblTotalMemory.setText(monitorInfo.getTotalMemory() / 1024 + ""); + lblMaxMemory.setText(monitorInfo.getMaxMemory() / 1024 + ""); + lblOSName.setText(monitorInfo.getOsName()); + lblTotalMemorySize.setText(monitorInfo.getTotalMemorySize() / 1024 + "MB"); + lblFreeMemory.setText(monitorInfo.getFreeMemory() / 1024 + "MB"); + lblUsedMemory.setText(monitorInfo.getUsedMemory() / 1024 + "MB"); + lblTotalThread.setText(monitorInfo.getTotalThread() / 1024 + "MB"); + pgsMemoryRatio.setValue((int) (monitorInfo.getUsedMemory() * 100 / monitorInfo.getTotalMemorySize())); + } catch (Exception e) { + HMCLog.warn("Failed to get system information.", e); + } + } + + }, 0, 2000); + + //<editor-fold defaultstate="collapsed" desc="基本信息菜单"> + JMenuItem itm; + ppmBasically = new JPopupMenu(); + itm = new JMenuItem("重置插件"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("reload"); + } + }); + ppmBasically = new JPopupMenu(); + itm = new JMenuItem("午夜"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("time set 18000"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("凌晨"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("time set 0"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("广播"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("广播讯息"); + Server.getInstance().sendCommand("say " + s); + } + }); + itm = new JMenuItem("红字广播"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("广播讯息"); + Server.getInstance().sendCommand("me " + s); + } + }); + itm = new JMenuItem("私聊"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + InputDialog id = new InputDialog(MainWindow.this, true, new String[]{"玩家", "讯息"}); + id.setVisible(true); + Server.getInstance().sendCommand("tell " + id.result[0] + " " + id.result[1]); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("给予OP"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("新OP的游戏名"); + Server.getInstance().sendCommand("op " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("卸除OP"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要卸除OP的游戏名"); + Server.getInstance().sendCommand("deop " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("给予玩家白名单"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要添入白名单的游戏名"); + Server.getInstance().sendCommand("whitelist add " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("解除玩家白名单"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要解除白名单的游戏名"); + Server.getInstance().sendCommand("whitelist remove " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("启用白名单"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("whitelist on"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("禁用白名单"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("whitelist off"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("列出白名单"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("whitelist list"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("封禁玩家"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要封禁玩家的游戏名"); + Server.getInstance().sendCommand("ban " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("封禁玩家IP"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要封禁玩家IP的游戏名"); + Server.getInstance().sendCommand("ban-ip " + s); + } + }); + itm = new JMenuItem("解封玩家"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要解封玩家的游戏名"); + Server.getInstance().sendCommand("pardon " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("解封玩家IP"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要解封玩家IP的游戏名"); + Server.getInstance().sendCommand("pardon-ip " + s); + } + }); + itm = new JMenuItem("封禁玩家"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要封禁玩家的游戏名"); + Server.getInstance().sendCommand("ban " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("封禁玩家IP"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要封禁玩家IP的游戏名"); + Server.getInstance().sendCommand("ban-ip " + s); + } + }); + itm = new JMenuItem("封禁玩家列表"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("banlist"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("修改时间"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要调整的时间值"); + Server.getInstance().sendCommand("time set " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("往后调整时间"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要往后调整的时间值"); + Server.getInstance().sendCommand("time add " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("调整天气"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]"); + Server.getInstance().sendCommand("weather " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("调整一定时间的天气"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + InputDialog id = new InputDialog(MainWindow.this, true, new String[]{ + "要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]", + "时间" + }); + id.setVisible(true); + if (id.result != null) { + String s = JOptionPane.showInputDialog(""); + Server.getInstance().sendCommand("weather " + id.result[0] + " " + id.result[1]); + } + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("清除背包"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要被清除背包的玩家"); + Server.getInstance().sendCommand("clear " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("踢出玩家"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("要被踢出的玩家"); + Server.getInstance().sendCommand("kick " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("在线玩家"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("list"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("插件列表"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("plugins"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("给予玩家物品"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + InputDialog id = new InputDialog(MainWindow.this, true, new String[]{"玩家", "物品ID", "数量"}); + id.setVisible(true); + if (id.result != null) { + Server.getInstance().sendCommand("give " + id.result[0] + " " + id.result[1] + " " + id.result[2]); + } + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("保存所有"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("save-all"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("开启bukkit自动保存"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("save-on"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("取消bukkit自动保存"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("save-off"); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("难度"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("难度"); + Server.getInstance().sendCommand("difficulty " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("默认游戏模式"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String s = JOptionPane.showInputDialog("默认游戏模式"); + Server.getInstance().sendCommand("defaultgamemode " + s); + } + }); + ppmBasically.add(itm); + itm = new JMenuItem("地图种子"); + itm.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand("seed"); + } + }); + ppmBasically.add(itm); + //</editor-fold> + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jTabbedPane1 = new javax.swing.JTabbedPane(); + jPanel1 = new javax.swing.JPanel(); + btnLaunch = new ConstomButton(); + jScrollPane4 = new javax.swing.JScrollPane(); + txtMain = new javax.swing.JTextArea(); + jLabel17 = new javax.swing.JLabel(); + txtMainJar = new javax.swing.JTextField(); + btnSetJar = new ConstomButton(); + txtCommand = new javax.swing.JTextField(); + btnSendCommand = new ConstomButton(); + jLabel1 = new javax.swing.JLabel(); + btnSave = new ConstomButton(); + jButton3 = new ConstomButton(); + btnRestart = new ConstomButton(); + btnShutdown = new ConstomButton(); + btnAutoSearch = new ConstomButton(); + lblIPAddress = new javax.swing.JLabel(); + btnStop = new ConstomButton(); + btnCommand = new ConstomButton(); + jPanel29 = new javax.swing.JPanel(); + jLabel29 = new javax.swing.JLabel(); + jLabel30 = new javax.swing.JLabel(); + jLabel32 = new javax.swing.JLabel(); + jLabel33 = new javax.swing.JLabel(); + jLabel34 = new javax.swing.JLabel(); + jLabel35 = new javax.swing.JLabel(); + jLabel36 = new javax.swing.JLabel(); + jLabel37 = new javax.swing.JLabel(); + pgsCPURatio = new javax.swing.JProgressBar(); + lblTotalMemory = new javax.swing.JLabel(); + lblMaxMemory = new javax.swing.JLabel(); + lblOSName = new javax.swing.JLabel(); + lblTotalMemorySize = new javax.swing.JLabel(); + lblFreeMemory = new javax.swing.JLabel(); + lblUsedMemory = new javax.swing.JLabel(); + lblTotalThread = new javax.swing.JLabel(); + pgsMemoryRatio = new javax.swing.JProgressBar(); + jLabel31 = new javax.swing.JLabel(); + jPanel2 = new javax.swing.JPanel(); + jTabbedPane2 = new javax.swing.JTabbedPane(); + jPanel24 = new javax.swing.JPanel(); + jTabbedPane6 = new javax.swing.JTabbedPane(); + jPanel3 = new javax.swing.JPanel(); + jLabel5 = new javax.swing.JLabel(); + txtServerPort = new javax.swing.JSpinner(); + jLabel6 = new javax.swing.JLabel(); + txtMaxPlayer = new javax.swing.JSpinner(); + txtViewDistance = new javax.swing.JSpinner(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + txtWorldName = new javax.swing.JTextField(); + jLabel9 = new javax.swing.JLabel(); + cboWorldType = new javax.swing.JComboBox(); + jLabel10 = new javax.swing.JLabel(); + txtServerMOTD = new javax.swing.JTextField(); + jLabel11 = new javax.swing.JLabel(); + cboDifficulty = new javax.swing.JComboBox(); + jLabel12 = new javax.swing.JLabel(); + cboGameMode = new javax.swing.JComboBox(); + chkEnalbleAnimals = new javax.swing.JCheckBox(); + chkEnableMonsters = new javax.swing.JCheckBox(); + chkEnableNPCs = new javax.swing.JCheckBox(); + chkAllowFlight = new javax.swing.JCheckBox(); + chkPVP = new javax.swing.JCheckBox(); + chkAllowNether = new javax.swing.JCheckBox(); + chkWhiteList = new javax.swing.JCheckBox(); + txtServerName = new javax.swing.JTextField(); + jLabel15 = new javax.swing.JLabel(); + jLabel16 = new javax.swing.JLabel(); + txtMaxBuildHeight = new javax.swing.JSpinner(); + jLabel18 = new javax.swing.JLabel(); + txtServerGeneratorSettings = new javax.swing.JTextField(); + txtWorldSeed = new javax.swing.JTextField(); + jLabel19 = new javax.swing.JLabel(); + chkGenerateStructures = new javax.swing.JCheckBox(); + chkOnlineMode = new javax.swing.JCheckBox(); + jPanel25 = new javax.swing.JPanel(); + jLabel14 = new javax.swing.JLabel(); + jLabel25 = new javax.swing.JLabel(); + txtJavaDir = new javax.swing.JTextField(); + txtJavaArgs = new javax.swing.JTextField(); + jLabel26 = new javax.swing.JLabel(); + txtMaxMemory = new javax.swing.JTextField(); + jPanel12 = new javax.swing.JPanel(); + jLabel20 = new javax.swing.JLabel(); + txtBackgroundPath = new javax.swing.JTextField(); + btnSetBackgroundPath = new ConstomButton(); + jPanel4 = new javax.swing.JPanel(); + jTabbedPane3 = new javax.swing.JTabbedPane(); + jPanel5 = new javax.swing.JPanel(); + jScrollPane1 = new javax.swing.JScrollPane(); + lstOP = new javax.swing.JList(); + btnAddOP = new ConstomButton(); + jLabel2 = new javax.swing.JLabel(); + txtOPName = new javax.swing.JTextField(); + btnDeleteOP = new ConstomButton(); + jLabel40 = new javax.swing.JLabel(); + jPanel6 = new javax.swing.JPanel(); + btnDeleteWhite = new ConstomButton(); + jScrollPane3 = new javax.swing.JScrollPane(); + lstWhiteList = new javax.swing.JList(); + jLabel4 = new javax.swing.JLabel(); + txtWhiteName = new javax.swing.JTextField(); + btnAddWhite = new ConstomButton(); + jLabel41 = new javax.swing.JLabel(); + jPanel7 = new javax.swing.JPanel(); + btnUnban = new ConstomButton(); + jScrollPane2 = new javax.swing.JScrollPane(); + lstBanned = new javax.swing.JList(); + jLabel3 = new javax.swing.JLabel(); + txtBanName = new javax.swing.JTextField(); + btnAddBan = new ConstomButton(); + jLabel42 = new javax.swing.JLabel(); + jPanel8 = new javax.swing.JPanel(); + jTabbedPane4 = new javax.swing.JTabbedPane(); + jPanel9 = new javax.swing.JPanel(); + jScrollPane5 = new javax.swing.JScrollPane(); + lstExternalMods = new javax.swing.JTable(); + btnManageExtMods = new ConstomButton(); + btnAddExternelMod = new ConstomButton(); + btnDeleteExternelMod = new ConstomButton(); + btnSaveExtMod = new ConstomButton(); + jPanel10 = new javax.swing.JPanel(); + jScrollPane6 = new javax.swing.JScrollPane(); + lstCoreMods = new javax.swing.JTable(); + btnManageCoreMods = new ConstomButton(); + btnAddExternelCoreMod = new ConstomButton(); + btnDeleteExternelCoreMod = new ConstomButton(); + btnSaveCoreMod = new ConstomButton(); + jPanel11 = new javax.swing.JPanel(); + jScrollPane7 = new javax.swing.JScrollPane(); + lstPlugins = new javax.swing.JTable(); + btnManagePlugins = new ConstomButton(); + btnAddPlugins = new ConstomButton(); + btnDeletePlugins = new ConstomButton(); + btnSavePlugins = new ConstomButton(); + jPanel13 = new javax.swing.JPanel(); + jPanel14 = new javax.swing.JPanel(); + jLabel21 = new javax.swing.JLabel(); + cboTimerTask = new javax.swing.JComboBox(); + txtTimerTaskPeriod = new javax.swing.JTextField(); + jLabel22 = new javax.swing.JLabel(); + btnNewTask = new ConstomButton(); + jLabel13 = new javax.swing.JLabel(); + txtTimerTaskContent = new javax.swing.JTextField(); + jLabel28 = new javax.swing.JLabel(); + cboTimeType = new javax.swing.JComboBox(); + btnDelSelectedSchedule = new ConstomButton(); + jScrollPane9 = new javax.swing.JScrollPane(); + lstSchedules = new javax.swing.JTable(); + jPanel15 = new javax.swing.JPanel(); + jPanel16 = new javax.swing.JPanel(); + jPanel17 = new javax.swing.JPanel(); + jLabel23 = new javax.swing.JLabel(); + cboBackupTypes = new javax.swing.JComboBox(); + btnBackup = new ConstomButton(); + jButton1 = new ConstomButton(); + btnDeleteBackup = new ConstomButton(); + btnRestoreBackup = new ConstomButton(); + jScrollPane11 = new javax.swing.JScrollPane(); + lstBackups = new javax.swing.JTable(); + jPanel18 = new javax.swing.JPanel(); + jScrollPane10 = new javax.swing.JScrollPane(); + lstWorlds = new javax.swing.JTable(); + btnRefreshWorlds = new ConstomButton(); + btnSaveWorld = new ConstomButton(); + jPanel19 = new javax.swing.JPanel(); + jTabbedPane5 = new javax.swing.JTabbedPane(); + jPanel20 = new javax.swing.JPanel(); + jScrollPane18 = new javax.swing.JScrollPane(); + lstCraftbukkit = new javax.swing.JTable(); + btnDownloadCraftbukkit = new ConstomButton(); + lstRefreshCraftbukkit = new ConstomButton(); + cboBukkitType = new javax.swing.JComboBox(); + jLabel39 = new javax.swing.JLabel(); + jPanel30 = new javax.swing.JPanel(); + jScrollPane19 = new javax.swing.JScrollPane(); + lstMCPC = new javax.swing.JTable(); + btnDownloadMCPC = new ConstomButton(); + lstRefreshMCPC = new ConstomButton(); + jLabel38 = new javax.swing.JLabel(); + cboCauldronMinecraft = new javax.swing.JComboBox(); + btnInstallMCPC = new ConstomButton(); + jPanel21 = new javax.swing.JPanel(); + btnRefreshDownloads = new ConstomButton(); + jScrollPane12 = new javax.swing.JScrollPane(); + lstDownloads = new javax.swing.JTable(); + btnMinecraftServerDownload = new ConstomButton(); + jPanel23 = new javax.swing.JPanel(); + jScrollPane15 = new javax.swing.JScrollPane(); + lstBukkitPlugins = new javax.swing.JTable(); + cboCategory = new javax.swing.JComboBox(); + jLabel24 = new javax.swing.JLabel(); + btnShowPluginInfo = new ConstomButton(); + jButton11 = new javax.swing.JButton(); + jPanel22 = new javax.swing.JPanel(); + jScrollPane13 = new javax.swing.JScrollPane(); + lstInfos = new javax.swing.JTable(); + btnRefreshInfos = new ConstomButton(); + jScrollPane14 = new javax.swing.JScrollPane(); + txtInfo = new javax.swing.JTextArea(); + btnShowInfo = new ConstomButton(); + jPanel26 = new javax.swing.JPanel(); + btnRefreshReports = new ConstomButton(); + jScrollPane17 = new javax.swing.JScrollPane(); + txtCrashReport = new javax.swing.JTextArea(); + btnShowReport = new ConstomButton(); + jScrollPane8 = new javax.swing.JScrollPane(); + lstReports = new javax.swing.JList(); + jPanel27 = new javax.swing.JPanel(); + lblPlayers = new javax.swing.JLabel(); + btnRefreshPlayers = new ConstomButton(); + jScrollPane16 = new javax.swing.JScrollPane(); + lstPlayers = new javax.swing.JList(); + jLabel27 = new javax.swing.JLabel(); + jPanel28 = new javax.swing.JPanel(); + jButton2 = new ConstomButton(); + jButton4 = new ConstomButton(); + jButton5 = new ConstomButton(); + jButton6 = new ConstomButton(); + jButton7 = new ConstomButton(); + jButton8 = new ConstomButton(); + jButton9 = new ConstomButton(); + jButton10 = new ConstomButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setTitle("Hello Minecraft! Server Manager 0.1"); + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosed(java.awt.event.WindowEvent evt) { + formWindowClosed(evt); + } + public void windowClosing(java.awt.event.WindowEvent evt) { + formWindowClosing(evt); + } + }); + + jTabbedPane1.setTabPlacement(javax.swing.JTabbedPane.LEFT); + + btnLaunch.setText("启动"); + btnLaunch.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnLaunchActionPerformed(evt); + } + }); + + txtMain.setEditable(false); + txtMain.setColumns(20); + txtMain.setRows(5); + jScrollPane4.setViewportView(txtMain); + + jLabel17.setText("启动jar"); + + txtMainJar.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtMainJarFocusLost(evt); + } + }); + + btnSetJar.setText("手动设置"); + btnSetJar.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSetJarActionPerformed(evt); + } + }); + + txtCommand.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + txtCommandKeyPressed(evt); + } + }); + + btnSendCommand.setText("发送命令"); + btnSendCommand.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSendCommandActionPerformed(evt); + } + }); + + jLabel1.setText("指令"); + + btnSave.setText("保存"); + btnSave.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSaveActionPerformed(evt); + } + }); + + jButton3.setText("清除记录"); + jButton3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton3ActionPerformed(evt); + } + }); + + btnRestart.setText("重启"); + btnRestart.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRestartActionPerformed(evt); + } + }); + + btnShutdown.setText("强制关闭"); + btnShutdown.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnShutdownActionPerformed(evt); + } + }); + + btnAutoSearch.setText("自动搜寻"); + btnAutoSearch.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAutoSearchActionPerformed(evt); + } + }); + + lblIPAddress.setText("获取IP地址..."); + lblIPAddress.setToolTipText(""); + + btnStop.setText("停止"); + btnStop.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnStopActionPerformed(evt); + } + }); + + btnCommand.setText("基本命令"); + btnCommand.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + btnCommandMouseClicked(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel17) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtMainJar)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(lblIPAddress) + .addGap(0, 265, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSetJar) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAutoSearch)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtCommand)) + .addComponent(jScrollPane4)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnLaunch, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRestart, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnSave, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnShutdown, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnCommand, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnStop, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnSendCommand, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtMainJar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnSetJar) + .addComponent(jLabel17) + .addComponent(btnAutoSearch)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblIPAddress) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jButton3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCommand) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 147, Short.MAX_VALUE) + .addComponent(btnShutdown) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSave) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnRestart) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnStop) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnLaunch)) + .addComponent(jScrollPane4)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtCommand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnSendCommand) + .addComponent(jLabel1)) + .addContainerGap()) + ); + + jTabbedPane1.addTab("主页", jPanel1); + + jLabel29.setText("cpu占有率"); + + jLabel30.setText("可使用内存"); + + jLabel32.setText("最大可使用内存"); + + jLabel33.setText("操作系统"); + + jLabel34.setText("总的物理内存"); + + jLabel35.setText("剩余的物理内存"); + + jLabel36.setText("已使用的物理内存"); + + jLabel37.setText("线程总数"); + + lblTotalMemory.setText("jLabel38"); + + lblMaxMemory.setText("jLabel40"); + + lblOSName.setText("jLabel41"); + + lblTotalMemorySize.setText("jLabel42"); + + lblFreeMemory.setText("jLabel43"); + + lblUsedMemory.setText("jLabel44"); + + lblTotalThread.setText("jLabel45"); + + jLabel31.setText("内存占有率"); + + javax.swing.GroupLayout jPanel29Layout = new javax.swing.GroupLayout(jPanel29); + jPanel29.setLayout(jPanel29Layout); + jPanel29Layout.setHorizontalGroup( + jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel29Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel29) + .addComponent(jLabel30) + .addComponent(jLabel32) + .addComponent(jLabel33) + .addComponent(jLabel34) + .addComponent(jLabel35) + .addComponent(jLabel36) + .addComponent(jLabel37) + .addComponent(jLabel31)) + .addGap(34, 34, 34) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(pgsMemoryRatio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblTotalThread) + .addComponent(lblUsedMemory) + .addComponent(lblFreeMemory) + .addComponent(lblTotalMemorySize) + .addComponent(lblOSName) + .addComponent(lblMaxMemory) + .addComponent(lblTotalMemory) + .addComponent(pgsCPURatio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(247, Short.MAX_VALUE)) + ); + jPanel29Layout.setVerticalGroup( + jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel29Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel29) + .addComponent(pgsCPURatio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel30) + .addComponent(lblTotalMemory)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel32) + .addComponent(lblMaxMemory)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel33) + .addComponent(lblOSName)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel34) + .addComponent(lblTotalMemorySize)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel35) + .addComponent(lblFreeMemory)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel36) + .addComponent(lblUsedMemory)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel31) + .addComponent(pgsMemoryRatio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel29Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel37) + .addComponent(lblTotalThread)) + .addContainerGap(267, Short.MAX_VALUE)) + ); + + jTabbedPane1.addTab("状态", jPanel29); + + jLabel5.setText("服务器端口"); + + txtServerPort.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtServerPortFocusLost(evt); + } + }); + + jLabel6.setText("最大人数"); + + txtMaxPlayer.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtMaxPlayerFocusLost(evt); + } + }); + + txtViewDistance.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtViewDistanceFocusLost(evt); + } + }); + + jLabel7.setText("视线距离"); + + jLabel8.setText("地图名称"); + + txtWorldName.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtWorldNameFocusLost(evt); + } + }); + + jLabel9.setText("地图类型"); + + cboWorldType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "默认", "超平坦", "巨型生物群系" })); + cboWorldType.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboWorldTypeItemStateChanged(evt); + } + }); + + jLabel10.setText("服务器介绍"); + + txtServerMOTD.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtServerMOTDFocusLost(evt); + } + }); + + jLabel11.setText("游戏模式"); + + cboDifficulty.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "和平", "简单", "普通", "困难" })); + cboDifficulty.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboDifficultyItemStateChanged(evt); + } + }); + + jLabel12.setText("难度"); + + cboGameMode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "生存", "创造", "极限" })); + cboGameMode.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboGameModeItemStateChanged(evt); + } + }); + + chkEnalbleAnimals.setText("生成动物"); + chkEnalbleAnimals.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkEnalbleAnimalsActionPerformed(evt); + } + }); + + chkEnableMonsters.setText("生成怪物"); + chkEnableMonsters.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkEnableMonstersActionPerformed(evt); + } + }); + + chkEnableNPCs.setText("生成村民"); + chkEnableNPCs.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkEnableNPCsActionPerformed(evt); + } + }); + + chkAllowFlight.setText("允许飞行"); + chkAllowFlight.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkAllowFlightActionPerformed(evt); + } + }); + + chkPVP.setText("允许pvp"); + chkPVP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkPVPActionPerformed(evt); + } + }); + + chkAllowNether.setText("开放地狱"); + chkAllowNether.setToolTipText(""); + chkAllowNether.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkAllowNetherActionPerformed(evt); + } + }); + + chkWhiteList.setText("开启白名单"); + chkWhiteList.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkWhiteListActionPerformed(evt); + } + }); + + txtServerName.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtServerNameFocusLost(evt); + } + }); + + jLabel15.setText("服务器名称"); + + jLabel16.setText("最大建筑高度"); + + txtMaxBuildHeight.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtMaxBuildHeightFocusLost(evt); + } + }); + + jLabel18.setText("地图生成器设置"); + + txtServerGeneratorSettings.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtServerGeneratorSettingsFocusLost(evt); + } + }); + + txtWorldSeed.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtWorldSeedFocusLost(evt); + } + }); + + jLabel19.setText("地图种子"); + + chkGenerateStructures.setText("生成建筑"); + chkGenerateStructures.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkGenerateStructuresActionPerformed(evt); + } + }); + + chkOnlineMode.setText("开启正版"); + chkOnlineMode.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkOnlineModeActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel5) + .addComponent(jLabel6) + .addComponent(jLabel7) + .addComponent(jLabel16) + .addComponent(jLabel8) + .addComponent(jLabel18)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtServerGeneratorSettings) + .addComponent(txtWorldName) + .addComponent(txtMaxBuildHeight) + .addComponent(txtViewDistance) + .addComponent(txtMaxPlayer) + .addComponent(txtServerPort))) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel15) + .addComponent(jLabel10) + .addComponent(jLabel11) + .addComponent(jLabel9) + .addComponent(jLabel12) + .addComponent(jLabel19)) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGap(26, 26, 26) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cboDifficulty, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cboGameMode, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtServerMOTD, javax.swing.GroupLayout.Alignment.TRAILING))) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGap(28, 28, 28) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtServerName, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(cboWorldType, javax.swing.GroupLayout.Alignment.TRAILING, 0, 418, Short.MAX_VALUE) + .addComponent(txtWorldSeed))))) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(chkEnalbleAnimals) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(chkEnableMonsters)) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(chkAllowFlight) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(chkPVP))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(chkEnableNPCs) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(chkGenerateStructures) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(chkOnlineMode)) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(chkAllowNether) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(chkWhiteList))))) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel5) + .addComponent(txtServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel6) + .addComponent(txtMaxPlayer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel7) + .addComponent(txtViewDistance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel16) + .addComponent(txtMaxBuildHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel8) + .addComponent(txtWorldName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel18) + .addComponent(txtServerGeneratorSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel19) + .addComponent(txtWorldSeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel9) + .addComponent(cboWorldType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel15) + .addComponent(txtServerName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel10) + .addComponent(txtServerMOTD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel11) + .addComponent(cboGameMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel12) + .addComponent(cboDifficulty, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(chkEnalbleAnimals) + .addComponent(chkEnableMonsters) + .addComponent(chkEnableNPCs) + .addComponent(chkGenerateStructures) + .addComponent(chkOnlineMode)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(chkAllowFlight) + .addComponent(chkPVP) + .addComponent(chkAllowNether) + .addComponent(chkWhiteList)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jTabbedPane6.addTab("游戏设置", jPanel3); + + jLabel14.setText("内存大小"); + + jLabel25.setText("Java路径"); + + jLabel26.setText("Java参数"); + + txtMaxMemory.setText("jTextField1"); + txtMaxMemory.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtMaxMemoryFocusLost(evt); + } + }); + + javax.swing.GroupLayout jPanel25Layout = new javax.swing.GroupLayout(jPanel25); + jPanel25.setLayout(jPanel25Layout); + jPanel25Layout.setHorizontalGroup( + jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel25Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel25Layout.createSequentialGroup() + .addComponent(jLabel14) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtMaxMemory)) + .addGroup(jPanel25Layout.createSequentialGroup() + .addComponent(jLabel25) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtJavaDir, javax.swing.GroupLayout.DEFAULT_SIZE, 468, Short.MAX_VALUE)) + .addGroup(jPanel25Layout.createSequentialGroup() + .addComponent(jLabel26) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtJavaArgs, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel25Layout.setVerticalGroup( + jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel25Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel14) + .addComponent(txtMaxMemory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel25) + .addComponent(txtJavaDir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel26) + .addComponent(txtJavaArgs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(342, Short.MAX_VALUE)) + ); + + jTabbedPane6.addTab("Java设置", jPanel25); + + javax.swing.GroupLayout jPanel24Layout = new javax.swing.GroupLayout(jPanel24); + jPanel24.setLayout(jPanel24Layout); + jPanel24Layout.setHorizontalGroup( + jPanel24Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane6) + ); + jPanel24Layout.setVerticalGroup( + jPanel24Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane6) + ); + + jTabbedPane6.getAccessibleContext().setAccessibleName(""); + + jTabbedPane2.addTab("服务器设置", jPanel24); + + jLabel20.setText("背景"); + + txtBackgroundPath.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtBackgroundPathFocusLost(evt); + } + }); + + btnSetBackgroundPath.setText("浏览"); + btnSetBackgroundPath.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSetBackgroundPathActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12); + jPanel12.setLayout(jPanel12Layout); + jPanel12Layout.setHorizontalGroup( + jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel12Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel20) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtBackgroundPath, javax.swing.GroupLayout.DEFAULT_SIZE, 412, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSetBackgroundPath) + .addContainerGap()) + ); + jPanel12Layout.setVerticalGroup( + jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel12Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel20) + .addComponent(txtBackgroundPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnSetBackgroundPath)) + .addContainerGap(419, Short.MAX_VALUE)) + ); + + jTabbedPane2.addTab("开服器设置", jPanel12); + + jScrollPane1.setViewportView(lstOP); + + btnAddOP.setText("添加"); + btnAddOP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddOPActionPerformed(evt); + } + }); + + jLabel2.setText("玩家名"); + + btnDeleteOP.setText("删除选中"); + btnDeleteOP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteOPActionPerformed(evt); + } + }); + + jLabel40.setText("<html>\n在没有开服的<br/>\n情况下使用本<br/>\n功能会直接覆<br/>\n盖json文件,<br/>\n这会导致在<br/>\n1.7.10服务端中<br/>\n的设置被抹除<br/>\n,而且不支持<br/>\n正版验证,非<br/>\n1.7.10或更高<br/>\n版本服务端无<br/>\n此问题。\n</html>"); + + javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); + jPanel5.setLayout(jPanel5Layout); + jPanel5Layout.setHorizontalGroup( + jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel5Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel2) + .addComponent(btnAddOP, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtOPName) + .addComponent(btnDeleteOP, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(jLabel40, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + jPanel5Layout.setVerticalGroup( + jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 405, Short.MAX_VALUE) + .addGroup(jPanel5Layout.createSequentialGroup() + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtOPName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAddOP) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel40, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDeleteOP))) + .addContainerGap()) + ); + + jTabbedPane3.addTab("管理员", jPanel5); + + btnDeleteWhite.setText("删除选中"); + btnDeleteWhite.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteWhiteActionPerformed(evt); + } + }); + + jScrollPane3.setViewportView(lstWhiteList); + + jLabel4.setText("玩家名"); + + btnAddWhite.setText("添加"); + btnAddWhite.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddWhiteActionPerformed(evt); + } + }); + + jLabel41.setText("<html>\n在没有开服的<br/>\n情况下使用本<br/>\n功能会直接覆<br/>\n盖json文件,<br/>\n这会导致在<br/>\n1.7.10服务端中<br/>\n的设置被抹除<br/>\n,而且不支持<br/>\n正版验证,非<br/>\n1.7.10或更高<br/>\n版本服务端无<br/>\n此问题。\n</html>"); + + javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); + jPanel6.setLayout(jPanel6Layout); + jPanel6Layout.setHorizontalGroup( + jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 413, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel4) + .addComponent(btnDeleteWhite, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnAddWhite, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtWhiteName)) + .addComponent(jLabel41, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + jPanel6Layout.setVerticalGroup( + jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 405, Short.MAX_VALUE) + .addGroup(jPanel6Layout.createSequentialGroup() + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtWhiteName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAddWhite) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel41, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDeleteWhite))) + .addContainerGap()) + ); + + jTabbedPane3.addTab("白名单", jPanel6); + + btnUnban.setText("删除选中"); + btnUnban.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUnbanActionPerformed(evt); + } + }); + + jScrollPane2.setViewportView(lstBanned); + + jLabel3.setText("玩家名"); + + btnAddBan.setText("添加"); + btnAddBan.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddBanActionPerformed(evt); + } + }); + + jLabel42.setText("<html>\n在没有开服的<br/>\n情况下使用本<br/>\n功能会直接覆<br/>\n盖json文件,<br/>\n这会导致在<br/>\n1.7.10服务端中<br/>\n的设置被抹除<br/>\n,而且不支持<br/>\n正版验证,非<br/>\n1.7.10或更高<br/>\n版本服务端无<br/>\n此问题。\n</html>"); + + javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); + jPanel7.setLayout(jPanel7Layout); + jPanel7Layout.setHorizontalGroup( + jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel7Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 413, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel3) + .addComponent(btnUnban, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnAddBan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtBanName)) + .addComponent(jLabel42, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + jPanel7Layout.setVerticalGroup( + jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 405, Short.MAX_VALUE) + .addGroup(jPanel7Layout.createSequentialGroup() + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtBanName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAddBan) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel42, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnUnban))) + .addContainerGap()) + ); + + jTabbedPane3.addTab("黑名单", jPanel7); + + javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); + jPanel4.setLayout(jPanel4Layout); + jPanel4Layout.setHorizontalGroup( + jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane3) + ); + jPanel4Layout.setVerticalGroup( + jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane3, javax.swing.GroupLayout.Alignment.TRAILING) + ); + + jTabbedPane2.addTab("玩家管理", jPanel4); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane2) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane2) + ); + + jTabbedPane1.addTab("设置", jPanel2); + + lstExternalMods.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "活动", "路径", "类型" + } + ) { + Class[] types = new Class [] { + java.lang.Boolean.class, java.lang.String.class, java.lang.String.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + jScrollPane5.setViewportView(lstExternalMods); + + btnManageExtMods.setText("管理"); + btnManageExtMods.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnManageExtModsActionPerformed(evt); + } + }); + + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow"); // NOI18N + btnAddExternelMod.setText(bundle.getString("增加")); // NOI18N + btnAddExternelMod.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddExternelModActionPerformed(evt); + } + }); + + btnDeleteExternelMod.setText(bundle.getString("删除")); // NOI18N + btnDeleteExternelMod.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteExternelModActionPerformed(evt); + } + }); + + btnSaveExtMod.setText("保存"); + btnSaveExtMod.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSaveExtModActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9); + jPanel9.setLayout(jPanel9Layout); + jPanel9Layout.setHorizontalGroup( + jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnAddExternelMod, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(btnDeleteExternelMod, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(btnManageExtMods) + .addComponent(btnSaveExtMod, javax.swing.GroupLayout.Alignment.TRAILING)) + .addContainerGap()) + ); + jPanel9Layout.setVerticalGroup( + jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createSequentialGroup() + .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addContainerGap()) + .addGroup(jPanel9Layout.createSequentialGroup() + .addComponent(btnManageExtMods) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAddExternelMod) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDeleteExternelMod) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSaveExtMod) + .addGap(0, 317, Short.MAX_VALUE)))) + ); + + jTabbedPane4.addTab("Mod管理", jPanel9); + + lstCoreMods.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "活动", "路径", "类型" + } + ) { + Class[] types = new Class [] { + java.lang.Boolean.class, java.lang.String.class, java.lang.String.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + jScrollPane6.setViewportView(lstCoreMods); + + btnManageCoreMods.setText("管理"); + btnManageCoreMods.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnManageCoreModsActionPerformed(evt); + } + }); + + btnAddExternelCoreMod.setText(bundle.getString("增加")); // NOI18N + btnAddExternelCoreMod.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddExternelCoreModActionPerformed(evt); + } + }); + + btnDeleteExternelCoreMod.setText(bundle.getString("删除")); // NOI18N + btnDeleteExternelCoreMod.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteExternelCoreModActionPerformed(evt); + } + }); + + btnSaveCoreMod.setText("保存"); + btnSaveCoreMod.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSaveCoreModActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); + jPanel10.setLayout(jPanel10Layout); + jPanel10Layout.setHorizontalGroup( + jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel10Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnSaveCoreMod) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnManageCoreMods) + .addComponent(btnAddExternelCoreMod, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(btnDeleteExternelCoreMod)) + .addContainerGap()) + ); + jPanel10Layout.setVerticalGroup( + jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel10Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE) + .addGroup(jPanel10Layout.createSequentialGroup() + .addComponent(btnManageCoreMods) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAddExternelCoreMod) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDeleteExternelCoreMod) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSaveCoreMod) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + + jTabbedPane4.addTab("核心Mod管理", jPanel10); + + lstPlugins.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "活动", "路径", "名称", "版本", "作者", "描述" + } + ) { + Class[] types = new Class [] { + java.lang.Boolean.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + jScrollPane7.setViewportView(lstPlugins); + + btnManagePlugins.setText("管理"); + btnManagePlugins.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnManagePluginsActionPerformed(evt); + } + }); + + btnAddPlugins.setText(bundle.getString("增加")); // NOI18N + btnAddPlugins.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddPluginsActionPerformed(evt); + } + }); + + btnDeletePlugins.setText(bundle.getString("删除")); // NOI18N + btnDeletePlugins.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeletePluginsActionPerformed(evt); + } + }); + + btnSavePlugins.setText("保存"); + btnSavePlugins.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSavePluginsActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11); + jPanel11.setLayout(jPanel11Layout); + jPanel11Layout.setHorizontalGroup( + jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnAddPlugins, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(btnDeletePlugins, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(btnSavePlugins) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel11Layout.createSequentialGroup() + .addComponent(btnManagePlugins) + .addContainerGap()))) + ); + jPanel11Layout.setVerticalGroup( + jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createSequentialGroup() + .addComponent(btnManagePlugins) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnAddPlugins) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDeletePlugins) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSavePlugins) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)) + .addContainerGap()) + ); + + jTabbedPane4.addTab("插件管理", jPanel11); + + javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); + jPanel8.setLayout(jPanel8Layout); + jPanel8Layout.setHorizontalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane4) + ); + jPanel8Layout.setVerticalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane4) + ); + + jTabbedPane1.addTab("模组管理", jPanel8); + + jLabel21.setText("新建计划任务"); + + cboTimerTask.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "自动保存", "自动重启", "自动备份", "自动广播", "自动发送命令" })); + + jLabel22.setText("间隔时间(分钟)"); + + btnNewTask.setText("新建计划任务"); + btnNewTask.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnNewTaskActionPerformed(evt); + } + }); + + jLabel13.setText("内容"); + + jLabel28.setText("时间类型"); + + cboTimeType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "每x分钟", "整点过去x分钟", "服务器启动", "服务器关闭", "服务器崩溃" })); + + btnDelSelectedSchedule.setText("删除选中"); + btnDelSelectedSchedule.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDelSelectedScheduleActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel14Layout = new javax.swing.GroupLayout(jPanel14); + jPanel14.setLayout(jPanel14Layout); + jPanel14Layout.setHorizontalGroup( + jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel14Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel14Layout.createSequentialGroup() + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cboTimerTask, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel21)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel28) + .addComponent(cboTimeType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtTimerTaskPeriod, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel22, javax.swing.GroupLayout.Alignment.TRAILING))) + .addComponent(jLabel13) + .addComponent(txtTimerTaskContent, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel14Layout.createSequentialGroup() + .addGap(73, 73, 73) + .addComponent(btnNewTask)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel14Layout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDelSelectedSchedule))) + .addContainerGap()) + ); + jPanel14Layout.setVerticalGroup( + jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel14Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel14Layout.createSequentialGroup() + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel21) + .addComponent(jLabel22) + .addComponent(jLabel28)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboTimerTask, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtTimerTaskPeriod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cboTimeType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel13) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtTimerTaskContent, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel14Layout.createSequentialGroup() + .addComponent(btnNewTask) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDelSelectedSchedule))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + lstSchedules.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "类型", "时间类型", "间隔时间(分钟)", "内容" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + true, false, false, true + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPane9.setViewportView(lstSchedules); + + javax.swing.GroupLayout jPanel13Layout = new javax.swing.GroupLayout(jPanel13); + jPanel13.setLayout(jPanel13Layout); + jPanel13Layout.setHorizontalGroup( + jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jScrollPane9) + ); + jPanel13Layout.setVerticalGroup( + jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel13Layout.createSequentialGroup() + .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 356, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + jTabbedPane1.addTab("计划任务", jPanel13); + + jLabel23.setText("新建备份"); + + cboBackupTypes.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "地图备份", "插件备份" })); + + btnBackup.setText("备份"); + btnBackup.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnBackupActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel17Layout = new javax.swing.GroupLayout(jPanel17); + jPanel17.setLayout(jPanel17Layout); + jPanel17Layout.setHorizontalGroup( + jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel17Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel17Layout.createSequentialGroup() + .addComponent(jLabel23) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(cboBackupTypes, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel17Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(btnBackup))) + .addContainerGap()) + ); + jPanel17Layout.setVerticalGroup( + jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel17Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel23) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboBackupTypes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnBackup) + .addContainerGap()) + ); + + jButton1.setText("刷新备份列表"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + btnDeleteBackup.setText("删除选中备份"); + btnDeleteBackup.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteBackupActionPerformed(evt); + } + }); + + btnRestoreBackup.setText("恢复选中备份"); + btnRestoreBackup.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRestoreBackupActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel16Layout = new javax.swing.GroupLayout(jPanel16); + jPanel16.setLayout(jPanel16Layout); + jPanel16Layout.setHorizontalGroup( + jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel17, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel16Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jButton1) + .addComponent(btnDeleteBackup) + .addComponent(btnRestoreBackup)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + jPanel16Layout.setVerticalGroup( + jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel16Layout.createSequentialGroup() + .addComponent(jPanel17, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 272, Short.MAX_VALUE) + .addComponent(btnRestoreBackup) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDeleteBackup) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton1) + .addContainerGap()) + ); + + lstBackups.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "类型", "时间", "名称" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + jScrollPane11.setViewportView(lstBackups); + + javax.swing.GroupLayout jPanel15Layout = new javax.swing.GroupLayout(jPanel15); + jPanel15.setLayout(jPanel15Layout); + jPanel15Layout.setHorizontalGroup( + jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel15Layout.createSequentialGroup() + .addComponent(jPanel16, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane11, javax.swing.GroupLayout.DEFAULT_SIZE, 391, Short.MAX_VALUE) + .addContainerGap()) + ); + jPanel15Layout.setVerticalGroup( + jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel16, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel15Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane11, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addContainerGap()) + ); + + jTabbedPane1.addTab("备份", jPanel15); + + lstWorlds.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "地图名", "路径", "是否允许备份" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.Boolean.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + jScrollPane10.setViewportView(lstWorlds); + + btnRefreshWorlds.setText("刷新"); + btnRefreshWorlds.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshWorldsActionPerformed(evt); + } + }); + + btnSaveWorld.setText("保存修改"); + btnSaveWorld.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnSaveWorldActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel18Layout = new javax.swing.GroupLayout(jPanel18); + jPanel18.setLayout(jPanel18Layout); + jPanel18Layout.setHorizontalGroup( + jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel18Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane10, javax.swing.GroupLayout.DEFAULT_SIZE, 521, Short.MAX_VALUE) + .addGroup(jPanel18Layout.createSequentialGroup() + .addComponent(btnRefreshWorlds) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnSaveWorld))) + .addContainerGap()) + ); + jPanel18Layout.setVerticalGroup( + jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel18Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane10, javax.swing.GroupLayout.DEFAULT_SIZE, 431, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnRefreshWorlds) + .addComponent(btnSaveWorld)) + .addContainerGap()) + ); + + jTabbedPane1.addTab("地图管理", jPanel18); + + lstCraftbukkit.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "编译号", "版本" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + lstCraftbukkit.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane18.setViewportView(lstCraftbukkit); + + btnDownloadCraftbukkit.setText("下载"); + btnDownloadCraftbukkit.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadCraftbukkitActionPerformed(evt); + } + }); + + lstRefreshCraftbukkit.setText("刷新"); + lstRefreshCraftbukkit.setToolTipText(""); + lstRefreshCraftbukkit.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + lstRefreshCraftbukkitActionPerformed(evt); + } + }); + + cboBukkitType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "稳定版", "测试版", "最新开发版" })); + cboBukkitType.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboBukkitTypeItemStateChanged(evt); + } + }); + + jLabel39.setText("Bukkit类型"); + + javax.swing.GroupLayout jPanel20Layout = new javax.swing.GroupLayout(jPanel20); + jPanel20.setLayout(jPanel20Layout); + jPanel20Layout.setHorizontalGroup( + jPanel20Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel20Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel20Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel20Layout.createSequentialGroup() + .addComponent(jLabel39) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboBukkitType, 0, 442, Short.MAX_VALUE)) + .addGroup(jPanel20Layout.createSequentialGroup() + .addComponent(jScrollPane18, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel20Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnDownloadCraftbukkit, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lstRefreshCraftbukkit, javax.swing.GroupLayout.Alignment.TRAILING)))) + .addContainerGap()) + ); + jPanel20Layout.setVerticalGroup( + jPanel20Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel20Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel20Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel39) + .addComponent(cboBukkitType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel20Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel20Layout.createSequentialGroup() + .addComponent(btnDownloadCraftbukkit) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lstRefreshCraftbukkit) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jScrollPane18, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE)) + .addContainerGap()) + ); + + jTabbedPane5.addTab("CraftBukkit", jPanel20); + + lstMCPC.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "MC版本", "Cauldron版本", "释放时间" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false, false, false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + lstMCPC.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane19.setViewportView(lstMCPC); + + btnDownloadMCPC.setLabel("下载"); + btnDownloadMCPC.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadMCPCActionPerformed(evt); + } + }); + + lstRefreshMCPC.setToolTipText(""); + lstRefreshMCPC.setLabel("刷新"); + lstRefreshMCPC.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + lstRefreshMCPCActionPerformed(evt); + } + }); + + jLabel38.setText("Minecraft版本"); + + cboCauldronMinecraft.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboCauldronMinecraftItemStateChanged(evt); + } + }); + + btnInstallMCPC.setText("重试"); + btnInstallMCPC.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnInstallMCPCActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel30Layout = new javax.swing.GroupLayout(jPanel30); + jPanel30.setLayout(jPanel30Layout); + jPanel30Layout.setHorizontalGroup( + jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel30Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel30Layout.createSequentialGroup() + .addComponent(jScrollPane19, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lstRefreshMCPC) + .addComponent(btnInstallMCPC, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(btnDownloadMCPC, javax.swing.GroupLayout.Alignment.TRAILING))) + .addGroup(jPanel30Layout.createSequentialGroup() + .addComponent(jLabel38) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboCauldronMinecraft, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel30Layout.setVerticalGroup( + jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel30Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel38) + .addComponent(cboCauldronMinecraft, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel30Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane19, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE) + .addGroup(jPanel30Layout.createSequentialGroup() + .addComponent(lstRefreshMCPC) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnDownloadMCPC) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnInstallMCPC) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + + jTabbedPane5.addTab("Cauldron", jPanel30); + + java.util.ResourceBundle bundle1 = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N"); // NOI18N + btnRefreshDownloads.setText(bundle1.getString("刷新")); // NOI18N + btnRefreshDownloads.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshDownloadsActionPerformed(evt); + } + }); + + lstDownloads.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "版本", "发布时间", "释放时间", "类型" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false, false, false, false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + lstDownloads.setToolTipText(""); + jScrollPane12.setViewportView(lstDownloads); + + btnMinecraftServerDownload.setText(bundle1.getString("下载")); // NOI18N + btnMinecraftServerDownload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMinecraftServerDownloadActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel21Layout = new javax.swing.GroupLayout(jPanel21); + jPanel21.setLayout(jPanel21Layout); + jPanel21Layout.setHorizontalGroup( + jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel21Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnRefreshDownloads, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnMinecraftServerDownload, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel21Layout.setVerticalGroup( + jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel21Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE) + .addGroup(jPanel21Layout.createSequentialGroup() + .addComponent(btnRefreshDownloads) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnMinecraftServerDownload) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + + jTabbedPane5.addTab("官方服务器", jPanel21); + + lstBukkitPlugins.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "名字", "描述", "版本", "Bukkit版本" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false, false, false, false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPane15.setViewportView(lstBukkitPlugins); + + cboCategory.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + cboCategoryItemStateChanged(evt); + } + }); + + jLabel24.setText("分类"); + + btnShowPluginInfo.setText("选中插件信息"); + btnShowPluginInfo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnShowPluginInfoActionPerformed(evt); + } + }); + + jButton11.setText("刷新"); + jButton11.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton11ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel23Layout = new javax.swing.GroupLayout(jPanel23); + jPanel23.setLayout(jPanel23Layout); + jPanel23Layout.setHorizontalGroup( + jPanel23Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel23Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel23Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane15, javax.swing.GroupLayout.DEFAULT_SIZE, 516, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel23Layout.createSequentialGroup() + .addComponent(btnShowPluginInfo) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel24) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + jPanel23Layout.setVerticalGroup( + jPanel23Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel23Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel23Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel24) + .addComponent(btnShowPluginInfo) + .addComponent(jButton11)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane15, javax.swing.GroupLayout.DEFAULT_SIZE, 401, Short.MAX_VALUE) + .addContainerGap()) + ); + + jTabbedPane5.addTab("服务器插件", jPanel23); + + javax.swing.GroupLayout jPanel19Layout = new javax.swing.GroupLayout(jPanel19); + jPanel19.setLayout(jPanel19Layout); + jPanel19Layout.setHorizontalGroup( + jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane5, javax.swing.GroupLayout.Alignment.TRAILING) + ); + jPanel19Layout.setVerticalGroup( + jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane5) + ); + + jTabbedPane5.getAccessibleContext().setAccessibleName("CraftBukkit"); + + jTabbedPane1.addTab("下载中心", jPanel19); + + lstInfos.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "名字", "时间" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false, false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPane13.setViewportView(lstInfos); + + btnRefreshInfos.setText("刷新"); + btnRefreshInfos.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshInfosActionPerformed(evt); + } + }); + + txtInfo.setEditable(false); + txtInfo.setColumns(20); + txtInfo.setRows(5); + jScrollPane14.setViewportView(txtInfo); + + btnShowInfo.setText("显示"); + btnShowInfo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnShowInfoActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel22Layout = new javax.swing.GroupLayout(jPanel22); + jPanel22.setLayout(jPanel22Layout); + jPanel22Layout.setHorizontalGroup( + jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel22Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(jPanel22Layout.createSequentialGroup() + .addComponent(btnRefreshInfos) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnShowInfo)) + .addComponent(jScrollPane13, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane14, javax.swing.GroupLayout.DEFAULT_SIZE, 374, Short.MAX_VALUE) + .addContainerGap()) + ); + jPanel22Layout.setVerticalGroup( + jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel22Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane14, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE) + .addGroup(jPanel22Layout.createSequentialGroup() + .addComponent(jScrollPane13, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel22Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnRefreshInfos) + .addComponent(btnShowInfo)))) + .addContainerGap()) + ); + + jTabbedPane1.addTab("信息记录", jPanel22); + + btnRefreshReports.setText("刷新"); + btnRefreshReports.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshReportsActionPerformed(evt); + } + }); + + txtCrashReport.setEditable(false); + txtCrashReport.setColumns(20); + txtCrashReport.setRows(5); + jScrollPane17.setViewportView(txtCrashReport); + + btnShowReport.setText("显示"); + btnShowReport.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnShowReportActionPerformed(evt); + } + }); + + jScrollPane8.setViewportView(lstReports); + + javax.swing.GroupLayout jPanel26Layout = new javax.swing.GroupLayout(jPanel26); + jPanel26.setLayout(jPanel26Layout); + jPanel26Layout.setHorizontalGroup( + jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel26Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(jPanel26Layout.createSequentialGroup() + .addComponent(btnRefreshReports) + .addGap(27, 27, 27) + .addComponent(btnShowReport)) + .addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane17, javax.swing.GroupLayout.DEFAULT_SIZE, 368, Short.MAX_VALUE) + .addContainerGap()) + ); + jPanel26Layout.setVerticalGroup( + jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel26Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane17, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE) + .addGroup(jPanel26Layout.createSequentialGroup() + .addComponent(jScrollPane8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnRefreshReports) + .addComponent(btnShowReport)))) + .addContainerGap()) + ); + + jTabbedPane1.addTab("崩溃记录", jPanel26); + + lblPlayers.setText("在线人数"); + + btnRefreshPlayers.setText("刷新在线人数"); + btnRefreshPlayers.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshPlayersActionPerformed(evt); + } + }); + + jScrollPane16.setViewportView(lstPlayers); + + jLabel27.setText("此列表每一分钟刷新一次"); + + javax.swing.GroupLayout jPanel27Layout = new javax.swing.GroupLayout(jPanel27); + jPanel27.setLayout(jPanel27Layout); + jPanel27Layout.setHorizontalGroup( + jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel27Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane16, javax.swing.GroupLayout.DEFAULT_SIZE, 521, Short.MAX_VALUE) + .addGroup(jPanel27Layout.createSequentialGroup() + .addComponent(lblPlayers) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnRefreshPlayers)) + .addGroup(jPanel27Layout.createSequentialGroup() + .addComponent(jLabel27) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel27Layout.setVerticalGroup( + jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel27Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblPlayers) + .addComponent(btnRefreshPlayers)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane16, javax.swing.GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel27) + .addContainerGap()) + ); + + jTabbedPane1.addTab("在线玩家", jPanel27); + + jButton2.setText("花生壳6.5工程版(无需公网IP,无需路由端口映射)"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + jButton4.setText("mcbbs"); + jButton4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton4ActionPerformed(evt); + } + }); + + jButton5.setText("minecraft贴吧"); + jButton5.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton5ActionPerformed(evt); + } + }); + + jButton6.setText("mcbbs发布帖"); + jButton6.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton6ActionPerformed(evt); + } + }); + + jButton7.setText("minecraft官网"); + jButton7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton7ActionPerformed(evt); + } + }); + + jButton8.setText("craftbukkit官网"); + jButton8.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton8ActionPerformed(evt); + } + }); + + jButton9.setText("MCPC+下载"); + jButton9.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton9ActionPerformed(evt); + } + }); + + jButton10.setText("指令大全"); + jButton10.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton10ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel28Layout = new javax.swing.GroupLayout(jPanel28); + jPanel28.setLayout(jPanel28Layout); + jPanel28Layout.setHorizontalGroup( + jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel28Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jButton2) + .addGroup(jPanel28Layout.createSequentialGroup() + .addComponent(jButton4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton5) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton6) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton7)) + .addGroup(jPanel28Layout.createSequentialGroup() + .addComponent(jButton8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton9)) + .addComponent(jButton10)) + .addContainerGap(100, Short.MAX_VALUE)) + ); + jPanel28Layout.setVerticalGroup( + jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel28Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jButton2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton10) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 341, Short.MAX_VALUE) + .addGroup(jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton8) + .addComponent(jButton9)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton4) + .addComponent(jButton5) + .addComponent(jButton6) + .addComponent(jButton7)) + .addContainerGap()) + ); + + jTabbedPane1.addTab("应用中心", jPanel28); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane1) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane1) + ); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + void loadFromSettings() { + txtJavaArgs.setText(SettingsManager.settings.javaArgs); + txtJavaDir.setText(SettingsManager.settings.javaDir); + txtMaxMemory.setText(SettingsManager.settings.maxMemory); + } + + void loadFromServerProperties() { + ServerProperties sp = ServerProperties.getInstance(); + if (sp == null) { + return; + } + txtServerPort.setValue(sp.getPropertyInt("server-port", 25565)); + txtServerName.setText(sp.getProperty("server-name")); + cboGameMode.setSelectedIndex(sp.getPropertyInt("gamemode", 0)); + cboDifficulty.setSelectedIndex(sp.getPropertyInt("difficulty", 1)); + String wt = sp.getProperty("level-type"); + if (wt.equals("LARGEBIOMES")) { + cboWorldType.setSelectedIndex(2); + } else if (wt.equals("FLAT")) { + cboWorldType.setSelectedIndex(1); + } else if (wt.equals("DEFAULT")) { + cboWorldType.setSelectedIndex(0); + } else { + cboWorldType.setSelectedIndex(0); + } + txtMaxPlayer.setValue(sp.getPropertyInt("max-players", 20)); + chkAllowFlight.setSelected(sp.getPropertyBoolean("allow-flight", false)); + chkAllowNether.setSelected(sp.getPropertyBoolean("allow-nether", true)); + chkEnableMonsters.setSelected(sp.getPropertyBoolean("spawn-monsters", true)); + chkEnableNPCs.setSelected(sp.getPropertyBoolean("spawn-npcs", true)); + chkEnalbleAnimals.setSelected(sp.getPropertyBoolean("spawn-animals", true)); + chkPVP.setSelected(sp.getPropertyBoolean("pvp", true)); + chkWhiteList.setSelected(sp.getPropertyBoolean("white-list", false)); + chkGenerateStructures.setSelected(sp.getPropertyBoolean("generate-structures", true)); + chkOnlineMode.setSelected(sp.getPropertyBoolean("online-mode", false)); + txtViewDistance.setValue(sp.getPropertyInt("view-distance", 10)); + txtMaxBuildHeight.setValue(sp.getPropertyInt("max-build-height", 256)); + txtServerGeneratorSettings.setText(sp.getProperty("generator-settings")); + txtWorldSeed.setText(sp.getProperty("level-seed")); + txtWorldName.setText(sp.getProperty("level-name")); + } + + void loadFromOPs() { + File mainjar = new File(SettingsManager.settings.mainjar); + if (!mainjar.exists()) { + return; + } + File folder = mainjar.getParentFile(); + op = new Op(); + op.initByBoth(new File(folder, "ops.txt"), new File(folder, "ops.json")); + for (Op.Operator ss : op.op) { + lstOPModel.addElement(ss.name); + } + lstOP.setModel(lstOPModel); + } + + void loadFromWhiteList() { + File mainjar = new File(SettingsManager.settings.mainjar); + if (!mainjar.exists()) { + return; + } + File folder = mainjar.getParentFile(); + whitelist = new WhiteList(); + whitelist.initByBoth(new File(folder, "white-list.txt"), new File(folder, "white-list.json")); + for (WhiteList.WhiteListPlayer ss : whitelist.op) { + lstWhiteListModel.addElement(ss.name); + } + lstWhiteList.setModel(lstWhiteListModel); + } + + void loadFromBannedPlayers() { + File mainjar = new File(SettingsManager.settings.mainjar); + if (!mainjar.exists()) { + return; + } + File folder = mainjar.getParentFile(); + banned = new BannedPlayers(); + banned.initByBoth(new File(folder, "banned-players.txt"), new File(folder, "banned-players.json")); + for (BannedPlayers.BannedPlayer ss : banned.op) { + lstBannedModel.addElement(ss.name); + } + lstBanned.setModel(lstBannedModel); + } + + void loadLocalMods() { + String path = Utilities.getPath("mods"); + if (path == null) { + return; + } + ArrayList<String> sl = Utilities.findAllFile(new File(path)); + DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + for (String s : sl) { + model.addRow(new Object[]{!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); + } + + lstExternalMods.updateUI(); + } + + void loadLocalPlugins() { + String path = Utilities.getPath("plugins"); + if (path == null) { + return; + } + ArrayList<String> sl = Utilities.findAllFile(new File(path)); + DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + for (String s : sl) { + PluginInformation p = PluginManager.getPluginYML(new File(Utilities.getGameDir() + "plugins" + File.separator + s)); + if (p == null) { + model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s, + "", "", "", ""}); + } else { + model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s, + p.name, p.version, p.author, p.description}); + } + } + + lstPlugins.updateUI(); + } + + void loadLocalCoreMods() { + String path = Utilities.getPath("coremods"); + if (path == null) { + return; + } + ArrayList<String> sl = Utilities.findAllFile(new File(path)); + DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + for (String s : sl) { + model.addRow(new Object[]{!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); + } + + lstCoreMods.updateUI(); + } + + void loadWorlds() { + ArrayList<String> s = BackupManager.findAllWorlds(); + DefaultTableModel model = (DefaultTableModel) lstWorlds.getModel(); + if (SettingsManager.settings.inactiveWorlds == null) { + SettingsManager.settings.inactiveWorlds = new ArrayList<String>(); + } + for (String world : s) { + model.addRow(new Object[]{ + world, Utilities.getGameDir() + world, !SettingsManager.settings.inactiveWorlds.contains(world) + }); + } + lstWorlds.updateUI(); + } + + void loadBackups() { + ArrayList<String> al = BackupManager.getBackupList(); + DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); + for (String backup : al) { + String[] names = Utilities.trimExtension(backup).split("\\+"); + model.addRow(new Object[]{ + names[0], names[1], names[2] + }); + } + lstBackups.updateUI(); + } + + void loadSchedules() { + if (SettingsManager.settings.schedules == null) { + SettingsManager.settings.schedules = new ArrayList<Schedule>(); + } + DefaultTableModel model = (DefaultTableModel) lstSchedules.getModel(); + for (Schedule s : SettingsManager.settings.schedules) { + model.addRow(ScheduleTranslator.getRow(s)); + } + lstSchedules.updateUI(); + } + + void clearListDownloads() { + SwingUtils.clearDefaultTable(lstDownloads); + } + + void loadBukkits() { + int idx = cboBukkitType.getSelectedIndex(); + if (idx == -1) { + return; + } + String url = null; + if (idx == 1) { + BukkitFormatThread thread = new BukkitFormatThread( + "http://dl.bukkit.org/downloads/craftbukkit/list/beta/", + new DoneListener1<List<BukkitVersion>>() { + @Override + public void onDone(List<BukkitVersion> value) { + craftBukkitBeta = value; + reloadBukkitList(); + } + }); + thread.start(); + } else if (idx == 0) { + BukkitFormatThread thread = new BukkitFormatThread( + "http://dl.bukkit.org/downloads/craftbukkit/list/rb/", + new DoneListener1<List<BukkitVersion>>() { + @Override + public void onDone(List<BukkitVersion> value) { + craftBukkitRecommended = value; + reloadBukkitList(); + } + }); + thread.start(); + } else if (idx == 2) { + BukkitFormatThread thread = new BukkitFormatThread( + "http://dl.bukkit.org/downloads/craftbukkit/list/dev/", + new DoneListener1<List<BukkitVersion>>() { + @Override + public void onDone(List<BukkitVersion> value) { + craftBukkitDev = value; + reloadBukkitList(); + } + }); + thread.start(); + } + } + + void loadMCPCs() { + ForgeFormatThread thread = new ForgeFormatThread( + new DoneListener1<Map<String, List<ForgeVersion>>>() { + @Override + public void onDone(Map<String, List<ForgeVersion>> value) { + mcpcPackages = value; + reloadMCPCList(); + } + }); + thread.start(); + } + + public void reloadMCPCList() { + if (mcpcPackages == null) { + return; + } + int cnt = cboCauldronMinecraft.getItemCount(); + cboCauldronMinecraft.removeAllItems(); + for (String s : mcpcPackages.keySet()) { + cboCauldronMinecraft.addItem(s); + } + + String mcver = (String) cboCauldronMinecraft.getSelectedItem(); + useMCPCVersions(mcver); + } + + public void useMCPCVersions(String ver) { + DefaultTableModel model = (DefaultTableModel) lstMCPC.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + for (ForgeVersion v : mcpcPackages.get(ver)) { + Object[] row = new Object[]{ + v.mcver, v.ver, v.releasetime + }; + model.addRow(row); + } + lstMCPC.updateUI(); + } + + public void reloadBukkitList() { + int idx = cboBukkitType.getSelectedIndex(); + if (idx == -1) { + return; + } + if (idx == 1) { + useBukkitVersions(craftBukkitBeta); + } else if (idx == 0) { + useBukkitVersions(craftBukkitRecommended); + } else if (idx == 2) { + useBukkitVersions(craftBukkitDev); + } + } + + public void useBukkitVersions(List<BukkitVersion> list) { + if (list == null) { + return; + } + DefaultTableModel model = (DefaultTableModel) lstCraftbukkit.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + for (BukkitVersion v : list) { + Object[] row = new Object[]{ + v.buildNumber, v.version + }; + model.addRow(row); + } + lstCraftbukkit.updateUI(); + } + + class RefreshDownloadsDone extends Task { + + HTTPGetTask task; + + RefreshDownloadsDone() { + task = new HTTPGetTask("https://s3.amazonaws.com/Minecraft.Download/versions/versions.json"); + } + + @Override + public Collection<Task> getDependTasks() { + return Arrays.<Task>asList(task); + } + + @Override + public boolean executeTask() { + javax.swing.JTable table = MainWindow.this.lstDownloads; + DefaultTableModel model = (DefaultTableModel) table.getModel(); + + MinecraftRemoteVersions v = MinecraftRemoteVersions.fromJson(task.getResult()); + for (MinecraftRemoteVersion ver : v.versions) { + String[] line = new String[4]; + line[0] = ver.id; + line[1] = ver.releaseTime; + line[2] = ver.time; + line[3] = ver.type; + model.addRow(line); + } + return true; + } + + @Override + public String getInfo() { + return "Get Version List"; + } + + } + + void refreshDownloads() { + clearListDownloads(); + TaskWindow.getInstance().addTask(new RefreshDownloadsDone()).start(); + } + + void refreshInfos() { + ArrayList<String> al = Utilities.findAllFile(new File(Utilities.getGameDir() + "infos-HMCSM")); + DefaultTableModel model = (DefaultTableModel) lstInfos.getModel(); + for (String s : al) { + model.addRow(new Object[]{s, Utilities.trimExtension(s)}); + } + lstInfos.updateUI(); + } + + void refreshReports() { + ArrayList<String> al = Utilities.findAllFile(new File(Utilities.getGameDir() + "crash-reports")); + for (String s : al) { + lstCrashReportsModel.addElement(s); + } + lstReports.setModel(lstCrashReportsModel); + } + + void getIP() { + IPGet get = new IPGet(); + get.dl = new DoneListener1<String>() { + + @Override + public void onDone(String value) { + lblIPAddress.setText("IP: " + value); + } + }; + get.start(); + } + + void loadBukkitPlugins() { + final DefaultTableModel model = (DefaultTableModel) lstBukkitPlugins.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + lstBukkitPlugins.updateUI(); + Thread t = new Thread() { + @Override + public void run() { + try { + List<BukkitPlugin> l; + if (cboCategory.getSelectedIndex() == 0) { + l = PluginManager.getPlugins(); + } else { + l = PluginManager.getPluginsByCategory(cboCategory.getSelectedItem().toString()); + } + plugins = l; + for (BukkitPlugin p : l) { + model.addRow(new Object[]{ + p.plugin_name, p.description, p.getLatestVersion(), p.getLatestBukkit() + }); + } + lstBukkitPlugins.updateUI(); + } catch (Exception ex) { + HMCLog.warn("Failed to get plugins", ex); + } + } + }; + t.start(); + } + + void loadBukkitCategory() { + Thread t = new Thread() { + @Override + public void run() { + try { + List<Category> l = PluginManager.getCategories(); + cboCategory.removeAllItems(); + cboCategory.addItem("所有"); + for (Category c : l) { + cboCategory.addItem(c.name); + } + } catch (Exception ex) { + HMCLog.warn("Failed to load bukkit categories."); + } + } + }; + t.start(); + } + + class MyTask extends TimerTask { + + @Override + public void run() { + Server s = Server.getInstance(); + if (s != null && !s.isRunning) { + System.out.println("AutoSave world"); + s.sendCommand("save-all"); + } + } + + } + + void loadPlayers() { + Server s = Server.getInstance(); + if (s != null && s.isRunning) { + s.getPlayerNumber(new DoneListener1<Pair<String, String[]>>() { + @Override + public void onDone(Pair<String, String[]> t) { + lblPlayers.setText("在线人数" + t.key); + lstPlayersModel.clear(); + for (String s : t.value) { + lstPlayersModel.addElement(s); + } + lstPlayers.setModel(lstPlayersModel); + } + }); + } else { + MessageBox.Show("服务器未开启!"); + } + } + + class ServerBeginListener implements DoneListener0 { + + @Override + public void onDone() { + commandSet = new ArrayList<String>(); + txtMain.setText(""); + btnLaunch.setEnabled(false); + btnStop.setEnabled(true); + btnShutdown.setEnabled(true); + btnCommand.setEnabled(true); + } + + } + + class ServerDoneListener implements DoneListener0 { + + @Override + public void onDone() { + getPlayerNumberTimer = new Timer(); + getPlayerNumberTimer.schedule(new TimerTask() { + + @Override + public void run() { + loadPlayers(); + } + }, 1000 * 60 * 10, 1000 * 60 * 10); + } + + } + + private void btnLaunchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLaunchActionPerformed + File eula = new File(new File(SettingsManager.settings.mainjar).getParentFile(), "eula.txt"); + if (!eula.exists()) { + int option = JOptionPane.showConfirmDialog(null, "您是否确认新的EULA(https://account.mojang.com/documents/minecraft_eula)?如果拒绝会导致无法启动Minecraft 1.7.10或更高版本的服务端。"); + try { + if (option == JOptionPane.YES_OPTION) { + FileUtils.write(eula, "eula=true"); + } else if (option == JOptionPane.NO_OPTION) { + FileUtils.write(eula, "eula=false"); + } + } catch (IOException e) { + MessageBox.Show("确认rula失败"); + } + } + File serverproperties = new File(new File(SettingsManager.settings.mainjar).getParentFile(), "server.properties"); + + if (!serverproperties.exists()) { + try { + FileUtils.write(serverproperties, ServerProperties.getDefault()); + } catch (IOException ex) { + HMCLog.warn("Failed to save server.properties", ex); + } + } + + Server.init(SettingsManager.settings.mainjar, String.valueOf(SettingsManager.settings.maxMemory)); + Server.getInstance() + .addListener((MonitorThread.MonitorThreadListener) this); + Server.getInstance() + .addListener((DoneListener1<Integer>) this); + Server.getInstance() + .clearSchedule(); + for (Schedule s : SettingsManager.settings.schedules) { + Server.getInstance().addSchedule(s); + } + + Server.getInstance() + .addServerStartedListener(new ServerBeginListener()); + Server.getInstance() + .addServerDoneListener(new ServerDoneListener()); + try { + Server.getInstance().run(); + } catch (IOException ex) { + MessageBox.Show("启动服务端失败!"); + HMCLog.err("Failed to launch!", ex); + } + }//GEN-LAST:event_btnLaunchActionPerformed + + private void txtMainJarFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMainJarFocusLost + SettingsManager.settings.mainjar = txtMainJar.getText(); + SettingsManager.save(); + }//GEN-LAST:event_txtMainJarFocusLost + + public void stopServer() { + Server.getInstance().stop(); + btnStop.setEnabled(false); + btnCommand.setEnabled(false); + } + + private void txtCommandKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCommandKeyPressed + int newCommandIndex = commandIndex; + int type = 0; + if (evt.getKeyCode() == KeyEvent.VK_UP) { + newCommandIndex--; + type = 1; + } else if (evt.getKeyCode() == KeyEvent.VK_DOWN) { + newCommandIndex++; + type = 1; + } else if (evt.getKeyCode() == KeyEvent.VK_ENTER) { + type = 2; + } + if (type == 1) { + if (outOfCommandSet(newCommandIndex)) { + return; + } + commandIndex = newCommandIndex; + txtCommand.setText(commandSet.get(commandIndex)); + } else if (type == 2) { + sendCommand(); + } + }//GEN-LAST:event_txtCommandKeyPressed + + private void btnSendCommandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSendCommandActionPerformed + sendCommand(); + }//GEN-LAST:event_btnSendCommandActionPerformed + + private void btnSetJarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSetJarActionPerformed + JFileChooser fc = new JFileChooser(); + fc.setFileFilter(new FileNameExtensionFilter("Jar file", "jar")); + if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { + File f = fc.getSelectedFile(); + if (f != null) { + txtMainJar.setText(f.getAbsolutePath()); + SettingsManager.settings.mainjar = f.getAbsolutePath(); + SettingsManager.save(); + loadFromServerProperties(); + loadFromOPs(); + } + } + }//GEN-LAST:event_btnSetJarActionPerformed + + private void cboDifficultyItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboDifficultyItemStateChanged + ServerProperties.getInstance().setDifficulty(cboDifficulty.getSelectedIndex()); + }//GEN-LAST:event_cboDifficultyItemStateChanged + + private void txtMaxBuildHeightFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMaxBuildHeightFocusLost + ServerProperties.getInstance().setMaxBuildHeight(Integer.parseInt(txtMaxBuildHeight.getValue().toString())); + }//GEN-LAST:event_txtMaxBuildHeightFocusLost + + private void txtServerNameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtServerNameFocusLost + ServerProperties.getInstance().setServerName(txtServerName.getText()); + }//GEN-LAST:event_txtServerNameFocusLost + + private void txtServerMOTDFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtServerMOTDFocusLost + ServerProperties.getInstance().setMotd(txtServerMOTD.getText()); + }//GEN-LAST:event_txtServerMOTDFocusLost + + private void cboGameModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboGameModeItemStateChanged + ServerProperties.getInstance().setGameMode(cboGameMode.getSelectedIndex()); + }//GEN-LAST:event_cboGameModeItemStateChanged + + private void chkEnalbleAnimalsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkEnalbleAnimalsActionPerformed + ServerProperties.getInstance().setSpawnAnimals(chkEnalbleAnimals.isSelected()); + }//GEN-LAST:event_chkEnalbleAnimalsActionPerformed + + private void chkEnableMonstersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkEnableMonstersActionPerformed + ServerProperties.getInstance().setSpawnMonsters(chkEnableMonsters.isSelected()); + }//GEN-LAST:event_chkEnableMonstersActionPerformed + + private void chkEnableNPCsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkEnableNPCsActionPerformed + ServerProperties.getInstance().setSpawnNPCs(chkEnableNPCs.isSelected()); + }//GEN-LAST:event_chkEnableNPCsActionPerformed + + private void chkAllowFlightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkAllowFlightActionPerformed + ServerProperties.getInstance().setAllowFlight(chkAllowFlight.isSelected()); + }//GEN-LAST:event_chkAllowFlightActionPerformed + + private void chkPVPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkPVPActionPerformed + ServerProperties.getInstance().setPVP(chkPVP.isSelected()); + }//GEN-LAST:event_chkPVPActionPerformed + + private void chkAllowNetherActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkAllowNetherActionPerformed + ServerProperties.getInstance().setAllowNether(chkAllowNether.isSelected()); + }//GEN-LAST:event_chkAllowNetherActionPerformed + + private void chkWhiteListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkWhiteListActionPerformed + ServerProperties.getInstance().setWhiteList(chkWhiteList.isSelected()); + }//GEN-LAST:event_chkWhiteListActionPerformed + + private void txtServerPortFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtServerPortFocusLost + ServerProperties.getInstance().setServerPort(Integer.parseInt(txtServerPort.getValue().toString())); + }//GEN-LAST:event_txtServerPortFocusLost + + private void txtMaxPlayerFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMaxPlayerFocusLost + ServerProperties.getInstance().setMaxPlayers(Integer.parseInt(txtMaxPlayer.getValue().toString())); + }//GEN-LAST:event_txtMaxPlayerFocusLost + + private void txtViewDistanceFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtViewDistanceFocusLost + ServerProperties.getInstance().setViewDistence(Integer.parseInt(txtViewDistance.getValue().toString())); + }//GEN-LAST:event_txtViewDistanceFocusLost + + private void cboWorldTypeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboWorldTypeItemStateChanged + int OAO = cboWorldType.getSelectedIndex(); + String type = "DEFAULT"; + if (OAO == 0) { + type = "DEFAULT"; + } else if (OAO == 1) { + type = "FLAT"; + } else if (OAO == 2) { + type = "LARGEBIMOES"; + } + ServerProperties.getInstance().setLevelType(type); + }//GEN-LAST:event_cboWorldTypeItemStateChanged + + private void txtWorldSeedFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtWorldSeedFocusLost + ServerProperties.getInstance().setLevelSeed(txtWorldSeed.getText()); + }//GEN-LAST:event_txtWorldSeedFocusLost + + private void txtServerGeneratorSettingsFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtServerGeneratorSettingsFocusLost + ServerProperties.getInstance().setGeneratorSettings(txtServerGeneratorSettings.getText()); + }//GEN-LAST:event_txtServerGeneratorSettingsFocusLost + + private void txtWorldNameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtWorldNameFocusLost + ServerProperties.getInstance().setLevelName(txtWorldName.getText()); + }//GEN-LAST:event_txtWorldNameFocusLost + + private void chkGenerateStructuresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkGenerateStructuresActionPerformed + ServerProperties.getInstance().setGenerateStructures(chkGenerateStructures.isSelected()); + }//GEN-LAST:event_chkGenerateStructuresActionPerformed + + private void btnAddOPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddOPActionPerformed + lstOPModel.addElement(txtOPName.getText()); + lstOP.updateUI(); + + if (Server.isInstanceRunning()) { + Server.getInstance().sendCommand("op " + txtOPName.getText()); + } else { + Op.Operator operator = new Op.Operator(txtOPName.getText()); + op.op.add(operator); + File dir = new File(SettingsManager.settings.mainjar).getParentFile(); + try { + op.saveAsBoth(new File(dir, "ops.txt"), new File(dir, "ops.json")); + } catch (IOException ex) { + HMCLog.warn("Failed to save ops", ex); + MessageBox.Show("添加失败。。。"); + } + } + }//GEN-LAST:event_btnAddOPActionPerformed + + private void btnDeleteOPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteOPActionPerformed + String s = lstOP.getSelectedValue().toString(); + lstOPModel.removeElement(lstOP.getSelectedIndex()); + lstOP.updateUI(); + + if (Server.isInstanceRunning()) { + Server.getInstance().sendCommand("deop " + txtOPName.getText()); + } else { + Op.Operator operator = new Op.Operator(s); + op.op.remove(operator); + File dir = new File(SettingsManager.settings.mainjar).getParentFile(); + try { + op.saveAsBoth(new File(dir, "ops.txt"), new File(dir, "ops.json")); + } catch (IOException ex) { + HMCLog.warn("Failed to save ops", ex); + MessageBox.Show("删除失败。。。"); + } + } + }//GEN-LAST:event_btnDeleteOPActionPerformed + + private void btnAddWhiteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddWhiteActionPerformed + lstWhiteListModel.addElement(txtWhiteName.getText()); + lstWhiteList.updateUI(); + + if (Server.isInstanceRunning()) { + Server.getInstance().sendCommand("whitelist add " + txtWhiteName.getText()); + } else { + WhiteList.WhiteListPlayer player = new WhiteList.WhiteListPlayer(txtWhiteName.getText()); + whitelist.op.add(player); + File dir = new File(SettingsManager.settings.mainjar).getParentFile(); + try { + whitelist.saveAsBoth(new File(dir, "white-list.txt"), new File(dir, "white-list.json")); + } catch (IOException ex) { + HMCLog.warn("Failed to save white-list", ex); + MessageBox.Show("添加失败。。。"); + } + } + }//GEN-LAST:event_btnAddWhiteActionPerformed + + private void btnDeleteWhiteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteWhiteActionPerformed + String name = lstWhiteList.getSelectedValue().toString(); + lstWhiteListModel.removeElement(lstWhiteList.getSelectedIndex()); + lstWhiteList.updateUI(); + + if (Server.isInstanceRunning()) { + Server.getInstance().sendCommand("whitelist remove " + txtWhiteName.getText()); + } else { + WhiteList.WhiteListPlayer player = new WhiteList.WhiteListPlayer(name); + whitelist.op.remove(player); + File dir = new File(SettingsManager.settings.mainjar).getParentFile(); + try { + whitelist.saveAsBoth(new File(dir, "white-list.txt"), new File(dir, "white-list.json")); + } catch (IOException ex) { + HMCLog.warn("Failed to save white-list", ex); + MessageBox.Show("删除失败。。。"); + } + } + }//GEN-LAST:event_btnDeleteWhiteActionPerformed + + private void btnManageExtModsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnManageExtModsActionPerformed + FolderOpener.openMods(); + }//GEN-LAST:event_btnManageExtModsActionPerformed + + private void btnAddExternelModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddExternelModActionPerformed + java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow"); + JFileChooser fc = new JFileChooser(); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); + fc.setDialogTitle(bundle.getString("选择模组")); + fc.setMultiSelectionEnabled(false); + fc.showOpenDialog(this); + try { + String path = fc.getSelectedFile().getCanonicalPath(); + String path2 = Utilities.try2GetPath("mods"); + File newf = new File(path2); + newf.mkdirs(); + newf = new File(path2 + File.separator + fc.getSelectedFile().getName()); + FileUtils.copyFile(new File(path), newf); + + DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); + model.addRow(new Object[]{fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); + lstExternalMods.updateUI(); + } catch (IOException e) { + MessageBox.Show(bundle.getString("添加失败")); + HMCLog.warn("Failed to add ext mods", e); + } + }//GEN-LAST:event_btnAddExternelModActionPerformed + + private void btnDeleteExternelModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteExternelModActionPerformed + DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); + int idx = lstExternalMods.getSelectedRow(); + String selectedName = (String) model.getValueAt(idx, 0); + model.removeRow(idx); + String path = Utilities.getPath("mods"); + if (path == null) { + MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("删除失败")); + return; + } + File newf = new File(path + File.separator + selectedName); + newf.delete(); + }//GEN-LAST:event_btnDeleteExternelModActionPerformed + + private void btnManageCoreModsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnManageCoreModsActionPerformed + FolderOpener.openCoreMods(); + }//GEN-LAST:event_btnManageCoreModsActionPerformed + + private void btnAddExternelCoreModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddExternelCoreModActionPerformed + JFileChooser fc = new JFileChooser(); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); + fc.setDialogTitle(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("选择模组")); + fc.setMultiSelectionEnabled(false); + fc.showOpenDialog(this); + try { + String path = fc.getSelectedFile().getCanonicalPath(); + String path2 = Utilities.try2GetPath("coremods"); + File newf = new File(path2); + newf.mkdirs(); + newf = new File(path2 + File.separator + fc.getSelectedFile().getName()); + + DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel(); + lstCoreMods.updateUI(); + model.addRow(new Object[]{fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); + FileUtils.copyFile(new File(path), newf); + } catch (IOException e) { + MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("添加失败")); + HMCLog.warn("Failed to add ext core mod.", e); + } + }//GEN-LAST:event_btnAddExternelCoreModActionPerformed + + private void btnDeleteExternelCoreModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteExternelCoreModActionPerformed + DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel(); + int idx = lstCoreMods.getSelectedRow(); + String selectedName = (String) model.getValueAt(idx, 0); + model.removeRow(idx); + lstCoreMods.updateUI(); + String path = Utilities.getPath("coremods"); + if (path == null) { + MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("删除失败")); + return; + } + File newf = new File(path + File.separator + selectedName); + newf.delete(); + }//GEN-LAST:event_btnDeleteExternelCoreModActionPerformed + + private void btnManagePluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnManagePluginsActionPerformed + FolderOpener.openPlugins(); + }//GEN-LAST:event_btnManagePluginsActionPerformed + + private void btnAddPluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddPluginsActionPerformed + JFileChooser fc = new JFileChooser(); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); + fc.setDialogTitle(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("选择模组")); + fc.setMultiSelectionEnabled(false); + fc.showOpenDialog(this); + try { + String path = fc.getSelectedFile().getCanonicalPath(); + String path2 = Utilities.try2GetPath("plugins"); + File newf = new File(path2); + newf.mkdirs(); + newf = new File(path2 + File.separator + fc.getSelectedFile().getName()); + + DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel(); + lstPlugins.updateUI(); + model.addRow(new Object[]{fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); + FileUtils.copyFile(new File(path), newf); + } catch (IOException e) { + MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("添加失败")); + HMCLog.warn("Failed to add plugin", e); + } + }//GEN-LAST:event_btnAddPluginsActionPerformed + + private void btnDeletePluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeletePluginsActionPerformed + DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel(); + int idx = lstPlugins.getSelectedRow(); + String selectedName = (String) model.getValueAt(idx, 0); + model.removeRow(idx); + lstPlugins.updateUI(); + String path = Utilities.getPath("plugins"); + if (path == null) { + MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("删除失败")); + return; + } + File newf = new File(path + File.separator + selectedName); + newf.delete(); + }//GEN-LAST:event_btnDeletePluginsActionPerformed + + private void btnShutdownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShutdownActionPerformed + Server.getInstance().shutdown(); + }//GEN-LAST:event_btnShutdownActionPerformed + + private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveActionPerformed + Server.getInstance().sendCommand("save-all"); + }//GEN-LAST:event_btnSaveActionPerformed + + private void btnSaveExtModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveExtModActionPerformed + ArrayList<String> arrayList = new ArrayList<String>(); + Vector strings = ((DefaultTableModel) lstExternalMods.getModel()).getDataVector(); + for (Object s : strings) { + Vector v = (Vector) s; + if (!(Boolean) v.elementAt(0)) { + arrayList.add((String) v.elementAt(1)); + } + } + SettingsManager.settings.inactiveExtMods = arrayList; + SettingsManager.save(); + }//GEN-LAST:event_btnSaveExtModActionPerformed + + private void btnSavePluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSavePluginsActionPerformed + ArrayList<String> arrayList = new ArrayList<String>(); + Vector strings = ((DefaultTableModel) lstCoreMods.getModel()).getDataVector(); + for (Object s : strings) { + Vector v = (Vector) s; + if (!(Boolean) v.elementAt(0)) { + arrayList.add((String) v.elementAt(1)); + } + } + SettingsManager.settings.inactiveCoreMods = arrayList; + SettingsManager.save(); + }//GEN-LAST:event_btnSavePluginsActionPerformed + + private void btnAddBanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddBanActionPerformed + lstBannedModel.addElement(txtBanName.getText()); + lstBanned.updateUI(); + + if (Server.isInstanceRunning()) { + Server.getInstance().sendCommand("ban " + txtBanName.getText()); + } else { + BannedPlayers.BannedPlayer player = new BannedPlayers.BannedPlayer(txtBanName.getText()); + banned.op.add(player); + File dir = new File(SettingsManager.settings.mainjar).getParentFile(); + try { + whitelist.saveAsBoth(new File(dir, "banned-players.txt"), new File(dir, "banned-players.json")); + } catch (IOException ex) { + HMCLog.warn("Failed to save banned-players", ex); + MessageBox.Show("添加失败。。。"); + } + } + }//GEN-LAST:event_btnAddBanActionPerformed + + private void btnUnbanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUnbanActionPerformed + String s = lstBanned.getSelectedValue().toString(); + lstBannedModel.removeElement(lstBanned.getSelectedIndex()); + lstBanned.updateUI(); + + if (Server.isInstanceRunning()) { + Server.getInstance().sendCommand("pardon " + txtBanName.getText()); + } else { + BannedPlayers.BannedPlayer player = new BannedPlayers.BannedPlayer(s); + banned.op.remove(player); + File dir = new File(SettingsManager.settings.mainjar).getParentFile(); + try { + whitelist.saveAsBoth(new File(dir, "banned-players.txt"), new File(dir, "banned-players.json")); + } catch (IOException ex) { + HMCLog.warn("Failed to save white-list", ex); + MessageBox.Show("删除失败。。。"); + } + } + }//GEN-LAST:event_btnUnbanActionPerformed + + private void btnSetBackgroundPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSetBackgroundPathActionPerformed + JFileChooser fc = new JFileChooser(); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); + fc.setDialogTitle(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N").getString("选择背景路径")); + fc.setMultiSelectionEnabled(false); + fc.showOpenDialog(this); + try { + String path = fc.getSelectedFile().getCanonicalPath(); + path = Utilities.removeLastSeparator(path); + txtBackgroundPath.setText(path); + SettingsManager.settings.bgPath = path; + SettingsManager.save(); + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(path)); + resizeBackgroundLabel(); + } catch (IOException e) { + HMCLog.warn("Failed to set background path", e); + MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N").getString("设置失败:") + e.getMessage()); + } + }//GEN-LAST:event_btnSetBackgroundPathActionPerformed + + private void txtBackgroundPathFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtBackgroundPathFocusLost + String path = txtBackgroundPath.getText(); + SettingsManager.settings.bgPath = path; + SettingsManager.save(); + background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(path)); + resizeBackgroundLabel(); + }//GEN-LAST:event_txtBackgroundPathFocusLost + + private void btnNewTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewTaskActionPerformed + Schedule s = new Schedule(); + s.type = cboTimerTask.getSelectedIndex(); + s.type2 = 0; + s.timeType = cboTimeType.getSelectedIndex(); + s.content = txtTimerTaskContent.getText(); + try { + s.per = Double.parseDouble(txtTimerTaskPeriod.getText()); + } catch (NumberFormatException e) { + HMCLog.warn("Failed to parse double: " + txtTimerTaskPeriod.getText(), e); + MessageBox.Show("错误的间隔时间"); + return; + } + SettingsManager.settings.schedules.add(s); + SettingsManager.save(); + DefaultTableModel model = (DefaultTableModel) lstSchedules.getModel(); + model.addRow(ScheduleTranslator.getRow(s)); + lstSchedules.updateUI(); + }//GEN-LAST:event_btnNewTaskActionPerformed + + private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed + txtMain.setText(""); + }//GEN-LAST:event_jButton3ActionPerformed + + private void btnDelSelectedScheduleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDelSelectedScheduleActionPerformed + int index = lstSchedules.getSelectedRow(); + SettingsManager.settings.schedules.remove(index); + SettingsManager.save(); + DefaultTableModel model = (DefaultTableModel) lstSchedules.getModel(); + model.removeRow(index); + lstSchedules.updateUI(); + }//GEN-LAST:event_btnDelSelectedScheduleActionPerformed + + private void btnRestartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRestartActionPerformed + Server.getInstance().restart(); + }//GEN-LAST:event_btnRestartActionPerformed + + private void btnRefreshWorldsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshWorldsActionPerformed + loadWorlds(); + }//GEN-LAST:event_btnRefreshWorldsActionPerformed + + private void btnSaveWorldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveWorldActionPerformed + + DefaultTableModel model = (DefaultTableModel) lstWorlds.getModel(); + SettingsManager.settings.inactiveWorlds = new ArrayList<String>(); + for (int i = 0; i < model.getRowCount(); i++) { + if ((Boolean) model.getValueAt(i, 2) == false) { + SettingsManager.settings.inactiveWorlds.add((String) model.getValueAt(i, 0)); + } + } + SettingsManager.save(); + }//GEN-LAST:event_btnSaveWorldActionPerformed + + private void btnBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBackupActionPerformed + switch (cboBackupTypes.getSelectedIndex()) { + case 0: + BackupManager.backupAllWorlds(); + break; + case 1: + BackupManager.backupAllPlugins(); + break; + } + }//GEN-LAST:event_btnBackupActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + loadBackups(); + }//GEN-LAST:event_jButton1ActionPerformed + + private void btnDeleteBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteBackupActionPerformed + int index = lstBackups.getSelectedRow(); + if (index == -1) { + return; + } + DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); + Utilities.deleteAll(new File(BackupManager.backupDir() + + model.getValueAt(index, 0) + "+" + + model.getValueAt(index, 1) + "+" + + model.getValueAt(index, 2) + ".zip")); + model.removeRow(index); + }//GEN-LAST:event_btnDeleteBackupActionPerformed + + private void btnRestoreBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRestoreBackupActionPerformed + int index = lstBackups.getSelectedRow(); + if (index == -1) { + return; + } + DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); + BackupManager.restoreBackup(BackupManager.backupDir() + + model.getValueAt(index, 0) + "+" + + model.getValueAt(index, 1) + "+" + + model.getValueAt(index, 2) + ".zip"); + }//GEN-LAST:event_btnRestoreBackupActionPerformed + + private void btnRefreshDownloadsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshDownloadsActionPerformed + refreshDownloads(); + }//GEN-LAST:event_btnRefreshDownloadsActionPerformed + + private void btnMinecraftServerDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMinecraftServerDownloadActionPerformed + String id = (String) lstDownloads.getModel().getValueAt(lstDownloads.getSelectedRow(), 0); + final String MC_DOWNLOAD_URL = "https://s3.amazonaws.com/Minecraft.Download/versions/"; + String url = MC_DOWNLOAD_URL + id + "/"; + File serverjar = new File(IOUtils.currentDir(), "minecraft_server." + id + ".jar"); + serverjar.delete(); + + String downloadURL = url + "minecraft_server." + id + ".jar"; + TaskWindow.getInstance().addTask(new FileDownloadTask(downloadURL, serverjar).setTag(id)).start(); + }//GEN-LAST:event_btnMinecraftServerDownloadActionPerformed + + private void btnRefreshInfosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshInfosActionPerformed + refreshInfos(); + }//GEN-LAST:event_btnRefreshInfosActionPerformed + + private void btnShowInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowInfoActionPerformed + try { + DefaultTableModel model = (DefaultTableModel) lstInfos.getModel(); + int index = lstInfos.getSelectedRow(); + if (index == -1) { + return; + } + String path = Utilities.getGameDir() + "infos-HMCSM" + File.separator + model.getValueAt(index, 0); + String content = FileUtils.readFileToString(new File(path)); + txtInfo.setText(content); + } catch (IOException ex) { + HMCLog.warn("Failed to read info.", ex); + } + }//GEN-LAST:event_btnShowInfoActionPerformed + + private void btnAutoSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAutoSearchActionPerformed + ArrayList<String> al = Utilities.findAllFile(IOUtils.currentDir()); + for (String s : al) { + if (ServerChecker.isServerJar(new File(s))) { + String path = IOUtils.tryGetCanonicalFilePath(new File(IOUtils.currentDir(), s)); + txtMainJar.setText(path); + SettingsManager.settings.mainjar = path; + SettingsManager.save(); + } + } + }//GEN-LAST:event_btnAutoSearchActionPerformed + + private void cboCategoryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboCategoryItemStateChanged + loadBukkitPlugins(); + }//GEN-LAST:event_cboCategoryItemStateChanged + + private void btnShowPluginInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowPluginInfoActionPerformed + try { + int index = lstBukkitPlugins.getSelectedRow(); + if (index == -1) { + return; + } + PluginInfo pi = PluginManager.getPluginInfo(plugins.get(index).slug); + PluginInfoDialog w = new PluginInfoDialog(this, true, pi); + w.setVisible(true); + } catch (Exception ex) { + HMCLog.warn("Failed to get plugin info", ex); + } + }//GEN-LAST:event_btnShowPluginInfoActionPerformed + + private void btnRefreshReportsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshReportsActionPerformed + refreshReports(); + }//GEN-LAST:event_btnRefreshReportsActionPerformed + + private void btnShowReportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowReportActionPerformed + try { + int index = lstReports.getSelectedIndex(); + if (index == -1) { + return; + } + String path = Utilities.getGameDir() + "crash-reports" + File.separator + lstCrashReportsModel.get(index); + String content = FileUtils.readFileToString(new File(path)); + txtCrashReport.setText(content); + } catch (IOException ex) { + HMCLog.warn("Failed to get crash-report.", ex); + MessageBox.Show("无法获取崩溃报告"); + } + }//GEN-LAST:event_btnShowReportActionPerformed + + private void btnRefreshPlayersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshPlayersActionPerformed + loadPlayers(); + }//GEN-LAST:event_btnRefreshPlayersActionPerformed + + private void chkOnlineModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkOnlineModeActionPerformed + ServerProperties.getInstance().setOnlineMode(chkOnlineMode.isSelected()); + }//GEN-LAST:event_chkOnlineModeActionPerformed + + private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed + Utilities.openLink("http://www.mcbbs.net/"); + }//GEN-LAST:event_jButton4ActionPerformed + + private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed + Utilities.openLink("http://tieba.baidu.com/minecraft"); + }//GEN-LAST:event_jButton5ActionPerformed + + private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed + Utilities.openLink("http://www.mcbbs.net/thread-171239-1-1.html"); + }//GEN-LAST:event_jButton6ActionPerformed + + private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed + Utilities.openLink("http://www.minecraft.net/"); + }//GEN-LAST:event_jButton7ActionPerformed + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + Utilities.openLink("http://www.oray.com/peanuthull/download_ddns_6.5.php"); + }//GEN-LAST:event_jButton2ActionPerformed + + private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed + Utilities.openLink("http://www.bukkit.org/"); + }//GEN-LAST:event_jButton8ActionPerformed + + private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed + Utilities.openLink("http://ci.md-5.net/job/MCPC-Plus/"); + }//GEN-LAST:event_jButton9ActionPerformed + + private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed + new CommandsWindow(this, true).setVisible(true); + }//GEN-LAST:event_jButton10ActionPerformed + + private void lstRefreshCraftbukkitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lstRefreshCraftbukkitActionPerformed + loadBukkits(); + }//GEN-LAST:event_lstRefreshCraftbukkitActionPerformed + + private void btnDownloadCraftbukkitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadCraftbukkitActionPerformed + int idx = lstCraftbukkit.getSelectedRow(); + if (idx == -1) { + return; + } + String ext = ""; + List<BukkitVersion> cb = null; + int idx2 = cboBukkitType.getSelectedIndex(); + if (idx2 == -1) { + return; + } + switch (idx2) { + case 0: + ext = "rb"; + cb = craftBukkitRecommended; + break; + case 1: + ext = "beta"; + cb = craftBukkitBeta; + break; + } + BukkitVersion v = cb.get(idx); + File file = new File(IOUtils.currentDir(), "craftbukkit-" + ext + "-" + v.version + ".jar"); + TaskWindow.getInstance().addTask(new FileDownloadTask(v.downloadLink, IOUtils.tryGetCanonicalFile(file)).setTag("bukkit-" + ext + "-" + v.version)) + .start(); + }//GEN-LAST:event_btnDownloadCraftbukkitActionPerformed + + private void btnDownloadMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadMCPCActionPerformed + int idx = lstMCPC.getSelectedRow(); + if (idx == -1) { + return; + } + ForgeVersion v = mcpcPackages.get(cboCauldronMinecraft.getSelectedItem().toString()).get(idx); + String url; + File filepath = new File(IOUtils.currentDir(), "forge-installer.jar"); + url = v.installer[1]; + if (!TaskWindow.getInstance().addTask(new FileDownloadTask(url, filepath).setTag("cauldron-" + v.ver)).start()) { + MessageBox.Show(C.I18N.getString("install.failed_download_forge")); + } else { + installMCPC(filepath); + } + }//GEN-LAST:event_btnDownloadMCPCActionPerformed + + private void installMCPC(final File filepath) { + try { + ForgeInstaller installer = new ForgeInstaller(IOUtils.currentDir(), filepath); + installer.install(); + MessageBox.Show(C.I18N.getString("install.success")); + } catch (Exception e) { + HMCLog.warn("Failed to install liteloader", e); + MessageBox.Show(C.I18N.getString("install.failed_forge")); + } + } + + private void lstRefreshMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lstRefreshMCPCActionPerformed + loadMCPCs(); + }//GEN-LAST:event_lstRefreshMCPCActionPerformed + + private void btnSaveCoreModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveCoreModActionPerformed + ArrayList<String> arrayList = new ArrayList<String>(); + Vector strings = ((DefaultTableModel) lstPlugins.getModel()).getDataVector(); + for (Object s : strings) { + Vector v = (Vector) s; + if (!(Boolean) v.elementAt(0)) { + arrayList.add((String) v.elementAt(1)); + } + } + SettingsManager.settings.inactivePlugins = arrayList; + SettingsManager.save(); + }//GEN-LAST:event_btnSaveCoreModActionPerformed + + private void cboCauldronMinecraftItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboCauldronMinecraftItemStateChanged + if (cboCauldronMinecraft.getItemCount() > 0 && mcpcPackages != null && mcpcPackages.containsKey(cboCauldronMinecraft.getSelectedItem().toString())) { + useMCPCVersions(cboCauldronMinecraft.getSelectedItem().toString()); + } + }//GEN-LAST:event_cboCauldronMinecraftItemStateChanged + + private void btnInstallMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnInstallMCPCActionPerformed + File filepath = new File(IOUtils.currentDir(), "forge-installer.jar"); + if (!filepath.exists()) { + MessageBox.Show("您还未下载Cauldron!请点击下载按钮下载并自动安装!"); + return; + } + installMCPC(filepath); + }//GEN-LAST:event_btnInstallMCPCActionPerformed + + private void cboBukkitTypeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboBukkitTypeItemStateChanged + reloadBukkitList(); + }//GEN-LAST:event_cboBukkitTypeItemStateChanged + + private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed + loadBukkitPlugins(); + loadBukkitCategory(); + }//GEN-LAST:event_jButton11ActionPerformed + + private void btnCommandMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCommandMouseClicked + if (Server.getInstance() == null || !Server.getInstance().isRunning || !btnCommand.isEnabled()) { + return; + } + ppmBasically.show(evt.getComponent(), evt.getPoint().x, evt.getPoint().y); + }//GEN-LAST:event_btnCommandMouseClicked + + private void btnStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStopActionPerformed + Server.getInstance().stop(); + }//GEN-LAST:event_btnStopActionPerformed + + private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed + + }//GEN-LAST:event_formWindowClosed + + private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing + if (Server.getInstance() != null && Server.getInstance().isRunning) { + Server.getInstance().stop(); + } + }//GEN-LAST:event_formWindowClosing + + private void txtMaxMemoryFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMaxMemoryFocusLost + SettingsManager.settings.maxMemory = txtMaxMemory.getText(); + SettingsManager.save(); + }//GEN-LAST:event_txtMaxMemoryFocusLost + + @Override + public void onStatus(String status) { + String text = txtMain.getText(); + text += status + System.getProperty("line.separator"); + int position = text.length(); + txtMain.setText(text); + txtMain.setCaretPosition(position); + } + + @Override + public void onDone(Integer t) { + btnLaunch.setEnabled(true); + btnStop.setEnabled(false); + btnShutdown.setEnabled(false); + btnCommand.setEnabled(false); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); + try { + FileUtils.write(new File(Utilities.getGameDir() + "infos-HMCSM" + + File.separator + format.format(new Date()) + ".txt"), + txtMain.getText()); + } catch (IOException ex) { + HMCLog.warn("Failed to save info", ex); + } + if (getPlayerNumberTimer != null) { + getPlayerNumberTimer.cancel(); + getPlayerNumberTimer = null; + } + } + + private void sendCommand() { + String command = txtCommand.getText(); + boolean append = false; + if (outOfCommandSet()) { + append = true; + } else if (!command.equals(commandSet.get(commandIndex))) { + append = true; + } + if (Server.getInstance() != null) { + Server.getInstance().sendCommand(command); + } else { + System.err.println("Server is null."); + } + System.out.println("Send command: " + command); + onStatus(">" + command); + txtCommand.setText(""); + if (append) { + commandSet.add(command); + commandIndex = commandSet.size(); + } else { + commandIndex++; + } + } + + MonitorThread mainThread; + DefaultListModel lstOPModel = new DefaultListModel(), + lstWhiteListModel = new DefaultListModel(), + lstBannedModel = new DefaultListModel(), + lstCrashReportsModel = new DefaultListModel(), + lstPlayersModel = new DefaultListModel(); + List<BukkitPlugin> plugins; + Map<String, List<ForgeVersion>> mcpcPackages; + List<BukkitVersion> craftBukkitRecommended, craftBukkitBeta, craftBukkitDev; + WhiteList whitelist; + Op op; + BannedPlayers banned; + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnAddBan; + private javax.swing.JButton btnAddExternelCoreMod; + private javax.swing.JButton btnAddExternelMod; + private javax.swing.JButton btnAddOP; + private javax.swing.JButton btnAddPlugins; + private javax.swing.JButton btnAddWhite; + private javax.swing.JButton btnAutoSearch; + private javax.swing.JButton btnBackup; + private javax.swing.JButton btnCommand; + private javax.swing.JButton btnDelSelectedSchedule; + private javax.swing.JButton btnDeleteBackup; + private javax.swing.JButton btnDeleteExternelCoreMod; + private javax.swing.JButton btnDeleteExternelMod; + private javax.swing.JButton btnDeleteOP; + private javax.swing.JButton btnDeletePlugins; + private javax.swing.JButton btnDeleteWhite; + private javax.swing.JButton btnDownloadCraftbukkit; + private javax.swing.JButton btnDownloadMCPC; + private javax.swing.JButton btnInstallMCPC; + private javax.swing.JButton btnLaunch; + private javax.swing.JButton btnManageCoreMods; + private javax.swing.JButton btnManageExtMods; + private javax.swing.JButton btnManagePlugins; + private javax.swing.JButton btnMinecraftServerDownload; + private javax.swing.JButton btnNewTask; + private javax.swing.JButton btnRefreshDownloads; + private javax.swing.JButton btnRefreshInfos; + private javax.swing.JButton btnRefreshPlayers; + private javax.swing.JButton btnRefreshReports; + private javax.swing.JButton btnRefreshWorlds; + private javax.swing.JButton btnRestart; + private javax.swing.JButton btnRestoreBackup; + private javax.swing.JButton btnSave; + private javax.swing.JButton btnSaveCoreMod; + private javax.swing.JButton btnSaveExtMod; + private javax.swing.JButton btnSavePlugins; + private javax.swing.JButton btnSaveWorld; + private javax.swing.JButton btnSendCommand; + private javax.swing.JButton btnSetBackgroundPath; + private javax.swing.JButton btnSetJar; + private javax.swing.JButton btnShowInfo; + private javax.swing.JButton btnShowPluginInfo; + private javax.swing.JButton btnShowReport; + private javax.swing.JButton btnShutdown; + private javax.swing.JButton btnStop; + private javax.swing.JButton btnUnban; + private javax.swing.JComboBox cboBackupTypes; + private javax.swing.JComboBox cboBukkitType; + private javax.swing.JComboBox cboCategory; + private javax.swing.JComboBox cboCauldronMinecraft; + private javax.swing.JComboBox cboDifficulty; + private javax.swing.JComboBox cboGameMode; + private javax.swing.JComboBox cboTimeType; + private javax.swing.JComboBox cboTimerTask; + private javax.swing.JComboBox cboWorldType; + private javax.swing.JCheckBox chkAllowFlight; + private javax.swing.JCheckBox chkAllowNether; + private javax.swing.JCheckBox chkEnableMonsters; + private javax.swing.JCheckBox chkEnableNPCs; + private javax.swing.JCheckBox chkEnalbleAnimals; + private javax.swing.JCheckBox chkGenerateStructures; + private javax.swing.JCheckBox chkOnlineMode; + private javax.swing.JCheckBox chkPVP; + private javax.swing.JCheckBox chkWhiteList; + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton10; + private javax.swing.JButton jButton11; + private javax.swing.JButton jButton2; + private javax.swing.JButton jButton3; + private javax.swing.JButton jButton4; + private javax.swing.JButton jButton5; + private javax.swing.JButton jButton6; + private javax.swing.JButton jButton7; + private javax.swing.JButton jButton8; + private javax.swing.JButton jButton9; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel13; + private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel15; + private javax.swing.JLabel jLabel16; + private javax.swing.JLabel jLabel17; + private javax.swing.JLabel jLabel18; + private javax.swing.JLabel jLabel19; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel20; + private javax.swing.JLabel jLabel21; + private javax.swing.JLabel jLabel22; + private javax.swing.JLabel jLabel23; + private javax.swing.JLabel jLabel24; + private javax.swing.JLabel jLabel25; + private javax.swing.JLabel jLabel26; + private javax.swing.JLabel jLabel27; + private javax.swing.JLabel jLabel28; + private javax.swing.JLabel jLabel29; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel30; + private javax.swing.JLabel jLabel31; + private javax.swing.JLabel jLabel32; + private javax.swing.JLabel jLabel33; + private javax.swing.JLabel jLabel34; + private javax.swing.JLabel jLabel35; + private javax.swing.JLabel jLabel36; + private javax.swing.JLabel jLabel37; + private javax.swing.JLabel jLabel38; + private javax.swing.JLabel jLabel39; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel40; + private javax.swing.JLabel jLabel41; + private javax.swing.JLabel jLabel42; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel10; + private javax.swing.JPanel jPanel11; + private javax.swing.JPanel jPanel12; + private javax.swing.JPanel jPanel13; + private javax.swing.JPanel jPanel14; + private javax.swing.JPanel jPanel15; + private javax.swing.JPanel jPanel16; + private javax.swing.JPanel jPanel17; + private javax.swing.JPanel jPanel18; + private javax.swing.JPanel jPanel19; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel20; + private javax.swing.JPanel jPanel21; + private javax.swing.JPanel jPanel22; + private javax.swing.JPanel jPanel23; + private javax.swing.JPanel jPanel24; + private javax.swing.JPanel jPanel25; + private javax.swing.JPanel jPanel26; + private javax.swing.JPanel jPanel27; + private javax.swing.JPanel jPanel28; + private javax.swing.JPanel jPanel29; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel30; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel5; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel7; + private javax.swing.JPanel jPanel8; + private javax.swing.JPanel jPanel9; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JScrollPane jScrollPane10; + private javax.swing.JScrollPane jScrollPane11; + private javax.swing.JScrollPane jScrollPane12; + private javax.swing.JScrollPane jScrollPane13; + private javax.swing.JScrollPane jScrollPane14; + private javax.swing.JScrollPane jScrollPane15; + private javax.swing.JScrollPane jScrollPane16; + private javax.swing.JScrollPane jScrollPane17; + private javax.swing.JScrollPane jScrollPane18; + private javax.swing.JScrollPane jScrollPane19; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JScrollPane jScrollPane3; + private javax.swing.JScrollPane jScrollPane4; + private javax.swing.JScrollPane jScrollPane5; + private javax.swing.JScrollPane jScrollPane6; + private javax.swing.JScrollPane jScrollPane7; + private javax.swing.JScrollPane jScrollPane8; + private javax.swing.JScrollPane jScrollPane9; + private javax.swing.JTabbedPane jTabbedPane1; + private javax.swing.JTabbedPane jTabbedPane2; + private javax.swing.JTabbedPane jTabbedPane3; + private javax.swing.JTabbedPane jTabbedPane4; + private javax.swing.JTabbedPane jTabbedPane5; + private javax.swing.JTabbedPane jTabbedPane6; + private javax.swing.JLabel lblFreeMemory; + private javax.swing.JLabel lblIPAddress; + private javax.swing.JLabel lblMaxMemory; + private javax.swing.JLabel lblOSName; + private javax.swing.JLabel lblPlayers; + private javax.swing.JLabel lblTotalMemory; + private javax.swing.JLabel lblTotalMemorySize; + private javax.swing.JLabel lblTotalThread; + private javax.swing.JLabel lblUsedMemory; + private javax.swing.JTable lstBackups; + private javax.swing.JList lstBanned; + private javax.swing.JTable lstBukkitPlugins; + private javax.swing.JTable lstCoreMods; + private javax.swing.JTable lstCraftbukkit; + private javax.swing.JTable lstDownloads; + private javax.swing.JTable lstExternalMods; + private javax.swing.JTable lstInfos; + private javax.swing.JTable lstMCPC; + private javax.swing.JList lstOP; + private javax.swing.JList lstPlayers; + private javax.swing.JTable lstPlugins; + private javax.swing.JButton lstRefreshCraftbukkit; + private javax.swing.JButton lstRefreshMCPC; + private javax.swing.JList lstReports; + private javax.swing.JTable lstSchedules; + private javax.swing.JList lstWhiteList; + private javax.swing.JTable lstWorlds; + private javax.swing.JProgressBar pgsCPURatio; + private javax.swing.JProgressBar pgsMemoryRatio; + private javax.swing.JTextField txtBackgroundPath; + private javax.swing.JTextField txtBanName; + private javax.swing.JTextField txtCommand; + private javax.swing.JTextArea txtCrashReport; + private javax.swing.JTextArea txtInfo; + private javax.swing.JTextField txtJavaArgs; + private javax.swing.JTextField txtJavaDir; + private javax.swing.JTextArea txtMain; + private javax.swing.JTextField txtMainJar; + private javax.swing.JSpinner txtMaxBuildHeight; + private javax.swing.JTextField txtMaxMemory; + private javax.swing.JSpinner txtMaxPlayer; + private javax.swing.JTextField txtOPName; + private javax.swing.JTextField txtServerGeneratorSettings; + private javax.swing.JTextField txtServerMOTD; + private javax.swing.JTextField txtServerName; + private javax.swing.JSpinner txtServerPort; + private javax.swing.JTextField txtTimerTaskContent; + private javax.swing.JTextField txtTimerTaskPeriod; + private javax.swing.JSpinner txtViewDistance; + private javax.swing.JTextField txtWhiteName; + private javax.swing.JTextField txtWorldName; + private javax.swing.JTextField txtWorldSeed; + // End of variables declaration//GEN-END:variables + +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.form new file mode 100644 index 000000000..125fa86c0 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.form @@ -0,0 +1,226 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + <SyntheticProperty name="generateCenter" type="boolean" value="false"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + </AuxValues> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane1" alignment="0" pref="368" max="32767" attributes="0"/> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel1" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblName" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel3" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblDescription" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel5" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblAuthors" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel6" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblCategories" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel9" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblStatus" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Component id="jLabel11" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblWebsite" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="32767" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="jButton1" alignment="1" max="32767" attributes="0"/> + <Component id="jButton2" alignment="1" max="32767" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblName" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblDescription" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblAuthors" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel6" alignment="3" min="-2" pref="11" max="-2" attributes="0"/> + <Component id="lblCategories" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel9" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblStatus" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel11" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblWebsite" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <Group type="102" attributes="0"> + <Component id="jButton1" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jButton2" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane1" pref="159" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="lblAuthors"> + <Properties> + <Property name="text" type="java.lang.String" value="jLabel7"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel3"> + <Properties> + <Property name="text" type="java.lang.String" value="描述"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel6"> + <Properties> + <Property name="text" type="java.lang.String" value="分类"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel9"> + <Properties> + <Property name="text" type="java.lang.String" value="状态"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblCategories"> + <Properties> + <Property name="text" type="java.lang.String" value="jLabel8"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel11"> + <Properties> + <Property name="text" type="java.lang.String" value="网址"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblStatus"> + <Properties> + <Property name="text" type="java.lang.String" value="jLabel10"/> + </Properties> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="lstPluginInfo"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="5" rowCount="0"> + <Column editable="true" title="日期" type="java.lang.String"/> + <Column editable="true" title="版本" type="java.lang.String"/> + <Column editable="true" title="文件" type="java.lang.String"/> + <Column editable="true" title="Bukkit版本" type="java.lang.String"/> + <Column editable="true" title="类型" type="java.lang.String"/> + </Table> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JLabel" name="lblWebsite"> + <Properties> + <Property name="text" type="java.lang.String" value="jLabel12"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="jButton1"> + <Properties> + <Property name="text" type="java.lang.String" value="安装选中"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="jButton2"> + <Properties> + <Property name="text" type="java.lang.String" value="关闭窗口"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JLabel" name="lblDescription"> + <Properties> + <Property name="text" type="java.lang.String" value="jLabel4"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel1"> + <Properties> + <Property name="text" type="java.lang.String" value="名字"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel5"> + <Properties> + <Property name="text" type="java.lang.String" value="作者"/> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblName"> + <Properties> + <Property name="text" type="java.lang.String" value="jLabel2"/> + </Properties> + </Component> + </SubComponents> +</Form> diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java new file mode 100644 index 000000000..dba992ef8 --- /dev/null +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java @@ -0,0 +1,247 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.svrmgr.views; + +import java.io.File; +import javax.swing.table.DefaultTableModel; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginInfo; +import org.jackhuang.hellominecraft.svrmgr.cbplugins.PluginVersion; +import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; + +/** + * + * @author hyh + */ +public class PluginInfoDialog extends javax.swing.JDialog { + + PluginInfo pi; + + /** + * Creates new form PluginInfoDialog + */ + public PluginInfoDialog(java.awt.Frame parent, boolean modal, PluginInfo pi) { + super(parent, modal); + initComponents(); + this.pi = pi; + lblName.setText(pi.plugin_name); + lblDescription.setText(pi.description); + lblStatus.setText(pi.stage); + lblAuthors.setText(StrUtils.parseParams("", pi.authors.toArray(), ", ")); + lblCategories.setText(StrUtils.parseParams("", pi.categories.toArray(), ", ")); + lblWebsite.setText(pi.link); + //SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DefaultTableModel model = (DefaultTableModel) lstPluginInfo.getModel(); + for (PluginVersion v : pi.versions) { + model.addRow(new Object[]{ + v.date, v.version, v.filename, StrUtils.parseParams("", v.game_versions.toArray(), ", "), + v.type + }); + } + lstPluginInfo.updateUI(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + lblAuthors = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jLabel9 = new javax.swing.JLabel(); + lblCategories = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + lblStatus = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + lstPluginInfo = new javax.swing.JTable(); + lblWebsite = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + jButton2 = new javax.swing.JButton(); + lblDescription = new javax.swing.JLabel(); + jLabel1 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + lblName = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + lblAuthors.setText("jLabel7"); + + jLabel3.setText("描述"); + + jLabel6.setText("分类"); + + jLabel9.setText("状态"); + + lblCategories.setText("jLabel8"); + + jLabel11.setText("网址"); + + lblStatus.setText("jLabel10"); + + lstPluginInfo.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "日期", "版本", "文件", "Bukkit版本", "类型" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + }); + jScrollPane1.setViewportView(lstPluginInfo); + + lblWebsite.setText("jLabel12"); + + jButton1.setText("安装选中"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jButton2.setText("关闭窗口"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + lblDescription.setText("jLabel4"); + + jLabel1.setText("名字"); + + jLabel5.setText("作者"); + + lblName.setText("jLabel2"); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 368, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblName)) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblDescription)) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel5) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblAuthors)) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel6) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblCategories)) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel9) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblStatus)) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblWebsite))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(lblName)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel3) + .addComponent(lblDescription)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel5) + .addComponent(lblAuthors)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 11, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblCategories)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel9) + .addComponent(lblStatus)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel11) + .addComponent(lblWebsite))) + .addGroup(layout.createSequentialGroup() + .addComponent(jButton1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton2))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .addContainerGap()) + ); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + this.dispose(); + }//GEN-LAST:event_jButton2ActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + int index = lstPluginInfo.getSelectedRow(); + if (index == -1) { + return; + } + String url = pi.versions.get(index).download; + TaskWindow.getInstance() + .addTask(new FileDownloadTask(url, new File(Utilities.getGameDir() + "plugins" + + File.separator + pi.versions.get(index).filename))) + .start(); + }//GEN-LAST:event_jButton1ActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel9; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JLabel lblAuthors; + private javax.swing.JLabel lblCategories; + private javax.swing.JLabel lblDescription; + private javax.swing.JLabel lblName; + private javax.swing.JLabel lblStatus; + private javax.swing.JLabel lblWebsite; + private javax.swing.JTable lstPluginInfo; + // End of variables declaration//GEN-END:variables +} diff --git a/HMCSM/src/main/resources/background.jpg b/HMCSM/src/main/resources/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e8d7838544d2532bd10550276d14437a698de2f GIT binary patch literal 35491 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�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 OVo9QkD?xKhx&PVl>z}g# literal 0 HcmV?d00001 diff --git a/HMCSM/src/main/resources/icon.icns b/HMCSM/src/main/resources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..dc329d24ba3c08a97dcfe1883bb97ea43bba26f3 GIT binary patch literal 114786 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%0A8+=^gSPowy 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 quQ`ZQ`DN?P?U2mqsqEB!s%bfY~RDIcT0@k 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 literal 0 HcmV?d00001 diff --git a/HMCSM/src/main/resources/icon.png b/HMCSM/src/main/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..25f3cf6c80eeddc17c9e24683ac340ea142427a7 GIT binary patch literal 5362 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 Qng9R*07*qoM6N<$f=Q}6H2?qr literal 0 HcmV?d00001 diff --git a/HMCSM/src/main/resources/index.html b/HMCSM/src/main/resources/index.html new file mode 100644 index 000000000..835f442b8 --- /dev/null +++ b/HMCSM/src/main/resources/index.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<!-- +To change this license header, choose License Headers in Project Properties. +To change this template file, choose Tools | Templates +and open the template in the editor. +--> +<html> + <head> + <title>Hello Minecraft! 开服器 + + + + + + + diff --git a/HMCSM/src/main/resources/log4j2.xml b/HMCSM/src/main/resources/log4j2.xml new file mode 100644 index 000000000..a2f8833ab --- /dev/null +++ b/HMCSM/src/main/resources/log4j2.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow.properties b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow.properties new file mode 100644 index 000000000..80b3539a9 --- /dev/null +++ b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow.properties @@ -0,0 +1,48 @@ +\u540d\u79f0=\u540d\u79f0 +\u4fdd\u5b58\u5931\u8d25=\u4fdd\u5b58\u5931\u8d25 +\u4fdd\u5b58\u538b\u7f29\u5305\u5230=\u4fdd\u5b58\u538b\u7f29\u5305\u5230 +\u9009\u62e9\u6750\u8d28\u5305=\u9009\u62e9\u6750\u8d28\u5305 +\u9009\u62e9\u8d44\u6e90\u5305=\u9009\u62e9\u8d44\u6e90\u5305 +\u9009\u62e9\u5e93/\u6a21\u7ec4=\u9009\u62e9\u5e93/\u6a21\u7ec4 +\u6ca1\u6709\u9009\u4e2d\u4efb\u4f55\u4e00\u4e2a\u5e93/\u6a21\u7ec4\u3002=\u6ca1\u6709\u9009\u4e2d\u4efb\u4f55\u4e00\u4e2a\u5e93/\u6a21\u7ec4\u3002 +\u5220\u9664\u5931\u8d25=\u5220\u9664\u5931\u8d25 +\u6dfb\u52a0\u5931\u8d25=\u6dfb\u52a0\u5931\u8d25 +\u9009\u62e9\u6a21\u7ec4=\u9009\u62e9\u6a21\u7ec4 +\u7248\u672c\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a=\u7248\u672c\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a +\u5907\u4efd\u5230=\u5907\u4efd\u5230 +\u662fCOREODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7ec4=\u662fCoremods\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7ec4 +\u662fMODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6a21\u7ec4=\u662fMods\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6a21\u7ec4 +\u901a\u5e38\u662f\u6a21\u7ec4=\u901a\u5e38\u662f\u6a21\u7ec4 +\u4e0b\u79fb=\u4e0b\u79fb +\u4e0a\u79fb=\u4e0a\u79fb +\u5220\u9664=\u5220\u9664 +\u589e\u52a0=\u589e\u52a0 +\u901a\u5e38\u662fFORGE,MODLOADER\u4ee5\u53caMINECRAFT\u6240\u4f9d\u8d56\u7684\u5e93=\u901a\u5e38\u662fForge,Modloader\u4ee5\u53caMinecraft\u6240\u4f9d\u8d56\u7684\u5e93 +\u9644\u52a0\u542f\u52a8\u53c2\u6570=\u9644\u52a0\u542f\u52a8\u53c2\u6570 +\u81ea\u5b9a\u4e49\u5e93\u6587\u4ef6\u5939(LIBRARIES\u6587\u4ef6\u5939)=\u81ea\u5b9a\u4e49\u5e93\u6587\u4ef6\u5939(libraries\u6587\u4ef6\u5939) +\u4e3b\u7c7b=\u4e3b\u7c7b +\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u5939(ASSETS\u6587\u4ef6\u5939)=\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u5939(assets\u6587\u4ef6\u5939) +\u624b\u52a8\u8bbe\u7f6e=\u624b\u52a8\u8bbe\u7f6e +\u4e0d\u5f3a\u5236=\u4e0d\u5f3a\u5236 +32\u4f4d=32\u4f4d +64\u4f4d=64\u4f4d +\u542f\u52a8\u6a21\u5f0f=\u542f\u52a8\u6a21\u5f0f +\u73a9\u5bb6\u540d=\u73a9\u5bb6\u540d +1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5bfc\u5165\u7684\u65e7\u7248\u672c=1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5bfc\u5165\u7684\u65e7\u7248\u672c +\u6700\u5927\u5185\u5b58=\u6700\u5927\u5185\u5b58 +JAVA\u865a\u62df\u673a\u53c2\u6570=Java\u865a\u62df\u673a\u53c2\u6570 +JAVA\u8def\u5f84=Java\u8def\u5f84 +\u5168\u5c4f=\u5168\u5c4f +\u5206\u8fa8\u7387=\u5206\u8fa8\u7387 +\u6e38\u620f\u8def\u5f84=\u6e38\u620f\u8def\u5f84 +\u4ee5\u4e0b\u8bbe\u7f6e\u5b57\u6bb5\u4e3a\u7a7a\u4ee3\u8868\u7740\u4f7f\u7528\u9ed8\u8ba4\u8bbe\u7f6e=\u9664\u540d\u79f0\u4ee5\u4e0b\u5b57\u6bb5\u53ef\u4ee5\u4e0d\u586b +\u53d6\u6d88=\u53d6\u6d88 +\u786e\u5b9a=\u786e\u5b9a +game_download=\u6e38\u620f\u4e0b\u8f7d +public_settings=\u5168\u5c40\u8bbe\u7f6e +invalid=\u65e0\u6548\u7684 +invalid_jar=\u65e0\u6548\u7684jar\u5305 +not_a_file=\u4e0d\u662f\u6587\u4ef6 +not_found=\u627e\u4e0d\u5230minecraft.jar +not_readable=minecraft.jar\u4e0d\u53ef\u8bfb +modified=(\u4fee\u6539\u7684!) \ No newline at end of file diff --git a/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_en_US.properties b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_en_US.properties new file mode 100644 index 000000000..9710f3630 --- /dev/null +++ b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_en_US.properties @@ -0,0 +1,46 @@ +\u540d\u79f0=Name +\u4fdd\u5b58\u5931\u8d25=Failed to save +\u4fdd\u5b58\u538b\u7f29\u5305\u5230=Save zip file to +\u9009\u62e9\u6750\u8d28\u5305=Choose texture pack +\u9009\u62e9\u8d44\u6e90\u5305=Choose resource pack +\u9009\u62e9\u5e93/\u6a21\u7ec4=Choose library/mod +\u6ca1\u6709\u9009\u4e2d\u4efb\u4f55\u4e00\u4e2a\u5e93/\u6a21\u7ec4\u3002=Not selected any library/mod. +\u5220\u9664\u5931\u8d25=Failed to delete +\u6dfb\u52a0\u5931\u8d25=Failed to add +\u9009\u62e9\u6a21\u7ec4=Choose mod +\u7248\u672c\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a=Version name cannot be empty. +\u5907\u4efd\u5230=Backup to +\u662fCOREODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7ec4=They're all the core mods in coremods folder. +\u662fMODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6a21\u7ec4=They're all the mods in mods folder. +\u901a\u5e38\u662f\u6a21\u7ec4=Usually mods. +\u4e0b\u79fb=Down +\u4e0a\u79fb=Up +\u5220\u9664=Delete +\u589e\u52a0=Add +\u901a\u5e38\u662fFORGE,MODLOADER\u4ee5\u53caMINECRAFT\u6240\u4f9d\u8d56\u7684\u5e93=They're usually Forge, Modloader and libraries. +\u9644\u52a0\u542f\u52a8\u53c2\u6570=Addition launch arguments +\u81ea\u5b9a\u4e49\u5e93\u6587\u4ef6\u5939(LIBRARIES\u6587\u4ef6\u5939)=Custom libraries folder +\u4e3b\u7c7b=Main class +\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u5939(ASSETS\u6587\u4ef6\u5939)=Custom assets folder +\u624b\u52a8\u8bbe\u7f6e=manually set +\u4e0d\u5f3a\u5236=Default +32\u4f4d=32\u4f4d +64\u4f4d=64\u4f4d +\u542f\u52a8\u6a21\u5f0f=Launch mode +\u73a9\u5bb6\u540d=Player name +1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5bfc\u5165\u7684\u65e7\u7248\u672c=Version 1.6 and above, and imported the old version +\u6700\u5927\u5185\u5b58=Max memory +JAVA\u865a\u62df\u673a\u53c2\u6570=JVM arguments +JAVA\u8def\u5f84=Java path +\u5168\u5c4f=Fullscreen +\u5206\u8fa8\u7387=Resolution +\u6e38\u620f\u8def\u5f84=Game dir +\u4ee5\u4e0b\u8bbe\u7f6e\u5b57\u6bb5\u4e3a\u7a7a\u4ee3\u8868\u7740\u4f7f\u7528\u9ed8\u8ba4\u8bbe\u7f6e=These field could not fill except the name field. +\u53d6\u6d88=Cancel +\u786e\u5b9a=Ok +invalid=invalid +invalid_jar=invalid jar +not_a_file=not a file +not_found=not found +not_readable=not readable +modified=(modified!) \ No newline at end of file diff --git a/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_CN.properties b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_CN.properties new file mode 100644 index 000000000..80b3539a9 --- /dev/null +++ b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_CN.properties @@ -0,0 +1,48 @@ +\u540d\u79f0=\u540d\u79f0 +\u4fdd\u5b58\u5931\u8d25=\u4fdd\u5b58\u5931\u8d25 +\u4fdd\u5b58\u538b\u7f29\u5305\u5230=\u4fdd\u5b58\u538b\u7f29\u5305\u5230 +\u9009\u62e9\u6750\u8d28\u5305=\u9009\u62e9\u6750\u8d28\u5305 +\u9009\u62e9\u8d44\u6e90\u5305=\u9009\u62e9\u8d44\u6e90\u5305 +\u9009\u62e9\u5e93/\u6a21\u7ec4=\u9009\u62e9\u5e93/\u6a21\u7ec4 +\u6ca1\u6709\u9009\u4e2d\u4efb\u4f55\u4e00\u4e2a\u5e93/\u6a21\u7ec4\u3002=\u6ca1\u6709\u9009\u4e2d\u4efb\u4f55\u4e00\u4e2a\u5e93/\u6a21\u7ec4\u3002 +\u5220\u9664\u5931\u8d25=\u5220\u9664\u5931\u8d25 +\u6dfb\u52a0\u5931\u8d25=\u6dfb\u52a0\u5931\u8d25 +\u9009\u62e9\u6a21\u7ec4=\u9009\u62e9\u6a21\u7ec4 +\u7248\u672c\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a=\u7248\u672c\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a +\u5907\u4efd\u5230=\u5907\u4efd\u5230 +\u662fCOREODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7ec4=\u662fCoremods\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7ec4 +\u662fMODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6a21\u7ec4=\u662fMods\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6a21\u7ec4 +\u901a\u5e38\u662f\u6a21\u7ec4=\u901a\u5e38\u662f\u6a21\u7ec4 +\u4e0b\u79fb=\u4e0b\u79fb +\u4e0a\u79fb=\u4e0a\u79fb +\u5220\u9664=\u5220\u9664 +\u589e\u52a0=\u589e\u52a0 +\u901a\u5e38\u662fFORGE,MODLOADER\u4ee5\u53caMINECRAFT\u6240\u4f9d\u8d56\u7684\u5e93=\u901a\u5e38\u662fForge,Modloader\u4ee5\u53caMinecraft\u6240\u4f9d\u8d56\u7684\u5e93 +\u9644\u52a0\u542f\u52a8\u53c2\u6570=\u9644\u52a0\u542f\u52a8\u53c2\u6570 +\u81ea\u5b9a\u4e49\u5e93\u6587\u4ef6\u5939(LIBRARIES\u6587\u4ef6\u5939)=\u81ea\u5b9a\u4e49\u5e93\u6587\u4ef6\u5939(libraries\u6587\u4ef6\u5939) +\u4e3b\u7c7b=\u4e3b\u7c7b +\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u5939(ASSETS\u6587\u4ef6\u5939)=\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u5939(assets\u6587\u4ef6\u5939) +\u624b\u52a8\u8bbe\u7f6e=\u624b\u52a8\u8bbe\u7f6e +\u4e0d\u5f3a\u5236=\u4e0d\u5f3a\u5236 +32\u4f4d=32\u4f4d +64\u4f4d=64\u4f4d +\u542f\u52a8\u6a21\u5f0f=\u542f\u52a8\u6a21\u5f0f +\u73a9\u5bb6\u540d=\u73a9\u5bb6\u540d +1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5bfc\u5165\u7684\u65e7\u7248\u672c=1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5bfc\u5165\u7684\u65e7\u7248\u672c +\u6700\u5927\u5185\u5b58=\u6700\u5927\u5185\u5b58 +JAVA\u865a\u62df\u673a\u53c2\u6570=Java\u865a\u62df\u673a\u53c2\u6570 +JAVA\u8def\u5f84=Java\u8def\u5f84 +\u5168\u5c4f=\u5168\u5c4f +\u5206\u8fa8\u7387=\u5206\u8fa8\u7387 +\u6e38\u620f\u8def\u5f84=\u6e38\u620f\u8def\u5f84 +\u4ee5\u4e0b\u8bbe\u7f6e\u5b57\u6bb5\u4e3a\u7a7a\u4ee3\u8868\u7740\u4f7f\u7528\u9ed8\u8ba4\u8bbe\u7f6e=\u9664\u540d\u79f0\u4ee5\u4e0b\u5b57\u6bb5\u53ef\u4ee5\u4e0d\u586b +\u53d6\u6d88=\u53d6\u6d88 +\u786e\u5b9a=\u786e\u5b9a +game_download=\u6e38\u620f\u4e0b\u8f7d +public_settings=\u5168\u5c40\u8bbe\u7f6e +invalid=\u65e0\u6548\u7684 +invalid_jar=\u65e0\u6548\u7684jar\u5305 +not_a_file=\u4e0d\u662f\u6587\u4ef6 +not_found=\u627e\u4e0d\u5230minecraft.jar +not_readable=minecraft.jar\u4e0d\u53ef\u8bfb +modified=(\u4fee\u6539\u7684!) \ No newline at end of file diff --git a/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_TW.properties b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_TW.properties new file mode 100644 index 000000000..51fe9b2dc --- /dev/null +++ b/HMCSM/src/main/resources/org/jackhuang/hellominecraftlauncher/VersionSettingsWindow_zh_TW.properties @@ -0,0 +1,48 @@ +\u540d\u79f0=\u540d\u7a31 +\u4fdd\u5b58\u5931\u8d25=\u4fdd\u5b58\u5931\u6557 +\u4fdd\u5b58\u538b\u7f29\u5305\u5230=\u4fdd\u5b58\u58d3\u7e2e\u5305\u5230 +\u9009\u62e9\u6750\u8d28\u5305=\u9078\u64c7\u6750\u8cea\u5305 +\u9009\u62e9\u8d44\u6e90\u5305=\u9078\u64c7\u8cc7\u6e90\u5305 +\u9009\u62e9\u5e93/\u6a21\u7ec4=\u9078\u64c7\u5eab/\u6a21\u7d44 +\u6ca1\u6709\u9009\u4e2d\u4efb\u4f55\u4e00\u4e2a\u5e93/\u6a21\u7ec4\u3002=\u6c92\u6709\u9078\u4e2d\u4efb\u4f55\u4e00\u500b\u5eab/\u6a21\u7d44\u3002 +\u5220\u9664\u5931\u8d25=\u522a\u9664\u5931\u6557 +\u6dfb\u52a0\u5931\u8d25=\u6dfb\u52a0\u5931\u6557 +\u9009\u62e9\u6a21\u7ec4=\u9078\u64c7\u6a21\u7d44 +\u7248\u672c\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a=\u7248\u672c\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a +\u5907\u4efd\u5230=\u5099\u4efd\u5230 +\u662fCOREODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7ec4=\u662fCoremods\u6587\u4ef6\u593e\u5167\u7684\u6240\u6709\u6838\u5fc3\u6a21\u7d44 +\u662fMODS\u6587\u4ef6\u5939\u5185\u7684\u6240\u6709\u6a21\u7ec4=\u662fMods\u6587\u4ef6\u593e\u5167\u7684\u6240\u6709\u6a21\u7d44 +\u901a\u5e38\u662f\u6a21\u7ec4=\u901a\u5e38\u662f\u6a21\u7d44 +\u4e0b\u79fb=\u4e0b\u79fb +\u4e0a\u79fb=\u4e0a\u79fb +\u5220\u9664=\u522a\u9664 +\u589e\u52a0=\u589e\u52a0 +\u901a\u5e38\u662fFORGE,MODLOADER\u4ee5\u53caMINECRAFT\u6240\u4f9d\u8d56\u7684\u5e93=\u901a\u5e38\u662fForge,Modloader\u4ee5\u53caMinecraft\u6240\u4f9d\u8cf4\u7684\u5eab +\u9644\u52a0\u542f\u52a8\u53c2\u6570=\u9644\u52a0\u555f\u52d5\u53c3\u6578 +\u81ea\u5b9a\u4e49\u5e93\u6587\u4ef6\u5939(LIBRARIES\u6587\u4ef6\u5939)=\u81ea\u5b9a\u7fa9\u5eab\u8cc7\u6599\u593e(libraries\u8cc7\u6599\u593e) +\u4e3b\u7c7b=\u4e3b\u7c7b +\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u5939(ASSETS\u6587\u4ef6\u5939)=\u81ea\u5b9a\u7fa9\u8cc7\u6e90\u8cc7\u6599\u593e(assets\u8cc7\u6599\u593e) +\u624b\u52a8\u8bbe\u7f6e=\u624b\u52d5\u8a2d\u5b9a +\u4e0d\u5f3a\u5236=\u4e0d\u5f37\u5236 +32\u4f4d=32\u4f4d +64\u4f4d=64\u4f4d +\u542f\u52a8\u6a21\u5f0f=\u555f\u52d5\u6a21\u5f0f +\u73a9\u5bb6\u540d=\u73a9\u5bb6\u540d +1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5bfc\u5165\u7684\u65e7\u7248\u672c=1.6\u53ca\u4ee5\u4e0a\u7248\u672c\u4ee5\u53ca\u5c0e\u5165\u7684\u820a\u7248\u672c +\u6700\u5927\u5185\u5b58=\u6700\u5927\u5167\u5b58 +JAVA\u865a\u62df\u673a\u53c2\u6570=Java\u865b\u64ec\u6a5f\u53c3\u6578 +JAVA\u8def\u5f84=Java\u8def\u5f91 +\u5168\u5c4f=\u5168\u5c4f +\u5206\u8fa8\u7387=\u5206\u8fa8\u7387 +\u6e38\u620f\u8def\u5f84=\u904a\u6232\u8def\u5f91 +\u4ee5\u4e0b\u8bbe\u7f6e\u5b57\u6bb5\u4e3a\u7a7a\u4ee3\u8868\u7740\u4f7f\u7528\u9ed8\u8ba4\u8bbe\u7f6e=\u9664\u540d\u7a31\u4ee5\u4e0b\u5b57\u6bb5\u53ef\u4ee5\u4e0d\u586b +\u53d6\u6d88=\u53d6\u6d88 +\u786e\u5b9a=\u78ba\u5b9a +game_download=\u904a\u6232\u4e0b\u8f09 +public_settings=\u5168\u5c40\u8a2d\u5b9a +invalid=\u7121\u6548\u7684 +invalid_jar=\u7121\u6548\u7684jar\u5305 +not_a_file=\u4e0d\u662f\u6587\u4ef6 +not_found=\u627e\u4e0d\u5230minecraft.jar +not_readable=minecraft.jar\u4e0d\u53ef\u8b80 +modified=(\u4fee\u6539\u7684!) \ No newline at end of file diff --git a/MetroLookAndFeel/build.gradle b/MetroLookAndFeel/build.gradle new file mode 100644 index 000000000..4b8a15165 --- /dev/null +++ b/MetroLookAndFeel/build.gradle @@ -0,0 +1,19 @@ +apply plugin: 'me.tatarka.retrolambda' + +if (!hasProperty('mainClass')) { + ext.mainClass = '' +} + +buildscript { + repositories { + mavenCentral(); + + dependencies { + classpath 'me.tatarka:gradle-retrolambda:3.1.0' + } + } +} + +retrolambda { + javaVersion = JavaVersion.VERSION_1_7 +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/GraphicsUtils.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/GraphicsUtils.java new file mode 100644 index 000000000..a413163b1 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/GraphicsUtils.java @@ -0,0 +1,203 @@ +package org.jackhuang.hellominecraft.lookandfeel; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Toolkit; +import java.awt.image.BufferedImage; +import java.util.Map; +import javax.imageio.ImageIO; +import javax.swing.plaf.synth.SynthContext; +import javax.swing.plaf.synth.SynthGraphicsUtils; + +/** + * NimbusGraphicsUtils - extends SynthGraphicsUtils to force all Synth painted + * text to be antialiased and provides some static helper methods. + * + * @author Created by Jasper Potts (Jan 4, 2007) + * @version 1.0 + */ +public class GraphicsUtils extends SynthGraphicsUtils { + + private Map desktopHints; + + /** + * Get rendering hints from a Graphics instance. "hintsToSave" is a Map of + * RenderingHint key-values. For each hint key present in that map, the + * value of that hint is obtained from the Graphics and stored as the value + * for the key in savedHints. + * + * @param g2d the graphics surface + * @param hintsToSave the list of rendering hints to set on the graphics + * @param savedHints a set where to save the previous rendering hints, might + * be null + * @return the previous set of rendering hints + */ + public static RenderingHints getRenderingHints(Graphics2D g2d, + Map hintsToSave, + RenderingHints savedHints) { + if (savedHints == null) { + savedHints = new RenderingHints(null); + } else { + savedHints.clear(); + } + if (hintsToSave.isEmpty()) { + return savedHints; + } + /* RenderingHints.keySet() returns Set */ + for (Object o : hintsToSave.keySet()) { + RenderingHints.Key key = (RenderingHints.Key) o; + Object value = g2d.getRenderingHint(key); + savedHints.put(key, value); + } + return savedHints; + } + + /** + * Overrides paintText in SynthGraphicsUtils to force all Synth painted text + * to be antialiased + */ + @Override + public void paintText(SynthContext ss, Graphics g, String text, int x, int y, int mnemonicIndex) { + Graphics2D g2 = (Graphics2D) g; + + // XXX: In Java SE 6, Synth already uses the desktop hints, this code should just check whether java.version < 1.6 + if (desktopHints == null) { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + desktopHints = (Map) (toolkit.getDesktopProperty("awt.font.desktophints")); + } + + Object oldAA = null; + RenderingHints oldHints = null; + + if (desktopHints != null) { + oldHints = getRenderingHints(g2, desktopHints, null); + g2.addRenderingHints(desktopHints); + } else { + oldAA = g2.getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING); + g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + } + + super.paintText(ss, g, text, x, y, mnemonicIndex); + + if (oldHints != null) { + g2.addRenderingHints(oldHints); + } else if (oldAA != null) { + g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + oldAA); + } + } + + /** + * Load an image using ImageIO from resource in + * org.jdesktop.swingx.plaf.nimbus.images. Catches and prints all Exceptions + * so that it can safely be used in a static context. + * + * @param imgName The name of the image to load, eg. "border.png" + * @return The loaded image + */ + public static BufferedImage loadImage(String imgName) { + try { + return ImageIO.read(GraphicsUtils.class.getClassLoader().getResource("org/jackhuang/hellominecraft/lookandfeel/images/" + imgName)); + } catch (Exception e) { + System.err.println("Error loading image \"org/jackhuang/hellominecraft/lookandfeel/images/" + imgName + "\""); + e.printStackTrace(); + } + return null; + } + + /** + * Get a Color object from a web color string of the form "FF00AB" or + * "#FF00AB". + * + * @param c The color string + * @return The Color described + */ + public static Color getWebColor(String c) { + if (c.startsWith("#")) { + c = c.substring(1); + } + return new Color( + Integer.parseInt(c.substring(0, 2), 16), + Integer.parseInt(c.substring(2, 4), 16), + Integer.parseInt(c.substring(4, 6), 16) + ); + } + + /** + * Get a Color object from a web color string of the form "FF00AB" or + * "#FF00AB". + * + * @param c The color string + * @return The Color described + */ + public static Color getWebColorWithAlpha(String c) { + if (c.startsWith("#")) { + c = c.substring(1); + } + return new Color( + Integer.parseInt(c.substring(0, 2), 16), + Integer.parseInt(c.substring(2, 4), 16), + Integer.parseInt(c.substring(4, 6), 16), + Integer.parseInt(c.substring(6, 8), 16) + ); + } + + /** + * Get a Color that is 50% inbetween the two web colors given. The Web + * colors are of the form "FF00AB" or "#FF00AB". + * + * @param c1 The first color string + * @param c2 The second color string + * @return The Color middle color + */ + public static Color getMidWebColor(String c1, String c2) { + return getMidWebColor(c1, c2, 50); + } + + /** + * Get a Color that is 50% inbetween the two web colors given. The Web + * colors are of the form "FF00AB" or "#FF00AB". + * + * @param c1 The first color string + * @param c2 The second color string + * @return The Color middle color + */ + public static Color getMidWebColor(String c1, String c2, int percent) { + if (c1.startsWith("#")) { + c1 = c1.substring(1); + } + if (c2.startsWith("#")) { + c2 = c2.substring(1); + } + int rTop = Integer.parseInt(c1.substring(0, 2), 16); + int gTop = Integer.parseInt(c1.substring(2, 4), 16); + int bTop = Integer.parseInt(c1.substring(4, 6), 16); + int rBot = Integer.parseInt(c2.substring(0, 2), 16); + int gBot = Integer.parseInt(c2.substring(2, 4), 16); + int bBot = Integer.parseInt(c2.substring(4, 6), 16); + int rMid = rTop + ((rBot - rTop) * percent / 100); + int gMid = gTop + ((gBot - gTop) * percent / 100); + int bMid = bTop + ((bBot - bTop) * percent / 100); + return new Color(rMid, gMid, bMid); + } + + public static Color getMidWebColor(Color c1, Color c2, int percent) { + int rTop = c1.getRed(); + int gTop = c1.getGreen(); + int bTop = c1.getBlue(); + int aTop = c1.getAlpha(); + int rBot = c2.getRed(); + int gBot = c2.getGreen(); + int bBot = c2.getBlue(); + int aBot = c2.getAlpha(); + int rMid = rTop + ((rBot - rTop) * percent / 100); + int gMid = gTop + ((gBot - gTop) * percent / 100); + int bMid = bTop + ((bBot - bTop) * percent / 100); + int aMid = aTop + ((aBot - aTop) * percent / 100); + return new Color(rMid, gMid, bMid, aMid); + } + +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java new file mode 100644 index 000000000..a8dcd0987 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java @@ -0,0 +1,51 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel; + +import java.text.ParseException; +import javax.swing.plaf.synth.SynthLookAndFeel; + +/** + * + * @author hyh + */ +public class HelloMinecraftLookAndFeel extends SynthLookAndFeel { + + /** + * Creates a new instance of NimbusLookAndFeel + */ + public HelloMinecraftLookAndFeel() throws ParseException { + load(HelloMinecraftLookAndFeel.class.getResourceAsStream("/org/jackhuang/hellominecraft/lookandfeel/synth.xml"), HelloMinecraftLookAndFeel.class); + } + + /** + * Return a short string that identifies this look and feel. + * + * @return a short string identifying this look and feel. + */ + @Override + public String getName() { + return "HelloMinecraftLookAndFeel"; + } + + /** + * Return a string that identifies this look and feel. + * + * @return a short string identifying this look and feel. + */ + @Override + public String getID() { + return "HelloMinecraftLookAndFeel"; + } + + /** + * Returns a textual description of this look and feel. + * + * @return textual description of this look and feel. + */ + public String getDescription() { + return "HelloMinecraftLookAndFeel"; + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/ConstomButton.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/ConstomButton.java new file mode 100644 index 000000000..f415f0233 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/ConstomButton.java @@ -0,0 +1,24 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.lookandfeel.components; + +import java.awt.Color; +import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; + +/** + * + * @author hyh + */ +public class ConstomButton extends javax.swing.JButton { + public Color normalFg = GraphicsUtils.getWebColorWithAlpha("DDDDDD3F"), normalBg = GraphicsUtils.getWebColorWithAlpha("DDDDDD3F"), + prelightFg = GraphicsUtils.getWebColorWithAlpha("FFFFFF7F"), prelightBg = GraphicsUtils.getWebColorWithAlpha("FFFFFF7F"), + activeFg = GraphicsUtils.getWebColorWithAlpha("EAEDF83F"), activeBg = GraphicsUtils.getWebColorWithAlpha("EAEDF83F"); + public int drawPercent = 0; + public long lastDrawTime = 0; + public int radix = 0; + public boolean notDraw = false; +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/IConstomable.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/IConstomable.java new file mode 100644 index 000000000..a4feae77b --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/IConstomable.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.jackhuang.hellominecraft.lookandfeel.components; + +/** + * + * @author hyh + */ +public interface IConstomable { + boolean constomBackground(); + boolean constomForeground(); +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ButtonPainter.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ButtonPainter.java new file mode 100644 index 000000000..8220096f2 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ButtonPainter.java @@ -0,0 +1,277 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.painters; + +/** + * + * @author hyh + */ +/* + * $Id: MetroGraphicsUtils.java,v 1.9 2005/12/05 15:00:55 kizune Exp $ + * + * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, + * Santa Clara, California 95054, U.S.A. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; +import javax.swing.SwingUtilities; +import javax.swing.plaf.synth.SynthConstants; +import javax.swing.plaf.synth.SynthContext; +import javax.swing.plaf.synth.SynthPainter; +import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; +import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; + +/** + * ButtonPainter - handles painting Nimbus style buttons with Java2D + * + * @author Created by Jasper Potts (Jan 4, 2007) + * @version 1.0 + */ +public class ButtonPainter extends SynthPainter { + + private static final String DEFAULT_NORMAL = "D5D5D5"; + private static final Color[] DEFAULT_NORMAL_FG = new Color[]{ + GraphicsUtils.getWebColor(DEFAULT_NORMAL), + GraphicsUtils.getWebColor(DEFAULT_NORMAL) + }; + private static final String DEFAULT_PRELIGHT = "A9A9A9"; + private static final Color[] DEFAULT_PRELIGHT_FG = new Color[]{ + GraphicsUtils.getWebColor(DEFAULT_PRELIGHT), + GraphicsUtils.getWebColor(DEFAULT_PRELIGHT) + }; + private static final String DEFAULT_ACTIVE = "222222"; + private static final Color[] DEFAULT_ACTIVE_FG = new Color[]{ + GraphicsUtils.getWebColor(DEFAULT_ACTIVE), + GraphicsUtils.getWebColor(DEFAULT_ACTIVE) + }; + + private static final Color[] DISABLED_BG = new Color[]{ + GraphicsUtils.getWebColor("E3EFE9"), + GraphicsUtils.getMidWebColor("E3EFE9", "DFE2E6"), + GraphicsUtils.getWebColor("DFE2E6"), + GraphicsUtils.getMidWebColor("DFE2E6", "D6D9DF"), + GraphicsUtils.getWebColor("D6D9DF"), + GraphicsUtils.getWebColor("D6D9DF"), + GraphicsUtils.getMidWebColor("D6D9DF", "D8DBE1"), + GraphicsUtils.getWebColor("D8DBE1"), + GraphicsUtils.getWebColor("DADDE3") + }; + private static final Color[] DISABLED_FG = new Color[]{ + GraphicsUtils.getWebColor("C9CCD2"), + GraphicsUtils.getWebColor("C9CCD2"), + GraphicsUtils.getWebColor("BCBFC5"), + GraphicsUtils.getWebColor("BCBFC5") + }; + + private static boolean processCustomButton(final ConstomButton c, int add) { + if (System.currentTimeMillis() > c.lastDrawTime) { + c.lastDrawTime = System.currentTimeMillis(); + c.drawPercent += add; + if (c.drawPercent > 100 && add > 0) { + c.drawPercent = 100; + } else if (c.drawPercent < 0 && add < 0) { + c.drawPercent = 0; + } else { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + c.updateUI(); + } + }); + } + } + return true; + } + + /** + * {@inheritDoc} + */ + @Override + public void paintButtonBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + Graphics2D g2 = (Graphics2D) g.create(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + Color[] fg, bg; + if ((context.getComponentState() & SynthConstants.DEFAULT) != 0) { + if ((context.getComponentState() & SynthConstants.PRESSED) != 0) { + if (context.getComponent() instanceof ConstomButton) { + ConstomButton c = (ConstomButton) context.getComponent(); + fg = new Color[]{c.activeFg, c.activeFg}; + bg = new Color[]{c.activeFg, c.activeFg}; + } else { + fg = DEFAULT_ACTIVE_FG; + bg = DEFAULT_ACTIVE_FG; + } + } else if ((context.getComponentState() & SynthConstants.DISABLED) != 0) { + return; + //fg = DISABLED_FG; + //bg = DISABLED_BG; + } else if ((context.getComponentState() & SynthConstants.MOUSE_OVER) != 0) { + if (context.getComponent() instanceof ConstomButton) { + final ConstomButton c = (ConstomButton) context.getComponent(); + if (!processCustomButton(c, 1)) { + return; + } + Color fgs = GraphicsUtils.getMidWebColor(c.normalFg, c.prelightFg, c.drawPercent); + Color bgs = GraphicsUtils.getMidWebColor(c.normalBg, c.prelightBg, c.drawPercent); + fg = new Color[]{fgs, fgs}; + bg = new Color[]{bgs, bgs}; + } else { + fg = DEFAULT_PRELIGHT_FG; + bg = DEFAULT_PRELIGHT_FG; + } + } else { + if (context.getComponent() instanceof ConstomButton) { + final ConstomButton c = (ConstomButton) context.getComponent(); + if (!processCustomButton(c, -1)) { + return; + } + Color fgs = GraphicsUtils.getMidWebColor(c.normalFg, c.prelightFg, c.drawPercent); + Color bgs = GraphicsUtils.getMidWebColor(c.normalBg, c.prelightBg, c.drawPercent); + fg = new Color[]{fgs, fgs}; + bg = new Color[]{bgs, bgs}; + } else { + fg = DEFAULT_NORMAL_FG; + bg = DEFAULT_NORMAL_FG; + } + } + } else { + if ((context.getComponentState() & SynthConstants.PRESSED) != 0) { + if (context.getComponent() instanceof ConstomButton) { + ConstomButton c = (ConstomButton) context.getComponent(); + fg = new Color[]{c.activeFg, c.activeFg}; + bg = new Color[]{c.activeFg, c.activeFg}; + } else { + fg = DEFAULT_ACTIVE_FG; + bg = DEFAULT_ACTIVE_FG; + } + } else if ((context.getComponentState() & SynthConstants.DISABLED) != 0) { + return; + //fg = DISABLED_FG; + //bg = DISABLED_BG; + } else if ((context.getComponentState() & SynthConstants.MOUSE_OVER) != 0) { + if (context.getComponent() instanceof ConstomButton) { + final ConstomButton c = (ConstomButton) context.getComponent(); + if (!processCustomButton(c, 1)) { + return; + } + Color fgs = GraphicsUtils.getMidWebColor(c.normalFg, c.prelightFg, c.drawPercent); + Color bgs = GraphicsUtils.getMidWebColor(c.normalBg, c.prelightBg, c.drawPercent); + fg = new Color[]{fgs, fgs}; + bg = new Color[]{bgs, bgs}; + } else { + if (context.getComponent() instanceof ConstomButton) { + ConstomButton c = (ConstomButton) context.getComponent(); + fg = new Color[]{c.prelightFg, c.prelightFg}; + bg = new Color[]{c.prelightBg, c.prelightBg}; + } else { + fg = DEFAULT_PRELIGHT_FG; + bg = DEFAULT_PRELIGHT_FG; + } + } + } else { + if (context.getComponent() instanceof ConstomButton) { + final ConstomButton c = (ConstomButton) context.getComponent(); + if (!processCustomButton(c, -1)) { + return; + } + Color fgs = GraphicsUtils.getMidWebColor(c.normalFg, c.prelightFg, c.drawPercent); + Color bgs = GraphicsUtils.getMidWebColor(c.normalBg, c.prelightBg, c.drawPercent); + fg = new Color[]{fgs, fgs}; + bg = new Color[]{bgs, bgs}; + } else { + fg = DEFAULT_NORMAL_FG; + bg = DEFAULT_NORMAL_FG; + } + } + } + /*w = w - 2; + h = h - 2; + + g2.setPaint(new LinearGradientPaint(x, y, x, y + h, + new float[]{0, 1}, bg)); + g2.fillRect(x, y, w, h); + + g2.setPaint(new LinearGradientPaint(x, y, x, y + h, + new float[]{0, 1}, fg)); + g2.drawRect(x, y, w, h);*/ + + int radix = (context.getComponent() instanceof ConstomButton) ? ((ConstomButton) context.getComponent()).radix : 0; + + g2.setColor(fg[0]); + RoundRectangle2D fgshape = new RoundRectangle2D.Float(x, y, w, h, radix, radix); + g2.draw(fgshape); + g2.setColor(bg[0]); + RoundRectangle2D bgshape = new RoundRectangle2D.Float(x, y, w, h, radix, radix); + g2.fill(bgshape); + } + + @Override + public void paintToggleButtonBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + Graphics2D g2 = (Graphics2D) g.create(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + Color[] fg, bg; + if ((context.getComponentState() & SynthConstants.DEFAULT) != 0) { + if ((context.getComponentState() & SynthConstants.PRESSED) != 0 || (context.getComponentState() & SynthConstants.SELECTED) != 0) { + fg = DEFAULT_ACTIVE_FG; + bg = DEFAULT_ACTIVE_FG; + } else if ((context.getComponentState() & SynthConstants.DISABLED) != 0) { + fg = DISABLED_FG; + bg = DISABLED_BG; + } else if ((context.getComponentState() & SynthConstants.MOUSE_OVER) != 0) { + fg = DEFAULT_PRELIGHT_FG; + bg = DEFAULT_PRELIGHT_FG; + } else { + fg = DEFAULT_NORMAL_FG; + bg = DEFAULT_NORMAL_FG; + } + } else { + if ((context.getComponentState() & SynthConstants.PRESSED) != 0 || (context.getComponentState() & SynthConstants.SELECTED) != 0) { + fg = DEFAULT_ACTIVE_FG; + bg = DEFAULT_ACTIVE_FG; + } else if ((context.getComponentState() & SynthConstants.DISABLED) != 0) { + fg = DISABLED_FG; + bg = DISABLED_BG; + } else if ((context.getComponentState() & SynthConstants.MOUSE_OVER) != 0) { + fg = DEFAULT_PRELIGHT_FG; + bg = DEFAULT_PRELIGHT_FG; + } else { + fg = DEFAULT_NORMAL_FG; + bg = DEFAULT_NORMAL_FG; + } + } + g2.setColor(fg[0]); + Rectangle2D fgshape = new Rectangle2D.Float(x, y, w, h); + g2.draw(fgshape); + g2.setColor(bg[0]); + Rectangle2D bgshape = new Rectangle2D.Float(x, y, w, h); + g2.fill(bgshape); + + /*g2.setPaint(new LinearGradientPaint(x, y, x, y + h, + new float[]{0, 1}, bg)); + g2.fillRect(x, y, w, h); + + g2.setPaint(new LinearGradientPaint(x, y, x, y + h, + new float[]{0, 1}, fg)); + g2.drawRect(x, y, w, h);*/ + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java new file mode 100644 index 000000000..be0db277e --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java @@ -0,0 +1,103 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.painters; + +/* + * $Id: MetroGraphicsUtils.java,v 1.9 2005/12/05 15:00:55 kizune Exp $ + * + * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, + * Santa Clara, California 95054, U.S.A. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; + +import javax.swing.plaf.synth.SynthContext; +import javax.swing.plaf.synth.SynthPainter; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.LinearGradientPaint; + +/** + * ProgressPainter - Synth painter for Nimbus progressbars + * + * @author Created by Jasper Potts (Jan 3, 2007) + * @version 1.0 + */ +public class ProgressPainter extends SynthPainter { + + private static final float[] NORMAL_BG_PTS = new float[]{0, 1}; + private static final Color[] NORMAL_BG = new Color[]{ + GraphicsUtils.getWebColor("c6c6c6"), + GraphicsUtils.getWebColor("c6c6c6") + }; + private static final float[] NORMAL_FG_PTS = new float[]{0, 1}; + private static final Color[] NORMAL_FG = new Color[]{ + GraphicsUtils.getWebColor("c6c6c6"), + GraphicsUtils.getWebColor("c6c6c6") + }; + private static final float[] BAR_BG_PTS = new float[]{0, 1}; + private static final Color[] BAR_BG = new Color[]{ + GraphicsUtils.getWebColor("41B1E1"), + GraphicsUtils.getWebColor("41B1E1") + }; + private static final float[] BAR_FG_PTS = new float[]{0, 1}; + private static final Color[] BAR_FG = new Color[]{ + GraphicsUtils.getWebColor("41B1E1"), + GraphicsUtils.getWebColor("41B1E1") + }; + + /** + * {@inheritDoc} + */ + public void paintProgressBarBackground(SynthContext context, Graphics g, int x, int y, int w, int h, + int orientation) { + Graphics2D g2 = (Graphics2D) g.create(); + g2.setPaint(new LinearGradientPaint(x, y + 3, x, y + h - 4, NORMAL_BG_PTS, NORMAL_BG)); + if (x + 2 < w - 5 && y + 2 < h - 5) { + g2.fillRect(x + 2, y + 2, w - 5, h - 5); + } + g2.setPaint(new LinearGradientPaint(x, y + 2, x, y + h - 5, NORMAL_FG_PTS, NORMAL_FG)); + if (x + 2 < w - 5 && y + 2 < h - 5) { + g2.drawRect(x + 2, y + 2, w - 5, h - 5); + } + } + + /** + * {@inheritDoc} + */ + public void paintProgressBarForeground(SynthContext context, Graphics g, int x, int y, int w, int h, + int orientation) { + Graphics2D g2 = (Graphics2D) g.create(); + g2.setPaint(new LinearGradientPaint(x, y + 3, x, y + h - 4, BAR_BG_PTS, BAR_BG)); + if (x + 2 < w - 5 && y + 2 < h - 5) { + g2.fillRect(x + 2, y + 2, w - 5, h - 5); + } + g2.setPaint(new LinearGradientPaint(x, y + 2, x, y + h - 2, BAR_FG_PTS, BAR_FG)); + if (x + 2 < w - 5 && y + 2 < h - 5) { + g2.drawRect(x + 2, y + 2, w - 5, h - 5); + } + + } + + /** + * {@inheritDoc} + */ + public void paintProgressBarBorder(SynthContext context, Graphics g, int x, int y, int w, int h, int orientation) { + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/TextFieldPainter.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/TextFieldPainter.java new file mode 100644 index 000000000..6330ebb3b --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/TextFieldPainter.java @@ -0,0 +1,104 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.painters; + +/* +* $Id: NimbusGraphicsUtils.java,v 1.9 2005/12/05 15:00:55 kizune Exp $ +* +* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, +* Santa Clara, California 95054, U.S.A. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +import javax.swing.plaf.synth.SynthContext; +import javax.swing.plaf.synth.SynthPainter; +import java.awt.Color; +import java.awt.Graphics; +import javax.swing.plaf.synth.SynthConstants; +import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; + +/** + * TextFieldPainter + * + * @author Created by Jasper Potts (Jan 4, 2007) + * @version 1.0 + */ +public class TextFieldPainter extends SynthPainter { + + private boolean fill = true; + + private static final Color disabled = GraphicsUtils.getWebColor("F3F3F3"), + normal = GraphicsUtils.getWebColor("CCCCCC"), + focused = GraphicsUtils.getWebColor("000000"), + over = GraphicsUtils.getWebColor("7F7F7F"); + + public TextFieldPainter() {} + + public TextFieldPainter(boolean fill) { + this.fill = fill; + } + + private void paintFieldBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + w--; + h--; + if (fill) { + g.setColor(Color.WHITE); + g.fillRect(x, y, w, h); + } + Color color = null; + if((context.getComponentState() & SynthConstants.MOUSE_OVER) != 0) { + color = over; + } else if((context.getComponentState() & SynthConstants.DISABLED) != 0) { + color = disabled; + } else if((context.getComponentState() & SynthConstants.FOCUSED) != 0) { + color = focused; + } else { + color = normal; + } + g.setColor(color); + g.drawLine(x, y, x + w, y); + g.drawLine(x, y, x, y + w); + g.drawLine(x + w, y, x + w, y + h); + g.drawLine(x, y + h, x + w, y + h); + } + + @Override + public void paintPasswordFieldBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + paintFieldBackground(context, g, x, y, w, h); + } + + @Override + public void paintTextAreaBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + paintFieldBackground(context, g, x, y, w, h); + } + + @Override + public void paintTextFieldBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + paintFieldBackground(context, g, x, y, w, h); + } + + @Override + public void paintTextPaneBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + paintFieldBackground(context, g, x, y, w, h); + } + + @Override + public void paintScrollPaneBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { + paintFieldBackground(context, g, x, y, w, h); + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ComboBoxUI.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ComboBoxUI.java new file mode 100644 index 000000000..7d567d42e --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ComboBoxUI.java @@ -0,0 +1,277 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.ui; + +import static org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils.loadImage; + +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.basic.BasicComboBoxUI; +import javax.swing.JComponent; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.ListCellRenderer; +import java.awt.Graphics; +import java.awt.Rectangle; +import java.awt.Insets; +import java.awt.LayoutManager; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Container; +import java.awt.image.BufferedImage; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; + +/** + * NimbusComboBoxUI + * + * @author Created by Jasper Potts (Feb 1, 2007) + * @version 1.0 + */ +public class ComboBoxUI extends BasicComboBoxUI implements MouseListener { + + private static final BufferedImage combo_normal = loadImage("combo_normal.png"); + private static final BufferedImage combo_over = loadImage("combo_over.png"); + private static final BufferedImage combo_pressed = loadImage("combo_pressed.png"); + private static final BufferedImage combo_disabled = loadImage("combo_disabled.png"); + private static final Dimension BTN_SIZE = new Dimension(17, 20); + private final Dimension btnSize = new Dimension(BTN_SIZE); + + /** + * Creates a new UI deligate for the given component. It is a standard + * method that all UI deligates must have. + * + * @param c The component that the UI is for + * @return a new instance of NimbusComboBoxUI + */ + public static ComponentUI createUI(JComponent c) { + return new ComboBoxUI(); + } + + @Override + public void installUI(JComponent c) { + super.installUI(c); + c.setOpaque(false); + } + + @Override + protected void installListeners() { + super.installListeners(); + comboBox.addMouseListener(this); + } + + @Override + protected void uninstallListeners() { + super.uninstallListeners(); + comboBox.removeMouseListener(this); + } + + /** + * The minumum size is the size of the display area plus insets plus the + * button. + */ + public Dimension getMinimumSize(JComponent c) { + if (!isMinimumSizeDirty) { + return new Dimension(cachedMinimumSize); + } + Dimension size = getDisplaySize(); + Insets insets = getInsets(); + btnSize.height = size.height = Math.max(size.height, BTN_SIZE.height); + btnSize.width = (int) ((double) (BTN_SIZE.width / (double) BTN_SIZE.height) * btnSize.height); + size.height += insets.top + insets.bottom; + size.width += insets.left + insets.right + btnSize.width; + + cachedMinimumSize.setSize(size.width, size.height); + isMinimumSizeDirty = false; + + return new Dimension(size); + } + + protected JButton createArrowButton() { + JButton button = new JButton() { + @Override + protected void paintComponent(Graphics g) { + if (comboBox.isEditable()) { + BufferedImage img = combo_normal; + if (mouseDown) { + img = combo_pressed; + } else if (!comboBox.isEnabled()) { + img = combo_normal; + } else if (mouseInside) { + img = combo_over; + } + g.drawImage(img, + 0, 0, getWidth(), getHeight(), + 0, 0, img.getWidth(), img.getHeight(), comboBox); + } + } + }; + button.addMouseListener(this); + button.setMinimumSize(BTN_SIZE); + button.setPreferredSize(BTN_SIZE); + button.setMargin(new Insets(0, 0, 0, 0)); + return button; + } + + public void paint(Graphics g, JComponent c) { + hasFocus = comboBox.hasFocus(); + ListCellRenderer renderer = comboBox.getRenderer(); + Rectangle r = new Rectangle(0, 0, comboBox.getWidth(), comboBox.getHeight()); + paintCurrentValueBackground(g, r, hasFocus); + if (!comboBox.isEditable()) { + if (renderer instanceof JComponent) { + ((JComponent) renderer).setOpaque(false); + ((JComponent) renderer).setForeground(comboBox.getForeground()); + } + paintCurrentValue(g, rectangleForCurrentValue(), false); + if (renderer instanceof JComponent) { + ((JComponent) renderer).setOpaque(true); + } + } + } + + @Override + public void paintCurrentValueBackground(Graphics g, Rectangle bounds, boolean hasFocus) { + if (!comboBox.isEditable()) { + BufferedImage img = combo_normal; + if (!comboBox.isEnabled()) { + img = combo_disabled; + } else if (mouseDown) { + img = combo_pressed; + } else if (mouseInside) { + img = combo_over; + } + g.drawImage(img, + bounds.x, bounds.y, bounds.x + 4, bounds.y + bounds.height, + 0, 0, 1, 26, comboBox); + g.drawImage(img, + bounds.x + 1, bounds.y, bounds.x + bounds.width - 25, bounds.y + bounds.height, + 1, 0, 3, 26, comboBox); + g.drawImage(img, + bounds.x + bounds.width - 25, bounds.y, bounds.x + bounds.width, bounds.y + bounds.height, + 4, 0, 29, 26, comboBox); + } else { + /*g.setColor(Color.WHITE); + g.fillRect(bounds.x, bounds.y, bounds.width - btnSize.width, bounds.height - 1); + int x = bounds.x, y = bounds.y, w = bounds.width - btnSize.width, h = bounds.height - 1; + Insets insets = getInsets(); + g.setColor(new Color(141, 142, 143)); + g.drawLine(x, y, x + insets.left, y); + g.setColor(new Color(203, 203, 204)); + g.drawLine(x + 1, y + 1, x + insets.left, y + 1); + g.setColor(new Color(152, 152, 153)); + g.drawLine(x, y + 1, x, y + 1); + g.setColor(new Color(242, 242, 242)); + g.drawLine(x + 1, y + 2, x + insets.left, y + 2); + g.setColor(new Color(176, 176, 177)); + g.drawLine(x, y + 2, x, y + 2); + g.setColor(new Color(192, 192, 193)); + g.drawLine(x, y + h, x + insets.left, y + h); + g.setColor(new Color(184, 184, 185)); + g.drawLine(x, y + 3, x, y + h);*/ + } + } + + protected LayoutManager createLayoutManager() { + return new ComboLayout(); + } + + @Override + protected Insets getInsets() { + return new Insets(0, 5, 0, 0); + } + // ================================================================================================================= + // MouseListener Methods + private boolean mouseInside = false; + private boolean mouseDown = false; + + public void mouseClicked(MouseEvent e) { + } + + public void mouseEntered(MouseEvent e) { + if (comboBox.isEditable()) { + if (e.getComponent() == arrowButton) { + mouseInside = true; + } + } else { + mouseInside = true; + comboBox.repaint(); + } + } + + public void mouseExited(MouseEvent e) { + if (comboBox.isEditable()) { + if (e.getComponent() == arrowButton) { + mouseInside = false; + } + } else { + mouseInside = false; + comboBox.repaint(); + } + } + + public void mousePressed(MouseEvent e) { + if (comboBox.isEditable()) { + if (e.getComponent() == arrowButton) { + mouseDown = true; + } + } else { + mouseDown = true; + comboBox.repaint(); + } + } + + public void mouseReleased(MouseEvent e) { + if (comboBox.isEditable()) { + if (e.getComponent() == arrowButton) { + mouseDown = false; + } + } else { + mouseDown = false; + comboBox.repaint(); + } + } + + // ================================================================================================================= + // LayoutManager + private class ComboLayout implements LayoutManager { + + public void addLayoutComponent(String name, Component comp) { + } + + public void removeLayoutComponent(Component comp) { + } + + public Dimension preferredLayoutSize(Container parent) { + return parent.getPreferredSize(); + } + + public Dimension minimumLayoutSize(Container parent) { + return parent.getMinimumSize(); + } + + public void layoutContainer(Container parent) { + JComboBox cb = (JComboBox) parent; + int width = cb.getWidth(); + + Insets insets = getInsets(); + Rectangle cvb; + + if (arrowButton != null) { + if (cb.getComponentOrientation().isLeftToRight()) { + arrowButton.setBounds(width - (insets.right + btnSize.width), + insets.top, + btnSize.width, btnSize.height); + } else { + arrowButton.setBounds(insets.left, insets.top, + btnSize.width, btnSize.height); + } + } + if (editor != null) { + cvb = rectangleForCurrentValue(); + editor.setBounds(cvb.x, cvb.y, cvb.width, cvb.height); + } + } + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java new file mode 100644 index 000000000..ae32d2d94 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java @@ -0,0 +1,47 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.ui; + +/* +* $Id: NimbusGraphicsUtils.java,v 1.9 2005/12/05 15:00:55 kizune Exp $ +* +* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, +* Santa Clara, California 95054, U.S.A. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; +import java.awt.Color; +import java.awt.Component; + +/** + * NimbusListCellRender + * + * @author Created by Jasper Potts (Jan 19, 2007) + * @version 1.0 + */ +public class ListCellRender extends DefaultListCellRenderer { + + @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, + boolean cellHasFocus) { + setOpaque(true); + setBackground(Color.magenta); + return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollBarUI.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollBarUI.java new file mode 100644 index 000000000..147364f05 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollBarUI.java @@ -0,0 +1,179 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.ui; + +import static org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils.loadImage; + +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JScrollBar; +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.metal.MetalScrollBarUI; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; + +/** + * NimbusScrollBarUI - A custom scrollbar ui for nimbus. It is special as it handles all the painting for the buttons as + * well so that it can cope with the buttons being non-recangular. + * + * @author Created by Jasper Potts (Jan 17, 2007) + * @version 1.0 + */ +public class ScrollBarUI extends MetalScrollBarUI { + + private static final BufferedImage BACKGROUND_ENABLED = loadImage("scroll_enabled.png"); + private static final BufferedImage BACKGROUND_DISABLED = loadImage("scroll_disabled.png"); + private static final BufferedImage SCROLL_DEC_NORMAL = loadImage("scroll_dec_normal.png"); + private static final BufferedImage SCROLL_DEC_OVER = loadImage("scroll_dec_over.png"); + private static final BufferedImage SCROLL_DEC_PRESSED = loadImage("scroll_dec_pressed.png"); + private static final BufferedImage SCROLL_INC_NORMAL = loadImage("scroll_inc_normal.png"); + private static final BufferedImage SCROLL_INC_OVER = loadImage("scroll_inc_over.png"); + private static final BufferedImage SCROLL_INC_PRESSED = loadImage("scroll_inc_pressed.png"); + private static final BufferedImage SCROLL_THUMB_NORMAL = loadImage("scroll_thumb_normal.png"); + private static final BufferedImage SCROLL_THUMB_OVER = loadImage("scroll_thumb_over.png"); + private static final BufferedImage SCROLL_THUMB_PRESSED = loadImage("scroll_thumb_pressed.png"); + + private boolean incBtnMouseOver, incBtnMousePressed; + private boolean decBtnMouseOver, decBtnMousePressed; + private boolean thumbMousePressed; + + /** + * Creates a new UI deligate for the given component. It is a standard method that all UI deligates must have. + * + * @param c The component that the UI is for + * @return a new instance of NimbusScrollBarUI + */ + public static ComponentUI createUI(JComponent c) { + return new ScrollBarUI(); + } + + /** {@inheritDoc} */ + @Override public void installUI(JComponent c) { + super.installUI(c); + c.setOpaque(true); + c.addMouseListener(new MouseAdapter() { + @Override public void mousePressed(MouseEvent e) { + if (isThumbRollover()) { + thumbMousePressed = true; + scrollbar.repaint(); + } + } + + @Override public void mouseReleased(MouseEvent e) { + thumbMousePressed = false; + } + }); + } + + /** {@inheritDoc} */ + @Override protected Dimension getMinimumThumbSize() { + return new Dimension(15, 15); + } + + /** {@inheritDoc} */ + @Override protected JButton createDecreaseButton(int orientation) { + decreaseButton = new ScrollButton(orientation, scrollBarWidth, isFreeStanding); + decreaseButton.addMouseListener(new MouseAdapter() { + @Override public void mouseEntered(MouseEvent e) { + decBtnMouseOver = true; + } + + @Override public void mouseExited(MouseEvent e) { + decBtnMouseOver = false; + } + + @Override public void mousePressed(MouseEvent e) { + decBtnMousePressed = true; + } + + @Override public void mouseReleased(MouseEvent e) { + decBtnMousePressed = false; + } + }); + return decreaseButton; + } + + /** {@inheritDoc} */ + @Override protected JButton createIncreaseButton(int orientation) { + increaseButton = new ScrollButton(orientation, scrollBarWidth, isFreeStanding); + increaseButton.addMouseListener(new MouseAdapter() { + @Override public void mouseEntered(MouseEvent e) { + incBtnMouseOver = true; + } + + @Override public void mouseExited(MouseEvent e) { + incBtnMouseOver = false; + } + + @Override public void mousePressed(MouseEvent e) { + incBtnMousePressed = true; + } + + @Override public void mouseReleased(MouseEvent e) { + incBtnMousePressed = false; + } + }); + return increaseButton; + } + + /** {@inheritDoc} */ + @Override protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) { + BufferedImage decImg = + decBtnMousePressed ? SCROLL_DEC_PRESSED : decBtnMouseOver ? SCROLL_DEC_OVER : SCROLL_DEC_NORMAL; + BufferedImage incImg = + incBtnMousePressed ? SCROLL_INC_PRESSED : incBtnMouseOver ? SCROLL_INC_OVER : SCROLL_INC_NORMAL; + Graphics2D g2 = (Graphics2D) g; + AffineTransform origTransform = g2.getTransform(); + int scrollWidth = scrollbar.getWidth(); + if (scrollbar.getOrientation() == JScrollBar.VERTICAL) { + scrollWidth = scrollbar.getHeight(); + g2.scale(1, -1); + g2.rotate(-Math.PI / 2, 0, 0); + } + // draw track & bottons + if (scrollbar.isEnabled()) { + g.drawImage(decImg, 0, 0, scrollbar); + //g.drawImage(BACKGROUND_ENABLED, 15, 0, scrollWidth - 15, 15, 0, 0, 1, 15, scrollbar); + g.drawImage(incImg, scrollWidth - 15, 0, scrollbar); + } else { + //g.drawImage(BACKGROUND_DISABLED, 0, 0, scrollWidth, 15, 0, 0, 1, 15, scrollbar); + } + // undo any transform + g2.setTransform(origTransform); + } + + /** {@inheritDoc} */ + @Override protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) { + if (scrollbar.isEnabled()) { + BufferedImage thumbImg = thumbMousePressed ? SCROLL_THUMB_PRESSED : + isThumbRollover() ? SCROLL_THUMB_OVER : SCROLL_THUMB_NORMAL; + Graphics2D g2 = (Graphics2D) g; + AffineTransform origTransform = g2.getTransform(); + Rectangle b = thumbBounds; + if (scrollbar.getOrientation() == JScrollBar.VERTICAL) { + b = new Rectangle(thumbBounds.y, thumbBounds.x, thumbBounds.height, thumbBounds.width); + g2.scale(1, -1); + g2.rotate(-Math.PI / 2, 0, 0); + } + g.drawImage(thumbImg, + b.x, b.y, b.x + 14, b.y + 15, + 0, 0, 14, 15, scrollbar); + g.drawImage(thumbImg, + b.x + 14, b.y, b.x + b.width - 14, b.y + 15, + 16, 0, 17, 15, scrollbar); + g.drawImage(thumbImg, + b.x + b.width - 14, b.y, b.x + b.width, b.y + 15, + 24, 0, 38, 15, scrollbar); + // undo any transform + g2.setTransform(origTransform); + } + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollButton.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollButton.java new file mode 100644 index 000000000..594ad22fe --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollButton.java @@ -0,0 +1,82 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.jackhuang.hellominecraft.lookandfeel.ui; + +/* +* $Id: NimbusGraphicsUtils.java,v 1.9 2005/12/05 15:00:55 kizune Exp $ +* +* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, +* Santa Clara, California 95054, U.S.A. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +import static javax.swing.SwingConstants.NORTH; +import static javax.swing.SwingConstants.SOUTH; + +import javax.swing.SwingConstants; +import javax.swing.plaf.metal.MetalScrollButton; +import java.awt.Dimension; +import java.awt.Graphics; + +/** + * NimbusScrollButton - a fixed size 15x17 vertical 17x15 horizontal transparent button. + * + * @author Created by Jasper Potts (Jan 17, 2007) + * @version 1.0 + */ +public class ScrollButton extends MetalScrollButton implements SwingConstants { + + private final int btnWidth, btnHeight; + + ScrollButton(int direction, int width, boolean freeStanding) { + super(direction, width, freeStanding); + setOpaque(false); + if (direction == NORTH || direction == SOUTH) { + btnWidth = 15; + btnHeight = 17; + } else { + btnWidth = 17; + btnHeight = 15; + } + } + + @Override public Dimension getMaximumSize() { + return this.getPreferredSize(); + } + + @Override public Dimension getMinimumSize() { + return this.getPreferredSize(); + } + + @Override public Dimension getPreferredSize() { + return new Dimension(btnWidth, btnHeight); + } + + @Override public void repaint(long tm, int x, int y, int width, int height) { + if (getParent() != null) getParent().repaint(); + } + + /** + * Don't paint anything as all painting is done by the scrollbar + * + * @param g {@inheritDoc} + */ + @Override public void paint(Graphics g) { + } +} + diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off.png new file mode 100644 index 0000000000000000000000000000000000000000..a0afbaed25a75be11b3264daadc6dcf27bfe9898 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_yQY#}Etu|d7;J^wq h9)_!KMl05{GkEkTB^7QITnkjq;OXk;vd$@?2>`7mC2Rly literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_disabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bb507cdb01750f9a93e5d11bc331de60a2db8930 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_yQY#}Etuzopr0DjjbzW@LL literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_over.png new file mode 100644 index 0000000000000000000000000000000000000000..738e2030defb1574ce393ca31de7b1ae82c94965 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_yQY#}EtuWCJzshAn^91$(j%Gc3MkaA1WQ h55rYABLg!w26Y$JOT7A@d4Z}KJYD@<);T3K0RVCsBP0L- literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..974d1d65ac7a253b68ebe4247d64790aba239442 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK^0FI#}EtubP0l+XkK_m?J4 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2cda110071752c629787fde9585a09d23e6407 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSK$uZf!>a+P!PC>lF~q_@dCmIu|Ia({G8lCPF&H&-X2~5* zc)(*-@|@NA(j;e|`hS0$yBrui+3wc-oT!-fudeNB`a2_+^Y#p)tqhBJtA2lFcmAavq0j@)93kY-!-iz(&YCtiZ(WE zNp+X#yIakf_S&1<(1&X)%jSuUU5+Qc`IwnMTRPu+^_XYsY`^B%OPe0sSokS7>6{!WesX$6FZ} z{tFWW0!?!7*ZTi z-(Gz#?~vkfxLEf4>hU$A3hS8#FH~?SmmOqGFmMt%z}RJ`z`!OIqt5bn_fH!lvI6;>1s;*b3=DjSK$uZf!>a+P!Nk+WF~q_@*~HB3-+2dK2BVH32BT)qEV-iz z4|uFfp0he%n&iw=|L<>emji<*+ufR<6BV=m)wMlMe`n-!-kw3Um0=NY)$gzD&Oi3- zO^{;I5j}dqghwD%;DmHy@%P497N&`6r+8TXtP;$47D#+~`aGZQyQZ~7n*3fy(Z+@? zsqPYecdI$mUVC#J`fzP!**uZ4%kiW)A2ai3OXqv99`j6{?bjT8Y13mH3m*rE8MB)c zQ#Tni^IL1r=;sOG(JH%^D)9U<%VzaAyALH?-aT_+>2X$r`K_IuiIIzxoA(It&*f4CxHb-<3v4A*FCSSe zVC&%Stgb~t&AGnqOO{KsetXy)qRexfsA6g4j&#pHcwc<+{`YwKZ9YnSyO_;mWe%|o-;C7^#59{ U`)|rNpg$QrUHx3vIVCg!01vKwpa1{> literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_disabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..538f02b64c77d0f7fb0b0c88f2bb220004362f9c GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}w!2~3ad^zv{NHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00m1uT^vI^yx*QN%(2=mcCi>HZ{g>?Ty{ny7G7$&`w@W97#4EDgO51Vw+N|&MCV5#t z&sw|XY{713hKOwUknC8mh3^l!mA}|4om_OTWc}OHpG&$ya7A^T7k|A&)igHEHM~Fv OFnGH9xvXAXb literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8b16585762ccde943596cd794584cfe5579c6d GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}w!2~3ad^zv{NHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00rATT^vI^yx(3^{&YH zMP9QUw;4q literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_over.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4df60d6ea4b7a5e60b33fdcc860e9f90178262 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}w!2~3ad^zv{NHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00pZ(T^vI^yx*SL$lIVG(3)75#A$Y*NmoOI zvpccZ@rqlav}YgFc{bs<@1CxI@M)v`^v^$YpE!Zw-gU)&_tV$9n&&X85*GI!Xf<2b#H<9>s_9f750n1r@z1R??fvIuKN8~VmCv?EB})_ TDjy2~ox$Mg>gTe~DWM4fI$~JE literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d2c44bcdb055b402dc29594fe7a49ea3621669 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}w!2~3ad^zv{NHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00ozMx;Tb-c)y)&$aPpjq-|}tV~o)bwj%a} zXLF7n)%G|RW4QQu!Do%B`?iaAFD>Qx(fHv%*Zl={mpa`eEz>nLRXOZ8y|+I4Bfm{t zBJM%ny=9fV*J&T?c-m@s%(DGy@3qR?+kCToTLqSed`wz-;mO=(C#(0b%Rc$pCOX^l zc|pkHuXUPB61__H SpYj1+%;4$j=d#Wzp$P!m6K#S3 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_error.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_error.png new file mode 100644 index 0000000000000000000000000000000000000000..6baa7d9a5dcebe8232b712c50eb4d50b2be8d12b GIT binary patch literal 1561 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 Hu0mjfzUQ97 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_warning.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b42e6c84dfd19a820582529c86a60e1447f4720 GIT binary patch literal 1479 zcmV;&1vvVNP)@9@I{gzvig$1&(AQW;fau+q<{2w#tdtc6ZopX4xc}!dM`udu+wzjgat}gce{!VrN{{CdC)YMcL3j(xP zR$f_IVG|P*?DqDS?t$XsVkTagMMXu)nr|SvZg_ip<85tiJUBR5vrJxI9v>MQ;m^;{ zveoyXpZWQDUQ|@Xy}iAuA75WzURPIVsvoyP*Vfi}PEHPW8Wa@7D=RCxu#UWIAM{aC zQNaTP1F3I31J81Yp-}iDdQBO~bq4)RqnkAEyld0@!;J@&DW!dB7V|nK|QhC=p_%i52 zEVWc-FE1}zfH65aNtJdeDJgLgi4+nN!WS18WeaOS3;KXIXk-fu3seEWy1ToR&8#ss zHAR!Pvq+VytE*)zYheC{CiDS~4l#F%Jfm1KARvJ9R+*cdV-F7xT112-J{{c?gNp6% z?^E6ih|E$_QYbI{l(DL+DpGBClw!d6`T0>FLqkKdmQx;eNcHvgvep`yCh_~s%uMbO zBVOb`ENX{=fdTgT_(=KF(^I+v=lt;SFx%PLktOqpnTW1piDiz9iwi1*g@w`83ghGB zY;bT;mW+kM7$Sa^CG#jv(C9z}4#LC3>1qX7Qv|)TWGocGs%ku#MQMUY2jy%qIy&lN zP2f%_Hh>Uo7l+#8C>Jmbtoi!-DoY=@6AB5lVN)M&S2ij+G_%C{6M4@yuljHM8x=&(GH;^3O@^@ntJc zdA&ABSy@@M{cs1CbLS=0Qc!|GR)vFlNi2D?C8wxIuZ>D#4wfzT`5cruMBK>I($Yj7 z(;Xnrba!{V^{?gSW!BQt!a6!SSbu-NtktKtw^!!$!N3DpF`<#-Q3T7Pj;w_s+6c8f z{f&fZ%Lwcg)V2sGGQiSSq_(!!N%jYMO&2;t7YjEBQraBdHAA_8*x zEqveT&{hxALKQd*LcpO;q^%_QVPRpRwk%rVM}LT|uCB7#*;%%=wWa-4qxXjx;>q;% hbUIK_TVQK2_6L+$#wOO0Nb>*y002ovPDHLkV1hJEzDEE6 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..b87150ff1ae749d16891c3f30c7d99de20b496d9 GIT binary patch literal 433 zcmV;i0Z#sjP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Y*tgK~y+Tjgm2o zgFp~Q_rHr(3JDSqb#j*R=|N^GchhDF_0?Fs|2Yk|g8<2FK&^===UK4C?Bd#tq(n zi><6LR#hcEOB!Bscv!kVQI_T5aOnFUdr9LZ>O4amgkeax7=rIn{olX+Wu9lG%JW>H z8%-%am^ijP86s z3tD6V%C`d~yj(7VePh;4T)DSEk2Fn}aWm_k1>-n&90y}bLmVc~?mR;uY1@|N>beeF zt+L!Vc85KXo;Rq&g;hM22J9%RT9!rA$c4~=!I6IWo2(;wrAgQ~c87b+l=+}Fx}kvz bOCFCeUQl`_#i`Gw00000NkvXXu0mjf+s3*1 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a081781ea5312fbbab28889efc707c03feda2a5f GIT binary patch literal 457 zcmV;)0XF`LP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bWT&K~y+Tjgno9 zfS~+wFEL{ll{?P17IVZpZ7>v7QKa#6oN%4ovb z)9Lhjy~@ZdS(Ysp3&SwtIF^y3j6S-qbFd73f}P_Ltl3HW&;xn~mVo46VWy2*c3xJTaL}N~d}yNs?~2EBFvv#VWu!^?F?(>*;h- zu?ir2tyUBG;PDz&I2;ai66k>{DprBjYUR4Fz;Bji;R6*e1D7FY@!W`6vEh2X#)B-1 zGCbO9wRrb?>LbVF5pzk|m6f9?(lib4-~$=?1$|J0!Q@tz0UpI~!{Lw|av?OZU^^O( zxZCUVKFcKd&G-F&zt6Rs%_ermN@$?cl05$g?_`e8amy&I00000NkvXXu0mjf6AsS1 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_selected.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..932ec20c19aaf29032b96df55c17c192f2998349 GIT binary patch literal 590 zcmV-U0Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0pm$TK~y+TjgsAJ z8c`I5=Q#_75?aUuwDhJoeS=)}wxLZFQO5sYbj)atB1OFzf;e;##b%-xNtG(7IQ_;w zJxK=wUF?A~d+&A5KI<&a`xo>1yx;E|hLOo+(&==yTJ80Ev)L>t|HUJ1x7)Sb?OZMg zZ9E=79KnL$d_K=co6RO@RWuG^?{2rd-EJlG6#M;tFc_p#sp)ho8K1^E$z+m^CG{NG zIu?tq*K5{3joCQoSn@G@`2DGI^FGymt9Q=omOcL!6g?vO zi_eCNm*-c>K`_YSa43~Zj^k(y&7~#Vaqdo|-=1)kO>Q>Aa zBB=OS=t+<3y4h@2<3ngkz0*6PZWWZIhwDV6Q4LvFtCghwhlcEtNJPU2>NU;`E7Yxm zlJqPV3r^C|163r2jBg^%5P>-PYPNp3(lZ*3Ow-ixTd`Qg2a-kW5Qji2sRCSvnErDk zraBPZ+}@)bulMT9)rZV?)BYJ0JkPdmJjlYQ;n74Q!Mh(z&tkb;VlI(Au<~Rw(RCf~ z-~-8oz&R+v#pE}j0X&M|%H=XOu@V{t cWr64Y0ixV3SoDRw+5i9m07*qoM6N<$f?swMl>h($ literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_over.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a3a608f16d9fd096c0104ecbdc4330cde5d5ef GIT binary patch literal 491 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0f0$FK~y+Tjgm2o z!axv(_g@99Y(%3ZXsja!g`^OaG=gOyB8ru5KuJiI)vhlb$Ye6XyP2GW<#IU~42Y_# zZ@YRVilRoNL29)c2FJ*4G>_7ek4hvbtv~V3jEgZ_u&KlDgH+k hMa&H|VB3`I^%G#uJ_{rIZ`S|-002ovPDHLkV1m{O-D&^; literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d4519c5a83b931d991611e504c7de7774e73070e GIT binary patch literal 534 zcmV+x0_pvUP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0jo(wK~y+TWB88> z79G0i+Pzw>cBy2=5{Zh%%C$=!J682=Jpq-50fe^KAHNzlEt9TVTCn=~veS32JbMR3 zKt|!3;|ev))oPaBe*PA!6s`?uiFDPH$a(udeESIzK?dJ{{mEW+RIGe)`^KXX5s)^Z zJwQD`gCRn=z`@(kg-RD)dh{H~25GbFSqHQSEJXm6Z#b#ZupG!>06T9fR<~h--+%vV zG_ERHwuixI!n*ub$DqPQfR3FP3>%j-7__V+=qqHf_r_D%s-+CF)yseZ4HY8-0KLOo zw15E^t#@93go+UXKL7Z|Q#hYNt7+xB^Y@`*M1Z4rUjS`l@aSDvwDveuj0n)X=b~Q2 zG6rCJQ?6eDOb1Y5LcqLxWBkl5py)PeUIk1$5K;V~YxhN9FajAMZNM}NOmD!n1D3)G zZoK#aOk6uJf?^ArlpEI_1_}Yw4lo@+M9@Iz?u$SLsdKhNxKM3C08FEb)l0OSS5H20 z1sGhwfCeHU1IPvXN4jD$#2yGhXoCP?deg682J`@5(L$c0`BIfjbQ_ie!vHD`0ssF4 Y0DV!Z literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b998c2e15da56ff288ebf89a6b817fab430d5a GIT binary patch literal 578 zcmV-I0=@l-P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0oO@HK~y+Tjgrqw zLQxRL&$2~}pr97LLqWTiJw+{hf(R;#mSP14A|m3#>^~V@gh0ei(n91yMj}EaHxUN7KxdGeG<#Ke(LGeAR>%UzVt%;43k(C2& zqpOFz*$0UZheM>QR;vo#Xj;5i_s`SY=RY}OlbffP#b?PuSn?HG>#q2lhoEgCl$IRJ zvf}Z$qA33q*X)kr$<{_la%jiz_bX=7ZnwqtA6mcP_xXGZWh#}5xE2p?JlWa^Ne-in z#bSyU8GyKuacb+#L%_z@k1y^l$w9(&I<43@X3fOKi`E_vhEx&-=us}0opCd3T@c(> zU(k)|jjbKc?_VFAPj0}rP18&y5*!>F;xKV`=QH#tTCEn#)#-FNyQ?hw#_q5O;_-kw zBxvzm8em6JH5!f5G;$#{;J}rB_?y%beA5K%8@oduGi5$#jc#b*h6T3$0m;1R7QVwc QdjJ3c07*qoM6N<$f}mFc{{R30 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_over.png new file mode 100644 index 0000000000000000000000000000000000000000..a51c6c3a7daf37c6e90425c2a5e04abbf2db57ab GIT binary patch literal 632 zcmV-;0*C#HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0u4z-K~y+TjZ(jB zT2U0fV}}fZ6p|tTLjoNHCn<=(Q2eo^gQ6(tAZVnGsoex$Me9&pCEE95DY2mt6bwip z;}cW68JZ@7gDrI_f`cHue$VrAlROCI;|%AXbH01dJ@;eELv*`cK@h^>u+3((TCIUV zAe+s0Ivp*2i#ytEHcO>a7K^1&D70FwUrWF#7K?VfJrapbCKIic)6fLhXEK@TbV`x? zn9t|9%WO8c+ii-dH1q)n7gOjl^m;v$$uu61;j6TCI*mTdl#0tg|3cFFi~P4O;rLbc zOdkH#5{gnTmxI9|9ES1m9zNUA#r5+&=~?1{+sbb3{pkU&u zifZs2qtVFlu+eBlp{LNWc7wsdLZJ{B!Op>%u9_QCRMYSGolYmq<#MG`i9%T8#@o7% z09$(_e(7CPjVOxoc$}dX*w6t*v1=U%hE-7(fJ!Tsiu&ELSd9MxaDMe0d&BRozW!wV za3ab-wS=NblH~LG;HWfc6ncYpmZ?WE91bC_!C(MilXA1!LPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0xd~IK~y+TWB88> z79G0i+Pzw>cBy2=5{Zh%%C$=!J682=Jpq-50fe^KAHNzlEt9TVTCn=~veS32JbMR3 zKt|!3;|ev))oPaBe*PA!6s`?uiFDPH$a(udeESIzK?dJ{{mEW+RIGe)`^KXX5s)^Z zJwQD`gCRn=z`@(kg-RD)dh{H~25GbFSqHQSECm8LUVKPge9*XKy?)!;$oczD-hTy^ z`2W9r!%2;X$5Fui;eg5%_r*J-lR@2IL=kG&= zBIfNwQw>KzDTtb*cV7T)V({o)SG4vxL7o^9?n2b`?zyPfu#5qi z-jwTC0Mh|P6d2ZMdVmNRR1jGpFz?~6+JFF4nJ za0`JjbnH5*%7N>I+U z^n`?n^9K$jbevB8VRHYVGCTVYCLhTxhR9j+h6V;Jj0_B(7#kSW9A7$9FrLeq%VN#K h-f&|@1DDC_3|)t%tXS5BW&4nJ za0`Jj@GNhOSrvz=XMrYEewt9)t?({uf_bPq0L f_p1;2yET|o=1fhjamhOaw3fls)z4*}Q$iB}6An4nJ za0`JjbnH5*%7N>I+U z^n`?n^9K$jbevB8VRHYVGCTVYCLhTxhR9j+h6V;Jj0_B(7#kSW9A7$9FrLeq%VN#K h-f&|@1DDC_3|)t%tXS5BW&Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JicCFS978H@$+S1}GAME!S#Uz|PQ85T=K9=AYFoGRPkNE} uEI)Likk`bSM>v{JuYLUP{h2qy2@DIlm_;_-HDLo9z~JfX=d#Wzp$P!nXE3|~ literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_enabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..29055171e512fb8f7f6a6daed8d2961ba8d41779 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!2~2%)f%k>Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiYz@{978H@i5%O=*bu;RB;bVOL*9q^S8i@8_#fu^S?K%c yP3w;q#@#qJ`(<8;lh!NoXRc{Ry@DS(4H(+|nN|n?;Jpnrgu&C*&t;ucLK6T$_cYi5 literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..74fe160ead98a18b6ed46f1ac5d8d634f61981d7 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^{24nJ za0`Jjm|TeM+TGT) zfAiCHZ~wd?udK^qliLr)u9HlzdARYqV#}h_1rb rZ)2Enk~byyaqi~7=S@u1YtGBtsf#{d-}T2G=mG{$S3j3^P64nJ za0`Jjm1yoX5*FUTEGv2`cq!*Wu9X%qrB8?N$+@{~`oi0P z=IdyBDm@py-Os?rm%#a*$ugaJ*{yk5%O{2K>EBKce%>TIV}F@l4nJ za0`Jjm|TeM+TGT) zfAiCHZ~wd?udK^qliLr)u9HlzdARYqV#}h_1rb rZ)2Enk~byyaqi~7=S@u1YtGBtsf#{d-}T2G=mG{$S3j3^P6H(^A z@^oH(^A z@^od*SkqnUue6r;;;wnVm@Wj p9;==ZgACbY7E$4oIM~)6X4qiCC263qycTF0gQu&X%Q~loCIA^tKS2Nh literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfc80afd01f19d1d9ade82232762ebfca807436 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1-!3HEd=IsptQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BW-s<^>H(^A z@^od*SkqnUue6r;;;wnVm@Wj p9;==ZgACbY7E$4oIM~)6X4qiCC263qycTF0gQu&X%Q~loCIA^tKS2Nh literal 0 HcmV?d00001 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml new file mode 100644 index 000000000..576064ab4 --- /dev/null +++ b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 237 + 239 + 242 + + + + 0 + 0 + 0 + + + + 160 + 216 + 240 + + + + 35 + 35 + 36 + + + + + + + + + + + + + + + + + + + + + + 237 + 239 + 242 + + + + 255 + 255 + 255 + + + + 0 + 0 + 255 + + + + 35 + 35 + 36 + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..bdff2c0c5 --- /dev/null +++ b/build.gradle @@ -0,0 +1,24 @@ +import org.gradle.api.artifacts.* + +apply plugin: 'base' // To add "clean" task to the root project. + +subprojects { + apply from: rootProject.file('common.gradle') +} + +task mergedJavadoc(type: Javadoc, description: 'Creates Javadoc from all the projects.') { + title = 'All modules' + destinationDir = new File(project.buildDir, 'merged-javadoc') + + // Note: The closures below are executed lazily. + source { + subprojects*.sourceSets*.main*.allSource + } + classpath.from { + subprojects*.configurations*.compile*.copyRecursive({ !(it instanceof ProjectDependency); })*.resolve() + } +} + +task wrapper(type: Wrapper, description: 'Creates and deploys the Gradle wrapper to the current directory.') { + gradleVersion = '1.11' +} \ No newline at end of file diff --git a/common.gradle b/common.gradle new file mode 100644 index 000000000..61b1fc551 --- /dev/null +++ b/common.gradle @@ -0,0 +1,44 @@ +// +// This file is to be applied to every subproject. +// + +apply plugin: 'java' +apply plugin: 'maven' + +//sourceCompatibility = '1.7' +[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' + +repositories { + mavenCentral(); +} + +buildscript { + repositories { + mavenCentral(); + } +} + +dependencies { + // Adding dependencies here will add the dependencies to each subproject. + + compile 'com.google.code.gson:gson:2.2.4' // Apache License 2.0 +} + +task sourcesJar(type: Jar, dependsOn: classes, description: 'Creates a jar from the source files.') { + classifier = 'sources' + from sourceSets.main.allSource +} + +artifacts { + archives jar + archives sourcesJar +} + +task createFolders(description: 'Creates the source folders if they do not exist.') doLast { + sourceSets*.allSource*.srcDirs*.each { File srcDir -> + if (!srcDir.isDirectory()) { + println "Creating source folder: ${srcDir}" + srcDir.mkdirs() + } + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..c0fd4b414 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,20 @@ +rootProject.name = 'HMCL' + +// Find the directories containing a "build.gradle" file in the root directory +// of the project. That is, every directory containing a "build.gradle" will +// be automatically the subproject of this project. +def subDirs = rootDir.listFiles(new FileFilter() { + public boolean accept(File file) { + if (!file.isDirectory()) { + return false + } + if (file.name == 'buildSrc') { + return false + } + return new File(file, 'build.gradle').isFile() + } +}); + +subDirs.each { File dir -> + include dir.name +}

>zAaMj1@e*D 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%0Aq}DLa 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 literal 0 HcmV?d00001 diff --git a/HMCL/image/A.jpg b/HMCL/image/A.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b20c78c8df53ab7df5bce3882587e7dd800d2a4b GIT binary patch literal 64232 zcma&NcT`hB*Ebr9h>8kG=$%lc_ui$2DhL5WQRz*3=pZP)ClHV>y#}OrEY#2CSo;;za zqobo|`o9O>-Me=ml02j)C8eeXk^yP|Z^!@NH@DvaWW;zs2$%`*$N>0ccm!m4w>^Lj z0Du7R-|@ei;^7kz-XXgCpVt464pIOf& z@k;5AFxy9E_fQ}i4itO>oa%Q7@$v59?tup&!)Fm9RU&8Bf6XdPAm|bHL=j%A{QOn^ zSA#JtHj#IPo*!3^3!YJs1Mu*O?*6Y(02VR;=_~h8JZ8n@kDtB>J;B}kf91eQf*bkY z!1~OuJp{wxiutu)pO3xzxpM3t`tf!SKth1Ko{WGDC&3j)?=IjA;PpdA>PHX)yu|0P z1c_gL{6fTxhv(7I_|W7FVQ3Gl(+e5l$rKsEC6CE|(=1Yi#Ul@*omD~5(D;@`*7o^4mwvhB{l0Vkxy zVEN5rAsT&#LZRWpksrShMgvsf2GNG``-D0frXw9&HnXA#Cl{3&gp>Y1@syLx@8J>8@1^A~0DQS#Ieb$RS|937~WMWUn zb^Ze%Zd}sv{|v{hg8xy27=VKhcm8KMrOBvIZn&~nDC((roOtofMfjuu z0I^2=UY_a3WE=;Y16`Ez!lr0)mbDf%Sx^Kr#95?_oSD>skPyd~I{;>~b9n&^%`dMX zngIHFa7qgof_>6{P?I?I;d+Ha0inrw(Ew!)!O8U{uR3s@3&JHcH46tF4nMd!%N+#h z>HXv|9HIZ&1Mn`Clu3W}7tWObV+^N0$#IL~mRAI{wV}Ot2&e(dAC;*A#DoZId;U$@ zVYpQ}xEzdQAHoHqQ3e0!9{=PcWhH&itVjr8#?!~sI$IL3AR!|Egd?+HWR-QKGk@KJ zP$`B8|frcMf&qhz4=iA^k8^#%AJp(!E_s|L}v005mm z)UK}tqEBgWg`c)DPqlCw;P6UHDYQ>YDUr4|k#_P8fAS#U&MTp4fc3l32t{1v2vyb) zuFre%P`fIN1C0~4&fq^pbi9woGYP-buPb3NhWy~hB5wJH|2KBFERLhTp3jcgC?|9C zD91U+_hj#t7)$6Er;(s!OGX4|kZ^L5QVywLe|1}e6 zrV4J#T9I&C^kG*gbIZa6n}IUW(bT!qJLLI}jMBC&xvX}`eX8G5`uSueKqwpsNYz~u zr_~YmaXu3qqlg4?VgrcrlZgp6RjuviOXce+aV*tA;D(Py17mv(JA=-1Xy0>4QJ;Dx%E-VzE1?d0 z^CYM@`#fYn{Q3Jg?q571uMJ(Pq+Y=RgXD+jYyK0R6bBB@Bc8Jmr^XHry9~XcV@20F z;V@6lG)w^pTppQY%?%1%6wRyd0iy|px@EObR{A`u8TP&nAC3mUF&SQMPBP|lzKXJJ zs0QGI%X{h{kbf>>P2c25A@+)ZURq^_LQ3&J_=IbM#gG}Z2_KwPQ*6d@rUlnI=vD`8 zk2a1JzhWVeclx5Ns;J84f6643Yd)K8lHE3~oh>JJ|H6H0B70{my7^r9rraDL^sa?S zXz&Zp3hsSUrmDROCM51VWM%AH2FcHH;k^t5X2p?0bVwVPy~~?QJQ<#uMb_k|D^}FZ z7mCNK==3F7$t3Y9rYGZMGicz$K)*5H-oxFZvT2dhTzcKSvR_9ApYY;=UxX4NxZq|T zDKyxpudm8O-A6bRX;?%704Q=RvxDwcjq~uZy^s;AHDxW=Zsho~+t)nWF!Cuv5sx{w zijW}Ey>@ji9T~GqGmoC|-#v)mLfKX{x;<%6;yn+L+A_zC-{fYc;@k;`*ap#m5fihf zUX6uP_u(u80FWAx#%SOfa=_9`e5`FuZ8BzaOMH0vEslLg8`Cy4o-+feH>{LQ=)IT} zFi9iFeGekfM<&c~#L^lK?yAc!AVJWvMoL-XMu}msFH*KQVz*yHQf>?bh{B_aio+>_Uf%G#8&PYG0R zW^fL&X4pZeHAbG@|9%#9{n_mN!U`|+pBB&l$L?Z8Lh&A|Jh(<89J5Gcz#K({8CV~C zJK79qE+a}!?v{D!miy4ChbGB@JKc8~e3=0yKQ5+d5&VoyA{%Z^` zXKuPOBgMcOBiU`+*b3TDq$KWr)zr9jL}HEe8BGYTYz?M;=N>GH3Br}S8wKLokKTrQylprOynR+HV#knGaUThDXvjf~Z;JfZWEF#*`s zyfM3K$n>9mr=`i%!&dvn#Wp-TXr?%>PrK)foa&tU95jc=g{Ov~nUD>bMqEl^uE$cz za$U#O`fB=k5)US+_{?o!^YEZTj$v6K^|a$d7Hp^pWj0c2U$WFV&(M}z3SJy5mUN;p zH`T<65s4!gp)x2FS5a+Ej^Z)}E^4_b7lq{(v6icXX?L1# zHiDdb%kDL6Z^=1kIBPhNc|UPduvk{W_(|1Gi;VA7hsgf%t(H7%GZzl>$~=lk9Tn1G z*#dWm`NP*x z>1&GF+8RQgpN=Bb8oOSb*=~FFxD}l(Vb6zV8L$DJ_LYm)kqzehnqL5lIQNaj@j*2M z3$e9>!fj@8#YP>E=%9{xa_ti$tKR+IK9U{2c> z?+`T3)&vN`{_cZLV?EbaoSpcWUr?X?`L#Xje^@_k)waKZDSX1Wi+MRR#GmDBk&*Mf zxp^WaK5)@%_W~D8Tw1IFxUvF(D=%5d>|i+=rir-t1j+(sNuA2-i3?86ipbSiupD}A z2HgS>eqF(*I*={2K(m|HD91#a?6JkOb&h;a3()hB69F6WwuO0DVa zy;We$&D`5a5-8aQ*bq&vo=NFE5hJhKw1OpN*hZ z)dE_M%o*DD;`K)+{PuKMcK~?e75Mn@URG|c#Q3%J8jJqyY1z>#3rAM-^NKrjI$knD z@6FC6Pq&AcpYBbRSWYyxUv)mJ?rQ22#FfI&e-r_Pi0{+m7a{EJjM7S^hwr1ymF2C! zCh_p=>S~p8(0;Nn=2XRqV(GAS6DdW~)m`Su_AS{z+k=T+ ze&;i%^9O553S;v@_BCW~#m*K|Ib`EbzIK+?a{<9y#p8S0001FAe*gWVXIzA!%q-B5 z0lD+NJc-;8<1cI7S-x3N93gkm$QHL3Mr??2J`8l3W`AX{X#Po3_36}5$)`3*Wl1v$ zB6MrA7z8#T;J^~KVC?y2JEa>uJiU(cEvS3ua~mh(AB@FsbpG<}yUYnXouKb*+v=P< zbYqap$w;gTIKRU9c1$VZGQ=HSE-NxhZf5G3PaMS@2!H?n0e?%k2O|}B9x$v=uf3}` z&AgWoN;J!;O{+=pG#1_m#o`|I4h_vfK%c7D&U3`3^(crUX zYOEc9wKCRwjn0k-WqW>o?f1tA6EG(pfr8mqxMh6z2@oi++&@o~b_cu*W8;RBi7QqZ zIFNIfsrl&WKpG>pbQF;#l=di=3IdIB!!!+Q zCp(IbdQ%7Y(L{MYnPwlD*A}L83+0%-!x4b}-K*Senu-mWR`c+@>IyNx32=kE*2-XO zXE9=`jh$yl7LWjAxvShL2sRX7kx(c)Gu1F$Ct5MKn4?aQCpSc|I|yB#5?6hBQP#w# z#rs~7DBZUS#+5-1*37ZiP#aFsb#`nJCQ_ z#+G#l?r#j`m4Yp^?HP_rsrR=MsKM+q|VQ|2k@@*?A_2h`x8DYC7+bPyR;SaT_7#+YveR=nW5^H5e%DU57 z)R(aFyw*CwmV5v|{Q*3AT#fQuc3=V}3rH^f3 zv`~~1PEGQ0{%2QipNqB??pj-vWJ^XOt;mGyK-*< zK>=o?p}1rVE+@CM<{b6+IyHw$A+yg!cCVK7WO_$(I&LJWETbMl?Par;X#M3A4@`L@ zVpN?I!1-MsnJ@)O)6wYPjN*VhVf9&+2*b=K=yX;c%0`P+ zW(f_8jQZ+|cDII1MJ7iNi){96T7)Q%68+p@oG<15_DuJT*`O&5&S0A7sQYnRiGO8( zx1IF|jB82^^X^mwt*4ny4umi~+IItVN?j&(BP=M z3JTcjAc8nZ1))~-*;GW`f$cAJ33g;WFQmOr>w`M>2G%A@O^4#o{7(A=F%WfFA%thx z1Uv4?p4m&=AIR{xW1~Gbg0qydhG)fN`Z0+;Msk`;=k(}#wa(>QRzRyT%5!C}yt#%N zE7k66u&o5lR8?kS&Y9g2gS$%G4f0H=)p?}}H>)+I6z0hXn~Me1=4Q**sQWdr5cmgP z9*T)ZSf!6Fkv`0zg*iD|rj>Sf_)9J$6K;|Uqr}~Kr;{)t-V@y#-x1Mv*dYkE#AU5) z{rflN~C!3j}SkKGEfM>lupJvz^6TcbT4vD2|dLA=r$IK|I#6FH~)%5>TD z@||g)Q{k%pdD-t+L+&HdQTVpqxL)( zncU2v(vGg=dm}1cwR=Q4XMSNi8v9ZK-FmY2KCs_7#H4DVs<9%4M_;^XZEr%xNh_la zyFabLI;@NKMiwRO*knL_0wl5HYc|<)v7SZ9ELUld;i|)G8}oxP7F(1Z>#l1X1HHXH zFh{spd&jZ z*=^kMg)6@=HqvynU$r-aUkJgxD3?YCpZD6BBpznpbhY$Zf-6vWZH;DKriS^9b&&mU z#W4QQ<}&|Fi=8s5j4lnu-Fv(UWQ+Xl6-Dl2qzL&+*~E&g+y93 znIcQZM`)dk=U7gnvAw;e1;n5JD)<)gR-w;pZ?Jtf{If-M2&1%P)#7I1)JG4scEFtz%ERH!&EG-rpJHV9!R(2V#{Z<6d3B{m3dF6pIP9ADY8cDS5;xmZ>nXbZ{|)~7hM}a1WZh* z28_JG!m8gNw79LBURDS5^bYZvPviv!``s}1=R&22ev6V#q_azyLoRks_PsFLz9uLYU%NuNA=hfEAr<}4_ zUvvyzhkT+)MnXBA093^P+^P>y4U9hbO>(Q@omN2}|MpqwJFbhP zZ(u2b{rXIKwIuN+B%!N*-hb@9uC8-@qh*dvn`udLY(>t{#A6u&ii5RW-5jaL)~YxC zfpM?Yd<+REDGVls;yjB}as(3Wk{g^m)fw-ngi$e785q ztzqoA5sa@IF21;4yiQUFpz*nRkJjd=*QVb$)BAqV=1wS#GNr6Kzw+9>3_LoqkD92- zy^;>c3r<{U@#qS2;`biLP1;Bg_D5kKMTd+_M$!}aL`qF2bXCVunGLA>6`xu&t%rxw z^(694XaIyJWDudELh2uc?xAqC>{I`wr)_0g6ugre^Ig8Q*no^l^4ui;d365-$>1=$ zuB7uwA~=cZGc7wu`1+*hABNTdOZuJD^TZ=euzdEPM2U(z0@vO`*MGH<8zH_*=C zT^I~@rY{>Nx!1jq$vE@daLa%da5TQh%@W*;HhQwY<*7al-jrTQ)&KRl2s)IO#^R>@R=JuuzS~=0nGUwMfjrHiG zUL?(~m+5TP)z!+DpOkf1l+H?5hDCl&>vUp})K&^!C`H6H_B!{o_2n(VVzcOHNSgf1 zL(h}W-?$~!z{B82^&_Jt-@VVsvP>(bXy!ewH+&9HoGx1ye&C`;kq%0c^}}i^R~dIf znpzl8+~N7R@~00N-UzsCC4R3bZylQ7>RaM<+{QwVH!D4-Ch~NLFHZifm?C3a*Ord@ zqq@6uopl_rEz-Wv8UA1@t7REo-s7+3L6KTrOhqB~Q-?u+TUX-N8S9^^TbN|Md(r z)Y4#10`Gnw5*Yo;So0)?kY3{#gu4H7o2`VH&8Ub}iE*@>X^S#We1}$TL6LOO&ZfrvEL6K|E8t-Tx@7Aa+z!*tFQHW#zrRn~_?) zt+gGd?V1f3;L$wKb>&#ngoY(%;KUJXhY47kE{+pVzXPlRIyZPRbTx&o8KIDGv}w3L z^PX9&1c;TT*9LNC_POz-U^0B!E6rpX4z~Ok*VE0Q&VGWofMw4X>;r5us+)6TDM`I@ zyR0(_=}=-gd|4}FR~IKk<<9lS?aizy?2Wo(n^v#oqFLc*ile#fdd4KXPfyo@eP> ze`w>oKE(&;@?JADS`Yi&%=)ScEcj!1lI+sBkPZtAGqmv3)9Q4x!D;z-t-W`Hdr8Z- zSdWd{L^hqu)Ir|1B@RRpemOTQvK(m4Q$yG5VRb?-T|bD^U^{WK4t6A) z0A(ktoLStw*|63Ut1-XX{S_2{)Nu=#JmKilEKeC~6J8$)tn#O^JgCE>=5x6|!_``O zfVPv|YxDfl>($b0L*_iJgFEw$OZ=55Ya`>xk;LUBH}wfx{un9xC~G*Y4Z>3$zB%47 z6nI*blG2nh(jShq~w>65$sJ1tztzLK@{y6HAbg3|Fb@m(i z*@j*>#_xCP&`f7QLS!dfIo!^GZ`^nW>QK&Ja#)$y!@2bGI>Ki%^9YP7WB0HzcjlrP z>)TKln}jnoYrw!h7?co`ov5bWZja%gI<)H;OePu+ z>53hct;r_(q#dC5WyH(ZJ$Nj(Yp0eU$>c=o2)t!HLZ2u=OG8?B~0ULVbO$(R9ar>q-o`xnw> z3VpOfc+Tz|nGB?DSt^e$ZXKL14 z#stkiU0Z2Rc{}Y}M;R1xGG;W7biaHYDcjh%xVX%t>M7hxV_s+d8*&kEeP#piYOEAC z5J-J1?z_5w5Xb2ivFvaQ$ZR!gbkt7Yzu@ajKUA!1uxb!4^$hdIMjC)*SYyRWz8=m@jZw zjoQ))-nfkjH>rlmEk^AZ`PY`nBGuk<)aGqY7kHL3_SUXc`}GDj9O#?~U!q_cBmQeD zIH&>|15aGhl%1x7PWj{#O{Z->&$TOl|1v&7{e3IzTEodY-ArW@GUf8q|9551rLaUG zwaCQ1bdkY7M+uHWQ8K_k_b(ZMmt;2BZ??iS#p~Y$eELKclxA65dF&_WRIeLO)-g`p z{-Z;m`!0jBmT3=84j`Ac(_|@w^{5kH%Mhk|=QW{Izp}Xkl;162v+{i9g^$clmR>%I z0j3Iaz$nfnF=%?+mi7^96aDWi2l{(9|;eX$#;7;Q`l^~qvA-}p!fL{Mh( zP$vBrQ0XBI$!knIJFr;(bO1MIEe~92JQ28g!pEJ~XqmT|l~~5OmQlC3iB@jbU-z-@ z#{f@+?9@2j=&1Y)Qa>Y8BoZsM??U<$>kZ1M{> zDs2QSyE3#@mV~3>bY0I#pIT5)xRmQ=?8Cf!Pz5)g@>%#i1 zm0%k-T9;cucum{rKC~eY7o5%3%qVKjj$#h95lksxZK#gSYzoSNb4Wn3 zSbdk+UMB3XC_Ogc4bxJ82KX(2Qv!%vc(13go3faq(s0{r`D?STbvE7Y^JF4@{&7wo zg8`(mrI5j&EU{E(#$kivrQLyH2d~NSP1Z}s$Bi8!QVefm2Txti7sb)qvC~6uCLB;7 zt2aE4QNm2Mcf7!6SL9%6y^8*cJf4lTlM|uE-kQ&RHK%4ufx$&O-x`3{HV5WOQD^(g z8}OUv4aCVp&u%B7;>Z|!w;*C^2$|T;kV)rKJgFzXk1%SCE0sKH%jMS<_xGQsg1hL* zb}2cvE&pYdF)D>|&rh>xCmS_D=7$*;|CG=n8~)q_Ap$Z8soKiZhhsOJ_CRUtiyyEH zRXRj*d{3-w9`0y$NgkaQ_XclLe9L+!p1>S4&b&6&^G>Y7w^=%^ej_N7k;AO)U?I)N z$2j6wy>4qg`uo#EkgGM16V+N9^bb*k(}M-6&GhDFuhG9w0<-smr<#4%pHdX4`lS21m^Srp z)HOj~>=)te?SjyI>e;`}1KFwO>qYt32qE4~L(%u7CcGSxloOs}&o1>2eqx8~wxOtA zWvoV%x@eSrZs}6DOaEP7t2#Z#!)x`Fy@)A(0lv(}m-j19JQ5ok`CMl;PpV}Nj2|8% zc?Z|mY>_6Ysqj332JA1VR+11ENJde=tJWAIn1<5~O8JsMDrG3gWugtS#$>ps-oCI9 z6b)6O6P~9xldL1c{f0!lBnVY-o``%Mq=rEre2cMJ6D_RwMd_R@j>ENsa`s{bY6mMi z_`JMjvkgt#_;s37D^QO2c}sHo=a1fQrJb2CX8IPO-aPPqGpxD;V)N9#J({rM8*&(6yrzR~0Pda%@%r!ZTOmm7qBYZX{WA{7R{>AS|WM9lKVcPD{sv=wq$A)cqs}s(6lrQ+$n|-eK%6Wn_3zV{q}} zX$9SuD>d9F%M5s_b>LE0ZgB)pjm4(xjvod3ba)YI%4|CGRJe|)HW}r#vZ`3Wh1xW5 z0@poxlE1E-CCE0!`y+4O@&n!8Hr7!LkF8wRw4+5vMt*fR8@-wDbLbDQ97+E+>ooUz zyRYd9hw8xUC?^Gni@dbV!%k;b6%IM07?0D^X)wn<33;9Pjz?7L9PxflLr}xUoOo~5 z6UfuPic6_``o;`~>z<4J6|pUT(-P@P()RnS$BTLlYmI;2*19aT9x;u7o?X|_3+x4h zP_Z^1+DP@76xxE$m*s=Srv{~2PV4?pb&VpD+(M3{swQ_@-KS$V)&j82O5(MJaNBDMm0ERL zlkPrjbGUq3}OLubEcp&deC{hPu|b{8WYS`GSj z)nm?eSdS%!;-|c+FId-t&{JDQ>z`R>I&&g^vUy_=ywWp2Jk-A?pudXsII=W~uX-*Z z%*M7eWT=fe*?Ax0f$H>rya9r&kCfJPCV%oOibn_ zmFBO0KC7WRr(u0V&8L+iG?yOJSh3Y?h;$lvp9N(BZCVfO|7e(UrTj51;v1DUY_M*o z%x^D$;v>+qV>w!$oe=}JZ^sq@V{Le>bk$ikElU3e=Ttgli#xJmvf1Z+-tqB13ayAd z+5L2Rqk#(q7????+lWidOgvViDhOe1w}VIhUvFGQMZ7gN-ri0R> zEkFBw>^HVLgF)=X-&*I`EUb=Fi6;ovR?^QDc?=eM=5F{f?mcok9x|zoWL!|ZF#17KAn5TI14Hi&OP|ykYcf*CjWQoK58Hrax*)%T(PWG%hj@Tl6Om7_h zw3_4)O|te+D+hNC_PAQPWo)apG5cNqvkY4<&It$<^2}Y~!<@>83Hjk$!0whNls7Ym zzHVH~X6I9G;=*1j>-9Vf+&Ut{>;V$`r?l4qS?JZRGp`&rM(utfFrUB9ZP2op!eOp} zdf$I?9p^7~9l$GD^Ec5If=(Y8(qp2ET77#{Fx_~_G7$9|WW*MqX6DMnG(R34n;gzD zY_sz+>lQGqIJ7pfWU9LKAqVJh)aA&(R%9JZ1erB*r%Ey_hFil zwW=YxMuv7Cq^sk@kN_J?S_b!GysuOB_o+;&U}Tl$_@;AuCW?Q@b&Ah*9vRc8>CutW zfRGbJw-ly2vKCd($%xr;l^sZ2dIpL1b8<0muG)21d?5eyJ#CPT$w<4s^osJYDUb%U0Jjay3=AD5n$ zPq}Q>Lc2m2lC?Icz#Ez`l2L1X$D-9=^5nv6s!v`st|`mC3lS&X@2N8DjHoL9>HFz$ zS#8dfdtsQ<`gOvG3-=64$?lwmLXXsFvjn!i0(*|}I(4=bTNLM_vu^$ zTZ(~-kR_qZnHGcep_KdmYb&Ry6f`E0tF@5b&Fi}6aedN_9%pA(|Ch?7!5>M$H56)n zRd}Ow4&jqwwNTG-zphZbVdwqdaz~Nn!$`gtW6?(TVG*+O7AcsGx4oA9iv?x{ba3e@ zPwhEp1l{j-UsL}rQ2utt0Kyk;nuXAM62&5VF}rDfWM)C$K(5zM z1^p9TXTALL$xuzA{VhO$y>iqGI4p3GenaJA5~StTiR1}vm(Ko>izxKygx@s1)qsC) z9=iI8DobgY6`_~lN`ZqAhLy6iziW~PJAtRmds+sdH;?UaG@7M2Aj8d*KC|LcO-W$T zy6%Z5CwSav9kZ9#Q@h=;T>58OEx2LHS3;qfYvFI-)$!Vv+obvvMk${lJswd+q5&5u z72F`s6`N3C=x1{5gPPgefF`k8H^$Cgu?RU!gAGdFvi|bOVpc z*?sy5KNbhM>zAbl)6QHW(BsM@3Rj0)e-JY4_iq~#&g9rzcA?pr{y zIK%5_w1T2}cVIvt*dMusk$6ZP`#s|v3kJ=#c5)Yk2zb`a+Uw$NKNG2?YbResu~P!)s~i-yufjw}8`=!m~_MkDnYH&J{LY z*`wS2wnMi7$)Pm}=3F?hJUc|(Q`i{16D(5F&w*C!e=05xGH@&XDsHzXxbAn9?%dAd zX&vb5x1>Iee(6^Ja}n1w$aPZsOZ6 zWn%teCjjZ{y0B9VLbG{-hAE02({e5KSKDOWI6gQh-B9_u{7T#vUY~6@Q;FENsbRkw z?&7~YIrDcTVV!P3UY$}}3o>8@*AK^1OJg%GEGvRN@ z4aVG1KkFtvdixGsl#=*z9PRD%p7gu!Nj=QthoKm%I<)QMRy;B3=iJvAwr;bqZGfK53kNY(3WfYdKYHU!Q#n z>5K<<3IucqI-q5PN|73#nl?$nJof5Q+;(bp)^&3oY)!4Av7qzgS`VX{n|XDT#|$mr zulq+Y>5Ur_=Optdy<4@7Yp>qql|w%`x-^$whUi57b%nOQO$n@8UN;~4YiCZq-_H_H~P(Fy9Ae`rTvPXBV=s*oqTE}iW5c}yWvx74Y{_!-6qX%FuNp#W zYU@$J(HC^HdQwsZ|Hip1yTJ9}>KB6v15AP}Mt+70`M27of8Wzz_{5>F>+@9hyz2K9 z)(3JH<#JVGOsM)o_zW@-qjI)!9xsasSnkyX3em*|$qv8@eXuY}@|0CBC3815o@l(COOc)y8hXq{OfbuqU3JqBDC z>U{EFxSkn#EZY)CI}{mFIkjY zf&peYig&MUWb+77Iy$ zZskvm>g#nLE0wc)P%Wn<@A*sOm#i#tGiXA}a#EgT=yx8Ni4l|Xl#s$Vaj>+;zNeIM z)6%TiyStM&*^i6a-~?1!Si+tweTDb+QfG?2J2mbzQAOU1NcapyK7hGK8=?1uj=Ixi z8_IqF$!_~TW&hl44Q5Wba zyii`6IV^x@;d8g1nN7U573~-wb8Z|Gd+%(z)@7r>7FLh-PU=yEPZN-DU(!-8#l!SI z1p}MX0!|oHe#0uQ#%ft&9D2X^sHE{~KPdOk4;VK^=te{6K-ytRM!&%{3@?h#M(g-! z=+5e-D|gVt2v{)L_p!TV0ztjlhTMq4vB#=ov`V0WiG9XO4Q9(-@7yN6a>lqZhoqz8 zxbMn)@J^~{Qz4IXSG=2x!_}+XW|rXJ(G&22t;#1Cd=Jz*Gga=93h_t(`ea-p4V~W7 zU=@S*cUgXgvBEYE(qC9mVnq`u`57VWkrbPJ1cCYqa z-7rKPy!VXE8WbB}kz^E5qbA>iRbb5+$o(({-!tAa-tMHn1t>63hFmSbv*3GBj-sly zcs!?9bi%UqmhkGO*%{log~0g93tJ%}{uZ{emNSS{HhgGVls}8LQ^(Qx2*qxovd37j zPF6t7yy_vDtV9^NwJlZ<5>Mk92TyFu4VRAr<@jama*|6MR}%bkS0a3f+Z0N6b#=w9 z_sEyTo`2~iw5y$G$0*b7y?d}|7-FF}TgkTpG9D7TypPEbKzLpJOyqnL^W_ILoOER5 z>|H=EGFYQN;mPi^knoJn-n5oaCql0cw=LVQK|8(l`d@yy^F=!tO8&cct;mtKSRTHtQvFs@zgPF#s96D1Sz9*_Y{DPY7 z`7Fk`d-r=!q6!m!uz<-}h#K+r11lzr4>6qOAs&H7rTh(|CK?XEuNNK$_C&IJBSdrL zy~DOYKROR-ztGmm@!KKXBN$_a)vQc^!fg>Ixe-Y2o?9{7_oYmL{zAZ@9LoCr^=CFr zgb8t`<8s7Q>!liFyNyW(0rMa$Yf@~CBjFCM3ABIJdJ5tFj`)17S~P*Pga{-Tq9$M| zH+;rNwL*!CQ|pOjFC>#Aj-f`Mzx?b?}HzbD&da@kVX|S#ubPrb)(qE-w~e`;R@E2$>?*ou>gTDoyM9w@8rOo z`S7Wi?#pIWDrASHV9-V-RWayHsb^I!$*@nzS$?ceMLq_L+Y$ufWRzRQit3dROD3z= zTabf6SLAx;&i&)>MDy&ftj8>W5swp-vsKGUVsRC(o;leb3c3f?P1zF%vj&s=!^dGM z8liE9OW5RRoYT*K;Uu&S58P%m`re}eCEm8o9D7_XmNZZw!yr;ge*O}-8vOI#ZerOu zF`EfaW#%MR`hT00Y~u;c??m5;CRkUCIaf-s4YIgHQB?6^J?{u#E-t zjDG;8jO~H0cKb!(19<^a;~%cl5&~!W=XnfcnCg?DIOqBI{Pp0wo?0i(8Fd2!w|D^F zPHa6-Z+$1akOt;t1q0hsn9Q#P#`BaPv6Yp1&~66^K*5}IUkPDoP?7~2r=`L8Peod3<9_(Tf0E$z;y4+Wn% zUmzwWd!E82AF!85zE}9K7yawsMHjo?0{-(E_m@=#T(+HP^tL1~-6*YegVH-HxG!`L z(EhsWNDZE&@tyzykO%Lb9>tkmvOPM>G}|ve=>78!UhylzcX!~gDLg`3KglOKqkR@e z<9ny&=Ec|St`?bzDMw{}AN>5g8Ng05xxT-%cHt}wt5(AnDm|7v;QW)9;ERXrzGXwQvmypB(T*d4fp_swH=~{Hs`s8h(-V|XH|7@1zhBiYFj!pO z@L6c7(YBR}yTl-7M@{4|1bkxbO}n=nwXm}qH0v}qnE5A`Vgkgf5x0EOw0#7-X+>(e zEqt!Mp=x~uDN1pkqOnMAS9^S|DZRFCm=O=DbiIe!{y>4o7)&W&=AqAdo^R2UekTqU zwjrWMXF^G&IK!v3;3n_x7EpfpAZlYE}s?*3y=QL!jp0HC0=P_ zOXU>bdb{&$!h86wMw7lpRV7TlrYQy1gOIw;wfN{mU*a^Y!H%2y z_PadkMA4HXmg{T-6!wb%J?7#^kfC?eyw&x#;u$4V4@qd@( z$`T)Cc@n;EuFfv7>XMkewVnTzLGflNIe{qF-9BdEsp#h)FFuPqv|kpQnR+pL!3}qf zpM~5+B|Lhq-u~<68`mu$Ia;?rR(fNY*BFwY%eWBD>FJ=BhZY4-@Qy|K=#iyF90b}i zbhMNuUfUN1m&v1ONU%vRefV(b_J|Q19m!x~eTBWJ=$l?$E0kv*`{DC2HS>aZd&3JQ zLjeVAy%1bNa!q{>lIbnx=P^utk4TLY0^WJnW=;M`Q;mYDr@$iVSoi!{>$NY7fX77% zQG{{PdRs80gykXG=Ez%5D>)wrlY)Cz9)brK?0gzD7h#7?^97Yg+Er) zhGIJG+Eb4{tdqrv>$VCTSNq{p0sD^)ED_MKjfGY@AkC=_p{liord+q6-kl=RMh>a7 zvXeTZSG8!dcITiMM9d{jAT?D6BW-D;8BSk1ySL|nLo$EK8~r@@j@XaiXst^;cn_xb z!bxQQt}XEnhY=0`(L7{BuQq?%@n0 z_iyb4OSb@%T^qTS1+tM79jPbtD=-z7@>OBH3U zEAEt_vElpsaRw|7u`X|6df&K>Wbggz^`)@P8jKeUDE*@d6T!!P_N0y8RAbd?)fCxH zhy_Hl_Nr{re;1K0vMHu=chR?-XeX$M19zRxR-``K|MmOTY{`qfH{sUVRf&x-%jEDs zj}(%hwhIcomQ*|fgs=qqu$A}u=^F_?cBTTQ{A^Mc7XE1u_5?AP!#Z}DnDlY#P z;_5%3VOdAlqm};dRiIz6tJvi6=15)M@u4@;dPJAf-bTclujp7_w<+x_oXW4}U|MIx z;?1=wapxX!)6Z51Nsa`|Z95~6mF8aQJ87%Mj}`_F27eO8?lMk$naU|;qyUCgF73Jd z6sA411HC5re>j2}1NmNvQt_ney-)3C4635~y=Fc*y-*dq@eugu{}A=naZSB(+emkJ zhjb1kL_!)z#~3lX1VKtzw(z2xzsd7_ zkO|v(479o!UzZF>cS_j$fmL>Wr60S>dC+)-_@=H%K&w^rS&g|Giyb(8Af71u?f+yvy5ieh6yD|}2Zegu|H1alx0gJ*sTg-7 zgq;#@o1I9WSsR0I%}!{()G-B134i7SlQX)LBvMwJVYd0OXwtfjZGlhd%7wEic;wm)`f zJhF^V?Bh={_4($+=Hs*;Ebe^QabgHE%$jT23yHvQD+d}@)BvbRRmtlNRY;*V*>#S{E1LSG&dX9hvPjT{Ak z_|-OkbN)>kx1@-)F8m)stNlX8g2*;h#}(C+neJ<-UV@jf*tUFZb?=jq?8<7$8< zH!}hTKK#RC6^)~atX_-JN3`Sh67;z(h%3`A>Mw|wPl`RQ2ewx zPtf;_F(Kg}Y@kf5mWz*m+DlUbF_EWmepNp6csUu*>Rtap1D&2j$DzSxmT^MI;6llF zKMrux*S^*Q{hV8Cq~ZM^Mf z3;`;;8l!cQ=b(;4>Rz^*cFF0fp^mvZ%^#);sj zx|(HT%Tax!ULDKp>JHDvCmNuJKrz9b485X!kYVD9HNglt-6!_&r zx@NyGh!q5D>sdVViGh8f#S&}=jUYWPshN&+bI1?dC_D^zqQm=wbYF{9WdWneWFUiM zNe2_ZD#&w1;Nto(-s_4PwRF@7)oiG2$lP6Y>QUu1j02v4hQ^OdPz4)a>)BZ~47$QJ z&rR7s-S=s?HaOEbrZj{k2|M=V4>q7X(0iF$?a!Qi0Q^~Ck`)XPHUj9IOe*EynX(6| zX$*(1@a5;p%(qZ_4d_xmVVtUl$A;Ah(q4v_DQ zqpN{P-Z>-=R^5vAk-n_G~*CtzBpN!d1whSvxeir?-1mWaXw2C8lw13nm(=N%0Ig;}X`FFn0Z8XFA-~Xl% zmwxD9WMY9qEEXJ93)h8XL?SmM7IWLcx?fWyon}e=_)=9X_ZsZ9HI3?j)ZK~|x=cK{ zHI(#m9)PC3L4EYcf+>Ji8s`{LqkSByG$9Rj|B`q{3rv+Jd6>-tCs_gsaPIgn<2t1$=w#M5)P2jlvz5?PODDG*i{p! z(ZhC#p2vHGsPz^5r8%%TDbqlhoAqFIC4uj`5rL0V<-Lj6qj!Aq>c<1z*nrijtq%U> zww3as4%=6;({S7sy3vG&I*JDU6yv9#<)0+~X=DN_biYsLM$FQlHc6rqo>u(u&|Eb6 z*gTS05k7ls`W2*-l|c4oOKEY?cp_nBVTaBaLMM{AGi|(zr^McmKXJ<(0Iipc)IVEA zg=+tf$1*YmlPn;VmL)ZOvHI>)hH(SNUqsyvI)sj1+VDyQ=z+Fq@#|FLjeN*JKniK6!xoM_5m zYO<%!$uToJ@wdQ^0)V}Uen$TB%GmknRM;*MUO7e%GdenmT47%QeYyTU;#8mRr{W@Z zv;C*6f-8YjF7f(_gHq{wV7RIzp%Z-CM6fi;OOR9BpTsw|2$T0SiH6pIGI$m)XhVp1Lr=H=4+jm+7 z+UpdXK9B+88$z9&e-spNHQ!3}IIY3HfYlJ%HgoB~D z%lV1ILNU*4O9@vs(tj0BOF%$oefui*x$kKyR2rQN!$-f*0c=6GgX#@kd)B}!5NU1} z{)4;Xups-E)}MfTuy+ERNooQ1+MGMv58sY|SO_k;FXZb_PCCx@C>5KjACF%cotLBGPW}Ijh2T6= z=BhF-1Hyz%|6APKVPQQi;G`%1&$vWA^07Xbg!=zo`9F)!dOhGh(G4+72+RwFjr{k; zO6m@Y<8(b>gb;Ynky?Rup5mBb_X~ALGv)^)e^pXG-=r zDa_grOo}sdJ&JL72iR~G@S%z1_{1G`vy|@b$j*3l^O?%oJB#Ye<5+fr`3cw{cPjzk zSAO|Y<_7j1S`N;CSl;&nM-+cJv=snpq|m@N+@}+1c+X)%kE?7FVX|MFsZHP1aTddE zFG?89%GRO|SyLy2T*u?y>-81(V>djhi5~qE@oST&>*LF-Y*&JG)wDN~rKKIA*@+bM zonb|RxPk2KjHeK_uij9*=i4yhT-fOIjXxLVJ!s1?+!U8J;O6!iIGFQVXGWw7i#AVetpH^i?vCt%1Ye6Rke{LZ}}J z$=q5`_^Qub#=Opl@g20Pn6mrei4VxRI)9M9&T>8Yhqb&y@!I|-B8uSKNeCDoHD$lS zt*P)+Ac8_?aIeb9VnZsbxLmhIy9NnGLr6e+=F`bZ4e)6 zC?UrWo#w$M4=Um(&R2h2r^HH|D~EMVF<6JPg?9+(Jp1HCK}#~0u$2RUBU34(EX1G# z_7<2tXaCvD$mT4LnfH)pA0&`~;bh+Z?T)58k;P{FAY-z|I#oJvPE6%Ad%-Q8^;7kJ z?cse?QUos+sRhNi^m`U|#uJ56fQ^+3Dc4|VH(U(TCnn%xnhxO}wnfn6O)4YM_&g2! z;SZ&RMjGw*Vez%E8n;Wka%d`P*AQLuw+)ov?BBr-u>&XsWmpx56f~`-^FPp9x`i{U z5fQf3f1@bbp1etRoE$&3)}+hV@g{<>uJIoGZu@KO5nqy8CJ8;V{&_CU-PLZh$|^ys zk@{zfJ6__@N0ferbITe*c%f5qk-+=5;8!Mg6A#B(Fz`$5;*wKCJQGXkDZT5M!H%)< zE)ByWu4&+K6YuwQsz2@BhiK1@KL}$3_lNC9#r@>kTll?q<&kMUGX0)}Lv6$dkPIa^ z^z{ymhIIPEyNag}8b}%7H9Xng5oe`3X=RawB4x)e2y0Ta&yEgCC$D5j#^(@Fddeao z-?aAVp*Ro!i~>!kU8X4IF1vl5{pL;G@do0PancJrBlE~n60^e{0V~qV?W(h=wg8CKlx!8tXh#QSULMB5O38!7esA#7bftBGUcnS5_eut`R5ZRDU<4w zypz{}=D@@D`?L8CfiH5xXg5==# z%!|9zn$=i~W*T$6fOT&Tht5`r_Mdx8|K$C3h_7Hti{_hrC+z zO*GYhjSvA4KamHAz2FGF?N<7i#r0P-i8rN8&f5bIV!fs*1-u&quJcuPaQYGB&9UQ@ zDho=Nkh#3=+9uTpjxs=V^!YQN3~)qKCwn6phWE$XfJZM`_p6aGjvO1HEr0 ziIP^dP0IGw+)GoG)Nn9wV*X77x&vcPW2Z1kojjwyo$r~fo)@NNStj@K zShj5?`!%!-&~zCoPYrUw1`X+t1I9-Uf{(F?>r=7amcuF?zL+V`J%YKiL{^DjOQD4b zZBpurL4LKcTVQoNWVjQgzZvs1YL83!OxKa!KG|`2kWSCVViTT}#E{~=W2oe4ZplEu z^e&$2wGAp?LhbK@{AlQ$H$jJ|iaiblZ9AA8qkEbslYmoKVfAt~^M1S4SxT0JXV#4I znMuVk+O2C3PYp*r`^~RJrAMTXc85K!nJxUEMYUO?%}fbfE^s>kh{yyWw6&8-%I6m6Tuv-Bwu;h2>ff3YQ z3h9RzZp9pNnX70bv^0Zw0o!K|wLd2qydAK!(9&TXln8xx?t{10lGE?v*?FCE7gv?_ z8?fJ|Fccc{nCnI>DiN@OiEy{g#G42d;(+L#p}=*nC0n1q-|Z+DLrSwDJD8C8-ErWf zzV+**LzXnOb-|UrcAk;ts}3Kl)x4rQp&A=13Q{1_jp<}Po$M`ic>AC~X8U$kT%%j!zscDzh~%tf%jU| zm^Id>tflaWGu#XJb$=jmb8j`>Z1ClkgMO^N7f0SrCfhTSk?kiE^J&@>l2;lszW#VC z$}Ltfnj^}HlkqMIE!TNgj#5X)4oszI9Q%!hs&zijz0S9&GD$=R55syYTX)?)E_MTv zFU15A7Jhmb*v%IYIWa!5ab!Tw3morC@Nq}Z{kCi`a*i5o4MFK$I@ zUXcy479i@11X2asJKq;d@wdl^K_9hAxnTr6wQUIzyId5XF?!S@1wgV(C3k5B!>%2D zi$P%QZ;NhwO$d+R8b7?T`bFcbXRKGCgBUO# ziJ;l;ivD~gO&8q2AFo4{vtf%shGd+5Mpad92$6{!y8MEQT-j2VOpC9HmS^|>u%qa* z-{l;{6tvFJB>0*6SY#q#JNW{eII6v^AEnzZsAiD`&6ASr+q_^IdPN+vF{4)(z(BTA z>fcdk{_AhRU&cQ07m&*QaH~JQmFnTE=Rzf;0J-4$bsaIHGkyl58>Hn83tz<*&7pqi!Dl zem0wh>FsU$yO_>bs8kRs-4~i4ia$)9(-PV=h=X636Y4&xnSz7`GHAR~X09s{ZUE2p zl#!7=YlI09N8as0xEm1E{U230>oqwOo5b>B9y5q&Ne7124w!S$^FW`y%X(0^>VH#G zupop(rQfbJ5rptjvJ3sG(W^gMDa{B%{IBDfmYN|nqRj&QSPvOW}{WG z@aY`>%97t+1O#C)?tRJ5x4-W)`0UA^bg1ztmKOl>GGEUgnQ8VjiZ9naw95^@xVro0nL6uhc$ z(T9hwO*I!8l{<{$)6wVM&l!s3h@=RW60KY$?^t}MxILye$>0BnxpkPH*6NA)s&I$Dz@1h= ze(@BU{%b_VjwL);y}a&L-Xuc5!`n$Y-9y(3up4L1vU4l7K@7G| z9d_a=GwG3%&iP`71jBS9gVxqvu-etKLS#Sa25(3_FA5VXK8}ob8_BhhKtmRcb>gDH z7s+6YeNFdD=6(k=JW%!JKdkTH_6gmcjWGmmLYnHe4EvwH#N#F>Y-)0eYrQHeW-ffe zrM(X>Oab*R&eifkgIxv0RP{7l>iY#G4-I)OLW=!vzoh?Ry-OB-f2B}bY3xGWuUi5NjdvNTRL9d(`zQuXS>lvju*MgIc@SeJx$v&$4!c&Z*QTQZ4?bKzO-Sv z+sVg5YmI_X_UM+2Eq9MKlO`GkH~lsP0$-GPtPw-L5n+M!K+4x*knvABc%Et*n@$qP zF1J^znQ_0MN#itSC6kX0qfOB#84>2n;N7|4BA~Q{mb;C?pmgouQ^uIwi)_w&B)h>m zTrFX;I^6DBMYdLP%1d#AP%AUFLdSWm$vlW%n}g~2$*Ud}gTr%j^T{)U$W3~PMR3Za zE>uTbcIaF?84Je`X>_ZFSdHM(Si%cn`NuApICbNWb5C0#LS?UR`&+-{UR+CAaKNsq ze0uszRGq1*%^_g^jUTgU?7ZQ{Zfd~D<|ZU4U!|9w+lp;JCrCLKe@tvW6mJWCW#hb( zfS$=QtCGA0N@sD^@XdG9N6kZDNK?HKO`SKc@vUjC7I@j^EMo`A8wIB*LI_` z;hIhH$$KP;IY~U~OCY`1?>t1HM;;+Ud*QFpJ4~j{N%$N$N~WHvt9oTRIOd~u1CQ^M zlfL(!;V#Z}=f0&8lNJUEuNsaIqJt|b#xhKlU2!>)7D=AZcr>$~`7=3+8-*_Y!y=kh z(l-cHX(L{bIgeMs$GYzims=4nu*i-39A{I&|RmJ-ZwJC ze{6emHhDLqoc8mIo&^tS4dw%peG0?FaLPk&tzwC)15-G^@mBV4{K>r>mBkQMr(nl| z-L8n}QbIEYppG(wAT%g=>hs!MA8CEvl>(z~i!LZ)wl(zRkBm$IN_Olj+EK3EFqY^w zy5|%Fv*-?0yfQMOf8k%98DN5Mbg2ANBCDZKhCrKMum#<7^?L z=6_h6jzOy@@Rtiy%r3z$5N4Rysf_22gP$(#_e6Knc@7K|(DultVnE`lL-CJqkSFJC zr0EWC0%7k}kOV!(izpAAf=!~>SGf12~mVOo&7BJvj0d-P=I9HAvgjJng4xsH_#R+U+dyZpX`sM|!NnZiueM36hK=r_j= zpZ6=?Yu$)a(rbHiNgq1i=)jUUxuU%)c7JWYTs#o%%T_^%@{7HjCU5q6ywTu^l(^dh zP${uv?Ql@7dXMLq^WazFNzpbq&J!l2he4TtFJkB?%LVY3LY>P9dJZJ3SR_pAdVjq@ zk!{DT!Q91)2k6}QoaLjK?uvr6CFX1#Bv;~ji$9(VzaiOBOwS*huhQM|bnBd_|IKSu zF0Dn~^_PW2S~8~}0Dcie$W(y_+xGO-v5z0A_J2A!XM7V*FO6z&o5K^0Qt`!5nRyYp z*5sw$ud43$W(E-==7x-~=T5J2!6jWZ#?3IewWXu#Qb;sTWbXuP@BR_GL$J4L)=JEU z@)Gi0(EL#Bb|?h_&o>bkA+3LFJzo=Mk)ZQ*wYS{A(^0euK&wAQX+VQEC9VF07$jr- z6hLKhr9Sp~sB+;Hmo2ioS>PJC@v5iloDEM^@to z7S^S@j1rY>vSxFIcWdgSD5_}IVeb5x?PKC_x5sm`5p5#ru|uGoD7Oz6hM&W-H5LEv z*gIXO))rU~bI|+}xQ5aHcyNgCr=ouE>ie$RRG%L5;*)JWpVigWm&w;maqllpg-V*0 ziTa@D@Q2rz92l#l}CZp0e;(OY24360{g!z-|+Q>U$95 zl?9JzzdG`CypdFga@UA-`@|&_uNifaG4)H9LyDu6OgMu8hMy^)8U~q8`X~NQ?1x4= zWh!0^ET-O<-YP(|uoQW@PLW-H7cP_8_Bjh}kiej^53{L|SSw7t zZc@%JU%V}14m~wDxf>43!Dau{ZdHGuxX%=T?4RT@tYK3#I8do5^W^Fgo>DV^&#Wt- zLXt{5Ns*veuS>>|biXYPm8I>TV-ngEyL1<`9YTk!9bj$O1FAFMQ$*S2s9@Z@YW%E~ zTZSf36kNwta8j~rb?{4>87Jl%*?2bQx0e#a6>cWP4}7wQi-1Wxn=(}g zdS@lOL*|5*nfozkU$mzUrYgbOO`g6&P{Af6l1WcqjibDO@ z{_H&{g8qlKQfVuv+#&Yed{*nVJhm6TQyM^>MPiio*K*|iCL2)c%Q~_>+f|}mR3Z9@ zJH#n?g2BSgEc6@elw;t<6vNt%>~<*6#*$HYqgms_^55+5W6ST_tKPj0xX8}&lS%64 z2>j_Toa7#u^rNQpns9{_zm!ihzfRzxEWU1YYr-x{dsbr{=~k@e$MbkMWI<*YfcVBJ z5rqn5y$)by?fM<23 zC5^a?KMvRhTd?!+IlDe*3=;>!xQCmt8wHc6tO2iGJ40QV(Pg?8>p_8qMB!7OmF>1p z4#c}T0Q0J3`exi_>n3={={(VUU8y^rJlZ)89yE7&&vTYMs^P)J+qfp|(p88a#tj=W z3_!<{XNrDMpV^;AENv%W(nC@T5tSzFSMdYv2xH)QYH>{5j?EkIPc6(JuPPI3+>@r| zxGFMAPg%!3djV~BF=^(Rmod&7HV(Ay^Ql7U8|09CyMt5nEGoP9)BdY+TPxoFvsv_TF*e=Hw+*{TtJcnWF6kcTp3r44L5g*`rP!Y4@W`=`lHA%d7@7+)r zf=`@&l4wa&9QFXrz2xKWko9?^>OZl{8$1#i?i*`4`c@-+gm-#!afd89*ZYrr=Ij_> z*h{WwfMbTSRq}|io;N*#dT3HVdJM%a@6e_qRq*aL4?axG8Ag!!@Ise_nxOvy;hYt< zjNP70{=U#MtP}1cWPHaI!KQ_13~B?cq(R$zlFhbZmS0~q^lF$TdZ?gWr^b);{`4oP zM8(r(>BP%~9`}2wN{^$+*dA!8#2YK&6@4XR!#2EALgmhvsL}1SthJU_@&)W$o2?md z>tWmF)Z6lHRCCoKZ{rG|3DH_HH~#sK#PLRyobMbtreSfYpCoJ0>%1K3Em8?rU%yrS zp{vxOY(SMa5>7al>2PJ^J4)me{ER^hyrZg%}P6!t(EdlgTib!t07|dQTn6 z$q#;A5d^Yp39i)#+h#abnjU*(Vy#bP=}aU;)^#Lzw_ZMX{QApC>COwViFPBaRZ@2_ z>f;83H4MM;&5Klf?YNk!TqJ_*iVrShxPFC2x(9Q-3cqyyOJ&vY^4dj^j3c;D@?sp9 zeFdlM^I#N(F1gJTY#cZ53hotOshY@G0Pd*!)hWu@ZbWQnqvYbdewIs&_%8O!Cy0Hk z!Ol!fd`FVv1Fipq$>uxPsR!y|&F>^c?mU7;4Bqwq*|pO#)a5`JBa*0+R6cyut>RPy zPD}>`4tS)zJ!I2hiC=4#ZBWpkEZ}3=!wc`+qX=9f$}b(BA@;!svU$WvQI$se7uRF_BgcDt~M@ru8aPj7J!L>0Y$eCQB!&1qsj ztMEak)%7;T`p6+4@m8$b-xb^gXidFMT!e}@frP&+ZEJ0`UB^h~#;7iz@D2_vt{uul z!(X9II#Ww#vio?1=hM02F)TTpXbCZXjCo2?do114nLube@q#&(L_4|_mT)w zm5xFU24*$pgnpuM;rE?mtCNQX=KOvx9ACktVwt^X-u*~*f=2xvM79Z9RoK~>A{{g)QwqQq40kg1HHp+=gu$ez9%_+LCmt`AJA*_7-{h&KG` zY}tIHPXCqh)XLwYU)_apP{0xELC_!V*&d}iXPH-1bg|+A)QdVfPt!P;T1KweCS~7C z_E;>4W%JpisoSQ8NVA;>A^B6JsFz)co;0664XIO|CuaxTYLZMf;gK@X9AXQaVD>p$ zf~o3>9!l_&kg{!v_lul}4j-f70`v6e4u2_UecO(nm@vI#SAO|5pP=6buWDk=uz_o$ zcIqZ*+;xgN;;()mFRX?@lScd?OQRJ@?I4OrocuPcnIcobPhgU{Gn4oZ80v3gmEBo9 z^}IFpL3;x4rKvNJPLSB{aS53ZN#&*S(P>fFDMd?j!JZ+nyLgL)MPp%;;o?3~jwOVu zhG>g~C@4N!D6NSsLhta0vwci|%S!@=_}1_45@ugJKdUVll*E+r!W3)2X1PD@@3P{& zRimwelLqUQouj;~ktYX+(AWN~5-$B|03Go-gk|kokJSoLv;I)<{aW@OtC)0E$Tkk4 z`8dZ*`}p1+E)K~Al?WUx0P-zNkf(&+h7YI8ZC&SeW|~CP8QgAW%6kZO^2>(4TA4bv z@jw+wbQ~4PwH48}0y9`<&LriLrp)I7wKjw=9g2(@`HPMRrs8jC)3T)T?j}}c$D+~d zbAnCg%20sA2EPYyR1|9w0gs_!Ttd)sC13Ruo$ zHk(~D@x2x>gq{z2E$`KltxU0F{%C~~{~edaH#ONuz=;FW3(D+ZWy#ZhA4b879%Ygv?%HOJ# znQ^z*4t#gu@)2eM&^&h+rM{)UQJHFvlt7o}EP05g$Ix)i;TLym4ZB4F+>X&gJH}xf zg74s`12vVs7bgB9?!pmXel6VG$N21IEvO^b2`RuEUU^$+tsG~2M@f5Ut)V(By5JV%my5m+;4( zXXB2l3XHjqjDNnT)YxK>y;7^@P)FoXpH)bOBLP%#bt)n>{PxQhDzExEFUzIvIubq@^0B$i0 z#wL2Qi78UymqX}TQ|)@O-ts?W(B2KF9Se$KoOge`1cxdAtmD9@+hfOurmF-bD?=r|(bgrPLr)g7 z+!qb{i5T8Eh`0yKx!+?KU*&~S5&UpyKUVSzvi(&cQRp`J6UDfCf?U!4B38#2 zCCb2VxR7Zbqps}zKBCN9 z^c|ZEud(8eg}erwe@b=3xv)jG?o`yhUBt@1?O}m(lwih$7CRI_M^WvqZ0HuG(ef4n z3&P*I?%fvh+|JiSGZ`sRr_OWi@peaPP<{(t!0$UHz~vnofV1hu(4X*Jr|io1hIMF` zEY3VbJECc}qQ?xNXu%8kj%Bsj-z0*Wc;%UA`8q=6$K^zUQ_aU%U?*CwQxS_RJ`&PP z$)3>^f8x?*>Vetocuz25WF@Ow>CZ8XHFBVr(@X9cJC2;|M9ppjua z^3Vg$M+si;a4ij&N2=tF?8C<{H>|CKT01qjSueEmz^C+Vy=9z%`vBER0do+MPYr_e zd7zNpKdhdsI(E5BqHe_4FDdQAX({f^~@Kb=%xSy~T4P@?n9O(-WQSu!_hA zWjl4e`c-q;2a6X$e{qUyJCd~@?b!Srt8yQ>4p$zvkYR|Q?r<>vd*4aUCB@{VK(nL7 zc%#J=aEK=+yb?VP1R{`A*9PzScuS=-;a73-8^Y40TpYY(*iApFmhYe>D|bA_D(AhU z{v0Fn9Ffq!mwHKjUCMypVX>~r&pVRWWve`Jxx6D_^JgHL+J`Z>6e<^o__q6Pbg>x{ zJGWX&z@nnKvnmAN;Yv(uEc@-281$AXh$^QGSyFy*o9HqcmAxOuM&n^AXSX{Qcsxjm zgXCIwfAg1q=8Ia;YAwRDub8B;xw4g_*I;kmeP#0&Zl??Y1zh(bwG!JiCLVZ6CNXKO zW_b*KqxAdXSqF)=?vW&H`el99wDI zun@_4cVAkOiSQpoi4{`uPF zPlrWcS)=nLT#T|AVu>cX$VmnTWsg!b!EN< zGbz+$z001^z|1eO(nGU{*(v;63cS_oTUerB6PElW<}C$Ib%}Hvxl>e+^`0y@u+}$9 z+U6}5x5z}xc1HQLWcA03I<20H`?Q9hPp7TfYtH%$$*G7@){|W^&T(FaD`QeklD5ia zRur!Vupdz*FQLnv3`}Y=3g&E+e?y0CH~!A*FZ_xBd%<04IIWVi3MZH){*BlMnW%w- zOP#+2_ZUnb*{3 z?6Gn?$w*=%uYm0Ka=dEe<;%pyLPY`t2?KNL8;U(~ADi9rD}pwR2WWZ^2@Bm%y7hR; zEQ>!1@}qsm;kA^uc1)L>tIjPpy!gL&{pjSJ^VeL26$f^PPgwMidky|qnED^N@*fsO z*eB(Cj1D^kqgSKhI8l4h4!e2rp!5$5%^<$3kOZgD!+5L2K`eaNhu`~dGW<6g88f+o z!DKfW#xY|tTUpGET$tuIW~*qF#eXEq^TVWbqJLO;n88CL`q=mSQ#Y!?RP-NKBqU77 zJKA}tc%id*04ea|+Tne3dfIZmia59nM*HSgf% z{KHau$1w-U^HEON9zh3<(%_fR-vg~j`_bhJs2&TfhRqir!KBZljsf5Y=)LAFqDN10 zTPWwHd&#AbSgCE8=DME271@2zx^E*rAYO6oCq0Pr&49Zxrhz2jG zyfv0#ZGqy`{-f~tQG8b=TM48Vk&NqCS#>mE{b6;%@9@kUv(UCd}`cpK$rhE}^9W-c?KDrQvPul5wjlhVFobZcu16aXsk&N-$ z#@LNi&AT)a%3ms?Dcvp#yB`IT(Z?Y6qm5)Uzm^lKL_A9);2DrCrS2dXvmA==C-KGWfA`1Ao88_c$H~oPFgly@{8tK{#f`8#?OxumnCsiGF38V zP7(Dir|g)@sxmCWn#v1}H98jcM!oZ00t1h}Ugu63!Qy+*)xlcOy%h~m zH6KWFm^xKLTYvG+Sd3rHwx+yHMh!vwkH*!ljwN#PfPA6LSxTIgV!RDA*m!y$I^0X7 z84$yV*kB6jk#_|)#0(>dJ`n2^cbY6Msw&k%hg~=#kz>6^%wD^0$DHyL<$rWyROMmZ zRB>SwX}t#U2F5Nt#k|=95_Kj7P9ZCAGU+?AdGMO1d4ZK%DTGgX&&mD&VTId3O^FN> zym@_$;xInH9sCf2U17L{u6LCYUy%l3kB&29s(HVR+DghB8nI)l{qdvtQZ_Flns*{| zGERDM%xQXHME?PHFH2qItNW==#BRN*h)>@&frYBv++wus)DQ?K2*3B#-$}nwnUzoE;VFWaNuYP|7&pFgYBzVX<3^CwjJ)R?3l{OA68H}Tw z9A24~h`6UOw+Q}2M7>9?4BURGI~j)vM(pCz0KBQMT$rk4&|cvK?7k$E$7_c2sj1Z%<;l*012=k$rCTMVgkPs`KS#D2$41;4sn|jyJlR zp=(dK>-;MBhE&K#0VfKZDk>s}OC}Q-afacW%*hDvlmWMzP`G{roVmP3xpJa9QNe(r zrFh>!sXe=)qZ<->%4A-o@%B+2De-w<<_#tp9(Bm>R=$#Gk?Rai+)#X$G@|aTGT>6t zMG{f3r-7^ZLR5N&?l)8n3NBW!j+#v$KIZ_9EkMNVhcoIWS94*u=1Jq|GU{@|kN9#X zQbMNWwmSG2W;(h|>wN)1Q6$7wdjJgqNgmykz<2e9;R`5@FD)nzvjQQC1w1<Vail7^zirmaINdI%h8H!0`jT}@_OE~*AWuL5Y zT#S$O_|5H^g6(XH0)rTpy)YzgmLQpH#Mk#Jfl~;Gnh7Sv%CUu$0^BT3yx9=nbE8B5 zk4T`t0(Mw%yAqeZVid(PEC|FDX8Y zoAbFBHOof@xw%eZm9XdDICr=N^2$|-+~$WgFcFhMlxwDy=Pk7?ZYjjN!{3`{RV6&qm8knH>$HFwE~tYv#kVBDc89>Q35rIv zO19m$|22M|=P4@Q8ILct)54GuSh>`hwk&~$*<`g%XcRC0;j&9S6 z#YB7{)TKi4@0@etl+<6&BKGhOA2@u_+r9LpcJH=S&Zy*P66R|e{{@RVf~!MyTLsu;xX*lmsU@t2M%gfosf0A^fF zNCn%I#nruX7eY=Ey;O@W>iOhDaF>5C6@mN{9nKhsAc6TdlQ5F)2>B$K1eXVjCk(#k z2?mq$H(A<1<)RG3rW!VBI?Re$)=guUdL)BR7*_@{en7J9ym}gW38Wg{_O!6D?ZYHE zKF$}AC`rmWp`dK$1cKF@k-B;O%Ml|h_>qvQQ;F=5(P(ttP8oHLMA+!stTuIlp9F95 zBjcOrE(>mqC@wvc#R5=OxOk-i(;WOmp9bHERDd3i-m*Dk2g@CIz zDv!MTG@qLKF@*P^Onf^?ZP9fQRFzQ#yF5%*NFiu~i$V{G?t}T+IJ43xmem$T2}>FB zxZ5;WUJbKOcAA(}*`hyHL8v%^=u&c;#P#*i*iJv(F=80CJFa08qKQbo9qoX>gN840W5ueQ{`-hc4QADnd z;iype`hM_vx1~lWvd#;}=E=@@F9-NdWZZ9l1SPV4kvaIz8zy{aPk7-yIFbD^j%?6? zI4PTf0pUpGTjt{pzd=jbp9!a6X&+S z!HMe|P&tcEZEru{?Z&MXxf;CxHs_s5ips zoi-G4`vgZuIE>^lnFx4}QdSFes-tfZo+ajUSSQ&?l~$ZD}{B?0Eby@iA}NnI$*;MBZ*SrUrk z7@@>D3KPuU&T0{Zq(p{t1l8M5zt7+SZ`!FD1YyDa%7nG;k9MA}|G)BiKz7tbnh29Zxb4=tgNc44t8yTw3=`FqetY&5)$a^| zW$#|l2b#H9g@*`d#*st?6IG|Ex_hzRT!v{Vee|YE7@(teF&RALsOvF(>dbp1abj^J z`+s2mt~FcPA8gD^Q9%6nA%TN^xm%_o6K=K?1?u-MvVmI0Xt6*A_}C z+<)$Sf8Up6ovf^tvoo2q&+I)j&pb1bw%16A84>dg5Re$-2@f^jlZl?(YSJKwQ*t34 zC%&s*ttG$7y}Ay8ZnFnW4lC9OT2y%Q!U|Mg6u*!oF?_9;Z_%!%4Qq3}n##DE-ySnC zk6KjW$2>5G^+X;92EqmyqSec-0?GTiXWuF}?DZ!yaIxX<5-CD2EsU8^7j&jPxw{Ny zFG{JsA3SPQ$j9}Nf#KtPw)|liK`#*JBoCM$--W@{v$*F%j0=Aah~z1uOK|AUuxi!k z4%^>^b7XNRUHn-a`7t#k+NbqOuf5!hzs8{W*JzHemn{RhFah!kwEasYXCht?sd;tv z)a>^RZPwsG8_n)RXs9iG>))FUgVDOkurKTQsd(F;3N~Tx**EVW{D;wQJGz!+56;m1 zBLu4ky?`2&MGMV_d-Ge9qa%e}#?a~EgR5ro8Pt{_ulR68e{G_1y23);Hiwmr2eJ+1Q`U|K?Yq;a=$yM#pac9PC;)AG>9~& z2c`cl_G|Akvgj>(uBPVwm@=cD@}fxhCj%v)F|z+B$yB-Cr^+4aUd_;dWks(k-V>=H zwGjNtKh!FVj5-U<{0AKHAmgmb9G+}%Gb<4b--_;?*8zHC(=RDOn;uDM0$>^oLc3nSoS}FOIg-iH@DoZY3_|PU~^Py@3*2c zpfYdxF}_|7S>J$+*2x%vExYW}u-1HpFDbZty^h;N13ea27&pm4Ry40_A4=u0^qnG5 zmiguQY#^^h#N+bKQ7ye|2vuOa?TfJwbuPS(NqtyhvTSJz_gjC;4MXT8?5_#3 zxXm@iMh4BS zn0awxvRGkQOc|ehrKnBFcBEK|*@THW|nK4UkB_F`b zTGx7q;-9kmF{&NrWY|E}m@wp+fM7c1=^apUj$W-l+m~;icOz&F6z0NW4or2H$K{Y6 zjFrJe7NLeka(m-*7g8aSYP5UC1>8A4S*gl*nWTk2;tZUP0Z3$702pi;xH!~*s0heE zOWNqhOwdI&w5;b3Dmt`Ff}$Snq=9N!VE_PtjVVk}Noss?l=U@RbN9mgSP>j0!7?M$ z*%DVuy96q3Y!>LUfHxCJ=x8nGY zq**j+#HGiS9vO1S)9+J1D8Z;Mj17@f7a;KFP5ayUvge2yHGOo{RGBtoYM5Ewihaq2 z9ssT_1_RX9f*Eaezf`I&je&O7g2kR5uRA-G^G)lKBez_FWUtvWU`zlkHlo4{TIz`6 zllBHRcmTntsCS`k2^lAg%mG%w=n`H(wJ5Y6bilI(Kavw~5U4jc(YI@w9i%xjpd5QG zJw}WzCbL=M6Q~>$TBTJUS3&huOmlCv{s9!P<9gBV%_@xz{#{^(Q#$GGVt1zl!ejwq zL_jT)T;(4V6G&g9#y6~s$ppWhKShYA%E3-x_+~&l1O`@yEG(E$!hC8bV}IZfI%Pjy zq8hkBIxI?C6|wW?=dwju>?BqO7?5V2gPlpWMtE5MN;VJXSgqmI*pEZ1G12i>VeFl& zJH~W`8Xyb|b0sIa75tMW@GLs4-b6l?!XUX#n@&Y{hNu97SU@8MW`_%9Q$$zc0TEN?^-qEtKH~O{}#Vi-f zO)G}ER}{)MSP}LCGSmp3+_tUL?h7bH#Qp;ykLzr-2C6>geJlMzHhU5ObuMLJ7kx{H zR&&eR@!%rIk7~H$Yx2vWt5)@PN1^&L#-s>Fv*D4OaO^g}2hq*@^Jba#%9LLrT=gz5 zJW{Y&J+q`V`J-wlsgp#8Hf444{d<}P415+>vi&V01S%7jk*s5 zu}L*><_1$2v4Sq31|s~WpMm2`V%O@!?+2}8Sq>R1N_+;qt-7Cm5(asE6w}DqchHvZ zVD5&J>au9=_jtw+`r$t<@x0g^3WMo6k4*VjZw7wx7uJe4JM*slinr~AkKJ%mCYZ3f zIaL5Cd(RoLog8aMyg$&e2-tEv7jOXA5TFk8FZ%C3y>m0edCp0d{q38;3nvbi1b%|& zK4_ZHgV$msK4#ACz5a9R)8ok)I1pRCe(Qs^&^erKE+Oy;haZ9GeLufb3lrz>^^UXZ zd+bu%3hnIffXe7oRL=qNQ%cd{I^kGy%A<>3$cK1g73+6e$7KV3=4~1owSUtw%>9M{ z7_8Le4XQJ1u+T}x>MRDfl0VP2%nGM#^_&JfT?;!JM0V9T3Z33g-9L%O%Xul>y!g#< zAh?|MM@mobDx9-4BPaSv(%rm?5N+>*$z*B9?~G6Y{ySUW&3#*{qqn&~z9Lj_lQ@uV z&$Y4(nCbqocA{B*2n}C8uKT{L=Y3BcUNhVZxP6cBr-^(PeTa*}kXsAId;3kd)AKin zaJE8CxMbVR%4uR?p=)uQ%|k%LKY(0wtF|8zOCpUaruDbMKWybfQg|KSyy%bpdA0_8 zd1*~EN&JUD>y=#IYJaXEFOs#P#@xS;x7X$_Aaj-l!CUj;TZ$nH$k{H>cr5jvlQW&< zm4P$kM~L6Y7c>&$pH1@E`BE3Kf=saJK8x(j>h^TkzUkaK>e+gYnu#W6ioy};jNa3s zgx2q#)YF6AdP##c!*uJoQaxXKgD6}b_9uBMj14?DzeLh-&i`!brxra_CQL}>og2%N zZxwKNWY$7nk#SjOjMrt%Q7cvosj-MDnW8^ZD06&mg;nRmx=g9ALw}~OjrXaj(s-_E z4wzPDimKip{9Yv`3}k6K+oC-xq2-O6Br45iTDQQ71Z&I(9Pct4mb_rby6jLo##ul} z(Q_F)1`qG`$Q$G)KMQDRW;<-sFlLmzxJ)9xaQFv6FjOt|r$j{^o_uXXbLBn~r1l{9 zen?A;t*9cFnDgfJ`b5BCis>o8(@ZTlntNIZoPFv$8h*%o777ODq50J+SuT?0Sl|RJ zx@;v=d@*Ao_ozKZbqKCW3gJ}*{iiWG-`wN{ssqLWdx%L!d)8G87t`xkik^+cVul2X zg3Mvk&#KfK)vy4O7<|FCd6N^fPqb|rRN#TNNnVRD<2hD(NSyM5$Fro=-t5(tWsQ|i zItpx(#a|MvilbgKts zW@ctx;`(CIG3`ogTYzmv2ZZU$qADz%bzYthaT=Yit|F(4h_vQp9 zX+v-D&_n@PU=pM}m?>O?A>OJ{NVc@dQc)CognMM!ZooD<3$g2uDWEQ;|YYeA(S`k|AQjr)RLO~p} z@xl%(E6D&?SAwG-2NS}l#Sd^YrTQC}qoe$9k>$Uf3RI&xITq5=&*j$FzS5;hfT2vX z;llDEY1#bI2rkE5BPuW8!NRsx|tip|Hfgk zvV>n;Jb*lj)cV16XnC0AapMw8fml^45^@+(#voEcT=c#imA<9gKQP%>k4|iIy(TwJ zjL4=LvM1}Oxm0Dr7v&!>o-z~3ffXXK zBJZa9H1qs?8GAP$1B{1?NB-BRhCyE&?FM}n4 zQixm#Izl@jZQ4|@`TlqheK?#B2LmlB`t$&Ms-dKL-|TJC`^4MH691ExPjmg+yd1Y_p{W)RY;OiA`6Z0;cDuP<`F5PUuJ zo5j^}>hgB|0`UXnsLX9_H&PU_2TYnbD7@_#3R!OMnrBUt3tgql|5pY)g1BF4 z52OsN(4i^n$n;%p2ztOq#ix$Yy7E|^FKp%+>=z1>Q6!%fJmDEc(2TU4xQMN0UqX$W z1WS0SK|B+rEr$>Tkcaz1rVh|r+_VafWn%`z{~bEEi1mvFH0#&$XiUCtuJ?lAPn`6v zjH2DNXoK+x-30=bwZ1;)0euk54j(!J6M><}Y3~`Lh%_q>!7f*e5mdJq8^rx6Zu?Co z{3h3;9?)gPm}gb13tu&SNczjW8rK~tGyaEy5Cjn$5 zP8iApv!Z+>qzyJYpF60ZxXaP-zQ6XR_(r69RK-=+x@qKkg_t&b^!58H%g9=c&kyU5X&Vy zQo?QXKH)C%dr9@FU92*t2vy<jtV8f&dZp4I20oGkYQ)jWYt0T zR*7*q8vah&R`LNgkLd_Mo{38(`;R_zG{PRi;GYW z**!-X#Ugo7$g-f)k?HMn2Uq#su~s9^+SgU}b0$PyMStYbUbM+!>5LWOMCPDDm7!(E-Oh?IZ0^mcBwL93 z%dam9U&xIU{%a7>a<=Qu+JY5#!9k4rR7IolQ80Vza${g|5wY%df5N;`9J4$r$zGeC zY&cM${|O+>9UzPDZNo)xlz`2#-TZN=$w;du8lx{q5Z4Cv6~~JCP+|b*>}|Y8H&&mt ze%vc^W4+&TRFEW``h5dAvzt@`CvK_=Y@WdOV6%!VDn3kXbDTCkSv9SG{ke_Q%Q$^i z*Py?n$}8mWwv#WPKEq*?K-(N>l!OG8z!ro`+87;6u}iQBXwT#%QD@G9lxrIA2&~J5 zsyoGEq{7tE=`755(J8PNExx4ab>(56Zh#SGU|5SGTS@&1C2^Qi#F<=O?`z$D?0zRL zD9_bEWZxV-L3dCGoi2Z(VBb3Ql{g_`sEP<+buN*4M+z(q-LEk`*YmXEHpvoMtV?;E zRjr8nxFpY;rO5w#Ksk?^rGP7N#~Xd4{HIDdTppq;7YRZ~L>?olM$_zuG*|IsC>~k9 zjJ_{Y)P3&+eh0R|rFO95i5$C3V^b8=0vV=)Q2nMfUpJ;`%oD!O*c>ruDP61JHWfJx zI-FBCO)!f)Os~Og+)tF3G}*$xWaE_Wm}EZ14=9|XqNcEXh6H{sB56v!k3f3*Sa$(3 z-TBM*jmv%5C*#v-zC=!~=Wkn2U0iTv^&kCDkN-O`^>0zbLxFn_*okDiN;z0mNzkxw zx%<|tCqA!%0z5X0@=;SBq9F3jBw~1sJ6;8T&JGE0(<%|4FDTq{hqHDihHye2IqJ0B zt~hiahD_$6MzLUM$)ba4MT~6>j{P+Il%zzB(gX zuVY#!j5*tm1*n`-bWl(q)9s2*@Qutx10%P(G*v`asb1|Riie^l3R}P;fw4jG59LRd z(I|0+)W4Z!7jE;l%S(9D+!C8^&|UQ0{a5W063ieD>yEb9t!fpt@Zo7v+{{Wy$|4R>!ycA|D73kkkf?B(nK z31nFd-p%e@Y{A+ek(TFq0Tmcpd2``h)g+zb=GKZjQ}J9=|OP_!i5a^+wjo$ zm0YM9evEX2rJX(ivq3Xq>Tpl<4O`i~RZZG6%z;CP7_cnKl_gEC$aTK2&w`Fqzu?NG z@oj9MxKXY1CPAC%3!ICkN!mc)g6(|y7;((!O)jpSJSBHopDS=P#%*j*$lqAX3Gif{ ze{dJnDoRz!c|>Q+#^vk0*8cWkj8#7O+pe#Os~sTY>YSJm;w4L$#mMrJeS4eaWTN51 zyMO;z-YhhodmL5z&a%p9HBE7WUHAKIKP1|$R1axL##i-4Cz4H`>Kq#@^wr^L`fc%= z6hdtsQ<-(bmd%8YNH!1GWqn_%k9`!d84Tarf=X~N!W}1bCuYh`@8(mrpBN=guBZA@_AHWrmI362bGW369<5YP*lG8E2Zi zzR}vyD}-W#2$Dh75-|uP-2Dig=^)GHxHhWJ-H%w_>kj?eO4 zt65e6fhcE^3(k~D%jy7O5cG-w~~GNr;u+CKJ!jPnxRfhGDQddO06A78?qny0ONa zi?tI!S5-{g1+120M-kok0dcK~ZFQzr8-3o&@uvxSdX+bgWN%U54d7idx*>|v_vCMX zQNlMu@Z+##!Vs`rq2I}0iQS8KjZJcf=3u2f4rO*apMDX(Q?CdXM*%(yi_m&~VE!XD z8M`Bjw@fuOP=SwavU?<+#Mex0wT3c4knl$x=&wrL4AwEc5HPuX;v;G$^Tk$W?@nw; zvwBJ+=gDPOwjkk}*SF2myi(oO*4u9N9{jAT;p|Trti!zm1`uK^Dv2Ju+^9#%?iC;(J!# zd}Z4!V;}t6*?OFQyF!sQzIdiAC={^oDjOlYi7@i=9`-5 zWURJqo>J=AT*!Hl5B+JKq`D-Du&P&LR2Ax1|5a(-$jKxvbgTqWyu7n7e$xM7X^%Xr?&_r z5wS3%;5;*rb9vqB?W8kQlcy-yG3`{xrgbQOqw%AXV%UP>yg!_w&;SSTMLnl;g`-`7$DL|Bw`;h9@XM+K5+`FQfwzo7#uIah4 zV5f5#W;!wficVGoIX8(AVx0;Zg)ckOs@~-P02DiUHcnHvml3*oCy|sXAnG)XVzTE9 zSNqgdjO(%{R^AuruR~<6hd+K4>Sg&c1O=xIzQSg0XSIR!d|{Ge|F+G{KFkc7ROzv0 z_^#AmgRHhcL%6)9t19k)tf5tarBfT`dhHQXvFhgYCtL5Wl zA~f;DYm2`YP}-Z*n3(V6q&r(m$a%W&lO)S_g>Fwt6ApWhwghYR3nocj%w(9axvKN* z&_MFf)8Ey~O|oaZntWs>x%~LEG;yJPu`9L!$ukI*;4m2s4aroh<|8I1B5q!*+Nom0p1DZjt9?$oHSmUwfU{0j2C)W~hU6O6^Xk;I+f9jx{-V00Ba8&XFSS!iOUH>^R7Wrk{4>Tq13scu}QP)|6~ z-7$JNL`tG+5UvG|Lv>7B2jwXvX7JAFf*u`=BDA)>agaHD*0AA3bRv+d{U(Y!Z#8~v zG$LkkwoCLbac_x%b z_k@XS-A_f;(Q7lYkj%i_ai?>hG^vy)a+;-32M1y2i7B4C*(kV?Wwv!zEO4OA7O?u? zY}&JtVP8G9H)>qMxPl^}q zWJyCXN$!gw!04$w9BQI*C9gbfXcD~gu%}wFYgYsIs2W~6br4fGqBX+eTK(|2<#zIs z#;(xOha6+NH-L#^`T5PhLl+aad6z=40>-=|<-zg-WTe$Jj@h8^+m46{Q1GDR9@!T@ z7bApUXYJFQ>Dj#IhdlXX>W{$5AFbPJqI5E_JbyJHa9F=VbA8VJPD6+QJ9V+z?@=}2 zi=wRUg*>2uxg5bb4Ji6jQpWQs>uPi(NyNEI5k8>T|99jW`AHxP3SV}C_bLUlDOM(* zHc`MMg5T1Ns}qco2${e)P;sO*O(B_lQ+9zc9A=l{cbDxH(i!i1Q zQAHL76RSbWHECm3cf@*$UA51Jc>R}iY2 z4{B9MN7cCvy$T?FP_FlQA*N`;i^?|X$_sh56k2LFY*}tHl!kHZCf+4DoP7VQh?hYmr!lyO z2|{y#Db8Jh=UNzG&1Fu(x|F1yrp|)$&8t)i;B6kvc0VxZ3KvuHMgYsWFzW}aI6p+i z`?fJ+GfQY;{Ja5q($-K*?+^t|IPLJgrj&776jUJMB`#CK=zBQYjTW>^afSe#UNS&T z%IC>JR)tyZ{nAver?|YtvAhY5tOg_YJf$P6;5$X8(@RCi_dpI^|2?2&nJm5Og2dPH zLJ#vvf%S}X*90QsKXa#|b!~{~Fx~o#4>j9E=E@a!?mOm56yIG>9rVias}h+TjG*A1 zYHmUH2@mo74Vk+L0F|7q$>TK<6LBVjvUNaX-rrf2LijezgN8gL?jHd3m*soLhJp!R zPLqRFn}n8}46rLBc9V!X$3q8NvQBZsY#p%bAaed3B3U=A5CEk)Me3Fu^T=+>d!5*dXwv`P#~!p4qdh%5-GRi<~&% z8q^`Q2@|C7NItMoj~VJC5Om?--S*q)*A`x%l7;G>{gqW1ITw4YqZWw$@yv@RS*L>G z639_a`G~+GOk|>I`Ne-q%en@cC$0Oc{_uS-KRn%kwzi3k0@Eh=OK%(~(q8S|SzEr6 zh5X~O!d;wL^WN@fnK__CaL6!NN-`qD*`?{(A?(_<6wobxKgnx|y6BhtD~q2rX(gHE z+!`12<vK0s2 zt*$Ok(upMO;B9%ca7~y2gS{5+SgKg#4k}r8^(5lF+CkSd^VtH}h<*Sc$;XZ@v`cJ@xn>iPklY!4JVlf# z^bsj%Z$+MGHmTJ5J{0-EE!j#4b`X7%oQC$#&`S>`ALNzY5N!JiEzcTRwSt{n#j}0S zm{}7B)6hJYJ-%EC;i4~9<*9k$xj(5)HFgSvsXWzrY*MJq`-=%u9GPaRH^fT@nOTR* zbBa=$LBwrjc%~jIns!Aw4ab{%RdYc$@Rtnapc6g5jrt-TEW;72{ee$*tu%8KZck*Y zREZ+>yhosG-WAyrLgQ9FaBjLP&VN)<+?aW8c-xV9o3NX>cPqUQ% zjTmPTg39{z`Q8u| zoAWJ)(B6NLs;zYRHwepqS_VikUx$839-_#@D;G>iv@aN|)bH=HUza9l*2vkAz`!cj zT<_Q%QP``4-CX&An1xiD(c^T1h=V^b4|yBbI~H$E6VPyd?3Ze;w5`4u@aHgW&L=0( ztM)oK#I7*ofL8Vfu}tm>6TjkjepLlI$qmPvoOzTdsPq3oCEHL(#l4&K+mC=h*NsWD z;;+!`tMeFBpR1w2^h&dx((jqmG^fg(UbJ%v#Axrj6SUtqGAV+T!a4IRlv8M*!{v;J z@RoF^_s_tYJi~*wky9PIT3=p=e0Lf*PIb%8Q5qXKFf9{wRx1=x_KErQY&$m}4XlZK z;5;u6>V%|4jINV%RDH`D5^5u#bSt=|~ZIqEO2K^T`U-z1%FyZW0KxrD88Ps^@*#C7@C=7Vu5~mD2L#Ew^2Xz6ib( z`2(9Tb@fnjY2_xtQ^9r9fOVs--cj$)FhN3-_w2|b0qmiEkYRz)3HjmR?+FE_Hm=22 z#?j)I#JEZkJ>ceN3XqW8h}yfbSEYEIL&BJ}QC~{rkPh&5(#CGDJXs%4F1OWhxmOX@ zFDNw|QRPrHJK@T^{(Xrr+OC%zx;3>lF%*&gZ7iqLx>@}&I~RcHIXPXPsWGpI07-dv zdPkh4mbj#oYO2DzTdTaA_3h8!DK|8P$Y8fEcSh1qU?pBol=sgVlIy-+*SNN92~}bf z%3V7#x6IzCHx=1^Kok;*spU`4KAAClqW_M*Dz_wz2-c&qFES{n6$ltBdwDgjAO<~ z;o5?QB_T1|1ZEC+ophJEwE79%ve~`dBJahtx&sdZ)lI?}88)RcC_DWETZu(b<<#wb@vy}96D^2!^dMXoJgS;o1S;8dQTJ>kEwiJUZq|6 z@)R3Z6;HuoxkQfPM$$v_g*s~70?8re zECJA4Z&GHxIY+3WmfY>?Rmsnagm8?^31Ri%R+{V;h zPJ0Aj^rp*3b>x%x2mT6efbKQo47Rnmsu^EJU_`Hr8WSc7Vk}P_pvlr(D9~M7`@;^) zrhKFX>g)3e|2*#KU^@Q;06_;@T<80hSvr1BjQzx$+-L7tZnbvtPq@jEf4^ZTbclAc z`J$G(e4F{cH=g~R;*epT$=*s_8NQ`of0o~ejXx?*Rw310SLuh}oEttC6I!VJMMEjP(~+25X^cVh6&p3>&eqZTC#Pj#F_|AtPT&r^&&6Ev zwAHk-DV^_|(&UOJ=JjKYmxVbl7Ji2&<_uqT@mNufaApAsNB93~WTb1OLrlMuOZS~{ zuKxkJ5h4I>x@)GWAU&49#P*6Me#H+HB5pu3=}lp-jVOl_diPZctC;v7Yr=gd?5_;( z1$TV)Up&4e!x|I465JEz4X=#jUH$Mr1%VNG-J+vmC3n4mWa8Nf-ltw8-ddT%SS)*a zUTzo0SkPoi*RMC;!PMb)DdbomT!fKsPk-Ju5n)@Qn`A0t^_s^637NwNiT_>CMVPPMz~wsVLq@QC%#G68f#4xU?G?T@}2(n}ijOvqtI~?Kn>4>2DSU z4cz12`L)QH3SkRhu@SaXIm7#ndC1{l3~< zhDg_MCsJ^%PKmxU6DhsK_BX3RIfes}L8AAX9c*TtkNck3^c+pC*SPU@rx~Q0bxBK| z_XBhd3ZWEc>Cd2MI^0&y2~YeztPpY&vZe5ELz*Q9t_E#I=cl}S={6l3_mjWXJMbeO z-MCp)S5_7fd&mN|DdVOPH%xcu(+tzcExr0{4$e=r?AafuS#w%w3a=DA`!CcBU6dNb zIqkX|g>+w%RG!B*Xz9%bOIvhwLJr@?jh;s?bs18gUkg>IHesz3u^A%Fo;}V2g$v&XD1Bx>+J(!s^BV9OS~-P%>x&Ev`UJZK z{YI$Em3cr>!5O3O?;T=3AK4OWj?8m|9n2lcmRuF-)5H0OZweAn-Ngf`9Y7$7Rlf>- zGd0a0S>6o;M3Cv~>M-Y3NX=HpwsHFz%N~t1&=Q^3muf4eq4Y+q6gIJ^y3S3S-=0}& zQnukW0B1<1UGXj1O$eZ^=Nej6@ACrCkn9kBY<`YZOc20K&3imHb4pX#g>D;?m(>8u zR@g#mB6Un73qFK->GKvgUh`FEcsBp^CHpawiEq62+7&;!va%CIH6XcIAsOH%wG;Dn zaP1l(>_YvwPJ5PK*EIzVYQD62`%5lIdP~cSTO!&Qs6!^=@&yi_4>m#b3oG{>4r`d0 z6j}Fh8EN=5(ez_Fhy|e3Ub&fAlh@*IC-s|Y5*L8LH7gM9M$h_xa^KmPqaUe=!i-&9cctb^OF69u*3xW@)JDi zQj6j?Um9USjka1{9*`C(zi6u0oh6N1V)mdHeNbu=Hf0G$9FG{9U>7FK&ToToFxEI- zM5uBHo|4SUxAexz6--U4btPBCjrKFlx&_ZVaSAXH2{q~PI)+o&Jb8MZyZkw0qZ=BG zbg`@%TeHlX4xDNYRXqxk7d>q3VrooJY#Vd{?zT=5{xqxiodf&io7?n5dgI2OM&Ufz zpJvXa{C{RDgunKX3=&KZEz*sN<*kg<0a!GnzFyHK%T`9CbIK+`>)P)Gk)LCoMZ;>9 zcb>)-#dJN1Q^)nKt~xP`t{}s1lD=)rSmr$SpsEdyBY01XdCDalF3-e;4!K}SW~8T^ zUg`s}vnw0N&uN@0#fMM``Gv(jV}K-YU0eimN|Y0OgE)bVXh>MJuBIiHgCnAn()Sbv zsApP@Ub_VU#9XhCoZ5aLZhaK#kqEqRU7#M_-Ml1l-(dR0<6I!5u?2CgV2bY z{!VDX(SA`cEE|2#1IMl?g;1!PQi&59PMr%zrpCpYp<8wYC`rQD1&$C-PyA1LWtSRw zuTLI#cmgLNKT!1;ze!I)gPZaI$IxO8NqTW%K;7^74{PkBn?|UMhR0uwskGPl$^(Z= z%pnU>$Vd9G1D6Ja~p+{EyssRAhC&s z7P!qNw`;@~#X8f74^d+~I9Q5GeLmUoT_^Z+I(SZYWIhHI9$X{K3XVShIIZdK$pZV32Rc?n_D{%;`=4IVKky!o-t znQTsF9e_c#;SR3f$B|tc1Wbb`SYxw*^d$EIB$1UKeS zHWv=rms3FUoT-^^4B^PrdNG$l)Q>7HvDL4V>#yzk;PiwaV(>&an#Bl?bj0Omhi^j% zKcV!ulbUPAY~Pj;lbO>72xh0utJ>4Mx@JpO>*goN!)SC1Ixm;`Qp zDQj1I1?|y4iL9)dJMBXY@f8amNrXJLtz-&jI-N})pc-3TC_8OkN!rE9pYL%^z+eU2-v4M>@*K4TQ(#*<7p~4RelxckF=dI;=yO=yx?k zF57OT26&e~OizhVnJ{(;hojw6QQtnF*ZLH%8Y>vWctWRq_=n`DKU(zU)HZ>WKTvfnv;G5kArOM2Xu5mGgx{kxfnn0KQzhC6 zSmrs`#ZO={Zs6VA(YS&;XB8n#7XVweJX73lq9P{8~T_sz2Gm z0092)&%&+e@ys@}QD|`LegzoI#7*LVR(v5*Q{wCaMX9)T7KQTQRiTgTmGxYy4$d1Et?Rs;}t4g z;d@}Yla?~J$+BP!BD{-CH-4jPd zgbs^kw*suRQ`=TDY*%ofo|9#Bpt*ntHJ6GuOU0N23}i=8NEx`WV%r4ItLlC(#*^%r z&Q5uM7uQh@W$XVChd7$8@4MH!&#V64a49US$Kp)9$TXO+q-bksG{D(c?TZUc^a$f< z7D}9%B0!n_oY@yZ&=N5U7g<$_-u})J=@d3o1?4Q?Btr%4HZPrKg9()MW@2=BIUCt< zP!S&)zSsL6Smn-THe=BKX1T*|@#Q;6<{7_thZYd~ zS*BFz;bAIKVgSf`9mdIq#MW)U4lw?Gm1Xu1z`vj?fT$nHJ|=!m-Rq{|n`e&I=zS#W z#YfukEFD=Km)Y)6Z0COsG!8HAif`+-%%_Y?w=vh5*=HlfiC#Z^HXXm4!rJx=;9rA` ze!ZWk*)3}r-D4NcBP@15VQ9SGd&bFKIXZnJi;wv77gGcZD>OG+m&{0Me%r*OfPr8Y z>H!|N=)~gz#IP);*zSAl-t}A@R{oAl5HPR1NnUkDR1KsyDp&?jDjlrS%fs~?37#p( zq}&oocK6ue2#7xx;~B3&{p<)WB9 zBDa^EId#l$7l!)8`o1a$3@Sww{;TSpE_v*q9g z6I$AvoW+)ol4m=5@ej~V3EH*>(2N+7QBj7580?~Pf4aluOcym zb!3Nl*)es>h2{^kjnP5ZWaGT(R1+o`?&I z3w5`=?BgB2fy7Tpg8~5zR4@>qi41rUzkIOqGgVdgF5Q|qI2W2|8tmMpjQ6X|gJMO* z-+IB)2N_YgCUiVxx72?>iMgoH{O&r!8LZ#_sj9@G3if$JR$wv=6%(D)OLELLZ=Ac- zQAgYBF{o5{@#bOx-?7(O*M(@)k6SQ zvt(Qw)TY2CTS}#WChOiMbadP`fJ_|KNzweSQfm5M%zr%?wK$=nck`V&B|2W09ovz+ zpLTj`t;xJ~RU%t*J}-4se=X#+d&d&*K!7L4DGuP^aHmpTd}UPXb6xAr_7=n{KSp*X ztK*_K%H2?X79UeqI2UX;6=P6(d(Q1(JGi!E>Xvi=Y3i5YJB@u}Fbc)!I0UoNZ~E#?E| zXFIYm2>wMy?7z@7>?e!8^h!x2Sb@Fk^N5*Uq|t)GD7;RW^)HAN{r^5Ar$Vu0w65%68`ZIfc#TK45mTB ze9<85p{BgumL6Cxz}#WzST(D+3%p$lJZa&17M`0%;_%|vAejnyq)gmF@UG~X>xe74x266)I0GHqc^W9OD){d>kj>;^o zUeOOl3hdtGDov%)G|qRK6qBYSEVdLHnX|>cO=4%uznSax(@fT|J@{CXkiqIo5x`n~ z>xIT4uJLvw4eoX`pS{W%5G|`k2a-NlyC}=S7hp#KF(7wzHrmnM43FGQ8)_@J(ngTi zAUgm@#Mo1mN+wFDf{}cFwYkl5!wsM2q~GWGDzE?TqotSQ_ek?fz#B-6s}0FkK~#BP z77^@fkmNCyoH$oz+mm!u*5+dQD~naPMO~=R7Uh)OYuwr)%qDt}Mb_7GM+_4;Liwo< zmx3IHW;mU3XGN8X<-Wnu;%obyHS^-B(85jIMw+aMnuUJ=x@j6P##Lys`@NRES5@y0 z$a0kQn{HSpU~ysOvxf9vB?%lVe|jCky@$b9b^2%bvJ}aYWAOw@J;@k&u-;W(fk<2~ z66?uHfXC7kdw$53(;gbNY@5lu&$smy^fQHV3fj`D^miSwjCmHiLxJP5fGj_a-2pyb zc1Q`g)KXc zm-nE(Y=DN^C2?IR7U81$cH8qbd?=yKhv^Jd~jSTSU0WV1! zaMJFk+H|3gFF(Uhm#cm66&oD-CL@Pu-+I6hQb2pXPwG}ev9QUsUc9OWT4)zRMvNx0 zW%!N-h$fjp#X?QyVL*h*^OoE&_&oDzViA2j=Uy6gAtFy%9qc`!`wI=8IXh7eHf^rL1p1>Uo z<>Zom9T+Ch=%;eOdvu(H9LY>A1ILcSbh`hJ?%s~C@d5BWtym0n8~m>I#u7s-&p}l@ z8|63ghHJI$6eskap>j&(MMK!@@0H7=BT2;-*X=q}^fDJG5<{wOBJm8Pi*t;&rE;eD z@E3H`X+q?b>2m_^<+9)WO&`D*R}`vC^hNm*MnYf;*2If<)0)t|dnEvsEneM-TQ8K{ z@M}a-MowXFmciawueeTa_nh0`3DhtI6T;kBy(h;ksx1`Nj`k+z)Ye^ z>>I%}xr+<0rc{)JS1-;<`utMvnpCZ8_Y8_4wV${#kW{avM9-!Z7`!>~$jY@KgmO0# z=i>_A---X%(z$>$`Tzfa80NgqIpO-wmrdUy_$>mzz3sl=@8|t`KOX!q+kCf#Ms3a> zdQ7?aR(`nAjE{ckFWN%OcHrng11@p_!9muAasJ(ZLwk-<1m3$`yuBrhUO9AilyLeJ zMSFZs;B<;4ku5HyY?R)n{;5Dn^BP*Wb!}PZu#~$i(a$^CsrR8Mbtpr$8-8T5M4l8{ z(k~NH-kizzDn)NqDJRC2yPMIRQe+d>H@GDx2r<8l<_ep^`YZJF{Y*)j%BH%a93v&V zo(iPm{p+2$)C*|D&Tzv*xZgNi5iy2oB7Hs@?F2u^>OZf6TE-580(NWAeYDF5+N zLGjo?JEiW{KObxrAXhs)DUEy*ifxq8IAC)Zt5#xf+jHkUa!b0Qc)rH;hE5RlES+!* ziAA-JZ_t#7(%vRmO(ULs@_yY5iCzC{-1F?E%>73;AX9em0hgUDy~>4axYTKI!=qmP zMIqT!kn`fh>U(ZOT{x`2efkK!J0$&}q^kgP+T_Ky6iJ(9w3262Ptk}}#@gZLqHFSw zd?2+LBEB)`Fv~SH%`S|3#QBG`qC)YV5_0U9HHqfg-&xbgYJ0_-JnF>{$H$o{+#vGW#gwmfMMt7ROa8m zIaP7;7wpMp!FIo)@ZaSPv%V67wjPC$mEfzlKZwQ~4%kI6w1nKqstOo>WnN{yQo>_z z9Mf>`N$}wF2)O0C<~EAiLME>MsBEl_X>5)NEou_{B_8jf_WkN?kjP9`K<6VTQwpK6 zcB}q8ZDG&3d^a-23HhyypyltxihCXnfr~#t0E3yMS}+OOn{UDS@#Qd+XX)d!>{<6lB}iDykD-0e7p*mJ{j^(WsPz?XQ{ z6F8Xk;h1<^)|k+%s4UUaL<|TZ2vi#W(?YZDnAEWKS8fRy`Ie;Z8C58Xn5W-Q2DA&P zosR|FtGV&!EL+9joc@?y@ghIQ|S(duZqwtR70G}<>;)^XtPZZA1$@&E?_v4@Go~+A!>m01WM^La}xCF{s zXO6`}^@aPK;*Bp+k$~DlP{on{zoF`f;o<1lPk!&=UuTupkXZPbA`=%pMH5 zZ^^t=U0Y9%!H0W1tbBJ%+u*bDC*P&f9&}&R-jt+Zokk`w@KR&VEa;-yZdqv$q6pK` zIclN`OkDDid)4C5WY}9}AJlS8eP~KdmJTGR?PTkO2>c815nkd^*ByKr0i!e?%eR+4-6 zCT;e-V&uQOe(Z-x-O}9~=KJKy7n96B;GYsT(a+O?-AJcWIehCBv^mJ|fR#eL9r zKlAMu!hFWNCw7Nn&N^Qe{<5v`>WO}T?tb1*zCn2F!u_Uc!J498eL#FaQ7Hf`*?$EB zGN|X)aS^wctf&g&5dP% zCz%BsXp>K`_|`n`^Q8<%Znt=3LDqzRvH-3lxqG>mB3+lbW6#D?^gAEfUr<}o@iIdA z%J>#${m^f2Ft%YGY273C1ZFsRIgF!)o&1P4$b0#20lG~IDrPOV!?I&lcl>4;W9g11 zz!A89As6VcSAqoUT`@w}^atP<0`=3Zw8+*G-FZRxuyfgWFQ}}tD1UmF{xQzvTdbx>AB+-(xc-09*ugPx6f*)%65D`@k{;FzkpQlm**Q7 zx?}ishoOI5n;zD^%Q^b^8%wVD@buqU%SpWc?{FaA13uATCME~58|%3KGa}?2sD7sW zP`HbOOJvCke3$}!v%y9scRGBCt9;P!&y!U3QDAuo^T)!%7p9SU>d-oFY!^1f>;qtqkxJ)e)v`hqX{D&QLq z<h4UB9CYQ}xT5-bYXc zzl~sCZr;{T`Tky?>E1Dy{mExjJGXBjTJMRF4nGty6c-h|HPYu%sL0_>!4RJ)Qj1hF zsWB2BFj|n2ef*xh)!EogeT8kY_5%2X9sU9j3x^3c`y4mTsE5wWqVPPcV8(yR^wSI4sTSEqxmJ;&=rx=ScIY+daqn$ghIQEXyLT zCBLjNcmIwD*304;IleuTHbF`!N%dufq3$G9!{L;gdiD;lsgJ z44ImqDfv5T(VW^K!cPA!SNoanXGK;ZNbF^eP7$`8nD3hOXJ|>p#SQjD-=F%kx|ISO zeQ}tT74wAIU-zf)u0i~NTB*Lcr{rJQUX;!X-6GZm3giU_CX)(|jIEz#LVop92z z$rE#kJ^6zQ`uk#AZ>L_ z)Xvhd{`KEki(lrR#ZvS1?mAxjSQJ%!RO;to?W?D6gapT|vLYm#ZS(&w4xWGrgixff zZM#%e@7Ff;uHE^~W_%DqO>>S_UX#q)>(e1u>K?vR)o<4r1>C1JGY*~@&D}RMw9dGO z%|xYL;>O4cPOS}$_w>KtV)q^?%COE1)J+Nd?s`+$mnf#|HnE7_x4*FSwLIn#&+3HJ zUzD21+c~^_{MEPt2QZw~hgi$V)Zn{CTI61p6xOniI)3r3;0JX18;E=l-_ExXNJi|` zp;3GW_f|wPT81`3qooq=CW6gDsDkn4*uOgTC{d3G5!rsg=m$&wxNTXKRM(-mg6WUX zd@_~%SiER+suL}r@cK;AQ)=AN1WfS4)$E5T5{LiC`gXBsCR{4B(ZUeE^M{h{CXiO- zN4tfS-o}pHY6mDjpXcx8TnOaGaJ^1IWa%ruj7}MAGyCWftctZ}38mk}pQ$|6&Tfw0 z=U4;WEVCa(VaD5kQtH~qx@LX|kDTo(6&>Cd3b8r$aDS})LHEeM_xcqY)ovznuUUmx zwA~3jcRepN<;bN~2F3J~{I4dP%1^hRr+A03x-MzU7ceJkLkVD)yk6Rf#*IpYNP-v%Wje-<8R7kWVvhnznO9rQKQo4dvvdwGweI>uI7 zP=aFe5t@0Df7f3d`=f4ts4Bfg4DIn#eMHsL6;vrYZ14b@cda^XBL&_YF0f`yjPTx& zH6HL?^5+kYA%zX3+jOS=B9^!7T_e{8wj6i8^%LS*FUPS+=7`XGKJ#Q+C+DY2j)saO zwyHuOffO&C^_*+E0zXN3@@h*O2IiazwAwiP>{!0u>(AF?ZTf{S6d&e_gJ1*y0+2w? zo8do>_ibi&b!b_WCu)taD;^Qvu;?2FH6b&!cEZ3d5vo_r!*_qB%40CyJF5I zqjLj>s@0<>lHcoWTdnF+e?41Mi&}UTsFC5;OX{^3vJILI>STAd+^`h9;GN0p?s7nU z;vXO~XQ8uC;;;fy9sqdvY8nNtJn*P}&b0o=lCa%-A<4LR`FGwO$(K3@eWHbQxvFAl zk5&_z{@j#w+S0Z!Wv*};zk<2`K0qrymp83^PiB8b|IE+xe>Fs{em`FFp5m89-CyC& z0%4|p6<6RpZKEI@?-Fr1v;v@sAjHf0=~RKc8ziTYJISpVRX!}*S!pdA|aKE}%Psk6BJjS9u~{V8}`;mfr0Db*AN z@elJv)OUMhfyh=>>eNuo-tkQLMfU7`g>33UxjByB>~_=5=mFdO&yKYhIl>Tl7fej3 zzdW+p4SB9!7yZp!Ot&`$#20!eRZQtbIVwQMq4ToNw^NL`trFxIL}mQ5Mnn3QPXKW1 zw+Aelfr;z?0wUYKEg0X?=-j)JY53=8NwQw)@js{^d7Z{n53%MFXHx0URCO5IK{;*@ zqeahC4l>D96NrG|e_bwgcT>(Wc(hK*RZ zXMV{L0{qISPQtx&7yyImrD3hVOR8FzKlG^lO;|A07*3mhJn%no4nGf|3tswPA@N|` z|LQ3JSH<_gxhwz2YaEyVCZz?UZty6hEFNdyleev0NZsGsVUXRQSw-H~o4k$p<^Lcr6Fy6`VoeBw_$IZ=NlINs7p_;>HtCxuG_e`fyz z3Z^bfZA6}Upgx={+^{dYrhV>Z;tuFwJNawaJ`a$`Zwua1tGVRlM5v@F*Z`HCq{UBA zjrP+($obu8T0rUGgTZ2zUytw(I6jmY{Ba+zGc+Wnni3Wz1I7M3i~ltSZ`OhQ$bU;= zL4R+Z!1ACn!otEWsTAJo)eatHQ4A^%iDK|QTT(#HB}4>_#<#W@4=btzj&1Dbeq}$H zD$Q1iza%HqmvEWP+zgRu8IB#5O{T!JRTv%N2bE;YQuAMKlg>b!)CUi;t3*9MqL@GOAVhJ_Qwf^=XP8yp^stbl;l%|_gR_+>ubLEA==D4xK zOY&R5OD2+eNAZ7a*Zf&QZOa_V(!T}F-*{v>y|(bNvN92()>DZO9`yW=>XsNgQ2 zKt4gBpwO_HirVxAnHk690{c7|8YV}MFpPwIuB>p6pY?@5%(0zW@(!*#b9qbj6T7`} zB+k*YI{Qd|#TuM&j+M&$lKur0T55w-8{v=Lc_b%a*-@Z_x$$3}%x{*ij%wTT9hkX2 zEg9V&nB)MdH+nwPk#z)F^kK>C`cJ8z0awn!a14rY4$|WN5mmXS_X6`{Hx3@fG9Qc! z+3|V-&XRIi-PJFh57R--GfMTMo4oAwF7Y0qgjtSMC3kf^_303;HQ~#^9qJHmT^4&v z%n@S=w!|8%pq|(07N%8vk8-gX8{19|RaG>+j_$EHvynhZ?8+P+R&GlCD0o?2VfgWD z)y!-Vc=JE(56HnT(_B^b*Vl5|V{lttIwQd99}i5ry1exk5a68*jv5j^U*o^6Y2c&Y z13MrwM!yr`^Nzd#6Bl$<9#U-hboJEbR#2G4aj?pn1t&;$;C61KrG$OiGY$7-F@uRk zHvhJM8tTV2sQxHo3-*T@W*@l?Ab#SAhC6 z>;}d!mFjndaE{#??!$$Wcp74sW~+J-qpyIRS}g!km#}fB{3>KtmnX>~`1a2Td|}h9 zFIHa5))`=AmB+O|Kn5PmbO;-BL?77BO>ybIlX~?G{fWcmj~sYFSPUJ9?HEc|7j*4Q z5eN?VP8ssg#A)P3fc=kaHdSaB3wzEW^`GV?F!X}mSUIJdIdjkKv;}W5$GFle!(={B zD%;M`18lTAqGrA8rWQ|@=Ok*at6%97GcHG*jx=yD8C zdbd|{*R$?nW|(utORuBJmJLx8RXO|#SU6}}Oo_Mz6bIeb=o!<6Do!hzrWK3M|FRR( z!nXh&~yg9o0HB&xDd7i=<0Im~!bhS89Es(EO94JY~uzZPxI z{%tC)nP!J{Yh(IxAuTD8)Z76;MW%I9vb4u>odP!}H-{%C5~vl=*&RxSMlS8hB^VDE zPu8y{f7Jk8BoNOmBIbcZ{AxQ#K$zkrPQ9pktRR1?m=S!?-$~rY#OZ)~n4f>_0Zq4h zTarM`7YH&wEH5dBNeO55HOev!=^-=!5s>x2mS$UuL04UGA5_)&v!rxTBC4?IqnpQw zM#6x~us)Ju-*D_|3|;%_Hd*xriyxEz508X>Nw}8PpCy{c?yS-jpG?h696C_kaqp*W zB!s}{O3p-AWd4sL%K;+n;X=1EZjgk%#AsGQ<hzhD$yw(D4hn+2?SArVK3Jg0^^y&VjW6zh=*6aigSP0tnLkywzm&SFf?AOZ}ayLLg~7hS9_0V)9df%%bjkm0Xm!QO6T)v zbTnv<>lWD^+1pwZq+>2Cp#W{fTQ4jv>**L%&BK%d0CrQZilkw*(J}m@fZA%^S+zW zmV)aOV8W$7m~1Dsi$~u z8U;b(+;^c>h4cd3aY}3gw(~}AZRIcsoF{^Ah5a6c`DS2J50K|+G=127VWbc^zEIu3 zDG8ucr8(rP;EP^a!9)w%otG69tx$Av7Km~17A0HOM_{o(0*Nb&f$UBs{o6Ze_~x-| z-S9{Ok%pA9v-x%URTV~*qdZi(r1E-S;;x4e&%z#l9rgF;kW*MTpr0P%Og#HV2t@+ykz7ijrUB=VC5BS@*( zPn4`si(b4F0wJ}@$;4FPIRdl;*iq- zF#)>Y(t;g4B`Zz9XzzB-D0~Jg)`dpdUnpiga2pNA^}ojRjVfi94d|D#;5 z@cTN2PbqqVl1oxO2bEdTf#;)xh<@RTbw-|bZlH%IU$h^1B^#I`PG5@j>Io4cxpD+7 z?I;C;{z*VbvpIz%5So@Y*{zx)lHhXkNEHsF!yG)DzvU}qB$Gag$AzVm;|o-bX4$qk#6n=7Mpe8$c;++7kf(dE35*l#pL+|QMTYV%tw zL{qE0WfpW2!x*xD2(e65$$4>j%sgF`q4+CrMYHn=YTA-d%6eYM&6VdH&4R*d{QT-4 zyB*4|mc2n0B1BHk54gwsW&oR<4Z*UW+5H+704>|StibRa33_lXVxFs!n27}SP>psi z%m`-qkA5L8p3ODwnKsv^k!93xP?l@F-D?+)kv+Q;A|n}NJiNa({>$>QY@gHl+(!b? zZ_^PC_Lf{bqwQV|Y~OEJ`N9pC!=7LbpE=3TevD8eb( zFS!{r66%XwKiR59nD-j!odSxi1UBS{F4ikX_l1cv3poN;D>^MFc`n04*w}+gw?v#t zw`(q}_t6`a$Pj)DeIv5HsYGJ`BHCOr!+R(!fv&(xq9uq5PYS7l4OP()y2Y~48&3gP ztCG5Dyck$z2+XA#*NZDY zXEuzbGt^NQz;4J4tpZqZyb))c3T3aP4v}Hz1T%$Ipk`Idkvyj7ZyqXkRHWhTDeZ1B ze8@R}Z@4Nlno6}3Gv@G}A~AgvA0t)WS_QJnWA>dy%t_}m>QEonR~B?z$MFT#mTyL` zxl+~c4!=J;EqVjmZW4*6FVe|0V5>gS0$fOoHdptX0OZNJrsxwSy_J&=yW{^U6Th9F z*_Y$CBG@(gm7P#r6^`z|?Hpl$EdMY5q7BbY!lfo)f##`F0hoj4eGyF=yuZn}zFf%2 zQW@P0rZtX7;gRLTl_S>1HfgycNhT&px~;ggXGY!~lMyIh(m@AG0{(|iCF@m`581Rqh~hDnJlEk@Md>Z$c#UMXkrvlTOoC2z*Yd(S0n@By@VaG zO~d1NszMXN>L3MCt&T{J!OEgESW+kj{KlASJ#TI)Oy#~8t(eU2LF%yR;x?5>>Nt%! zJ+^&Eph9aX*Lw(IUIBRywWQnL)M2m`DA}!sFV7}ag7VU_!hFLjLxs?`E7R!HPG2QL zC1uCWrNu`0#WlX@_{-IIy28z&M>9K_8BVuF?&fdau~VLYb`j<=%+POO(Uc=9pv81h zd|+O5zyp)`w!W75cH=E&sQPYx#npBYlb+;xFSEe#!oj!|z;cMKMnxV02INQ1Xlsn2 z3SJ+IONVwmm&!?{zgHGq9B^Fhc$-_}>8S^=aMj_d0BOoIzkF`=c zDg%aLw>oqKdhP349!CYg*kcmyUaiD#dSd&?a7`Cyio}gz00a|WCVpaV7rd2;#|3$*J)m&nF z{963p28Xm^<=K7hQG>dau`0_~1R-nr#W1n`%Ro-AZmgm&q#A?&{v^eKsjHh6mhy!* zFXG9&q-P288T?2Vx~(Kpomy-#GYNKRoT&$wC!n>;TVa9V1zMn%mYlW*LcA|!Qx#$O zzj$dUY}kc#uK*KXrpNBkw|sia_|>9pTs+z@cE|Wl&#;y4gbOo9=AaClNkG)sDr*ug5%?_+XaEC6Ac}>_jQoimJzHZPrzo6 zxl0_T->&&`P2U8nH;SuU@)!FQ#uVd)S>(|#M=wbUOS()8VHJ$3cnjX0@2j%(_ruYGtLMKp{V#13_%ChSmDT^RC)yhQ zAJmw~mge=k|NjT@LCgBJJecqAe)3kduc`i~lz6zR+QuPM{g?lFtM;XNmdu;xJaZNG zBF|d&rX4>qwfZk$=-Vb!&MNn>L2w0@&f_TO{^{HOWic@DzlG1a?Dbu>_0Ky(R(Jn= z-Th^>W!3vfao6OJfHZG~s@kgTuH7F2g`1BZcDtY4Ze9p0SXC{PT5mMkd|apg$@uBG z%OP3R{OBajg>TnWZC+tFIK=L&Sa!!4-TA-6An*=94~l6Omc3FDu2!?F8m%mv_r&`D zpHhM+mB(O0kw;2Tt+#~p5Y0ihl7RmPSYs&eqiBe1k_i6>a>?ggzCB(2#VwX7P5WN} zd?I&hcZ7G<87$a@E(qUstJxa{;EL1>gTqsg;_D;MZ1AQ3v*WriJ^D565}#DfC1i_3 zC?VE;nd-?IcD)@(4J1m2zU~%Ot~Wk0|6yt{N1LaYdqUWihwg0W%_7qsj%mbTvQcsd{EqqgAdbXx zm}6LPUi^6ES<;!m?wbP^14i5$Th;vCN(J7qyI-d}UoljcB<{HdTiFtkw{Tk>8M%ja zTb4N5!Qb=ky$Lii}iuAp-B0ej^-=zgSHKlJ_`aFEQkxU2(|&{5VejyNt2H82?; zt)xi)>%V|o@7SS%j~?aaS!;=0kaqt^5230A?e_~26D*#)jPkqPAktg$Oa$L*c|ZbO zDgShQfdSL+((k5_PjA{w3^nw5QblIvvoVIVxc@|w4LfF{+3$pL7FgJ5ETMH8AU#~B zzT%1B8~#DN|I|Xa_`0|gm=@+8`h2_jRUT3BUx4cRu71{Z;*OzM7B3hrfXFnt7Gwr- z{eAoDO%GRN&`&8CdzMs~n8I=ZFX(zFsxdIcIqh#@Ed?%@Rt*nCDJc*YCImqN@df#x z*ao+1U^-N$r6@=K&v8}5%7RMaf&w|Le*&&@_;JGdHW+s^1^xhe*1(plkTdocaM3v5 zf4fKphh-cNte9eSfA)Gqritdyi~C+AoVt=q4%dFIkeg3;6}PjM&*gkkw==4w`FI{m zR7Y4rpDU2M=w?r@WTyHJR!+GVDEud&8>?g|a)V#SzcDAcQ?4QcPnQ@Ws1xPsNJ4c) zp5I$Fi}P^8Q_@VA?e|EfavB?LZTRkJJR#Ki5yazoew#H;f~iEbLFGb=7nMi4oSd;3 zP`NRa_v_x2dSR7YS$U&UKKDgpX{5;gp`K8olZsWqBv2L%`6aCopVql$iDowU$eYio4XCiOOVpS;>}p~M1P1EswochnQvFB zl~k*_d~Knmc5!R4OncFZ0BkI%!W{y4m*H!{ zD6eo~8pch92}1-v4(+<695S@pQS5@}ig^Q2U*;(1yNzp3n5x<<3k##I_E5Fjw+4k! zC06_d`a*->L5f{?UeGaoL6`S2vI$2(OyOx`eOj^_F?6De$P1nf(OUM1pEN|Mf+H__ zB7Mhbhz*Q8$#WKyC-s1smUtdY$5f8DmIVW0D!@s1xM(Q*R^hE&a%i@9~ z>g8W@Zn-BJ+#H|ka~_SGFA%vS?gtO*mF}ep;ttHS1t;gt>Eq%!Sr=7{YfWW3liP;f z!?D0*()SkDkv9*a#i3uwixuz=zpO?tFPEPMF$^C*w*M8!oyYZ8Ts8;b9FxjOL>-V; z3PZ{eqU(z_BK=%CUf|ZG-D_>qDkw~tL{%vD|5BsG{Qpah{FHT#$9PEgV|i?M8blo_ z%nE;p6f#0nwI|4+gv` zj)IP|%pp@TGrDXe>~Kq#8$%(Q#a}N$Ee?N>N*Df$2;pTb9?>S{jUZXN)r$?!9A^q< zN*OkB@*;l%DJbVH6VlmL3%CREyI+t3*sgA&~`oz7^*s8e23 zODCeH$tEu-__Tdr_}!vTIDTJqk-3Oxa`Ur}<)F&V&C969^zdO>S8)f$+#C9)MW%wI z#79z8ZjBv*Th{_^^n(E-52!2UEvu$B8R-%RI%eJpUZPqX2@b;rId&pR#uaq~$Mb%p zs*0ZCvOM%p>cEWYMppOtl`1FMffT!ly5rd*|K01JDtb|Bq2y#~hLZkO9Y`dG_`2)!IUNk4|ndyr7>W z7a*MYrtONou*{;pYy|J`M)^)I?47vbFec@d9=FymfW z2FgM|yN*-|##d$b2hz~2zyeua7%U0N74K561@KG_1ofMBb@Oj2u$_bCP(*re4qS$P z*JI93S)0bX`)ylXJ$dvz7aJH#k>_J@RpUVu9v7X%JxjYFY_GnP=L!n+!OK>S`|`_5 z2+g_4PE%#RMJ0O=Lcqb7vPRLhb#wM%^wPH~XQQg=Jks!lJspUAALjX+7}T-;40jZd zGySLbAna=VWhw(@FY=DzbjDT8Jb-;g`+g-EJqr_Rg;gi{6x~<|ver4OAdGe)Ml_e# z#>An_^t0*fiOfP9&NdxlWwfgPkl^6zZ+mS8T@mf|d|^TK6G<%80ri$N>e0Ur@~9#n5AoQ+w@I9LtElwKf_#A^iG6`%;pg(`9AP0gr~x(Lm#J?nZA=YE^c^ z3S%}YdY={#CFr@V<#9#Tw{@e)Wb6m|WjgV^dU~Z%^OKx9NxTXwXehSNReCmaGD$vo zieSunMBj?Tt^}igQ{n!Akgo>n6~F zsIx2tJFJCl?<9KGvfQYV#$eXT7iGnU)dW>A6>Fn|M`exKkmamgoQZPz{rMIBxFNj> zbHW*1eIeTf2AGi@X?v8w=dEXoSbQ6fHlW<=InoPQMi*U$4p+IFsI((Z6*Dk3JcgHH zfe@U|Sm4&Hnjs(tTvZ)z^qB-PWP)&4DScaK+@^SZ{Zq6AfbVYASWA{1>yPwwdo-GJ*uLtmwo)v9u2 z;aQ|d@HE=BETIKGc8}y@@<=IHqsZ~vb+MJ>>`{stI8ydOQ~VaTiQ@!?&aXB}yCo6L zCb$*BEF)i&*sQw&zv@_7|K(w|CmXn$?Qi(W6LIw;=Fz47oQfU`HCm=b^XEyj3lBGjPFJ^9{ zLOPV4{L8~#(<%*V2^mJjf<9*fu(OQoJm+LwWFI#2xQXtiI@#*fRCNsRzQEcx&on0t z`IF8s;G4O>Y(-pMTcR}eL9V4|k^BeMbam$o`x5I=4K+5ubMt+~HJf63rzQlh<_pyi ziuZFp9Sr8&LnuWwsCv&YW_OP%;dk+qJZ~t~)(XEXe$&wGi|J7KRhshI;S9GfMm#-B z5!26Pd&N%%`$d{_(B%*3#haYdjAr@0$Itw9EzlI;Xku${(PZ`OjjJ!*w`w}Zxw44qm)K^kdw55-y?iG~kZeLc+;{5TmAXa2tC$Vhw3u>~Q5Zr6r@=!m=l zu%dunZvhXN)4)T-MQBFmT3_ie2N5A=hSimZ1uVa6#(?aSuBJXoTF(RcsJzl3+|9F5 zy}p3EGYCRqX(&*Bs$jyw4DP_>`qgdWt0;B4-9l+cmBz4XlMX#-|f@a6AGza+PL64pIS@Kg8G_4)H!{I1)I%?U>VCrirxc< zB2-=i1bVHY?NmZWecWPLEV~X%A8N|=WcAY4MXs)|2cQ|~DH9XeJ%kdUH!j2e3r+vm=R8gqE0f51sRzDRH;=Po>jr zxbsk~H_6`p^bZJ`w0yc&4u9wx0yNMxW~9Iw)TFrN&~rXrVb^VR(gdEA0;%J zC0A0BGdWWKPrv^j50A}fdpvf$U&r%!z0&NDQ3QCUctIeLfEAVO2m*0oKp^lmoEx}u ziU;u%xI=_d-OhtRe8T_!z@VaA62L`_FV)c&1iGXE0@0H|pq;5eR;I|R{d<}!Ma`{`>WpihFUTpG+AFWh*xnj;-y7eY)E7 z`*OrKx|z^6bJj|1c2lWCGN1pf>wkM0cNNB0_m2GToga9pfGVCM&zS}d*d*`ov3xf^ z@nmhUnEm-=$rj_uST!zEa6^6deW9M#zT&&R&p%`GzNh6~ywIOtw7)MMyBPPwt!}ip z3_R)SGI@Uk^6;R=_QnyTwE4TYmB7V6pp0j8sM%V<9sPVV;}RP6%__0uDl}C|Qt+I% z%#?_J+#|xD$fn<4!;<|5Y2Oe7I7A=%?ys}0p9kn~?+QLVnALfcH&stm@Lal_P?pQF za8TmiB))FeR}FZMFPi^|@M+!p{Ur z_k91HLw!GU2Fg9MEC0LBdF-CH^z8)ak!RMeqIaA}Zb=^|8VDD@vs|9a#r%|JeX2(7 z2;8(EY?4g2J!wByFKVGN>G0thmqN%9hv7!P`^(QACTe*6WG~x~HjDe+zU(m7kaNaV z^_dWBQ-L}KW*7cCjPT1?^tWn_@XJw_r^81CZxfdX5hDV(i5~~8 zMg-pS-xj%I9E-lt@zCBhg7+u>;gIGfDS?u+gPMElQfKd4%#9i7WZgD@duzjA?p5n& zoV((-2d?lkqRRb%HFh9K{z$mP-X+`fZ%V?KWd6OrV^MM>>z3umL6v{+(GR>Mzl`~X zzgobjvAFOFCq#< z*!8|bM<=3+%lvqFZ$2%)7p}H0t&4pU$`uhbihF+PaILBft}a$`xK9lD^|8b03;2dG zbnng_^*>p2$2ZEeb*ZSk2K1)P_|6AEF}hXKT8~aKk9{RZMjT=1O&|+L(m9=CWJO&( zt~kvaZxxHj%}UoZdh~!ek(&uuzo63q&#AC*RkzN%7RcygZTps&I*16?_^Ku`*|3w+}hB262c^IMCwiV)?ttUaTX- zuR^>(JmJ;3ij}VQ%XzP!5Cr9Z^TqGZIuc3c7ut79$EoxuXCb1Z)Xamm!VkoAWcKd{ zF_q-7p&RgNuOZLv$u{WDmvdqdaVa?)_Y1CsoU7g0i|q|_^jK`ga4@eHYOuHtQOnb< zsdY5f_7+oh^S?4%JMp{_`OCS-{=T?F&^Jn(IEj)#>uyKq)gz-95B}+0xyt>}l^h(x=^8nx%oFF{j@hrPVk+#uUGL^Vmmzpt^>; zx#2tO~7uHjLHDjdvYLJ{g~SsoHjud7LH-}}yKqOZgd z>O(l!SR-e4Wwj&s69rdtWi&2b#c5u%QetR!v^^9PM^1+4AK23vY2-Hn87|&y@;&>9Hdkl<8ixaQ zZQ$k0DJiBa^{_7dKSeCZe;KmlE@)zs@##1>w?#_dAP@mdkOQ^T>6mZ|?PRxT?)}4j zp;9iS7l9S2{rQD~nnM~S&)tTq|S%BEG0`&)>F=&%DyP*+FqE47^L zune|5IIF#jykRAkyph$t0#W04M)wN^2N%hgu6gfDj* z&X0ce=e(=Ue(@yg_NdSN2+RNOLvLTM5M5pDEAK=i+@ObwBrL`Q1Na397V9u4P`n1@0wPiwqZpI9R}-4 z{JwZEY|$f9_*6zHJ7`TK^5DzlA6-v}S{S8gdu8+PNBm&l@GJaN@K<8%@H4Sbr1$Kb ziyqO!vV5WU;{IHyA9$Y9*z7W-{fpOq!IQMHZK2cOOn*?b;Vy+Hh`wYGl40e=+#^)#;O;j!NgL{G>pO9J`Eio@;dMPTUw0?Nwnzn6!b9r7_KFs$xt`=pS3`;wM=G`_QWjbR zozkqM4R6gzZV7j@x7|OCU8Rf8gd4sOr1@8+ycLn*7c&T>)XsCmFBcDxURgGo%#!J> zH)ae**5TeO&2Z6Lo!R--2W@Rn1^@6v=+!pqIl(B|+?ZAJ!dnq#(kJm;J0kjxFM|tl zda|#2HKTgEggXT#t_~H4i8WzbSD~#iE0q`8nryPywuGiWZ4rA=z1^q6YBrE#cVbRj zKe`?$Y}a+AWo2~W+CGPNm382{aQ$6`zJy_IYQqD();Zn0^#zPuQV)Rd0B8|i3^Q^) z?k$t*cox6@T@Pp1$Gxl-psO2D;snb&X%H4nap)5S%P52Z;Or&Oec8(m`6V9G#fGmF zlDy63k`0qm9C!tGNzVh`z?NZ+psZds|Ce1;e3T@3(`8M(hT-07#R zh2M(zwTtpPxYGDT5kUx2t(ptAE*3W2mygZDmWG++@hvzoGVxkx`4QuFxh&(Ont2A9 zO_^q$e*8GyI8coU0jj{SsBUcN==fa4iCjtUrCOnL(Y-jLMNc|fWzAMZIX2UND52el zk#5?^9na+?VecwoPbeeTEZVP0vDk^}Oi?>>8bp=1l9AyW9;5}fcJ-=mViY8F33|Xi zZ>gKq(QJjZJPpo-)g0Z`(LOxQxa8QN%aHEb{cMMQym;DmuUJpSN(#e~BvYcb)=KQWye~NVhPH39Cktxt^xx zrzD)V6|Q&XYc_{*S}?w;{SM(dRITyG-N#)T%` zST9o!86EFP(-ag{>{{L1IDJU^F*7(_P*OT3jPkin_&SfBQ+#U^eq;JfKV(k|MSGo= zsi(!PHs*_aPwIrF@*AxCU%h)+C^%MC`thnvVk%rtCV7>d8(orqZH+9Nmy@B+P-26A zFk{gIa1n*yc5VKz9kA_*r5MlwxVkHUwPshclo(;&^v9W|)k7Zs#iq-d6=tp;RijY= z+Yyc?=-_Z^ZAn>97jTMM#T{dTEPi2s`(VO+COT~X%>!E=^B#{{}BJrBzDND)gO~4Sv!C6)my{)d3J&88N@ZnSD#5lih2B-t6E(y=6aU0shI~5q;cz3m z@5iwC-(Q1IGkaiQNK(giIYq+bC)~V3-q*k1m%l0|vG}l^=8FYH%KKWQciQc>*?hnL z%rwlOPaQSt9{kqx@5NjdoRxR4W)o8Ke%!w})G{ylO#I{U1gZ*~%Qg!F^Hd~@oY1*l z?}x2!F3w75=*Kq&6gDx=Ol0b0-m&-yB!DB+X-n3^;urSXg&!2FNjcyPk-gtW0kF@^ zbJ=p<>4|yNJ1N?UO0wm6MClE63wNz#YFjMf%YeD#ln3GSF^oe8M*>}Y25%B1vQ~&^ z4#=2!ENISZr!?{74%`O&(UW+sGE=UbfK`XwZ{o}p3eE1ng^Nv;FWRGO(79uzynC%j zV};x2Zf4r2%^lCt)CjEH_6<^TbaH((T0NWbIPYG2g2I1rv4eLxL@$+OrCJ6dF$d<} zZuMctLdJQXY!k zKJkd~uEqXTC5K&=+8EMK^wmVZeWN+MisP9FO*$Z1U9RdMj-t%k+ZcOapZ_t2ZNv@b zd@(t_BOK3F*0f@_oAw+mjS6&a+97|2-r&g0Y#2>!jL+As{#0?o)lO$~64h|W13|-| zPXFfDPng@RXf2j=^RXpO&$o&O%Sypa&G<7$FYj0< zWoI)K$pl@z_9IxXRS2!knNBgC)#gFo?UE9Zl_2<1U*oO*yO~t_J6zlIx@mDqN!Xpy zsM71|!_&DAFZta>)mSGQc-^Fo77Ijz)c?Vr0KVkzD3ON2M)vi3(b#nNi~dc69aFFP zxici=f za+7uU4%U9<`~Jp4@BRZ4PcjPaC|&an%k6C34odF&UwZ7rlPcto(-zAx^yrkKp97lD z{urD&7o9yW?YTI<4e@pNOds#GxO^w}&62=D&1W+PmhVk_IM2?CDBEe)?;^NejJsRQ zDT^m}ka22q_s)$QZ)#?$zfAfEv%2oz^y`%sJaw`8isHq94wAX)A>^%xV{X@gUDFZInGkK9Vy^P)%V8rm#*yu|N5--*Znia2JYJupAm8UlsaT&M%;k zEHYT`O-L0OAM2K>eDBUxL(7QnfCUWpa&`(DBAhNPsBGv6#J%Xfc6vKjp&=*8=@P2H zLG@By`%@Je$2=O?b>n&xHYKf^Xx@Gwtji1J?3)R1xV`Ch77%CXO_MxV0HZBI=) z>U19@dd?}CDWc%~AE7iXO<61LSx9(lg` z|H8Lx;hwJ2v&V`vzNWqUtlu;X#TNyyNXfKi z_PeHF87;2Yul)D;uK^@p9{kGm>fJZipKfmNubSR=nZ}cX57pO5bE!upW&Sa^1Ax=T z^K#2^2E3WoagZMmf4k4;mhzi#w7%?Vb%>R%(^Bf_p*cp=5Wd#V)nOFwLvKW)KUk$A zco0%Is&5winr}Bz4exYLqY8QS%qb!{*|=z5*K}J)=($LgkjVd-s-I z7(@HKce_GiPkq}4XJ{pMQYQX;_hw3ni9F_(DlfF|uXbH)7eC&8|JsX#&zzE&lq7f- z1EH67inchWoLh~>nWv^a>%xqcF$PL|2RjZHjq(n9A##LsQF5Q?VNp0CE(%FF#yfY+ z#!^4ez1PnE_*j|fr|7|ad@9>K(bDk`G;du=SznRmp_xWY&%Vaq5s~9#IoHAi?q}qB zK7&g7^>IGLDV*Ye;-0ls)WE4amGj}5fQ*UjT-$05mqis$nNc6%J?1}|mDgzO-T}y3 zcIG^8GNz35I{=;aThv$8kv-fV{Z4Wu=Z<+tu&msy#Jdv{p{pgwckR}He&j>R1k0p@ zlZt(q=E#ZD?vndjndYb|c4X*|)Y`7EF~|0^Wk z_9gJN#N@Uk52A~+I`L4#eFK_QFN>|>aBUtanRB;ZDNf}J3a9=E0)0REhbV!1dspc+ zh0-4qdElAFq^S0fciQ2Sw)|N9S^FcAyeIa19LCQ>Ki}p7u%A#@)pLiD7hF36Cv#n% zN;V$`=tG0xxM&c|?Io||eSWO$EuQBSWqc|%RLEwbLwDL{7=;=M=Cq-dD9{>&F0&^nXtUE2MX;Fr5Qv&Jm;Kq z2jL}ZCOk{VM*mi4y8c?vD5}6;UyCQ*E=^d}Ue(~1G7H`7c!o*gKFXqo*D>s1YRTM{ zO^o@;Oi|a$wb^-(>%=4OCsSQ z6+sz63_%2&3r5Zk%!<9J8Y)ix)WG=+%CnP#gE2BD>=WCAfSQp`VIC$w$PpBjJ8qT= z%JCX>ICu~L0V+$-kTL-(3G(&_v-rfKiKMYj&-5IC_tw>@%E|FdpYPI)wvR2fk6rBV zL09c?DqR!)NwejiSxesN#*P=8c8UfcG9>>|EP~prHIjDEAKHm9C*ej*Uw9 z{peukoWlVB;^1^m8(c_I8Y+HHv*s`}IHtrB&cn)Wu+w_6@Mtt;^GS3Ww)EV1oGfl) zZf~)Up2}qLK!}%`6d73;RlwTO=o4{0_Cs+Jez$q-hZ}{uG@d(*)pNmq0ulEdVen2G zXjg(jQOv6x|>+&#zETx2`;b};DoNWKIpt6+{lx)h#T?wQ1L$5YKcSrJblE{lkSWRoI8l@6wUIU$DbXqA=UZMU$Q= z4U7IGo7FWHVxxK0+_ZyF=i0W82&Um(KHQ;P_#6HR>_iRc8IdoG`u9|t}r9m-_A zP{GkI*&-%+P$2C-(TzU!XI$v^WjaS7Ii_+NHSftp6I6723LiWjk@;rr@OS+B7?lhc zc<$fteC<=ox64Ow`W*7v1>i_=0kdSLpbIoaMg$X%fcNT|QHurn-sw9>)}#pLh{b(9Dc$8mnTh~~ z^MYoOvwA_MwFdNg2{8K3Km*3&fd;ccd+t0xCYP7)iY2$FQcOt0r8}CCPNvXZUU@A; zli%P~)Pqh+5=7qCGFAdKoVGX;Ivh{i#2+}%l5UaW0|6nb1I2DAFw{p+vTFS}%BQnm z|0l{R_eicRe+R|ATiW&z#9b&wc~`-E#bgzXY>M=+*)y(%!BvDUs|CN}U8P9bN8wlv z>Ob2==&t2H#|>aAl()gdiS?Nk?yR6iBr*c1k^|_*ISh`m6k}AIh7`nnw*j#O&0ZI= zKw8u0L-EMi#pRyX|0rmaO|8nQ`+-bm2qzA8z`AQlEuN<|RS1}exiw4_2`uJh~F8t9{B z5e$qkKn!DWI+@igNn(~GYKYWbx|k%+T{w?Tq}JLp2t^nImdfZX#1M2rB%d?f*eN1B zjUR$VZJ}oWoWc(LM*7m{F(A9^qInOZtTc65yD$ezpYm^BW$|h z((9LJxAu-!F~RusQ#^mV;uyU?7fKC|Qn$4p2Zw7J4>$et22qI^+PMD_ZGq>6DB|oj zpT@xu1QJH}cm*NO=c)I-nXCeHC*Q5qF%kQmpk?!xU>Vr z+O`S*t*S}Pl+e<}W<)ZsMZh1q9-CnOcLF$f+bB}Gq~+*Pr4r`RNBW0nSx|)wH(4&P zBzJy70mXCz8Nvse$G#6_*nheO>1}D>k}~kuf3}6i)liMfXVQ zQyH7aEH9*XDT(7QhaJ#BuK&kGcKqp)HdoVrZ1GoSv}|!ZIwAMMfL85Rq5h?Yb(BG) z%jDmtCml)4SJWH2;d>Vb97iu9V?;-#4lNM zzX8;>3vy(uNlyX!9iWw*1X{@n0N*!{%E((}bECT3X9^$=7Rzn#}jpIN??z2K|Tq{J~4tO$>>lr zYc&8zSb9pPPKluMq@kqRX5pIQF^l9^zXS3Q?cQ*EHW zdsEwr$;N^oqM@y+Zc~R$>bvnCjMPI$e8(d3y8=~~(gke(SwHJ$Y?82k}}{VqxJ zlt5~ynsa32u;BcmpSOi1WK2cA3Ym_&y2;pAto>T!cjfI(pJ$i>E+u5Hl3} zK;DZTjrDl9rnP4TpcQu1sz~|XX4ghuV;o>{Wwm$9ipby0J>CKyzaEr(qDHFF51@3l zkbr-bu2v+#f|m~0fJ=7`qi_(K<4~eaK_g}@-9h~j-L(OOBkeZe<4cmoO3$8gXF-J- zohP4Syx#_z1w!gE?+%S6UOUM}fHRuT%3zbhAT&Q|Jqg4VM18R_?*y?TqfS1P!eEaF zCv;&KaplTA9GoQ zoWFfmYbk>k_9?aZk+Yc6*=8ra=W&ZvY;%~!Fqt!BVk!4z_Ls?PlY<||qV+p!`LP$z ztcEb-!{tAvG{rDhwK}Ly#V8C)m2S^)g%Bn^H@sUZ#SlyvM6(jtDBrbmVe`MBzp0iE;_#f~4>w(Dnmu@W6sn(1C&1ap@#kO14ieVc3u>t1k;@B!0BAJ6Oz2T5~ zO@m^&6H%+w?pTBVN03jLIXE^;jh_fop^iFc4n~m^ShM-3BC)p{Fg%-nkuf3_6#1_5 zT+13);r1VY22t&&%P+#Jt^%fEjO`~x;lQyjpNl6yEQr0$f`2`Y#nJ5b1^VWp>K1(3 zmy<>k{gE+MDNG!9EWE^JKuf(r9x5*cC~S@L)+;wll74iSv5S4R0jMm-lYU(TNANVkTE9!A)p9c$F@?Y5@C%@{#y~TthrYHIuz(tWGdQUo(unzq zCVoo{HY?|<$F$))eJfxp0=2NhZl7l%3@8G1B@7wfO0s9Bh%vH?DYNF??`vWfv*`{Qj5QGvA=@ntHQI z&sUOehdwZTFjmcX6}wzOOMmsLepO4LzCe*8z|uTyvPrW>dXE+FN%3QI*Jb6Cx6lFN znDIknu_98ScD5z8W>xFKcC_7csvwK^<}#&0fKFXbl_bt@;mwBPT|orJmK!HY@|FI>k!suVUx#F=*YBZylzo# z#PU79sz{r$mBqPB`((4gRfrg$MC5m|P7$mOd4V%M-LV`Cm1>c4-GT3`$rWGOG2c9J zW3^`f4wV0@`sk$KXf!gqdUVbZ&~ey)v%Ez;y=g82C131KV^e15psJU1*e||o{%0t7 zuPNkUdeKGpJ?|sy-x@Jb&j{CkT|9ASCy;inifpM8V(J7c)?mJ5zNCIk^amA+)A+P` z5N-+XEL14eI&Q}M)@-|ZR4TRJiVuCgQm!MNmlxx#L9Oc-E5*X;%1CsGuZT5>2_pdk zaVU#5`|AVa#W{uz53U*Le9t+9BACbe5$455%%W>dg?*i{2_Ws|+y~?zzu;Q~*JyJC zEX|}EJ`@70V@RHV+cMm2y`A~Xd(1@Y#>?o7*7`%A&bX`Js<33&GUhIIO}2Gqa9eRc zvyNR+y`cl6>Sx0Bvd$jWpuSmw;ucC=aJr?i6;KG(iwWgs0>psv>F+dXmcK9GUGV1i zAP6_x(LaZ;<-jxOV{kF~u7ovI0FV5_a_V8?*m|>pNxS+)PT1$|6B)Jpa44%u-7w|4 zaXLfh(pQXZj}P80Eyf6NR13__+wuzf^l;~aNg)+dDT`FQ;cv!~DCzfJx) z7%(Cv%+SdkR-`RKiWU~(fUJ$H$3k&>o4M-60=cO5)-guqD9VSIbwP$WY7H9SM*B*i zR>9zsl0IK=3VSo-8+p4a+N24P1f7i)w_UL_N$uuj?mk)UDYTKH7;|;-WKN&|9rI() zhcB9BZhMuu>`w7Wx45UiPCrcBERR$$-bv@8t~r)Y1e%F)`2rKFM4X zCxZEK0Dh7x1ZR1JyR!3Eod?Fe%ENj6qV;LA(67tsx5c`)-dk^90I~PSKVRuiz~Fod zA0c=}4C0Wb2l9Q}3@==&t_7&g_pXSg9+a$;0Y>TIsc&y2x)sj=k9yQ85+siy5qT9$ zRvD%}D<}=wyA#(%7ZSvzyuDv~^})3ercwTVe5Y*hj|pY?V0^W7rxh^1f+?RLlWECY z^@btU{Kt&fRN1Zump*HCrG{@F6<|%T&fK-!LjgR1tQlJXCR~RQ8pLb9#_h^cM>X9n zZ=l#<^Hd7yO)%Eb@-;@=j?TO_(w6(wAa{4%Gksvj%zbji}}t>FCoxA=<{ zdU;zVi4F217=@)Np*k@#i5bAB{fP}L3~J%aQ^@k^)c{lseRE-UsF~03Zo|ou6Yw8on0NpS{u=}7_R3citn&z8IGCqF^f5hd)~a)Q&`#|Yfb$5FlSl=!V;0iEtJ6C@ zmsp&Y9JO=$LG;Y&0s|ududwPb4Wo%V@`C5kXOhv3*AZwsL%#(1EserF!YgZHISbQP*s`DFI%^%IKl@$|$8%gVu1 z3Ajd~;YRWM%X^W`NEsx?aVQRceVFQeV#Q%(Q}&Sh1HDX^VyX8g;P0L$z8$k@5s>^c z!D@cL7|OX&e;)qze-vVcb(ys7pq|cZJCXBKtMZ+lW+#~D%FQv%&{F3{S_o@*pDnpV z+?KeuI`n+Wq^rkRK-N%~90p%RO67d_zxyKF87#My*v2>UlJc(%@!!f@4QI{z=Dhsn z&}aEX7gG@-tKIh=Qx|;rm-(5=rKB3<3zl9UneN?>d-D9f?;m?{4l>$ZwnwD(B+U zImYl0$v7?lyy$c0d{Iu=S`A(XE22>RL!TFk!V7Ydhnp42a$VXdm7mtsc}t5W zqHCf)nX_0JY$~$Nyi3~4C9f7|dEEzMAS>JZ{xAFiUpj_hO<{7QEN1I0o5J9|XI#CJ zl3y?+ln=+~0)bU3w%)g7L>k3B50s4v)I~Bzjx%&ZDc*07iPYU@Iiqm*W%qs#RX$EC zTQnpO+aetS(fM5qMIhtr&yKUe_$Cm@qzRT{u|Ts;PwnFfzHdgPO3NCK##gQiIY2h_ zfgwZrgBqbozqy)Rq4%-DUfa=+XM8#Q07xu8tJRj8DVQiADJvqk(OV{(kow|FI3g=} z=vJd#L()Tsw|1chN_<~_kG+!vP$GKEgtK^^y+3GK{o0*%|J6+~#;a1zsZv;)tvoS! z0@Rkuiy3ag91k(WK``?z^%yYN@lcWm=Lwy)`Uq3%pHhUBMy~M)p}s_7d_YuQFz4?V z=AX}h55YK3-f6$cQN*pi!dP8OOknDrXr~rQz$_EfqzHwI5;Hg6ejV2DO6|Ct?)F9* zEFH)o`y;|F@ST!r_AWYS3~&u!WM9%4O?UxYxIw=DWY~+)FgSvqt1_L`W|k&&B?XNk zr1$;RVHBvBQ6x}4{2|Kiwo)vW?9(tF7CWF(HtM1Yq}aTja_z85tZJ+)ggg}AIUa0^ zhBU~Z0ev;Iaep$ENaIhprH)oZvxt%wq(|LBM$e3vNS%Px8Fm!X^8wMF_yaTO*} zYPIREaPd1${_=w^DOybMvBMt9Bf2>`jt+=I;^ z^NyU?fM3Doe@kq4;NHl6md6XaE z`tQlqKO#sUVLXJWtxR+r0Tteda#p@3?_W7$REa_ZT1W@L;}bM}M6JsT8t{b+Rq*$* zEK_TsK+}flVI0j)D`BZ@z zoZ04Rw^0nU*aB<4@Lp|Q?2H+P9BRtg&$*?NbGi`Bz|60di()#B$ z`fk}i(M%089odc!OcQ#!1DK4H%Uj()V?huN5G0!o_t(j^N?6KWZRJOg{t$OG|PfdMe#yoc#Qd0g* ziObhZFFg2>y*jwgCzedjysmc5cGI&H@$)t@zyCvH5|Hdx*v?1fKLpe;Kfgjz*cJ z7ex*AajTdF>f#@!XLq$?5`_k_VtPTNf}* zRfEYu3Sa^m&_FXd(Z;f7wkY^1CIRetBw1|U7(?($ha>I^lG6F%;VK(1k=jYfwa@J{ z{fbK7YoMVUgT5iUm@Alhy{=R+u6F^sR?2eqCg-+lTInSN5^wyooEfE@-uDXI@SlYC zuXe|ErAVaZHbSSU6&Rg{R06{d8q|`W)58_P>}RfFQp-G_Vx!+Gn+y|}P$Dx>sgob; z=&>S=nSm|99emjKd-}dka0Ent$jC@Fk?FSQAWI;AYyP|uP%oe6vj+&r5#m5EPXy*P zv6kk58pUO)&E0hw!4EHf_=}e1$auYg)TSKCcOo-+F|%;7aUQp_V6%FM%Jmay(kTAv z8GJ;L9{x!b-}-k0rp^yc7F9Tb>X4C*lEv*Ih=#rK@Nqta^zxU$Y^f#yp!Tg;2Vib=r4>T)+JjK+A!P9Cc6UWS%dPtHDc>Pl*D^UeQxRMT^ne9t{djs|`N2bdf zlvmD8Wqud(`2C~W8<9)X0BfJaCxEZ&sSR@^7Xst4XCFQ39A_!wi4W+QT-5Tg>Yl zcUIdJjPx{#^;>xJzhCZq<4>eRa35Urj|Z7U@SR3Rn6V$JqNE527r_S1k~CxTvwRR3 zvCHyCCj5(K+6bXM)r_r@GiN}!Iec*p?=s~f6q&;E1Y>bzZhj;R>GKqffFrMNbwDwX zEUY^nDu+dB@};q&+I=qg3Lk-5wfDH^?()5}7tN!Yi&dOsRiY{Zbw2`B2)jh0O-x(qtT12nC&Lwxx=QZ6K2nXr!MCGxGbZvCnpOGjWo(DRPEW1RL8ym+K&aP3 z=mnWRT{kg=W68)0F)}yczpOljJ<`twMG3JG zGbebO?V$kD@MrGM%Kd5(HCvWGcszwyEDYpE201p30nUQ@dz9k?Jfj}_-2xCy;D}@@ z7f&wWWCkkseY;-;$YwH%C9W+!_8)t;%odf!VAQw45$fmO-s;ossg7i99{hr=UDpD} zP)^bH50)EmhnnFTJ%&p~% z_L0@yNhfvBNf_h+^}4J?>C}mzw}GX-aHq&zzm4IoBw%kR$45>+>xf0{NU-9z*K#U1 zt5t&u(99c!Pci(M2)?|tPheK8p6c2!Oi*E(7~#ZFVkuRF8i53Q_AI#)`Wz5mVZ;ZM zi6ekOS1th5+RIlsJj^0Uen^Ekl9xV5v$1f_4)JuM~Y|?)c^77ye?1 zd4Kw@2H$x^Ck#$8u_{m*&p+$rh|DnNp$ULX4bC}dQ^V)ejm7Tdkjj)2%&FYt2(1s< ze@wu6(jbhaWo-2ErYqvzR}LDI9R-jzGCjO~4Rq#-J(NBe>_cQC$o0@fxDe}6y}a`_ z%fY*oY3jA-aHMOiB<~xNJtlx5eG#K|Bd*LLU{0$Bytj4l0<5_v5Ez0kTkcR2+ z&WoIA>2dgY#qkr*%&{&UyqVB|dC&3L`h9beb&{pf-3XVTMqX6wD{i@C%3OR-4`M|$UgOFmNz z;steoR8m|_EdhY`Z8RzSWKBzU{#sD!Oo91uX+qLxwA5MaRS5&T8~u_d$L`gBX&Q}{ zSgW}?>&vtLy%GB)N-d)NDdyp&L$!zL5-1X=J<4p6vxqMa zbekg3{QCeiwwoj1%EB?Re8ZvRi3}cpv-a0Wv>E`7KfoODoo4~nRTqU0$VTQ!l5mOU z%)J&&DTkZ*0FjHy^^TigxgrakxLrz5`?XbXX@V-V0NhD?(s|WpMZ*d>;M^A%y1eu8 z>5Z7T8JZEFS(x?)%x?eJrTk6xAKJt}+#6r%_=6ylGFgH+zor(lqzV(v`91K4Nlr!M z0xk*TvV09XoOto7bB{D^;T!zZK&*Nn2y1ir zb9cCUs1o7fC9a5a1BO3xyxfdzPM!M)!Y#FOSlLPc#vIZ^AH!xWYoLtGQ%;z9!wDJ# zKIi&tsBZJ6VD4vLW+fY0T;f*p{f>9={`t&vu?fBXl{1*Z>5kT#;9t^}ANIh`%ln{; ztvLGU=byaB9|K3fudomjpR)E77_nW)Ub-=5{-ym0u+JyGym78Lt3mGklM=sKsQ|<6 z6kpxD8U8XY%oK;H7YCAh41oO$(VoXTu`!W7wc@@sC6ie7Z5*bo~aDIv5lF3JshzM`s4u&tC8>Rpb#8l$NM5zVmse zCRe>B?93{aSaxzi{p{vzaOaXnR{Z5lye%q#<2(B-v48T!bM1MYZ*3qvSUyARL z0TmVXE!~27sHjsk%l@JW>0=uFg0z_r10F;oFt%-xZ01G_m|*w2&nk(E1kJ3@fOn=tK#T^= zeYM;+KxF_<7Bz{~&TB}j$Miq9|4_^GuWL@kgZyr%+7ER#VED0I4;_v~b6+q&>tGry zm{qb%x>RSB-L=eE4WYhgKc^9bdgC?^wB$_r32_c^CvnnyAeJfbjk-9`9!gBE@(WAf z^^MrDe*I~em+xsyd;9W}YX7|;^@%@H)=@9J(~Y4r-vwWG?3%As&kP<3Hu^32UFc=k zw>WvPt{?xx0cODg))%7bKP)cVOov+p8ASS5=g&dDQ6eKpg!)$Xvx?#qbIPaYfIYMH z^~dr= zDv25#x)dheH|Dx6)lr;>b&MBqP0=GIuHUpO7w)+ugXlIWtV0x%4WT9@i2vDw&=S}m zztUOkUrbgarp6l`iukDVgYF8R&k_IgYNzSi$wZ#Gp(iU&_L)s*<#73+As?`io=}cH zqiGH~n=UX$XMK)9NF6|jyidApG9rAxl_Em&aF8K6POlC*sGDA~vl6@Y0NINIdrM=` zMiaX5&RcjQS5~B2r8Mt4$t$m+@5u>x@Lm$E#6<(2hv`VX$r(Y6Mk9zFY?}A{+MfInzx+`;e*uV*b=o18mR)owULpJRqsbgX z^FHUxszddl?uM_3^Udl>P7XrCvt5< z)amyn%fTt0V5Mt~5^gYg^1?<$zP2I555N<-K2Ug=4TbO$?u`v}X}k!`$ywP<2z^H6|2>H;^r|4wMU% ziA&6rvD*brwkfHWNoujQhAR(F6RYi!?#yWHLO2f(*y4B*r>9uo9p%J+b$kzOR{{y@ zM^xSxN>DD?-Yr)QD`ey0kyJ{<_s9b6PP?;JQ24a0jD4;7kWUhlLu%Zf6<)>Ov~Xg% zsK+R$zNYQtvb=SD!EtN%sRA;i1xuvGC8Ucqk&MElSXhzFhMt6beJtegiT|Rb z7S2LvJYdLUhE1{lMtm|+GDij|g`hQ1rWyaCFmcD}rTp{sP@S8cKi z`rS^92LnMn(DzW3>4r^T@8(|a?6)gl9P;XmT(_Uo*;Tmtcn3b1cANZ#H0nOQ_tUZN z_u)*xn1owmXb;a8gHYA##LVTFERt_^!c$zni}CV^{XV4^p81R0mt9_e>sC1R5#`f@ z2f+Q4-lR#(`x_B6Dw&JsL9YZzP39xP!h5b3zn!S=DC{TolGv7>N0`P6j0Ub%01~lJ zaZ5b`iJXVPrjU-zaF0ix+br1=Y;N?(Lc^|ZpWlwN4y4qsk{yCKUHk+sNi zNJ{C++jZLA5aB$eni>8ys2Qj7N6bYX)JGIP|kszc2o+{vc+ygEUd zb_=eIC*H;raX!X9{uP)Py9r`F{rjWmJRG}=l<}l?;Y=NqrbA9Aov2p_A@xe|f?%N+ zkKDQV#7*>z&F)?BEQTv=@*vMVAK5MA;o%VfS*945kM+QhOJe?2%#EkBlI82yxT`3jN{ zZm%Rt6(+W|1w8~>Bwjlu@yFVn-$R#M*F=o*uSGHT&7=+$!zTYRnk?=^f&|r9+GMT? zY#FauaeoA$(^cqk*?CK%&vtiSfRQF4G&{w0mI3Bfcb;di?a+gh^wOzykBCVJ1=t{E zx^y?R)+YKHN6(+1`g!*vwaFsn$ob$^Nr3p8T4kfK0C0~#UU+rvo|`Js zxX|sM+f)WQUB_W|I{s%3>Qy#y(t8v}c3)gmsUh8&-cbLrg1uULE9GFA44bt7Jh~#z zRaO6S!e6yK>ZfAK$TnLxrJnZsTkcp_OK0%hr!4JTyNWp<_5^HQb~)*EBwsR-ufY6wbSRcZoaST( zd(-94eNB?Jtq@eo4K8=Xgez}ZttQ2g(b$W=#^FSn8(57Qpbo%)XqV4C$Hgb+$0dc8 z8EBP1|9z1Qy8ymP`AH%_D+lszD@{^^QN61ZM4AR^K(QUUFXWW6>mQ%oo3?wKQ{M17 zWN!qPu@j@Ap>Jb6@t+v=L1NIFVp#L*G{j9l2dUwCq~(*)Q(dm#%H=mF8I+$-KDJhg z?@ZzsYVa$)Pc7rfikx{WFE){)3GzL$WqK!saXV|0JRI1smyzz;6UQBVackd7bLM6) zMrf)tlLUDsnao(Cnx($Cv`BD~^fDLVPt$K%*Rw8P88pMcKCGWIPv>7k9X}RTJzWR1 zq9@{oA-;2Yquwf273NQ-aZou*c>!MZDxbxexi zQ}T*`v-p^9+2t4Q^ZRN84pGFAvX#!oFC)~gePZDg;C*6$l`DdT9>4-!^L}($xF#`e zv#RUe((wqP(Uy;IBKa{CwfY5hSuMksSmn-g@4sA1!^?aJgGsAtAgCC+cKG zL;S+#&o2F&r{gTYe7x{|Ef?eti6o`kKL=z7J0%TR5Uwt1C#TbA`Uz*?~;2Pe?#M z`yL)7eIf6$H}Sodu!;C%GZeO7Qv!2@NMub$-W^5+91v70<_G*ki6k$kki$x_wM<+e z7xfDYR(ByzAL-6(CdK$Ng8Ex58Q+)36P2W)#3@+QBci~U(P%?+0$?eJzYic_7>g(~ zd3vdC^|B%_nvG!dY*+YAfYBSXC>h~}z5AaSKcre1|FtZzk4E2nbsW|f;S9Bx4$D?x z;!hr!(=5&KV#Z`B{dK|fKRRi}mozdC+TIUtDQ2&>=;pBt{$a67L9V#n8CK1dHwAvG zhf+RwV|xr2+1?8dnJiA|3A@}BqA8*;uRpZB@3=2~S1k8(W2Tqmn|apr3(@ia*bP5c zdZ69+YwUvO{$y!~Z9BVEZ!4<|@AGCY#*nNx>S-;JqZ2!i0)zI}e`-grD&|yg>F~Pl z@NaiU6Xz{QFAt9hIliAq$@UJlEUh@tJdR;KS@8Q{v-@%T+3Df1hfR|*MoH=_k0-I^5e9^-7e_O7ZyymJZ|nCX2Qo&%A^O>1{(lGn^g`5r4Q!-sVPc((;e%* zjVT`NR<>=_+{ei1M<>D6D=<8KI8Z}J{f&M3p$8nqv!B&WPCQElzeUYuX6%&e z%MLyC)l|#lRo{%WQ_K8%yt{sCM4TC4D?$c^^DoQZ{b@9ERshGhAHKYQ>5vO^<0yIl zNtOF5<)8E08$_14RAkFV^wv-7ZG)J$L#Nfytun3}U~?Ar3Hsy3rO-Sn{Y?8k`r!X(Yjf1W;j6Ag?7!5q@h z@QOV#qQ{uMQ?nKSIxWhfpuy zQ~%{3kreOz*nKwbw`15CPo?B-(rquJ#_kT+vCm&hgJ<``s<)ORU1D~;hQe38Tw>Ok zUmI<~eoEe^yhPN~{$n2ZB;m9qJcf z6F#31Bzj)W!_hh&xNvOfWxtX=97S=l{>Gk!6nV(KJ2oimkmw>C&`b<@@Pa3*k-6|N z87N|L2RzKo7;=J#NX1_#h8Lw!HICu@qzjwb3_k~2$}KAPNV1bCO4U&y;mU>0TgKXo zuYifHC6c#5G=f&Hxw-$5KD9G*ce#AW<+oCL58c#%5O_YH~MMR zcKJY8^bB;m0?mh85yt%y!KJ_z0`lNKdV~Wc{F)K*%~wCpp=Zahpx>$jA5=z4sZ+Vmq5#mL1mn6(MXqFv@{Kwko=_>r+-=dUiSi9+EW(3D7%!6rNlN9KJ zIn2cQU~{`eF9WaDQDT{(XVVAPc1=rsNinOHSU$+BR3*2l;Q6cA`L4i_!Q35WYLJ*R zzAvQ`bAu1Zgpu(*0)J6KqQVXB&B?>Z&3F)sg!?Ml9rQoGOKlSaJV(9zQc+U8c2Xu6 z%QbL(HOnuJkju_=ZV}$iTd&KJLM`)mOw;bt66|ZAI>(fx@|NGN9tF)(MZ8`k3Wo{>~U$6RD?5>SbSDmW`G;}ivj;0O@@3pxsk7S zpD^%#4k@nv-bP9=z9--{*YNe&NurV1kS})I-gZZOLmZX6mjRaOrW^gvO1RY42v)-| zJe>cd!P8{cTj6R^o_wJU(9xcP|FSj+tfT;LA{r>Ny@o(SY4Cm?WVKmp`&^ClX+%i? zuILc^u0f6=u;=3O|5{ti+oYoSd~hzyx=eGBsorj4jJPbHqaCpu@Z(}jJrLvXzAiQS%d0cLXl1hG2@FX$tp^D+aW-}m7}50oyE=CN*e5qy#+-PJ28e*9sfbg zoKQMSiW&Gh0imEn&6Sg6o)VE>8SB#XCE2}~pVsuBiQq#u2*y04Y- zUtcuvJoK&`F;$|ImS4I6S+wI=xhr4t%xq&cu&f2>Gn!OOjyqg^8=Gh{V z@~WPacmtsxGwA^~eeP@P^-Yx?f#m=T0KJMUr(u;x#fTxPmAl6p=DH(*xU^5SMDOs} zjqIiTM(;_e8g8*)irztdU@*|(>*J%#Q*jOBdmZTD)%K0*s70}ynq^k-UynXwEL>V6w3!vLnVf3Ez@2Z;XAH3u1*WZZH)+Eeqqq4*x214Il+y8pceG!^ zg68;X3r;EzfR^7J(=`DNPMgRdtc=IT$dsa_Cfv77X2UQ2c;R?m;AC5Mh`6F7vDpbD zquaubG57_kr?}k!Pu#K~yc_BfXTgce5WWu{I6(4&CG;_%BZG8`yA_XyPqB-vkNW?p zJ|}vIl=DKWnMQ)iSh3-oN+A$S=YCyP+Du2Vg(iK{*Wjwk9Wms(OVUj-y?$mZ3_SSA z!rLIcO{Zmhp16Jm@VP+#x#{ztO|Yuarv@6u`_TT z+(T+*oXkAwRIe?nryUvcnLs^}KpnAvKC2fu0DDt7q8)-#_Q>io3}(H!`Z_OcoQGQp z3q5%IOY+z27_zzZzk?bv9b{iDaoexd)(U1G%LF0V;6 z(qG!`-T9fjcL*J|r}|-Y&NckstkLqsWW(e#yV3XvD5c5egHpQozfyADPO1crYSu z$qR;wW?FIOi?(EJ7&EqwS*VUV_pY#_IxJ+a+vo};Tatt2%)E`yoIKd&SOD|$UIF)A znT*2B%X&Dz0;tseV%9{SuGr?!`X--YXRa`TMtSx=)GTRM;*7jCYDy&O-5+d^FWYbJ zc;iu1_Q*D$-oT2yKniuHT8w78HjFR!Ryv5}1nE4*`wZQ(>k?;V7OmZzk<|C?>jnHKs z79}EXc&2ap`r3-|@mPUtA1%q>+=o6%2tk%eq;s))vdUVySV zR~SoO*`NPgf~!i!%(69GCK^PUJ)ERni$`SM_hr}&QgpZHEpwRA%f|;PW+=224!Di@ zSJzG1;Xk7b2YrmrZlfESW$rJ()C9P9`Rd~0Dbe6QPR zY2|Lr#22sq=E2T=_QiUc&9T*(@gH*gA6F6kX$Re}PAI1FpXKOyPhDy7__~Ak?cM9* zwQK6@kD`-bkzCz>e5E^9|8asci?GY1wcau>MVZM>hpIJ_bK;2>K%iAn6wtI40 zkNJ1CFFoUsWLPv`@l#Qne0GQE5-r<)CcN911v>C@wzP zJk$P&DfaTkyfik1J&|8=fWim#G7nggVhplI|2}fb?O1dRbF(ohp>Kyv{q3=Z|bUL>$U*yYvgJcvb+iovKPjxTJGB7mi!`4)8`0i}O(t2{t9mV*uKQWxOAE%YO%cW|x$Nso(TLj^{FA$cyFQSzjb+FL2Jgs$|oJ&;=n(LA4 zi~OTpDIR_2KRrp0#w|VJOCdb|9=}h23p4S>r8#P1wr8i~B5MwZRmJ*Ci!ue2jWPnFQ^F)QS5Xtq&^n|k^{bvjrZEV z`ZT^U)<*20x8z#o%I&9yk*0lueS}!9Qnz(09#PJU&A{KF(qR+FSn+(U_?7*WW{%Si zED0CoKhOP?LQ%($8ul)hc4c*&Zt5Ak1Q+3uOP8y#>f72RjOuL*|Rgldr)7eL0v@7RMUCMCuU+Wmh?)!z?s0Dd5f~;pwrCzF;Y!*hE zKoddqL=VUMP+h)O$X&c8q`38!pTsLgP&ks@;scX#R)CdHNH?(=Uj4B9yu6hJhCs3T zcW92Jb?I)vxx&o+z}N%~(!Zbw65kpB@ltPT_At)X|6rU`gD#wey-8qd_S-q(Ys5e4 z;K`EAjHiA52>JAr++V?T$UT*&6|iy`HQ){P(l@&SN)cdLBx=c(VE%siAz>uGa97wV zf~!Dr;d0cM+e$+_!Y{)bKK`PiF9T#dXl>=U_VvGtF7Njxz?y%j0$mDRC<&C#z4$6u zYVRbibWaFr7P8HJEeVp;A`pNn!}jwVt$xd`_Z!;I&&(EP|f7hZ`e zvWt*`l!J}#Eu)x2HAbdJ!zT#rx%WiK?|~tkZy)5j>P*ITQ^t1fSnz+=R%%UJY?x*I zPmGUaL(0Ex=G#1$6@41j?#PKJsR?ok1hekgGH=x_ zgK}M5l+Tt_grlHVESR@kA-LF&knnG7w|TRI3r|>(c0TO%Rfm3Uq(SN7uV8>o%5H^$ z%!(dW;WL^Tw>!>=$Ogw$)=Z)c8XlQ@hwf%U|5<*i%SGt(Gn$C= zHsX7_F5Mmt>WD}qZ88K%2uaNOc@hu7aUq7k7y|q)IgJtuo}^LOg+PPobFZqrN8X{|ag|j8Wpt12)pu(G1l=+CpS_MTwI~iuOmzag#m#`b%O|cA&ZUXey#Mie*lUvenghJM3Md$<9SD5__8RCkS zM$JIRvg$uj`1)PZe{ZE zgs03h56zkJXm+6f$at>|DWOOIqt^zBW6c)f8fPC5D6bt^8Z z^Gl}=!$ZT*qL$s5sLif0%!>xwJ&)7rTO+4XHlabDL1S%QX`w&R&uER9sjEOuSnW7} zO37KzCVGBMvbJzTPbvBf+DlROp}i-u?0D0cVZnuDf#{PMK7a?r){`YOt>|S+P?PP) z6))PjwVX0CF1|hdzv2{I4v- z(}QwJL7(V06Vg56XkA=!?C7o<)GUf#hk8KVN-8tHwuNzyaG(v$6~%}eex{dB6lq8Q zClC7R`XJ@(i(UL%gXnkX193;rLH(ZU(T5)s{_9M274V*CH(-64DAtf~^y8;((*#WF z9eO%pJh-;q33r{=zN2CqpOw-qsWmPZYm+LY8M-igoZ)(>GjXF&H)brU$oE=rp~ zH5r?YaCO_ZP2i;Ri1VAzK{Ti5zy-=&@ju`=u{2f1DY??#NyF5dFea3hlb^GvZko0} z6(owaocN7wLbqExgKm`s5&|&8->!k4BTy6R6h3=trml4Iw3c01e~5Gl0rlbGehA7|~xcu`MIl5=4)gW9oIf?qsYxw=}$ z)N%I}BUq6Vn)gH$bC{EGj}5}tFkyV7!kNcuUD16XL0_7yL>ECEUD3i27_3+@cLphr zJZKGEXcUt0xx8jy{V1fK=KAW5aKi-bjj>MjVTgFm2m~AiZ=-?GY~2ddX-mDVFo5vc zIU!spYC!1)bB&JGy5W}KaP!!kLE($R>>e){-Q4Gyl?GOX6~heazf1$mw!f3KLzj={ z)Ef_gp`?MX95J^*`)L$BPj6UW=-6+xblo?Sz>IdWO?7}a1lVHq)V$Ds>tDMYM9_o| zEz~hkRgZTF*ANXYEqbowpHo3uOj!2aUg7Coj7)0DUU2i9=2`n(OD-Be`g~3oJhY%J zEX%k(99vH-NlGg*S^Np>ig6uGRqH0aIoHru)(b!6{DO!2@MPPIeqxU3&8CNG86_v` zu-(q60JE27B=|M6if?aM{v~r?Aa?OcrF*&N`Lb)J5vH> z?6Ax3UBjqfM`Bf-{s}gZe;G4O+x9ZX@=cs5qr`8Zgd`d!%JWRf&e1Bod4TsyxLZ~z zK`nFHgbK>W`p%OM zkx!Rj?#lP3jTrhu>Aqlt0u3c|<8mmOsNF~ps&x|-2h8ZGzp#e|(sEUA0_Gq5R% zBy5VI-8R#nIX3JIRH7r3<9-`8CcbnXn|t;DxQgZb73dAuJpqa#L&VNVrWTD3ibNM~ zGGd1I==KG9@>WS}spy70)btMhirt^$dT!(K_jSXEz>~k- zd^q$=ZPK3kPmsN%b8W$G;XS)!*(@rv$G)^u;&w7%v|77?6zKau)!^j?tpi4DDBNUW zcPy*ZHD(K7GdrW<8;6HC7#T!~#_jdw{cgc;qqmoh!Z%tP-WA-sz_qeN%Uvd#wtbNs zo&2;L7_{ChcIYZ<>X+~0(S-1jvg zx$IX`;gjHJl9Gz4dNZp#9vMxo;Bbh0e~UqHLCgp*2o1E1rrqQ{>`Zm0KSXh+ACWd| zvvQ6SGeKq8A@kp1`o&E&=l~xKC9sInG+^Xe;qzIkf<#k1j!@y4;`Rb^M_>VVc93+n z`EGQM?Z!AC?FGhcWS_c>rMOIY_e$F{;S;`q6o^`^;PQ&qIXXSwGEo7?_dn>lNp;{b zaVY*y%#-m3F#-ETQOs;luCWC?4(@M}v%KE5B+2(@g8o|m_y=+Qp*jE9=s-3xd(MtK zN0ojCJ)qb#<9X|%)DGo6<|k^qAM+$?D_azoVBELFFCNe89+%Zai{d_TOhqnd{GyFd zPgoIY*-B8e4+oXWI;ssqiBa9}-kX6Q$QtS!kI_Ui$M|qEQOz@qvTxBu);J3B_%R&! zq{Br{!kRqP12RL;Gvn3f>Cf940=3%yQr?6%ARFpo{0AZZca8*YH|7#rs?fi-(eB&n z&mIxp*_ZE^lLq%srMSL(BOQ*o4(WV?O@Z%&-v)cE=)Zv(f&T58i{TP+)`9M!E&iV` zd|6r+wyrX0d1#h^*Z-c{!;2&HV0iN7}It^W1pS< zbk>*@tBjha2AqXmLRsgpf6aHB;s2yZc{mp<&Yw1={0qcTm1@kbSl(FYRPgOj&i`eQ zG?&>_S88sjZvFR?!q#>hJ)_jV?}Ihbigt7AnBNbl^qhk(HR4UcTj=QRWocpurV~VQ zztZDF?FlI-A~B{(22>a?hR-D9hce!iASmN*;dDS*biflIV2P&)_a%S6^fPI5z9rtl zk2w-$cJHIKi`xBCnzWKofRR}3Ct!F|gIi_Uws5lC3$6BvjZex>c+w({v6aSUTouN| z5XLrmlO9kc$W$uo)hJwQMd6I(teJwHl8J#;1alLNC__oubE@r96|;2}6tB0@$p2+q z*zk-AYcEnBa{aWy@1j>EJy@Pf`KDTP77H*p+Qx7iq-i-f5Kaj?1JsoIgZ(K7atJSB5ME@;s@2-+06D zECY|OG>SgV4EEut>BKd=3s)fbPo21@sRL=&i% zfo&34Ey);4a#(#+`?cKhu^L4AWZ$)t{#_QX<5Vur+FzH<{P(TSmKWR_{1RxX>SOTn zQQEuF`{xaSPXAq}g3mYm0ogsL&S-;y-;0N6G2FT9yYl{{l%92FS?r>!k5}$n#9{w! z%^W0kP732Ql(>^HA0d6FRz&BRSWUN*B-T$nd5$O}q-4TpkpHuc-CYb5XDn zv$Z43^Vrhy z_|TqT_3nkB4*DHWVh4=CUv_aD(~*XBv%-xZm07B-NHs!7K~Q<#RNIBq45 z8SjK6lgpA*pP)(J+P1WDQ>H&UV(Ed|1e;yq`2Zgy!tjT-1@r2rzNG30(n9;EXe ze%tlg{gnerfUX~EMSW_r{pXQ+?T>k8bhwZCO>iNOeMPLzTkx7GH@y3%Nv01pPA~fo zrElO8lpv5vlppJ3%ni+IiqL$2x0V6kKpOY(FhTPq5XuXJl%|~~kKGBAhV{&5v2zk* zno1(*r+kKvtLZ#p!p7{$9U$f6ImX1W_Z69xurt7dhM}ZxKOTDc{HC=GaR){xSZz5*XWDGLoeAVB}VYKQrdem|IBV<-%iz+(KLr$32P$0Av0jU|anVGz)ByVIP-Y z3X5O>8mHoMe{laYByx@6)0OnR*?zeU8fz6~>)>?avbZjy|y!EgO*H#&GV0Qg_XddmhD z0(i)QX`-b{bc%u8sQcs{A;-#p*w*tSCY?JS&&BjpAO4Siyp!~LlF0&&?=wP&I0^gU zd3~^QWUE>I*pSTE(%?HMadwES+g0Th$N)Qp!j!O;D$niu{NM6NBGx*+if(f?|SOD&l3wL(bA@xAx=<5Wt z3!0eIJ@d0eChtcGXM?i%iWj!Wvc7J1Peu(ydHTGf--E!tOaJ(^GMn%wU`K$+Ok$N` z)=bJTvza}QNIS-0CK1p3L^?QGP)R7@nZB6VNICBl*q*#~8RBbFO{nz%HmmQ@#L_JN z$Dh7a%^(@Y&-M! zru3Qm{vlr6CnjjhKobLkR2lxF$d*|L^&^BJ9(>ODgmE?xzOs+7UbT&rDf2R^vJF}df(d5U`sHvGm1zPGHPkR z<~p`B9|-gb8`XP^PQdc04oqy)eij0m*QVIx`t1k57B!6~+Xr+1{hpna3*5I@X&hZz zQ*J*B!eVbok_#o2UhGg6sd?SK+S{Q^A79>5TbaI^C zc!ayrpx#7RzqfXV8j3c)r4`p^eD5@ozlx8@?+fp@MM|Z3y!yGwqfo##Yi^x>rovH= zCwcA;)qL%voZAEC{00Oe^aF`arVF0=#Q-F>Lh1`q3}%C?dLZQMlY-%=?@MHPV6~Mq zv*3R?K?~XW6xd8Urmb;uEFCD^9&P?h3Qn)@6Bx)tUbR^D4>MtO>F;+>AjdntBPW)w(8fD{-INUt*Ph)j`c9~3IwrMp zy)h@Mh2nX*X*_eoIAd(>Y1i#6n^{dIfP{rb$*c0FD52EdP^AeR>(yr?T&|{H7V3J& zNp-r5D%l!EQGRR(`0^DL3tsmt#F4(YD1j`f!Xug zgr3S>`GDc%e8D$`m%5tYVQ#nplTX^?q?XKXA7+yc91EeZk2#T}nk@PG^apzw-uW`& z16=|cqXx8TJmlOslB+f<*~R^DYVr5I+R4PTc?D)@Q(o0rlEi8BCCJY4vD@4yLBk#2 zD01IeSDv^2=XImlYuany%I3s7I!xA0+p7B(xiK+g)B9|vdOka&US32w@PQW~)Jx{8 zI7S5}l{x98;?V{_9~(59$V*j%N&WF`9G`}nG+2hk_I@J1XI3igfCnog^Fgf@F^FV^Q)tRe4z)c>^LT-DL5F=^D-*YH<+hdS9|+^cdG|;7_9b}*J`Op z0?|on4T&{d(!C|k%du+za3y*dinNO%N(&iDPdaGTH?`D`PW&+q`SZgd;*S6&?LfoC zo@7C^QA1ZR@@T`|&e zN^lZff4lpG{rg_5(fpfRXlrQ9=esYa8++!5ohV8Y8*wNE zIxMk$YN!YpB~R+%xz02Q+`6#>+$*>YVcgkB%!7gi1CT3nbwY*ex-CCav=Pp)+OY3N zBn6AqJ>1cfF6OKE?v3u+H*EJOu^@}Cw5DQCwhYdl<^cZFA-?Qv7Y1)T*YPa#| zGsA(fKVxb%b{JlFQ}VV5H)hBHvtJHvGAr%h!dY=KNqb%}`2HX9RM-(9=RM&9hw=hV zKdV5YavZgCCi);oVWq0kD+3NMhsSZ5!)u?Yn>m|#RXw6V)RHhBCaOHXXC7co$y#bW zhLwEJl@F77;9@g#a3I+nlB&RLisH^Pf-L!ym&ixr<%+o<%QJChgs68(>z( zsAip<6J-vqI7kQrG(65B=Eus?G3JDkAb@Ua=@+TpVm!o6V`+4;ItjM|r@89~BO{P7 zkq0~XQm#?z>G67_V^i-`gO-4u;N}_+z}eFPY58jSJr|@;927^5=aSYcy6fRtsvqk6r!VF7oSouhf)BIQcmWjCdz>*9)rs zOCjXVBbh$T?!t`|qR3g3rtkpnSoN~zjcXDRHJLUI%qNFaZ@-OlEe-nAM1Qt|-XM zi6DU=9rXQA@+oMChZZ8ez18<>1)Y!y$Us@~5gg=(&f+DJWWGN#0dmmRR`!@8KESC0`&t+#aY|N9(t+oHc&2AMU7NZfz11Lb^P*= z4Yl0IQ7vi1!w2m_e;>4mURcQNNEJY(^oF8Vyfk9}C0)bG%P%y1hk@^YO>3{H?)FYX zl+rc>=skKY-af8Byp6T1u!xVUt5uC|eg)`{f0jmLpW+sS7J41DBQ}rD8SJ8tqa#uU z^d7s1>@st!)TMsC^|MR!rU;L;&}pL(*gqPJ6!7ZGTYROS_Z;K)-BQ4B*(G;9>0ISu zL!`dXd)w-W$-mU0^PR$S7u@nZjU@(}*gkphif-Y9HHjhvSUSqc^{0(Ek|kTRoj!2C zXt4$tsql^_RjgF*Xw>ZpC~@apfGI){!vkA4`cuS>Tpxub#G^vPsrP7NEwlpU4(#5(;;BsorB|zAC4OtIOku#67CW;8 zU`P(>1kVr;M_pXoMa+2y`COHh{Y9rNp>K76vb&F^gdZATd-jrE*2J|o=%hmccXd-4 zYK;jH<^BnS?*CY%xMf5w{GOQMTezXZhqdgUTS6#XG-lqIx!IPPPY%|+4&JG8sD1N4 z=!^=i&~1j>>1wX!Hp4u$QyLO+F@ZG76JS#cy$esXcpsl(o)WFw-1+*pVGL*q-vz%U z0TPSm03?s_Zp)IrB5Yi$lTV<}Fu^}p<;dr6Vt3lIM`n)r3sXi~I=zBxEL_B~ZK zm@(mXK(_WSL?*U4qdnG(BWEszA5xxl=+@rW05PQ|w3)-2DVNM>ZLCS@tIx%*3hQ)C zrQyYaA|A&HtMv^csiF|H8E9fq2;#l=<%7Q zpusyNqorZV3HpWkz*7~(D@}(UpQHudYm_Lkwk)~_S(OWTFlX>SlM_*K70vNfJ{OQ z^-u_BZ=H~luO3=y2i{9_h-m@C0SDLbtrre!{3T&V*BF@2-4g7tud6^r*q$4_yNsv~ z$sLhbEkzUAQuuBv4E$E3CMP}IuSjt|I{7To%JPP4Nnwg?#6L~Bdj3WL}9 zL@iWLr5uQ~Z*gXTx_HyJq$91(|Iu4mConeYg@q-#w`hrn+#8*v=5N%d;F!c3nnV%b zlccWvn1YXFTv?Mc(T)DE0kXQa8cOio9{|$v^zR~oYe``)G*00mE@6dV9MhE4H9S&t z7Vb~trJPBk@P$h!k0;7wmf#MJG;XvAY$;t*7;Uff^iwuxmR4$tf4mp%P&y4JW6w;^ zZi=IH$m)JxYK#ud(vq+Z6s_YJ=Euw#QeVhIr}hYKF$$-O;Jm6rdp|!35-UWe%s-?d zc%=1lL&5H=ZW_LaY0_s2^iWv7v>95_`uIX&^%U#Yi!tes92fkI%zVxIgav(!`LqdT z>LvPO(D)#QGyK1$=dr5iQ;aH;qzX@TCy~2F?tE{ElIMK_ZX#PR=yw;Ep>%o_`}@C zjkt+8bX~DyYRa2)?%SuISD~$HR;l-2R-x~}q+Bf+hENYsH&nVlgQ;IG903VzQLCq) zs@}6Kw|{knTQAWN436fWoznT#3F!`Tw5+s4KyAVKZ#sNGv)Hoi{8U}`G(n>G6dvt?gHlca8`V*J zXc>q?t78&=!8Im4iiO8vQXrQbF_ENor|t7xti0u$p=CD0%%men5Tj@OOp05Lh)EF> zl3Bm_>2utfrykAxhkKV5?5_+Hnr(zIJjRgOaI6g%=I8)nM-KA*5(%~09>YES3^fJJ z8QQ4!96gTtQt-R$xNR6tunSc(U8PpPrSdDVn)1{+_wv7m-+kd@fQHh`F9 z@9@{*J<+Vi+av(>)4#|aeBp+%ud5AX3&{;L9u9s#Cz)^0CDBRIB3K>Ytm*#R++{{; z^uQ0$#2ZuTF|E_vqvI2Gfx*9ee`?>H<`UQ5SE!VTB)!|d%rhKl+HzrO=iQb|viMZ*gwsL~xQqiaKFbzGV;aA^UbW`8C zT;I7r)SLU3R@u>q-h<;l2^0am;sx8AMoEI$r$OoE2Zj)@tH2O^4OVE*gnz3823z-j zG8`-YMi=L+fJ>pzZn1>l^XZr#X*=_3bIJUh*?%8}&av2ef^n`!mQf~I6Jp09Ion8! zi)SVeX4%?yOu(9|(3}L8WCXK`JTB+4=Zc{nCxTiH4$e29{{GOA{?V(~`?a2rCvB^k zZIYW5$21i*{rRa%N;a%6TYhQ7|`Rr zQr5VOG)AOtDdjF*7mI#wb7sMtT0ntc2LAJ_hpt^bkzsxw-!t{m7daySrG)pRaLe@Q z5F};dz@pA=Rr>C0p1O&d4&&qIM9Pu=@-C1bv|84I-So-!2-jI65=u$jZftv$fp2@>Nr3d##aI0gj>hG6U#*d(cOi|T8%QJy?(Z-b>@iqX09rJ{e`}>KM`$!3Yon0Zt z(QgN+^O*T=6*`q~xz<8}1K_qlWWf@W-z$L~0ko7`dg?@5Q9R5m!@_d#xuG#Zm=V$8 zS4*R9`o19VVF9@SG2TrRB=)1xnCJ+LpaJqWoQpd8huadcjB?#>6X{P-?)@Dt|g~HJPjxiNn(;4*y4S{*Mht zOSZQ&-If@($7kA8UviER=jF&{$LMOLpOwqEwSgViH!p7B&uwyx8nnIMgfSoi`1Hvc zI>e!htQgiPiVkK-SRR#zxUI25-Q+4x4+%nC)R_SEl9U%DaPq@8Q{w!dQvImcJU8mW z82D9k+f8uvDDotrM+ZflSmGM=!y>7;Hu}BCiZd7h*jD^fvR)2NU}L=M@^b)Q_P1RN z433n5yyWDRF8*J2Qzw`kOb&v?@aw3$W@}XoiiTfZfZQ|M*4p_U?Vz}G{(mRGyK8#g za&zFi`v|-#Sx@iWUIOB}z!m%KhRw6*9FI8x79-YCQm-{O+NaF3i{<0kDt~k@@_7K@ z@_cMc-rB7u@Z)7U{9~%nnLLPcT=%X3C52r~8<;TW-I?STs6N%dvVXx*-FEQYxw_Nd zKax)@&GNUy<_jIYa@C%Gi3wO5Y&l6Ov0tZO5ajHl(gC?y-j+D4{dOx_uxSvY{6V-) z#tAR=jQCB>kQg`uA!L0ezGE;VgtF}J_d__eP^s5)p)qI@G~aqZWULGMs`rjo?vHR| zrAQ;ZZav5DDt;DZpWyDqJLhX?M8f}d8nnkf5vHI9ruzDiv}e`FRMf);p9tyt?>%5Z zQRgNYIv;P}oKRWE`4Em}BC5Tp&p03v!66QmCky7`XEDtrTV2bt9)2^i(+O*_2 z`3H5=9MegvDyW>#{OS(*On$ZVFkUY#KURnnD>P~!5R~6GmFG-}HUj=8>e|x2K^J?T zU137F8caVgx5M3B?LT>tI{S&;)wx+!s1`JyNbo#+;CFWKXU!?#K;7O|euMDpk;^UG z{LfTH5fMLGHi<_j#CMEzgmfS@j66{;vNAGJ*97PQ=X?4(Kq9Ns6N?P2f7MDuF{R#G z>wjO=VNWfM(zlM$wr*iHQ=ZrVlWHJSo$z{bTYiU9<2mAcqI6bG)N4m;Cfxp`d4-^N_pgUT&EZ-3iTw=O0==Wir%8sLW$(h^36z^F;X~eP zH}9OUu{ zbQ5Q}ye&@Svx~;h`?&~IlTjTJKp|FPRJml53?bW}l3EI(k;0Q1JObEKzM>3-!|Lj_c zDBFrYdh|~Gw&2dHpAuk&vx^%YLAsIH-EY@KBMk@@N{w#nZTGuf6+(35+n*5ZqwonS z?$Sl{&OS5mOFvbjKurhmN;D$lD)K_Os9T0KlSV%h%IeNf11ySI`xLKnG2WN3vx@28 z$EEcMqZ-ZC4C zKYaa3KC4a_)P7b}`)He<%71?!I1_hggVR%BDOjN$M7%^t(|v;t^*$2fGN+7Fjs14x z4j(K+04>;7Yi>vF_^wp3$P0ExE$xp(9y)A8SX6b}(~9ZPg7CpG>P4W&+@<(|enQ=E zGa$Rxi1$n1*dS%DVRM!dsCdP|R8rJ9xPwZ>}7rbb-m{ zzQS<=7)nJ6QkuFzWdn!=rP8{M+^gmO-_6*NV~NWbd@9*pE^)T5yI6-U&us$#iS~Xt$Qzx>R5wP@d?89wfEBnStqs&cox~LU&wY zx(7-RR*h|%`7G=yWSSt+#THki)hV-Tcl{`#^7Wg|!cSQ;@1#0QXmiB)#$ES#+3$_n zE^OmE2aGNAlCLiG{xJ%)oi=~~o&^|FqM8`f^TDvOV4g5Iy(;;o+NAZL9pE-ShnRq) z2^C@ITnn$k@Q7Sm5rW*;omDT(y->Vq-O zG>w>;Y)Qs*^!Vvb=paIIYK@JXBXZD9j1~DwNH+>fh@(M)bDCAy02JrKKt*Rk1OTMH z9R*EuVL{1spHKFJk_6kVpzVL8#`lD`R%pO_SDm;jNA^WetqQ30=~A}V%mDkL*T?zu zYpsX2A@KWxBG+09jP1B8)+S{}NYp1(13q0q5O_Ad^Pultc~S3nV@Gn=#LU*k!Kjm6 z#?!__!KYz6Z>!vo(oTAf;MG5+HUAbBYS!jM9BQ}OfT9HuQbObJe{XC~HGAef@rY8k zyUJ)=IR|)oO9;>jpr0QmrgKoHw?lhDy_+lOq2%GT2ab| zH5--+c2>JCwIVMxZ2Kfr^fJbiQ6`m)?A7nu&_ppPU_z?5 za!#&xp}+F6#OXoVBeZd0egNEr_;X$DUZEAa{R@XI7dRxOS{CtZ#-?M?m`hH}|II=2ycd~FDXXy~b$qv@70VHEW@3Y>S>z?F z{4oFb&LxF1aRz(iSQR3j0j*G0C(?!R5f0gV^MY84c?W(1R~hFV`T^tebHF1}<&^Q~ zoaKp;zq+$ALK!Cl6$39>22yn>Vp4xaCG8*lw>q4do1r75-MvCi(Y8B^#_>CRg=TiWyV($BiaUyuQrHk5ljHWof*!lq> zf8(sBV{LQsge*-7#ev9H#2{%kh#l#78>jHAGhZqQtZDN9XWa)w^xD}P@ zKZ;w`wTGBgJ<>Zx)oWF-Duk(J{_C1cqpE`Mj=@VcXilRoDfq+&B!^-mq%WrlwlmxOt>+5(xLv_mK-wD;$!r)6rT_UiLZ2sd)8hf4eI-JjZ!Y~jg(*xeGc$S!)DIxo{K1L>&X+E# zvDaBpktx$-@(|3hAyB5d2(`JuGz!r9K>80lw4CdUG$WGoIU(bhfgT|x=Y^V5#er(4 z^;pN~$yrW=Zc3&9+{L1aW9BS)L(3Kri|=FJOU?px;or{8nxJhDhmaj%Z@t4aVB;bq z60xebv>_9=9X$$N-}!VtXm#CqG2&iC3MlBovEKp1o4a~# zQ5F=%+I4x&Img21lcLAL>=C2#5yxHEX*F59R_vOi_t8E=UFa zzz9_y|D%IoC3)A~h={p^QnpRU_(#|%llUQ4iHcQfgte(eFpjO|A1B1Z1yC!DNbff> z0Z`-*-?v#`4<9*jrQJ$ZVFo-=UF8IE74gPPHEn}a?7b+T!_n_m4)T0c*T$oyAk*J| zf@v(%IiJCOnr`#CZ6I~z8yor0g4ehw_!!>YcApa=e8B&pjgJD57LjpUMvP?1SnZW$ z!{q~GxG!X_AWhJi zK9n#yDK;6+NDzsKqJGcV>Kous^#G|EEk4TFC7PH_ZkNDg&SvFzV2a6vTZZ{d@2-$S zlU9*E&j)WXQKf#dcbh}qcB-L-7FI~RFJCw7Gt%`+#=&~MNq*}qU6#V=lZ${-vHaVM zG@3yq+4qsD*Q=GP*5${TfY4V^#APj`%eH(*U}z~U-h$D|bzey{?e=dmq4zt|=dKfl8*AJ2A(Zzh8M%?P`grW=8r z`h39H>f2pho6+SJC1&=7lw~naP4=8317!7S?-w)H#dR@5c_$W?e~VYk86NR?P_I;- zT6iJz{t4v;;lW+qcfAa|KR*`|;o;jrCxn2RELc{fW9K8b!8w3q{=2_S1+@47PCmi78c z_={r^R?$bJbA`S$cK>+&h+oncGJQH&)Kg#fiNH^E0~7_jj3Y zxi1YPTadL>s9xXWyE8qt+Q}74>S_}JNFYh35;71)^w6+xR7H{G8tf%42C}8@U`I`S zYwo9K@}~9j%}j3ebI6v`A=r@GniZQ5rw!;40>B{B`xi%pHA4EELWHshZdkdN8TD=f zgi`L*^Hg)rN25{Qv(|s_$5Qbn7!GW#HL+0tem7P#AN>z?DF9Z70Yreja55_2>$72?xr5Pm zXf0R8tb|dT!vk6)b{AUc7&)6PeN+(>Xv_A}MSwrN`foR^Sd1d%R5KjZ>GHYEHm2bX2< z$$P0MekkPF0W$|F#rgd|XKfvxm-R)qdg9j;O+)%8w~Fmm?Yn&20$2`0sfC=9CZeQj>5|b6P+Agq|CH0kvvQopwsJjQU>AW?Pcc)J zcXAV_5>I138Rvfu#m_!m388B@E)duL2u&+sAlULYyvR;5ruWoyBlcU$Ix%d&w>F!3 zeMbzm@R^**S9>chVM#}uZoV%eoPu=NOS_dy)4NZg823U(Z+L1!9`!;=q8Po0_scRYxKQ~gh~pj+LL>Ny>=7aV z(M6QgYq+@U0}Vso>rC{l>|^84c@NNT<2)PkHL;N$YKrwIhpaWp8gEuyT$Xe`{#=D5 zs_M0_FP$&Hv%=z!%c#me;y9UH-7JZSJjrS&rT@vkbNpn_(Lt%%KTxRIo(3$a#lD)3 z$CNs!sl`t~aK2vnKfyWjUh=oPr!E5pj1Q}iL>My1@pH46fpaE#1l%jkoC%HmUH>%a zA2-*W6ejQjOn^FmYf}AFEf*<)Ur^uzh4(M(NO22AH1h?L0Ve?=k0}JE+EwQK5VkH?V4m^L8;~3yk z@BpG4{Y0pgz6%YaDY)F>C+$FEm2jvpjN=X-#+luS&7^-llQuKsN`pXBD45&%yzPLq zy#;L9ZE3L|o$#rogFm}ZmLh@*S*R*mkX@aX67mkrughLlDCe9oUrqx5L?I+r;DY(7 z2N%?639JIU>lkXs9XJKSWFeA4r+oA)8U1V}IkHVK@xpnbu&m~oeeJgI=4lx#zkcJ# zp1Zr+gl6SK2q)(f48ZYCXc@oHMxHn&Dz5*v$TX=i;7fn4x_zqd;7e>#mdhz|Pi zS1loJz>{*=Wu5a5i$7u0oy1+ItH1WjC-95CycOTWfx9Q*9x(R;Tbdo3E`_kD!$OmP z<+tWsWruy?GjDwIBBss;er|~B1S|6ey~M{*ol0;>r4^JCD+*|?w-`QCH=Y^YK9){v zy!diiO8^yU{(74PVUJ>DP6kKQf3=^>kupykC|VBrL9PokJ{V|e>DQkc_y7=!!N4j3 z=L{SZRF+k`;)cSdAXc4QdPxwIM-sqI){WI3>qd?4ett^)L%*K|oAhj)z`zJxWq3w+ zxyDBT!<_D}t`tdT!X~l71equh(RWyWdDSp;KG|3itlD{zSKMxjC5?|umWEUa?(A> ztuwQ`bJvjNnU6N}!;tao>-U!Vy|R;3q?HNWUTIoSMa~qt>yIj9t=@~>rClV#_&M~a zr_Z-nL?f;X=GN#x@xXU`!wkWMYub)lrY?X2t`s%D#bO{N6(LUTk7cRj!iq`@I(E5V zJ`NU3K7hyF=hjs|N65Wci+D09uCvTJpwD%G#4N3#E&84CyR~lq{7L?TVSXj77&=6i zp5d8>sV^e%VOyJe)Y-~9EHFh}HnEjRoWD3m%V9^QmAU~b9{@x}0rlkAoVV^L`qc77 zcVrW(#AJjdTN`=OAJjS+cVl$W9=ltTwsmtFs=}c$!d>Gh&7F@)gQ)F<(bWSw<%wPSNBC0!{K3b28`VjG>9B%j+iYE z?{+vH6tPqlkijZuG|g|M%#A1)K8zZCxS`*kf061Q@oXL)(YFy$cb!$56{9nRN`<<( zV|TXN+_uH^M-Itv#P&r}>4$b;)tzx&z~32z`D`xyt)TQ9!XhYkL> zO6=YTB~<&HTi6=CXddjW4r1wh{A&(be|UEUJ8SrL;=@UUIzgOSE%)Iv?3Yx=_V@O# zKz)}e_}%)70mLZ;pq2lZ%q@<~@3RbRWPj}bkD-IZ(70}RQ1gAWLOYLHQ_1v0C&{+d zBL{Nw+^%{J3zuA54p}z0iytvP3q;Ymh0W5Vht9V-tqVF_H0#o-O~N{ADBMSM>k4`G zZd|%a;==SmeGxs=`IniHK~Fjug`xt4LJs6+MB2ccbG6C&nyiuF!j%{@L~R{#9ve~iq6)p=!pg4-Fo-Xks7C7HACp zuEytx?<#Q@T~`MNq)?9jO@fPI7pKMU8BJTY50_yWI~m7z z`^N{>@kEU8j7vkwHXIP*VpU6>^yuP%?OL3tnRnZGm+D6)fYr-+l0-0)Xxu{ z|2>@o8#=|2BftdVjNo-R@_amra2X+ydd>b!GhG>x;+=@%?<}jK-+%ys*MNAdSTu!6 zU3m}TaYjjY!9OUQ&J?*_b-s(?kfK8yw-trO8He(EX;v6ZtHU&5@=}WH64Z3H%w9L@ zqnl^+Atd?SLJL@k$Ao$L|U8j7eVjgwFSy)z--U zPKS1V16VJcj^-r|l#^z$<3v5ZA`UpM(K>|_sfo-A;N!f*A#0aHM1pH3f&IxoY`?Fu z?J2;v`~%pQrfq=?pAgb}4{z6N1D91OPYt|||GTuAjlaIlbV({eh{v%D9L1Zr8C~ge zPTMj7-U)y~Lo4O=^ZW>-Tz={`g`MPqpGha{%< z=%zbj>wi`6fAuj6Kjck|EtYa0j*aSEl5!u-(a$HW?eqHWpd=m30aQZKJszPM+W}51 zIdU}t7zvuIPH(0gYvYXzN^+m-#0XrdxFo=Kde2=#uR!DDAvQWW;7`PM`;FCP*iW=l z6}poFFVdv!p|ew`_qg&tpxa#55pFmgtDyX>fasvo&1s2M5KaeF!}k2${_sz9^}k4VO8p9qEa_qZ*9@h^w)h&>I$2Cy3)A|P(BAp=>I4U~cIiXJ`s zAkp@)5#I62Cc#Jyl!=!RN)U_{mi*&8ynOG}>qBmvcMOQ)4qqU(#u@@icj2dgN;MrU zA~U|18MDXF3nkPC7XlO4i?E0@wWq{q)01U6(9W#rU1-MOC+IXU#Of9sqJuvJM&)Hk zc>$Fo;FL}pG#g5oH8r@Ii_?zUYs^Yg{T@Zn8e)GVrr!qnCZTk*JTz4TKkB&4F=+#|?8jGK+xZIRT&sswiLBbykoLqBRc95rGucOfdoCjYaIiB*#Q3jpHW ziRk>-+v!zYt@1LSf=#5)J-zdf`cf9eXKYX5hIE>zKT*nV&0X}=US-xw2_xzh>bAH1 zL(Z(yr$x`{wt|!eM)`M7s(diZjh2hM>T)=K)3*E&{kym>aq7kQ0i|&0ZD242G%P%h zl2Xbkc@8Z5|3qF)v^l5yPfGnKJ}Kq>BXRmh@J*vH=Y(Om>0mL*?{eHn&%KQfsZVas zah75JQ;n*=K?_1k^sOhypxJM+h9Hr_1c_8@6~6yE?h_QQkUy?p?|yYPZuIe{iXhd# zj^p0#tkj7zo?W(|8x!~S^Y5wY#}VNis1aC35|x1iJ*_@uw4_q>@k3>|tkcO!)E^}v zgqr<)Hk)jy+-1~RkRBxW*2LZQLpWLA7k890fJl=@V<6b1B}NKdKm^QSQe7b~r6C=~vKY@)@gOr+m4Gh@h8Tx6c0lHE8MTZb_3IrqLb~M61Ye=WxqmSf4D` z-}S-Oj<=W`jmBTKx_jn%J4d!}rle-&_1p5y@o= zB7F0?<)2?6r;Datl1pSYk)C~f!5rF4gLylf6(ii{K~EJY-0v(KjJCzw(6o1okbm%7 zhc_$9jzql!RHu&!f1zJbz$P#(O1|J3?hr+xCeCN~qTQr53hsLT@=7XgOa$Y$Ydv7x z_BLxVnyQ66Db?-{-vyhj?9jw9N!{kpu0CZ;-7=mU_{WqJwAnys$jJQVFWsO9dx{un zNlq-+3jmo6n0(+&e(I;c6T$lZ4F{$ZhL*s4;%sWiQfsI1Nq(vyVe2lwk~sS3TlXu` zo;O$G4r(n#&Ht#1HF$!Z{<9Ko-5`Mn{{;w)8CfA_L_+czXlhk2F#6JL$$?9~8DaIJsBfAKrIp_yz zYI(5Aa*(uh3LEz+V{AnDudBw_0w0QDuJoDb8hrB(lIx$k{JhO089|HPxELI6;dx+f zsW0(x#eRIB@Jti15Aq*lXTML}R*H^mwC!821JtAhwRZ?s0rWW;>?$HYp9zB4sy{PG z1dS^y^4x&SzUTpGC|Qg-hn+)deXxGP^~jrx@9ybLvu{!4IB zX`2P7>5L-gYFC1!2>V^_>_$3v^r(8q6&6l#@hyTJ5v^5;0;)u{#Yl__d7IcRN9Mr| z)+K47co7^NqBI!!0EpieT5|8HOKyZzXLc@sm^`P7TN3qn=O#roGE&T#k+FrrVq9JL z&10;U?thwTEE3Y{QkwkA348;xMz_{n@_7`D?AAE*ANWeEN<26};3Cg?fw`!Hki``D_V?)qE&c8DeGz*qFrsrCqO?l(mjjR}T)hJ-#7;N@U+I4K~E4v^3F zSXU0_QzVTxcdy$&e7nvL==^O_$?&qkzph2&hpd9^_3cAqrR7WA9-expSnFM7w+uOb zqXpbxD7S@Zu{-B0LoR~c!|3z_CCpr(k^eX>%|GrxqttA@l#P>Mwu@eTT?tq@#L-%d z?ovP|sziUPqX9@GQb&KRCx<-dV-6qZ4QuMLV+Ak%C;b$MRSjA8g@^CWyu`q-N_VY% zjG`=_rjNdt2yt{%IfKr0b~A??0c+a2a=%MCjxa!LX*P{tu`$QXZ_76;+%(eJvIWJZ(Za*)_%`clmF9xn4+jqS@n zglh~)z6fpKbiYNjA87zz?_rFuFQPt4e*p#F_3}KRfN2Lt835O03hA+2j-=}}e!dkA zY4^D!jlL^bd!5B4fhzATWcEJEn+P)?(*gS~kaI0KpXub&8HIj^O$QipJUf#>hvw#c zuc^Wr&_$(c#kM;zr_^h_8{;>&(xr_{O1USb$qSnV7g|MPd4bY{m9lR$)2`1-z85z$ zNyz-8?u>F)C}QT5Zf-Gd?F!@_5Wt;YRLGrsxlH@&zCHDcYQ_L?Gm?N!8JB;k8&>Dl z$+a=)z6V;^d@Z0AQx4I1FX^^C67sNVN|)E?9{IA?Gnb{OKnAz1F|;CfrF#2h{}BtO zd)Izc#o3lk$#>d}wXddmfR3BE*K)>fu1(SVHtY2#+{h)j+1L3?5L3IY)Rp)DsWA%z zh-ajV$nK^+)uvkDUZr5F{oB}SSLuomd?3G~mCg82d8C3s4rS9!)LT!1PgWpYjX=1% zrORU(1mB;2inl|1=`!=|bPM2IK0`R)?x#}6D6{oSAi8nZAjoY>4bCkw%=*F5Gqzgl z#D_BmblvQ%QF5bE8Xj6fK`NrM)?IOWRT-Fq zj1=d~ZG4V~P^%nTV5lkWrSEUCa->LuX~QUEJ)7G&QPTRDEA3t8wC&syLZ|D2U&_}Y zTO!^=zy1pynS=YkCYNyg8ufI@y*}8Zb-6!VVyZ&ig1XB}$MtGF=aBlai6~fd+(kC} z-Q5djBsvDd%b_Uz<7%nT1aT~mo8>Qh9h5ontbG~ujY9wTHR5-Hqot)Pnm5l*HRG$W z5U!nnV9E{fI7H6Dy`O5qnMR2YNZ;@2|_^g7s<(^w~;W&h~RX=2)8$30XS+D3@eSTqX9{j^UKeNJD%9%e$p~y;Fu_#UR z3j`D;AFgdY*vJ1?T5s0=9v|Z2<40>S+G# z?H_rG?_*u97AHwnOm=J!CUZx-GhvAWaB*U?6X)zG_x>*buaQ=$kNO-BJVgiBa_C?l zdVpY7C!(yo{v2#YOQ;fI72#l#C^q(tj)g~f>Kv4Ve)_8=pttR? zLeO$#2I@=Yk*HY#Xf6;(f&}fMH+l!6EEiC3dS_oL$g3UQd4KMz~GKq}Kx5%Q-6%lHli$16O6{0Vqr z%;owS4)X0s>YZmGNO{O)Urg$)iJSH{7R=(7^uoK7xN00!A+5Z z=P*uJ6BfU^lg14wbIz}zqAOu#T3FkCXF8Zb%j-cXr;Qnh)%lD8E&<$QS)fh?a!~X; z^;{eNF6IC9gFmUT#z&|dGU4&I@6K>k{o~t#eXipE zr)^Mm{sLaQ87EzhvMC>`!A)dr>iI({ego4ZPkFaOvC3=gyZpRMu3gk@wbN&jbjWzX zj6pqWAonfmhZ?Dw+<>3dning1@14R{nXr**&`^}9eBs}dVqP`vOWEn~gGxo;0v#^k z$hmCJmdlQyk8YkN!UV)`5y@=b>feb7Vtc?o((h5x;pDb1Lrq73|7=P4zQ#l_!R+_J zQ{&J?1`3%@7}?rr>`5DAtP{gXp`6;u^H4v*#auD%Dr25X?w+$l&|_ zytJcU;0hvXigEn8@J>Qm6w^+EJ&#vTihd;8E)a7;ty*omBElyA2_>LrxP-~ez(Gh? zd!V!Hv%C5zARJQpX|YLC1JKsTaNbNcs0ahXNx~uA8;J+Q0SFmzv>kE$pOzs?Q1HLi z7sfQ_ZN&E&VMgv&%d;PgEg^z$b^#li2&bXq-!CY3bdq9|F;Jn?LEXh&q9vQQxh-Oj zQE}3$r)|)0{m&}P*oY;X-S~COzbP^{_3|nFpa6b{&sqWoL}YiivDRjHBOi{Dy1v6%jHuqa)Wbt3U!zI@1 z?eh6G;1u0s0j@ml$9>}wl|8qGc3W2*gl^juU%vdNUd?f-LCsyIUX2dRxsgAQzo(FF zl=n!-n=(Lnd$Vcf-skFH7TJk`sgF|M`(Nh4;-V9SYDaRJ(y)hn$lt{Z#}TXZGsld} z5vviCo%Rt?W|X5(t#QfJh-tze<8agFc3H@Mc(&7_$8c@yn%{zP*`0Ns$D4>(U6Msx zdcT)0t+WNrIjX8R?q;MgU25AbR2&WJoG8sC=rEkpW(}2{h+ZCaoR=MoKKjFDJ93;3 z&pQ@URS1uStlKleS&-*Q2MkpuwOrKXfOZyVEqKRx-GgUIDP^`#8 zO&o!^SoS)>%T|P_&P4@6(0eUAiqJIHu}R;CK$`YQN^aiL>-nP~61xK{D!@eo;tTa;;R=!74cB;pNu@G z%X*3KBk`lXbV8)a&3#@|eP$s9y%UYqcl$c>hpw-XIxI|P*Mqmi@XnUH(=A-%*C+@5 zhQR7;ubj8uwZ%$c14)6|a#v_jF>VmQidja&S$fp%v-_4RgK!oUFYa?7X+sewzo^nq z>PA#vzk+zr_K7~?bSq+=h=rZgPvVv3LaFa6u9b`b(YeAYLW2|%(G8Vd^dm0*gS~(Z&8a?s82wyn{jjz@d_yi=(#@>OS&7td(&dx9ec0LA#p8-NbU2S4Iv3Ge zk~_nVKWd6Pj?iZk_4)7X&7$^c#&@eNt>j36vewi!4{{Gc2C%Lv}Eta|{3D_xVnPg%bF@=i&`Oq7tw<)@)9yM)jf>}Mf}2F}a2u6`@Yc_R}- zef3*6Hk@c{*evFULFopOrt@Zfx;|vG2Bk~Tz@VuYNa==hjXQfRc!KU3oKQFHpfRuF zbxnPK!{-k{_7(1)y_{ZG47z)(8g)PN*(oBwxg*?w+2nP^lTNY%bRfLgcFMJ}|C*P> zP-udnh}~`~xi~D4F=$}E|cf|M6P@mb$*_P1Zg~bj$egszrZ2DkySA`J_ za4zH(2(FKmt$Sdj9x&IcmMD>whnpVRI}Z3920_6rj8!3 z9!G|pd}befrf%g}Z8UhUY4Z0!y|#|~daXb5BBJjz9{D59|NNGDtKXr@UO-K&YT}pN<-Q+~T}?CHBHq*5UF9D=enB^^MQ{&m z=gD^Uv<=^k%WAeAtC$kuxjqio)%x#>t=*J7ZM|%`b>$N`XrZ&SlIy6c4{LBY&Wg~T zu#~OR3o?0;oIi%hUpV;i=A_V951F~u8L-R>c zP8Q;Z&RwiKnXb~cL4{PGU_xmAKB%bQ=Vi{!{x;A}mV#UQN9`SF=d-JFcDr_dh{IZ-YQ_@b#7R)_$pLvvBQM~^akunY0Nz`!l& z46E2FoWqi>E{V)N`>9M-)`xQ%OE%XxCx^a9McvTHDdy_aO|>zQ9}#zM>K{mV-<%cd zwxyXh>k=YBunr51l}x><;nzaRUtQsCGX*IrVQ;;qiHe~IdC8PIR-|$0nW1vqzI}Z0 zT*J`;_{Y~eX7p~@kC@!5J7&8(zVB0WI3CgVWcx?&&y^!&%^LWUy)1s@@$dKkDWy;T zt>|M=YR4%rkT&5RBPHjW3P(zU)^l#?v_IE)JT)00l=n$(Y3cHfwDO`fR?D$pb^VTw z3eLHOBCNu>wY}TUHEXJ}$Z+VJLOs&Ax5$<~alhxQH~mqL88y$te*}G;Xu9qEd}i9_ z;9o!U)$H)>Lww1!qsDFy9@Lw~jiMLUU!*2nh$p8Yv>9k11PehfM=)mkK6zN?O23)j})KPJO%*;@KMu{v)yx_I(XdLnAm z75v52NGkFal}{>1ab3rCCL0H1Lp&h5?;u_=Mll+6*}wesMWc(ZO#nGyVcA8 zIE>=}&&OPmO+-kDhYe*j+pNJv-MX%TO-qLcG9XlrEhk7;UbLo_XMOf8i)8ivXoyl| zbFFe+)DLL!6k+C> z_p%vMb@`M#tY)z8mk5bZjUo`= z5s2hjS{tPW{hY4>A0y}a23YKvUD$J0`t8eTIMNWXHG}p}@{~0v6_RwtQiT zWq%sv8%TBu+5uj6J1f3Noye)_AI~OFKK^8}3j8nPBKDhRXFPlk1xgxsC2Q6f^`;Jz z|M#@TeTmbCuA%Vfv8xP4dd=g>6Kz}HoZ9w&z^`rYoUzqaISD>=mBTCNf0D0<#<2^) zRj_N--7IL7w6!Dgj@KLOF~tyZn9*)>Gc_{5X^$bPY9hMhaHVy6{I0X#@flmq9hwYy z6Y1AX>5gA3vUy|yE?{&ng3hB*&yA_42mWingQM;8u9DsWwjz9CPJ3xbBRGqodtuLS z55!&zYzon0_#BVLo8j0u?#K$Gv=4`m$Ue<3JN*~ojN15-a;ZuEyga4WpT!96y_zx8 z=9yS1EwyQBBtLKNHpar)bHWjZZJ{dKyCWyVRW7#x9%E#f_0biqKKQdF%F5*NTN;@nJD)&I8hf&jDh1NIrEVh&hd& zx~eJ*rH08cnZyu!X*rn198dGSf2}yErsN;pOvZM5xyvKuuKf1w=8WpDs7>+~mT(BW zAta7xWD<^p377^_ZKZzfVHMaUkv)IsStTV*b!Si<#;~Sq=SjX(Q&(KGD33zt@3LJ@rOo)k8HanF zjqu@$272Yv(S-d2{~E9TnddgW4t2 zx=TlN3?38>O%cJjLZXK?y@PCQB5D|IJC^Uy&vM=t9$`^?UKhw0EJL|gw#F;F7z)WN z-gb7LbLC$NYlXJ*DuBigZjBd?5ck-f4`G#xb820m;`_5Uusy8QmRG7mEdsh!P_KWa z`fYKMQl7o8esV;2@_R^>6{1$rNFAFJ2H9op47p{H@id(LgR)(G=gsn;pXY*x|LZb% z8c22pwRtpnSvRgwZf!F_;m|~xk+T6%I6XBnoo+Upmacfh>&Ze7V?4!?@F$B33;Jq( z#d7Cm4YUeP{u(&x55l5X~=+5~bkZNioMVL&- z+{B>%T_vK(-RaRmi-IX|&o6_-s2gVUY**Pr5;JUn{x#K~6(S3wnNf0HS4pjLPl;sS zA}mq;BK4hhQJ6BvfT9cQt4s^>yFSmPz|U++4)gpAjsxiFcGy!6j_5xyQCGTD!$6%U z?PMCJH--I<=xY^wthH|#%!lYqpZ*Ir&dqOXDb4fP6u~k7OgJ+d`pl~rMCDeBS-NKc zbupA?X6*cxc#%Mx7moNs`Mf$*#Ti3E>klYRCaPKep{bc3x9;r6uFZ*n&;#MNuHq(} z)#k|>8B>g)QI50E?(A_(Q)_%=%0*Jj7vp2-&0LXVMu*@Titla@$b!;lxRUzan>9gO zH#3s754jw|KcrF2D95my6m_h~QP#m8FE$As70$KMxobjhk1PiF`89ch4y`7~+ zvd%{T&MU6|I^yu?&dYY%%tztx_%w9?m-aMe*eSo~Ppib)6vt%sJBHJ>CC@32 z@6*L*t+cxT)#3MwfXz6@QrE@{%K}#g-he}oz*P-d;ZXLOG0L@fhayQ;Kj5op2w#V^`$2UCb$KhMqF;VoFqTGbN}Xe%Jc7E(FRxnI>O53n4PwT9>uv5{ z{L?Yo%YXgUAiOhvo4rSNHH{u^b_$38``~Ht&ZIszzoI>js%%VXMWiWgqWP*ZDwozR z4SZPKTM}+rzp-AOD^R_uJA~`fWBmJS8!7298d1*2dWg&^phP6b` zzmWH6Gu?xs-Y{StylmM?{A&7(csl3&97U@^#VAgY{k-^$7cpG}ZtAzt=VHy~e#p+3vkYWJP6jU6*pBf$S}mY$DRd#l=;)mqI(Ul)d-fCF_HV z?2(b|y?*b$=lssm(K(kt>iv4Zo{#5aJfE5^b00&)zur2f|9$I(Q?{<@KdSC&Q~fzS zv^~1)Sg+KsYaj9O)bWtds-ebzpSv*RK-(O<$8vTT8@1lU^m)Z~S%#;}ZO)4)V&0|m z4dT`7ODN%E7nxtA;RV&ptbv8qq@6uQpvlzs+UDK*J`vS)Fe-pSH8%I?%8ehBhfV_e zbN~AY{1wW`@1+&6pQfleU{T#6`*Ag-RrA!5AyMP`2WYH7==(G+d-^b)mX7;4x^&i0 zp{QhPca@|j_D469Yt^f>LJ*X?J8^Kfw!;L1f^rJhz5P5=B|Tv$W<+)EAn96V39+EW z4LskiH89bu(_S*(=I%0 zILWEX-UqOq6DX!e4kbmRz@rG~xr9sFI{);o6}z^7dJ^>!35BJB*Kke<49 zSdu#b(N7YjSz#ts7UC>iK+Z>S-Vr+~EA;!L^n(wg!u3qwcPUXTn}8Nu%Z+|FR7a2h z1-hRI>T>I%j76PEQ_QU#RIn^me_cp~`UssH#0YB{P28IU#gHjs>rMNq~ZN^0_ zN^q&(w1%BuxUR>4K7M+=T2jA}2cVvE>_xUT-m-1^*jA138|mfP@TuVrIX`?Wm^P^> z&48?C{feM{`+D`jXFEUu)et?#AL<5d+wIY8oEi(A%`-lYO~sJb8>V!I8$Ji^6~G0k zCpO7+9ig-zm0Pp_Dr#smP;Ng39f(&RZS|^R-<`ySvPD0IA>pX$osO|k{Bl6sF#sXQ zmK!48<}^g+J+&)oS}u7HU@|HI_6`dx4`I^ob@xy_){i49jq(xkIWMVJpSSfgQ5+~1 zp|~c7%hB8d=z!Fk4W6K!Tfo2YEXy!(;MyPXc-8~HuVaifWqa^w&gC$8p+FkznT{Mv@ z2toM{{e3)=S`|sXB8bZU_C;wTY-*~Ri4iJvnfntXUiY_ki%!~Xd z$-2wr8OU)J^)|IVKAhC}$bn8mDf32r??wYTNju^4um?K@oa_`}1Fymavx@uD9=|DTLTR4|~?u zp{ke6@_enu;qyD-|L$cxSN+3hLskOk>CORX>zq;IF4tAX@o2E7cRMhj?zP6^ps5$ zS@Cc;kiTud2O0(HPtL`e0{i_nX7e8*6ZNL`J3I$D>ibBmoU^Nzqj_BFo_IH{EL2{< z!b{?1#uR4-Chk7VO4hMC-9D>F%|^%=T7W1XAX8iZ)k}Bv=%$0$zy~aEvuci(mn$6# ztD4altHCSl9t*OXPRO4@sH>xN!tVDW5m2ihv{EaKLQ(a3o)k#5^QcdJfST`Sl3xvr z{^m0}R185eGh&TK^YCjvHci?sOsAL5VA6p+oh^48HeWBK7Djd4x~G0qV@Cz6tiI%C zOMC%JTXUe(dCp2>xOK1|z9#?8hC1Lr$sSLWHJN82q`Uxk^+h=YvCbzD(D4HdHqn6eGdfU+&}( zJDEPf&MB`^D;|HLjXt`hBxK=ts5FB6O@acxR zG=qG(!+p^HPh*h7o_$wGS43#?n(~>2Kv6w=ZKjSar4#M285m-hcg6}eJ-x5l*d)V<@Cl@S3prx_V|^^+Zg<3|c;PfL@3qFUyw!up zdm2EMqia_~HF?j-c(moe**CB6U48Uot@8e$hYNKT?>2STtD#zwliEHR4w-#}aq?qU z)kmb&95HU0z7r;^-{YTAd}sOd+`q|tlDS$aU)PsMpXB4fS?Ox2E}&Vz4h>;#Su zB{wtCQKAqqq}@T06UeDwQXKo`*~B5CP51uQXa@a~2whcNbs7lvD?I5*ycrDL0!vFM ztB1XaJ(7UA{?voOzzKuH(htcJ!&O8C-CLRkpxr-rW zT)4rVA^sqTSZPeGG;^#sB^PVf)j6UDuu3Us!ecBVws%bukp1k5$>Bdd%y z0S|L0xbKPnV~`D`bAki3FRom_+v|NaX(vsT@RJL)4vKAT>c=##b49d7vPH!)XSe`k z^z?8#2Wh<_0%OPbl<{l!IS)^Tc07yY%yL(jyzGCEtlIxxvTNB%vTGT3P7ZN@a||?U zA)WDtLLo5y!}l$LyO(%8>JSmz6{!t7EC)GWsWN87VMn5sTZ!w1Y#FnaNUJ`fi5VDF zN@W-0-KTj^p_1j>)QtscEU9NeWI?t8Y!go#A9*cj9?Et+bgz$ZLg#f!Y_b$93aWJc zAba=1x@yG1@`Coj4;lM^w3XHk@EtH_EPzm7MWOc1j3LEl=Ga( z-{++HF+3vfXS}%KS@~d^2^&p;o(5wVmd9(g#?geYQkaEV`GhaB-(N(Yf2v4|?=O%> z57ebQW(LHaX{Y4!8?17o6a4iraEfY&B|Oe;6`PJ^qQ8pN>kML9kq2}K5ieg#ZPrKO zoL-Z>x(p+ZFpd~N@nOW5ijwuTuy4EMf|jHKu0NzL9%*}`P;=@tR{>}R$A8DaX_|vn zs(}OM3n+m#Lk$CaeFO2D!huKP_>TAL*P>qr{#Zknpgf7$d1leOCs*=+oQdfGeyh`@ zrsn$z6iZ9{}r{7Q!W6EhpqSM78V|ZV-+VN zrw*)u3PqX6dOjfi(pjsN&8Y*<#ZyEe-iOnYIp8Nq^`4wx3L8 zjIih376%R$KC28dH!Sr0^kellI%7f2>+HR7AyM4j7^ zsMfjGk{6TtBa--usS2;=qMhVk_atxx!`M5+*WF=qZ#v=WIUL2&VEiqG!lm>6v~Yl% zo@3J`EefeimxzTlGYxg|BIz(!>cnzr6vbR{QB=SfEAj$fg5=Hwa!Pr}ns5a(OS9=} zgQlSeRKGE@li8U?&+2)0es=SJmK4dsl2F4&LB~p~lZKnM=|mOv+$ris=m7nKdmn;o($QtSzx-`xRamy16>IlcRPD?YPLW zKf!_i2pAAxv%GP0FPjqhzqJfkZ(fh-D=WmDH_&)M%`9yU8 z{J&e2Ip`~O@K48{qF*U^b2&)0=-(lt0&Lc30gukB7AdF@3pDP8q4a7+nnHa6vUm^q zDr2-yU~JaAs+p7~CXmu)Ds@yQhCN_Gm5sv&tJCAt#x|9^|%S1s;ZAn|=IWNm?{KY>NoVv<-25WFv*w-WBG_%yWB?ZDj!bKQCkD2qM zNJ5D7iE%#_lEbI_}NI!)rI;$WZvSN1HEe_A{so8X1mhMp!;V8=XVr@93n@ zO5$TcUH+z5@#!t}j$|zzeeLU%*uPdhML6LvBxnrnin@6CNU;${7&%SQ0y6NLOo>?L zI{-GDy8>m;GfxR=x{#J(QcH(6J7s)m9kH+r1lCuNIRz#TxfPl4AO@+ z1O#{lIfU*mHLW*!K0e|U7vKm*gW0i4dJw-?o0tAxuuZZD2p;B&CVRCzu3HhnM>P5zL7g^k2v^_&G(j0Ad z4OZW42h71N{f}iw&h8djYSlUBXFtr#Ir&lf8#C#U-jWbV3EP~z*JlwV{Et^uKh#3J z&k>0bBDv(5eK%P)*)5Kz?#LTkG8uTj1l(r6j?7=;JP4wAwpsm`o-PYNuKxHjE7n-# z+1TP0vx&73PXFxchm$ROhVG3x6-sv zPPY{gLJ>`li|1eM2hy#ybv)b%1481Oe*;GfJdqK@Mx-py zHG-fryww`p-^P(4A}E6kY{C~* zV)maxu33(nf(YFY^PCJDyzQo;=h*-$Q5O#3q*;SKnx5noA4{6$7K686G)NE5E^j_! zdv3%!pW&*i9w?797E|>-`rf@hD`sY#6ZXJ|^&5#k_slsXVHL*%dP649)aDO5eg`8SAZ}7$Ie@w$EWo#m+74(I@X}hKuE4qq2@~1qOc^ zDJUNgoBAIm!(5ltLEQc;qu?i-h)}T)0e@>cGpwpGyT@Z2F>fG-zVXggf@D1E67^Jt(=34u#-C^p9Yn{2kjJe=CI*fL#BfU(#X2cl)9MpadA&BxeKpgl{LLgQE$zlv`(1rad+jBxB<6tid;mB6Aq4?$~I2h?l(D zUOj1!(c!lh2Zd9)=ey%9*vORaYCb&jdiou+69?{;14Y~yfC6gJA#p{3n{Ojs&xx{P zWFl!l@vRX^4};_KgeZH80dyVQ>e`6_LK%ln#I?)9zk_h*fAy%LMH(5fX+znyhzBYu%ZQ3;g#EkvQ z?Bm>_rM(B{8Yi*hsENqA2r94g4wlqbhp_kA4K_aVc#LXp9hrd$qW1s<4=z z!CB7mADokPJ66JHwjxRCGqN^z2{!<0H_>(bb!df&6?CQU`ycBx0U& z>I!oD!?#aV1`oOW7VIM1*HkY@yDQf#gmfYzHq_Llygr?B3s_BwUL5{;Dy1Pc)p$wJ z%f}t+t*%`n2o-dc|2^eek#2+lLfOYq*M{o5rFL)eSuG>^l6e~UmXqSBtUJX$nD7fJ zkJpP_Cmq}3s3R9u+--e_g|!L(BU=&gjwM7z=$SienL2c}gq?8cS!YP5n~5s6+GTt; zl5Y0G;!cMWDUlnVV9_MHJTGInoP0q{9(-{UbU$5_WXnumpn%p7tPT_qf9F-;&8 zXQ9p+$tkxUOzh)XeY2|RuVFvrSLeLsco{{3JSnPV0C+2(H+`+q57k63uJ?Oa*q`wy zxoo1^6kD&Mj+;KRvA1_kGlM#lA0X=%u5^xXd6?fnPl=?J_>oI(pjCKu>rmpHzSajV ziWFFW4a3-HHcoyA_`x(R5@VttqI5)spn_JYPdUHoRoiQzf{))Xcm7aXetbT14a13K zL<(XwebKGzHzn@k_wMFCZ5SS)yRB@^$bY8vo@D_(iIz6HL>0)7F&_4mpwV`d%ipK3?N zzTI`G-OSGzk67W)QHo$F>(_Y+OHusVw%m_F9{0Pw^C z;S4>DlRZnuJzd>yDambP2m8u#EC##5g95H9K#!>Ze?4N5jr}5t<*xdL^^_QjdO^zL zKi+3~9{uF6u!hBeX#;cz8iM%zANP39`!#a_7$sa!bM_f=y`0BElmq>#$WIim8?As4 z?laW!u$5qUxP<1yx$@yRd;~WPZF&-C^M>l;cP_o5kxL!2=$uHV;3wNPSdu$^52^MJ z2v|kJnT5VBil)c8lYb?hfg|69EObRTcD&{gIxhR&?t_O2P3u+TIu!BI0*zM|emE|e z|I*IU-))#x;;8R1Te@j9A+G1uHoz`CQWO&PH{uAdMb^{KKVmB{IEmBKDJ_>KCybtg zn2wq&aWUksvCv^}VY#qngG}Dazu9*J)KB{H9Vg#T+nBzcvOO#~1wZVo?Kr0?QR%bz zvGCym1n>k2Hx0 z02HT|zd_R0x81zsM)}=qhIk9~kC2njRTopT#Euv{CmBmScK2Cn;(&q*A4~d&KOsOr z4Ya}UzeDOrb`^Cyd5zU{4ORrwIo6O!m588K_~7ApUL2#+-nVyZ0%&5s>k%}sFyskn z{hVL&#Ps&LpcvQ1m$~Hx#aO=xEr_FbSj1I;4S2D(HU)vuSJ;h}juzxjJ-F=W2`1}l zDzX6cvSZBTuuCi`7z5(Fd$cqo3#XtWw*B@@2FZwu?<|+%0H|0F4$gBZOj0=Y8t6`A z1RcT32LJJ0VX`f~UVYaq4#B%$e<;D(IYnD|%N)KfL|q%cVYRnQ?hWgt7v(}5CP^m{ zJD->cCra5H8($R1aLCb#_#{=>tv|`RN@p|#!h3WVE8WWiXL{PVgwgQK8*Sw!3{rNJ zpz{cfEF#TdNrLqJzx-4w;*Yf#V%TiVR^88Uq*CIF*`*f{AJ)uW@wR9-q!fb>Sf|uB zX1gXmk8G#AnpgYn@vry#fh>eTBB&(~@l$UgkLuuX$QkkOUF7lfL+f6*2ZwlJnZatSaU~DO=00S z8&kVguA1*ikT%+)zwc%YNxPI9-7Zoz9W)H!-qI`! z{*>q7g>f8}o@Nlr=N}+~i*vhf7lOL>lbWw*>Oyp)rxfUg!f-D+giGiNix>VdUW;-f z4?&NGD7>`tn&U4)YK(*{Chjec^^H>oxEM+ljRkogu$_IBR8T>_fBM;yKRGFL(!+ug z|7RxBf8|v*kLkyzes93*O)9-i0(ue_WEj=t803&d7mW}aRM=V}t(al>3ybroG_J-( zyX^^hHTilpS6@$UDPj2f2sL}IDn39M&^&lYK}GY}y>4BvI6E!7-H$>dF;r^cbdziC z;d#x051t~Ett~KW2C8zo&m@HO<2>cDMnN^_#sj}xgHq@76nERBWY*7iL!1eM@d;zg zq4tXu94tD9UfX4?aXX-x{<8Oq^`Vt*L-b0{KQJ4@WMvk@Y(<=R+&lu*?j6qm-6jIT zpBcM%v6t_vk4F?WcI-SbpKRpuRNv(4=xD#qldBolwB)!TqdDne{+%7y<3Ze7zx$b! zKH))?Wra%Z7pnrHPxMZ6yiA>=EEuWYR6r!~OBTXECQ=(}d%?b-p`H5AJ?tGF3N9?3 z_`1-znFv8vXHZo{V%y7g{@OiA!)Knudi60~XH6fnu z0d0`7} zwgA)=`x18FF;9m1jWhcLR_q0}>neN(d-`mM{i21e3Z1XquItT}3H&9q8XON&ZSq#X zak~JyHT^Y}Y1g2h+E+Kz$RlKD0pZvuHf%I@u0$-C-XCZhh>%uH7x_h!OVZ6C+tUfe z6s~*Y!o6w3j-=$k7b$&lCiCt59>|V8DJR&K`o9Mn7;XcZUeW>Xe6YX=}a(ZS>%KY3~k??Y~ zsSN6v)=IF10~zn4IOIL6v(eDk?E87wb&MaMg}}7CRt=A3nql}Src1$UmHGQiyM+&c z%#X~nm;E8Uqod6Zu>9~T_J;mr*P5uX5Vo(;?>h$_0q~0b8g>`3+=oT31lT()d&EEe zC};h<675sTMiI8zL?j#(*MYOqbc5Golh^xf)(!V>7hYlo}d6v?d#h z4@L3Oq0`R_Efz3+kAN-Lo5qzsqIU14-qp;<-}r#~t%_6C1u)6lNQB;NEgfCLSyFEG zIv|45s}F#~741y8#XEGJ!A};(nQ|@@ksx;NURLttmIyr>^9eXVFQ+p&jqFZ`tOxgk zWL+Drf8igXgI`>zmby1Ic}8NZb>B**VncF__vIO7fvmFUMNb#1@Z7$U=Ry;E-;+Dw zoSTLW^S;jUj3*bPZRfw(ns+lK@9eW5@cEc%#Irna%~oJ;$h@nsY}9>LnuYx$xT$4n z&pz#*5ZShE8Q69KDrSj%f4kX7;J%^UC_ykD~p?rl}KAccV92W3z-O?PN_b^*+Y;25n zsqvkesi`&Jz^oO`wsa)KP*Fio@dSd@u#uirG6Dk^ZkR>xm#N!IEYpRNGn|&ctnysX zmw3^gng3#2?FWZ{(^}D^b*r7=x2JH$o-2nyH$1m?yKGEv((zC*xZZJDMY{7PTl~{9 zrPv^rX5#wp4E+8C52Cc?^3ob>lkgS1&APK~S4gz2I>ivqW-pM=x=k!Bh z?CX{CL8%QB+ksmo$Eo@t^=YcS1W}>YzgJ^b{tPyszXY)CD5vb%YcJ^5vhAoFphc(i^vEKZl<6++ zjY+rZgl8dqj)F#02J; zhBZ9*uroO+yJ5Yyk95tpaUYyk(q7;qE1PCxL|M_S7jVY#f$;1fB_Jb-EU>5mVCA95 z-Gx$({-aVaw(BC*dprWSSOT|h_*ws+#4XSok^ZA`aS0N!tV^INjTye`8Q~zy!=W#i zw#lB`9t(Ls#M}m^h`3$*%C2XKpFxr9>qT!48}rOqQ14p?PPhRhoY(~x+Nv7}*3B~m`a8}|!8;#j&I8^Q(g{#C3a}TKFc(e^ z_)cG(;Y2F|x{L5=fqS4FvGbd8F)&eDEo^uJz@GttF7w{2kptE_+TM=^po1;3^R8BV z#ZM2UJXzMNkO#L^=jQu2W1Kr?#%7CrQjga$7z+*azmO%Tt`7N~UxT{1UwO`|;Lp|! z*XOsK4AdTWV>Kp&l|R~98AzaAq(fW&^e_`uSH>p7tP1ob_6?RF+3ck%Iy?fU|9cE< zPSYOup-ua_w!BWyT z?~L|gQ04JwL=~Ru(R2|kJn{klY)0F378He$z4O+~+EDwC@8Q|QSMKj1QxOyVT~qv` zhDlzvMh1pm(Lch6rK)_eI--QS=P@(4HYkiIK)p4XW?Tq`w%^Deh)t16cWr?NTD`p!X!U&pybayg=I)N(Q z$yuS=huH<0YX81^P*gC0;72JR1ACONW8?jZKR{aiMLYko3*SbHG3m1l7<_9H z8F|0q0+q^GMgji1GbKVULw1ikHUEOG+G>d0s`?dam+E1F|HOsm0uslA%`K}O6Up{x zGZfUy2z{A_CYEQ2RM^KT^arxd!ft8))qW5txO9BG>IpE*7Ww(@?QH*o)Gh7FnVTT> z*xe~Er!9L%TBlI}WRjgktq<`o9B$jIbT74AKU2G+o!yyt=THDchgJvQ{{YH#sIa>) z_0Vu5ArLV1(qr|`VO_r(7xp)5uNx&sJ!|X@O=9f3M~7gcrP19>W3IZx zKmSywoHYl{*eeypA?#!Dj!*Of7|Ooa7|lB8!Ct>Dc_F&@%0UxS_(JhaO3^D;hw}v1 zIxZ&YdTMao8%Pmox|Vey5%T-MoxtqTJPrCJ4R}BWlcS8i;rLSfp(E%cUeGl>c%b}0 zDjbH)Sb@)E6wGKh%`gr|D?J($?r-uATYi_}?hY_SBKCWFlP%XZe}NXielzQJC=3H{ zgfSq)kn(}`sadG(W4#Y3JJq|I^mUQ@TpESM@oPdoj>Z?HPUq6MB|4&f7xS>VFujIP!_2UP4Zkzf&Jnnv-vMT zsx8+H@1F-8Y3e1v)pT-(mP8oh<_@#}^7^BKr2Yht%{}h3ae@)|>ik9Q-Ql{@(N2|#P|(ku%BERd>D4~d&P^RU(6$nvd7_QUwJ;kwp)ntr6q zi~%hJ(4SATQpS@N+yZ}o~G*!75 zgUJ9%goJ@8jk<6g+%zs`nx|<`;uZyPd2{LTo8rstw!5qBdJZm3O~+wi-n^2+&23Q*SY9&*SWs8>@f&8oS+zb5B``8xWrbFY)>CCqwnOL ztr5ht=KU6)Nel`zL*f{bDY`6}EVf%(*GakfG*|R&B-m+{;T)P5G=0D3^UQ3-jCQ#t zhIm;wz-Th8P`(}^V}ZChtew%lU2`5}5&D;a!{R{u=C4n^%j{v~7njiaDzriw^9e+2 z^dTYb5vnzcq6S1lg>SQS0v0&wSP5FCAxAjpiTrQjW8{jNFnC{Hdu(c#2e*Tb1h&gL zl;ia#=qyK z^3OV^F@9&;TntmogB8+#e1v=@;v;sPSe@8Y@b-IkiXfoQ~CIt!sCc+NUHS^~&? zpPA1C!l&nOeH|I488kT3XSXGi+BCc8O_x~!x(L>>hF!Cy+n}4&0%z{a&=CSZUCuxl z`alh1rnGChlB90FtG@o`g%dCFLj95gGqG*DJQ<4eX-RfHz( zNyv9~3t8H8cHEa*b?wE-&vjR%KD!|MK^(jt$SeA$MIShjSf=pXNI|p$9a=#XC#u6o zyO1ra)BSjs9#01{5(O8(OAPOZq5;uWAQ0rs#faoY*@RKQ8mv?eATn0;^s)3<9^5Nt zA!6(e@9T8b=y&jIxIq@m57Hbz9+j>_OHgFmuqkC&zU0W9%yaeqA4X^}vrcrou;DWi zdhOYd53Q1;kPHcB1{CXqG69#}u-5RHkBXw$5LN)jw}p(A*cF~Fc1$1IplO}RoWGgRQ9}M4Lf;KG9LlX>#I+k{E_3-oRgSsSW9LBA zd|2HFDBg9$0RXdBZZ?68{J@!f;Zz1P0wQFwhDl3v#P{kT_7-X> zL1p0Z-}v+aWcoC6qb)3%0K6pFrcD+z0V4fMV3->|C0yt;6=S z!`N7dd2w>e!u;sVI+AQJDjUXY*UjsNlJ+epiW!j)4>QuiIv>ypAulz|Hx zwLc_FMD&*RjgK5OVj65eJP>F{zlD|d$f|J+kH z+gmHMWxbe*k|o97V?Y`+BM78QBLM1*&mC_amsM;l)Dn4YtlGZ*M@y?>cl+&lnKOJf zjOZyKV$1~F9!2vOq^*WBJUyJ)1f25^gn;SO$c<+p@{2qRMjeBvrpi~3bt;qN*ydfDh8k_ z$jqOZ3x_Z@A+%S#r?%UaP|mu>$>~=OfC`EnZWeR_M&pw@twhBC(LF(@bW6ul2glTt z8;A4p^e~?Q-8-#6aKAm;2G->T6|Hp{v^l8DBX6meyL7IWOFkdOP$n@{!P2=WX3QoJ zq%@AR)uMXeg54EZ_>?JbD( z=LQo}2CT9TX>IOcP}!Vnj%KB$B$3d>y?I<8TD6`m%U-;p2zb&=JD}gWbY>0laFN%0 z5*W|kgZziQ!CKZ=CyrU#Yu<~zAf~~a$V0mWZoRjm!sqbG+DLqvlVHxn+``MV+!C-N z%thX-Mta1R61(En#Xa#t-z|~x`W-Rpzrk$Gqo`)U)~WEjh-l|l!Lcbg=KRLxm*`TI z;X*L8I@sdhOKal7CcDYJ07rjbfeW&5o{csk7&?;7*QV4@ymEELMX`nER%AUZaNzdg)>q8|?$NCg9NGfp%e#%Ca+vNdYZf-X^p;k*&BlM5uj z?jw*4B-poPotDqEM2qix(}~J40Itq%c*6Opegz=wJOil%5cnFIuI2W2G#rqy}4p6IAf{eRX4DP83`VV7GO66?&!PU*BAl&o9g~Zv2?j^-*O??h6+EW?b`b?D51$!f_ zgn~JiJqJ#7_704MyGSocY)4JFeGBV-mV4#|G(Sjyr=vx8|r zSZM-Yy>~!{YX+L&C2h>&+QZy4Y)BCX*mzVKr#iC{{2jx37V0uiQji~*oI=YpV+721 znZU>yVT@H__KMjqq;X0c+W#aAGy77JGhLg0%(@ZHULw2<73P;d!|RTwxdSP)JgU6} zt{8}tlw%#rj$yIo4PWhxk3U6m81m^k1y5yPaH#G05=VQkzbJtD%F8~jr#;+D`AO5? zAreLkt3z?eO08&BeCJ}X!}b(nam{_a&sW#JTrDgSk=$%9MVm2!!QFogPMnh{m+ zS);D@q+`qLAPG|LBTzB^`OoySCyMqm?4NWMiCq7!85-`{gLvgglf1OzBE|2K)Xdd4 zkeC=nUG}I#Gb_7(4P9&#y#n|asgC}>hX*&*K5S$&M^Bk5a z!^mL>7kkf}#F*#~#oWWQ!N>yp(f_T~VD?^B$I)0r2IWR&5=!&T8{~)APvFC{$8^Iz zA#85qnqf&TsOEttv%8Zk?7$%9}PbULek zCYtFi_Ok~ZwE**RL*C(Cd6pjE9HU$*~A{3(WS zH+SvAEmt{0`MpN@pbKkw9tZSPiHLT`A4XE6Bwb^Z z(SmM^gi?A@PZ#HLXczY@+66_7ox4{3kMK%$9F%v1%c+qQ09#@+a%nM0h%g_)h$F$$ zQuvPT)m!@bbM7tpYZMJ8-)}zPByvq0<_Qwcfj=gp>Vbnj820HAYl< z*5AMShk_qN0^sau0gPsV1&BNM%<`UYA#p7jXnTPm#rsCU4+hwhBl3FN)_5kKx6Hm> zXLX?#xZRJ!M`knU`OzkK?dCmzfJYPPlk$|qiB8B2% z7jhf2dUYYKD#i_!_g7<%zf@K$PrT9h%u(a`?*!he%=4>A^rH6cLHpB7m#R^7a(BYC3gt*Z@Vz9#Zh>}0CKtsCJ~lbMqaVGB6VRxOjPIM$mt080R* zm9B8Ake+6@Nv#Dq9nJCa9Qy4d7@r2oLK*VlMtCozg=+8NV3gqylciB4aMG7Rk6_S8 zO_h(fN2~h2e;A-v!Zv*%^P47aU(YbmtaVskFlC}2Xe~y+Ei`~#!_Gss7IpdXt?ju) zX~w=!;D`L^%5A+eyP<*6LiO(hA~CcNV59=YmZ16v(Y_(f1oamTjv!H(MZhZ-Wj3Zg z#y~-IV1h|;2=CEVkHu%%Xd$k~ge5e|OyjGA1#Qx1g>qtWcrgrhA#JNoDYcG*3`Y;J zBQ44?>2ezaK{=~yJJM_kWxLQ=1Ef6rGyzW_6WJWO@!6)i8X^qWu26Esmc@HmE$;FU ztIEgLhpqd>+p4awzcvmuM<%>KbQ_=EW;Rzl{v>eK?%xBh`S*Zz|YPM1w}4(TRAbXYP1*v{a>*TeL2PN*e-u-Lts+OL_ERc+YQ+=P~BGXN+HB)JM{zMkQ zmHiz zww-NlD;ELt;^i0dm_?jCFFvi7KC-yzRYh^nQ#uMlWYpmkg;Q9W-N%OT8!G=F&2&W1 zmI$+nrr4SdCEzXSuO5JT*dy`;gjKI13720u;V3V|k5l8ro4DcLKUO+cg&~p+=k?K< z!{ZT_yEKQ4fIH7wk-?kE@(}~$SzflKyL&8O+2d zN5XhHvF55@2AXPeh9HwhuoqQ1!F3^+2 z&xmkWu*+SS5dFNdRD{Rf0X6UKsju&EcyRWRJAWcH806isAdK>{+->B86YUQoP}C9| z6pYMcWwyEc5oF|!Pa6!!$3R5ojc6OlC)b#OFL;*htiH#)cnMN#k^)5xr+5)W23(!w z&YOC|cy#7pe5WB2FL{%UrqKK&Wn&YB+B;e4M3z2g?L-N}MRzIFyHKOsNN&6Yg^X@} z!z%v_iNa$ue`}R%UTe~A#2vhY(Rk7H6^`q`cw@Ts3Off95LXJf5m)+;8Vmi|O-6tL z3S%1>$AbYCpPYLQ=CzC7F%Q$e5Q|`ACbPnrRYHAYF!WlP@{^!NM-qjrmA#~BYDr@n24#*9`&?La4T|+0# z4QClSJza|CfQz$8iYf+~860vkGRSWB3Udku4$sg|fpM%v_pj+|hM4stc?@>#uGD7b zB>ef3RD2cH`S+h_2I>;elO%brb@rw&bRAKSJKEFXVyN`%q(Tna5~IT?sj? z80uIrozk5wH2Dpa{Af|gWrPpzyfNYW1Y_1MDOk{f2n%=P6?g z+xWrlvxmWF8#Sl_n;{0NrCTMN8OPA0N zGUhu1gfqSjQ4x=dqLglZM7uI(UKK?{(ejLhF**v4VC+&XW0rN6OBn|rksQZNkcX!7 z%x#jRo^u;W4NK}mZ)w$D>r`SvZm1r-RAZQeVsf;H7>w1zkc;OjgWj(hZ~g=0qWJFQ zT=zZia))oC;78&}G-_$ZEKtE~zC1@7* zu_c|;@sZh|$G}TldddswoEBt5y5afu`DHLfW;SJDdX1~BO!AE!Z!LL;F2jG)Z> zpv)rh+%TK5RrFEU9_;<7a+K@u7vfxi3cSxQ4=Sh#PO9tJ^^Q>!bG=eXCbhOWM{iYyI9#V-eAo99!`ReaLegy%3d$d*ea_OiVpP9QbT5QA>mCFnVxCA! zvLL6Is^X~f7Gf80%GfucCTJ6g_p{r=P0|k-@LrNpZaEKF$p-J$6mTEzH|br|5P){k z)AqUHw7<-PdcFKG=uMTu5!?SG>Ab_K{Qp0Gmg6|aIkpJr*ef9;GLGZmpn>eY^0ABT zPCAZ*L*kHG5<;@cEF+mkg{+7o8A++{R&UN4CecrF}d_JBRzy*Oy;p)$^ zond~^_C5e%$CzYX3{iPh9Cat!39^@oi3BatbTCJCih_Ql9+aXdn86_W(Z{d zT-Ej6RVLaif`!^h%7Z7Yci}__KLD0RIlp3e6Qk(dW52*eOofW^NE0JYxoOh1*>Q~s zvfqD<#2IZ1uNg+8hYYFG2m{1x;tf|C-^mm|p^9_OR@&cof&Sukd?>TW&)4yyCpIFB zxXh2BEs_Qq*bj)|LUjgiaEdWt-$P?RLOtGPpG+#C>s(8)iw1Hc+@I3DX`t49`xzjRl(91*d?Gd{lJm%5~UoM6eaWKt_STIG-uY-v0 zyl*R^e~OOjf)lGX<{h-~4S2O;b%>-ViHq zyWBi6?pI=D zh535ejwW#vT+}tN3(QS94nb*3T|jzyi-NP5743rhVfL_C^M0O2JtDsJ4>Z1h}COehB)N^N^2 zjyZD%?5aXP%N&Ggi{YTNcYoKX4Va*qL&dy_(r#Dc%q#dqJ<-u zdJ&E$H4nw2Aeg)Dd*vIt!7|`L|88UdP7&~yv@y;znr;Nz>QW%*=B!y)?7#?TZ>y}I zZA+lBvWLZjJX((xS;ikLk(1WcQ+Up*YzG>3JjZgR2+f}FF=-Vn770OO!lhb!0?dk@ zvW4D4-;%Z~+=~$D%&Ra-sz()!YsLEP+c>$YrL4!k>T3Vf)~RDv@3{teAwP6v>9yzr zavtCx(qk4l?vQ$?%fj70YA<|wDOG#VH|1Sk|5Vm9lj7S+NcU@xQA1ZNt?VPqGoV7( zWDjjFJ#!Q&s8y`_FQ;l8ct^TC@e&3!M$E#VEL2!P`XF1J zu<)}_y(2Dag*W*W9R*-n`_{GaKu}$9Je4jI$H>x$3H)%qyKRMXw)N}mX%lF9wld8AsWd#$4{5<_; zx0!=~>Jry&QC=V_QXS8hWI-4O-}xKh^D?8Gks&2+CZO0^>c4B%qbj~RP>(lo+I~Qv z&Fh#l42gCM%^_rf#9Q!d&s&fVrizzSF14-9UDU4w6=_9qL+;-GSr1xie-)|tTtsHB zM))Nsy}nv&b+7FDIZe-d^yo}0MRL75&e-dFKrh~fz0#_A&3ImPVbx36`8}B)44BzE zL2q~og=Qa@a2KgwzPE-$Wf^fnY~+Oo-C#J~21KQ0F&DEL60O;u7#a!8Z$V6S#qi@0 z^j6_?&EA^74XYZyLYcr7Pb)JqRW&Q*jzj46tHJ4X7~nV?l&0MlpLs-C_P5!>NBRh4 zeoFkVM`IMd^-Fez3!iz0`ujXL#up5-Madnizc1KLpLdRT#Q&AH>pB+yhmaZ`zXj-> zpujshg^SB7kj__Zrdq8!DNU8$NDD0d_GF+u?DeXRm0*S@a#D-xWBqx4@*5f9-}zeL z0Uyq0O_5rkd@mRzi9G&oq+@vHZk~!!EaNP4%%%xfXji{?uz%yVeMz#}!wjO?$-mc!P|tH<<6M|E#lG9nU-ks7lcIox=Em8BpiJt2Yb` z^cy#p0m^XUZrOD);S;9Kf-FtV?43!}$CV|IiQ45R?g3qVkn_vz7hr^RDOH(0fc5rZI%j%&W90>yBZk-pS>#=m6ZvZoPO&* zo7gaTl|Due1u(hu+NONTXhr}<`GQll@|+~`tpr{PyfAeaDA=z|#l_x7-{Q1FMh-oxqsg<@-TApuOgn`*kN71aNf*5SVd^a+4q7`Ee;%p~8{~?mj}!`nMHB zYaO^$l#g?0)#n-IsX`b+^%}Fq$YgX;%K&EN^Aevr&fkR5Y90rs_Vz`-I>W+}c1gX$ zY25s-djfioujyi-pN)M}Fp1X3{l_MTQSpnbfAfglCn-_|d|t1?Ogt|LN)2d2b{d-b zJ}TUZPD`y*4^GzkuhXZ`?LgsGs`q@zma9Sx(grIVCW zFHrz2Z7R!?$7uUqnkLJX!-4Uxv}uRNwiCLi(nE|#bHE%)=u}F+svHN#`oHtgpbszp zrZQpOfy?NZYcMCkX20Ly%BrS=Xl9t#rCB~M-_jLRVG6`7EXQxLA)x(Nl3?B0&{|I% zTH$@Exqbb(>9Fvs?4OpWI!j+BfUOANA^-oah!9Xyz`y;|CG5&W`c+iDE`woR&^bMm z^U5C7Oq+yq4)kp{>VuAaV{Es);=|f&(I#`-ixn*jHsSowkv!OT|s z0#z&HyNik%K%Ji9NAvLQG>+~k92`8(q-2AdPm`FYku5)d^dM{ErrD{Wz#gD5r>Q_i8a>q+hp&PtRR!fm-3BxwZW0rjwd}nn zMW($*OP?*}g1w93@<7&UcX4@4m%<*Z1zBc76G*TUUL5-*WkKb!3uKRLlH*5u0w$D3$YR;v)+< zse}>3uN=xk@>_v^Z;3^Z~+QP!9Y3cnxFZYF6$=dsmdnPX%25zFXA-5Ks*M8#DGrsde2+Vv)jGMFSdYX zjTsxmi=f9{)XHU|5zlY^ff4THLiiv`$~c9{pVMNVka^jNbA->RgmRy_?$fxwCcSWu zw3MOm!LlmPur!PZ*Mnt_7dhnRhc)x&h7iKu-9jCYZebY~K%3@+ajaN81FKwobQ`I3 z3eVPtFruL6;l$$mYdCBKsyl}QlfZV$Mud>VCpJsK)X%iO5d}_P9Xjn4 zcLZY15=a2R_UHqbhs8EI)pske&R@I7+Z(Sg9BgCPG5)M$0 zarrVLqnd(D6lq^I85Z#IZ4y0UbF&QOVV49jJ2~iLH@`2q z3krD))CMJs^~@yd7fVJmXFm9=uw*tE9TNP?6iN#`?$UGt!c5$$r6$W7IG^zu0CCMH zO>7^cKdhPbV?5SVcJ|VhUksO4#yWf9fmH+P8N;EuKq1vKmjx?-7FVDdN5LU}qj!6YcVmf1g?OsvoOG!OQ}4)pdu)cn=5 z`Fwo(-!1_lj{r0;6nquf1p*REcQ&-9gFHBBK4<0C!FgQ&tLm!_)ksINCeX-d<;F`b zCK4Q@xsWRoUNpZ?0yViHqt5tfIsxKwcS7~C*{8UomM+)2n5p{E{LhoBBUxvp)XvlS z?OQkc9v;~2V+eimdA~e5`#8*0amFDe8&e&b<(V6?b7o_6y5G7OSSF5Hg886}GAGN$ z6Ur-$40PDHE)M{KKNu=zA3-oZ z-ry}65i!}zrIxLy0gJHg+4IH$rKWnT?ObC2>3L`$RMBQ-JfTH?_1B*z&LatRYsMXg z0adfbVDr?jWw$fyBtjN}SkQ^QJ|F_(;C}cMbPlrRPbr z539PbsNqM8cT!ASa9fT~r0Ax+W71TT5r&{kc+7a1DwD*nUL<6C;GXh)EYV7*ado+` zF2rx;t1Phh;pn~fxa;5EcIt@yj$F|JZsUfbE5{Oxg?C7d0mT~1rgN0ucBqg9F5Eu- z!21pYSHIxikL5YQZ z-NY>$to^WnMdsMU{$9;2q`3DJ!dzy?1cj*>IlYfq?+wWK3K6yl9T`Y`)5I>(V8xYkFZp<~I zFdqvSuKlsQpWc$#)Kh)u;j)x>v*~pcT3_;5+x+%IoZL;PB98`tv&yS>`rPF~^NPl} z#jU+Sz40h<_}g6=p%}wP>W9Wz?x-keD7etL!~)JYx$EmEp&8hQ+cQ$eroVAOiMp)> z%Y{2+o`KuS%ylL35y^nA$Usnzk${yH4p7K203-N*4tFKDqPpGzEtDy<)swKqfUwft7tj1HIrv!wxz#_q@|dWXRi*9A z!f=g5ve(0sigDRJLi4f|D>BHQTSIIahWOJ!0&QYF0Lb{6KjvIon$98x4V{eBYCpMO zu^#g{HS(gnhrIO` zrf5MoF#)w5o<9pIPSp975)r6LB%|${JpeIT=e7fQ=I>B`ObzF1N7a;%rTE#WzK8^0 zBqs1uF=h&*aT)i(>xN?n(Qw{;`n6%|H@yrHLWt=6ScKtI0lRtF42%iff7h!^Lv*U9 zL>DoZ%neGNbF}hM3i=YA8V@4~aYBE1@^201vD!v)z8DA<8L=-=z1CL#A+Dlr=@o*3 z{fUmlOyK92O5Xuy(=$qrYfm<4&vzrM#JAgJTkk>}N+!L=>ytU&g= zN%m`HIB5Wok?mdJAU4)-;VzZ8sCE^!Mj2&dfbNq9+0Fvz{a%66pZ6?Sgr~>HZXz*L z5;8El8+TTO|1=d5nReYlWunRXSvtA5Pbs}@U^(ICr?l@fKUQmJ+!6Q^i1P zqBMH~@fp;sC)6TwC*uq09@xv{wR^^{Uta(0s*cXAU;#jj5S30vf2bGj^A}??* zeGig3q$lWCEUGR7Vw_qd6PA2g+UU^HOxf>{C5LAw6;Q&TBNz@Cfx_u8A_elG(ut!_ zTs!sZZ+yRdsec<7A{CvnuN?%mfds#9JC&&#&umIKxb8oY#~ma&T)yPkoPK%Smi`89 zF8n#J_Z2j?fKf#B^8*!MYOA*-RyLHw&HpWuLK9`(6c@RVhe?VYkIv!w#jIXtW~BW_ zTal!&uF+)I@dC&BW7~AloNRcL4tWl4f_ou>Yi-iF;XBrTVH4xZZnKCx&xCg0tt4&z ziiu}U<%mN>5N|xfAsFDvDP_sRdnYw1(pFiO9FN_b5?ahNEawgS%AiGJPg_g2ed6SY8sxM0}HZ$$(C#HzT)!2}J}_J0iGVp)8+AW;QY- z3|v%Vwd>P_8|0~gA9cmreHs9p&x52J@=bl7pF%4#14C02lIS?nr)R1^lj7miwN-@a z1gQr@#q^NoIb2vrH(8#sw6P9v*3t>aCN!Re4ixQvNIjpzt-UKs_33+{j@L#K5Gs;N zSVH|hTR4%J{+moRVo3+&t$Wj-ccFFN)qU-#;iz5pq%iH+;XOlz&!iMd3=78pGv(Un z-J$Ct+2;g%k&f>4+>2@>i7zPf0hayhER5Pd1qTXPeEqe+Bw9hh=Q0o0R{H~+2c>mn z4<%~F)4|*4;qMw)tt9aORy)jdT>yX>DP(Y@3+i?#_ASP82*idzK zJ+&MFe{g})5{?$qeh@&EU)^%r`W898WLSso z^EN!CU$UAM3-_D?5&DSdiE>osafoVs&cFC3p2}mv(e(mjU0`y5cnH%J!vXnQ_cF^9 zKyD?%%J}|*ZKJaf2k>Of2-|;0W=KQg(6#M~ZDDa`TC%XH4fWp>jX~u2eP90zqw11n1Bq3w>hYCMOd*LQd*^gt7rD(k@ z*g*HUYiH$6r|{_qyWRUrvnRQgqO+cAH~?Pw%H`V`z*(e%Ka+e=>V<2rfiW{ENL*8=fZuw*)hU#qvHoXUl zFPY-Rp=?LBIREU^cRo}>W4HSAp~7RSfnVI0&sOdlpJro$5hDPZOFc$OMf)N-xKj6~ z;(Ecm+ZUMtIdl#P6Zj@d&aSSMDhd*=25()$z`h8+$%6loa`T3eNvl)!o?vtaWpMkF z%}q1z#UTAYjoGwX3NH|ybxSCZr$Sv+rS|O8Rp|2Q3G1zKNSh;D;VLK)Rakz{=CC=y z<#h%bnA!5+ZX9zn5@#>s3LiLeoDw2$fOncl7d8M56PR5yNhs?U+M0)jd@+;K3|2Bi z*8Sx$r<+{GbTguzkwNENB)VhKhDfDhO=6>RcLLqgkiT$-tpLpdNxh=vH&}=*d@90a z%tHS;&BT-t4?Wr}Y-;~+B2Q*dt9D0^HNOKIv#VC{-#@Pjz>=u*J&g>`c<`;}KlPtV zVDrYQYSsGH*&VsK2Ps4bVvpI>{X3jkU(w$uFjWi|ZYiJvn*bSiw=AAph{?h8fpt=*y#m z&Z53@fuThGrve2xv9^miIVv%@UXrK-Na>WFp$pfr-K4trRaNJx2wIV($Vm>~V-FXh z2udvvzx}WxsLD#N)w79EBCw_4;_-PEv#7IJv1V<#57Gd0Rx;duAt17TCw=%gf&m?( zD_Fh$E~h+93o$%Za~kBTw|J)h949+&lnAt4RSC1cV$d73B( zu2Tf#N-paDsKz6MGG-I66#?mnM|&%B;#p2m1wMbpZf4L^RCi9kdU zwBLf*o%!9|yIbC8O^9S9d-0i_%{niWDdq6<@P|ox?@Q;`;rq;cCjobO4eb5?xYul+ zhOd6eZ#p7_Jvu?eCDX2WN_8p*5WYm91bKdD9t9%PbEQU@&F^e29 z{XuHEV;3bh8l?b1^V$4T%jPH=-M%Y#rO!>3Or**MQsvlJ;?+soZuV75bMAC=y}sC+ zP)vKl4lf)XvZg7&Z-)G6y)Dw?2g0Vnc?MH99gNgGFU+S!F^UB>I=3jMHF2ONaZ?J; z;rHmg_anb9xZ{ejF|Qgcq8cNmF*$1zK(vn0Tm75CidtEXOalRxX*T@=UGr9u`DxO3 zTtZ9YgbFS1?2~EXYkwkCg8#6vm%iL)#T#Bt?rrc|VT zL&VO$y}c~Y&V+!_?v&=fGW4A$s;OSfc%BYN`S6kMed(DbG^t-C%fTTY6K^ z`lxmP+SMp>5f1<7h5O0GzJ#(+Qc?Z2PYr2`C#Kmh2==aTo)>sd)Ws)S4aGG#rNpAB zlV_{|pjR|1FY+P-8l^qja5IBavwnr7)0PesgK7hs2xHy;PbqKy!xg&8vSJ=hpmPB4 zr{OaoPbE8r@p%qw4%XDk2MOfS{CW8el<-g?tNInGod|_>>P_FsaDB-g2W6#q&yu-e z^fJ{x-P`_ctmTFBrHmjC?GY5uqR12dK|fwjZ>9$VfnN}F&qZQOYO5yT2%s{Q7{$E6 z6R|6Ji(dn-JI!@0f!8u7rc8`)I_4=itc=IOrSik;A0YSMz z3Vq)^h3Cb81nnqY^r75&?&0+$lDF1);?eK?qtiU0pY}DUJb8!WfjkqJ6Mul~j|Bz6 z8-CTY(a|@)`iy{v16@H-=ha5@ln@B!H1;Rq`22gcJ1+D@MrE3U&a zw*@h^01~pjO#bl_TCQSsX-~%Ka`2wMMel<=q*B>Oy-_V`#za` ztr#opLFt#0CG@Maf8jav0dor^QO9$<3&0He6sCTIfV=bcjcxUviCOaOTP+~Fma=!i zZ{Ot$rfPGQy2r>Mg@a8jBP%bkE&1dAEr4p@0W^}(kX#5+3UCrEuRu)nfZbGP7uY<9 zM>zSAS%y1MLPU0a?4V}HJrxFUKtK$KCrMfx9B+({UPTO-0)$RAZFulBx3R|0!<1jJ zHEZvG!%^@T%2;YKwCIulpC>L781M>X1S6sKmv4)YufKIfm@H7L{99n}m22h!Gf&<6 zbTMCulD^CqehIJiS})zNV+5>}Rjq+ydf(FMnt%-kSVmX;8sBEAb1jFo%-PqJsS@TN zL<>yF%n}3$SR-}RZB7d5(Fx`+N87qSB}r-P`$=R}IaZmXWdzV`)Irli#fOC(1owe@=( zO_H_tKHU%fM!WQ~I~8u^qJi)1&X&z-Cmdm?s#z$J53r`e1_goFpi1V2YyO;Cjk=`gx)n;3N+0`4gT_uIb#qL0(|Mb$51Jkn5K( z*%%r6_HiImK}LYbmls=wMm($9p6bu0P%$1;w)7_~&oO7gSVv)e)s=X9`Y~q8^awv? z8riSef3Ci8zw)Oyaq&s)a|$9vuRA_fncn(!is!ko@b{Kh+9YT(1}yXZjyCK}24BD5Ru6a!>hGl5J=@SC0x8j=<8_%JDY z>LQH{EBP+MTe$}eh`J(T;!I4&x}NcL4-sl}^^htI%XxQpK8%sT#MQ8xS&J0J#~YvIKF z>DH^a*_;p{^~PM(xoA&&wmO;Of^cS<`t{s9)E0e`|leyVQQhI`SAWLUE;O8^$vVi=%K32iXYB zj|6Rlcqh-J;q7|oOEi=uZZK0(6EtqCdr_8I{u5}6U-UkP+TgNV58lab zVkp;%;i));N6QWH^eoQJC)0^E?a4t*-JP>6KZ=0BW3xP|l3{|+a zv7bDWWb^JOB7BftMR-LYA|?*b*#`l?5NRgQT4BVyL>!RVBG|I7DHDP z7>_irZbJVo3{Y$2jM>c&y|dwc25_q+#7O$ryYT%p*AdvoPP{XJ+O8LtA$9-UV7!O- z2P8CsSNz=BP2W3%P0?*1rmJUlWy9BTw>IJRJXN@xH{Lh8?6Q#Q2OIv?N>(cmRt#^? zyy}T#JS7c!cD?2nugYF+@l;vuJ!8#H!7DJdpm5dNRT15dim#U#h@m7dhi9~N47CHs zI=KgE;r|+4Rs<@&$S$PPohLTBOopdiUq{ok2{ajIVICZ0B*k1!6sG~KL$t{(XtD-p zgEIrPJ1Z(2KJ>)Rz6);YIl?}d(nriWjj7g6yNzf&i={L990=__)z{E>B2E<~8!$gNv*+yqG z;Z+7=J6^~n{U(NATgJ-x{@rq)V{UC5ugc|0-73>~QZ4vUWQv**e0U|u;Ix3hRQj!; zawCu44kO|Dt$rK;^5JPq3oDT(qVb+;DD(H}l#6%Kytn{%>3+w*n#7@oot;cML6NEp zSP6oIcmIW}xP_P%45h043YF^6mG_qF|gkeAda(09ZaD(wpmjhsqgQ0wx-@Zkt$6>h#{a4Sw zNh8~QY09BYCNSFe@Eq;_v=IBw5otyKeI=F{2kTbZb{)Jks0}_;6$R*l=W#&@V6WuU zF|wp=&OTqMqy?R4AZFSE*96e5oU8&d!(6maygr=P@-R#UFK*C1(M_uw5*J#bpv3;# zlThdeEfg`vrLpOhC=<4Y9S^V8G>?7+oByiO85}5^EZ)g;_)uO|^Z|_p^wmM<8SqLa z7=J@#S|Z)oiRy8^CkVSR`x9M91itmkVgtLuOT86FSS4`-3Qj3z>WJFpl(6&7ahB4v zs51$dYos)(yr6@g?I#yZX;I7mMg1aA-D8yk%4HMokdLCZ@;UJ$?)ON}Ou{1R*24*^ zrA8pieF!s``x6KXq0x~7@=A}$NvX6y{p}e_(2cYVXh0pE$moOoMkj9Q_)ne)258a0 zPp@SEJQ9X0;X4nE&_>6iE{y}9#63iF%^JW_v$fc%U1_U!f%L?pEP@znS_B8OzumwR z#Kaff+q}qwmssc%2rRqEdh}OVk)Z@;{+m;`${z1V z3Hx`qG+tU&7{!eopXJ1&{v*?Wdeg!zugef-Kd_{B_Qor)Tr!~O&QI1|a}#fHaK7^O zn;xHED-cWqu-i9JANc}};TD-S|Ln|LI69eS0xm0vL7qu~(;L3Z*di1+v0rOt?$|x{ z|I@Vzo6U-XT`#a>IryBuqv!HOv(DFtoFtgdai9dI#J}mAx|C9Q6XXaQ$lb0%v6T3? zDE+5NT8VFTnqa0gZJ7NWYPzt%`G>96%;azL&d!r>t!t@lbP&M#=93LKIf@0w5}{6- z6C2T>*Bc|jATdA%>Le<5h7|yho|V`=P!;V~BsqC?kw)n;3sV~r9@onYucE_j!!+wx z7st{qTfJkJlRJZhS!X^|iyO#2Ztgs@4`P=b0PqK3#$X&><04#l{dg6vDrtTngx!pu zs+s(0$ms^7XG5v_KW;P7k;f*A^1GwL#>J`xqxgcDi@KQ*tL?ZV%=9^9UClKc&Zn6B z4Q?xdn3POk<$M=2sf*uKaPgS6vKU?w=UB^YCH;q{Druo}?$NY#6BecFD@)PR{ zJ+}CfWIv$L1z7nPaLqDo=tS_2uOD>$s~iL7Aw3+F<^}pRG}W-Y19jxeD$O6btbOB0 z!T8%W>mk{@;D;qYdE{Q~$}lJ->qQ4pi{{)HH0UAS6X`7XT+kY^n?wwA~yI@hcs8ERPhg z;JSJlr(`meUb;58*v2fM0uCd)FM1{y`V7bnAFI0dO|S9`D}*>ZnXV6XiCmaeHncV5 zbrez@B*H8-dzSE|Gow$isT6OzKl z9}?+iM~~2I_*n!Futl_=v5nrwdY=;k^PMVk>jrZ;iAMdV3+i^Ku#23xix9JAiNaU+5jrj+OBC&NtP1-s^Z~aM7#|7F76DcyU~YAM+5dJ-FjO2I`mb zd8$O$Eu_AR&y12&f4noT_qiR`8BY0i>1?kndKjmS)uw<8zZSfGK0lE_7l&dznKMOC zz7jk8rC^}0sE%lq`jD1_-J{Yrr&22(JO5FJ0pd2+Y7cnVGNI_?7pekwz&W$h60$HSOk^ zB-+lCC+28o%v~VB@)U@pj@wra4aDaBuI0u4v8o8VA%3R|wds%HempPUgCnfi9-ckv&mS>e4a3c|fE3va+pgIE zcj0UHt2=)uK?xl0Z2@+dASfymIJT4z!Lf5Rx?-q+8zdB!H@T@NGnbIRU4t&D;M-?Z zZjmpJrg1~i5#M5nLM%5Br<)fwbM+Q_C-%T%e(1Iz!h{dQUEdd5`$-_&q9ShLMkK?c zyOXrhC3znEnvF%-+|T*rv-x&cD z&%3GW-U)Tw`-tPQgwGU9?{&Qv;8GC&r57!M8yQLAwq@be{6y@cUDU};7%%q&Nz<8V zQET?`@tYxUM_qsvRZ}E~=Jwnp=k^Xg2Eq-dcfWe&H&tC%@0!pjm>yo_jL(t{e`B#w3;`bYpFRw=)RgQ6 zU7iQIT6|kpU>p`)iOKOgpS%|fBsMBM13jZ&e_aP37F@mEbDB8o*BSJVJhYM=D`qVs zBGktnhw3Z9=aOnzZ9-^wS!s7K(eC;mPu^#un@{KceRV*5p@Dm=r3|e@242&G;!0l9 ztDqiPQqlCbB!qgPgHf2nG`tpy$#?+Ppq&1VSlnAfIt`6~^0<9p)KaI$xJMNF19+g*4 zI{x>D@v;uT=TU88*2QyZyj0RC-mZECq*MZS(~ef1x}TdsVSqxg=NM>wUrR>r)(Q*H z-%Pq^aWoNhntkCwDjeAJTB$HRDqx_WXU3J5FaBQDcOnN%b{Q%OkYL~<0=P&k@Ypi_ z8c0iV1WRShqzrW}r3Rjw>F!sf13wo1&e}MM;|9wu*Aihsk862Tn=!3=5}`;gD8@=? zN>xxnRQ}T+H0bgjI!CVx9C{x1#q8~2UbJTZdYy?g_B$<|G`QQ!9a1zDD6Iv|GPq%y z{76hO&tK@plg`+ybg32Zmz|>40#1)Lnfj1O&uJ|9L^w0rp>xc~PIqd#_bOp#%u^ z3*cMA7sr6>3ZPvKs6b3ji*BPc6H%;zyWCitYP0d`z=rKbCp#Sd{1Wm*1Qp`3a2YSN zXG&`Pgo3hO6T~=$pYLEZ06ehE0?+FkE9;o(42;@wz4$A@-Tw@AGe z`fgZIP^3=WcT1)1`D7Y*dt;WaN16qpj|NVAmG0psA?DmhS^kMe4D3?8732Vw0o1)SG2EeM!V&*S|~^?6jHPv@KWUQ zjSdVcU5a!Of)11w^F11Va04_$AoevU|B8!4iG3Mj>G!4n{tgf*1v!5=u{Z7Rhz4xb z=hN8O-DpKcsO0G2iQlw8A!SF%&$;Uu*Zwo~vXjs+m`FMKr`D|G=0;bBdC@HgBUC4& zPv;0H9Zu*e*^Pgwib~r#{Anm$=t1^@nMDA9(T=)j&*B}N>Z%HSLC;JHh2 zPOW{ZYJ|V;v-Tb=j#@2p#4|p_2F0aZ3l6+xaB!o9l?%7=J6?UAPDwGIOfrb}o8!Nt zK++zJLoZG6q1Dur)~y?F&W*bBf#|8nFVqw6y^;CI-swUPR)UJL2y@|H@Zf;Z2*6r{ zjai=h&Dinwmyvq+ZPXghwKJE=b-90Kw+_6;kG&HC3haFHsB)gir_JXT$zsVe`jEu# z|C*zcD7|(WA$5eD-T9QltHH=|;a8H)O^gp`=0S4>a3Rk>fYw$Qeaz5n!oxI?;xKf} zQ-|xdZh#6oMR`S(%3_N7l#EO5rq8m|O9ATLJhpqV;161> zfDTRy0E(t=O9FD8Mp-Z#m{~Dnj;0@QV9Yvwx|F~pBqmVAJ-W3pRzh3DfSDVv@1rS+?tIAk}_ReN?0JqFy3mZwrq)b#U3OzUFStDB^1fL#UbvYII(%1JAW?y zQ8k+=nC*!BQ5LD*48PY2;7h9pls(+22a9-#7pIg&Y2jDdA)-9Q(^8*aNhwBCgzhIK zI&Mwa-Rkpdi-ZH=KSPe~ebd$d8*s}{vZ6mlg_J^zT6%tw&VvePzL!?x-{i6bR?zP| z3r|!}X@5p2##d$4TQ=%%y=nH%o@R_;s(SPk;&C3Vos`3(1m2wMVxY4t1_#XUF5hp? zZhgV&aPCUWZmQDx%dFWCU5GFL7C@5>A$V5E>t+c}XW$)6JN!j`Nveth1s&1$EyaHuz7G{rhbk9EX{ffYdi3~QpOqN|9 zZ@k*#Pv3|EMMlm!(A zQZ^VelWVXcf|x)hfSIZL6GDv8x9=3N9_PlFJ-@8m$V%ed0LsAH7rkW?K94%CGa2t* za^vw3#&%Qt3o;_b-a(1{w^~E7-iaIt^{+;N&RRf(11mTlXSwRAAM)<12Ei}fLG5c` z#ss$$uj#t;;@Pu++v+WQ&`mfZ2gCXX#$I^F_j^Q%MbY{h9ijr?=(qhCp>h$r=-g&w zUKFq+yfEb0+5--{*W~Qzs)kd*X~h3S1vfPKg1TD?mj&Stv1!c0d9FcLCejF_QyQpO z@ysGXg4doyOe{*6MdFfl9YkzrqV^+703&)<+l__()-);!(vJprf6mUPq>R80vZZk^ zT;pL0b@x$!%N)youZHO#4R2YDn=Csrp+mrJJ%5Du=bq$0#Xy8oH`ByL*vNx@k0wA7 zk0>xm5%WK?$~;G#QP;%m(SOOCsAS6;6&jICi-+;(?XymbGAI=-s5v0{!Df<5p#>e^9h zllG?FG|9Yq)k=y03~!l5v6uogr6E%{h`v^1ZFI-43#EBLKc>E8^@TDEbPM(o$hNVk zq`hzQ!C3+9Yu13~`q+|D7^@7f`_UT@Mj!bcA|FLrWK}2^(VTd0PrN_(%3X=vyul8M zv2~~ZnfjsKi*PF!_wy3RxPpf7qj+&hgQHX?%=@nBvjW01e!TAl0ayxdiys%cH`D^0 zD-h;<^oAIA4y3zg-NOX`z-+*5RqHK*{UU~QdWxx*$K5y@j$L2i%pTyLyRfZ)aJkA$ zD{o-4?=UU$AvrEO8E{uE^euGD5kFnVo(2*dlGWXBW@zRA!co>S1({AomGdEAAUR!q zi0y;?c^K%;Lnd0FxE3Jh+KE8NvBsrH@qiSoiu+X5a7YatvY1W4M|Sr$2w#L*xe55; zo*})^2c-d9L38f0mi`Qh4JuNbJaTb#e>Wl6Q>?|>De;Y3|5171K2pWo^&zm5JOsdm zD3FPx<;6KDIys567drJl4(nW1(lgv=@tFZI%vWr7F9W>pb7(gSY}mQeaz!KPNMajj zebv4#&fdx@sr8%pME97KNVl8vfTlzGo z`<_gzb{qzqi*2TIW1hdJp)h)a+{qt0)pCEjhC;Z$x3i&HvAwA#X{Ek@BRTrxy&*qt5up6G)XOe+2ezyK;42tU z&VZmb898!+9l`KBe;c#0!$4cRn$NP4GtV*2g*Kg{!dEvopkl&mV!*3X?TZKXBgV3E zG;;qB7^2{-Ye$Do&+^cmS!tDS!Hc)P3|ep45$vE(^GyAj+9|eb_83bwIY3uRv+42me{D=ra~)oPa-H&(ASP_BjvG{Ia|HoQ#3u~Q zPy*pZltvIS7ZMPt4M&=f|Ig%I$CW2-yVSF3W*d#ab_&V;r%3N>43xlDXhL(Lx+MLq z8Lv2!Pv^g2CvN3R^5Z~s8X<%(^8#eky0TL4yVwOKX#8e&!F-~bgr7NLj-wYa4XeD($hWGFm95~J?|l`SLP{jLFR}0E{YRt3?W*O&kGY*Yr@ya;UAP5c zlnZ#|80Z!xFOcotD2H#0NEx5SF99H^*>qoK`2xo0y9_;|xnRC_k)@ef zLL6?S?Eo1cd8g316fwcj^(Uhvo;t5pUFP0dUlIYQ@Wh+SiVo>$ItZ{ig=S0OPLH z5xsCqP#r>u6U+VZoKdKirR#S{&lduRp*-j~*_^f_2UhkQ9WIUvmw9Ih=~R_UarVNRg7PY6A}^ zfSwDMkDPki3B!vnI)@wb9j0>8t7)hZXs-$$oZpuQlo&oppMi-r@aIdncTN6ZzsGk< z5ey(d-&9kjG>{>l&!_k`C>1cBI`t<)5YfS)u>%E{`ooTH5_odR*6yoX=d`F|byjgm zP|uT~m=F*Rmg=D3^TM=<6=jm+o_62-cJzjQnCp|r#Bc)wgmJ{scDdoTnBkx2OmcS& zcIH3_ULxX31LgVDc^O;!T4s@ z1fQotXyA<~q(NY%)G_I9`+@!VUwCYC^Cwq&SH(JaTPE}?5cLOByvGLE}-oH>vU5M*FNZ@zJ0Xbqu;H1J*!z4Q+0Ba=+xqeD}Ihn*R{e%}K z=I+#M5*mUY=p!6JbRbR34RW=NmCuZlw zdihKF4xw-uB}y&P7(J7IF_L0$w7HIOt1pR}UK@|xH8~)WfN((PG)Ul5RPK?GbyC;< zmN>XO3v#_elqykY4a%%CPRaBn4fkj~FNFt5(ixfHTlVS8?k!Iu+0>zd8-Ja3rS*tLE zO)ImBRM~y_84Qe*JJQ}aIJ=6?^NxYv0O6*ep&6wELGbhIFDA9CS^&B9!Gy_*NKj8w z*|!l8pd;wQ(rXgo8*ZAO?v(ua0#3YpRW)^x(N7h5zsGK@2D+lAXLnasy^VO_#wKX} zQwkB{UjS5Hq(>GQo*weN{khyB?#hkufC)``3y9sS23s|VjTqlUrc|ZFOCGEL%cxNB zw0f5uK=PxOB$@!DSNq&#bHKa0#Codx;M+EH&bN;sY~WIJ6DihnDMko zh-*YL_Y(=Y7}}Y+vT`WVu#jb!k7R}4cSsNz&B-O3GI6PDIcKBl-wam2jEV}z)@vO| z@a?@}WzM|U*7D+?^%HWRsy)ok0a&j!0*HQ~VVa8fu?u2w_az_(Huc6r0&PRHI-5F~ z0DmpUgYHTMW_Pz0N&5Q-O@YHC86e~Jd00Q1+u;^J$?4c^wbg_?$o&s-nFcWZ)>L6$ zLCLycs}F221S@%Ave-|dnPxmMP-yqx-;ZhLhc~H|_f~)r7pGT3l-J}Lh=0nj8?n?#M!ve zBcVkro(7~Ge@CqeY0|Mp&G@gYETidkoW?rTcT~pb>UrOO+6w|8V8E%7;moHX-}(T^ zH2o3r6j%&DJ^KKrs`obh@qeQaWUHSQ@e8>1hcq@Tg9zD(lObz;>gF7rMdOehU<-63I5no+$hy5Gt?3qLqg^C@J3nweQ!H-ype`3_sv55!X&`V~;2NO>#M)EB z^-TWrVI4|`t6#!O_N)!^!qnSuaEzBt>OYzIGPzEg1lv&gDjFF{AwcJPThYJ|< z77M=)pP(i^)RQqN&X>?gnLDm(_8M7O^e-e{j6DuDYhwvXpbG+)f+D*9z`Vnf2IVeX z_KTs6buxs0@&x#!u*+$;dQ}tb(cYeBsgm6fa=T4)&D~Q^GW03tw`K1;xFnk3Ick;J z;h<*va;^!Zf#M4&YHF|sSWl9!SUs;Gy5o~ioJ5h)6ueA#fyT#Ks16u=(`oUXKCSha z+c?ssy00f!u|BU6!BM$yVxVuanJu$v=`qm$M9fAF^O}0ZPoN|_$0YF9ySDXcG+)hX zvu0HRRZa9I%)rfO0$}{b8g1M*o#s!%Gsx@VkmJ(Jf0h*N9w?4Ju-Ug`LlyFfAfHx8 z%P}xAqh0>w&3#AYA<+;Ri+bhBnZx2WyCKRs^=s zd=%PD2X{D=ZgU~`OrD{%U1`sJ1`iIHq&0x|l@G@p0ms@qLfHy8AKXN@QFF9u<;6#> zKbZj3fu+hDjyg*uq(Pj%C(b$n;@+|sjFfO14qLriRHVoJM1j4kd>bDf`jHVi1VmHS z*O-XB;`LLf%xbN8pWppTcVYLf+Jz{I94iP}I^q3+Iz-yYL4f zPLobT=BQ5uK?xd_z|)ojPV~E5*d0oY2?cYP*yo5eK5Y)4=>8qBJWIn#BnlUc|LuYA zCw;iW`gKAMRq`kM&{$JO}U?Wo2^ttnmi%C3q} zMdezTedL(393<;;!evn3C8QXd>z_P+tU!#pALPUpbU1&w>%c~6%^k=39Zh3zW*U>(1JN3nfP(2DyMA|Mk8Ds{b>i>iZD=qhGwa@VDH@FJ zQsw8lva_u~1i>4%pC|jwkPMi$pPsN1WBxHCmY!qR+lhE?q*faoKGT4{pk z&4f&~A-h2NK91ZY(`A6x0{}XMz69W_N+6NyZuf%WW5BH413b=0Ed6V5(rr_n9<|3n2HfB#O6)~N?2hYly zZ7elYPS<+~agI-u2qUwK==j^S_jR24Brp@?0}>E5Yha1(I#i(K+&?F-PF~`w2;g6) zZTB2_P&z8Yll=$T0gZrQW-eUa(KG_4t|WpgX(B51Bk&R>8*hyPJ%A^B`4oe7W3V0Se`@Z@JNS=l`EyUovpa3&ABgmcnvLosGM_Rf~ujy`Wd zxwKRcO|oy!WZ{UKD?S?+C4bHDtNCgmLf5vg&;5knaBfac>Q2{uz@R~lT1^8kVzAfx zqbpD3GekIUf!w&+rR2!+J~AmoXq1m@irPm0Wn908|6OiAB9VTbj5kVSxsS6TX(9{R zL=}cxi(~IaK@PRV|icQffC%W_HOr^l^h;xJ2poXmJ1? zX$nuvfE${^_2*0i9n2hdfsMD;BY;oKjc%n~?dqH9BD$1@oHJ(oi{~59{pTb zY(t1dJM!G}6R}dlKKwF2N=aA4{?9o%s_H(s{qF%C$ZnJOFNeJ?Ci}zbcYx|J;jCD) zRFH(4jjNRv;ip0xB2@4fP3j(}gLj-VDC^s&ESdke*XUE4YB$>jY6cu-&UR|J1zq?p z`Q>6*X)5}QlKXQT>6j)3v0LgB{jXB9YfNa$4dZj$&fs&=e{&x`2iXfQtcQ)q13HaZ zA)9JH4mtn#sK*c(aMNB;*zN}i*R@ybH?F1?KQal~eOOWwe42#Qq2wl)0f&|(ZM6wg z4wHdyDYuYGA2@PBxk5Q>ODu750-(EjV$bC#wAurf$E1_r7IpgUN=p;L`}I9IP=M{) z?@YF4YQ6>9Ut7rG{OTfMDul<7wowN(o}o=}7z+Zj2^RD|RbAUqVwmIIag)l?wPt_q zijDeCg$e($E)sD~tNLe!6Sj|@;$M)m|# z@177HyX6u86PCM9(`^1|&i-MZ&MY)b>6<16%7YKCN~}bo-lkSVO=zv~Ax|7{9b{!K_S@iaoLe zkr_nW+fdToK2%G1T<7Dg#D$=~h$Hesn4(up|l^ksv&Bfue zB691*Wv5wVA+~jvVE})|f53#iX_vamN`iaiQJdIx-uE~G*ex5-fMUanhp^mPzd`sh z1>Nx_b;_flnGVE(w%!>pt~>M)ib0++Gc9Sv_o$lfz(q!xd)2LnOkQG1 zrED*ADC`GOx~3A0dC|LklwuaE{5467NtAfF82L&j?5-&Z?s_-!^uEKc{%X@@uv}bI zh#W^;aj+8$p9KBzTPWDdpxvgSi@pj!&Mi^kFg$qvD6UZGOYQfe5u>$$>I ztj4yfEX8a>EwZd({gQ@|{`5kcd&CRNSUqM(mP_C)<=|vjs6_bY6B&|O1uZjmR|@|% z5xy8zI7v|_y32fXMppC}SnR;P=rg#85*V_n>`7u`eme-7Oc4t@yP&ffzl0}f;opjM zy85ja^|Nxs8y$)=oHY#{bb`B9##qgRH@Eos7u_cl&mO2keiF+86M1UJ(N{)0g@u54 zNq`uDuGQyNq{c^bg_31S#nNf%jRzcRUM+W4@9~`zgB3@@AG|=TJi80?`pYGF{<7|+ zF{pDRIQ&{d^tc?tJ@hY{B7r@YN*J|8*z@L3_p2MOmzfo(yLG_OGl>|-f5oe9`J!Zk z%a)k?;x_2em-pe{@=77$(?9k?mch+t3Oo$255^ZdM7FZ5j{! z%r4PnlqwNkuGwShI$Gl)Sk2Xv={)}3IY_5_&xl{EB%02~y#A?p!&$v&JDY}5I7x&T z8O@Hh#KU?QIw;1v+oeAdHoMZjb!kJB_bt>c#66t4`)vbs zvGwla#D+OipNL0tQ3H=H8gs;3!scqx=?Icr7J*!BT+y1cLHi2pBeNrFjwdt)af@l+d>eoL-B7IdB+ z0YB-v*6&bd0VHv=0lm)|f1Tca)2%;-k%tRx8jpOLAbdmNCX8kme6-GNakHZ6AR-H5 zCzb#%yH4+_WXlcbf?iKnM@f#oK7_Ps>ILga*VT%9ER^mO#}d}@lUZN7sU zP6(6UII|(uy3qr`iwg@UiRYRP*H`W*ajc=(C1AedA6-@h0Q}TCKXHE`0AsZ35$ODM~}@6}Df z-e`O%+CoxJ4IS8L4uNK$Gnpm!np8fC^=j?kav93a3aERv@ei6A@D{QKJf^nc5tMi$ z0uFmMr~^fbmiV|u_OFlIwSB6oTmiW(wQy7-4^%N6yxrfCb^ewak(m<(V9sl9{JJ0q zarLd6kE!HQ{%2dZT@jZV&6Shm^(tguT?M_75rjf z*5k6H5%2siq}Lgw`- z@pCc5vM)B=**Sv7ZfvXSWUI{c#3}4NV2c@d$MtF?;&Bx!wu(q{Ah{{ckL;otw z-j1ocqT9wtx8iUz5q?x6O_V^+WS_5udtUslf7GX_13BilWY^qMK3Ab4dH!$6%Z{>A z(Zh#`xtq)Y;uR( zE*$oKAfZpsr-X}41cr~|a>VyA4}Eo0u3i`{VLVmgcZL)+r*vP)`JWZV;3UK$9EC6a z(f^)02Sd2$PlX+1(gQ%EQ!kf+(r(+tacIlaMV0B%k4~T6zXk#$wT!7>swzGxAs3X; z^%TMSJQhFeZ`u4v+*wC-sB(!%C|i;V9^WuiuDxQVH`4i;z&z}qcv5EQ(e|; z2_kCC!19B%NMWJ`rR}?Cs3XqRkHwzv`f%;CzrtV+BQ@dQXEo!a#l>m!aurQyckeDJz+jLuFw}H>kGhePD%R8Zm%l#MXaFaWeNvE`KLe5%@clyb?PBI zl^ma5^h9(?Cy-OVPa$n)*liBK`_Xxrnd!!CbCb7Z&*AOdxC)qikQ9FWvlUnoYG0;Y z{~5lzoKpsEKQR2gS^r0v3su(2S^fz0WjtyF0=s(kV*XtKmKAvnJbS2${c_>~Ns5Ho z0N3V72WFdL0;D{4CBu1kTyi1Fmthv<*C~villQ1JIQVW`c zp1HknOiC}XS;U5YkLCM8{G83G=ZIrx!>oXdo0r0^>}Tds+H5A=LdxQZIxuFgdUI@W z(M&HTZ9HF*B9HSOZ6yEWsXTp0#oW2)EH#4^1N6IiVG_^%sd63K!^oyz4%aK&!I&M* zqJ7I5J0$}tn_cqD=yE;FkR~gtVunZ9g4@XUb39LtU}=%_kUPEQ#=KFO4jY@y1Uz3p zp>8Y$&Y76B89tT>1UDVUgjaPFWV1~p>iOE=aG16|#_=C7IT!OI_FE*->-SJ%+20C|{!}9$mL>QX zTzXeT>GqqVu3z_f^J~9w|DKZNzkdv{fS$;E*OP6X9&`!-n?bXClAAKakYL+y3w`K4 z-CKbUPxOJdm)RC>=*_W@v_BqxR~L>nNh5%ADRkeT5QP26Ub7yO zh);iLd9fmcn;`)W(4AE^SiY`E(QKxOUJTf{kkK0s1X$(Zc(Vog!2V<@=)XGoKgYM9 zUFHuS{JPX5>8jJ(fAi>$br=eLb8#_e9&p4}a?9B;iN2jJM3-^_P?^?PDtaKCgnE_$ z?R%%&K(_d=$*FPZm4m#`;6wNojr@*~b)Kdt~Ns}P8wg*HbeDji`2l4#+JksuA zq{EDSznqo-_IeV*Qv%k>#EGNPNUT2XAqfGd_{%<07am7*4Yix;OX&E_3($y7#vBc% zCet8Rc=5e)v9Z*RHpVE{!BGRp`4J7~%}G>j>;#-h#?`Bvtm7rs)d+(pL67FV!%RXx5@HsmpyOE;S5br* zklbqcy>l3|;*B@N#sE%oP_K z;YjTUB|8#Q0Ktyd%CFrq)v>y_BeLk7}O?GRp;y zNtsujeJh<><7oLd`{tE|9CgRHg*ys6|5?Wp|zYS{Al zhrC;0Ew}dT@^dOjN9gxj+2$yy>d$v% zr0PPZMWG>MNXu{ebllkkX$sw2=T5M6Dn(o*6&HA{K{e$EOV#*X>+oX>p&+AjBfY@{ zc%#BFecR4U1W-ehnea6WU_d%reoq4Z>0PbZ9b_)7nwEN@D~y)zj^a+z zZDda@T#%v@CWY$gn0cVsy$dZGed))@MW{q*ji!J1=0U=IEpsUU6YPD}EdyXaPRq4< z`J2V|1M4T1S7*k9BQB7z9(ECDA#LA`kxEBT{$Cj*Hl1t9KYYfA$F(1pEe=D8N=o{td=G?zzh zAz!f}SI*$3Re)BRl-<0ZbNW$Jy|;;>VtM1+FM-cBqxBbGzkJCYjVH6SE)jCv;N(|yNztt6dE^=3thQs#h+oTL>XpZ=* z2Gd3x$`t9{tGmJl&ZS-F6P=BmW^(8$|z`lhmAhw?+ z5++dp&~7MIqGk09=@^~e2+b3l z{8t5OByqoy6VjeL$N*RKZ9vaUPlf6uMQnO`?&Rc%z7*1lw;Dips3jy6n>7N_xJuu9 zgqXBzr26>DXW?z);ba?s#mr;YMwRfXMkjhUf0zWdA6_gaSf6&M zyexp&gf#HiT$Svl&m;Cx^;XpHkVjJnKtjD{{qOTo-j5XcBOcMFGKHfYZbC4(Wm+T3 z=(Bu@A<-?-7TuLl71og0ROZyXQPE3}uW9sug+x+u)2T>vOK*xh)s5{64n(Gt=exUw zx|WD}&Dkh(7ObJ*H&;I|&@yOn#wZS(XE%4KL!nvrHIwf+H8 z&J$;&I*<`irA1!YxZmrE#Y>2@_1Ki}Bjc`ez=He#6oG?;#~IrqiRzl?H3abU+a&8A;fU zLTg=&9e?Cqg}zq4I72*yj#sh&T%RWZ9cG$s?EYEj&xxa!IMW=TucSoR{i&t5_=*jc z4;G$y+ODOnuk@!hzn|i`sW_jzK{W9@VoU*Um*lKJ_p^V?FV46|)Uv3<-)wEGsN3Hx z!p!W2CevDmf2MvYK$0G~k9Iwx0rI?y$0C0MiuMf3^!eBTB0FKDWlEX;r#bQC94S1v zE?H`-#QISBPx&nhqxM^HH?jh&f4-3q(>O~D*j4R@^uLBtStMlQ2foGr5;R7J?wCX~ zc-6s?Jz-U50-H)&?+k+PaD-))c9?(=-ppo>onB@8EvgWYTEPWd?GDB*Iy zyh}?++xFIK>INy(7Yr%=S8QNgN)Q#X8b29+xPsj_H}!%x0n9(_XDk$+Ii6cbL)ASJLN+ zxHt6irG9Ze5A;S-@Ctrr=ad8Xe07og;}8MPTjTN$3C*}d4ZL;dpPT@_MtX4k*giN=q^5BX z1Zb?^CU4%;fg+>X0)CjK5McU^O@_)}J**&+7WV^Uw~q+%$rBHk-{#OF;tcqR;D6aD z&%GXX&}|cm_Rl?!oOMgrd_( zl<}9qpZ=6RPvkv=29CLuNJHceWH5HDoO*ZFIB%La{r7avf6Z4NuLU7VFnRSB=R&cq zbG5&kXyasK z%~lldTZz)|D5%3st9nFyqb;9MsVOc5t_*xO5<&U@RZ=%5o`^KY55g1s_#*m8<$YN0 z7i5K#O%pi~AnSQ0MFa6mhX@-+WDk%CH@QKDU>{1!C#sS=9^#O# zJzwEgD74l3ZDI0Q)190ZJP%v!idUAy`&+#~AM`w?j3kFX@V#^KoPW$aY#$jMMia*z zj(NecV*Smod9Hr^j^DmNgbiW#w{r1>0PE1q>>D-bzj2E}_^+j`tOaIQAB0d}3g012 zBgPe!7WO%TK9!EggZztL%OC&z#QW!^#MQU|LTe^f(%*07h!zg_fr|6>YZ5fxlI!Gy z!MwV{VVJR=5{Uc!LZ+E;(}smX6?clhW_h9{#>3VZLmUxiVFgP)$sM|r5GFRvNTK(Z zF=tFO?kCrAby!U-eR{?Oj8HuCoH~!bZ1iOTtG*XxRz0bd$+=H2K&}QdZd*<~Et(kPy zM$HM0WTOXjqXIrYT6t5)I^Em9?{nXA4KJv7CxZp#vdb~8hs@bTCYgmy8J zcDjD*T7Mr)N+5+VqLl|zSS zo+zwucyTEDv((fe3m&a@|2tEowxTL8bvC~9kM#1Eyq-_zE@{_*xZZTECpOLJa=+zb z=DOJ%G%A$rqgCqO=4H2R%~4{0^3C{O$=vL{{c6W$2n1gFLwrAYQ$C6tg_eHtO_-j~ zTJQv?wBMOT(_n6YLAH)mB`9{>X!qp0ZGtarD6N68=R(#iSy9poph$JL`<@k48JFMV zI^@5zsX{^Cq6L~{_6U8u?(ipkC zk3##)y9@Q8FpszqtADdC6&d?sKacch9c&w{izNh(tfXTZJ&0{A*pYP#dFIepVD4K8T>VkOL_y#rNA0P%b9KYC9&E zw3)NipHsr-fP-lO>E+FV9SN*MSUM;s*CEvZzrg-)hiw9%Hi7GBkOMysfJZO;@EebB zX^cS)Ey}!@{48KvLx}dozvXQX2X?h1iO0eU`LDW40=vdK z*-NG3bfFL8{sCF^-2Ce3 z1#Xlq;=4uflliYV6~d%jui^EfsBHfI!jY$^Z*Y?Bnl-IecS^%kARtG2cY26OjC8Y~ z=IkZ8OKan^!W)ZdQv;K9=iZ*wyBwTmAhnwXN-(}b9LsL&Q0oBS>JVlDZk4Y#qb+Oi zSkk|Z<`ZE|d96Q_q;Z|(&c;QjIM=tc*wA(@;Sy2a9ec0ANZIS{P)hk7(@o8n9`;xJ z)d@CF?V9+!xp}_cxu(y1JS0A(J=K}3|5`c-Z95UCjKqe(E?(sz3wET?Tg)`C$n%ay z43B_BavsnM)E*D78)3LzCnR}w3KdSEQKo;vsbG%ERw`GMz$ntfzo`hzy~=;?+U1hh zBx$|kUDjjq?VX3ympp@`jK7Na{ae3NrvxzFHRm??S95df@n2_(Z57}l6iWA;F!az< z#yTYFw-IUABQ1sR8!^-HJWj>i1y;#`tjd4uw+$2Rfl{ptZ5=dHOJBTsYeMu>+$#+J za3n`#_j9EHDtA!6(dr|j@Pdy!b}~pQ?5-MSuGce??8up=$p0QU9ok60wbfgF+yFEt zRQ31k14UdSqS=XuyJTjb<%+C9zcjG(kH_*nE8hx!dO*;VmD7$jZ<*qb^X zN~u~XuT_W9aD9QP%bS5Z!w$v<-v-==;fzjBEZ@A4yUzIWvV+C@4CD$|G$B?bM{Bu8 z>$zSOLb7GUtT=_b{eN9F1>HGY2TNMJpfBrVJiDi-!aDDXE1nVG zmU>&kWy9W9$LC-NbL-Aqx3gAv?aoj&t>#T0cI5Yn%su#La}VKhE|wweR>-Gzf$*~# z#`+)>sXo24CsrgP#(ZVM^xsged6(huW7B3TY_D&gQI*YmAU%3waDGDJT_l%R)bFY} z0~8+eO&X`1pBy`cautwh7lPgDiO${G@*HSaO_Bo1yJ1Q&4hz-5T-?K7J5+xp&UF<$ zAkoBd4^8eCj0NCU1U*vwt_^L*9vqH%TwtSkn2zCv z0>lP<^-2~Ig_3yk=r$n^tzxfY*z>}@c_BRPVcm#BiA@OKQvYLcJTI9X&E?t&4-znj zkn(c!+^w?qD}Jf9fnPj>jJ{n0`$yHZ$=JX*aAr;Uh;Z_H+Xo z@)vOstSw(o%&cc3({p{a21r6SFID{w2@Yn4$O9~U+d~y+lj^m|z~lzC zfg`khf%1^}OjbC)STqlw2=vLglFt5efpw-gl>~y`mMb4dR{sboEM(jA+GB3%z@W+9 zbjy_h_KzY6`-EtmhMt!7dFhnwqC3yc67BT*h@j!~7KP64Ha3mhNGWD^=D9C{1`BZ; zD3}|eo7_o9Zb&*tIj^bjptE$~g<_&K6xyvUSFDtLA5n52VOUZ+`ZW=s^nUcIVSBkXBQ^Yi|5U$Jfpk-p;~FR=kk`xy$K~dE1nT zzffQ9^~?%KIKAD+e1a)3**hBx^V6x14#PAQdNxjIi@Y^Gv7VYfVj;Ud!HM^hQ>&ua z>#wQ1q4FT3KkU^sOrn&KRY7y_vH4FuWl*JvxN<%VZ2{my>ZxZkuVwEtU+zj#d*bjI z7!!g*BrWwBPOQ^`f9Lb199j;D@2MIA_t4nqfR4_#jzdn)q3J^oO1i)XI%S?Bb#q=O zdQAv^G=qlgxlD?8?Ojno#c5JP>b$1rG2}~-MZ(!mw$@Iz?tY3V#GE zOVU*^?u2lP7#D^gc<>0r%2)7$_XF=yWTVG57m35RI>+Ex10FK!lIDPk)cZa52?F#g^k& zob9_8jDu=ad};v2i(MF-m>8Gf6Al`a0Dmpw8JbhaWd*5z>Q#3Ve$=nZUp64ajLiPo zsmh1Kol|;bacSR+J|DMPehDeCrzq2ez$N9z@naarRxyy+A2pN>DJQ&Z&}B#+q6QKp zrFiA1-|o<;W53L6TKN;L?0xRSX=hLJC zC1mpW4T}`owIYhNUVzk?WLI^f|46FZ<3O;BFRT#QWps_!4k~xyI~ASIyrV!+&SR;K zMXV%rE1jBzn)bFWHtCSpzt?p#0gG!W;{%3?>)q-KQ?iWT%@M}mEhVTGM`_o@K*o@)ykpxmC1+8MpAWdd2EC|eYM)Ej=)GrU*2W;^os`a zH|1+wgYu*LtUcyZ?^)j;>K^mX@FXv($~w zxW=o&9;j<&-lnwK5o_-kgyPqDe587){sO`!mqDl6#5y~eTio_FAeB{UTa^J5> z@%|M*cg?-n7g3#GvgpT7JFp+5#Q)zPYpQ|m@%Rb1e6^&ta)pH865MZDMUa$3C^^T{ zLx{IilvozezII84*+l zP-IF~2E)dw2;ps$@qI2#sBr%cAq&mD%Ny&dGoOQ9Cu^u&6frs~i?AR_I3$8Ro$-h3 z9bs!-{nI<_7G^er=jY{L91PSVXHR)PH^yl@?~=YAh=GQYlCdgV{1cU`v(Q_HYvIq} zAZmTPm$(@3Uz9O0f&)goNPn#NNIY15_UFa+>*UNBeMNn1Yq;NH_U-ZI5mUw!e^X=1eiezu;TnXA5XM!@X4p|8jYGw z8d&#CiM8sI36a=B#OjxGIlUhJmn4zhbpAF#Ec0^Deg^Kr(sx^U(z`y?fXOxQ)?4S@ z-Q|;(=R?4G7k!~^&N){(oX$zW;gA3H6xm~;RG#K~ou5XDcZD!@aZhiD~QyV5}rOrl9j~~uc>nWR2=o6ic z6NVDwnZShK&>y}AG>uZXq)t0@@|_*zBDuANfyBjoD~n(hQ1y02+3o%Qre{z z_4ub|vO^{)f`If9vx=ELNeOW{PMAV1l;nx3h+=~_X-z-a-LB4B`)pu})7FCZ)oS|6eZdv5wD%f|nr z9#mfstr3hoe0#Ws{Q)T<<>*SJ+-=4v@)!IDhzG-!EHcDDMwX(>&UoKuXLpzhpn|m% zs_W>=259*_@uLK|^Z@Rx={K4ek(CjM!_2z1P%-+uVMs1Uf{!Bp_?eu2K=~q|Ivi zR_G;7PxWe#oAnr;G3)@_Z>KTE+&b_EX=Ei8U8ng9zy(n+6mVQ&^*p@dsertfD+q=ape=^!_wg-Vh$S-*!8i$!aX@)J z!@8m;mb#5T8U>4pz$hC%o@1}?hyK{M`tzz=v6bBQ>nkHwh~#9iyJ*qU+<30lveJsv zj}GXGA3vz3U@f%i{29ci$Wrv@4I8OHJ~F~%q#`a(#Q)P%EuU!LE={0QSg;JjnDn;4 zj?ZJ^7`tDtt-E49m~2&I4F6_(a39d_2}fP0$LQG@x#rW5qH>lrheO_m z{!-Y}e=G?%zp024^oMeDpD*7-Y>|}zQL7}TboOD9cY89b!Ii!*ORXNN`qk&q8r*}8 zAR|c-r9HfP@#kAsfks2w6OpDBZ%^4;3b_E?VULA(5M2Ty5)y7LJW7K>4a~`-X9)SB z4->xn94I_TCB4_?Rhnh}n;m@DoQm(cOKrO5g^Ximebb0sSXrBcTDeC7k?pa!H-Ceq z4+65C3I{31y5n0oBi_4%~wvkjWsjN zuo4@?FC-Q-vi;m^u3~^Av9E4;M?c{jyY9s{ZhXuN<}Q;ecosHBcyB>UW>H2X{ZLd8VG^`XJdw-9P}#oMGvMi^4w zHK;#c*oYq2{0}ri;_}8&2*&O7qF-|Ts&_shTD9!KQ6LdOPD!ovd>OFB^x3MfB+90d z*uhyfM$ICM&DVIuBTiJ~{ zY59bSx<4A-M&=3=-&a!=To`Abf-y_`Gs#s=5Y%|nBn+qluy=hh%ozJp5I(#fFii0G zqpIDkXc@&MBt9_6ZY5(*`^Tuk(*hz`{X7$~T~u=Ui#T&*i_C4kaFT51$s^U8u{~H& z&yjS0@5N&?-eAIaEmzh?dz`5Ck6QP(M{wmEx?uJNb!+)b0)(zoZhF*M9zy{vnN(at zrTAjx!+9Q0=B<@E^#Q9lyj5=IZa>>rweS6LE#(s#PcuY6O|BHFO}b*$!}k`Cb>o<= z`KDIa@v%E%J?HM%@TH1?lKVphmav$_U#<`zo3p228#2W{euV<@rFMIVk9-(bAQp?K zS3N%6^`l}Ql6hfBz^Q-F*Wy^BPL=R)4BpO?5cw(IrmP~BuS;Rz6{6+zGHQBNb+lUB z)m+mec71;4)ca8ysogIV)cNuRI{}|rsZ^==Xo|@NEjt+9cg!r42GS7?oQ|97 zdaFgw!4d`eaoo|5ZBz<-twf7iJyIuS^mebIa@_w&WXJTO5({B%{qAEC9REOqwi5!z zJW9}!`r2UDCQ~FAs>-~y4e=>Ml|wuJmM3Tr@SnB?|%TDKw`h9_!-?cZQQpa zj3J0z3m@`Y02!a{3rPTyz@rB}9{@T84tH5ojlf$3N?0g#mekaJb;H~ocyk1JAWYCtl+f?s54 zK}e~9w42p=RivhZq;>o(j8Or=*t^!x{QcI?z(^MdBHO0+vC%&=p~NgwW_bC|O_v|s zL`R}-NqHY_Td$5u(a|dG_sHh)I$ShYDhvePja2aXEonCYrZHmm71MN1IzJ#ZQuF!r zt_(DY08+GBX^e})$1piL%ubGB4RKV9dO#Qzgi}f=WbAH8_s>J&!$U`3G-gwkqyQGKom<6N zX0WbQ6L2g0zEzB9?JQ|*8_D;8)3jrBY)49#t^-J?LI+6dNx=Ye5Ilsi3P@$7OT4ff zg+6|JylbaHorEN`6p{S>1_w7{RIl+RhT5*7$PmQ&su?LE5kT~C-i8qCV|qP&;Pja` zfZR96vaU6*b5O#^{WeFjXrbZ66dKk>vtUmM2O;Zce1z|=)lyY9Ozlmjq^5*?!?&tm z$f(ohyJxKL!H8GOJpNrsqPl+ZeH~xr_XuK%dHDDeoIc1g0OUpRvDdfp-0q930pum-;lg`((w#6zk5J@g5y8 z!OCv@zTMT!0bdz9ijE8hK&}FhDuDb7Kw&C=k%oVSFDPvKIJO{z{4YgcfBfViBY*&a zNOS(&k$DCdOleS$_d)7MKW+Lwa!Sq)04cm4864zZQ+iN2s^eM|KsZGOsv>rBq6Z2{ z?;F_JM)d+NMgk+Pk*{gDL7rDY!YR6(hmT@JPuAj@<7IR5U&O>BVPhmNGxLw&B6>IQ zWlaF#RH1%yvY!hGdAawa1u48QL{uSUCfCPqlvvU@BoLthk|0F%MR{R|loK98UZbE9 zb(hpaD@bU-7Jzg+jq33FcwXwsX}dUM*E)PC3?a&_J|$~7;TXlr(nBaCOyB{=2u4_7 zSQ**a)iPY!K(XUjAXO)PZ6+AyTY(U!%+SnFOo`!}9SK7xzhAs+$J8_V~za*Ky;ry9vn#QSWyK*oAEH7B<<|4gW#dc z7~DNk!0k~EnsmiQ@sjZ>P}J9{JW2+y@0hW!PVu8!bnGiPp>yg710c;cRYta2V_5(| zLOY)n+c3CFhohG{ zUmdD`kiPV8NMR6Pc``m>=bz7Q~)#d|GZz6F&TD@W{ng;Ha1)1gKu1)wjktb zUtDiR5$TJl-uLz7EO?t}UasDr_lWE>veyd{StaCLZs?P8kl^H-eIrrL7Iw~9UK+^D zRf`wKa8W8hUu{CiZunR~bHnn%4XpR$?G6C(KX;b?>@hLBnj~Cd@5gh;t~Q{c1`^{h z10e}8!odu?13nA@4zmY7h8^n~wZmRh+P4=#9=2QU5rDidY}D0{mjXzo_|Kd+iUD`R ziFpRVaIa-65$jqnPTx{O3V-slg{@#edqlF+IfgPPaKZYrOL+#6%j?nSc8Jv395-uyuXf(ZIgD zX&v;4j8D$YPYj%FHK${Px?SD_g@mlsmR+t4B+OVAfsyDBX(}W|*GLUQ+D+@vS$h?e z@kEW`SFEUNoW5%KU;t#S@VYP3!k^RUsAzClK1=GyP>J2;+RoF@3xN*=AQkwCN4-s2 zF9ndh*Ht`r-cNV1$(~=fZSLAE@1`a?iYs- zwW)ycD#(}VSIqbvRIf^3 zNYD0%v{SWOXll4WGssRxDvqj!r+m|&&K1IZd|`~W2J{>42$!6lq;$qVDzeh58^3e)DO!g zvN7<10puQyUzt6?u~&`Q4HC>6%EdK;=K~g;Ih?+pTReKU(^S5@r=wUKjo!~a3f^Br zp&jS{$lXch-z8?mw7(8OWCb+ZV^-Gz2sf^_seqU(Rf<<%05}Q&Illlv&Ma&+zc>Ch z005x{Wncr%Zmyxv!)Cb1urZNU0*Fi<6=bttTMa0wk7rem$|_z3p^6CfgHV{DDPi>U zOZ^CnALH5t4^uPhSG*wM{T9#>0P`vZM3j({kBEafUpbVmHhT0!ZooXu(GWkd0273Vi5_ z`e9fAdBHf;j*%-29y>Pr%=J+HY_2qx6n;-z@WHi_w??Uk9V?EVQV4k#fN%!%2p;#W zI$Okxr}3-n!J||vT4PrGu0ywJ81}10g66*md>qNz0FX`aJYNkZ1)L=S5dc8;EqhsT7*T30C5;o#BUzOa#FqbK zOFaSV&(&~IQ%LA}Fp|TKX%*iu3ziu`7stS;AT99N0UJB}Qg)fiYlVgKIsG8*o|D3` z4!j>Z1*^xGsR3QzHmC1f0w^Pb00{;d?(rK*S?XF-J503WdwJsbg2ww|&sVL;aQ5&K zOzLS_KbEBeXs9tXr1wXstZ!M@(>Z~Ko^R7C;A0A>5k%H|XI6izr@I0`vN94kJ#e!E zH%IsUDmG#FW#32>LK^DG^t3|_sliAKIC%9014wHuYX^|90OBDejxCL_Y5mx0SO2O3 z3ST!$5O;Vx2xJUw6mBba7{W)*3$w2T5_NopMb(cYc9(?@JbuLkNF6?Ogb!jqH#P96 zfkpoU^<#|62HEJpq%nN68zUOCqjA2WcyMY)YjkSMAj7qZ$ssK<3usBr%LX6Nky0(LHwQ^v~6xjy$J>XF@ zu`_)qRjAl=8HEn90W8I$jp<<7A$U@1K9H#ZkyK>)9Pr@!LG-l0r$oL)5oxuhkBxG| zF+qSp5xaf%hZNTXgSx<{*T4uI|H{fEZ-lQu?iIhon!pDf+ad=D1PP1a)R3HZ*KShR z7DV($Lwdgi09gZktp2(_mK%B{#LTzOEP3hlbyh{ZGD21amyw&tzQZY6j7n0bY`q}T zw+bN-JC0ayjAb=Ovv>e`TN%N^qg%XbeFH*jNBV2&SQI)afE>SiMicv9_^3d~N@H;e zjHLIJ%OBg2LA)IWeDDB*;A7qaAI(Pd$8?=e0CHai5Pbd13II6>QE+T(&-z6Hq;?>J z8@JjC4tqf2+Jvj>hLc3_Mg_Mza>c+0{GM-&U&&`Kta9uey@CMJHvq(5e&JE7t???V zbnF0<1R%Aak@K?>$T;wbuSe(wdO-YUIztCgI`$Z(cOJz@Dhf2dt7}&__WD((`xHuu ztVhTSliz>G`5`Kvh%WXvpneRdX`J?rz_BbdWp$`hoY?&AnKZEiBIJhmL+o6wP7zI1 zp*}!IY*4oY8?~DIKtRkcO1ZicJT{OaOvLqX2j?mqYkC5C|zi zMC?;R5QuQ&SG9u{n(2$-u2=1jkyf}vZ6u3RKROOTOi0NxGipv(FMIkdh5&z6p*NfOc#Isa_be3<<4IhfJ9IJC}lFQj|^0d*ke*vN~XQ0*&Y6n zY42E89YT0TqyZfWR^Aa4Ixw`)`Lr;s7hpmGq@sdUKmzg2MRE82YXA6F z6+FJUaxsZjYY7+;JbKpS!4(X?$LVGByJrB%69SH6o4W^0h7_S%UkE^AM0h!Jr8m`&_V`r+75%;?xy!CFpUaK$D|LiH{=Tfq&+4zoJ#xe!dx1xy0k z@I)j)Nv3Q9C$JNtYFfw1VbzWivwuX31(24yA)f&px-S(D&7?IEb*X5VmjeNi1xN96 z3dmK!F;h1Q0vF zVOysodb~NeHqsqQ?)9iS_P0S?*n|ax4sCd?8LxEV?=5bLMXuO z_H1mxM*}bhqHy@pD(av4z$;Fh>c@s5@4vb1Q$D!YHtbm^r-qX+3ar2i?(uk` z|Kruisg9fKhB7CotY5nTq^4}K=eHE8=6m?~NvA>#Z%y^66pbYiiK9;pfcSAH(*Hqx z5zi|?g9drfB3((*!ZEP~9wZrCksGQ2fswe$N}DbkX{s2n2@`WHfj@*#!WxtE%Q1BokK+#?3nbl!Z%Ve!8hT~ z{LB}rS}k)r8N-XM>B0AbVZ{T8)baW-f@N2yCLhBq`_;+elzKtba88PdUi>nPS3=UL z)*Svhjp4E>CuiC90eMC2@jgLIHkiVVLpx4$b2MvgLr5`}H8qUs8{HvAe+YY&d@q2! ztE6UaBxs@jkk9G{Y+77+s;mM&+KNhRbSo(+yG-J>h~dw{eLgG80)ZMdET8Q#@e}o9 zrt!%&@5ht(dk_e10SJbVyK+<~7HeJ$Aneb6BYyTJ5V1LyMH{8tw`-=ym z+nSnjEqt8I5v;xNF;e)rZ9>py^LT`c;p}98D%a3hePdChHu=2&`@sgkB7jJ{p_afg ztR{e*Uko719G$X9&;z0&SPTe0xT3LQqhB+o$JK)*q&=PwIc%F-xueQkv*&VPM~{k) z+@1|QO@so^lb}R507Py?^~O#TI|2^{fdH@$YGXZJ95%%wf1Kdh=h`|+wJ#`lH}k$8Rrmo0aBG%KE8?*oKnuZW)Gkx%YOCEoOC z4odnLjAacCgZi`wKzNTxR7L1%0+6Cv{k>lhKsF)dowGA+W-kj2VN9=&>aBpt=?exz zzR0HUtp@fJDEI^8S-k2&jo@%WKp?#*$1l>TS&>%t+yzsvW*VVfAH6bF04Y60#gXp5 z1d#NzNXM_3F)DV1X>6>ak{~r)0UTrPzO@a0`+9Z+t8a`zy^3Gs6&8U4o#J;dIeNH} z#K)&zRp5iF7YRh3*$|$9f_%Ma+1MO@dFJ@l@mF1H*K?lOew61Ykk#L71`uUF((#F^ zf&dKLc|0p_5(a#v(vD6HVf7@6RS&5kZ}*bCvAY=O*|E6IHEfw?$E_O5L8k_Hpdg~b zEIrdJg4G=IIRiBcdMfBq?kX%r(BRY!3LUz4o%LXW07dQ_!%AP9aG3?8SbD&xilkvR zO9_b*VqS3(plJe#f+IiANycg!-KR=?Z{_yX4?+^Fxa+GR!Tc;2Aaa#?y-e+@r)Cid zN!N$Rv02?q2QT8^ko0}R>Y}LpOu-HsS%r^0h6MpcM2|>>kYG?(HqX>*+8r|auc1nk zn$@QZ8qYH89T?}zev;%V8Mihw077~^vW2<_t_Bgt6H>s(n>u(fE$ewyixwPG0C^wa zAppqwjscKb?61E~29OU3KoXEJk-ceCf64$do&$8m1pxzr06Bl8w*`PwQ9JsT0}duy zn4G6Q9SA_?m%zt6CPJA95OWoPJUTr*?ugL6-|&9a`!8b9gBr^fA*8sD!o?PRu=i)i zo6^@i;G?GvKp#X!ijdNpd-w*ZA%G&QO| zes%oszW5O=vaT$0l$-Fe1t8J`2m}f`UR5MNA@2bI13CvzqiXfbydUvsXlX`&27m~r zluvA&Z$StE89av4mxYd7rrU~f_n`V`HJYRQ34B?n0(@KpT)NK+jL9oKCLGy<5Q2b& z*}xY~=p@C;lGB&MM|_-N!XsCO3ep(GlGjA^P8*lOwsz*W70-sKfJe1Y1ew$=f{(+_ z)GPr;s<`LmK&P3Sg?`6LI0QJjQT%@BhN`M^aiKDE=m@DB)T2KHwWymJC1rV41W4O` z9?6R3g?hd?yY4tPcW6{}KQ>zy2bdO#~nV4;Os^vVh@b$X31BF=8DP8!8b@l7YS%XSWYj6Xo_L$Rt~aZGD103^dl1`xe? zRV3cVthdgd?owT->tiNK#1R25#J8R1c{&aRZT+kQP`}TGppZ zqE=KvB1izGqhH?z_2X^1Y5=lOi21-Q0wDxUhT~@dJ_wK;KgUW+W0fgXpOvc$6??l* z=;e+0;=)i)%OQcuJSrUsLdxR70ys7SB*yOUY%E8Y-M+4Ye7K@VgDdOXD)Jlo+v%8s z7e=h8>d`cs+nw<7O!b1o1bn=`iBk|j^52x})el7*#b0B+b^?_>l^gTFQ~+|!0Ae$M z>>amyw)exN=M4a&D)3=I8kS+2t&zFBvO!SS0|+&!ZYl(OMz<({v_ON4+a>8j2c7*8 z2Qn5FH{XRJcgJX14LJOmS3}u&jvBJ{I2#HGGCUjdI1o%o+mjFNrc$gACO3X)Q?6i#45qghBD0a3kr*jK_>tQu&HoA4pI#dU%d z08&v#WaYNI`$B4J$5i)+B(ry=BV-4F`195sq;;LLJS4!MZxujA*xjjFh0;R2N?RTi zs-Wy?R2R)&5mNpMeqLlh`J}C+e#A&##-MH%XYK0Dcyww$IX#~;a1a1dAxXuX(9a>F z*DrfyRF42G@gKh#F3yg(9zcrh{XLtK(ic)dNHsaA1|g4R6zdVMw9$O1EUJu@k-m0* z(}0gRJb)}%J;@5nduAN#nw3=%e?DA(g|A{aXcWLvQ!;qpMurY<@wdrf@h&HlO=QvA z#E4xk?TP^q-GYzGQvLSkyZ{X3-*^S%cHe*t)Q53>k)I#KqM&h04BX_v1NS@wqk8O2 zt$J>O9|s>V29V+2fA3Q3`03YOO`pe+Pmi*dWsZM&AjIJDtLObp)L`zo4?v;`y_#A@ z7n}M2%=MfxtT-nQ(y(xIa~nX4qyDN68}&3P>lF}{XXw*oYGy-EQ?goKnObx$HJpnI zJjiE^VD0pNAj5t%t^@UhOTtP9b<_pY=cal#Ubxb8V)m#c_&Nw2%1p@%pmqTWRX=J9 zNnV|jLh%RdP8_ITe<^aO( z@3KyENovUyVtwa} zS4`$xXXo3jfTZz=3W)3+%gQ4k&nPl1AcTjH)@Fn47nwK+X{;8ctZ%&vvT_jeOc2=( z5L*rHAFdyp+O!84R{n~ena+U@CI}+*4cm$J;1i}UkEa`%;+un zxMrEZBoJa=0w7zTZFnvnR{Wnxp40b$X!}vvp@0uL_*EoWy|BZh3K&}r$qc-R9eo11 ziM&re6$dg#l~#m{w7{&qtewKqBXB=eD<#}8>MQbkB_3Vbtzv9lz6V->ssUjQj#pJ- zt{<{O0#u@$zBM%ZO*RTH(+E~uEy3Uc;R6_w^;9(0*Hw<8qL4I-3^##eD95@efS~K^ zs)GpXhF{<^Vf~`Fg_nzF z=!tDnM(n8Xg~-xxX(|{ z&QCmuuz*qmNE<@lqnO`KlXmm^J&$ocWNbFS*MNe8MMV{0%_ zof)@19oz8nJmul)F{?e0u~p{BsuB!<6s_k3LUxW=?Ha2piuPI?%u?y##+i!u1OcSF z?)>MRUjJ!7fS8v62%}_}|NmJWd_2!!zA>Vv*Wj02SqP~ENQlry5E4M-#isHKc%?R)J3Su57?xjVJv)28ICH$@v8*_f)t^%9 zE>uF)ctSCWYB)JPp3}IN3JF@zhLF?~a+iw=M^H*wloM{LAot*iHdsuae-Z6lgOI5O zA!My@^68O*kd;$G-aQjQm_?x=HnlI{^2+`C=YRyWvZ_%TrD8^?Fo3k6;|&WTtmmV# zGy;$SAJZKRAbY_BB|~k2fPIEKQSoi?_d8cqlgjUB3qp#60~H9l!c@)~h1))mmnaP9 z^83de@Zh~U=MZNL+q$0t7@Gic{J&QNK(6<9w7>(vhc2fB6ly}(_G8}sfym3A; zH+>y@SKJ_kqyOn>I2}XM&x8@W*{5oTY$zKo=zx!*z^MZFi=$bJzygfxWx6~(C^6=D zq@pnXm6v)#geCA{^La92m0p|e-N7(vSSpkc5>>?Cukk%H!!sbGy%K=vumX(0u`I#$ z(QqSI#brYY7F*sAI;wTm&oc%P@l3NgzRWV0+v4kP1RShgF1?R4h4p>#86L8Y2Oi|&Fa*+Iz1nqiXbw32+_;g82}(A zj#y16r>3(vug}3J0^!4+5~z6f)xgddMW}*D0U_6@Ab5GWxZhQDSO*ZW z<|njRAX%O~fUI$42}fX{9tR0vG&hK|&ik;O*@dYxgMCOjVG5@L{+$*5HFi z?ZT#W|1%K*M340zkJcy>Rs(jxgncH2umum5CtBb4fn}lPYw5q+(wazRh0BaB3B~>=)sA8^a)wTSQhknTmc|)yoP{B zdX8v9j?0XUZ)hmtiGz`16l(KDNs*=(OA7Un{>J%^qroXXI%Ou@pdQoGhS{lcak8I7S>@z} zoKi`lwu@8N_k-wZO#q^%V+M@z%H=^;({o9%u30W!6lAkMHo?I!{>pZ z1Fk!#!;xq`-8&t|V)VoS2sEj4F}>q`29Nm#05U)3bgdeQ%zk;$h%oYqp#(z6;vu9z zzIFZaU0&-u{Ppo211K0k_P4LMA)%kcP{B>=f)RK~m16>|0K;Xnu)#EbjC-X>oG z6@*LY%07`Z>7gL1$BO~vFQ+d9c_wt@y4HOgz)^*dP(Iik!{fk%8?UPRVoCs!=IDf; zg96e6gSmp89@iXUZNWiL&J)wOrXxi|9`)G*8?xd!l7BsT?56+@x`9&6_2P;VEbg+j zneWL4f1g)_OYG_tID)Kp#_8&NJ#zR4{@!AbMvCRitqyQJ`YZ+A*Exb(n6+pMg~a9 z<9mzKW^ppa^XmEN)O>VmIy%|=wsbw6oSH&PRv6PV;e3XV)#?5ejzS&Lh?a+t058Ee z634Rih~qpJ9CsM+oSE-EbWC?(-6sGsTL9AXi;UrMmH;1fh7kN%wL~pChV@WaKnR4S zMMt&@5McnMwoU*(ju=F)hmf+HB*F*#IMcg^YEfDAHk)e3TPEQOgN7ZS$bFtRN33cw zyBvI&qD-)a54Dx}^eo`m+OS`C$JSock07_=ZqxYIZKHJYcIWfKG$-iS@IH?b#I@sCjl>`fH$Ah#XVRyr0@6yVlGlz|F$R0tfRDIL z7`bA`t@e3O!1pT^5t5`YOKxLIe^7PxQxih!z`-wEN*KUN^gG9;sDYeUJN(b2EhC*( zSqiv4mNgVg28Ii}d3lD9JU%5rWbajL!y}SlR&Zwbo-aeJjAaSM9V{U#2y9SK#`Mt% z=>dcd5s-r)-?QHLq3z;yY)OxvkYVvE$*?#ztxgTA6M6{>hzAHY_z^8N9i3kM*YOXq z8jjAyajmGDgl-Wvo}3=NAH+k+C7ai$`!G&*n~mcmS<_t!Aaj6+Ie^G~pTNX}L(7Ox z0A!9U0tkVbu>v3?2Otqb9yV5cTnj>o2avZVY}8go71;)mx6fEtfX7mUjd)poY>GFN z!`sqU`mnBnkLeM7KOb2SPy&z&eCQTnJPSZxU&Xj4zLtBADumD=2;c*0y`O7GmWmBO z-C({-?*`etGCdp-K#+-jSK;3VZ2XT38Js%70>?@gz28bsx5k~G3m~U;guyMmR;GjQaFx)^t(;s3-zRPA0bikkm4jQT;&{8*A<5rEIAEuSOJ(@LS&jshl zC?EhVc$r`>llUesh<9l<)i-2oyVUhMh|$e4C07<&LD6)%S5FBU2QP%w#9-0jW0kz}<~>42Rt zeEJ#RW?uRNc8*KE6g>8V2zUJz5Ta_4wFQVk737XFZR7Xm6RECDefl*zG~l}Sd5a_L z{%f_Bvh+VPeCVyU?pwQIqpmivBUk8i+?f{EeBPr|1d!^Im9OQ-ZDa*Z7&S#S03>&ZV5J3mMXL9y_(BkXuze!o?*mZb zV47dOL49yiPXIvt_>};~ku<7TjS)2bGV95yF^*-eLH$^qivL_J7}px(I%d^m1eZru zrT6~~%zSowx^-r`clP)QAmX0D$8A`5?L`%nnmK*M5Q5i6(pL0{kX0)#EE2j9gg|Ji zKnSz?<68_T$HrRg?dyF3CIk`yL==z1jY`eTg3-gxq^hT8EN-EaZ1^|!ukiT~4191! zmmGk+##q%WFUdj5OUnByhVSIxqTrDdqX>Nb63yV(G=|q6a|r9XhHnHBJK*Cllb2&J zY;1za`YPu0^70+f0bfJS*I`di4R_A2@7?~Im{^#Iq(MBZ!VTHYhHcmwuFLjtyg9Cn zUzvPV9dFpKgb3Myh3AZJ?R^|cVtYXwdun7?`-&4g&6ELZ;?;nUN!rX20E!YsYDc0E zss%*@8n4R`(i1g}QA6S;G5maX05&>XsvHG$*m8N;2*5#C9~3}FZP+%558J6($g^RI zU&HQ5oZ4!sZ>Lo4z5Gy7QFcSg-p3^#6!v}yu$buJ=qqcK8VUlx$(XKM4eDbCkf4M} zJ!iu@fR9vAIE7@a>F7@ve=7UcNxOIu0e{d{A4apHfql&5T5)_!_I|1OPu?88Cu9lf zSo5v3%VXI5N3;2DV=?N;bOnG6jZv?03qbZQQ;i6|Z!0FnI9A-u!=l5d?V`h&q(v2o z`ArEOHAskMi2!m^oBK>UP3B6!3A}tad@xYK_IEs9y>taWOz`#?7C=HI>zKVo`vBzi zq2iZc*Lo)C7#96(z-xbPMT5cvU3-9py-h`#u*XXCc=#J<$!-3!rdPcdY-rBgv0eol zikvUUxsG+Xt3pu4*J028@9y!PGspMNo34vE|`aZt=gm{Uo%JRov=Gqwp4&rv{H<6C=1 zzhIQF3Vsn4`bl6UuFj_&EcY`*zAT!`$D9N zX7!U-JFHhj)UbvzEni+}j^_*`!_f)w4?vjJ3B5XHj!p-ox>+vHtQVh<6$=Z)ieLNW ztlJ%n1Br4jy}Cvk_xpSR(G38hib?94Krn)1dtuXhYgyRDPB;Ja_VSMd0mLgV!}*=- z&+puDewUNF8cGLlhR^RIc{Er6seuD12%Pr9#{-6pLgj#$--iWZ+_mu-;Pr`Juj^QW)3a0Ky;I}8GxMX<(}SDte{l2D@7(FLzv=Ay!N>4+ z%m`LiJ;pRf6UVSpq-_gAR3+Jo8#AihuZVh8q|A>U*Rju6L4Jv`tgWTUl1wUBJg=D) zEi!&pC`X2lUy&AbPWgcM7yCj8S|ef*J`SWjv4e^kOu^cKjy+J~p=0#WF;4mG1Si}G zVFr*08wWYGe}+XgRd0g{1{tD!h<)loGdSQy%Y=0$khByW^0VB5@x&5B_8Hr;p9Q31 zwZ;Wi@4*8euxON)MwJAPV5t!2oYJxw0PzW0bB2&H!-pDzGScVn5aVak6} zxj5?R^mxksBIAj40fZiqF`sI*Zg;FZz8sB#4^@B&0hnvlkLjTfABC|Qr)yy)1aycL zt?iG@rkrfl;f9}6O^}KKAOS)}=qB-=lecO73*A4ChOJR0d4pfeTzO4l?E{LMLIPBb zq-N9?0uTTk2|yAQR@%-v0O?;JJ_>L!%=%RTV<&_}KM3`EnA7uCQ=!;7n#BRgHJ*zK zfUvKpr%>_>0EoT@K3WPzWkjjANw2_%;2>lRJXmkYzQn2Lc}T7R5C9^oKRG?z`%yyh zKg6rkZ=4$MozO=o%=+<@&V&@KqIhs9iwFatYyyb5LIoiJ(n->7p@_LzGew0U0qegT zc*tjL92FDctC>C$?slXLq@$`xrK=-(JXGnk;nXYIK~jZ~noofgE+(}_^f(o(56eOb zfiNn=d78>W<@v{pz=1I-T%1)u6!0(yJehKQkfIk}@T)MH;_Bymy zt=9%X2~MplyFP@pPKXjZIszZnajc3jrZ%310J++%KH$y}uH01NQNQ>%PnrlIxlaZI z$OuNT7T2lKNdwZc0(?lbI6bUkyvl=!9#j{VAhpLcue~biM%1HWo~vR!GXi(d?SH96tCs@DtC+{}MqY&LIFl`jV_FJtj=P$HJ&hH` zbfrFdBRUYh+tGG!@tR{QR}>Q}0v6oZmE34lSLA+h467J*A}}HOvcQfr`>SkFN8cBy zfQaXhVWknPn)1+ZFVRQfU={})w)QwBgou8?T{KkyDGkz{@*OE$IUfdMW^9Xz$xUtI zaq}(>0|Le!y2{rbIWHTkI5-BIT^;Wq@Hq2F9RTP3FEyY(#*~rPu`3^tWM8sXjcb*5lg=A!>HEeAw$m@ zLS!Go<(Sg4(mx4%Oa)-AMr4}oqu>Zg|B5S)XZ4plkc@XtRfNASfRM2QAe(CkfUqhG z9gD)(+xaOd8Ua3%n(>%HW{oS{F2cw04QYCZrHdXkqS|7oM`uUBs_;>TkrFy|13C;l z?siX95%}2mrC+EDAFri)RLbn010b&j16u&{Qowi(aCq*9|JuiVk#e&0ew5~-2nJY`t&YF3pQ~zottx&Hv40GUf(ue$RE_}N3m#bI;DBR8 z-5{5VcuHcU{nzazvDWuiSa5s#7`pxQhBojLw~QZDY@YWJlD!oslobL6L;`S;#&rP> zpz`1^i_l;Sh@i?ver@5oJL81y(Q7>*&xhHL|J@59)a+jQUF^UCh*|+D93@04S}6gG zNzIZOKsKCV`B`6%L)9cZxDX1d~ES;B{vO*F^vs54aBCynO29do3 z7|EJ1SqbTPuA-rNFJx?7x21-#V^)<>uCbl6Wv+%0(kW6KTWSHx%mBy&AY;jpk}f}n zwLW?1I6eVjd2*Jty?Z132iLFfgLfnVNLYJDr?%7$=&LasV{UmAu3}1u05aVn5PiAt z18#)Q?I!L2p73E_ppLvWc6Kj#^sfLTHmCHV^;*Dl&EveXda-*{in*=Wf|ACF6S_YG z9&l`GFSrP}t^$ywKY%peg}-la(*YGd-aFObCS@hwUYNxxd-7`U>4USU53axc+O6;Y zz^(89z}sf|H*Pmn5pJU@`0=0Oe(-km z2y?B$`!&{{*?CRM2NfBo(v8BuT9F|wG-Sc1QsT(@KXg7)&#F|{6uFnB z(|r>>M1&3i8WKWBpCRJfbIer+c3VQbAx#V2)IGtHhyQd zBaKc;?De^P~z34=%i zkZCV`T(6ke8LTDtjyx9Nkj{_cHp`>4>yzsdfIOwk;_~1U@BiTJ^2Uv~U%K)98StGv zR>0{2fY^OS_1Fs<_w_=-2q36X@)4WR8N)dOk*fjZ#IM%`1oLY{$g!R(^^&n8d*$k% z2@Ev=p&(*j>HX9^2)__?Tx}KyX@$bP|90(2>IEIDo4loD4L3xw1vL| znaPR4{IF#}*8mEnt&d#+5IImFN#J3!IX=8LVSD_#On%=7$pKFTBq|A6@b{txAP_{N zN^~ej!9dHpBpo4wC?H&PZy3SK@R1j4O9v1_3k#(V?dW!PYFhmG)f53_VgW=NFpd?L z8a#Le(_VF{(L;(FLUCaPksho79%i}t_Vry5(kN=%1d-d6grZm@`Q0{r^cxBa1(4}J zfCboy$4xg^WH{|tN<4IUKtL-f9uXSYei8s77(fD;tWRMaD_p*0$nk!W$9#M6+-7-n zW~T2aeiqz&yaqlPU`)k=q<9cLJ}ez*f$U)^mIsf>A84ftltgSnam8%eKC5^n3V&NOw+$j-_-MT6q@*oDK{W2$(x9HchtzjdGmnc}5>}qQk5D3nbxK$#Sa7sy z1d1D{LeMdcP7Ff@I(mMYoeM%MI*M-b_2@pfyv#NpyLhg8V$}g|-aCUmA7SLGNV!S? zzyL~AM}#eXAYBFy9!QAl5y!4XHoG6B!OxR^H)@~*VIn_v75W)9g!)R##JL`|%F}KU z7C__<0Fi@J417pUo9#;gQD$~Zd*iy$lM}{6h_H*3{Y>D4fJlt+jcZt)>T{GY{395%})@PfH~4nF!jzlJ-fnw#7*);AfLtKB1IGrOUy zC@};I$;^NVv+Vrf?D7ym;Sm9VS@LE5(L+QD0}uE)!F}lCdC2gmW?^o74A0B7#hW=i zen=BDGrSDGCiuDB?FWwnKlh$_FoyH1;p1FF$2HJUyX{qv^FkOfzc6&vV8Z@_ zeHz!QDqIZgGmO_P6ogiJ9|L|5lsW%1>CMm=5_b%O3-s}N2zh22l`uQTr(VUoaowr| zKK|Ybv-*w?d-lbdIngSQ5}O6Q&m}7(08WqzJw@)u4PQT^uQvf?Z_-r_SSWZX0v(zd zq-EX+9#r3s#NG0K$VP)X*N(0#-VP2xM8&@$2+T-kq^ku%Pyyk_+k{00j|X){Vi|iK z?p4XLr`8!^ok~3rwdVu()4dbJ08|bL8$hk7!Ny+bu$7j02o-u87Sfni?eXmu%k%|2 zKp^p7_v!pWdDu88lVf>x9*Ihu{{#i5Zdzwm3R8|_NsCmH1VpveEI5{>OkEA(l$m6< zZzOGr(hm|JPe>2He4krDFE5;uH${)=f`lUv{{B6#DjX(w2+ypjStGUsu z1R(c*RX4dLWoy`q_N|O%F#y8#h$Llz+nmqkvP)P;3=HWu1WwZ9#p}b7LfCWSA2-}* zeq^6F0nqY@pL>2Jy&V2A?dq2YkNW^H;PNFtE`&1-4|QJ-0g%3S{XOoC=_@}gFEN_$ z1&3-1RO>N*@A~zF>(>v?uJ6&; z{qeJ~{MTlA>-6;C)Ntpdy)Kw$2I#@nb!vp|2g{K{Rd~4cVNABc7B^q&HM&< zKpxWH3~5jP^{IJNsTZK1MCkeBC!Gd8AW`)QsY4ww=)P$DN^Bf$hvQYIcLy@^0PH{$ zzj7c)_6tM%YxQ>kLoM1IaXyYhl`!tmHDIOIlCBs4l9dsz;^=Yw94tz{>P+}dbeRA| zL9dADtposcTm34=;v_AF0|?|0N2>VB=3-BkT+Dpi)`FxSMXzIF@Bh>`X!yP0Nyvgf3<@3tc8TZ-}Y; zLPQ2$0l^rYCcuzA(<$;i01;};jp{alh|B;2;X@?&$h{#_&rU|=Ba{{jJ9~vh@ z!iM!QlBHsY$QV*b`rN3lz|vD_UQZz6&FUFOLTXmO0T^4W=n1(i;6u^qTn;`UfDAl< zplDYHLiE&VQcn=TCv7AMR=#S&5@Hl=*Ar1*b*7pfaY&!qJ_3LN8r=q_t zN-A4FmrZ2>oGS43b4m-50{&V6(x04N-?{beAGr1XAG(L1|7Z8`<3DxxKl~GS|HGfU z`yc+)J^b)b+(Y>K?z?~JE?@tBcYOcX+<5n`8_r+3{`7^j%Uh@H85~#xib#TwC95L- z`dCDmk3ypnrvL(t2i^QI0Ns_Cee1O{u38`7U$5-5ow7y$s;eCdi;LsX)7 zMMc3772k*2=>DLs(wcf;!sj9^+vAaZJ*^QXSY(L80yaKh_}LW6TBONZ+PZRJUI{wv zGn5H!c{sT0ae@lbkvQDFQMhz-AJh$2*^s6U90Wd!h+bwCt2pK2e7Tt4j=7C2?^_z- zp*fv{mqz=#Xeb~7G$?@326aKz5i+7x1rX!mBPt-B91?t_(JMWA$gtt-03ZU4W(hkx z+0S4!YhshJe6%4K-@B&kbWF?|j{#D0T9%$qPKA=g2qnq59>=Hb#VLDBR_$_TA@JCM zkMS-wuBT$e{({cKg2Xayi;QQDcN>d?54gZ4eI^@zq$E7z+s(PT9X-Z`N1kA8aD)$k zpL=K5CpTO^bHn+w5W{<)p35!|`88JoGIkVpTwfOIY8Se6D z5^jS4qy-(l|Lo()9PRsfIe=WMK9KFPtDOMwYp4;w)L7In0yI|~Ij?z4xYtw#j?(z7 zhD#cq65zS?_~6X)7N{B&B1*`hppjvNgOK-0HL=yl{eYgsEN{`c7e3F2K@m-XaA*zgxN42)gv|BI=wu({`8q!-~PTkefBrq<4^z0-GBFw-0e4i;%>kB`|k4f zAG^y}f6tx2_&e_O*&n&%`@iOvr{8na!;emn4?*202h&-Aa?V$P0p1~Ey7nfOz7&0 zq$-6s`UmiRfL@W#w)!k6Troh2ATh(&z7eI@hYk^yiGCX(a&#^+hu8cVnv6r$Iy!2X z)u5o!=W)};rNP%at$aIOf4+`~1L_s&HjM1)bBdSi>=!{W#==gii143BO$EUUNZCcg z0Z2K5RltWFSODqN=+%z^ARPh_Z(8@t$duqi+7R6v(y~0XO#E0Dg%IEi@uOJ*Jj{}z zB!EaNGz6uF9zXz?#1#O<_lTVLLk3!RdG&WY;De-BO$0z%i#0Jf0Hk;>0v-!FzuaTk zprcFNC{x_*L%5h39|}=r((4Fc+vU*>mk(~Z{mdKLk?P`sM~@Id@?*kNv)qT*SAmcC zxg=QOL8VYXwg4m<%_)RjGj3G_l`Q~y#-`l}oA6&6ayXwwbCl_sn_0V7 zOz!kH*KdyXaOY%yK^x@^KBojI@Ml#8PXfF=j#~As;?cOSaz74EFsQs|00@H%y*&>+ z{Oj?TeQ;)a^6%MRHdUCy>(O7Fv_}jDHdO zp|2yA<%J{ds8A0?xI%vedTsi(8qf`+e2^yU!U#?Z+O`S?RmC$>8@*zc5>gtdv)XYG zJ4yo;20ZxL!s50J69X!GL?BuNOas*v^7+z8Rb4iB(rCMPvIK>`@yur_# z;q)~bWs2uJX`L{Af|mHR(>0CSWlV0XbTCEoLPbOw|K1gNJZ0TMo3ayR1463fQ(Z*` zfd+S#y&|xy1m2DVn~o-TN%FfUEn{lm0U*NG6_5=8$qLAjydN@})^&*QjiXq`Lx<8+ z@`t3=2LJ(MSkMz9l2?R-kSQNcGK@hTmKY98ZdIRSqdJqEWukl!W&E?BeWp-x?TXL= zS5iG7Al!y^aeBP$0}uisUKxq-aSK2LM)TgG%OPx_jrxKi#4h(409LT+hY+&DF{X-X z8^H${b%H<=Z@1igbtNe*_j&AVdBFY*a6Y~M_1@X_-rxQhU)x=ViirTlbPsM57X0iY z)R8z{PT|lL3i~U^uXgo=aM8OvN1lF(u_bb!2p@6%;z?J#$^aX2u2(f)UkM~HF+vZw zKqY-}g8mIN3o$j%^#xUA@b@(R?KO*2{l%I2jk68V=qn0{ttc=xrKJTh6ikZi!Wfxt zygoBN1|X@V#?c0Iz2@lm-W$s8`rePAh0)g7WbVg2pPU}=og8kRUEjIs;YWA;?2p{t zcmL4ce)A7JjC}sL-0{QTbj#!KoL$~KJ>L7E7CMTR53qgwVGg<)9sd7P$N_Q#zE zN4=ppLE{M6@(&r|bk2mK@Dc~oU|OIBij z1>btkt)eV&qpt&{V-ZCO^=OzOf1gzF=UkIKl}5P0=hRg;yw7d%-aFDHE4P)5M`CM? z3T?gt7)j#}+5i*#6(d<)WwReu1_j0OXzpkPEK zR|XK~c@lgKR|3d2<$ATzCrgwF%cu_5c4E|$o37}fz(5k>T$#vkI*z66$?4(N+2vg{ zDicpZJdgt6f_mqsbX`|jXf((io$7C$UEUUILtll9eV1Kx`<7BduSbs`4dZD6Bl-H? z+4*hwn~}X*89)|h1TGX0qQ}qAp{FOOLm8o-9^7#L!p%>=b>}bsmb?4*Ptu6i`Ln;} zPM`ge8}GhzW_jzRJ*WR;;rsCMlY_J$`Q)d*o)T50Ljl+*HrPZl(c~14U8W|fauaxzH3w8f&vLg zn>>hg7Qlx#ewmz_m0$(>Il@Bf&TA}@RS@r`0qI?mKwww#oyZ-4Nq$DQ03?lJG1s#S z2=#!VA(|#fuV#C>bEcx03i67WFeKJzYF6}VOjqf*yFvk zrw6}|@iCdtVx(n(*;kW3lZ7fIw**FlM~8TG{OhTtq}475@ZpWWeCLOHE#>2d$^!+B zq<*{vKp|!$m$$xW zodf`3K++WH*+?et+U8ptW`rz&0`!KwV1wW3FjA#FXdnm)mv!3Yu8w4e*Y(jV`3g&b zu`6&n^2NwXLe@q<$u@K{{UC(`QU{P6-20&yBK;l1U1RrOo#!3@A3n6E$ zlF-7#IEIw~gn|gT41fyST!S&BsFGw*xdY=%e!~$*qmWt>H}_#PpA6vvZgg07edC7n z2WOWz<+#&uo4|w}BjcLji9bX27pJG&tbl;!Un>EMB|Z-Tis-AEZu9NAg+5mp763b3 zC}eDv5(4;0X7VuJWS={R^n#_ydP%9^vmpeQ?XA4Gq6QsMz1R^eyQ>GIYDPbi?=}8? zg>(P1KRYu&1po;fZEll`gm$${~ztAIm}`BaXT$7M#l)VzPpt9lz|{7cW? z$1-@;1*;+N5`dt~p`wAJa=~Q;@bYK;CX7(U0>L{1cLcylZ->8*8p`MT7@VT-eMavc zczU7-WCu*tO8oYe`)Nj@pd&!K$D=;cClJiiUEi0+XLSvLlt)otUjc!Jb<=J;uR+Ii zAp|9k)gP~u*hA7O(qs-iHk(REzm+USJRra1XTN8p2|z;{SJFT=;M5DX10Z4|mCWFg z%llrq!51LS3i>`2xja6vCbwmhvyx&07m5Qmo9hr(XMi^ayr%d%yb)eE$IQAS2H2-$ z30VUWOZ+3--66aY-6jC(8UPai82f)>@iqZI0~m7G zgjwF^P4aN>ls#2Or%E*g{oRy17U^dy$Gqm!heuMK{C(@ivfbYCFTG?KSwVDgQvrF$ zs2}fgR|j3OyJL7r2Z#JP?!-U@R)PHYd0|qm=KNk%1vV<*zYHl07{PiDSX`r;C}NyW zWqDwOPExp1Qj=ujT~P$B-4_>I+W^bPhV3~Jl4jTQ>+|%#q9dsY7HXqbvfm!ZYWiRR zm?W?mf~qlOr2>q!CAjFB^ScZ8`f%iaLtUzkNVWVBd+%4dyyFb)hW~ok&j10C1KNn& z#)6xAd|CN8e8g@92KF}6xErBSLe`D&KoBoKhztlhSqm&lzK%C#1LhQQ+Fz6 z{1mrKe|9?4=nx^GA#LFSsVg86LPAV$1Q0!?nPV0}g8ESd5bqrsb1z8ph(vz~{iisV zo)9yY{}dsNm>DZ2q|{KD(!8#QH35kCf!yvG!@6Z}hmx@3$iaA%<%41Wvc`bKA1-VP-ZG?{qUvmTA;%6C_S#LAEBp|tU8mBL)-d>0O<@h=a!2qLLXnN3Rdco+|RF=|G^}%F+iwsTUXoL$W ziC#rwMzt0=;syZ(_%`~>wsJ#Zgz?qv`#i=*A@BV0lbgX(9hakG&>>iOYSilJT7Dr9q#EFg|6#mmV#ts3il4t$gmUxai0g z*Z)BQF5a#uibuag0WrAs8;_*DP|0{L&jQ)7C$%GuR1q~|Z|8!3JIf1tD$@^l%%X18?3rFk<0@K!_g5V-Fc#5PZ!gfKdQRYrRW=5}}0$ zkpL090OW$do-a<%{<7!+N-L@+(}ln#EY1u+ClNgC(O(wJG()+jU$}4+fiASN zZma$h5|myOKt^V~i%~0{1s)@>%+wSCve~bzCllz0I)=Yf55)IDJs^+1uL!`51PW7p zkGvYR6k~6qsY(&pg5z%`ynOuRAk4=iCF!|-kR4-NF^)Hx$6;SY7}@Ex2a^I^;7Avj z6ood?uQ0-+U>O`u{+Ht%2TKUr8OKak(2SmQ30Zt*dd2 zt`5mS1$5XQV_1EqQ-f*vMum-Ny^=4XHOfT0D>U$HKp^2Z_i$_r6&03k=5h0%6a}!! z_nU68u^0I~QYy$MpQ;$#*9V|(z{fqbzyiU6#s+cnHI56``D+Ents*!{W)!U3mk3rU zA)++pA3%(6`TJf6kU{~WF}*U6Zeaike^iUaETDkM4F!Z7%~It*#RMUww9rGw4iK^B zlKtZ3xHvVfPR*-tRX0nBXN&-Hak9V7%hnbHAcNmzdSE!^%_M@56S<7|Ji_(JfJ}WM zaV!gLW@%)v9tebtoSj2Nqf$tU0{sJ8=6VkByQJkdqr3kWZLN~ z87rsL{t+<6K#0a;O)W1=?Aa)jyw(JC)LWyc?EOdpVpayU8eW%c0j#1pk@x@clTO)> zof*6rK=)4QA#_3P9K+(0u~;KIiK0d0R?sWbR}>DWGXoyk56Mm0f3cB{w54!Jlb$=7 zt#!W%9eD$jdkADYD&PUco0Uhbf{3m0wjO_$TV;_jT?{B6#d*`agZ3M>qSu7R*Gi!9 zDB6H-8(kZHxl!L*`gsef2b!n|%ve(~wgfK|rUU}8&}Ltd+fdkOZvJ(79s&V{74$fo zy}XlIVY%5-IJOp5ZNg<45*Q^W0z7@MH9+j@0D@A-K+i}gqu0jr?dcT&IUoS3H>t}A z4+%g920;4Ml71b4WY|C>SQ3n3L1Vg&Nm?7dA@q6;MhM7177QR~C;M|sD?w`$KyHEZ zamh!fIRF{F%7OeJ!u@7)raX3~`b+4{AOO-|@CH7@ zL=6xiC`^nZ!bKCq&XW;ZE+W5A%mLBF1} z56ExsOYqPXI;OJ+g9(5Dgb4@>@HXQq-7nprfCW@ek_r-T50{Q*onwHORtev=zKuO# zvXNMYN4;PZeD<$g4;@Q}mZ)&pI*1e-)o51cMs=!3_IZUM$Bdtx8g7%n!JDg}oEq=h zfC?T?ctB|%#V1Gbukn~%2_f zbP6H>E;9NRQyAJ2vdBSD33*J4h#v0z-}vCQ5!I2j@%28NeE$F-W=LZ>X#=lz zq+adaG>dWs3o9WOZ;EB3)1wuys{?opqlXUyAkilx)ZmYP((a2MFENaG^<(ul#Z(=r zfaKLD`0z&xCeXFfqtvf!6p`+Vg*-Pv{YWkK8aGaJF}bl5qa)>sxQU#C1-YzeZUZA* z3EbSUX7lW+U^mx-A6KFZM$?pC8($KJS1`c!H2`5Z_7Oay`l4{(M-@PtYDFHCssRXn zUFE3QHjuzktb+`ObrwR(?+;!~vpR`YMjoA{l7*jLW&{g*L|Dj3P3raZEP()I%q{2v zL@=@`;8*S-kdZ7)ew5p%($44X+=^mq6;;k^JN5}2L*W7<jSemtqqpIZS ztMsWlD*WQA;p~K6!u#&)<&L5OI;u}cZ&~1AN(f8O1qG14nO4=wJmLf!s&8JB7zU1t zr;(*A{Q|sFqwz)-sRVdaf5UC8qwj$8W$aZ8DhddCED(#E8`S+~zEj$D+9VaG1qnAB z>d1{?lC4@xR95jGbp{>u7;qG;rWAqXtjhO0#_?tV!7b@&RBywi-nGUhWxd1@0*D6$ z7~(Lb2ds00|rSqRstU5E&{;PG#IIsT5HanlDIMimy|H zWGoMAm!y2euQj<$&lhKpcYZ_)Ea=BcU@>`RL`~Ss0l%Mcyo#E};rE^@9C|)E8GRrF z8F%WB01Co+a6b$Q__0%SIW(6?^&|Q}?9s^~+;53+L|)@e761_sNz5AXdH*{BU<4ir zsIDVOgu4w#vo8cPRy3Zq4In@T3CUKL#<`C7PWQI~Ldr3#dQsrmfRBMYLY~2(Vid3W zOLiH=B{TY^u(FcJM8V%Vdt&0AYwA^P^ovmho|)uT9iQTWBn1^r8!8n@39EX3THcji zuiq;mq7R$z03lHY*=|68h8bN|&hJz@I_+N@gn|Se{ZO`fKWFuo71R~JRh7XojnUvqpZsW6o&+s=R(Tg~`VB=(xzFv(S%ih-bj8&QK@9=f~?N9@)i zr;AFIU=$|_KHJKeS}P%|Bcp#gFd%@i1br(ksJ0c58h{{=Nbqp@KgclHVMyowZJrAt zcq|K^vLI3`GSsA5osMJ0C|^4}H7riq02wx?WU0}c)BO>%03c~})N8(!BTQU} z$u+A#7q1<|NPhh2)lj2{0@a@ZY+Rf@-TALWF{FRI`2No6Gc?P^nd5DOk{B+a$1_r( z3IG`~aA25heNED+rV~3drG{e|g(8Vm{Sm`QR4k?wHk6M57~t)IDghOg2qCIJ;`>5H zWCFl39`WN&_yfE^j=T6k3m0f@36lllRBA#^2aN$ni@k+@C! znj`%kjK&PT6-bR3M%N7ta8#gS|6)`DgOFhmorkB5vT(^39Hq%29UqI@26qf+W=cw#y2` z@8v-Zl_vF|l&q88Lh$gF3fna+*sGWgpZJ9mldF zfP@mm)Eg4VQ2Yi-hRtW(bgJO*!1ME5rvX(y$YyLlw^uy!yj<{_F@&TIHM;y3-#!9D z1cH$O$WW>saoh`DCc&7KAB6!*3G__>D5y5Uv+!|p(g4`0E%-iQQdk;OJ7YjfV^ahi zhB)dJ?gQZiC{TK2607F;7!WSbJaEAC(8EEM0SEy=El49wG!oaY1%M=l0zwW@A@sy3 z7VvyL?SZ#sJmK4r$3?2h5*CCE`rJ#Ym^9T7Iwm=kBV8pxkhCan6#xP@lHfMjw-iRR z?COM>+a_h%Qa)M`a*Z*%+>|%Ry(-UF#^cVVx}&rDylc!XHJ~4J`d@#}<89$@Bm|Sj z#(kGJ1SvXdO5ewN06+^sNZ0^?DyR}cMVY?0QW=_o2Lu?<{g_c-jQ-Fis+-*&Ki0Kl zRXU7PF<#Y~>Jk25WijJRta>3UV@L68pe}Rz^LKEv?XOHMz7aP;B1d!T4UszfgeIW&G^poq% z$fuCRBVw8+rT|Zfo`EkU0LZYU0>cC#HjHJ3qpfOyM}W_M15}%9FHE?wdm*bJ`Ka=F z$GX(l1P#(>G@fOaya7k$hY$>6dK3kao)jTkV2TF`LQ|)7Aov*aK>_$RzU@*64Y=&;gsp%Gd*pnn{!Q5)!GY1^Tq;)04>A>FSepvR zreC1~JQd}ot+I^!Mvus2dgYEpkr!!R07{C_zH017;6@b;U+OsTRE27d@iPKen#{<3 zZ~Xt2JT~Z+^Rw>(IY>s?U;spL8(syL#$O*4Q9(pwQ*Q^?4a2^1s@>PY%{IBrY_GiG z2Cr3l-$~gwg8d%{a`e@M!q$DQ(hJ4j5#3plNidCjO25g!P7ZyZ#$N3d$j$1|5+DhBJNI`1!9w+%vvJ5}O1bX{wDU`PCR-B5}TljY!{{o#1q6 z6cN5!^lqn{3P{WR-i2u4rUDW{rQ@z=MzH{l2w_6UN2Ox~z;aSA!tZWOaq}LMkq3}8 z>KIJu;5IP)K_vA90!Y8_A6|^|C4j;HV~pckjei_M(KY4s(YPKXd_#(shmYCGaq;oI z5l-M7xyHVbbmSGbMGuX+^*E~@ud5ZQZFomw868|Xp0`qX7{-R85>jsVPZ>bMeUNej z4B7}nAc)vg281314&3~sQ&T>Fdd-D;!N3kuIcRxf_-s%|#Ifv(K<6vVlJO~!OjX3| zF6X3%pze(blglaH#;j*&)&ML)1@N1C0s`|Xc$2a!B8L^ES(TuY)PZ=PVMWk@6gUVw zP<5G(7#b=HMuLzb-%m})5Z-Vq0VP7o1ORC~<#EU12o%Q##M_s`N7=$I5C}})N|ZYV4@I4}$Fnw&zoL;#R6 zEKt}ghcoh_WQAm|f>Qe4$u00`t3qAj^%-}oKg?_T_{l+^#Yo`yPd0|NYL2dL#OwT zl!2~|s!}29kkIY$uGC_7n@Y(>oNw`ZMOIE~alpt2(wWL@s6&Vlq&!pb9U~q1JC&O1 zLkgcTyaJL{#sU1{9*Q7{0zec5kld6m3Z)}Pof8;ojb*jW=@l5s>d2Ie4P$ba2aqWP z$gre;x{}E363Fe|v>rD{N4`UWEY%Z(?Xy~a0kE2s&V_C5Jb_{WTo>S?&=m9A7@wsO+hH&AYs5`TL~D@$P-pp(&Nm2X|VX`Sevgw z&!?o&AoVbfmqjnf3dX_w*rN*LSjB6F@L^yt$9@3GN8Q1Z_TcOAof}iN$z1G8ml`$z zWF%gSai4*lQ#wKbNHrE$bFaJhTImu0YsR}al$ENtVqr&{{NI90hLG{D?EgvQOedyz zac0c=dtdWDc)CvgDO8}3pLDAKco6X)av8;&VkdQ9n8<69w5az(Gb#gF#S#7&j}&c; zR&nvaRYQE`y(wGt4&c+q=c1Tqcj_fkJI2JQkHgq{31Ghg8P_b*RQ{aeKXe}i8a8<% zZUn#SKX5JNw4J;{oINs9v(@8`GzsFDvv z;nyZ=qiK0bN!5%2n&l%Hg*9Pd@&1soKx$Tc zJiCCkrtpZWpM$wx4Hsvo+>~vm2d9QR4FJp&5f2die+C*&=m%jwMnh)= z4`D$sNQmf7uyIW}V5^~9Y@|Jb;=<>G1`9qLoB!SKLE1)hI6t117T5?O^(Cqy<_h?* zy*pT&8_G$GI9;6zn|!u~oI(OnI`p14aa&)+8&NI`jN033L~FBtt$M+ENOl3jhC0!S z>t7qY5tjfqqz9)I-zzpg2f?fzpHK0bpu{YlejaW%I!U$wq^7VOxKc=1Oo;p=e34-+ z2K9jqq(>zFTvim2O#n%qJPd${N*50~eJ+4_BYOCUYk^M$j&h;PKzE3p{Fs;GQ?^uW zO9%11vM)C@KEju2ktUvzoLB^-K^MG9*aaz9C?I5Gj!N!G6L*A^>`%bA@!pYhQEEpY zAAv}rT)^l~vS3+bL$N?(P-6)^saFMnMH-JYNAP+8O!N#qp~pGq!afKgX+ulmr+FWR|QhOpJ#kjRk_A+kSOw z$-n_uiqBn69uAh1GwZ1szse9oR2B$AW4JAVs;IO?L%NQa#oG>kgNcBRfs#D{;%~D$ zHQYKgKY9q6pFqU!ofBq7V>jDnf_pc#8^wg`xku^YXcK7!H_W&i-T0doAKjN*o|cz@ z$i#Rnc<%;#+r81lP#LG6P0dTPF`foJI=fUaUQGc2B8(HJPr#8@7|Tk&hgw@VYgPv1 z3|p!~YBRT2fkhQG;#iaBH|-ttd;B5*Vi*7+X;K74u7M6ZT9rn^DiOMVEQ^7T02nu1 ztGM7dv#Ix?qCT{)Daq17TEm9^D07AwI0D-rW41h!xIYUNI&hPMvD1HeOpd+649!827-aagFnY5FW;|z|3;iAK+ zmOx{=n%2;qPT)hs5<@sg4#%~?<&38!`AQnI?OcrS)?!<>N$OGticlySH@ku0D0N7`>ea#W|il0M17ixeCqH8AknxVXe3=t9xr5c^oqd!glx*_*Jz1VNUG@Dle zWNg63)E*5hMyN2HK`%-1oJ{-r^-xwk4hE1;^-heVlf&rb7*;>#%{}#d)S!dRW_Kx8 zmg&lfW_M;&z6}~SK}G=_Gy%&1=zwvuFI7OgeSH@=t`@h#SKsT-akE2IFSzGS3Wm+z z3UK=y(MqeT6#!N?{~M!3@b(l|S~t|FXrRx~ap+1IiGb1iEUEy~iZ)hR-D!Q#p~0Q|IW0`; z3VTF46%(>5DOm|XrXsEvM)jryEH(NFaYII}ROt)h0VG_e@hTIr!s-KrSO6noNpKp^ zt7&#}DE~>p*k2DSvy)>U&5~wj0fg-i&B^v9@HqDjB}x z*wU0$gxIMOf98+^!ud7QxE29x@N=pH7zyQnJ{3&aN`L^2@9}v7NTl=3LP=WVnmr#w zPV~}qe2;5@kZgK~3W)@xTv!poqiuyh0+rLz@uMvt21)$Wdp#j9Pp&$kzoFPX-u98y zMu!IWZ*l|;sRk#_wT?|4G^8{3O5^l;Ptg zNn=R?u^*v{Q&_Kp$dFDYYMb{OaCBVRoGsx4l=T(kNe25v4zR1DvN{et=UnF#ay@7 zP)vap1s$ zTbcm~s#u7MTEQw9m9OEcQ0`EGM`Oh7fc+ykRb`5M-Hhr+Mzgj7q%^H}5kScAX7q}9 zA4yNfCE?$rI)FqodTdMYB7n%yk{*LM^pIlB%dsrR8v;sUFqMTE!wv0-}NXDli2%yoZ z7J$U(J0kE%&oSUGiySYTyEi0(6bdA$2#_csDSkO5ocZrR9o2*1M*^;T!TlESsQ*Mp zprQu@ZQx6oP}8x5fC-N`sVOTdPBU=+Yn+oZ?W4PFaWU<7y#B8-Ol7H&&6*&FW@ zc7(JbMD7F+2p?DWccdPVsCY=?y$&FP0}!B&pb;(hceT%dV5{Y$F}^$;71F`u z5g;U~A*#=yA$t}&BCvSx9Rn7YS$$*a@v0GksFpxBTj`1YD^lT(ktk=AVqfrP&7uMW=sK8OfG|jV^O%M z?}(Lz{+K@t2vUppPN?bRB!ra#G>)USGKGCdJcbq2451e%`y)GYN5`7b(RsLm9@h*V z6Ys}Jn|rt!Cu&Io73O*kfF_P@(N=Kp2?@()wZy+i@N*u2H;Cz6O>5~R0YC)LCxv4= zBKUy*5j`KBIiB+CpRlJTeRk8)KR5W?%yQ>se=Lgx5g;(|am@x7ZJ-x6S{Hi=YMzCG z6vZ-&RY3Nb*sp^RcwWjpatnh<*rM*BnkYln5^i*BtSS`SeH||y|B62c3+@SNnab%n zmsuF#oS9KA^!x!pI_60IUg${IwU3IYM&kHSU+pNoLmT$K2_60)KZyedDo5UMgi$cv zBQt4ILBRW@30^3+S8c!<{k$kdC4=^r(9vT6>1=?HWFiMjh~m^J|9!@4L%o6g=2vVW zr{h)0h{;%EoIzutcxfi@pK^RNYfD|FriYp01*)!;*sRIk&ou$)K4*=oB@Vovz~KV z;>-~>jPqVf`9DJDa~_m@i>L2G!tE=Ilf$0E`;0T*cbR)g=K zPyt5NoWUeDfiLIW-!hPqx8Q$JFhVzOl9y~YXZ;i!{5%l&kaT2eA`pT=gc)m!wI5PC{3i?1X5U{*4kbqufb==AiE z(yjFL;Pe=qwl7Si>c+^@a{xq7l@X!Rj4pLlNn5JP)bO6LN7t`@{fDqR_U~_>6bymN zW&6egBU}MK5R4!{$yiU}dNl+5cE?Alj<-_GD8S6=dx%rI!0!wG8TY{2s=(ipDtZENo# z!GVF$0hWD6FNX!HhXDyzTsMc{)C)sKq|9!$;m}YVb|pHsMwP_I$WHPH=>2Mh%;R94 zo}69Zxjv3u%}-8G_x`fuJ0C+h-uk1M{UvlK_z@Ev-P=$n02myIp`2F__%Wk$lh1=n zQY)YmQNTjJ4xSzu1q4C}3n1jVi;*e-VK+r9JvOd)8-T$Ah+zCXwFY$xAWTH>p>lof z5Q+a7P>Cw|ozLp(fQnjajCoX*GjM>A59^`fAZpN2M*AjT$#YDQ0X~HGDvBJ+e>|~s zMA*s0$GA8>uTG6i_?_^ZEfEv5l3I8KN40qX5xTL+=vFHo3mJZw2m~2K@mY~NN>di5~h}O7`-YxGhl*~?AQF+j35CD_<)L2Iwl3w z2m}-pGm1q3B#taexZxk+NRm%<(=!;q8mLOKqK$r1H7rs7H~>)$h$P6$;Gieq=K!N% zin%Po$*|(r0zqViCU&oQ$PgMK`?E9ClQUCDwi@q!x>bMcq*)q%k7?JYJ&i=sze{_8 z0hX)kDg50y*J$85(@((wDOaCZ`d5aYX! zP~3SRO9{h2EHhO8`GI0X6_k~jie;{akKDd4hY0{kd2~!@Ka!>9CHO)XC+wUdL}Lia zM=`-aq9Pu2Zmflv(m`Zzzw%{uFbQeKk*GdR>4Z8Jq+QE`xd9$+KBfk4vz}5Pg$|%& z762D<9)GUP=1)wkHu5b16=Vbevz)NPLrvvH(>xs0IgzoPtXiPNDcZXcRTS{vP@^~3 z)@{qq4QP<2&%q@@QP7ZKjL44?0XTrCGlUTUA_-jbg3qJDV& zV~A)RaVf74Kif$W8S`sHmjyK=ca5wGni7OS7)d7fJSK)m$c|2r_o3(GF{mN;P7Sv{ zHn|wPnwlF>x>=6^azLK8D~kzb?k7sU6(}~BX?mvxiD=~K3gD1^b;PSwKl%g{)xXaL zybS360+`yVvI0l9;F#8RiCZA{J-x>*5V~AR{o#Brx za!{jfyIfD#$GhN&6+G?Ihy?bS#7#T$i8RK*5@6^OGLrwI@9XdpVZx9`@pO4#1-re4 zfN1;*LI_YnZnmOqxfbb{tkz@H(wRhM)Jl}*WN!JMjQWb3;v8@5KbKDrG98)E2DW(A zJ8bgw=U7=I9lbc;r0+ z#th?9v8fteKOb?-EN#%9PGxe_fE&Hj=o2W^OGnSc1~zqX*tNV*--v}BR@_n1AJN!U z2_OsUy1aype9DhUb~W6M)oA((PhG-&s@{x!P(a zXCH5_jC9SLo|B@>NpJ~<40y;b1qFIWHq;YQ-X|L1arFDJGkvRn(b(4E8Exr>s#1=V zg%PaUQEmhsWUPn6M|TB$RD2P+m!dMxq{?wCb}2BPr6K58?B7uJ=ZnqBtkM911inUg zvS)TqhjHa%9S=RCKlMz4mbA#9kYwwWG`1vST)I2h;}kW#ySO|1}krC496S_tKC zBzId?DjVQ(s(f4pVU;8;wzotzfHZv8u?d~`fV2Qa1CNN!MTQjs>C!)1KDIjnh-Q=z z2p_R~NR&ma>9!^+vWw$90il{~bfaPtM-W*!F+feUOMcG-emxre{3XRB0!X~=usUHm zwP3>LVm9GuW8)g{qjyBuZfx!k#b!7sEA4}g9b-u#(iXRfLsg|#^hZCFzHT@Nz`>4i zf%Eacf~qK@vTEwL%86UDSVJ99t{F*dLFT3}WOq?zP(X^K-$dc4!3K%0?Hcpco1C3k4d*XhfBGy%<0^Y{HwSrj zs@4H{BXFE7G(|@>B>y7$SXH4HcM!pdEPG~jiixF#0J2m0XoAO~JyMlb5Dyhs6%Vp2 z07>mR4+_H;HKhwK9jlVg#d$|G811VhWOXS**Py7s}BB&>%Gc1UB z-v=1`B%@aeKuD4n^o%4}0pKDmFtuxPo-V~l`a-jNXTm>!0lG!BH%NARaB`TOnrEly z#RCbP(M~!4akCV_V(>>^6*z)hY_M4Lct{ImiGY zFhNPyn!WQs?GB||RYtJ3lohoB9o&6sS4WpYB%fNoaa>i*^ji?5Z3$-)JUEj%^=WVb z*D)$YY-+al<%=`CQ^jKAF=A9IPBYq`+ix{|cY1PqxHvOEI5R!Cetqxk`p$#M{ODn1 zx_7eo>O;)_KM3>ugsp>0T@K#&A;bH!2uwOPIx{~xyS#N~c??M+Pp)6zJ2hPL(O)$Z zj|Of&&v27{6KpvkEg%G^oI-(>iU=DGwPHupc|7g3a-AmX2LKSLv~-emfRN82`!eeO zks>-ceoey&DsjybKssrfJoRL$63wF?5dY?MS*-XNb?l4o(bX1{DA;YMhe-BKygyadvuHeAkF5eIe3Lp)X_( zo6QB!%nwVRm50lM%@$1;f*Uw+nO^dkl#ZLkv~dil>yd0skNGHhgo=J)H>G9DQBZQm z1*;+HD0EOw=DZ=+^U;~Ofo>dy*Xz-l(M*sfp%YuwfA zfsTALn|jVS0=q@<Ssk7jw8xDmPdj4L}#8zA@Z3;64o--sJrd-uvN=dXLV|Pp&_I=KAA@03%O9p?Tx<;G+zMo_(4HXma+ibwr*F z{s{lhwWU<(04ZHvsc4ROiJE!5Ze~9Ke@7=c6Fs8@F)$SSP-;GyPMUfNp&$x~1h=Ej z=?F4#R|u;q7!D#q1PTKeFlpSI=I4kY$GmiVP?4fjuRI>q0?n0Tz`NN5=#x zHcbDJV9UB45rD|aLrAA9C1U_SqDqiANufDCtW;{)&t#)j0g$lams2ibi<^FPJUKPz zqtALhHoO5F8`5!gYFI+dHdq<}NLUC!)}vQN;-)yN9#cpNYdoh}!+Tlt5qCY~g1xHm zVJ46QOwrynj?LEjGhKlfW&!1P__K{rlzbx#KXQbi>)HU4!wY;R0bqav zB3nlTcWnOIu`6b*YY%jU@rN{nEts*1+NwRT+JK2Yi^kki1w>Uw);OgIZggG|IyzGF z*6Pt{T}C5uJ7KPFB|mh=b#icexOKznGuI#AJF~t`of~$3a{cMO>yPh!G2r;%gjt*( z?}GF>J84f&7{B2!%I;7^Ej$|U!NW}V&aQ8r8gHE*Zrwpz_vs;fLOL~u7~Z$8U*9`D z+&Vqox&HLQzt;J|+2yUX^OMs7i2Rt#7;fvw#>{x{r1jB(2cfH*`=ns(i1Ovmch$WavDi?}vlIQu#`{K3hy>jradYH1S2H>v8`&{{%m7pXgp5l%3Z7^5m#`TH8^gF6 z4Uxe9K3Jt-H=Z=z$Syf%JB*VFHT%~0IQlciP4AK*1HA{JH00-CRFk-tJif(krW1e+ z8F2D@fdB%YcPPh;@(3B&2+w#k9gq6^kv3rJUvM`?y4`wY&E7KjABqtv(5Vr}^mP18 zSkDCnsU?9){$6a1T)jjYVIDJ$X-!A}dJB{In#b?PHT`U;KEG!vM&WAY0~qG)ub($VbuNO8M#vc=Ehzik77f*FIH49yit#uV}lfeACM~MJt^6J=>F=%$4Di^y|3)D!i(UIsq z&Ez!|!jA^oR0enuCMggHp~I%;=+tm=otjeOiXLvA>Mu^3m5ue~%Lc8}<6Tx+hFhni za$%O#=b(m*>re09aQ-5Vf7$ho)6=~(%Nu9cH_j|?Qe2@Ld@qPJs~^=G@10%VI5nL8 zNS3gE)7F_X!nR`)sH&YE`=WktC`4>{L~3AyMyoaeBti%_na35w6mT3d_x`C-pZocv z30V|W;P{nSaJBa;MTJjt9uQr&rgMMeIule3lK}+62pAJZNqf>3N+%o%?TR8prtDNR zCUy-XenIM1?j`~Mcy%22Dn|iQw4}mGT1h1d&FV1`3!2!49-TB(PR0t6ya^`argw^} z$n4}8H%=26SpljEQ9d;E0*vtdk~a4elp?A*tO;JWW^h0o%nUB^IsFl4Xr!Nk_k*l> z83e5eFX8K~j^z93B_7SsijkfxNASs!cIr9toA)E{Q<(91TKY_vic$ogOGnUvaj*kW zGR6hmc1;S9UST2>RFeE@{C*nuIpXhe*id^2fZq@J9u@*56c}rYSmibx zh>)KjP1KU~J(&TJ%-AQwsy*?&MW})OBR2ee**U;njHjJEd_)N8{Q-l{j{Y;VGw5NM z8i`LkHixaoajvCX!2=fKm9f23qqy)&_&^c56hIp7=v!VGP!1dah6>SxjeOqBV-vVn z9kP;uVW9b$S2{_=R{Sp=1LNQYoXRlD5SP9}r_!{r;<0l726cBF1 z-!)*PHg?60TQyXLPMHKAeB>^94RIqNjXTiTUi$c?eH<0|F~;%3hIb=xxO7Ud>N-$v z$c&Bo^24w((s=x;P#{SB>_IS>)As3jeupQcZP?ZT{xsX?u(xy&fserPw{Z6VAp6vq zd63qdV$~4lSN$JT)t^IC`BOM*xr99Y@JHHA;j^7Wmq1Lp7{i>t?>_L)D}(1_$jKN1 zPNZ2pY?#FmpU@xtE^Y>khHi@Jlr%;K|K@Z% z4#7|Q{JG(({aX7GF29M zPCwETS5`tgJ!Kf7E2e z+{mp*a8w_J2&56W1whHT6r)HQz>W7bOi39^Uq_D+^m9xr2DKThS`ePfQ7P{G$^i%m z9Iv=W;`tew@v(F{0g-7N<`66bL}7 zo9dwmn&7%JD1e}%JVvc(LPGJ})4s=oiCkNtBWn;s;ATg0A@Z1PZ0eiiP|1(c?;72z zo7(sJNDh@Wt}@|KM*bEsPHa=WYAdC>zDBY)J_QtA3 ze9mpvV#~N4OWt77+s$)Vh{pA$e==;0W$NMh^dOw-&uJt|1mm0@@552bqgOM+xRV+# zPEYr~*>$`Ny#tdwfMUT9#7&$23FH!rBFcP=vIP)>B#q8#8EZ0 z$A#yB4P-MD}5%ibN4d*vO6I;dzI}D?vKP$;S5^-#hky;LjxjSyV)z zX9$hIEkJ$YKxAI);MrQuv91Q>r1tD-8g5g&xsQw=v7(^4k)obAnHS}8aARH@X&QNOxms13s-RSFTxVV{G`v%z`%V*n zyx-P)*zLjK{2U?|5*CrU8vr0G{*o;fWp^@{XpD1FKZ(leTin=IODPE}7ZG-3CG&LG ziq-|-vE{3PV_swx;KLnFgweN#c^+N4i~)}hfJcnSMLi`g5b8|1k!RGJjsOTM=#ylF z6E^v2voA1&97O5K;EcJQxPD~nre^3S%Ey70{_RM0%85rRjYlB^c-UBedXPD-Bm9vw zp|Q17W9sHm!zFF>RT$6e)Pz)(PY=Sc8-IFpknYnP;cjmH`3OGoc_VPdbgbkN5jrU^ z9xRq*Hdp;QndQA<{x-Z`Z=RR^$&c9urR7i=iMpXaj1GG(==f6A+i_*BS^+N!9Jz`xqWc6Q1$;z!VTug7R`v`npi=~mb7iwS`;RFCNK{0ukLZnt zbzw)>8Go4^eRQu^A^fQvXD9nHkBanTYEw@mT0ynYYw$)ac(bYI1&ua|-UC9X#&keH zZ~!tl)Q@>dsX?Nj{No1r$YU;ZGUN*z$BM?%u&%)UB8&u+K73yPS!9*OkE=1`TFjCC z2o$leLACXf4*eKQ8udY;0~V-328^Oj zYub#b*9^zhhO9inv9|=W;B}+XJNlWm6tDS}AO(1U66B2~jHK5&t{JL;A14{d!3bg+ zJ4|5?`7;uBLaK)_qX!WK8mG;g{y#;3VyC4#=in#^fy0&BI3Q?lp!N3Tl4+?oocrXd?^W!H%+K&ft4I04VDSTaqcsd|-s4{V@1F^mw4B<_@LFH$)62?xG&w*`m-oI{kcsib| zSQL*}G-1Qs%*tqFHVW3Qaa1hpS?1ww_hx8zOC+!iGlbyqelvf`*H71zx z0O21muP%*T-6Y?M375$WR>^ALU9TU{8J&t3NwwS7(-|^m_E@y&^Hu z;~-7Dm3)snQAxI90fol(%E}V_Z4Xjalc~Is9DteJ29TT1l&S{+j2qzrx(Aml*8mYGrBGo7}_y| z$>>2uFH5?A+$`!DA05vI_P8d}2@n7T!p$`2$DHQE!;y|4$C>&VD-0n7TrY>&Z{)zH zD**|)pYJmm{qxTG`HBTc#?Yu0*<`29df3FyVN*LS2t=}yg3l+94(&D>Fx;VFfB_^j z#Zxj$7Vn?pm2Hk-h3bd@o~}Xh0V7y(qa9!~y^ipjkWvNIssut)3*2^q$u*0Piv>>( z936vDr$%PvY+8}`Cqgh)u+sM?DN$1zZxsFL$E}95Q~f3U5Auq;*I>K zX?xt66g9Al!vS?$Y;5K$<6q6!3lFHo`$5=%zoV#Co%lSO0I~&85h84J^y(n8I*snv z7~zVZj8Z8830Q&|`9iQzIe--bO6Jr2S}X%Kc$}9@^rER;f>{)(qGA$GvjW1!+!oQi z9C)xJR*cF4{1IrgPdyV|HhQy4i?M|{JHIB-&mqC|`|3b>8P{zRfup`@Z^aNZ z03viXUbY1u*8obbG;mABpdOSGLRt~AxNqd3!jWu|At7$`J2mDWkWf6R$9vbW@7-|z zGR5KQ`O$Ck_3WfMrX#g6;`k$;$XNP9{ui5kwqq`L&QN4{S9Ag5H&5hoU|&cc3&f*kH%xPIXvl*8zx zh3)GeMiPK506@kWsU@BEM{wmBjO*j%RgcvJh+dW)0o=#&B>x!kYdOvc7H|{th+rZ^ z&5Qvg99>uBvC#RXf{X|*DDe31f-&7s+9{2tbs~V-9Mq3tM(-^y`r3*Ob=;7Hjd@fQ zQuo6!7qEiBVqoBB$fH9kRSEbEsJA7jgaMz+m`9=n7%lTh?fvbM`jQOXO9riRDWFRZ zz|%vNjx>HXFKNt=er8bxN@_)X{P`JRQh*K#G?)nJ4J068BtDgSCF6-xhLLeDN9l$o zDIc;A=5rm#k?;Ng#PK1FV1=-jZ~!cB&JWE|B1Vm<#no;kMA7H)2N0+Fh!%R@e48}> zbfqC4jc;8Uty@jas-}5apa?+4!-9=GR--$5aERIbM3mvNIKm{%>hyS*+G-EdCWE?;Nm>0ljf-`vN4^QTcBvAg zp=uzdLgJCBjg>bqxB%{;dUw-FcOWVZOvv)S3$K7=$e=%qwca4A&?)|uBxGTQC;wby zC51Ptr>~^}KmV2T&oGLWM<0ng5)=`pm*e;!hsxS z9IHswGPygXrj(!~i=YfK1IyslG&y1XSQhLRk-b+()SMwij(&6H$FA}zyiQGXx=b%i zGPkFZt}#Fe01*TXdc>-PB(cH5Z`#zHK_r2|Fy(k)a2|t*S2E)H+L2(Yn#9*4)QDfN z0i!e!mI9Qd&GHD7vw{b}LKE^-2Z|v>2f7`A5WK+ziB*OwKNv((pUarfCq-$@Fyv!t zSL}D`OOrkXBnT35oXkheE@&(d`8AL#5!P4-2_JvF;xVd9l3MYcBfd_Kam+1`bfE}p z@O~ozLC}itS(q_=7XIf?O+L0)AG5k5>=b-kL-=`&1)qx_`<7Qp9D3E$JX?!8Zo5bT^^Kd9hSI+D=sd0%UoVD#iM|k0?5b)n*u`X zZ#V%H0U?BgjsywdG+k%?->2<8hwA>i91E+WE(5_MCwCz(fNF1q3w(gVQa= z19}@;qg4{0vfU!|AM#e;1{$}bW^{h^3%wpDajPsQ(-=O4u8*Q|z>(U=V~;>S+InC| zvPhzpz}^em)4{45bW{pFU-A6WtgFdmG2W1yibn)`IWPoKAn_YJ*`J(U-Z;Cyb7pzt z%Ltbz*B^Z!h@Ku@e|#SzZf~8`ON#kRbM4`1c7hP3ehBxQPY>=lpLXsypO$J!@_r;` zB;U_JmPohr8^$5QPc*yQYiNI(%M@Cui0tXO3^2J-!X=jWf%mGs~m1;Bpf#*UN*yetmLged8}*!*$cW zQ^Uy#yW+WF8`m1HJBI6{QFRLAmK6wzKSNxLyaI}b*qQDI@2gFY>!qcfGLKw!ARQ~2 z)lDu_^}kCtgNLDNM*x*QX7#QDAdd?qeN4jW?FOB%s<)~H%l@&?GwPJCh>b?3g zPB|4TUZ;lu3sZoEF`dQ{txoqIKt>E82~5V&zCO(XGREM|fR~X?yvfQ+0U>d*0Fpwfk%-6z^Hz9Dk>e()E~yt^s+iVXCFy={bZvXm6ik` zcEaOpDUmGy{Ss_3TL2SKAelaYq8de@h_Ba=X3faMkw6O;RGMtWmt@2)!`6fVBf?k$ z7w~>rKgc*2;R9KDnb}b-Jul82S9DuA3Z|h6os7&uUkLoXkqQNV?&9-`ehOZyIrs2D z*cm1#R6IB^Ax{SMW%$PPlat1$HFkPppaE|1%L5QOa(mphd2fwa6)oiGb(7$R@LF3V zPlc}mLQYk&8R`aeQ5x|Jc#3hu!4p&ZVkQJ5dp7WRBcCB6j&pHPLm#(eHvUlkka~a~ z3jih9z<${IT3Zm(F{4=m!iKa6%!+X?(SQ8p(3y{gk-7#RoQDA@2M{W1szSBj17`En z&AcJcUjq|OU`V!Ms4$IpB$X=ld^D5|pa2z{kYbs9%7I8RrnS@LO_dA{lYlCn83bCe zss5SiSyhv~acVeum1BJy3jUs)UEcbJ@##JQ$&;6sr~70&7si|GM1&AEB>zYHh;d#CzilEmR3S78>XLT`v1&QA5G5PLj(ekw*e|VT%^lS@0>Zs z>jGmr(UA}V5{daD<{mPl?;_P(i?09jeKReT(T|ZphFy6Xpymj+<>z482rs3@7 z>Ef38;?29(T&#~I1IK|h zswY2*0tJRP6c@%*WjB=+cC?F*Z3X2dsvNL81OiC%gqXn>7@E-9ZnJqE0Z6*fm_S2~ zxz`|ekwDXJ1eR!kPuD>RftwBCV}n&P#%J*H8_qd{Pe|%Q5E8+sXA~04C?;k^N{NUn zh#t{(0)UcGSt*I?f=~RKy%%O)kP@WExftVuoA7*Hey^-*qoay6B@;g#S7B8Vjo)(| z$%+scN71snGiRWSiD=YwW2j1mKj-{DC*+&SV{CBzY{oD$E(wSdc#Obrw1l;;VdSq& zQq$`id`WYuhRpbODtMdJxHz@Iz=I4RqMs6Irtzu~haN~f2mjO%e$L|0`;0g8W-gEV zgN?i&r;Ojr04y3OO*K`8E%?~o!7**e+sYv+4joLPt2|eA1gq%tXn0Fn<%r10KUGyB z$q7e*M>1F9XH?;!$6^nj?^ z=9+Ah3z&$-fn|AM0UFe_4Z)`dJz+DzsQ}d5PHhv5n``~vPa+F(XXMSqj$1D zIWs?|F(==@v4+ikI0|7_C&K7e{Qh8|$N&EQ3Uq|T5S z4J^VRN;O=P0no=H-i4&BQ|b-T!>v=nq#pl)P=AG2HY8r~G66gq2teSXCUxmLH8?%r zVHG35fSwHG_@g^M{^%}GKe_Yc5AJmLjk|mJ&b@j1 z(S7#jC->F6pWS!wes({;{mFg*<~#S@n;+cofB3EY>mPpW{>~S_=l=N1-*f-q^Pk*b zfBM`_W^lhbFa?N`j$PUOyQECvEsMXqHwj+B}e{UeqnXekUL z2bDb`sdJ>5K?c#jwayWf8`p&$a(9RtP=`qB4vFXE?E{2F1qE)5n>#AtFGFq@WU$+~y^J zuabWSe19hYTD#PVGb7a_!N?Ft<-&$l4*<5O5?euF_MAXP(zcl5MBYoX@tO#5bo0aggQ^DYyWmEd;PY3z zG8#wbg$WJGkt8{lL-Vc3oyicx7}%?z!9fQLA_iY)%=WTjnVl=Nq0@1y)+iMhlZtPP zQ;6v4W}iq@!K6(M@^QlzyFt7PW0Q}fQ&alI7HSF&=|k@Eh^hxrDkxl_BrIY$N8mwK z5dt%v?31@c54TSCXD1DYqZl6?Ju1?yeiqlv`M%>l0+55SS*3`8age3?8yLdN=v@LI z;POMKLQ>ZwQ6oG=bY{+3=3W+hm({2(W&w5U&ra48*jgH z)7`gjy8G6Rm#^J;`O=Md-?;hyJHH-&aP$2SZo2(C0Lb?qKpuW@r-vWh>EU~Ky!*!8 zK78k%o_=)ipMG**zx~<$^!{h}yLUgj-@g6c{r26D?yrCN+5Mf*f9wA7m%r!!`PaYi z{_N}Dx&P&>AKgEAdhZ53xW95xzx;ygO9F{_3ODPMU;cDf+2wei1>bVN(P${_(`fb*(q(%Ws2(spa#ay;OB(^13*Fa^7!us_7$lSD>-Ie zJ=pYMTx!Y+iv*w{`w6HcK!E}9n3T5gJyg@;#4sW+RcD4g4rr&ad5nK=qX%ThD*(u@ zbSrigDkqmE7}-jtYK}-*ene`|@0?an0tP!bp6Kd>%&Rh6JjpjF^Fi5k3aEOx&uyhVJTdF8lG5gEk)v--HBF zl&Fsar$n)h-=YKt7*oq`@+o)--0ZzODT??^U}Ps!T#)(#My%k5!nJE1qhfcfBOim6**XhaKNP|r2NSQfE z&`ch^9(`&T?_yJ^8dDEP1Q#@3b<=@SDqWi6)5uxasD-w5Zx)Z6!amQI>oFvYoSf`W z=?_V#ywc%|pZp)4*p4oHf7|F65qb)@U4xl@4yO7g{OpBtL8YH%?D?$+L1O)UjulOoCCxymY%yZiOQy;&dJm*= z)g+B$5tvkrQQml1LCS}T{*5t!$e4g4LP=IgdH@x%Kg7RQIgUKgZR8+WN zAOO5P7Dk5W#v^VS4j~XlP)sRqgYUyhFao~6YW5)FJs@KWUl4jgN3i|Tlz3tMzRz>A7MhKzK#L6nKS(zg^z>)$>9aB`ygykKqQHVO-60(oj6p$ zqfCy1E#e>olLHUVh)n@zLjfruguXs5rWTHEDXe(xQai4Jj+(NuV@1>L4TTSQ8sNac zZ>G4AEp_9&L$HaQkMM1+PLF=P$}VA}>o*g=r-Sr?98?-t`Sc*dKW^W>;s3}Ce#FTh zy@5TXVa4~6dp;D1jt)OBVO%6`X#LToA;85DOyhHi)12KQfJl4|!c6}8Y0#JK|${<55Hjj)r&uAo01KssaV)?I@RUogSQ?@A0@*7=cpb zB`1!gR(OTRx1PV~$ew-{*fiBNpw>ySRHvL()_r&XrTg2T|JMDZuYS+{i*J74{rR`Q z@BZT3-?{(r%}?$>fA^jHk6(S`{_evYXJqew1Jc|I0D%VeU|O%ezMEz*4?eKbsY+TF zG^~q8LYAzQw05Q#+e#`4jOh*63)?$623XKGfrGFaM8q&SIbtaABTFC-qo2gM-5ACuotR6zLh>B;_Ij?Np=F`XH!x$L<|jx$zXA#A3g)Uh6F7$ zB2_~NMI!y}HUlp9Gud~f<|Qjm;Js(%B&#cO49RZ;DBv6dAcvphgX+W2?vm8H3_kw% z>L7ccE*F1?OpY-Xpcphae**y7)BV7x5xdRhvTvBb;i@;5w;RRj>+G=+e&_3LK3C=a zH*dRJy{V`tSB`PzNZry8vIjomSS3Z;(LiSE*3@lu)N9iZI7C;05 z58BZoEmlBkz`Gw>E5aFLB zJt$$q%uX*4tN~mOrvzj%?mE7|PLHlLlN0^wIz8m0<>|BS^VjG)>$B!V4@>zk0fLMq2lqpo*cNZNaEJ9sj%6>fJerinmRfsxPeQ6X|M^;FSf( zuj1b_)=v_Eqwf=_$RR2h9zx_WI5~|@O;7;|m(61UkgRfuesE$4BUk}mg!KxFnlgaI z^Jrwt_@pfn)fEfJQ$oxyOxq%-dY;qxRi}YTUiNvUDvnhRJV+#kWn^H&5&(%utE1-v zfDQGhba94X56IsFH@$I`EWOS`VHtr3CUmV#aD$!`!_+XN&nJy)MU{Z2S{0*HV-Z1& z;)As}*r$=M)Y8qQfPsir6ebYhAu38~6e}d4#nbqn;d@on96skMD-F=7AK)_xEA^OC_NLNMx=nVp`qUqsEos}$c;3_b`zl7Bw^h@rG&NT-55KRwzk zcJaVjjI|94Kp9iJ1t0@5NM}z*U)f~ac7wT^(P)&=*za&)%Lunj&2Zzs4>(Y&Ri)=7 zy?;1v))=vhx37&{)l{FVkA%KvF_8WxJW7?628B2E-40_of)SaQAj*g!j|;)2HjyA? zpT@T0xE4}LlAok+_({&b4mC{sj&)VpME` zN1acjIum>t@il)MMu$GV5$-oPT}om)2;)BOqVL0RY(IrDx(6A|>SrhP7#g^3fR@}7 z6Z<;yI2AC*29H8qYCJhLU6LY`Pv$=^-LSftwh~mOEH_W+Hl3cFu&e9LRHW!3xFIQe z@sC$hg~IyHr=2?vC->8vZ{6Si>}U5UU;OO;`B%SnfAQV#x&QFp@7(|X?N9Fi^X<3p zKYsaz`?nuHxIezVckjp9eIiuRfwT2DrLDXYrI#Lj2nQez%J@DVl00~W0y<3LBT1bj zjVNE}G0D;2vhlIzFL-vcv05Q(WxOOYGq$ZOySb=oYWLQA~U2iL}-MMt?vgx0R%uq^qIs_tTb8{H@{28#2m?15dsE08rP2~^$9`*Rhs;m+?2pTLiGy7D#w^#1b%7& zX>J5E!MI#1*<54t)|87ggZhy^*J;k*-vm+lXDvlj>m2BS#`{uqbp!=EQUf;SF&>ud zsX!Zk-ds)1(>!?W^mk}78dcfY;}XA}0J2dUc#X0`V|(MlK@mo}c|-oNqesQ=YIxsN zPzq?sN`+KCGy22?i_o}U1}uc?5tPu|H6bw*Vgz}>H!gwONWY^**Xv$ zxD+Z`iI+tqUK%|<9-GqT7}vD`LPx8R(oy<54oU5(D-Y01agf^G9CRuuI~>BMT;!S`*CH`T63} zAL!HYCfRTVQ~3>l+&mwIbwUkJ*^@Ve2RIOB3I2kd%5Q zLF{fes^^id7~k7FJ>BI|E3jfGNm4yJ|M_N^$nYWi)ycsd$K&-LJc5!H4CS%UB%Qab zll{r}q1Yu{e#(z)@$C`3#OI0Tb-OwVLC4Ha+9izMO-`A~DLpx*2WQOSwCdeyy14J2 zzHxu}{zvz>Km6qW^vmD5Kl}Q3?$5ve+5Nk(zIXra#~<8({`xETA3pow{^!R>_oojJ z?#p>`p9qnm4jiUe& z>gf6qmCW|TL?t1nLs{Ve0KGDLT>>D?D9%>)Q&6>m8fBQH>Utza=_1-lBQyMlp1_X>vR_qmrPJOMA%Sg|3OwnB8+%- zqz#*96TKcjMi}_2_(~!o;pIfLPD+FL2D=aF+|_S_*);1YgX^~ z5PD3?lmGlI*!V9=;SedkDnLjNdQ8IdO3@jmT&eNm!6d;+NWWm)TWqEL4zxl!a_WjT9uYLAg_xHZ|o%^TX z{DJ$I-~68Y^RIt$|NGb9xc~b7ckVxa`MLY^w@>b0JUzO9{`lyAKAzksLZ)#?4nAs% zDlYsaz=8UA_--H8Cjyj=o3N69B!Wcf8pcQqcK*BU3 zQ+zbNX80?cWl17H$cof`xXB7ac zKmAmWlO_L1Wn3nXVR3+Bh*u`uP6Bg(dd~3tDSZm|yMVIEn1mJ|FM4H!4L%SRl#m*P zfY%fuC@L?wLk5iRO>*P*l>Izwedj#sE0 zR{}`W=TSn1h-H3MF==^6s{I{y*H~8_K*qM`1-@?0jhSt?%eT|F>JV}ueIP>hVT^MD z>0k@1fWa=0jwmZz(6Z?>5#?wXgpmvx8JM7g6XSlRN~v2PKRI;zW3l;1V^*Bfq3dRH zRVHXrUkUV_v_`yG=#cd>hXOjZ-&{1usM2*=q3I-0V3H{{79SF*ks6!sNjy9>`oQ{&qbW}cXo;y7R7>e<{9co9X<%2Pj*LQp@2@;~g zT*RIayC$%}^QnC@nM(skn8FbiX^&2tWBMZ&)f4}70%3x}1u&)?e#vP~&E#?9D#q-p z@sfNS@#oJUF%D`&1cq=Ll?w$g2T+l3w>mXmoSJR}v_-{a4dZV9x(F;DXhIb4a1Kh! z8Nf#do_HHIM(8;?)vr$VN2iCg)5Fo}es#t!&YH?% zozH*g{^6IubAS59PwwA*`K|juzW&<%pWlA%{^H$R_h*j}?tgv%*8TaLH}1#d(S4#6 zD(cM2VoOzp3#uHXgGW5aaL=306I_tLb#e?o4gwa15(D7F7Z%zC9-{B_h*m5(R9OXy zDu-7PhHP9{I87`0NP@RS3`6QAiQ`*p8q=wo#uUE`4e4_99uqZ9-bd2IIN#C9egFzZ zhLHq0bA}u_jVy%7kUSLO0RcvMEPwwA`CrnJY5*cB9c*F%B*Kaw(oy>e1M&StAfY}P zHBHIzU$)G90P&k{c)L8-6(3J8bAHYd`%Gl?v%pAWo0Ge8ye{@{q>XtWJT=fq(Ssx0 z3Ij-o8tj7_qPQ^|00y-X0Ak9|Dij8m7#XZWylqrXBpek}0Fdlhh6$K5smw#jn1C(@ zBIKCr070QpP$s|)KNrck8_d3Xa(cXXdVB~ySUz~A(-V6{y-0tGrFjJU3YCKKR_ym^ zSQ42#Zr@*)NnHMa(2+EY$42yVW5nwD(8T#Wa+1@Y7-OI`nZ*e;Gir{#3OJgnR&Ycr zeSUd-EKX`j1a(s`W(*2gsf6^eoVXP|C7k!fUoJ#ebCLp+Vt70KvDs{$HvO94?8nVF zJTeGIx4PKP0o%vH{BtcL7Xyc`s~c#niUAKn-b<(PIG6;!2?`QIXJsQ^o*LP8h7g^> zgNwwyX{6>fXUdCWKsqLM-X`m+^=o({Fqo;cJ0S?;b>~Q^VQW)f=Dnco#O3 zcTSJDVdTgr|3)0wN`~s_1v$ucgdxvr#!;Ll&+d}at3xoHAELqiAov2pn~o?U!gYG` zV??2E#J~32?AtJF>htK-7&<-99$W&HL{JfWa%Or6Wr{~9Qvu`2b!rUXBR^t=6b`C* z$nx^ojIQPjDGBsTFON>x6&cMvz)eB*n80Y2|09-R!2^g75bz^aYPxkYsvg71>FF+w zQ9+1NW4K)$!3yw^Vd9K|CUk=oeIa1XOWMWh@#6G!ajIXP?vKv&M`!!l^>%ir^~t?? z_||>?_^tc)%@6M9x8J)zeD}Tk8}Gh#|Ln7G++TeDrTh1vfA0SMhj;E@KRvpC_u-BE zH}9U@zkYo50HT$LInf@mN{R>ci=+cCI(R!kfP^;H-+AauLw|>)se9E(CrPJ_6TNj} z@FP@m=mQ9WMs~RYATatDC@feZ>75t?L`*|aCx&zzKiU`+l+aBgY%rkreS#7hzLxy} zz8-Q9N$4Muy@!YdED?Gv^q`ChWRN*N-8YsOV(7?F;!lfBQrd9XWC&(QRcK<79h?}) z+#}Kt#mH7?N<}2cu4XkNk4b^lus*{@1dI+mR`ka}GkgS)1TP~#4{wJ&3si}qN=Mw3 zYpgEhqD2rpOhE%YUI%(xHjTz+C_@9{n3f%#UcpGz3`WsL07}3J9(^UkdIdz7(RU=+ zF-1IQK%7`*Btl43!6F>0dCnnS~~%&jw3XA+_K_foA88R=j4RWoB!mSgpKK` zYyj*)6Tk2!N)xlur>*Q7z+BvGAY~*1$xx~w!ah4b7bawtpoHLpc$t`Ft{Q+eN33X9 zhzuhP5%-9*5MP$6}xc*M&TV`7&C z&f*4N>J0-sjVi?>R#gv2Bb{pRIMqR@!c&6O6?Uu(o+{RBa&wUGAbUUhW4uD)(>ij$ z#*NVK<{-lNL=}aCH(`{^Crm9)^%uXf@7M4PH>J~bRNlkM9<1OTJ`^3^w!tLfH*81Q>|HE9GskI+RDfne~7WnPguWi?_rdZ_555^~DW z5gqe*3fg@%?YzAAb0q`>XGNbbt5V*Y00__O<(0?>@MH^Zvd2*H2IG z&mJG#fB5jm{jcwy-2db0!TrJI6nr1}cYz&QRJu6e(OKg<)d-$AG!8C^+@RhmlM}Fz zf5d{3E)uV6L3-8Lr!=bs1==`aNg9?VV_4dsPf1v|EI|}Qh6ufkPA_5n3XEwT6zLs_ zC5hI-HlN;JazQH4G= z2>SybVdI#jNoM!cbFjHh+dDFCe`N+di1vxa6*&8%)XSPoY(}vM}6vYQ4@${ z1`3h@P*6lJ$0E!a_bdk#y{wkmkF>?l92v^NY3PuG@Djm9_W5-qe6QsF$uWkO-7BEro$V`g-$R=FX{3koq z5V7BMUjh{NFhl6-d+YFu?L2Z-ceso9I3`I0@abRXe)mmIIJy-vKw)@F?S+F)A39Da#1nPKQ)00YCztiU3eL z0FeY^RuZT?065w)yc(%5^$`rkrdbuERE=?}8wm;tn~$3TqKn^?&ZNuPIMf67dCa{DO|;Otl&=PT8Y7$UgnjccHmGHl@e$E&n-T zwFh>3(0-3Y{M0ThQP9=)QXQv-{!w&+d2ce|CTP_IvloZ@+Z^ zjIl15vo<9%|2^y_JAQ1rrs2e)_OW@x{5kN)Qe7guBa_F6!KpgMT z<7nP7$MgE@EK*q#r~os2R6aUu12lxOtypYmqiU03LjZ+D*gh#AaI6bL2~6ceAQMUt z^|Sgir;#EQ9UIk+5RsfT?zE=l$%)0e!#VsfIOif=2qZ52m8MiZ$o)D>p;!f_IZh?C>pB?I%X>*`fOO#eArga?hl%jsNGjH+VRY=%xXBLR+vLee z$xkXP8bC!$CU&8NQO~6NKyODLxjMMte0mcA4U#)dJGWqKY=dHmje_Vk1M`ssW3?c+D@Z#;eB{_f*@_fOuucYpfu=>FB4H|}3Q zJ-Gky{*C*KHxKT=eEHt}w{Jdoe{z54tTOI59T_X+;DeTfhLOyhgQ`aL#@`9pq<+)s zG!jMOgZGj!rKSLYGOXAXXI=nE9E}PPk{jOr^TYQOT4d03J4k9isM+L-v}3Z_Yp$E zSXgY5Pe7u;20~hV3ftz%g6Ux1xIZNGeFvJ~sX8Kv=LH&-g&xxAT8ucRWshp|8*S

8B4LHh4OEmL86kLE7W@rTWU+BWop<9I-LJ9d6;9h$B3g2zNF_;Qitg-9w3NUhn`6dYVL=LHoimJmN&(xnKes!#2_YJ8B0e};qA~uqFV@N-Vd#Y zf0qzIckoX*q4`)e6#YE;QLE8X4B&zl=a5!D;@K@P7@*NniN}Ls7$A7+<5AU-lCDth zKEBLY133;1ozEZ1{}bY&$%km}c5Fn19VD6F)&&(p&J~%+zY+d{cqpS-u3+3dv6GlG zTtKRC*M}|e?*V0sQ{aY&td5M}3at1~!;La;!=oKl#~tKrRa-RHp>!XIk92ntdd|wp z8jt&ac$NFwj!5(MO4I+&@w&5F$ca#8(2>wz|2x#bwxxr8=sBy?0XfU5;OvdCG`rt2 ze(pFYu<+et8wF$s0TJ-W63;z0H+4UMyQbG%3XIhi+19iOiCudo(^u1!vwC%o=W(|G zRrKN_S~PgghN@-spr1w5|DH$(UKtp1zYy%T!{*(7Oe|p$66X3u9jZVsw{+!Mf};+j z`_Buvx9*Bf)gHP~*@SQ23b|dT-=3VGp!h7?_PQEH!HHQhqEd_(M?M(uPJoB*+diR= zL={~JSnZ>~%75H;{oz@Jl4NJ40Hc?oP_a}(^+Q7tGoh}V+v2r`pJg{C&v~G(&Zw)n z`I6Ustc!`KQL1hxZ(qldoRAi^xvy5bwc0+295O8A!ZNhj{bpH4k2T|@FK5LTtA2EB zhCY4l33*xjWqjjD7a2QplH(r+e_y{N-bXy-9q{~IaY0;qt{Rqa2eJLbi4l%>orYIh zrQ_l|MTR11qyUiN|8aUQ?DI}_QLBquFqF%mB>3{wKS=J5xbzgLqv5xwm`{*&eM;ah z)kmQNS9deT`9@#g78neLu1~BojD6Bw&A9d?_fVQ2&WA#jA9LLOEO@LEH!X{I94} zx%Sj9AfF8kg{}Q0{F?umC64`JXPf`@xDy3De+$+<*#&(VLjDv)>zFDm^O!FMupH~{ zh>daPgp7xkxPChk8dWgpm+0`Qz0)6wjWw$b8ze2K`4Xd*>Q-QGAiEvODP$uxuv_!H zm}u{ii_INiI-&8VxE-fyUkrS-!#;@%+#ltQewG7f>o_SKkgRKDWecFL#5NIwXS^Se zj>WKzT6u;u$sjJ##H*ry-VJf7k=_nR6?V*!4L4S312a3vTQoyL^9v@Bo@+Kos!v1t zt^q5Kht-=BI#%~pa2yF2UGi>^qv;7tBZuay1MKI|K^;WGc3Q zlvKS@g46DEJH;YLrGAEy{L6wji{gfOD-4B4#M!uG$`k6bRv3A5kaj6%DUSMTaTu8B z2vf{*WBl1VVaD1CWNrgHjIsRGGu%2AOcifi=uV!PtrBSxEi)>Uh}^ESRUk6R)6wG+ zL=^UW)5!#pMSko7s%zEILIoeyy|7uKvy<3NE2Ry`JTF*Z!-fyW7LhTSar;_S2D^L7 z&)v^5meINxXMxG~gGDUnc=m+EgK6V}(X=FbE7ItF%+Wui7!t zlgI(UX;XTr)O(n&&66 z5qE=ypFmyhVr&`Bf>YnUrp9Y5_mi@~Pzx9^#JbE@?{pFYmGdWs%35G4dfx_eE_ClMem z@mW?zM(`0=Fk$h#o^9-tz7wk-!9}=<@{}J7vl5R`G)feI(zM6eyprnt^Dpsuav#s* z_%BQI-QOq8HxGu*59`h_>A&|^rmeTfKL5$A@9mG@zPI639vk;nM>7GI%aa8>?mH7( z%~#6;W`RfK76IV2-@+`ugY(~O>pkCphkM}~<%wHJ*lCkY*SGnc8|7^nSOe=4jsM2q3c8z(6?~{sa@I7p`7WC zYfZSMe>%3%(+jBTV%}Ky(Qdg8k3zQIW^$Kzexk|=ayj#F69$ne7JBUHCKJU6AmTRv zRbK`S^uk`4$$3E-8^0Nos6s_%(3R_HHxHz@!=$#4h>fm3n|Rwo zR0$EqL`LS72wsTsSJi55NrEgla=6PdMCBXKzk!7C7(X$H)kT?_tK3b=A#i{bb7$YT zZuzpBD~2>WNk#6Ny0E?ZCNO@ba=k1cvw0v%RYTLfdS+eL_37!Yi6K>)xQ)>~iEP8C z;BJdQBwcf(7^QkZ%?OJpSgMu!(5P`#L8*tMhwa2J6G`EmN&&*TWgFEqJc`|dv@75wf53a5+^M8I{uKSJK*u{u#8P#hmEGyMbo@t`yIqib_`BLC zUclIvVP4w*fju+@r1VBc_rSkI7!C;9HYD>?11N&Y2;cUe$99E>Bd16G{Ch{ww~iMu zM|YNS$25-DreFv*vMFvH&~i=48^uqRThnQ%q)#9S|Sh@zjS8b{~ z`rC)W4fK(ijeWIhB;j-E(NZ(RQ;C9~_K-?BJ<0)px9WM)Trz!2DvuBf$Y_I^SUDfB zk*p-gB!tE_LGV)+lF1!0Lsi{-e_JoDkxF1b?gu@HQla9?R6+@&6r3QqvAWI6^r8kU zCYrUL2ImU_4loaY!N)5iIGP~zFOvO=Lx+lnC`FqT$~!jqxYIQtU4@+`44oyLmZ zKa5zW&dTps55~p-NG+@47^r*FkUG^md4e2>hVJXMN|)1c0Hy@EGqKa+I(zkg*tfQ_ z(G)AX?hgBh=$s<-t>D}}bky;>9u)dWJ|uixdOtM!|9BA3_HFPz)zFeYJ{cFdM7nu` zTM%NELnZF;2e0V7)a;&2Como&Ps2uKWCogyd}K&3)YOy`^RHveXpuQHMv*toq*nCX z^x9hDq|-}i@3E!PHodJ8?}&#Wax8xuzlgc)$ys@`Aykg|fN%#1s6n*D`Vt|7C}Rkh zN8oG|>F?Q&l^pC%U>-4Cy%Hve8(m3?G!TJqy2-2M|IdWzJg{-_*#3$7+4q=aq4g9O zl#R;Y-H0q{J%oel_cSMj>2|u~zqwcC(&sMc@$`}zUnf88?jO(9K*vKE@VbqCK)w#x zA-u_Hf24jm8n9gR(ZQPeeRZ*Axw?W59-F89I1e@;o{)R20BzuH`?(G-@kk((V-(f? zFQJP$mbTZ4s1cYSpewu4f=Yw@^pj*(_P9_*n%*(PapS9ntnAdz@Ek(;=e<45t0YK7 zmKZ%xW;zG`)5sgE*dOCv^a^8g+flPj@gUj^lvl7$XV%L9CLpd zb?{x8`6@bma0a9roYnu%x&#=G-#sU}08q5YT9*!;O&MTZi$um~vhsjf;WHeD0<g&v-WIbq!y{jBnaqWoMzDZxEk%HP-iHO_8IiAGljq)MTe)F2NI9TmS z#2iH#CjC`BN?r<~4pMfrTAp>q2JEwmUwGT2oFR-3543cJ8mMeb5Vka^%0*|(-~lM* zs4N2uVwlINBGVHK1(#K_ZseBnEK7up820mW+5|_L_{Fwy6#wzfp@JW2c8vs~4SP&G zQ$?6DlK?YDM@j(bhVfmgBuSo>GehIrn6!Z0lZRB_P9<(`OhLW3I+NxQ4qRg#`pUkn zQo#Nq>IArs#tQWkljFW(f$J}<>3wxs@d7?TdKVVMNhOw!a`}3N%u%S+ASGG@S|i9C zPM8^nJATx!(jrS=yAViel5*-t)M9>OW!Kj(KZv&$nkOom{Pl=7S)9jcNUF9qQ^v5% zMGow`BqIi%?m1<$V{F99UZ0u;hnl1A&w_<_6H%`+KBl?c1%>}N>qXPzy_00#%W7IS|bt?J?~luXPNNx@Xv z|3N8L)>i$WAbjoxK_0IC#43T7RlHT!(J}#oJ^>4Yoc+Z{|nfq z9MMpIovDH|U8tHaRmCQX-V92h1p!SHBu5=F&6vxTp-}ODDnW@$HhLsEVvbn3jt@7L z0|u`026-5$RT;NQR=luOA|~;>>pf{MU`NVv7$Af>Gp7oJZ7LCPC-kI~%hE|8J$J(R zd&c`6YYoF*nP4zMrSxr%)KU($ES*T~P;IVX10ORRY2fu|^htHo8l7V8sT1MZ?Q8w= z>UES-_XNRlx!liMTL^^u%7al(Pit?IO_S!U0kFcB&1JNXE|@K8lmw4l+ILi*g4Pz^ zP2bC{(UWEi5XEji?1u1cR5~@#0LvMq2c@fF+s-Gdj{Svk#@T6@5zQtxvS+9}j1==` zg>PFO9wGE1(xB0TD>U&))OjYqY7N*avOmcgCMjXf2lZ$ulH2^-toQs&LJ?k?SxdWn zgd!fkMmBfNfZK5m8Q_uW{+9XtXviEXi6gP2w*jxc|NQHc3dHlY;P5D6RrGV~2z-6_ z{VR7cNFUGKTCSXcGcs^u?te$}*Y}Xa%s-KaNBWMiO6rP`XXz1%XYrQm$w6?!sgLvk z7@$`o=X2KfD#qM5XB2>aJbAF;^;pM7}h z2}b4WM{$3=j<|;cjeAkWp@G?t(aa(y-s*JgQ^?rd4t>Ce_Ra_!?r#7|S_t(qg4|>3 z023TYeWYOVFi3k4Cx>QjkB$%_deNC6+P6P~^^2YuHK!T`iy_>>P69BOgj&@ge(eHL zPn|Kr^Y2-x+)JE80Z%#^TzXVAdi7L%uDTccJ834>!PxL@99q6|gSzE!!m8J#&T4bH zyu9b({rE7Y^5lGCg~O9|?Jgx0L$AK-?~Gw;xOD8`=iqBXo*K{iOl*`%6MG@^v0&ZP z*|rG98H_6O z3HrCh3qT#7?Cy|>G)8f3Dw3Kq3dtN(=^0WP#~19;Q|eeMSlL)myFhHiCjh`;n=;+$ z^Gub6w=thGis5HNRr9-u<>SOKvxLy9BtmmpU`-Ox3dRI9XY7VeGK%;qt!cMh=b3@= z!ni!e0dMJgZNY!Gk%c2$bC#w^m_(sf23B8PxES+0pc0ipdyR-Nv662Z<3O5nk>@?rA|hMZAKC%V0fd@pr;(8 zPo|BE4pl1mLF&3IZaq(CvFpvDZ;m;OX9U*bdIze!Zn6?);2IlBj)!k>sF89MeebHH z^qK*Qct5>N)-~-s%Nxmu*}(_RstKkdoMiTJhHdVyXBW{q8&O*!gV-aCLZXI9w2|7l zw3J$8Ky0s+h@T2GinNpO)I7sHU*jyHJ>}6l`izIkz1IbZ<=ET@edB;L!M$fS!{IM$ znIFu$V&m5IVV}%s;r8dUSm+O(^Kci_vtw`{t~&nNxR{LTY;^KQtc13OSF{Q1{&hV} zhf`a|yFj$1MQ_JQ>3)y{5$P1P5tO`oruic{l}8s;bkc6bZ5Lf9(IVr6&LkwdsWAQ8 z6pQvi=^9Y*`qiiQxa&S+)*rvFCBgdF1JSJC9w%&zb)l zc2{o?RqwBEmmXQWz!N|^dSWUaxL~=a0eg(ET#+|)$#yKFauD$e?Ci`BO#nn z{74*U8!^O(V!A`CgF8l`x-lgJKy`Pym7f1kb@|+{p88*OyzBm3HVAq?_rN54=u1@d zt|~v^0jWC<2&OmekCY)y8rMwuFb|0I8EKT}Lh4jvjQ}2>cjI0fG&xxSj~SATyfbDX zmu4t?z};X){Vn_s*odip(f_plPX4QUOWXa$FgYUxT64@8b9M-4mB8xY#eN<(GlsKx zuXP>k=&`QFgX&;MsT^s$p~4!rtxl5UgxnzCPz9k&8ype?F}}gcOQJxsFuyn7UQ$)a zWpspZ6zYBzyjYWurVzt_V|!21ly60JE`Xlr-o`GfpT&itez_C9w-dPCCb*T@PvbtKL_>-}T8ctdFYD9w_?RdAbnXKeK$z zYxPn(iYI^IC@{VCYINV0%50|CsDTeT#cQsxFn20L$FY$EqQIxdiX4ML(mT^|MAuyT z_n)viYj^zK20x62xsNwmuK>E3Yo2qZQP3i;MJWqT9Z+LD{Gu$(bf)}Fu0w9D!ssm_ z+49FET+3HKVqS>F08Hg%5_M!c%okMlzGLG;oxTQzGR*2-uiIk}))}Myrsnw_-C@Oz z{WS(p=MOHnWff)K6(Ul&}IDuu(8co_1h%SE6rr?IO z{b;`Ee`|?E?fru=B*JEj8UR(t3MiZ@^E|i7HM`H?(UsXG-W`wwyfr{?ydf@y;gxe- zO8NW!BOUfT8$Hm2W3UmWAe|6RB_bKh*yrR0^BS?8K<@V3&Z?8dL5T}`N)Bfvo;Y)$ z7DuXHgDDbi5q>wlJc#YiSE)TWkoJ`~czf?;{{%!Uv~H*WN2$a%#m&w?y2g6q{&4== z<8<^{;Khb+1gi~ zSqch$-f@NTT;>{*{>oyYKZu35)k+49^dgV9CDRpwk5CwbL=Yz_qF}{gkQN93&S8Wc zZ*HzwU2xb@S1Bi>AKR-zBk=G&g(6I=27~*i@yOwv-GZFh(m&r8VXC~OQK($fj~Xw! z8}N)(2_%fV`hY@lF(oMZ&3Lw#ZJS}O9!hBCT>(%>C<;o<_!G4g-6SMQ?&OGS{Fcf9 z;wTK%NeQEQeTNq)pN>TJ^7!7MDHox7J+npnG{`iStojB;IoVV)RH|yBt1FHl(Hgi# z)cUaey7l^Rdh^M{@1NG^ILOJbKJL=XW1uHD*NdkJlg!)5q-^`1#lc zx^(7HdWSHkg9SoSk=?b) z`xyVUvRre5G-N>X`5ISX0yLaGYN)cT+oq0)AJjJa2LkT5yU;yPeFLPw$bA=MI zxGhCrvMj@613*<2eEOok&#Gy_s=oI{P5+7)Gw9b@sUNVa?#&}j z3(c`oWQ>&RfVv!9A{-)NCmY9U-MG}+>(XCoIuV^OyIL22g_DvZy{fi1GRlTW=uy*% zKUbloJ5SkXf2-Dp@OO@CF#0i8QD;j$Q6_6ScRx)e zB9muNGK$zkoeEfGHQzIiozM!F8#+8Im?n(|O(FKryB(jw9W>!Kns8@ThGmk8{U-!R zvDIQQ1#uj(OoR!NuN9v%YaMFjPLM^9rYQ9CFp#UsViYZ3ex2ASB2fK;5BoB1{*z8R zL$O&T{OSgb7i^B*NV|KmDbY2@2Ikxb!q$jDhTa1~{$xR<2SFU{8-SHyi$H!E(NY)V zQaGkWH%PJgl zj`{9cLtlsC^pQ@G zJTv-c=M7JD3)(Y6gEyu_RIV!rhK_1TR#}Imsy9yem`eWZWaDcNrd1N5{;+2_4=&yS zUCrZcVc7S6$WAi&1hVvSCvf+G*YV~1WFDD%20|Xa*aGh?y@zFEx})^7k*{w( z#qeh$6d@;E?biobK#&J~Pma-j&rkG!?ptFH-UPA!1THeN#i*+z19JF{NHS74gh|Ut z0nw#QC&R-=|8OVSYUgT1qj9o&v%CKq9xQkE z0ejdr-{@jsZ2GH^u((T^fg)wg)swXV8ibY%pCDw0M$ZvC=!p;9VG5{Xfu=}Fd)ZBPkUvL+ zgaTg)$p0iBWIw|wVp)C?wXBBSO-PO4o{iRg1%2lI5T*!FI$W}Y;J>!>G$u(QCwgru zM}iRhH?~+8BV)&VR5CfmjGo6s*|QU1vDfme17x+rU|x6D=p@3y?IaGh9J`KHp3avx zj0yfWgcaTd=5C-vIk*TZB^=ZUflS%o%&3v{sNu}8iEM@U(g|MJv%Z-Iso9+B|LRd* zlejzw2Gs;1a{|F_>*DDl{O<7CdJZ|BzZ^m+ib816)VXGt;mM(%C=wIQB9T9J%)*>E zY{9@+Kn1$kk&-kwHenUrr$Gc1E$^R9ZYcWbv=!QnYun}K3N0NLYnwI5CUr&_-Wiai zn4t1N@r#fca{p!kDk56A5LzY|Zk8BYgBV&1BQ%i%3O;Q62*seq671D-h{-dcm4C+_ zOJPntO`#JvQ_Nu7z^|oLXhA9eUO0;TOR!1{jRACD>l2;aclvinnpuy}acmB+$E_QvYF)sye=O4N6 z=j$?pO7-(z42FlH3i1~_dXuhCzey7_9^j`Aw8{zrTAK(W80VYBoZJNTRgkX&u(~Wg z+y=G;P5J+Nh$rBfxXOgyO&E1tunJ~X9IGhNvqq)}EzA;kG&hkA36*602pG+29mCBPlu{WikZy+%rK9;d<-8$+zLLWl-j5_N$C7~ip4)6yY51L0eo5i~=I zU0@f>E7Bjf+jCU3#6ojwS2Yrh(7w5R&TV!@R5?9 z{ny&|x8xbC2CaPXO@03TF6!ARwbIg^#Y?T~SHV6%QpE6*)!l2W(Zk~c_?nxQb(Cx) zZ9v!B7~y$=^}ll z?(Ttd!_d1{VkJCM(q$gb&P+@2SWKhjb2^f^_jwA@@cBj?m)_f;W0kBpHYl{;2b=5TE910;dk1;=LG-O3{d^^-GME#ZR7+Y8E+T08 z*YWc)YsLWbftEU)Sq#6Zt(=3V0Sb#I55+!+p2#DsLFc8fYx1(9E|0FVR zt%)xX=;-r>zU`6#GKtr;HV!l|?tTvaS01fxQj>OTrJG;@k8ot((X9?DeyDuI>N0kJ7oZnWV_M`n}3rC0&I$>|c|{_p8< zHjV=-U;9D)+#=uMZwxT;gs|L400btxh@lJy{Op0VzWqOjx}GM1Qvl&p@S~_qXzxtr z8YRk345>9yykPZ*g8K1kGSn$b)Os>D;zh8rGR0^eMg*SRTDS#RtV~8n4hrw5w$3prV$f7gjuRTdqIdn#Kqe0PCoX~zV@9m2kP8>+es2#lar9xsbdPHFa|9kff#4TX}Z(2!iY4Y z$y%ShIHhUYT%jPmG@H^zOfOTwu`VX&3dPs#!=-x*Dp@(~4cY3rX$l6aP7I2|?7phw z2yB}ZHoK=Wo7(lgKm#fI{h372}(P09+mXqoNm$uxc@s-td>b z@-LCn;1mZ6GN?c5JbUzcMc8rh{QKyy1oYbe4ad`Ud&66?HJa~ZMI8TF-y0RFy{Hg> z3mjoyxX^QMsOuub90SrE^2>Tt)aC^SmuzBoY)}HvRINrm;N(T6KZmmWMzy${;f(>* zz6H|45$SJ(_uHB8pN!pZ`4oi65}-LSBES`ndpCUnFzdd+98}vK2y>}o|8xI> z_FvXKR~NdW=!Z-iwM_jb&Ni+M_z*usAk3VCOpg_S4bn!!0aMnPT-qO0Lx{FeUVk*_ z59G!Fp$WVRyxsh?*c!EaL9OIvOsCq}P(QT57@emPrG9<_2H!aY{|cz%i`DKxzBE$z zcY_q0|F+;owrF$@k6EYsE3@wKfy?7X9_gMYnMX3jiqLLE zW?-YUsYT_G1dm%j$ahkd%ZKzB$D2>UV4YhHv9uz{wuAJJlp9jPeJRsKbU!`1r~Rqk zTm3nCW3GsiHCLqu?KNqHS;w=@jFafMej!vRl`^CS!VcPT^B;*I#uiZRM+^k(iu{O+ z!S`(@v&d&L?+zkGzu|>uqZYSp9EoknJk5QlDN6~kHiYR*d%rUk{2=5l zSgZE_w^ogue++>9xv+sSl+cYKlCZ$?wC|Gl^#Q?`(OQ?m9Uz`whToI_lh_lmNc~$h zpnJ*deIwnkxioO~5j{inR_l8XCcXLzodZod27?)nwp>hM7%QZ33t0LS|5`y#{$HEV zzyI2NWEalZQ{uJ=G9{yqmNnmOZQ z%eyHYbdn4kyV>{p&2>axq~$oWXG<9Lm4fd+o%?N9@*9U5;m_eK8D4TtnGF^R+LSmA z8N7zN&M^3!NlqU|+0CwEx_F?bWgw~R*(-PXYV{UJM^EcUh;;U>tnq@vn8kbt`^Jn6 z&(5jDil2>BJH+FMq`bSER-UiPyh+FHxEu{i-I^jazZN$THW5g^dv`OJ2VNTczK6Fr}F!lisqt*;X+V~RI_}t@9^LOMF8?0?Alk(lM_rxh&Ykn>T z5_O-liWg;hC%W`-z2xO06KHt!cT4AKoGJ@`sb@ zdEfZq)!KjcNTf$!eZogo>UhDj$WX+NL9)-q6-(q&{7h#bSGJ|okR;L7fTrz&Au5Z? zxR>+I_wo;^*LY~%rUR$5Lwg==?S$_zY7yeH$yORk4JJ5bd-`n;{K&L7?Oei6b@SHj z)#jLOVNC<-sqJlUu;8qivXXOF%t!exPS{bNTF;_nW9_ z5S1J~&2>bKi<|-{efaPY3XBgk>#HbiB8xw4-maO0fe;HbzYa6Mg?Lthp#4+C+2=47 z0|iM1j-BM@csVsCNd`I-;$-!h80Br}FRO%}FHyUyF}@}$GqE!eyvI*WaaAXE9;{Zp zATyOu92S^D^!3AZH;hLuK-XWd5M2)OR;+7xYlc%A{62>)0A>Q_JC%eQT^Ed^+s&7z?kO`IA7;ds8{XZl5 z?-eGz`O|C}!g6SK-%#s}_u-?^2m8S={Va23zqDG~)t@wjb+^3Ve1%F|o)^>xay87zz-M)NrKJ>qjmy+49?YZ zGw2C`LMBSR|CRb>meIa5gjz}e67=~X|!6%Ud@RVyIbNE3Ss5mXmmd@V1@tY6xFDqwg1%(C^1iL{i z!`zxYg^^SmK@yoeH*EIfyP+X=KM{xu(G{=5<_op4?v#(pfhSHH=6-0W%7>l1LYEBM zrUSm7=}`FQixIAF3!^Zh4ixnS=-}G`kM+?lA=LGmfu+uChrhtf)e#5Nqf3Ow2|5_uG#F--+Ws7mj2;hUk`qD}e2J;}=-r+-}CU44<)87m&K{AsYi!oRN z7^e~|Tzd#9smSAu>_=YVt@=Nxt~llu>x=e(L{)sr!;>mD^X&z8z29zo#F3p0SNF2J z7dpAyIk`Kq2%}Aegr8XbL>OU{a@MkF&*YOM%s44eXmKF<>~w`p#pGbe7lZxUD2$n@ zn~Kotol12du~9eXPg(MrToh+`ce7zHB3wQ*l1*UE?{2^dmupjUjuX{IfCRgd6B^_O z?QzRCj=|h+EM3Ymso6gGmiri=6-Mgj)<8UAHCpi71fE!d@K(>`M&~D<{O5ank2$v| z$wqDO^hL+n#rA0{KYhFe>bBc5z1c+Vz`wF zz*hHbAY>`# z=vcjE0k0}R$Qly#l;01nZ}M)g@@}tAtgTO2eU0nY7O8vT=Ntd+&%8ToK@F_dYI^^T z-g$#(8d0AA0^#?CdcE=F9!G(p}b*9T2cCY(9)f0@A3BTYue zRoF=;y4r}nXz0x}kz_cjWM}ilN;)CgI6Tg5&0RTYV)_ zb~?Hr;1fp3ArWd5Bqt$WsKEK3(q(?Y$56+JQs`x5NP(dy>!E5}q31KaWAuLw@KjAb zmKjl1ypg;e)NJ;{L(hNG>t-pIwqj{}u;^@MH|1TUY*5GQkTJq z&np!Cf*b9{ATpw|Xdy^RMd^{ODRrsbBnDk6^S}H*iAv`-01=`G;k)|=3;gg0!)nKR zcfcOPZ@3i0JXR7wPuV2%WhTMee#zsfr59#dbk#sA%d74c%2z!lrekZ30SA3`JksHK z(*8u2f#-bf_ZI?pYqTL>kFI%^R&ySm^kjs)qx}UjzOf<%$3g?Epo3dpkdp)SS1UCR zIbGAg7s86}e_J06y~l=UAo0IKN#aQUivlOahU?wx*M3hhn$8XW@EhMoztzgVNe3M^ zjjdv2GI2^nxeTDk7TFM{7m%cWsib$VM(57k76u?|2%l0akExEKd(LIZj%XG}PI`Kj z=N2l8eYB#-;rHttlHX`$OaWz5W{mhU#i_I=v66c6Vl~#3j?+ARyH`I$#uIntga(bS zj!d2ZR^Kf-i#bC8O9i+gq(r2{7=0w8buZiEDQT@CCugS3r{8?sFR>0+v!5)Lg(sm~ zTto2MFX(B4_ZcNmZj^o3y-4{*I#n2bi-!h!sstc@`-}^ZpRymDw>I$Hf2&hM*MABe zu5Ny%Fsc586hk8?CVdm&v1u%!m`uWXSxb^{QnL$LM+5JIBfpBP@1i}oWmOE9&{s|*x+)f8 z@Agz}pH{(jEa34=p>$0|*^`~xis+~lXC`TYwn;|jEM z8(oOiJgrnFL?zKwq3XSIM_r7p13?cBjeKw<8y)l6wcVM&;+dZxb^s{nR5WTuZAL<6 zvXQLyfR?Z(I%Y&ma9Rtp=KUTn7*lQdE}y_~<6>(^`9=r7Ephr^DgEoZ=$;J2PCC=a z19yz=`cpFRy0LE`^H*2+NZDWBQnCjYztYzSOFV;L|B@R*>f91FNVyW@Y0wij)uGgz zk~jN`*y6F#1pQ}B!!uwwwWLIjJdu@&bfX@qwXOPFF01^!pk?Q6+90YvhfNa zu9rY{X&|ZTGl0j1o6PnvP$`kuJ2FO;e=M74>!c*cPmIMtL2bU1TnN^Y=+B};l7$`@ zBixM;Je*xCj1Y1U_iBGXrZwANv5L&S{DigoZ!r2{;Ay(@eLdAdyLHs>b|{pn~XnY2`DrZ(|9D(6zL;4yD>LZ1>JdN zwC4>i{aY`cw>0jxdNy@AcCEizgiG|*(v3_dezI?4xXM_lXtdkWZ+*wEtb1;A-c(Hc zOcNQQM~atUI&;p?yxufhr7#^Vw1h!hdas6;^Sqqu>Fx9e%bVNj29dSdXAT~Vu0G3^ z=m!I3A%U=*z#Hy%o%FGgJ3<-PFTr=Tj389jfl2pRjErCVBIxc1Iv6HIJbugLS&dCl zRtLgq8OkfEWMA&k^?ti&739n-J4()&jW+V)Staqpvwb%+UKWs4T>0-B&kHM}OC^IV zzswK60hNQ5z_A!InQ=d>0X-I=o9Ks$?1gUQud=!6!KW}SY&ZKKD6lqPq=Z|2G%kcvSRP!;~% zByUeyXDp=nyk!a@gl=`&AnN`=PW64w`1AKeyM?3ivgVB%5%+@~5s$6chs%{)BGF0F z7Pt6#ZC`%xmC{Y_k*%zC{eJA80`SDefD*`LHF7@EVDcA8?L?H&5TEReOxIP&az01Sji28cEl&=BB_^SE5~vgKN$%%Q-IYl50Ra{$5C~*sy+Fs zIYlMC>uNj#wZ+0RX_^;%BjI<};)m_$7k}+%6o%wNk46^^O-n*iZbfm($5zhAeqM^{ zQyVsch}V?(TEaiCVf${kMu*xZ^CMlfC%vS<848^Z&G)z^2cFz%jdup~<){^_US*Lz z2I|TCkt#nK2I``?Zp5>2zt1n)uZ`~$@+}+I>!0Omp)S&>hU1tBEs?zD7s0}LY-X{tlhgj z)(e&hW-Yj6KO@l-{6zO7R59?4m<)SA;VabtM~HYMFsv_um6zCz!R@#fzHB{Ml{;oQ zX;O;z*`Fxw&v4f|&_gYi{c(uGtI|mh&$3S>WjT?f`Wtz_=wFO8S`R9IOvJ^SW=Sk| zdRGubV+xgOWbk)Iy>RgF7zQ0(HB>i2m`c{~Kan`AAm{p@7yP!A%SkMMQGrXt)rjCN7>@dc8KKFH9pSaxF z-P=KdCZPgWq0&~7_l`{f3(+q8#>Agl zH?-W$)1MId3gH=pK!hCrV_O{RB=$gYPD~r+`r%0BKPl_Px|^lJwW?m3;E^Q^k*_ zL<%*8PJ2)Q2J@P|=--!3p#n~d2@x&-SUcx0bcc3jV=Xf-a`5|s8&mnKvcmhaX3iWi zagEm#ab1PN>0i+zmm+Q;ir21K`IVefCZ8>$8mp3hkzs2!U}*@Tmav8M?i@ zwKhjMv%N6k;7bWMg1$5IUUbxvk4G*uupGh3OF&QVX`+v`;sW_^J()k)nIl*F zC4ua}IzVigcxK zq#moY=Unv}o}!;ABzATA^zTWXo!Ci> ziMOTbt3JoCl>CyFixsz5^oG|S9(D_i(gE!t{F9 zlzdoK+UYJ@mEG!1(tb&O_KG_Lj@~tGZ`}&R=+E|iNg4Nv8BaVIk31N?JvZtZ#@vLm z=d4ts6RMfb1wPh~4~1)wCdgRn-$8O0kR4mc92c*G)?_pcPC4JPUnF& z?7I%^O)*-_0?9vwTNARGu@CszAexVGfm)h&w{j zy6r>tMvna0zRr4NtDF`XVw*!9g`;DWCnt?@@0lg$FsR{kLMZg(?Y;I5i=})CUa05P zVrRz*Qa-H5yGWxR|GPNq!Z&W~rs{1L>&P^chwI&r+t_i$g*oSa;D{UF708(q=vrPu zoy0ME>+V?(;cVvzaZI$P<|$?~nw3q%9JzBG2wM821TtdPV&AE?A1swNo+M5A5jrYi zb3z?UD=7VtdUkeO5%!0=ln&Y*9$=g*&8d3LX^_4M<-x$Wbhm6Toi~0SwxRFND zUAFbyiJ);8=+VXarnI{?YhvgNF|n~2FH)~ZOzB!okwK6d?h?+;#s~|&D2yRAQM0)k zwKC>(_tLQFlX6Rfa_Xn&Ot8 z9FeC3Rq{Da@y=I@x=C}9rhs=8r0l)E4(%Cpnp=I^;TIxJkM`$@;o@c*&jS)Bf0wEo z>X82|E8Obiz0XS1LiL~+&Wqj{$*aucW2T8hwv+}N0G&6S%e6FkN8ZkH!1+t?L`DgG zkU>`=h0-~(lD`Uh^^RTdcRAQa>lymBV$!(9ZA4`m z&8PkGOU<)~x6#iJ4xat)y_?mVQ2F(oK;a6Q=s)|4Yri?U1}2%eSM7v|tfe3A*N~9w zWBk^e^(jwWlWbM+F(DzMNVsiX%9&4H*G#4xwCYT207`FV{r2tk?3|yEkc~ZQPT!zG zd#3Oo1#u7uqZ1*5!yeK}c=-W_j8BL9kaa)r4m64OnD62hIGvo{p#KwXYuryh$NhUI;p*9q3~Z_d4UyxD25>7-;F-m5#e&ox8m! z#3i^l4(d+-6qODcy$m9i`BZD4J&Tq3m`jLob7g89?#+u_c=OxF*#>7**Gil6r}%BM zY4t@LwVIN5(fFsP7`$=*kM3wH^IV`{h;UEMwr7lgbz}%Se@Z9V8^VIFH6z{d_SiVx zXFNK${6`Xw3TcL!!_mMNrNb8Mn>BxLvRpi z(NVV1*X}T!6^u)s1Sd~|&kj}=tm93oND@2K$8A4kH!b_&25c9zXUxiDjVT8c?}j9g z?k(00*x(7i{XmZOkSUunj3#+R=WNrd2UgKn%x`AZ7>T-yju0$DTivznFO6HxV+Z5N z3DtrOY*~q^(SBX5t-6#+_Yz${@|%naQzd4VzDk&5%X6o^b_ajbX1Amy&8Cu$-Kct3 z;TCUNKExh|5vfEgw&z0n=62->=Q-7sdGsDmP+)-YK#|gK1#uxbDMSsb1bmVsY&r2t z%*7aZvKta6C~5|g9$lz|KQC&F>oA(-+K>< z>r`K;maefmIlpi4g%U>DOprF+)4U+mvAQO*mm|iEpo>u2I6k8+il{IGf5EEMwQ#U& z!-?WD!-bH}(UXH*S;^4nONZ7b=ouXD&mZf5M~txt8ws9_Pi(usCpH!gr^%)TYD<>d6wan07FaXRzT zCl;Ahekf1Kp%^TiJ5CN9>Tzw_Bf8c1)D>0h1O53LCmKCGcH{OQPLL9U-4EV#esug> zv`JR7mGA~M0PDX%iIRNk^!(19v-tK7R4zEPDMDhtnm`eec7_j-`r9fm_W#O6uakR| zvtQT?W&Z@ewVwKwH(i(dbL8Z)mEpBiu;PiW>>R;Nl`rGm6s2uI!au2rz9+?_Sg&ai z!ujoLu~pq*6y<-=7*xKwy4b|JDLtkzg^Q5EF)^2D~T=|UGS{~K6# zPM%o74|f15)wLB2^ZE&u28)A;Wt}f4S4rJ!cV=I)#u;aIedd~4DRpu0)pclZUe6&q z0OX#$83H5aql~vsNI|N z+ncu9urJ{LRv_wsSfDdGT|HnOwj+H_{6+p!{O$aKoc1sE|7@f$7I*YtEMJMe5Fz$2 zx*q`uX5ouB3PI@0XXiTl%IrZWTomHWBltV>w_ECszq5nqj}D1gK&!1NlIx#ErqJs* z4W8GwFRXxI1Ax=ny5nY&X;wuJ8fSdmE*#OCtJtqcLwueE>Ywic<#$F&yuMJyiOPUA zPG+C$N}qEB^;uf7PnFTZn*UQWEnLYOLpct z5aMlikIaTVw?WqLxKWkd&z}68j+}@#{!AsURlNLxwNUPY*~G-%fVbKA*$qAnIZ58D z9?<=o->0vjA;rj__k+i2*TQ^exn=gdy@Bk+sgOQcg(8Oql%Ge5lpF~y7BKmw4gR#_ zep^h67>b(wt3SG)B)pX)yCtX)?U?Lp+!TQhQbOJ-#E+RA&L}ehz3x|i)j!9o>OE7k z>#Q?uY;wrxMT`1(C>-c7up+{m-E%JZlYVkHY1@lEV88Wiq%*e}&e63?*r*u)8~T}I zmL|X^X%v78@h)}=R9^eyy^|D!jHp|%s#(ZIEwmB>6=Dh*YUD4Lc2wrGdV{%5Ajf-V zZ^rh@X8iGOJ|_y31#Pe`JNq4~MBOZcvS;1c%)a7GywR=PfW%azHd#w*Ggmx-vEYP( z(<35~CJ{Zj&b>91ul}_=ueLcn6axw|P|?9G38o0s-pd&g=zy;##l9hqR`t7rbLg0`t{Xv&o5= zc!y{HHGWJ3lHv{dcg$V>jU;VFVt3^G4()uC(;2BObnz8uT9%TWsgg_q;u8jz@Mxb< zbyZK4)CqD#x1#?65a=~rteRhuDw?B`F;qnZ}W8Neks+a}k{#!C3{s@>M@wSZEdhHTwReTz)(3+*}gVpcmOf8M~ znbu6+>3o@YQDvI|vb!rgmwqTb=0{H2KQXI2VdN7>SHh#dW$<=(0ETymLjLUp1z9Ob zZ=s^W>dD@nvqlWC+9S*OhTi4rq`tuMx#7@;fS7`Hvr4NyP--XDK zmG-}~le`Buw{;DRXT#4uf9$?mdb9qyn+Sf*^epI{p+4y5)z#S#8C5^s1 z%cRBp1>VW?tdMxB+e1P2*BAF$zb;Ac$Od!y!e<^IwaPQq%A|VG87kbE@5|LR9 z&%k^4Ia1vM_wTv^bvR(&A@Df@8$_`@>4S$6SJbcsJ$wp29@-JvX*n0Mc>T|bwQU<> zadfFL0q$=q`rQR^+P%9Y)DiOs^RkUc=dV1c$o?+vrKV9IjuR1ZRtiJMtXK02*KdqZ zwiYgLfYv-!zT*=MD8dWTAXo7KB|(+@tQp|4TW+88_7n0M;YaYlAmqp_Mzk{_B||ZV z(ioPLCm52#U;}MAV5I~c?YH(2dismf{apM|OueK)`?IpeY$O&7Fey<$3)x~%PVjg~ z(D5PKF&*;+Y{wN*Jcn>KAj1c0E=8t7MEa3Kyqo;oZ1aYD z0eHcJ+x}0V1uAcji|K7Ii2eDT3ohp5se8a>!%GlSg)t|CBx$wxY-n zppDq*2*7YDWGM?d_S^XVG_u`2H6j#b`bI6!4!1>?j2(W=6=D7)dB&;c$On`wdAH;z zKOJ)R))Is=N3dys{%6Qa%RJ>~!buoJ3Q)#`7IJEqs#2}0-2nSVf`@UnK+34m^H;VL z$7M2Ch=V-o$JTjs`?RHFIf(94J(R@5fLpBU$_R(muSp5!L6T! ze0Id5L>LbS4Q^e8a&cP2c0m7252rBjHNEHh%T2&~V%Qd_@A|)?Moqh8;z0Q$-*q)p z+G4c%+y(%F0J-{IVfri^mraRXa#0qe%Jv9%p#_}{59`EU@+lamt~<>DBR$Ut*^XD5}z_gC3J8b1)U6 z;~iBZ6nbr?x^wP!=R6p&y*FSx@sz?WGC4v^i6Av4Nqh9Cy1W3_`*%t4Z~A$-_nAn1 z;geI8GBf53iHZz~o|Q4M2UPE$cB9pi0PYpVDOYBOE%>$*Kh;qZEkRI!fWCQ5O#2x7 zn40iCC*gAKZ`2aEpNr@`9Z&>zTU#JoGLCURYa5>s8=4Vy*KPPuCYd{5z_)y@7o-k1@1oX%Q zJ<9G&pAoSxB5+JVJV?|@j!?qZYZBXl!n&0BztuESFna5_uWReF@xvA4p?`t{A?j`^ zPHd~vFFF@(Pf^LKR4$3{86E%u8(>gU1}J7M%+M+~`{sC7cV{|~^{71f^pK{=bN|BJ zbL;0(qdr+y`*RcdTRes9D~X#KM)`IEpwAUAS#pz9@#~~751HUYgj`p}qF&sv z1?GUDBc}qa`x)Ksr>$r5d#{srOir&uk*lYbK{1yJ>ysBpm&WoF8I^l3ItqJ12iJcD>p6+5^t~Tn6y$heTv4Elp_j;I63|*natO9h80AOPA*j!g1VTiCKScE(Bk@v zj_`;rYY8$VolcWR0x_3vuL46*Qw&=in{hMY%UYl%jqsH%0&A2dOex}s5i4q-k{7+R z{P|zLynbc28TNCzklEygi3-9{?Vds?@q_1SgQY(3yj?Qc=Li z=;EWvMM0aMK%E8*@$PkVq(U)|ph0#vcs4M0fcUI2CL*CjPI$b64+fK0H_y3~wJ8(| zey-u~PkY*BjaDO&wLF$pfbzSLMw7DUQP7t=NJA&-C0O}U-2geRtCIS`)!-AoLz9>1 zhQu`XVkduqyoH#u-(97$>bIgQUcQ$u#Y+IXIz1==;+M2Q-I>wasC-Fdc+|O|jA?YZNA66m{P$N}$qO?mn)_ zV6o!ceyS$%h(^qwp7mqije{8P&`*nF>+8a+f1t!kZKcV^7)_1-B5rOQ0uCEB#e!nw zcRoO>gNI`N<0`>0=6pYQt~Y1udrtJO6L~WMn~EIXeNK14SPn8a34M6ac0!fameg^FJnb*?9*s*xN3MM=vr*?XMy?>p>i&usIXy&(|qOTYLFf<}DK zGO83|o)le;Z%{x*srx2n)aB(itx}e$xWZM$?%Wu0nW+;W2_ zeBnP2xdE%0VT9thTE#~*2G=^^ZV)i&)4FjuSy_ZkCRP^)v)Z_9q^8_X@AOk_si!AU zY47SzjhtL8C_k8wV)?%CMm;N-^+nr}jQs6o^x2=ek^bNlT`B7cMJczmS>3Ry4;gz*z@Ec`G;!W^vz{!wz}7L?;iUR_O@V4F5Z;hJ`W0 zps{2sfaJBk{?Z)twVZ<53W_9uV#15|BO@dBA|ocN1uu((VmvXUjE`Tf9$)s-$ zbN9z1`u;F{l1Nkc%cLyd+4LS1r!|QrNj)pSmVOL;d=BGfb0Ql+GV*udJ z@qu|Bk&p1W-<}Ja%JABe5V8JQOdKUK9C~Fs7`#5C=zTJO^6t=JtUN=bNQ^cw)*}aJdk|6lL%q;S}0=hFQ_4a@Vx1Lzk54# z$vCy%A^-9KYuC6S!PzGdd%!}WWfNf-{SH#bj+CJQY!nc?Z9-5kmWkcoW`pBhDzLbIH_S!@mZO=6jt#40ZUtnz zY+A*zlEDo1#Dx1C+M!-7@=Uf?;5$^IPbxp{z7z&IRnd-Z(vEEx@XpYak>v)O$kLlz z`~?&!M@%mf666Gfj;~^7M-tI_F-C#lIai24@|UhYdgX^N#K=-EE^Q2u$GS>yb^|mv zd=EB!ff|ilgYhMU$kvkZ7M<{Ns>ntWtP7a!0ck| zIZ<-bocLpOAj-hdix85xV1bxR&s1&?pRJUsAVB1~n_0n64;g**E4<1gm8n|J4EbK0 zm&?g~q+WY6E!tcfRLsJ09a^2Dxas}Ku};5dKPEGJSg4B~YJEh;uc^qeuiQy`flo)T zb{FbmJK6o+kLl|?!Tbz~i7j1x1TFa)&)FSEmC-w~``Q{F->B6@@dCJ5>t`Lk#h}zV zcJ{Kr_Izxnch5J4)oWk@n=3mO7SWV@ZNKH++RS~ol8CLiAN=EtaRtT^7m9gO;-~YYlPDT ztg`b~|MjiS9t0l>#L_HUAakcyW$Uujs`8!Pu%FiUjO_EuE`Nr@)`uq(aT(XneHmbR zUw9XHIMs!mJ*~KuwK?nigsr}T7em22KNaL>bauRNQqZN&h93HH`UNZe)v7&^;vZ`p?6R^6qW(0iN8r^$`15B0gz%uV=Rr58iM0ov z@c*Ja6>g_?jGr9BZ!gprs4t!>yf&vo{N4l|PCZrVp8I=E@}l)beLi5SZTi)fcnYOO zoMkzrtoo8zAIXRw+5q;IIJCqX{e)FkY=Z!ui0zH?!<=zurC2aBSt5d5zyxIv;jpJu zw10w+QIk!1<~S6-u@&90dDEvxmhu%`9fQF}fZ7S}4x*=z$UGPrVDDey%qPIz=~>a4 z6x6d`N7$;xCb0)pMPMW|NB4Z%QGaz|8F>Pk6)C#-r1je_QPpWLQI+kjTmJ}q&+6B0 zShDdps5`?PZ3w{(adOs`0RS0n;lKS}%J0VXW8*px1=8LB>S^QdBRq^6vGnbZY~!`5 zp5jJpbW1w(IJwGJqI1gyGMcI|c>ZMkk^mv(N`NuX(seU=QN!AA-uO>fPf^>Vl)^=f zZZ)i~wbBv^8RM{9sb6AMGmfl7RptP{?UEB!fQo zS0N{|kB_D!zu-yBTO$K$JdE+Hxw!Cee>&bvG)cB0Gs@TwLR%03B2p*RtHM4@Rg-y0 z+C$Z8CF-jZ(cE;>6QEx3WGwMy7C4*dPoTMMsWDan zBT)4Dn(=6#wizgzC{sij`Ng2w6&Mb6nB-Gf6>+60R!;;Rnig?@jkn4|2QyF*Q`TH8 zD-zA5P4t!o2ZC|h%vamh^rL?lMW}Uzb18{M9XF_w9pm56V57Pu;(P9HBb6hQ60Ai_ z))b?-B*=*d84rkSk8;e4haktZn{^bxvQgYn*T#RGE@yo@Y2(m-%k&;}433b<&dQ?ffyCHiTpNZt?C9K^g7 zZRC%vj=N8yq^2f+zmtu2wD5+#I*+%Q&4_Zr^HFvRXGS2PGk@(UA#2#3B>iIC;a9Y{^m{?PGUv%kom+eS3j3GzOO z3F3~|ExQ+#qUut5f`rHFE2BsCIV<~b8SSD6l@2I%mcV)B+}5nT6h zbO^dAO+M&Lo_!|BOn$t#QWQp4r#~f0^Zq@C#{iwt-!u-4>Hf|hxkOI>H3It8j2!(> zbHJ1iSTX%HxAjsEkoR@}JE76~CZ(6vXYx?*fmE@*tjT^*AH?}p!vm8_-)iVZGFZOQ zsQ;}*jW2=NwmLQ(+}}L_qu?(5$2y6(S*NM1V6^$tXRB`ymu6y!+wBu>3aH)OQ~z|) zDPN@2|6(v0n_=m8a)o?-NmpZSNgZ^h21=@>=g0fJ1-!zdAf#r7PrLfU(o8`i_{j8Q z)4Emb)kWOdcG2JEI3b1J2fu@(0B<1K)$xC`x-0+!8A^UH7+gI_)fie*qe{gb0(}8ijEMLDTUz75yoKOGwbf1RQ_}4gAPh z$>0QN&a80E&C%c(bBgR51)?)mzgRLK(6S9L3FODNA=PA<;qz~^2H^BOUq0X3APryk zpXC>xmP}5y)-wj6M3YkNAV&AAMM?wvTGBcVNZ-S+YNe6_xJ1%Z-0uXv%7PH zE+CY}7ROEj6(Mt_c$Kvq0aQr#tsNv!5wakdWEvjpGm|I-(iL*hf><~>10&DQ=-IGI z7a^Nz(++G68vGo*BG3M{INn4_jh~m3_0JLopw7LQH#R8AA|v2m|GPsJ0l=jRB@%+6 z8s|Z$C2#ueX)+VgWBfuoPrd*d9_8hs^Hj%>m92o}cT; z9l14L6H1k`m6Q9^4om%_&%fJdJ{$pYCkoKh$$L$AnPKZQOl4CNlrwR~VNg(=EX3Q- z4^S8zeRGi#OiE@Wa(QhdnWtNcUP6*6FOf!d(UC_DY&?Ig(h%+|-TRPL3B_*e&>5@d zH?53!@mlU;zDEX<|66;Y4>~usQ9nkUQ~K81^k~C(pOMsX3yr#G(Syv6x2o)lWmF+2 z;F}1dlPG1QVN96Z`ei)g(HJ|X!;}YR%CiEm@Xv`XE{^tO*Sxn^RGY7j`UN;p<{q!0 zdHpOTQ~G`$;MK>kjXA80tqbM!ncL_fc{Li;dmZEXP4cQ94F^lmenAPFC_c-MXV0P( z0DLS9l+_mLZFs%&-XaQr3i$gQpLTmRMul3}SwT<_*gkHONLAAvLsV;H(FpM%V*R+!jOnI9C_j9Z*bfKlNIi zj*eVrE?J1Yxssr&MAJ+@Ima`?R31=&5v_)_v;DTmV>4xw)Hx7GaJBsjkqaYLD(X;^ z(KqhD<4wZoL5e+B^;4n_q_Asg-Q<_D_FBX^r8pgd=y2m?x+Te`zt- z%L*0;7q3LLu&5CmOByT0pC?x57&Ub7==d-}^OUMRvfbtO8$cQhP!8F{F7Ol2l4{WH z+qT-^uU`8y7QxGRSetLiwSRe0HvA4z_~my*7xeG^@@#7xa8kcez)>j#y~zr>aj?Bv z;amy#0acq`@2TQ#DBP%kk3+8Z>nIV=fGYA|U`Q_;m0ZLc{*=vuGaK@;W;Eiv{tb>8 z4nU;iZC*WtCn2JW7cjG3KZZb`9Owv`kj_+!gOYs6Qrz3kN-9_Aw)g_VXJszj1*nvU zO_~qKh!O0B?BByE5#Y~C8(XB!&5-4OfZW~dlDqnNBTbsKP5S6z(9loC7?F=(@M3sm z+ePqmm14k1{&eXy{TkvALVZ_bvLc@6Pc)vwLG2!RIfqthruZrMRY&R=QmhAsVCYqP zSeATD9SeKc&D`g%CE3roZ-LKxPpH1e{zzwyB?@hd3+-PJ8sk8mqrVfL`N3b6>;vz+_YS`;<*Mh;sFRJ%S@!;_Ufr%I z2AHxNBHsSbnh}_VCx-~l_RiQzT6uT3`q*EsQ4N&HFCpwSQ@WRi=VvQAlnUfarI#JM zE%@hanV59xsN>Z&4I?8AuK>dIvvR9=B33F6q=5hQa};r3t|94?D4Ed%eWVO4UcIT` zVYaMF?HmEU?^nRb)`H*{AD+b$266T(iSmz8my6J=v=e}IYv3u20$B}n{;m=wThU+8 z#TDAUPpD5s0AD4|NqD&$q}Duc!N!jjP81TOj_Aj&tXO+8h-_rX4Y={! z{c`%2H>H+6hSCK`AoCWqG^Z@-fh{Ve{4PqbHUnLc(rU8AoS{Rjl=I*RjLNeUdc#ijs9G6318jj;}m7_B}Q{U=h#`(hZM8@z4FGp6Zt5 zN^*E=cs$kok-W3a%|=t()WWNDixgs)hVco@=Th;FPGXTtYZIK4>#GtTy2^_SMtZ7% z(V6+Q=7^CzMTGvYM>dB%(?hGs35ExAod>-69*hQ2W77n^%kO7jPKwcgv7Rp?YMWG^ zY;I=$;V$S{*P^UF;CGB2PNYmBacZC)wc*XSZ$(RzMY|`Ko0iU|Q#TEFRs9h#Q!#$_ z+d4lsM}y)TO!}cL^w5_`U(o{Zqaw@!-uB(I5^2tC1zS;!j2zQ+?Th&OEbfE4F&gKX z+*h2)>*r?0&aQAR8{tnfh5^06^kv6|EmnNyG)v2+Att%E?o|79h*#q-cfa(&BktUM zj9(b%jcqyFO-sV9W^}XqAOmmwFZYS<=%db;HBaj-ba^TPBMA(;L@~G@#dC%`_SuyW z6{Sa!(0$S3_?sN2rROjZAI58}R-&W!SrIA2q5SPfqqU&hw6~{52KD#~kMPb(>gaZ* zH9|+RJ=1^@pjy(5yD*v^*h~ZF=Q?4-cR6X3V2OPD(JBOCoYjDNFM|AS8OH~~9E=er zPZ9Sl#5mLZwyxEMs+6Bd4{(vZk!D61{P}`zbb<3~65Z4K`kc#-F*HoRsNQfh%f&!# zqUWfjj?0IMicX1n$u=4+pHT|uy(*U|h68B~6kE|%urlpylNN%L@Q0PII?}va6eY}N zWdoW7doCn|vwVU3<->K=#4yz8QG^k&?(i|CB%G(RsU(d;)9uzfn5Y4}6RI zb4X)ieV)jt{VPKG!N<;x z%iN2qH`iNPw;dz5S6??tFHUcPn2f0q-0$`)f~=ceuAt+CK)>w;g{7;%@Q(2t7p%wR z{hj$&cr;}fqye6Pob4K(P%=uZR{@WS8BT6Obo1Ku;jlW?#`ngl9xjgDYOcL^u7 z#T(rYctXfy8qLW*m4$j!ASI`(wswv8mN~<&sKfAH&o_pBA^b7X|3_Gaeh@ zb^gB0$=ag|^xjXr*a+tg*&;Uh)_Xre<8&e4hH(xcXkakxd?pV{{}f0M=keWB2rpQ9 zrD)njI5r?}GBZ`nkg|AB&pYC%2N$X!2epiOWPUZ{P3E`Re8e%Lz&4;2+9A2{gylo~uoGs+-?3pfk&F7+#OrOL% z%w_sn9e_e&e5gVL&A(&uUK0tIhG?aY1wj(ap|Hs{+Oak0C~!~=qYi6hHcs+t)5IL+ zy>VtNMn%fV%1lwj3Q83p6UT?3@p$fx?Y)1Q^Ea4wdofq{dUO$IVTU@uAny-x$3vJ; zl3KA0-fsjP53$(uSdTL)sWx)C9f-Ht;k1nQ<4*g$|9R@_bQ{g;OzWyy`z2q(1o;1s zIX7m%5P=mJOH=_|idluKcN349FqNS&a|w1{4PxoeBp?}Dj~oK9mTaSzZq&hEIX-G@ zL6G5m)4W_&;N!3Lyxt-J5MRqf+DC#g?q-n&_gg`67cf8L6C!eWT= zjYj(xp(SObeT`wepE)l-21t1WvS>i=_j1%Do0%03Fc&2K%xLn+0f5^m7EFzC2Xu>6 zRB>7Aa(58v$xDfR*l6xFQ!AiKR%tiyMn6@{N;PPaziWAQT2jw4iH$1tZ$3_z(Ya&JG_>ryR)1eB!*o50J7L4m-XWV2qs*X3pehf$AeCK6v{qwf^AA zS-79u!<#**T^c%bw}bB8bfla>9u+{Y6K|5n5Xu^{h1NY<8z)^RVOolb08+1#`2ZqU zr~e*?%--(3Ym=NHSC#-*Ixh!ZYLe!FMz8&p^A>@uHB*r2N#ewnC1dRcNY*kV}+Yj%_BxIL7dV1Bs0K*yuUJ}_G`>T zZ1T|qpII;&&CJ252Z0rF`)~NLfSX!mogVYcpV4^!P>S+nAambd0DIA%Erm(q*HCl# z3lQe+?^yz+U!CXAH|KBWTYL~+MEEc^wO=m+_T~wY?jcKU7YLcMmA3P5uRJc^G!(xz zHdJK)RUBqf{OU`!;gb9lEeE8Fjp_^)QU{z z4RT~Js9m4TX{owO)QEHe0Np%RHEdxg$q(aFgm7^{QvA|E+%+(n)+mJ*Q9~dVhy23c zp-Hquo#v8mVeBqnUzE>r6`8%lJ--F_0*+2kDx#J|NhB+~vmJBo`>-mv`LlV}`uMS) zfXW0{BpdxK*y%q8*{CHjU1Z1Iritn$Sl|w6dxP13;RWP`C!=TgSQ@wg@jBYS>M$QB z5Nwmw)2&Y@n;zJD*ut6+W7fhxL?^2zLG?QERmOZw42yxGH#{L#L$ral2|szxH_-BRX|BIP++ z<<4qC4*XE+vRyinofVP273+To#CK>TUP}0hNlbT%67IV0Buz5D@6uOFR9DKsm6=ftxQ?X#_>jB4&o`wJcccXJS2wApNEguc|O_B_+-~ zVI%$hcX-0yvqsi5#50V!FO51)zJ#~A@_ejUAP{&ivR7avWULeR5Yf5%ev#ynUD4yD zcS)MnkLQ5Qg{ZED^JH@QGUUJq#5ygpsh(W71xaLb7+&~W*Fti@9hYW=d9(opesJtk z=JCYU*`I4Nl4~+rOIC3_DAB~ZgKuK+%p1v{w~_`1kp7w%w@K&qx(^95QsflG!QU-X z#_*n9U9=4Be14X23IEX4Ry_3V?VBDxktRR7J1JD7pQ8(HCZfMj{^P579s8+dGB3)a z7e?`TD>PIfvvR_``ObedGF1L|Q{jJ+G*1XgSSAxE$;#k>9m|Wm^up5>&^$L;T^H}k z$H#K$SUF+M0K;!``h~8!40?7MY`{R3-HHU|8XlB(dizw&dkB^X?M#)MC4h3nqUGA* z1(D$y&SE)#6u!v4DF8a$>kW#=i-}>WfD6fazZ-42f5$6+>un0le?x9He&3!Q@Huzb zoG0Ek+kwtEyJo0<2A=@AkH8kS;KZzub4rEV+__3geWd(3Fg|(l^@#BMugk#yavxqA zf9`(U)~9PO9X8Hsij92&;?BV%E?Z161c;XnU;c+dU%#v?OsmC^A~@>6af<3XR*H?3 zN(N^LkP{)?nRwy3W2YW&T^=9pn8NQ);{Fr8ww?k_O@Y#TgFKl)xE_Af@AGm&6rkk+ zp$=V>h&C*7=2+O|4&xCVm`6xgROY?#qr`{344{8|#hLqIFlojUdetSOp?MecxjFXc zYove0Bya=Sw{VE7IDQl4lno>|{&m6qKRo>F51#r}iQn(`RGbKUA`aw^BUj%tcr!K~ zMFwm%-a}8!V1M-tKW$I=LBZR9Kb+KSCp5tn$`!#lhdov+pSsO5R+MDAYtfoU>g7Un zIVq4zjMxG#l@#g79}qlNhevwvgNcoQ$C&3xPIwe6{=(uyiqF1UW zvi)h7iAgArQK*=ugli~fb_|FC)1v$1$aHPx6n>#g#nmIT{eckv=fe8JVLyiw>N~fo zG_!oaYp;O$7m8@6$c!A6b8*rTpLFetjz5d!MvStq{y zDZclU-?(hcnqu7UJZu3Jhql`$l;(Y2j!Z?fi;^_gp9ER%@&M@t$rWxtbB#{tZ1{3} ztdN;`Xn~({GP@8`?iwTBVc)f%V7sAV)DWKyw}xbSr%rkalsaGm&o!9+D}u-v9W7+4 zh82dqaHj^wsNumRY`&#jd)SwZq`X)j7skY7k=0a@oh6ag#ZfnbY+P^7?`Pw9v&|0^ zrh<#i-Q)sVN$mwqZc6&ftc6t=)^;gjsUn6I3Oc=x;S?_122tP2rskL{OmKph5T^$W zqxO7VUF>3u2x2Br{Th7$2(!YAsEH@>)>6jc_r%hm5-t-ujZszI$)A7J@dmX7QP0lHnX#(YO2;_@VOqY29+!{^93CeM ze1j#3eu~Bo+Rm#&-^IiLIC$JB1t4c_pmeRQ6Y|H>dQ!}zex8!+5+i<&!E!ZVxM*V* z)ie0s%z0&WI6H6ddksH?ss_*wzVAyj?k-Lxr0Z+r1h9Aq47~ANX?81W?fiiu}AlZ!6sSL(gBtJj&#r@&GKxj+*q0e@(QJ+}_A*hBWG-fz!M* z4Y8W5f$Rc9itxvG!rk?%GIGE_Ol}P+M}6^7lrWrNYNd*~H_veT9SyeV&eEevXgqKK z9mhuD56P$_5|1+#6&umXeWU3^>H8d)I;M^9Kz5tXZm*OrC4cMW%>nsVSAEByZPO%I zC7h$`4k?OY+`c~qdsYWfq@{nGuoog#18PLCfMAsV_KIKwLBnfnkW#j1Bc-JG$;y7= zRx~N%!yQnrBS;CVXJzM~)C&y=-^y82Vf4^YgQ(Pa>Vn#a@HS}5)T>_q_5Af`+wz3`)Tm%`-1ZzBuxT*!q-&mfk zM8n%1xFVh{Xa2o;E7X2N9&#H7TD?yE)iqez9`obXd_oi7Q`8jQ-6|k?r?e%}kqL-p zuq>IuItFl>%; zA}TJUnebw{XuC~L5OpPr+hPoqKP8aU$CKOljS?RNxZ1T@5`lSD%5M)IS`^>KD?XOtNA8gW)!?meC(tLlgyY!|BnV`JV{$TH0SQQ>U6le3 z)mA4pi#3xt)X<})eR}Dh?$r7cO6D$oqPC=LXs&laxn zz*BH9SAsqWpb-odGnI2^EmH1pHt5?Lx2QhLy4#NtUW5tn^BA-wjq z6BfY;?#9^;-E{(qLizJX?&i%2WcPjR{Idcj)t&y$X1F-=wCmZ&+{b_Xm~2rHF2(e< zINC-r8jnI3VO2ogtqFw3%>H?ts;QKfWwh8}HUZWI9Co^M4Vzw?j5?W(^WM=dlf5qO z>Zw)E)9#7YfRTr}q>~yW&hqnKjZH$M(~50}qHiuGy&Bx-{gc5}`^1-?jQ{u;_fto0 zv5IxGe%{U8$7i(1*w9X2qPAa@sS!&X1ZugoYQ`LPX{Oi<{89?dh8I3ks^n3nj0rz7 zECrH6$owWgt9(!);d<^Y4 ztz@bf53Lvvff98WjHE}41St9B?x0!>IwN${gv##j#l>up#cd>xzwLLlQVP)t6Vm`6 zDVcRCJ~FGGgLrp6*=Q;E^J`h&<6c>kkg6 z)mMEocNhfwy1VGoOq!W#_@agDnmsKoDu286hcK3UBv>o)s=s#mX{YRxQd$gDsxN#P z+kuRQoG&>nlT;P&UR@L4Ic4qao?U7#@Mc3&z9%8fM%&rE)b zv2CrefK?(BDV{4Dt4!pDMgKFZvk-|4N31yazcil0Ck{`cW`XCoufw#yu>JU_U_@yd zJ(&1ACVXlkjOM|op5cbyZ;Cz#Qp1Ce@BAN0=K)Ri|NrrOZP%7Pua!Ns=QTo+y&`*L zZ$jb5#VzE@EMM6&vqwhuh-5@o%HDe=^Z)kypY!Qf$2mAU_tk4WpO5F4%flsE$iJ1e zJ)t6`xWY~7#%7=J&E*H&k&{#YM^|SH{8$*T8&De0i2WGeqDA=yj+7#m~8IpfLha-XuvR3#|m4~7{{*8Suk3Ns#? zNT_5(dg5RZk+`v`!xMjbfpshIg6;*58dk!&0x;@1>M6bW1@?%=tlzORA#JGiS{xgK^~;+rN2_v1y9g{X`0!Y#(lQMV)>V z_-`6qBaZf0*XF+tb!KElN=e}>0WEh$Sx1kc%l^W$NxPtBWP#yd+nZ@_pY_wHK7jD$ zbA_D-fs>H?GGdc6s}ZPtS166>Z|y_L@R_tZlc z@Nf(bYkN2-keu-l_B+U+BRLyg-43P-TX_@JHfvKv$P@Muz-a-mnN24pv)}XP269rM z{U+3kKm<8ROg@$yoxdZ0E)T4;urfjh&RQ*Uif*_KSVYvN6$Et%zULVc7QZ3&clgCaFtzFP!{QL&f7j~$D2FHmOaT~ z+t00klo%s)-RyC{_HpdY&-)D)xla;`k%4usgPqqbc#I~DjC$@s^Jr^~eH!e3Z*A0$ zH+#q&5mSy7V(jPx`b9RHOO`+yQ2>t=#be1+1QurcE@(u#G9DZlYp#SyL*K9qu#k4Z z$ttp9ICwhKG7;I*Bwn6ayY3{Qb3RqWU81;sz+b;yaxy)bsOQd^>&=>aFB^CVz}i(@7)FYj(7%#=8POoYR#LprBJ3WzeJ zMFc{5aH^CAQi95VK~tgfKmhcG9Ez3_$Q}M#6|$LY!c#TWsc-U)&H1!c(d4t-JS8x= zOha-IBMUimBucY0-ayGgFOPaljq*$4S$>G_Lg3au=5F%9HJgum zAboyN^R5GWno>+VlP8~AI+rr~2RksLgoI*6x3c%n0gIr7smjP(Ene>!;9DyC((r>T zFE(njSpgQ(3Of&VB-R+Dd&EokN=xM5gMZ%V_i=JzD*FE>|M1Ga!*!dK1)xLy%r>T^ zSW`RKU?ngg(;G!|Fy3PfATjIJR{>@Mvod0gSlya)W{O)#D+^+rVa}ycTU&DaZ@QS# z_D>U@L6OgE1a~JBY<#ao?*1gRx7!i9YeMFg8#dC@0D}W7t%cMiB>#4%{zR7LrH6Q5 z#LA_57nM56i)~=_OYKVJQy!xtcd10v5xyButKuJhS~F8)%)hG{JWZDc_&_W%!sLz3 zYiNJx#H7v1NI)Y9x0d#w6O;}<@@PEy-n_pZtGgu3+7<<>AODw&T|aY#DfW5>v_IS$ zhP-svQwnqb6n1&Y3^s}um&bmgr>e$EVDspAc{QlJKfM;-(U;Yd0Dy^%!mX!bq<_5e zTE5VZ+Gm1mU#bU3-)FPza{g4p~poNmX)SdcM+dkjh>rZOLYgdQ1G2eV>E$m3#> z>)wM*<0uLdz#na!(A57^Ze}@_c5@rh8VR-}{?nNkB9S&72I zCU^6sNd3kBYms3Ye0xEQR!@8e?WKL!{G@~Tv;>gXvYw%rB>#mTKKief3IJ>bf1Qrc zG9s4CplaVGBKnVr)vOvtQ0}$1^hTJELirJwpRI7G$u+~T{+KGihx8ZxJQT9VQ3;EM z()s+LJWnqrututiv?r198!Lli7;X!D$UwED3eF`s7E)lAHDZX(~RBSUK?2&rH-(&epQU`nEFp|WGAtX zyb;D8dhN@MytUW?B9M9qPzI)n(CCR!mDo&GRO0%RW}3|0tOvdVXZ2$B$;$jsVXcZz ziCf-dEE*rRRIIbR#TcrciZ@SE2szpFQE}a7_e>mAN+-C|6YC()Gb~3opT~4InUAgT zc2Hqlisc{V9B7&$r4SIiqeC?6zBCrr`CQq-x51pDueRTMIMVVfpK-FY(a|iBz`V~i zA5;O&lDYr-)PU#1IMhRtz7o0wlLuEmuc&075v~Uu()r)hTc>ZMm!cv>D7x=WGTxzhWzP2GtBI= zPbkkj+11Cy%HGCRwV-sekjfR1q=f4aKm-r|7x2kC-r7rkr_cs$czQE+q_$3E%hRpt zPnuwLE0M%vn}UY%G<*_w?8;U%CB-czX6obOjg#J=1EC<`3B2VIpyDqGUVGU^vdcy(;pg8H9yyFI5U--Os1 zDX~YN9C<&eSR$!bz*JU8XEPwcWdq}YA_IkeVi&K+(WI-HLh<;%e_a^RAO)r4YI(Ki zBAV{$>Mg8nVsDVvV|IBZvHID!|J|RGgeDL{HSHNw&70jMAZYU;x54iniJ6i7rTnb7 z<8rWU7$D147!9ux<`Z-s5kM}QAj;Gr>_|9!ZAG_rAm25(P5%U(Yk!&ovlW0ya!{Khz2xj9aj^!|p&8R&%YE#94v zZp@FYt%`2vdEk6Z$itMU_1(HvfjqDdEyNuo#GODY7h@93AS68gQX`a+b}-E>c*ip^ zHs$G025e;Ia4Fa(mW)5HRJXr#E3jG7uLJ^{E$PQyz~F(iLyU-%!9a!M>EA2JYqOAY z=#cK1Ohj|#4)f>D_2kW2wP%;2!=CCJz7Vp9UeMfwYVx~vZHlaoItY8TOF{bK z*yPlT>T}!Wrtn$nQXG>B&{+{)u@H7`e?QM|C5Qpk>JJdIXWF3d0cSQgg{@p?XCTgN zL+_7nmE8|PH@v^{ab8&4jETZp zRb6=BA#3~t;Q%)hjl&u!3wZK zfp}7+|5V9&p&1ocLF}ce#s`c+Y!*pf8eI|gI;5etEDGT9B*oTwGp+(^N5;1KGzt}D zq{1V>4k{oi0canmTCvWV^3_g)9UE(KUVT5taeu`i;4|}a<1gR3Jw$ANSrlBo*J&hh zySJ$yuRlQv=C{*SbbOd2eC{Oo-}H{RL*WAdF2d;DePC#RQAqsmakUsBeH56Eb8=gS z*Rb0o5mnh#7n#^Y86!@}PL>Oc*wEG(1oJSwY!pd} zuai#r$rDF+s7Gn3MU#_7(#b~|X+~LTY;?3lqQI#rzmi~@GI|cM8>wve{9tX@pTwH4 z-CQPRlivkU)mP*++LPr^hZYI3itsR#e2#B|hp39YSn4LmOfHl`qRuX5L%-;8eJhM&}Xahwr^ee*FhfKx!iaxz7h3D+Nq;n1A zXK-JKjGcusBLyVzCP-j?W4I8Mqw;uJj942hS75)VW2H^id{eHI>gp+@$;iq3KLdws z^~f-$8q@zes~HeV!FS&L4#J!KAQN-+cP`e{DxBhf=+^V|J1_oTt(`5z2*1NREU$-- zQ6a9Ma|Atkd$LJe7x>rW@+=9)lKk)N^g>vC=F;svmVXST`!{|+Onr8fXxm(+rQ zW2ccSwu?lQuJx1Wto6SlJUhh7@@8wq{nx)!AcGDadJaV_(yh%Rtj*N(YhjFTZPlx3 z^TInl;}Z?G!z5%2?b9E#*?+a&S1Ub_%5$c27d}RaG(*a%v086Mz`ce z_SfvqKVe3-OhVW)is6r{;lp1dEk5Kt{QX0>C4TEM$4?2`Dm&)0R;#ZU8Ah09Arb8< z0nD`*D4Bx!Qf^&MRMZX^8?+(;U4H2;yYvif^5;CuU1TrYHm#OTydnjgv7tUJ6pn_vL6S|LfGp0D!T0nmMk-tth;>a z5*NX=osqH-gxx|rnaHIE7~(d%P)s$uk@ED>>@v>qC@RU@+Ho=LuAo@>*v5PNE` zDyU*30A+Fnt#=%;%WgA;%*o@0VyR!T3xvI#sc5OaC%Q~M3Ko_?=QmF+dYePK47$Wx z=C`tLlZ_t)r(N%s>dG>)x-x-tnQ>Cddf(rSmh4+LyfZ_-p+;qb+0Q z!I!n~4%fxkfR`|_?aN)rn3tCkLYi3xfMXP}K>hMaa^NxQ(8FM@x3Unbdb(C^Hr!)0 zLB|NUcTv10@7HDH+fg&(BzQ$IyCAGBHfu%y;TI=XkIUJiApun(xqwbb8iz$HuR(;2 zNyI(NNCo{4GqVowY*YsVXcQmUbd%um(~+8v4kwf6vFAF8$Xc@Fb!|$sxebUJ9lMsU zmpoid0(PKW;3%GD8wtn%O{s2gIFl`QSfC|vKeh6M`B{-#G5-IG+xYFVlcLuyZ|#q%2CqPwZwGko-_mC%|Q{$DB_TY zGz;=EVcTpMi3H=e*xlRo6aosAS*Z9o>Fs4(U6TcE-S&)(2>wU!m~}lVKYhb-e_)Up zEuS9||NOq$C3`6;jp!h!M(pBEXS?u^k>*CnTan6A(Og!08g}q%bgceL?>)2j%{D z+m=*G*(3|d|Fs+-o$3TD?-Y34t+ADANF5jW#!X0F_H+1{Pu|7n1q3wJ;XOB*v$4fa zc9tQdHmi;6TabhXK6)>RR^CTw`-tf912H8uKBkDsy@~JmWew zJ2|*4l4*n*<5)etqldkYU(xm39w2J~m0@aQ*89q1&1dcE?@~heHTLys!{37;sjS6| zJ*7S}rLb37Va2R$W%w9YDMVjSxhdXCsW zq9?`g+z(KFXm<@ga(T7Rj~6oL-0TX2^Wwp$|Aj!l4pY3KS`YesANHGQkRZjxcIXar zib#tf^{;K;OTVdSKRBd=c3u9nAu;>N8b;C}f3ESX5Uby?*IrMK7~;cm;u*9M=iJ6;RteG``CbFTv~JCqiRC{%Wz=XuiRQ>ZW)W7L6( zn`^J_j;8gs6xK%DBi!IB9bEm$^$A1WG1C5p82FP=Vc2sojgW;9&Oj#h+LmZ%7YZLo zE5Ol%ED9Rn0j|~Gdk}i!b@2amFQ!z?vQ0aUW~3Tjyn(T9PCMmH zHV>&hiz$Z2LN)WPp!D&NvWKnNoozXy6$GA-I_2y&3_VOu_he1DMxxoW(E4N*@qYpy z^KM(D-8mq9|8Q(C8`=EcYs1F&Z=eZvnWTL{6>R&llO*I2>AHv;lIKQ^9M!g9mUm94h<_=r`q#3K5q%Cn> z3Uer?00crQ_ekyPoX)RJP9+PPB&shd@j}JUUoC@hnjweAPcPPU^m}Mv{y?ou9tI~B;aID^lv99eI5E^8Q-gm z)Nizk`DWB!;9%6vaHfL$Ra&r+C>SgD$wOsPRmdGuEzRBs^k1J2@+|ZBS6*T4now&0 z30RIc#;HAt{*PZ-C|O^?DA6gHO4KwWou4fQ!?vo$<3~;0Tzr=Iqjw8(E7v~Uwjz-G zo84$nviPYLw2oylWZ3@hMSmnv-zNIpUi#RdJ+XjSc=eQcwYxqMdulzH{bW2c#&g4f z{{?s89h5j0dbCrbZjGmKGQmFNs!>tCf1K=OYr-T!q#zQmTxV-+RB59c#`p%R9ybsJ z*k3c{?;#KTAZ!w*I>K3KTGitCiWV}4e`g7w1`ONd;e@ny%bx%U0_O1_bzg%4t zy|@y5*+**~`noOrAL0K>-`A(Ci%YtS?f9&%kqv(??txFZ6||Bdymat1tK0aa=TEqv zl{CcmjbQd(W3?x0#JLUVaKOUA*7oS|z4DIPeZ=GYl?z23$JxqILP-c3kJbIf2mxD| zZ9`$u*}q5QWKN$CkF?MasdS!!%qNva$`^PLA6nXlr76B9DB=lF?C=RWW1}QV;NaeI zpRtk{7E{pi$*mIGxGSMm7(K9JTiMcs9bG+;gr^KvZS6BR z9;WtrgDZ=-id%aKD2k_ep0f~EFV_p!cmVOoBKPfuur*95gJa808Oy_)a=!l0YrnfZ zhCyp4rF0_c`Qp%{o(P1WykAzPLtV}`1DY5-&3y2Aj(S-*s|rZYDpEdX%<5Y{8O{kL z!5!7oV0~G8^OwgejJvwoOU3mRXE7;_!^%p%r55Sn!t(VsDLh`#?5Zrx$XNNj1$N#d zb}m02H?fsEvXbnK(QC!j?-K*81<*CI-5ubroh3v>Uy46;ehpy8e6}OPdBduyrJiYM zp^r9t3PHrURL8;2gsl?;5)Mk^>HI}fq8G}br$YMheSGvHD}yrL9DgI+aL%x^y=FiLO($v!YK z8V>7luvaU6XY%D@NBr{VCzbe2SH0#-rVy|xYmvvBV~VzPc)H=UFV5*KHB*Zd_q^zx z>xl9+<-}rvP~(pfxfRtJ?PT1IDvwXdbx8qIRUsBt7K$!Kdetyo)ebS-iY-#8COFmL z`qR#St)#U*8X;J2%!rXNS6BP>s!=`?;llu$B{>N*JI5(XW9hLZI?|MpC7RKNc~KVL zuB9V?m z>|T4sjH{waaUE5=Qjpg+_Xq8rI|5G?rz;<~-}K6ZGAsQ)JortDj!VPLjVeyV_?VT1u3q5097OCb}} z@wBK(DytOp`fWB|`IFb3+flU0$@L0n0*_m&AGoe8ig7tmeydMmr{>Da)oTIE zN2h$M%r=vIm&3LO^JZD{%k0LVYE+I$Vp^1>yNEI(K>J&9LIb<*c$EA zQitd-*j2HBl%{0SEq%|k8az58qewU6!Zayt@-Ffmv5%8mCCdIMMc&H8a)2@ow@{nJ zUO((q=F!5}x5~vUD^}1Dt=Yq&`P7708uO`dgM>@hCprpX^NO{{qR7@zgeVhrnple66m;r*Rw;eC^TE=fQH6|dsWV#V3^ zQQQ2Fwop`C*f~`3{LGR>@%n7lE$Ad6yq&0`1v$I>uhrx(ViUhZ!*