From 5c891afebe9f9b9534dc2baddad2781a8d89f36f Mon Sep 17 00:00:00 2001 From: Roberto Date: Mon, 5 Jan 2026 11:24:46 +0000 Subject: [PATCH 01/10] Fix: fixed wrong if check for popups --- BlocksScreen/lib/panels/mainWindow.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/BlocksScreen/lib/panels/mainWindow.py b/BlocksScreen/lib/panels/mainWindow.py index 18549a39..9309045b 100644 --- a/BlocksScreen/lib/panels/mainWindow.py +++ b/BlocksScreen/lib/panels/mainWindow.py @@ -506,15 +506,13 @@ def _handle_notify_service_state_changed_message( """Handle websocket service messages""" entry = data.get("params") if entry: - if not self._popup_toggle: + if self._popup_toggle: return service_entry: dict = entry[0] service_name, service_info = service_entry.popitem() self.popup.new_message( message_type=Popup.MessageType.INFO, - message=f"""{service_name} service changed state to - {service_info.get("sub_state")} - """, + message=f"{service_name} service changed state to \n{service_info.get('sub_state')}", ) @api_handler @@ -523,7 +521,7 @@ def _handle_notify_gcode_response_message(self, method, data, metadata) -> None: _gcode_response = data.get("params") self.gcode_response[list].emit(_gcode_response) if _gcode_response: - if not self._popup_toggle: + if self._popup_toggle: return _gcode_msg_type, _message = str(_gcode_response[0]).split(" ", maxsplit=1) _msg_type = Popup.MessageType.UNKNOWN @@ -540,7 +538,7 @@ def _handle_error_message(self, method, data, metadata) -> None: if "metadata" in data.get("message", "").lower(): # Quick fix, don't care about no metadata errors return - if not self._popup_toggle: + if self._popup_toggle: return self.popup.new_message( message_type=Popup.MessageType.ERROR, @@ -550,7 +548,7 @@ def _handle_error_message(self, method, data, metadata) -> None: @api_handler def _handle_notify_cpu_throttled_message(self, method, data, metadata) -> None: """Handle websocket cpu throttled messages""" - if not self._popup_toggle: + if self._popup_toggle: return self.popup.new_message( message_type=Popup.MessageType.WARNING, From b4f1e4cd136ad455405f97cc0b57afd0b9945c78 Mon Sep 17 00:00:00 2001 From: Roberto Date: Mon, 5 Jan 2026 11:25:12 +0000 Subject: [PATCH 02/10] feat: first version of userinput for popup --- .../lib/panels/widgets/popupDialogWidget.py | 56 +++++++++++++++---- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/BlocksScreen/lib/panels/widgets/popupDialogWidget.py b/BlocksScreen/lib/panels/widgets/popupDialogWidget.py index f878f612..38b27315 100644 --- a/BlocksScreen/lib/panels/widgets/popupDialogWidget.py +++ b/BlocksScreen/lib/panels/widgets/popupDialogWidget.py @@ -3,10 +3,6 @@ from typing import Deque from PyQt6 import QtCore, QtGui, QtWidgets - -BASE_POPUP_TIMEOUT = 6000 - - class Popup(QtWidgets.QDialog): class MessageType(enum.Enum): """Popup Message type (level)""" @@ -25,9 +21,9 @@ class ColorCode(enum.Enum): def __init__(self, parent) -> None: super().__init__(parent) - self.popup_timeout = BASE_POPUP_TIMEOUT self.timeout_timer = QtCore.QTimer(self) self.messages: Deque = deque() + self.isShown = False self.persistent_notifications: Deque = deque() self.message_type: Popup.MessageType = Popup.MessageType.INFO self.default_background_color = QtGui.QColor(164, 164, 164) @@ -48,9 +44,13 @@ def __init__(self, parent) -> None: self.slide_out_animation = QtCore.QPropertyAnimation(self, b"geometry") self.slide_out_animation.setDuration(200) self.slide_out_animation.setEasingCurve(QtCore.QEasingCurve.Type.InCubic) - self.slide_in_animation.finished.connect(self.on_slide_in_finished) - self.slide_out_animation.finished.connect(self.on_slide_out_finished) - self.timeout_timer.timeout.connect(self.slide_out_animation.start) + + self.SingleTime = QtCore.QTimer(self) + self.SingleTime.setInterval(5000) + self.SingleTime.setSingleShot(True) + self.SingleTime.timeout.connect(self._add_popup) + + def on_slide_in_finished(self): """Handle slide in animation finished""" @@ -59,6 +59,7 @@ def on_slide_in_finished(self): def on_slide_out_finished(self): """Handle slide out animation finished""" self.close() + self.isShown = False self._add_popup() def _calculate_target_geometry(self) -> QtCore.QRect: @@ -90,6 +91,8 @@ def updateMask(self) -> None: def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None: """Re-implemented method, handle mouse press events""" self.timeout_timer.stop() + self.slide_out_animation.setStartValue(self.slide_in_animation.currentValue()) + self.slide_in_animation.stop() self.slide_out_animation.start() def set_timeout(self, value: int) -> None: @@ -102,7 +105,8 @@ def new_message( self, message_type: MessageType = MessageType.INFO, message: str = "", - timeout: int = 0, + timeout: int = 6000, + userInput: bool = True, ): """Create new popup message @@ -117,10 +121,18 @@ def new_message( self.messages.append( {"message": message, "type": message_type, "timeout": timeout} ) + self.userInput = userInput return self._add_popup() def _add_popup(self) -> None: """Add popup to queue""" + if self.isShown: + if self.SingleTime.isActive(): + return + self.SingleTime.start() + return + + if ( self.messages and self.slide_in_animation.state() @@ -131,7 +143,15 @@ def _add_popup(self) -> None: message_entry = self.messages.popleft() self.message_type = message_entry.get("type") message = message_entry.get("message") + + if message == self.text_label.text(): + if self.SingleTime.isActive(): + return + self.SingleTime.start() + return + self.text_label.setText(message) + match self.message_type: case Popup.MessageType.INFO: self.icon_label.setPixmap(self.info_icon) @@ -139,19 +159,31 @@ def _add_popup(self) -> None: self.icon_label.setPixmap(self.warning_icon) case Popup.MessageType.ERROR: self.icon_label.setPixmap(self.error_icon) - self.timeout_timer.setInterval(self.popup_timeout) + + end_rect = self._calculate_target_geometry() - start_rect = end_rect.translated(0, -end_rect.height()) + start_rect = end_rect.translated(0, -end_rect.height()*2) + self.slide_in_animation.setStartValue(start_rect) self.slide_in_animation.setEndValue(end_rect) self.slide_out_animation.setStartValue(end_rect) self.slide_out_animation.setEndValue(start_rect) - self.setGeometry(start_rect) + + if not self.userInput: + timeout = message_entry.get("timeout") + self.timeout_timer.setInterval(timeout) + self.slide_in_animation.finished.connect(self.on_slide_in_finished) + self.timeout_timer.timeout.connect(self.slide_out_animation.start) + + self.slide_out_animation.finished.connect(self.on_slide_out_finished) + + self.setGeometry(end_rect) self.open() def showEvent(self, a0: QtGui.QShowEvent) -> None: """Re-implementation, widget show""" self.slide_in_animation.start() + self.isShown = True super().showEvent(a0) def resizeEvent(self, a0: QtGui.QResizeEvent) -> None: From 9c0f703b39d253af463164ebaf01ef1f833b62f9 Mon Sep 17 00:00:00 2001 From: Roberto Date: Mon, 5 Jan 2026 16:02:34 +0000 Subject: [PATCH 03/10] feat: added new error and info icons --- .../lib/ui/resources/icon_resources.qrc | 4 +- .../lib/ui/resources/icon_resources_rc.py | 753 ++++++++---------- .../ui/resources/media/btn_icons/error.svg | 60 +- .../lib/ui/resources/media/btn_icons/info.svg | 14 +- 4 files changed, 372 insertions(+), 459 deletions(-) diff --git a/BlocksScreen/lib/ui/resources/icon_resources.qrc b/BlocksScreen/lib/ui/resources/icon_resources.qrc index a3bf6d57..8338a1da 100644 --- a/BlocksScreen/lib/ui/resources/icon_resources.qrc +++ b/BlocksScreen/lib/ui/resources/icon_resources.qrc @@ -89,9 +89,9 @@ media/btn_icons/center_arrows.svg media/btn_icons/confirm_stl_window.svg media/btn_icons/horizontal_scroll_bar.svg - media/btn_icons/info.svg - media/btn_icons/error.svg media/btn_icons/info_prints.svg + media/btn_icons/error.svg + media/btn_icons/info.svg media/btn_icons/LCD_settings.svg media/btn_icons/LEDs.svg media/btn_icons/LEDs_off.svg diff --git a/BlocksScreen/lib/ui/resources/icon_resources_rc.py b/BlocksScreen/lib/ui/resources/icon_resources_rc.py index 1346a1f1..8ae1fba1 100644 --- a/BlocksScreen/lib/ui/resources/icon_resources_rc.py +++ b/BlocksScreen/lib/ui/resources/icon_resources_rc.py @@ -6,7 +6,7 @@ # # WARNING! All changes made in this file will be lost! -from PyQt6 import QtCore +from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\x62\ @@ -22339,54 +22339,75 @@ \x20\x34\x38\x31\x2e\x32\x32\x20\x35\x31\x30\x2e\x37\x37\x20\x32\ \x38\x36\x2e\x30\x36\x20\x38\x39\x2e\x32\x33\x20\x31\x31\x34\x2e\ \x34\x31\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\ -\x00\x00\x02\xe0\ +\x00\x00\x04\x25\ \x3c\ -\x73\x76\x67\x20\x69\x64\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\ -\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x4c\x61\x79\x65\ -\x72\x20\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ -\x30\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\ -\x22\x30\x20\x30\x20\x36\x30\x30\x20\x36\x30\x30\x22\x3e\x3c\x64\ -\x65\x66\x73\x3e\x3c\x73\x74\x79\x6c\x65\x3e\x2e\x63\x6c\x73\x2d\ -\x31\x7b\x66\x69\x6c\x6c\x3a\x23\x65\x30\x65\x30\x64\x66\x3b\x7d\ -\x3c\x2f\x73\x74\x79\x6c\x65\x3e\x3c\x2f\x64\x65\x66\x73\x3e\x3c\ -\x70\x61\x74\x68\x20\x63\x6c\x61\x73\x73\x3d\x22\x63\x6c\x73\x2d\ -\x31\x22\x20\x64\x3d\x22\x4d\x35\x36\x31\x2e\x34\x39\x2c\x33\x30\ -\x30\x63\x32\x2e\x36\x38\x2c\x31\x34\x31\x2e\x35\x32\x2d\x31\x31\ -\x38\x2e\x37\x39\x2c\x32\x36\x33\x2e\x36\x38\x2d\x32\x36\x34\x2e\ -\x36\x2c\x32\x36\x31\x2e\x36\x35\x2d\x31\x34\x31\x2e\x37\x31\x2d\ -\x32\x2d\x32\x35\x38\x2e\x35\x31\x2d\x31\x31\x38\x2e\x35\x39\x2d\ -\x32\x35\x38\x2e\x34\x32\x2d\x32\x36\x31\x2e\x38\x36\x43\x33\x38\ -\x2e\x35\x36\x2c\x31\x35\x34\x2e\x35\x35\x2c\x31\x35\x35\x2e\x36\ -\x38\x2c\x33\x38\x2e\x31\x36\x2c\x33\x30\x31\x2e\x35\x39\x2c\x33\ -\x38\x2e\x33\x32\x2c\x34\x34\x35\x2e\x34\x34\x2c\x33\x38\x2e\x34\ -\x37\x2c\x35\x36\x31\x2e\x34\x39\x2c\x31\x35\x35\x2e\x33\x33\x2c\ -\x35\x36\x31\x2e\x34\x39\x2c\x33\x30\x30\x5a\x4d\x32\x34\x37\x2e\ -\x32\x37\x2c\x33\x38\x35\x2e\x32\x32\x63\x30\x2c\x34\x36\x2e\x36\ -\x31\x2e\x31\x38\x2c\x39\x33\x2e\x32\x33\x2d\x2e\x31\x38\x2c\x31\ -\x33\x39\x2e\x38\x34\x2d\x2e\x30\x36\x2c\x37\x2e\x32\x39\x2c\x32\ -\x2c\x39\x2c\x39\x2c\x38\x2e\x38\x37\x2c\x32\x39\x2e\x36\x36\x2d\ -\x2e\x33\x39\x2c\x35\x39\x2e\x33\x33\x2d\x2e\x33\x2c\x38\x39\x2c\ -\x30\x2c\x35\x2e\x37\x33\x2e\x30\x35\x2c\x37\x2e\x37\x2d\x31\x2e\ -\x32\x35\x2c\x37\x2e\x36\x39\x2d\x37\x2e\x34\x33\x71\x2d\x2e\x33\ -\x31\x2d\x31\x34\x31\x2e\x36\x35\x2c\x30\x2d\x32\x38\x33\x2e\x33\ -\x63\x30\x2d\x36\x2e\x32\x31\x2d\x32\x2d\x37\x2e\x33\x36\x2d\x37\ -\x2e\x36\x35\x2d\x37\x2e\x33\x31\x2d\x32\x39\x2e\x36\x36\x2e\x32\ -\x36\x2d\x35\x39\x2e\x33\x34\x2e\x34\x36\x2d\x38\x39\x2d\x2e\x31\ -\x2d\x38\x2d\x2e\x31\x35\x2d\x39\x2e\x31\x32\x2c\x32\x2e\x35\x32\ -\x2d\x39\x2e\x30\x37\x2c\x39\x2e\x36\x34\x43\x32\x34\x37\x2e\x34\ -\x33\x2c\x32\x39\x32\x2c\x32\x34\x37\x2e\x32\x37\x2c\x33\x33\x38\ -\x2e\x36\x31\x2c\x32\x34\x37\x2e\x32\x37\x2c\x33\x38\x35\x2e\x32\ -\x32\x5a\x6d\x35\x34\x2e\x30\x38\x2d\x33\x30\x36\x63\x2d\x33\x30\ -\x2e\x31\x33\x2d\x2e\x34\x31\x2d\x35\x36\x2e\x33\x35\x2c\x31\x38\ -\x2d\x36\x33\x2e\x32\x36\x2c\x34\x34\x2e\x34\x33\x2d\x38\x2e\x33\ -\x2c\x33\x31\x2e\x37\x39\x2c\x31\x30\x2e\x30\x38\x2c\x36\x33\x2e\ -\x33\x34\x2c\x34\x32\x2e\x33\x32\x2c\x37\x32\x2e\x36\x33\x2c\x33\ -\x34\x2e\x38\x2c\x31\x30\x2c\x37\x31\x2e\x37\x33\x2d\x38\x2e\x31\ -\x31\x2c\x38\x31\x2e\x35\x35\x2d\x34\x30\x2e\x30\x35\x43\x33\x37\ -\x33\x2e\x38\x35\x2c\x31\x31\x37\x2e\x36\x33\x2c\x33\x34\x34\x2e\ -\x31\x31\x2c\x37\x39\x2e\x38\x35\x2c\x33\x30\x31\x2e\x33\x35\x2c\ -\x37\x39\x2e\x32\x37\x5a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x69\x64\x3d\x22\x4c\ +\x61\x79\x65\x72\x5f\x31\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\ +\x65\x3d\x22\x4c\x61\x79\x65\x72\x20\x31\x22\x20\x78\x6d\x6c\x6e\ +\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ +\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x30\x30\x20\ +\x36\x30\x30\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x3e\x0a\x20\ +\x20\x20\x20\x3c\x73\x74\x79\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\ +\x20\x2e\x63\x6c\x73\x2d\x31\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x66\x69\x6c\x6c\x3a\x20\x23\x65\x30\x65\x30\x64\x66\x3b\ +\x0a\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x3c\x2f\x73\ +\x74\x79\x6c\x65\x3e\x0a\x20\x20\x3c\x2f\x64\x65\x66\x73\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x63\x6c\x61\x73\x73\x3d\x22\x63\ +\x6c\x73\x2d\x31\x22\x20\x64\x3d\x22\x4d\x33\x33\x37\x2e\x39\x35\ +\x2c\x32\x35\x31\x2e\x37\x35\x63\x2d\x32\x34\x2e\x39\x32\x2e\x32\ +\x32\x2d\x34\x39\x2e\x38\x34\x2e\x33\x39\x2d\x37\x34\x2e\x37\x35\ +\x2d\x2e\x30\x38\x2d\x36\x2e\x37\x34\x2d\x2e\x31\x33\x2d\x37\x2e\ +\x36\x37\x2c\x32\x2e\x31\x32\x2d\x37\x2e\x36\x32\x2c\x38\x2e\x31\ +\x2e\x32\x37\x2c\x33\x39\x2e\x31\x35\x2e\x31\x34\x2c\x37\x38\x2e\ +\x33\x2e\x31\x34\x2c\x31\x31\x37\x2e\x34\x35\x73\x2e\x31\x35\x2c\ +\x37\x38\x2e\x33\x2d\x2e\x31\x35\x2c\x31\x31\x37\x2e\x34\x35\x63\ +\x2d\x2e\x30\x35\x2c\x36\x2e\x31\x33\x2c\x31\x2e\x37\x31\x2c\x37\ +\x2e\x35\x33\x2c\x37\x2e\x36\x2c\x37\x2e\x34\x36\x2c\x32\x34\x2e\ +\x39\x32\x2d\x2e\x33\x33\x2c\x34\x39\x2e\x38\x34\x2d\x2e\x32\x36\ +\x2c\x37\x34\x2e\x37\x36\x2d\x2e\x30\x34\x2c\x34\x2e\x38\x32\x2e\ +\x30\x34\x2c\x36\x2e\x34\x37\x2d\x31\x2e\x30\x35\x2c\x36\x2e\x34\ +\x36\x2d\x36\x2e\x32\x34\x2d\x2e\x31\x37\x2d\x37\x39\x2e\x33\x32\ +\x2d\x2e\x31\x37\x2d\x31\x35\x38\x2e\x36\x34\x2c\x30\x2d\x32\x33\ +\x37\x2e\x39\x36\x2e\x30\x31\x2d\x35\x2e\x32\x32\x2d\x31\x2e\x36\ +\x36\x2d\x36\x2e\x31\x39\x2d\x36\x2e\x34\x33\x2d\x36\x2e\x31\x34\ +\x5a\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x63\x6c\x61\ +\x73\x73\x3d\x22\x63\x6c\x73\x2d\x31\x22\x20\x64\x3d\x22\x4d\x35\ +\x37\x34\x2e\x32\x34\x2c\x33\x30\x35\x2e\x36\x34\x63\x30\x2d\x31\ +\x35\x31\x2e\x37\x34\x2d\x31\x32\x31\x2e\x37\x31\x2d\x32\x37\x34\ +\x2e\x32\x39\x2d\x32\x37\x32\x2e\x35\x37\x2d\x32\x37\x34\x2e\x34\ +\x36\x2d\x31\x35\x33\x2e\x30\x33\x2d\x2e\x31\x36\x2d\x32\x37\x35\ +\x2e\x38\x36\x2c\x31\x32\x31\x2e\x39\x2d\x32\x37\x35\x2e\x39\x36\ +\x2c\x32\x37\x34\x2e\x32\x34\x2d\x2e\x31\x2c\x31\x35\x30\x2e\x32\ +\x36\x2c\x31\x32\x32\x2e\x34\x2c\x32\x37\x32\x2e\x35\x36\x2c\x32\ +\x37\x31\x2e\x30\x32\x2c\x32\x37\x34\x2e\x36\x33\x2c\x31\x35\x32\ +\x2e\x39\x32\x2c\x32\x2e\x31\x33\x2c\x32\x38\x30\x2e\x33\x32\x2d\ +\x31\x32\x35\x2e\x39\x39\x2c\x32\x37\x37\x2e\x35\x31\x2d\x32\x37\ +\x34\x2e\x34\x5a\x4d\x32\x39\x37\x2e\x33\x38\x2c\x35\x32\x35\x2e\ +\x34\x31\x63\x2d\x31\x31\x39\x2e\x30\x33\x2d\x31\x2e\x36\x36\x2d\ +\x32\x31\x37\x2e\x31\x33\x2d\x39\x39\x2e\x36\x31\x2d\x32\x31\x37\ +\x2e\x30\x36\x2d\x32\x31\x39\x2e\x39\x35\x2e\x30\x38\x2d\x31\x32\ +\x32\x2c\x39\x38\x2e\x34\x35\x2d\x32\x31\x39\x2e\x37\x36\x2c\x32\ +\x32\x31\x2e\x30\x31\x2d\x32\x31\x39\x2e\x36\x33\x2c\x31\x32\x30\ +\x2e\x38\x32\x2e\x31\x33\x2c\x32\x31\x38\x2e\x33\x2c\x39\x38\x2e\ +\x32\x38\x2c\x32\x31\x38\x2e\x33\x2c\x32\x31\x39\x2e\x38\x31\x2c\ +\x32\x2e\x32\x35\x2c\x31\x31\x38\x2e\x38\x37\x2d\x39\x39\x2e\x37\ +\x38\x2c\x32\x32\x31\x2e\x34\x37\x2d\x32\x32\x32\x2e\x32\x35\x2c\ +\x32\x31\x39\x2e\x37\x37\x5a\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x63\x6c\x61\x73\x73\x3d\x22\x63\x6c\x73\x2d\x31\x22\ +\x20\x64\x3d\x22\x4d\x33\x30\x31\x2e\x31\x33\x2c\x31\x32\x30\x2e\ +\x32\x33\x63\x2d\x32\x35\x2e\x33\x31\x2d\x2e\x33\x35\x2d\x34\x37\ +\x2e\x33\x33\x2c\x31\x35\x2e\x31\x32\x2d\x35\x33\x2e\x31\x33\x2c\ +\x33\x37\x2e\x33\x32\x2d\x36\x2e\x39\x38\x2c\x32\x36\x2e\x37\x2c\ +\x38\x2e\x34\x36\x2c\x35\x33\x2e\x32\x2c\x33\x35\x2e\x35\x35\x2c\ +\x36\x31\x2e\x30\x31\x2c\x32\x39\x2e\x32\x33\x2c\x38\x2e\x34\x32\ +\x2c\x36\x30\x2e\x32\x35\x2d\x36\x2e\x38\x31\x2c\x36\x38\x2e\x35\ +\x2d\x33\x33\x2e\x36\x34\x2c\x39\x2e\x39\x38\x2d\x33\x32\x2e\x34\ +\x36\x2d\x31\x34\x2e\x39\x39\x2d\x36\x34\x2e\x31\x39\x2d\x35\x30\ +\x2e\x39\x31\x2d\x36\x34\x2e\x36\x38\x5a\x22\x2f\x3e\x0a\x3c\x2f\ +\x73\x76\x67\x3e\ \x00\x00\x06\x33\ \x3c\ \x73\x76\x67\x20\x69\x64\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\ @@ -23113,160 +23134,74 @@ \x35\x33\x32\x2e\x39\x36\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ \x34\x31\x38\x2e\x33\x36\x22\x20\x72\x78\x3d\x22\x32\x39\x2e\x31\ \x37\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\ -\x00\x00\x09\x7d\ +\x00\x00\x04\x1d\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ -\x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ -\x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ -\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ -\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ -\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ -\x31\x33\x38\x2e\x33\x39\x33\x39\x31\x6d\x6d\x22\x0a\x20\x20\x20\ -\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x33\x38\x2e\x34\x37\x31\x30\ -\x35\x6d\x6d\x22\x0a\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\ -\x22\x30\x20\x30\x20\x31\x33\x38\x2e\x33\x39\x33\x39\x31\x20\x31\ -\x33\x38\x2e\x34\x37\x31\x30\x35\x22\x0a\x20\x20\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x69\x64\ -\x3d\x22\x73\x76\x67\x31\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\x63\ -\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x34\ -\x20\x28\x38\x36\x61\x38\x61\x64\x37\x2c\x20\x32\x30\x32\x34\x2d\ -\x31\x30\x2d\x31\x31\x29\x22\x0a\x20\x20\x20\x73\x6f\x64\x69\x70\ -\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\x22\x65\x72\x72\ -\x6f\x72\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x78\x6d\x6c\x3a\x73\ -\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x0a\ -\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\ -\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\ -\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\ -\x70\x61\x63\x65\x73\x2f\x69\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\ -\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\x6f\x64\ -\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\x70\x6f\ -\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\x2e\x6e\ -\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2d\ -\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3d\ -\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\ -\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\ -\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\x68\x74\x74\x70\x3a\ -\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ -\x30\x2f\x73\x76\x67\x22\x3e\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\ -\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x31\x22\x0a\ -\x20\x20\x20\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\ -\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\ -\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x30\x30\x30\x30\ -\x30\x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x6f\ -\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x2e\x32\x35\x22\x0a\x20\x20\ -\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x68\x6f\x77\ -\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\x20\ -\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\ -\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x2e\x30\x22\x0a\x20\ -\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\ -\x65\x63\x68\x65\x63\x6b\x65\x72\x62\x6f\x61\x72\x64\x3d\x22\x30\ -\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ -\x64\x65\x73\x6b\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x64\x31\x64\x31\ -\x64\x31\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ -\x65\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2d\x75\x6e\x69\x74\x73\ -\x3d\x22\x6d\x6d\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ -\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x30\x2e\x37\x33\x34\x39\ -\x35\x33\x37\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x3a\x63\x78\x3d\x22\x34\x34\x32\x2e\x38\x38\x35\x30\x34\ -\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ -\x63\x79\x3d\x22\x32\x39\x38\x2e\x36\x35\x38\x32\x37\x22\x0a\x20\ -\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\ -\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x39\x32\x30\x22\ -\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ -\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\ -\x32\x37\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ -\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\x31\x39\x31\x32\ -\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ -\x77\x69\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x32\x32\x22\x0a\x20\x20\ -\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\ -\x6f\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\x31\x22\ -\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\ -\x75\x72\x72\x65\x6e\x74\x2d\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\ -\x67\x31\x22\x3e\x3c\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\ -\x67\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x78\x3d\x22\x30\x22\x0a\ -\x20\x20\x20\x20\x20\x20\x20\x79\x3d\x22\x30\x22\x0a\x20\x20\x20\ -\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x33\x38\x2e\x33\ -\x39\x33\x39\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\ -\x67\x68\x74\x3d\x22\x31\x33\x38\x2e\x34\x37\x31\x30\x35\x22\x0a\ -\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x67\x65\x33\ -\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3d\ -\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x62\x6c\x65\x65\x64\ -\x3d\x22\x30\x22\x20\x2f\x3e\x3c\x2f\x73\x6f\x64\x69\x70\x6f\x64\ -\x69\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x3e\x3c\x64\x65\x66\ -\x73\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x31\ -\x22\x3e\x3c\x73\x74\x79\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x73\x74\x79\x6c\x65\x31\x22\x3e\x2e\x63\x6c\x73\ -\x2d\x31\x7b\x66\x69\x6c\x6c\x3a\x23\x65\x30\x65\x30\x64\x66\x3b\ -\x7d\x3c\x2f\x73\x74\x79\x6c\x65\x3e\x3c\x2f\x64\x65\x66\x73\x3e\ -\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x63\x6c\x61\x73\x73\ -\x3d\x22\x63\x6c\x73\x2d\x31\x22\x0a\x20\x20\x20\x20\x20\x64\x3d\ -\x22\x4d\x20\x30\x2e\x30\x31\x31\x35\x31\x36\x30\x33\x2c\x36\x39\ -\x2e\x32\x33\x34\x38\x33\x31\x20\x43\x20\x2d\x30\x2e\x36\x39\x37\ -\x35\x36\x33\x39\x37\x2c\x33\x31\x2e\x37\x39\x31\x30\x30\x31\x20\ -\x33\x31\x2e\x34\x34\x31\x33\x37\x35\x2c\x2d\x30\x2e\x35\x33\x30\ -\x35\x30\x30\x31\x34\x20\x37\x30\x2e\x30\x32\x30\x32\x36\x35\x2c\ -\x30\x2e\x30\x30\x36\x35\x39\x39\x34\x36\x20\x31\x30\x37\x2e\x35\ -\x31\x34\x33\x38\x2c\x30\x2e\x35\x33\x35\x37\x36\x39\x34\x36\x20\ -\x31\x33\x38\x2e\x34\x31\x37\x37\x31\x2c\x33\x31\x2e\x33\x38\x33\ -\x35\x34\x31\x20\x31\x33\x38\x2e\x33\x39\x33\x39\x2c\x36\x39\x2e\ -\x32\x39\x30\x33\x39\x31\x20\x31\x33\x38\x2e\x33\x37\x30\x31\x2c\ -\x31\x30\x37\x2e\x37\x31\x38\x34\x38\x20\x31\x30\x37\x2e\x33\x38\ -\x32\x30\x39\x2c\x31\x33\x38\x2e\x35\x31\x33\x33\x33\x20\x36\x38\ -\x2e\x37\x37\x36\x37\x32\x35\x2c\x31\x33\x38\x2e\x34\x37\x31\x20\ -\x33\x30\x2e\x37\x31\x36\x34\x31\x35\x2c\x31\x33\x38\x2e\x34\x33\ -\x31\x33\x20\x30\x2e\x30\x31\x31\x35\x31\x36\x30\x33\x2c\x31\x30\ -\x37\x2e\x35\x31\x32\x31\x20\x30\x2e\x30\x31\x31\x35\x31\x36\x30\ -\x33\x2c\x36\x39\x2e\x32\x33\x34\x38\x33\x31\x20\x5a\x20\x4d\x20\ -\x38\x33\x2e\x31\x34\x38\x38\x39\x35\x2c\x34\x36\x2e\x36\x38\x37\ -\x30\x34\x31\x20\x63\x20\x30\x2c\x2d\x31\x32\x2e\x33\x33\x32\x32\ -\x33\x20\x2d\x30\x2e\x30\x34\x37\x36\x2c\x2d\x32\x34\x2e\x36\x36\ -\x37\x31\x31\x20\x30\x2e\x30\x34\x37\x36\x2c\x2d\x33\x36\x2e\x39\ -\x39\x39\x33\x34\x31\x36\x20\x30\x2e\x30\x31\x35\x39\x2c\x2d\x31\ -\x2e\x39\x32\x38\x38\x31\x20\x2d\x30\x2e\x35\x32\x39\x31\x36\x2c\ -\x2d\x32\x2e\x33\x38\x31\x32\x35\x20\x2d\x32\x2e\x33\x38\x31\x32\ -\x35\x2c\x2d\x32\x2e\x33\x34\x36\x38\x35\x20\x2d\x37\x2e\x38\x34\ -\x37\x35\x34\x2c\x30\x2e\x31\x30\x33\x31\x39\x20\x2d\x31\x35\x2e\ -\x36\x39\x37\x37\x33\x2c\x30\x2e\x30\x37\x39\x34\x20\x2d\x32\x33\ -\x2e\x35\x34\x37\x39\x31\x2c\x30\x20\x2d\x31\x2e\x35\x31\x36\x30\ -\x37\x2c\x2d\x30\x2e\x30\x31\x33\x32\x20\x2d\x32\x2e\x30\x33\x37\ -\x32\x39\x2c\x30\x2e\x33\x33\x30\x37\x33\x20\x2d\x32\x2e\x30\x33\ -\x34\x36\x35\x2c\x31\x2e\x39\x36\x35\x38\x35\x20\x71\x20\x30\x2e\ -\x30\x38\x32\x2c\x33\x37\x2e\x34\x37\x38\x32\x33\x31\x36\x20\x30\ -\x2c\x37\x34\x2e\x39\x35\x36\x34\x36\x31\x36\x20\x63\x20\x30\x2c\ -\x31\x2e\x36\x34\x33\x30\x36\x20\x30\x2e\x35\x32\x39\x31\x37\x2c\ -\x31\x2e\x39\x34\x37\x33\x34\x20\x32\x2e\x30\x32\x34\x30\x36\x2c\ -\x31\x2e\x39\x33\x34\x31\x31\x20\x37\x2e\x38\x34\x37\x35\x35\x2c\ -\x2d\x30\x2e\x30\x36\x38\x38\x20\x31\x35\x2e\x37\x30\x30\x33\x38\ -\x2c\x2d\x30\x2e\x31\x32\x31\x37\x31\x20\x32\x33\x2e\x35\x34\x37\ -\x39\x32\x2c\x30\x2e\x30\x32\x36\x35\x20\x32\x2e\x31\x31\x36\x36\ -\x37\x2c\x30\x2e\x30\x33\x39\x37\x20\x32\x2e\x34\x31\x33\x2c\x2d\ -\x30\x2e\x36\x36\x36\x37\x35\x20\x32\x2e\x33\x39\x39\x37\x37\x2c\ -\x2d\x32\x2e\x35\x35\x30\x35\x39\x20\x2d\x30\x2e\x30\x39\x37\x39\ -\x2c\x2d\x31\x32\x2e\x33\x32\x31\x36\x34\x20\x2d\x30\x2e\x30\x35\ -\x35\x36\x2c\x2d\x32\x34\x2e\x36\x35\x33\x38\x37\x20\x2d\x30\x2e\ -\x30\x35\x35\x36\x2c\x2d\x33\x36\x2e\x39\x38\x36\x31\x20\x7a\x20\ -\x6d\x20\x2d\x31\x34\x2e\x33\x30\x38\x36\x37\x2c\x38\x30\x2e\x39\ -\x36\x32\x34\x39\x39\x20\x63\x20\x37\x2e\x39\x37\x31\x39\x2c\x30\ -\x2e\x31\x30\x38\x34\x38\x20\x31\x34\x2e\x39\x30\x39\x32\x37\x2c\ -\x2d\x34\x2e\x37\x36\x32\x35\x20\x31\x36\x2e\x37\x33\x37\x35\x34\ -\x2c\x2d\x31\x31\x2e\x37\x35\x35\x34\x34\x20\x32\x2e\x31\x39\x36\ -\x30\x35\x2c\x2d\x38\x2e\x34\x31\x31\x31\x20\x2d\x32\x2e\x36\x36\ -\x37\x2c\x2d\x31\x36\x2e\x37\x35\x38\x37\x30\x37\x20\x2d\x31\x31\ -\x2e\x31\x39\x37\x31\x36\x2c\x2d\x31\x39\x2e\x32\x31\x36\x36\x38\ -\x37\x20\x2d\x39\x2e\x32\x30\x37\x35\x2c\x2d\x32\x2e\x36\x34\x35\ -\x38\x33\x20\x2d\x31\x38\x2e\x39\x37\x38\x35\x37\x2c\x32\x2e\x31\ -\x34\x35\x37\x37\x20\x2d\x32\x31\x2e\x35\x37\x36\x37\x37\x2c\x31\ -\x30\x2e\x35\x39\x36\x35\x36\x37\x20\x2d\x33\x2e\x31\x34\x35\x39\ -\x2c\x31\x30\x2e\x32\x31\x32\x39\x31\x20\x34\x2e\x37\x32\x32\x38\ -\x31\x2c\x32\x30\x2e\x32\x30\x38\x38\x37\x20\x31\x36\x2e\x30\x33\ -\x36\x33\x39\x2c\x32\x30\x2e\x33\x36\x32\x33\x33\x20\x7a\x22\x0a\ -\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x22\x0a\ -\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x73\x74\x72\x6f\ -\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x30\x2e\x32\x36\x34\x35\x38\ -\x33\x22\x20\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x69\x64\x3d\x22\x4c\ +\x61\x79\x65\x72\x5f\x31\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\ +\x65\x3d\x22\x4c\x61\x79\x65\x72\x20\x31\x22\x20\x78\x6d\x6c\x6e\ +\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ +\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x30\x30\x20\ +\x36\x30\x30\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x3e\x0a\x20\ +\x20\x20\x20\x3c\x73\x74\x79\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\ +\x20\x2e\x63\x6c\x73\x2d\x31\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x66\x69\x6c\x6c\x3a\x20\x23\x65\x30\x65\x30\x64\x66\x3b\ +\x0a\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x3c\x2f\x73\ +\x74\x79\x6c\x65\x3e\x0a\x20\x20\x3c\x2f\x64\x65\x66\x73\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x63\x6c\x61\x73\x73\x3d\x22\x63\ +\x6c\x73\x2d\x31\x22\x20\x64\x3d\x22\x4d\x32\x36\x32\x2e\x30\x35\ +\x2c\x33\x35\x39\x2e\x35\x31\x63\x32\x34\x2e\x39\x32\x2d\x2e\x32\ +\x32\x2c\x34\x39\x2e\x38\x34\x2d\x2e\x33\x39\x2c\x37\x34\x2e\x37\ +\x35\x2e\x30\x38\x2c\x36\x2e\x37\x34\x2e\x31\x33\x2c\x37\x2e\x36\ +\x37\x2d\x32\x2e\x31\x32\x2c\x37\x2e\x36\x32\x2d\x38\x2e\x31\x2d\ +\x2e\x32\x37\x2d\x33\x39\x2e\x31\x35\x2d\x2e\x31\x34\x2d\x37\x38\ +\x2e\x33\x2d\x2e\x31\x34\x2d\x31\x31\x37\x2e\x34\x35\x73\x2d\x2e\ +\x31\x35\x2d\x37\x38\x2e\x33\x2e\x31\x35\x2d\x31\x31\x37\x2e\x34\ +\x35\x63\x2e\x30\x35\x2d\x36\x2e\x31\x33\x2d\x31\x2e\x37\x31\x2d\ +\x37\x2e\x35\x33\x2d\x37\x2e\x36\x2d\x37\x2e\x34\x36\x2d\x32\x34\ +\x2e\x39\x32\x2e\x33\x33\x2d\x34\x39\x2e\x38\x34\x2e\x32\x36\x2d\ +\x37\x34\x2e\x37\x36\x2e\x30\x34\x2d\x34\x2e\x38\x32\x2d\x2e\x30\ +\x34\x2d\x36\x2e\x34\x37\x2c\x31\x2e\x30\x35\x2d\x36\x2e\x34\x36\ +\x2c\x36\x2e\x32\x34\x2e\x31\x37\x2c\x37\x39\x2e\x33\x32\x2e\x31\ +\x37\x2c\x31\x35\x38\x2e\x36\x34\x2c\x30\x2c\x32\x33\x37\x2e\x39\ +\x36\x2d\x2e\x30\x31\x2c\x35\x2e\x32\x32\x2c\x31\x2e\x36\x36\x2c\ +\x36\x2e\x31\x39\x2c\x36\x2e\x34\x33\x2c\x36\x2e\x31\x34\x5a\x22\ +\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x63\x6c\x61\x73\x73\ +\x3d\x22\x63\x6c\x73\x2d\x31\x22\x20\x64\x3d\x22\x4d\x32\x35\x2e\ +\x37\x36\x2c\x33\x30\x35\x2e\x36\x32\x63\x30\x2c\x31\x35\x31\x2e\ +\x37\x34\x2c\x31\x32\x31\x2e\x37\x31\x2c\x32\x37\x34\x2e\x32\x39\ +\x2c\x32\x37\x32\x2e\x35\x37\x2c\x32\x37\x34\x2e\x34\x36\x2c\x31\ +\x35\x33\x2e\x30\x33\x2e\x31\x36\x2c\x32\x37\x35\x2e\x38\x36\x2d\ +\x31\x32\x31\x2e\x39\x2c\x32\x37\x35\x2e\x39\x36\x2d\x32\x37\x34\ +\x2e\x32\x34\x2e\x31\x2d\x31\x35\x30\x2e\x32\x36\x2d\x31\x32\x32\ +\x2e\x34\x2d\x32\x37\x32\x2e\x35\x36\x2d\x32\x37\x31\x2e\x30\x32\ +\x2d\x32\x37\x34\x2e\x36\x33\x43\x31\x35\x30\x2e\x33\x35\x2c\x32\ +\x39\x2e\x30\x38\x2c\x32\x32\x2e\x39\x35\x2c\x31\x35\x37\x2e\x32\ +\x2c\x32\x35\x2e\x37\x36\x2c\x33\x30\x35\x2e\x36\x32\x5a\x4d\x33\ +\x30\x32\x2e\x36\x32\x2c\x38\x35\x2e\x38\x35\x63\x31\x31\x39\x2e\ +\x30\x33\x2c\x31\x2e\x36\x36\x2c\x32\x31\x37\x2e\x31\x33\x2c\x39\ +\x39\x2e\x36\x31\x2c\x32\x31\x37\x2e\x30\x36\x2c\x32\x31\x39\x2e\ +\x39\x35\x2d\x2e\x30\x38\x2c\x31\x32\x32\x2d\x39\x38\x2e\x34\x35\ +\x2c\x32\x31\x39\x2e\x37\x36\x2d\x32\x32\x31\x2e\x30\x31\x2c\x32\ +\x31\x39\x2e\x36\x33\x2d\x31\x32\x30\x2e\x38\x32\x2d\x2e\x31\x33\ +\x2d\x32\x31\x38\x2e\x33\x2d\x39\x38\x2e\x32\x38\x2d\x32\x31\x38\ +\x2e\x33\x2d\x32\x31\x39\x2e\x38\x31\x2d\x32\x2e\x32\x35\x2d\x31\ +\x31\x38\x2e\x38\x37\x2c\x39\x39\x2e\x37\x38\x2d\x32\x32\x31\x2e\ +\x34\x37\x2c\x32\x32\x32\x2e\x32\x35\x2d\x32\x31\x39\x2e\x37\x37\ +\x5a\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x63\x6c\x61\ +\x73\x73\x3d\x22\x63\x6c\x73\x2d\x31\x22\x20\x64\x3d\x22\x4d\x32\ +\x39\x38\x2e\x38\x37\x2c\x34\x39\x31\x2e\x30\x33\x63\x32\x35\x2e\ +\x33\x31\x2e\x33\x35\x2c\x34\x37\x2e\x33\x33\x2d\x31\x35\x2e\x31\ +\x32\x2c\x35\x33\x2e\x31\x33\x2d\x33\x37\x2e\x33\x32\x2c\x36\x2e\ +\x39\x38\x2d\x32\x36\x2e\x37\x2d\x38\x2e\x34\x36\x2d\x35\x33\x2e\ +\x32\x2d\x33\x35\x2e\x35\x35\x2d\x36\x31\x2e\x30\x31\x2d\x32\x39\ +\x2e\x32\x33\x2d\x38\x2e\x34\x32\x2d\x36\x30\x2e\x32\x35\x2c\x36\ +\x2e\x38\x31\x2d\x36\x38\x2e\x35\x2c\x33\x33\x2e\x36\x34\x2d\x39\ +\x2e\x39\x38\x2c\x33\x32\x2e\x34\x36\x2c\x31\x34\x2e\x39\x39\x2c\ +\x36\x34\x2e\x31\x39\x2c\x35\x30\x2e\x39\x31\x2c\x36\x34\x2e\x36\ +\x38\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ \x00\x00\x05\xf3\ \x3c\ \x73\x76\x67\x20\x69\x64\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\ @@ -26193,39 +26128,39 @@ \x00\x00\x11\xfc\x00\x00\x00\x00\x00\x01\x00\x05\x5e\x40\ \x00\x00\x12\x1c\x00\x00\x00\x00\x00\x01\x00\x05\x63\x15\ \x00\x00\x12\x32\x00\x00\x00\x00\x00\x01\x00\x05\x64\x05\ -\x00\x00\x12\x48\x00\x00\x00\x00\x00\x01\x00\x05\x66\xe9\ -\x00\x00\x12\x6e\x00\x00\x00\x00\x00\x01\x00\x05\x6d\x20\ -\x00\x00\x12\x88\x00\x00\x00\x00\x00\x01\x00\x05\x82\x2d\ -\x00\x00\x12\xaa\x00\x00\x00\x00\x00\x01\x00\x05\x87\x1d\ -\x00\x00\x12\xc0\x00\x00\x00\x00\x00\x01\x00\x05\x8a\x1c\ -\x00\x00\x12\xd6\x00\x00\x00\x00\x00\x01\x00\x05\x90\x26\ -\x00\x00\x13\x08\x00\x00\x00\x00\x00\x01\x00\x05\x93\x75\ -\x00\x00\x13\x20\x00\x00\x00\x00\x00\x01\x00\x05\x9c\xf6\ -\x00\x00\x13\x36\x00\x00\x00\x00\x00\x01\x00\x05\xa2\xed\ -\x00\x00\x13\x4a\x00\x00\x00\x00\x00\x01\x00\x05\xa4\xfe\ -\x00\x00\x13\x62\x00\x00\x00\x00\x00\x01\x00\x05\xa8\xc1\ -\x00\x00\x13\x88\x00\x00\x00\x00\x00\x01\x00\x05\xb2\x75\ -\x00\x00\x13\xb2\x00\x00\x00\x00\x00\x01\x00\x05\xb5\xc3\ -\x00\x00\x13\xd4\x00\x00\x00\x00\x00\x01\x00\x05\xb9\x51\ -\x00\x00\x13\xfa\x00\x00\x00\x00\x00\x01\x00\x05\xbd\xf2\ -\x00\x00\x14\x0e\x00\x00\x00\x00\x00\x01\x00\x05\xc7\xc4\ -\x00\x00\x14\x3a\x00\x00\x00\x00\x00\x01\x00\x05\xcd\x0e\ -\x00\x00\x14\x62\x00\x00\x00\x00\x00\x01\x00\x05\xd3\x15\ -\x00\x00\x14\x78\x00\x00\x00\x00\x00\x01\x00\x05\xd3\xf9\ -\x00\x00\x14\xa4\x00\x00\x00\x00\x00\x01\x00\x05\xd6\x42\ -\x00\x00\x14\xba\x00\x00\x00\x00\x00\x01\x00\x05\xdc\xf2\ -\x00\x00\x14\xd6\x00\x00\x00\x00\x00\x01\x00\x05\xe0\x36\ -\x00\x00\x14\xee\x00\x00\x00\x00\x00\x01\x00\x05\xe1\x62\ -\x00\x00\x15\x08\x00\x00\x00\x00\x00\x01\x00\x05\xe7\x23\ -\x00\x00\x15\x2a\x00\x00\x00\x00\x00\x01\x00\x05\xe8\x45\ -\x00\x00\x15\x48\x00\x00\x00\x00\x00\x01\x00\x05\xee\x38\ -\x00\x00\x15\x68\x00\x00\x00\x00\x00\x01\x00\x05\xf1\x3c\ -\x00\x00\x15\x8a\x00\x00\x00\x00\x00\x01\x00\x05\xf2\x5d\ -\x00\x00\x15\xaa\x00\x00\x00\x00\x00\x01\x00\x05\xf5\x31\ -\x00\x00\x15\xd8\x00\x00\x00\x00\x00\x01\x00\x05\xfd\x9d\ -\x00\x00\x15\xfc\x00\x00\x00\x00\x00\x01\x00\x06\x05\x5d\ -\x00\x00\x16\x20\x00\x00\x00\x00\x00\x01\x00\x06\x0a\x78\ -\x00\x00\x16\x48\x00\x00\x00\x00\x00\x01\x00\x06\x0b\xcb\ +\x00\x00\x12\x48\x00\x00\x00\x00\x00\x01\x00\x05\x68\x2e\ +\x00\x00\x12\x6e\x00\x00\x00\x00\x00\x01\x00\x05\x6e\x65\ +\x00\x00\x12\x88\x00\x00\x00\x00\x00\x01\x00\x05\x83\x72\ +\x00\x00\x12\xaa\x00\x00\x00\x00\x00\x01\x00\x05\x88\x62\ +\x00\x00\x12\xc0\x00\x00\x00\x00\x00\x01\x00\x05\x8b\x61\ +\x00\x00\x12\xd6\x00\x00\x00\x00\x00\x01\x00\x05\x91\x6b\ +\x00\x00\x13\x08\x00\x00\x00\x00\x00\x01\x00\x05\x94\xba\ +\x00\x00\x13\x20\x00\x00\x00\x00\x00\x01\x00\x05\x98\xdb\ +\x00\x00\x13\x36\x00\x00\x00\x00\x00\x01\x00\x05\x9e\xd2\ +\x00\x00\x13\x4a\x00\x00\x00\x00\x00\x01\x00\x05\xa0\xe3\ +\x00\x00\x13\x62\x00\x00\x00\x00\x00\x01\x00\x05\xa4\xa6\ +\x00\x00\x13\x88\x00\x00\x00\x00\x00\x01\x00\x05\xae\x5a\ +\x00\x00\x13\xb2\x00\x00\x00\x00\x00\x01\x00\x05\xb1\xa8\ +\x00\x00\x13\xd4\x00\x00\x00\x00\x00\x01\x00\x05\xb5\x36\ +\x00\x00\x13\xfa\x00\x00\x00\x00\x00\x01\x00\x05\xb9\xd7\ +\x00\x00\x14\x0e\x00\x00\x00\x00\x00\x01\x00\x05\xc3\xa9\ +\x00\x00\x14\x3a\x00\x00\x00\x00\x00\x01\x00\x05\xc8\xf3\ +\x00\x00\x14\x62\x00\x00\x00\x00\x00\x01\x00\x05\xce\xfa\ +\x00\x00\x14\x78\x00\x00\x00\x00\x00\x01\x00\x05\xcf\xde\ +\x00\x00\x14\xa4\x00\x00\x00\x00\x00\x01\x00\x05\xd2\x27\ +\x00\x00\x14\xba\x00\x00\x00\x00\x00\x01\x00\x05\xd8\xd7\ +\x00\x00\x14\xd6\x00\x00\x00\x00\x00\x01\x00\x05\xdc\x1b\ +\x00\x00\x14\xee\x00\x00\x00\x00\x00\x01\x00\x05\xdd\x47\ +\x00\x00\x15\x08\x00\x00\x00\x00\x00\x01\x00\x05\xe3\x08\ +\x00\x00\x15\x2a\x00\x00\x00\x00\x00\x01\x00\x05\xe4\x2a\ +\x00\x00\x15\x48\x00\x00\x00\x00\x00\x01\x00\x05\xea\x1d\ +\x00\x00\x15\x68\x00\x00\x00\x00\x00\x01\x00\x05\xed\x21\ +\x00\x00\x15\x8a\x00\x00\x00\x00\x00\x01\x00\x05\xee\x42\ +\x00\x00\x15\xaa\x00\x00\x00\x00\x00\x01\x00\x05\xf1\x16\ +\x00\x00\x15\xd8\x00\x00\x00\x00\x00\x01\x00\x05\xf9\x82\ +\x00\x00\x15\xfc\x00\x00\x00\x00\x00\x01\x00\x06\x01\x42\ +\x00\x00\x16\x20\x00\x00\x00\x00\x00\x01\x00\x06\x06\x5d\ +\x00\x00\x16\x48\x00\x00\x00\x00\x00\x01\x00\x06\x07\xb0\ " qt_resource_struct_v2 = b"\ @@ -26266,75 +26201,75 @@ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x12\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x08\x66\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x09\x52\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x02\x20\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x35\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x02\x48\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x18\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x02\x70\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x06\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x02\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x14\x42\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x02\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x1d\xf7\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x02\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x22\x41\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x03\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x26\x90\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x03\x36\x00\x00\x00\x00\x00\x01\x00\x00\x2c\x6e\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x03\x52\x00\x00\x00\x00\x00\x01\x00\x00\x30\xca\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x32\xb1\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x20\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x04\x00\x00\x00\x21\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x03\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x55\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x03\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x3c\xcf\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x43\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x03\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x41\xbf\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x26\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x27\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x04\x20\x00\x00\x00\x00\x00\x01\x00\x00\x44\x3b\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x45\x3c\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x04\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x4a\x54\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x04\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x56\x16\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x04\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x58\x86\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x04\xea\x00\x00\x00\x00\x00\x01\x00\x00\x5e\x1e\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x05\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x62\x7a\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x00\x69\x07\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x03\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x05\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x01\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x32\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x02\x00\x00\x00\x33\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x05\xbe\x00\x01\x00\x00\x00\x01\x00\x00\x77\x6b\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x05\xd0\x00\x00\x00\x00\x00\x01\x00\x02\x3a\xc0\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x02\x00\x00\x00\x36\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x06\x00\x00\x00\x3f\ @@ -26342,275 +26277,275 @@ \x00\x00\x05\xe4\x00\x02\x00\x00\x00\x07\x00\x00\x00\x38\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x05\xf6\x00\x00\x00\x00\x00\x01\x00\x02\x3f\x46\ -\x00\x00\x01\x9a\x72\xe1\x95\x8f\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x06\x2a\x00\x00\x00\x00\x00\x01\x00\x02\x49\xaa\ -\x00\x00\x01\x9a\x72\xe1\x95\x93\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x06\x5e\x00\x00\x00\x00\x00\x01\x00\x02\x53\xd3\ -\x00\x00\x01\x9a\x72\xe1\x95\x8f\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x06\x98\x00\x00\x00\x00\x00\x01\x00\x02\x5e\x2b\ -\x00\x00\x01\x9a\x72\xe1\x95\x93\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x06\xcc\x00\x00\x00\x00\x00\x01\x00\x02\x68\x43\ -\x00\x00\x01\x9a\x72\xe1\x95\x8f\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x07\x02\x00\x00\x00\x00\x00\x01\x00\x02\x72\x6c\ -\x00\x00\x01\x9a\x72\xe1\x95\x93\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x07\x3a\x00\x00\x00\x00\x00\x01\x00\x02\x7c\x82\ -\x00\x00\x01\x9a\x72\xe1\x95\x93\ +\x00\x00\x01\x9b\x09\x08\xfa\x11\ \x00\x00\x07\x70\x00\x00\x00\x00\x00\x01\x00\x02\x86\xe8\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x07\x98\x00\x00\x00\x00\x00\x01\x00\x02\x91\x17\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x07\xc4\x00\x00\x00\x00\x00\x01\x00\x02\x9b\x5e\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\x00\x00\x00\x00\x00\x00\x01\x00\x02\x9d\x5f\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\x2c\x00\x00\x00\x00\x00\x01\x00\x02\xb8\xa4\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\x58\x00\x00\x00\x00\x00\x01\x00\x02\xbd\xed\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x46\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x03\x00\x00\x00\x47\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x08\x8c\x00\x00\x00\x00\x00\x01\x00\x02\xc1\x65\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\xaa\x00\x00\x00\x00\x00\x01\x00\x02\xca\x47\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\xbe\x00\x00\x00\x00\x00\x01\x00\x02\xcf\x7c\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x4b\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x4c\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x08\xd8\x00\x00\x00\x00\x00\x01\x00\x02\xd9\x51\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x09\x00\x00\x00\x00\x00\x00\x01\x00\x02\xde\x4c\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x09\x38\x00\x00\x00\x00\x00\x01\x00\x02\xe7\x20\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x09\x70\x00\x00\x00\x00\x00\x01\x00\x02\xef\xc4\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x09\xa0\x00\x00\x00\x00\x00\x01\x00\x02\xf7\x63\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x09\xc4\x00\x00\x00\x00\x00\x01\x00\x02\xff\x3f\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x09\xe8\x00\x00\x00\x00\x00\x01\x00\x03\x06\xf5\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0a\x1c\x00\x00\x00\x00\x00\x01\x00\x03\x0f\x03\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0a\x50\x00\x00\x00\x00\x00\x01\x00\x03\x16\xe5\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0a\x84\x00\x00\x00\x00\x00\x01\x00\x03\x1e\xaf\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0a\xbe\x00\x00\x00\x00\x00\x01\x00\x03\x26\x16\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0a\xe2\x00\x00\x00\x00\x00\x01\x00\x03\x29\xd3\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0b\x10\x00\x00\x00\x00\x00\x01\x00\x03\x2d\xac\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x5a\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x08\x00\x00\x00\x5b\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x0b\x36\x00\x00\x00\x00\x00\x01\x00\x03\x33\xb5\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x0b\x62\x00\x00\x00\x00\x00\x01\x00\x03\x56\x39\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x0b\x90\x00\x00\x00\x00\x00\x01\x00\x03\x5c\x26\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0b\xba\x00\x00\x00\x00\x00\x01\x00\x03\x5e\x46\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0b\xe2\x00\x00\x00\x00\x00\x01\x00\x03\x66\xde\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x0b\xfc\x00\x00\x00\x00\x00\x01\x00\x03\x76\x27\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x0c\x28\x00\x00\x00\x00\x00\x01\x00\x03\x7c\xa5\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x0c\x50\x00\x00\x00\x00\x00\x01\x00\x03\x87\x1f\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x64\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x65\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x0c\x86\x00\x00\x00\x00\x00\x01\x00\x03\x90\x66\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0c\xb4\x00\x00\x00\x00\x00\x01\x00\x03\x93\x0d\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0c\xe2\x00\x01\x00\x00\x00\x01\x00\x03\x9f\x8a\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0d\x0e\x00\x00\x00\x00\x00\x01\x00\x03\xcd\x09\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0d\x2e\x00\x00\x00\x00\x00\x01\x00\x03\xd1\xc0\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0d\x60\x00\x01\x00\x00\x00\x01\x00\x04\x2a\xb9\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0d\x92\x00\x00\x00\x00\x00\x01\x00\x04\x5f\x53\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0d\xac\x00\x00\x00\x00\x00\x01\x00\x04\x64\x9d\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0d\xc6\x00\x00\x00\x00\x00\x01\x00\x04\x6a\x2c\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0d\xe0\x00\x00\x00\x00\x00\x01\x00\x04\x6f\x95\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x0d\xf8\x00\x00\x00\x00\x00\x01\x00\x04\x7b\x73\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0e\x16\x00\x00\x00\x00\x00\x01\x00\x04\x81\x77\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x72\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x04\x00\x00\x00\x73\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x0e\x3e\x00\x00\x00\x00\x00\x01\x00\x04\x86\xac\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0e\x52\x00\x00\x00\x00\x00\x01\x00\x04\x8c\xa9\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0e\x64\x00\x00\x00\x00\x00\x01\x00\x04\x8e\x2f\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0e\x76\x00\x00\x00\x00\x00\x01\x00\x04\x94\x29\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x78\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x02\x00\x00\x00\x79\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x0e\x8a\x00\x00\x00\x00\x00\x01\x00\x04\x96\x7f\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x0e\xb6\x00\x00\x00\x00\x00\x01\x00\x04\x9d\x66\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x7c\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x09\x00\x00\x00\x7d\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x0e\xda\x00\x00\x00\x00\x00\x01\x00\x04\xa6\xca\ -\x00\x00\x01\x9b\x13\x3e\xbb\x62\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0e\xfa\x00\x01\x00\x00\x00\x01\x00\x04\xa9\x76\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x0f\x1e\x00\x00\x00\x00\x00\x01\x00\x04\xb4\xc7\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x0f\x40\x00\x00\x00\x00\x00\x01\x00\x04\xbc\x6c\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x0f\x5c\x00\x00\x00\x00\x00\x01\x00\x04\xcd\x6c\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x0f\x80\x00\x00\x00\x00\x00\x01\x00\x04\xd6\xed\ -\x00\x00\x01\x9b\x13\x3e\xbb\x62\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0f\xa0\x00\x00\x00\x00\x00\x01\x00\x04\xdc\x8a\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x0f\xc8\x00\x00\x00\x00\x00\x01\x00\x04\xe6\x53\ -\x00\x00\x01\x9b\x13\x3e\xbb\x62\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ \x00\x00\x0f\xe8\x00\x00\x00\x00\x00\x01\x00\x04\xea\x36\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x87\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x88\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x10\x04\x00\x00\x00\x00\x00\x01\x00\x04\xf0\x71\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x10\x34\x00\x00\x00\x00\x00\x01\x00\x04\xfa\x07\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x10\x64\x00\x00\x00\x00\x00\x01\x00\x05\x05\xe3\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x10\x88\x00\x00\x00\x00\x00\x01\x00\x05\x0c\x27\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x10\xb2\x00\x00\x00\x00\x00\x01\x00\x05\x13\xb0\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x10\xde\x00\x00\x00\x00\x00\x01\x00\x05\x1a\x0e\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x11\x14\x00\x00\x00\x00\x00\x01\x00\x05\x21\xfd\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\xaa\x00\x00\x00\x00\x00\x01\x00\x05\x2f\xa0\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x08\xbe\x00\x00\x00\x00\x00\x01\x00\x05\x34\xd5\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x11\x32\x00\x00\x00\x00\x00\x01\x00\x05\x3e\xaa\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x93\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x01\x00\x00\x00\x94\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x11\x5a\x00\x00\x00\x00\x00\x01\x00\x05\x46\x74\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ \x00\x00\x01\x88\x00\x02\x00\x00\x00\x01\x00\x00\x00\x96\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x98\x00\x02\x00\x00\x00\x28\x00\x00\x00\x97\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x11\x7a\x00\x00\x00\x00\x00\x01\x00\x05\x4b\x3a\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ \x00\x00\x11\x90\x00\x00\x00\x00\x00\x01\x00\x05\x52\xee\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x11\xa8\x00\x00\x00\x00\x00\x01\x00\x05\x55\x13\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x11\xe0\x00\x00\x00\x00\x00\x01\x00\x05\x56\x93\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x11\xfc\x00\x00\x00\x00\x00\x01\x00\x05\x5e\x40\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ \x00\x00\x12\x1c\x00\x00\x00\x00\x00\x01\x00\x05\x63\x15\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ \x00\x00\x12\x32\x00\x00\x00\x00\x00\x01\x00\x05\x64\x05\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x12\x48\x00\x00\x00\x00\x00\x01\x00\x05\x66\xe9\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ -\x00\x00\x12\x6e\x00\x00\x00\x00\x00\x01\x00\x05\x6d\x20\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x12\x88\x00\x00\x00\x00\x00\x01\x00\x05\x82\x2d\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x12\xaa\x00\x00\x00\x00\x00\x01\x00\x05\x87\x1d\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ -\x00\x00\x12\xc0\x00\x00\x00\x00\x00\x01\x00\x05\x8a\x1c\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x12\xd6\x00\x00\x00\x00\x00\x01\x00\x05\x90\x26\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x13\x08\x00\x00\x00\x00\x00\x01\x00\x05\x93\x75\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x13\x20\x00\x00\x00\x00\x00\x01\x00\x05\x9c\xf6\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ -\x00\x00\x13\x36\x00\x00\x00\x00\x00\x01\x00\x05\xa2\xed\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x13\x4a\x00\x00\x00\x00\x00\x01\x00\x05\xa4\xfe\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ -\x00\x00\x13\x62\x00\x00\x00\x00\x00\x01\x00\x05\xa8\xc1\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ -\x00\x00\x13\x88\x00\x00\x00\x00\x00\x01\x00\x05\xb2\x75\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x13\xb2\x00\x00\x00\x00\x00\x01\x00\x05\xb5\xc3\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x13\xd4\x00\x00\x00\x00\x00\x01\x00\x05\xb9\x51\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x13\xfa\x00\x00\x00\x00\x00\x01\x00\x05\xbd\xf2\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x14\x0e\x00\x00\x00\x00\x00\x01\x00\x05\xc7\xc4\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x14\x3a\x00\x00\x00\x00\x00\x01\x00\x05\xcd\x0e\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x14\x62\x00\x00\x00\x00\x00\x01\x00\x05\xd3\x15\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x14\x78\x00\x00\x00\x00\x00\x01\x00\x05\xd3\xf9\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x14\xa4\x00\x00\x00\x00\x00\x01\x00\x05\xd6\x42\ -\x00\x00\x01\x9a\x72\xe1\x94\x5b\ -\x00\x00\x14\xba\x00\x00\x00\x00\x00\x01\x00\x05\xdc\xf2\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x14\xd6\x00\x00\x00\x00\x00\x01\x00\x05\xe0\x36\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x14\xee\x00\x00\x00\x00\x00\x01\x00\x05\xe1\x62\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x15\x08\x00\x00\x00\x00\x00\x01\x00\x05\xe7\x23\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x15\x2a\x00\x00\x00\x00\x00\x01\x00\x05\xe8\x45\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x15\x48\x00\x00\x00\x00\x00\x01\x00\x05\xee\x38\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x15\x68\x00\x00\x00\x00\x00\x01\x00\x05\xf1\x3c\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x15\x8a\x00\x00\x00\x00\x00\x01\x00\x05\xf2\x5d\ -\x00\x00\x01\x9a\x72\xe1\x94\x57\ -\x00\x00\x15\xaa\x00\x00\x00\x00\x00\x01\x00\x05\xf5\x31\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x15\xd8\x00\x00\x00\x00\x00\x01\x00\x05\xfd\x9d\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x15\xfc\x00\x00\x00\x00\x00\x01\x00\x06\x05\x5d\ -\x00\x00\x01\x9a\x72\xe1\x94\x53\ -\x00\x00\x16\x20\x00\x00\x00\x00\x00\x01\x00\x06\x0a\x78\ -\x00\x00\x01\x9a\x72\xe1\x94\x4f\ -\x00\x00\x16\x48\x00\x00\x00\x00\x00\x01\x00\x06\x0b\xcb\ -\x00\x00\x01\x9a\x72\xe1\x94\x4b\ +\x00\x00\x01\x9b\x8e\xa8\x75\xac\ +\x00\x00\x12\x48\x00\x00\x00\x00\x00\x01\x00\x05\x68\x2e\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ +\x00\x00\x12\x6e\x00\x00\x00\x00\x00\x01\x00\x05\x6e\x65\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x12\x88\x00\x00\x00\x00\x00\x01\x00\x05\x83\x72\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ +\x00\x00\x12\xaa\x00\x00\x00\x00\x00\x01\x00\x05\x88\x62\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ +\x00\x00\x12\xc0\x00\x00\x00\x00\x00\x01\x00\x05\x8b\x61\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x12\xd6\x00\x00\x00\x00\x00\x01\x00\x05\x91\x6b\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ +\x00\x00\x13\x08\x00\x00\x00\x00\x00\x01\x00\x05\x94\xba\ +\x00\x00\x01\x9b\x8e\xa8\x75\x96\ +\x00\x00\x13\x20\x00\x00\x00\x00\x00\x01\x00\x05\x98\xdb\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ +\x00\x00\x13\x36\x00\x00\x00\x00\x00\x01\x00\x05\x9e\xd2\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x13\x4a\x00\x00\x00\x00\x00\x01\x00\x05\xa0\xe3\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ +\x00\x00\x13\x62\x00\x00\x00\x00\x00\x01\x00\x05\xa4\xa6\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ +\x00\x00\x13\x88\x00\x00\x00\x00\x00\x01\x00\x05\xae\x5a\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x13\xb2\x00\x00\x00\x00\x00\x01\x00\x05\xb1\xa8\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x13\xd4\x00\x00\x00\x00\x00\x01\x00\x05\xb5\x36\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x13\xfa\x00\x00\x00\x00\x00\x01\x00\x05\xb9\xd7\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x14\x0e\x00\x00\x00\x00\x00\x01\x00\x05\xc3\xa9\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x14\x3a\x00\x00\x00\x00\x00\x01\x00\x05\xc8\xf3\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x14\x62\x00\x00\x00\x00\x00\x01\x00\x05\xce\xfa\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x14\x78\x00\x00\x00\x00\x00\x01\x00\x05\xcf\xde\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ +\x00\x00\x14\xa4\x00\x00\x00\x00\x00\x01\x00\x05\xd2\x27\ +\x00\x00\x01\x9b\x09\x08\xf9\x59\ +\x00\x00\x14\xba\x00\x00\x00\x00\x00\x01\x00\x05\xd8\xd7\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x14\xd6\x00\x00\x00\x00\x00\x01\x00\x05\xdc\x1b\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x14\xee\x00\x00\x00\x00\x00\x01\x00\x05\xdd\x47\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x15\x08\x00\x00\x00\x00\x00\x01\x00\x05\xe3\x08\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x15\x2a\x00\x00\x00\x00\x00\x01\x00\x05\xe4\x2a\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x15\x48\x00\x00\x00\x00\x00\x01\x00\x05\xea\x1d\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x15\x68\x00\x00\x00\x00\x00\x01\x00\x05\xed\x21\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x15\x8a\x00\x00\x00\x00\x00\x01\x00\x05\xee\x42\ +\x00\x00\x01\x9b\x09\x08\xf9\x55\ +\x00\x00\x15\xaa\x00\x00\x00\x00\x00\x01\x00\x05\xf1\x16\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x15\xd8\x00\x00\x00\x00\x00\x01\x00\x05\xf9\x82\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ +\x00\x00\x15\xfc\x00\x00\x00\x00\x00\x01\x00\x06\x01\x42\ +\x00\x00\x01\x9b\x09\x08\xf9\x51\ +\x00\x00\x16\x20\x00\x00\x00\x00\x00\x01\x00\x06\x06\x5d\ +\x00\x00\x01\x9b\x09\x08\xf9\x4d\ +\x00\x00\x16\x48\x00\x00\x00\x00\x00\x01\x00\x06\x07\xb0\ +\x00\x00\x01\x9b\x09\x08\xf9\x49\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')] diff --git a/BlocksScreen/lib/ui/resources/media/btn_icons/error.svg b/BlocksScreen/lib/ui/resources/media/btn_icons/error.svg index fbf6eca0..0bb1f19f 100644 --- a/BlocksScreen/lib/ui/resources/media/btn_icons/error.svg +++ b/BlocksScreen/lib/ui/resources/media/btn_icons/error.svg @@ -1,47 +1,13 @@ - - - - + + + + + + + + + \ No newline at end of file diff --git a/BlocksScreen/lib/ui/resources/media/btn_icons/info.svg b/BlocksScreen/lib/ui/resources/media/btn_icons/info.svg index 2404aa83..6a4426ae 100644 --- a/BlocksScreen/lib/ui/resources/media/btn_icons/info.svg +++ b/BlocksScreen/lib/ui/resources/media/btn_icons/info.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + + + + + + \ No newline at end of file From f6747a9956ec4e0ea3442848f1e4c55bb2a04865 Mon Sep 17 00:00:00 2001 From: Roberto Date: Tue, 6 Jan 2026 10:09:13 +0000 Subject: [PATCH 04/10] feat: added ClearPixmap to icon_button --- BlocksScreen/lib/utils/icon_button.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/BlocksScreen/lib/utils/icon_button.py b/BlocksScreen/lib/utils/icon_button.py index a60a7f1d..a98892df 100644 --- a/BlocksScreen/lib/utils/icon_button.py +++ b/BlocksScreen/lib/utils/icon_button.py @@ -28,6 +28,11 @@ def setPixmap(self, pixmap: QtGui.QPixmap) -> None: self.icon_pixmap = pixmap self.repaint() + def clearPixmap(self) -> None: + """Clear widget pixmap""" + self.icon_pixmap = QtGui.QPixmap() + self.repaint() + def setText(self, text: str) -> None: """Set widget text""" self._text = text From 35fa1a7b976c43b09f90ebd125c8c4bdec345845 Mon Sep 17 00:00:00 2001 From: Roberto Date: Tue, 6 Jan 2026 12:34:48 +0000 Subject: [PATCH 05/10] Refactor: finished popup userInput feat --- .../lib/panels/widgets/popupDialogWidget.py | 75 +++++++++++-------- .../lib/ui/resources/icon_resources_rc.py | 2 +- 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/BlocksScreen/lib/panels/widgets/popupDialogWidget.py b/BlocksScreen/lib/panels/widgets/popupDialogWidget.py index 38b27315..bc6fccbe 100644 --- a/BlocksScreen/lib/panels/widgets/popupDialogWidget.py +++ b/BlocksScreen/lib/panels/widgets/popupDialogWidget.py @@ -2,6 +2,8 @@ from collections import deque from typing import Deque from PyQt6 import QtCore, QtGui, QtWidgets +from lib.utils.icon_button import IconButton + class Popup(QtWidgets.QDialog): class MessageType(enum.Enum): @@ -22,6 +24,7 @@ class ColorCode(enum.Enum): def __init__(self, parent) -> None: super().__init__(parent) self.timeout_timer = QtCore.QTimer(self) + self.timeout_timer.setSingleShot(True) self.messages: Deque = deque() self.isShown = False self.persistent_notifications: Deque = deque() @@ -50,19 +53,28 @@ def __init__(self, parent) -> None: self.SingleTime.setSingleShot(True) self.SingleTime.timeout.connect(self._add_popup) - + self.slide_out_animation.finished.connect(self.on_slide_out_finished) + self.slide_in_animation.finished.connect(self.on_slide_in_finished) + self.timeout_timer.timeout.connect(lambda: self.slide_out_animation.start()) + self.actionbtn.clicked.connect(self.slide_out_animation.start) def on_slide_in_finished(self): """Handle slide in animation finished""" + if self.userInput: + return + print(self.userInput) + print(self.text_label.text()) self.timeout_timer.start() def on_slide_out_finished(self): """Handle slide out animation finished""" - self.close() + self.hide() self.isShown = False + self.timeout_timer.stop() self._add_popup() def _calculate_target_geometry(self) -> QtCore.QRect: + """Calculate on end posisition rect for popup""" app_instance = QtWidgets.QApplication.instance() main_window = app_instance.activeWindow() if app_instance else None if main_window is None and app_instance: @@ -90,23 +102,19 @@ def updateMask(self) -> None: def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None: """Re-implemented method, handle mouse press events""" + if self.userInput: + return self.timeout_timer.stop() self.slide_out_animation.setStartValue(self.slide_in_animation.currentValue()) self.slide_in_animation.stop() self.slide_out_animation.start() - def set_timeout(self, value: int) -> None: - """Set popup timeout""" - if not isinstance(value, int): - raise ValueError("Expected type int ") - self.popup_timeout = value - def new_message( self, message_type: MessageType = MessageType.INFO, message: str = "", timeout: int = 6000, - userInput: bool = True, + userInput: bool = False, ): """Create new popup message @@ -114,14 +122,19 @@ def new_message( message_type (MessageType, optional): Message Level, See `MessageType` Types. Defaults to MessageType.INFO. message (str, optional): The message. Defaults to "". timeout (int, optional): How long the message stays for, in milliseconds. Defaults to 0. + userInput (bool,optional): If the user is required to click to make the popup disappear. Defaults to False. Returns: _type_: _description_ """ self.messages.append( - {"message": message, "type": message_type, "timeout": timeout} + { + "message": message, + "type": message_type, + "timeout": timeout, + "userInput": userInput, + } ) - self.userInput = userInput return self._add_popup() def _add_popup(self) -> None: @@ -131,7 +144,6 @@ def _add_popup(self) -> None: return self.SingleTime.start() return - if ( self.messages @@ -143,12 +155,14 @@ def _add_popup(self) -> None: message_entry = self.messages.popleft() self.message_type = message_entry.get("type") message = message_entry.get("message") - + timeout = message_entry.get("timeout") + self.timeout_timer.setInterval(timeout) if message == self.text_label.text(): - if self.SingleTime.isActive(): - return - self.SingleTime.start() + self.messages = deque( + m for m in self.messages if m.get("message") != message + ) return + self.userInput = message_entry.get("userInput") self.text_label.setText(message) @@ -159,26 +173,22 @@ def _add_popup(self) -> None: self.icon_label.setPixmap(self.warning_icon) case Popup.MessageType.ERROR: self.icon_label.setPixmap(self.error_icon) - end_rect = self._calculate_target_geometry() - start_rect = end_rect.translated(0, -end_rect.height()*2) + start_rect = end_rect.translated(0, -end_rect.height() * 2) self.slide_in_animation.setStartValue(start_rect) self.slide_in_animation.setEndValue(end_rect) self.slide_out_animation.setStartValue(end_rect) self.slide_out_animation.setEndValue(start_rect) - if not self.userInput: - timeout = message_entry.get("timeout") - self.timeout_timer.setInterval(timeout) - self.slide_in_animation.finished.connect(self.on_slide_in_finished) - self.timeout_timer.timeout.connect(self.slide_out_animation.start) - - self.slide_out_animation.finished.connect(self.on_slide_out_finished) - + self.actionbtn.clearPixmap() + else: + self.actionbtn.setPixmap( + QtGui.QPixmap(":/arrow_icons/media/btn_icons/right_arrow.svg") + ) self.setGeometry(end_rect) - self.open() + self.show() def showEvent(self, a0: QtGui.QShowEvent) -> None: """Re-implementation, widget show""" @@ -215,8 +225,7 @@ def paintEvent(self, a0: QtGui.QPaintEvent) -> None: painter.drawRoundedRect(self.rect(), 10, 10) def _setupUI(self) -> None: - self.vertical_layout = QtWidgets.QVBoxLayout(self) - self.horizontal_layout = QtWidgets.QHBoxLayout() + self.horizontal_layout = QtWidgets.QHBoxLayout(self) self.horizontal_layout.setContentsMargins(5, 5, 5, 5) self.icon_label = QtWidgets.QLabel(self) @@ -242,8 +251,8 @@ def _setupUI(self) -> None: self.text_label.setFont(font) self.spacer = QtWidgets.QSpacerItem(60, 60) + self.actionbtn = IconButton(self) + self.actionbtn.setMaximumSize(QtCore.QSize(60, 60)) - self.horizontal_layout.addWidget(self.text_label, 1) - self.horizontal_layout.addItem(self.spacer) - - self.vertical_layout.addLayout(self.horizontal_layout) + self.horizontal_layout.addWidget(self.text_label) + self.horizontal_layout.addWidget(self.actionbtn) diff --git a/BlocksScreen/lib/ui/resources/icon_resources_rc.py b/BlocksScreen/lib/ui/resources/icon_resources_rc.py index 8ae1fba1..6481444f 100644 --- a/BlocksScreen/lib/ui/resources/icon_resources_rc.py +++ b/BlocksScreen/lib/ui/resources/icon_resources_rc.py @@ -6,7 +6,7 @@ # # WARNING! All changes made in this file will be lost! -from PyQt5 import QtCore +from PyQt6 import QtCore qt_resource_data = b"\ \x00\x00\x08\x62\ From f7d68a4b6a710b72fa5a19aaac90dccf5e9379f2 Mon Sep 17 00:00:00 2001 From: Roberto Date: Tue, 6 Jan 2026 16:19:09 +0000 Subject: [PATCH 06/10] Refactor: formated _handle_error_message message ignored unknow type popup --- BlocksScreen/lib/panels/mainWindow.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/BlocksScreen/lib/panels/mainWindow.py b/BlocksScreen/lib/panels/mainWindow.py index 9309045b..1820b9e2 100644 --- a/BlocksScreen/lib/panels/mainWindow.py +++ b/BlocksScreen/lib/panels/mainWindow.py @@ -529,6 +529,9 @@ def _handle_notify_gcode_response_message(self, method, data, metadata) -> None: _msg_type = Popup.MessageType.ERROR elif _gcode_msg_type == "//": _msg_type = Popup.MessageType.INFO + + if _msg_type == Popup.MessageType.UNKNOWN: + return self.popup.new_message(message_type=_msg_type, message=str(_message)) @api_handler @@ -540,9 +543,15 @@ def _handle_error_message(self, method, data, metadata) -> None: return if self._popup_toggle: return + + text = data + if isinstance(data,dict): + text = f"{data['message']}" + self.popup.new_message( message_type=Popup.MessageType.ERROR, - message=str(data), + message=str(text), + userInput= True, ) @api_handler From 0910b8e3e3ad05d23b84f81b81089fedeecdad30 Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 7 Jan 2026 14:58:50 +0000 Subject: [PATCH 07/10] Refactor: popups only shows error messages and added popup whitelist --- BlocksScreen/lib/panels/mainWindow.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/BlocksScreen/lib/panels/mainWindow.py b/BlocksScreen/lib/panels/mainWindow.py index 1820b9e2..d0b050c4 100644 --- a/BlocksScreen/lib/panels/mainWindow.py +++ b/BlocksScreen/lib/panels/mainWindow.py @@ -524,15 +524,10 @@ def _handle_notify_gcode_response_message(self, method, data, metadata) -> None: if self._popup_toggle: return _gcode_msg_type, _message = str(_gcode_response[0]).split(" ", maxsplit=1) - _msg_type = Popup.MessageType.UNKNOWN - if _gcode_msg_type == "!!": + popupWhitelist= ["filament runout","no filament"] + if _message.lower() in popupWhitelist or _gcode_msg_type == "!!": _msg_type = Popup.MessageType.ERROR - elif _gcode_msg_type == "//": - _msg_type = Popup.MessageType.INFO - - if _msg_type == Popup.MessageType.UNKNOWN: - return - self.popup.new_message(message_type=_msg_type, message=str(_message)) + self.popup.new_message(message_type=_msg_type, message=str(_message)) @api_handler def _handle_error_message(self, method, data, metadata) -> None: @@ -543,11 +538,12 @@ def _handle_error_message(self, method, data, metadata) -> None: return if self._popup_toggle: return - text = data if isinstance(data,dict): - text = f"{data['message']}" - + try: + text = f"{data['message']}" + except: + text = data self.popup.new_message( message_type=Popup.MessageType.ERROR, message=str(text), From ca7c4ec49eb5f373953a471d4cb94ef6cdb87534 Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 7 Jan 2026 15:03:07 +0000 Subject: [PATCH 08/10] Refactor:run ruff formater --- BlocksScreen/lib/panels/mainWindow.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/BlocksScreen/lib/panels/mainWindow.py b/BlocksScreen/lib/panels/mainWindow.py index d0b050c4..40052aee 100644 --- a/BlocksScreen/lib/panels/mainWindow.py +++ b/BlocksScreen/lib/panels/mainWindow.py @@ -524,10 +524,14 @@ def _handle_notify_gcode_response_message(self, method, data, metadata) -> None: if self._popup_toggle: return _gcode_msg_type, _message = str(_gcode_response[0]).split(" ", maxsplit=1) - popupWhitelist= ["filament runout","no filament"] - if _message.lower() in popupWhitelist or _gcode_msg_type == "!!": + popupWhitelist = ["filament runout", "no filament"] + if _message.lower() in popupWhitelist or _gcode_msg_type == "!!": _msg_type = Popup.MessageType.ERROR - self.popup.new_message(message_type=_msg_type, message=str(_message)) + self.popup.new_message( + message_type=_msg_type, + message=str(_message), + userInput=True, + ) @api_handler def _handle_error_message(self, method, data, metadata) -> None: @@ -539,7 +543,7 @@ def _handle_error_message(self, method, data, metadata) -> None: if self._popup_toggle: return text = data - if isinstance(data,dict): + if isinstance(data, dict): try: text = f"{data['message']}" except: @@ -547,7 +551,7 @@ def _handle_error_message(self, method, data, metadata) -> None: self.popup.new_message( message_type=Popup.MessageType.ERROR, message=str(text), - userInput= True, + userInput=True, ) @api_handler From 44dc80c5fd2a83c3dd88458668037d9b53c4a0d1 Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 7 Jan 2026 16:59:42 +0000 Subject: [PATCH 09/10] Rev: removed prints --- BlocksScreen/lib/panels/widgets/popupDialogWidget.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/BlocksScreen/lib/panels/widgets/popupDialogWidget.py b/BlocksScreen/lib/panels/widgets/popupDialogWidget.py index bc6fccbe..364834eb 100644 --- a/BlocksScreen/lib/panels/widgets/popupDialogWidget.py +++ b/BlocksScreen/lib/panels/widgets/popupDialogWidget.py @@ -62,8 +62,6 @@ def on_slide_in_finished(self): """Handle slide in animation finished""" if self.userInput: return - print(self.userInput) - print(self.text_label.text()) self.timeout_timer.start() def on_slide_out_finished(self): From 5ff1542965b21346d0dc73f8a55df586cc967071 Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 7 Jan 2026 17:07:57 +0000 Subject: [PATCH 10/10] refactor: removed bare except --- BlocksScreen/lib/panels/mainWindow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BlocksScreen/lib/panels/mainWindow.py b/BlocksScreen/lib/panels/mainWindow.py index 40052aee..b2d6b8b8 100644 --- a/BlocksScreen/lib/panels/mainWindow.py +++ b/BlocksScreen/lib/panels/mainWindow.py @@ -544,9 +544,9 @@ def _handle_error_message(self, method, data, metadata) -> None: return text = data if isinstance(data, dict): - try: + if "message" in data: text = f"{data['message']}" - except: + else: text = data self.popup.new_message( message_type=Popup.MessageType.ERROR,