ok-script 0.0.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. autohelper/AutoHelper.py +116 -0
  2. autohelper/__init__.py +0 -0
  3. autohelper/capture/BaseCaptureMethod.py +30 -0
  4. autohelper/capture/HwndWindow.py +138 -0
  5. autohelper/capture/__init__.py +0 -0
  6. autohelper/capture/adb/ADBCaptureMethod.py +29 -0
  7. autohelper/capture/adb/DeviceManager.py +209 -0
  8. autohelper/capture/adb/__init__.py +0 -0
  9. autohelper/capture/adb/bin/__init__.py +0 -0
  10. autohelper/capture/adb/targets.py +61 -0
  11. autohelper/capture/adb/vbox.py +140 -0
  12. autohelper/capture/windows/WindowsGraphicsCaptureMethod.py +228 -0
  13. autohelper/capture/windows/__init__.py +0 -0
  14. autohelper/capture/windows/d3d11.py +74 -0
  15. autohelper/capture/windows/utils.py +149 -0
  16. autohelper/capture/windows/window.py +36 -0
  17. autohelper/color/Color.py +41 -0
  18. autohelper/color/__init__.py +0 -0
  19. autohelper/config/Config.py +79 -0
  20. autohelper/config/InfoDict.py +16 -0
  21. autohelper/config/__init__.py +0 -0
  22. autohelper/feature/Box.py +199 -0
  23. autohelper/feature/Feature.py +20 -0
  24. autohelper/feature/FeatureSet.py +207 -0
  25. autohelper/feature/FindFeature.py +52 -0
  26. autohelper/feature/__init__.py +0 -0
  27. autohelper/gui/App.py +120 -0
  28. autohelper/gui/Communicate.py +22 -0
  29. autohelper/gui/MainWindow.py +69 -0
  30. autohelper/gui/TabTitles.py +56 -0
  31. autohelper/gui/__init__.py +5 -0
  32. autohelper/gui/debug/AspectRatioWidget.py +31 -0
  33. autohelper/gui/debug/DebugTab.py +37 -0
  34. autohelper/gui/debug/FrameWidget.py +125 -0
  35. autohelper/gui/debug/InfoWidget.py +40 -0
  36. autohelper/gui/debug/LoggerWidget.py +74 -0
  37. autohelper/gui/debug/__init__.py +0 -0
  38. autohelper/gui/i18n/__init__.py +0 -0
  39. autohelper/gui/i18n/path.py +3 -0
  40. autohelper/gui/icon/__init__.py +0 -0
  41. autohelper/gui/icon/icon.py +6 -0
  42. autohelper/gui/loading/LoadingWindow.py +142 -0
  43. autohelper/gui/loading/__init__.py +0 -0
  44. autohelper/gui/overlay/OverlayWindow.py +34 -0
  45. autohelper/gui/overlay/__init__.py +0 -0
  46. autohelper/gui/resources.py +485 -0
  47. autohelper/gui/tasks/ConfigItemFactory.py +14 -0
  48. autohelper/gui/tasks/StartButton.py +47 -0
  49. autohelper/gui/tasks/TaskOpButton.py +33 -0
  50. autohelper/gui/tasks/TaskTab.py +121 -0
  51. autohelper/gui/tasks/TooltipTableWidget.py +39 -0
  52. autohelper/gui/tasks/__init__.py +0 -0
  53. autohelper/gui/util/Alert.py +20 -0
  54. autohelper/gui/util/InitWorker.py +17 -0
  55. autohelper/gui/util/__init__.py +0 -0
  56. autohelper/gui/widget/ListTableWidgetItem.py +27 -0
  57. autohelper/gui/widget/NumericTableWidgetItem.py +33 -0
  58. autohelper/gui/widget/RoundCornerContainer.py +59 -0
  59. autohelper/gui/widget/TabWidget.py +30 -0
  60. autohelper/gui/widget/UpdateConfigWidgetItem.py +16 -0
  61. autohelper/gui/widget/YesNonWidgetItem.py +23 -0
  62. autohelper/gui/widget/__init__.py +0 -0
  63. autohelper/interaction/ADBInteraction.py +33 -0
  64. autohelper/interaction/BaseInteraction.py +36 -0
  65. autohelper/interaction/Win32Interaction.py +56 -0
  66. autohelper/interaction/__init__.py +0 -0
  67. autohelper/logging/Logger.py +103 -0
  68. autohelper/logging/__init__.py +0 -0
  69. autohelper/ocr/OCR.py +50 -0
  70. autohelper/ocr/__init__.py +0 -0
  71. autohelper/predict/__init__.py +0 -0
  72. autohelper/predict/predict.py +45 -0
  73. autohelper/rotypes/Windows/Foundation/Collections.py +60 -0
  74. autohelper/rotypes/Windows/Foundation/__init__.py +153 -0
  75. autohelper/rotypes/Windows/Globalization/__init__.py +25 -0
  76. autohelper/rotypes/Windows/Graphics/Capture/__init__.py +110 -0
  77. autohelper/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +41 -0
  78. autohelper/rotypes/Windows/Graphics/DirectX/__init__.py +167 -0
  79. autohelper/rotypes/Windows/Graphics/Imaging/__init__.py +34 -0
  80. autohelper/rotypes/Windows/Graphics/__init__.py +5 -0
  81. autohelper/rotypes/Windows/Media/Ocr/__init__.py +76 -0
  82. autohelper/rotypes/Windows/Media/__init__.py +0 -0
  83. autohelper/rotypes/Windows/Security/Cryptography/__init__.py +18 -0
  84. autohelper/rotypes/Windows/Security/__init__.py +0 -0
  85. autohelper/rotypes/Windows/Storage/Streams/__init__.py +27 -0
  86. autohelper/rotypes/Windows/Storage/__init__.py +0 -0
  87. autohelper/rotypes/Windows/__init__.py +0 -0
  88. autohelper/rotypes/__init__.py +4 -0
  89. autohelper/rotypes/delegate.py +105 -0
  90. autohelper/rotypes/export.py +21 -0
  91. autohelper/rotypes/idldsl.py +272 -0
  92. autohelper/rotypes/inspectable.py +79 -0
  93. autohelper/rotypes/roapi.py +30 -0
  94. autohelper/rotypes/types.py +77 -0
  95. autohelper/rotypes/winstring.py +44 -0
  96. autohelper/save/BlackBarProcessor.py +25 -0
  97. autohelper/save/PostProcessor.py +6 -0
  98. autohelper/save/SaveByInterval.py +30 -0
  99. autohelper/save/SaveByKeyPress.py +27 -0
  100. autohelper/save/SaveMethodBase.py +46 -0
  101. autohelper/save/__init__.py +0 -0
  102. autohelper/scene/FeatureScene.py +14 -0
  103. autohelper/scene/Scene.py +21 -0
  104. autohelper/scene/__init__.py +0 -0
  105. autohelper/stats/StreamStats.py +34 -0
  106. autohelper/stats/__init__.py +0 -0
  107. autohelper/task/BaseTask.py +109 -0
  108. autohelper/task/ExecutorOperation.py +119 -0
  109. autohelper/task/FindFeatureTask.py +6 -0
  110. autohelper/task/TaskExecutor.py +249 -0
  111. autohelper/task/__init__.py +0 -0
  112. autohelper/util/__init__.py +0 -0
  113. autohelper/util/json.py +27 -0
  114. autohelper/util/list.py +2 -0
  115. autohelper/util/path.py +37 -0
  116. autohelper/util/thread.py +12 -0
  117. autohelper/util/win32_process.py +86 -0
  118. autohelper/util/yaml.py +28 -0
  119. ok_script-0.0.7.dist-info/METADATA +64 -0
  120. ok_script-0.0.7.dist-info/RECORD +122 -0
  121. ok_script-0.0.7.dist-info/WHEEL +5 -0
  122. ok_script-0.0.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,142 @@
1
+ from PySide6.QtCore import Qt, QTimer
2
+ from PySide6.QtWidgets import QWidget, QVBoxLayout, QMessageBox, QHBoxLayout, QListWidget, QPushButton
3
+
4
+ import autohelper
5
+ from autohelper.gui.Communicate import communicate
6
+ from autohelper.gui.util.Alert import show_alert
7
+ from autohelper.gui.widget.RoundCornerContainer import RoundCornerContainer
8
+ from autohelper.interaction.Win32Interaction import is_admin
9
+ from autohelper.logging.Logger import get_logger
10
+
11
+ logger = get_logger(__name__)
12
+
13
+
14
+ class LoadingWindow(QWidget):
15
+ def __init__(self, app, exit_event):
16
+ super().__init__()
17
+ self.app = app
18
+ self.exit_event = exit_event
19
+ self.dot_count = 0
20
+ self.initUI()
21
+ layout = QVBoxLayout()
22
+ top_layout = QHBoxLayout()
23
+ layout.addLayout(top_layout)
24
+ self.setLayout(layout)
25
+ self.capture_list = QListWidget()
26
+ self.capture_list.itemSelectionChanged.connect(self.capture_index_changed)
27
+ self.capture_list_data = []
28
+ capture_container = RoundCornerContainer(self.tr("Choose Window"), self.capture_list)
29
+
30
+ self.refresh_button = QPushButton(self.tr("Refresh"))
31
+ self.refresh_button.clicked.connect(self.refresh_clicked)
32
+ capture_container.add_top_widget(self.refresh_button)
33
+ communicate.adb_devices.connect(self.update_capture)
34
+
35
+ # self.interaction_list = QListWidget()
36
+ # self.interaction_list.addItem(self.tr("ADB (Supports Background, Recommended for Android)"))
37
+ # self.interaction_list.addItem(self.tr("Windows Direct (Does Not Support Background)"))
38
+ # interaction_container = RoundCornerContainer(self.tr("Keyboard/Mouse Interaction"), self.interaction_list)
39
+ # top_layout.addWidget(interaction_container)
40
+
41
+ top_layout.addWidget(capture_container)
42
+ # self.start_button = StartButton()
43
+ self.closed_by_finish_loading = False
44
+ self.message = "Loading"
45
+
46
+ self.start_button = QPushButton(self.tr("Start"))
47
+ self.start_button.setEnabled(False)
48
+ self.start_button.clicked.connect(self.on_start_clicked)
49
+ layout.addWidget(self.start_button, alignment=Qt.AlignCenter)
50
+ self.update_capture()
51
+
52
+ def refresh_clicked(self):
53
+ autohelper.gui.device_manager.refresh()
54
+ self.refresh_button.setDisabled(True)
55
+ self.refresh_button.setText(self.tr("Refreshing"))
56
+
57
+ def on_start_clicked(self):
58
+ i = self.capture_list.currentRow()
59
+ connected = self.capture_list_data[i]["connected"]
60
+ if not connected:
61
+ show_alert(self.tr("Error"), self.tr("Game Window is not detected, Please open game and refresh!"))
62
+ return
63
+ method = self.capture_list_data[i]["method"]
64
+ if method == "windows" and not is_admin():
65
+ show_alert(self.tr("Error"),
66
+ self.tr(f"PC version requires admin privileges, Please restart this app with admin privileges!"))
67
+ return
68
+ autohelper.gui.device_manager.start()
69
+ self.app.show_main_window()
70
+
71
+ def capture_index_changed(self): # i is an index
72
+ i = self.capture_list.currentRow()
73
+ imei = self.capture_list_data[i]["imei"]
74
+ autohelper.gui.device_manager.set_preferred_device(imei)
75
+
76
+ def update_capture(self):
77
+ devices = autohelper.gui.device_manager.get_devices()
78
+ selected = self.capture_list.currentRow()
79
+ self.capture_list.clear()
80
+ self.capture_list_data.clear()
81
+ if len(devices) > 0:
82
+ for row, device in enumerate(devices):
83
+ if device["preferred"]:
84
+ selected = row
85
+ method = self.tr("PC") if device['method'] == "windows" else self.tr("Android")
86
+ connected = self.tr("Connected") if device['connected'] else self.tr("Disconnected")
87
+ self.capture_list.addItem(
88
+ f"{method} {connected}: {device['nick']} {device['address']} {device.get('resolution') or ''}")
89
+ item = self.capture_list.item(row)
90
+ if not device['connected']:
91
+ item.setFlags(item.flags() & ~Qt.ItemIsSelectable)
92
+ self.capture_list_data.append(device)
93
+ if selected == -1:
94
+ selected = 0
95
+ self.capture_list.setCurrentRow(selected)
96
+ self.refresh_button.setDisabled(False)
97
+ self.refresh_button.setText(self.tr("Refresh"))
98
+
99
+ def initUI(self):
100
+ self.setWindowTitle(self.app.title)
101
+ self.setWindowIcon(self.app.icon)
102
+
103
+ communicate.loading_progress.connect(self.update_progress)
104
+ # self.setLayout(layout)
105
+ self.update_progress("Loading, please wait...")
106
+ # Start the timer for the loading animation
107
+ self.timer = QTimer()
108
+ self.timer.timeout.connect(self.update_loading_animation)
109
+ self.timer.start(1000) # Update every 500 ms
110
+
111
+ def update_progress(self, message):
112
+ self.message = message
113
+
114
+ def loading_done(self):
115
+ self.start_button.setEnabled(True)
116
+ self.timer.stop()
117
+ self.start_button.setText(self.tr("Start"))
118
+
119
+ def update_loading_animation(self):
120
+ self.dot_count = (self.dot_count % 3) + 1 # Cycle through 1, 2, 3
121
+ self.start_button.setText(f"{self.message}{'.' * self.dot_count}")
122
+
123
+ def close(self):
124
+ self.closed_by_finish_loading = True
125
+ super().close()
126
+
127
+ def closeEvent(self, event):
128
+ self.timer.stop()
129
+ if self.closed_by_finish_loading:
130
+ super().closeEvent(event)
131
+ else:
132
+ # Create a message box that asks the user if they really want to close the window
133
+ reply = QMessageBox.question(self, self.tr('Exit'), self.tr('Are you sure you want to exit the app?'),
134
+ QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
135
+
136
+ if reply == QMessageBox.Yes:
137
+ self.exit_event.set()
138
+ event.accept()
139
+ self.app.quit()
140
+ logger.info("Window closed") # Place your code here
141
+ else:
142
+ event.ignore()
File without changes
@@ -0,0 +1,34 @@
1
+ from PySide6.QtCore import QObject, Signal, Qt
2
+
3
+ from autohelper.capture.HwndWindow import HwndWindow
4
+ from autohelper.gui.Communicate import communicate
5
+ from autohelper.gui.debug.FrameWidget import FrameWidget
6
+ from autohelper.logging.Logger import get_logger
7
+
8
+ logger = get_logger(__name__)
9
+
10
+
11
+ class Communicate(QObject):
12
+ speak = Signal(str)
13
+
14
+
15
+ class OverlayWindow(FrameWidget):
16
+ def __init__(self, hwnd_window: HwndWindow):
17
+ super().__init__()
18
+ self.setWindowFlag(Qt.WindowStaysOnTopHint, True)
19
+ self.setWindowFlag(Qt.FramelessWindowHint) # Make the window frameless
20
+ self.setAttribute(Qt.WA_TranslucentBackground)
21
+ self.setWindowFlag(Qt.WindowTransparentForInput, True)
22
+ self.setWindowFlag(Qt.Tool)
23
+ communicate.window.connect(self.update_overlay)
24
+ self.update_overlay(hwnd_window.visible, hwnd_window.x, hwnd_window.y, hwnd_window.border,
25
+ hwnd_window.title_height, hwnd_window.width, hwnd_window.height, hwnd_window.scaling)
26
+
27
+ def update_overlay(self, visible, x, y, border, title_height, width, height, scaling):
28
+ logger.debug(f'update_overlay: {visible}, {x}, {y}, {border}, {title_height} {width}, {height}, {scaling}')
29
+ if visible:
30
+ self.setGeometry(x + border, y + title_height, width, height)
31
+ if visible:
32
+ self.show()
33
+ else:
34
+ self.hide()
File without changes
@@ -0,0 +1,485 @@
1
+ # Resource object code (Python 3)
2
+ # Created by: object code
3
+ # Created by: The Resource Compiler for Qt version 6.6.3
4
+ # WARNING! All changes made in this file will be lost!
5
+
6
+ from PySide6 import QtCore
7
+
8
+ qt_resource_data = b"\
9
+ \x00\x00\x09{\
10
+ <\
11
+ \xb8d\x18\xca\xef\x9c\x95\xcd!\x1c\xbf`\xa1\xbd\xdd\xa7\
12
+ \x00\x00\x00\x05zh_CNB\x00\x00\x010\x00\x00\
13
+ \x05C\x00\x00\x02\xed\x00\x04\xb6E\x00\x00\x06K\x00\x04\
14
+ \xcf\x04\x00\x00\x01\xf5\x00\x05\x04\xcf\x00\x00\x06\x99\x00\x05\
15
+ H5\x00\x00\x06\xbd\x00\x05\xa8\x9b\x00\x00\x04\xed\x00J\
16
+ \xb9\xb7\x00\x00\x04\xc5\x00L\x99b\x00\x00\x01\xca\x00X\
17
+ \xb9\xb5\x00\x00\x06o\x00X\xc9\xbe\x00\x00\x05\xcd\x00Z\
18
+ \x8a#\x00\x00\x07\x81\x00Z\xa8\x94\x00\x00\x04,\x00\x5c\
19
+ \x83\xb5\x00\x00\x08\x04\x00\x97\x96\x04\x00\x00\x06!\x00\xf9\
20
+ \xf9I\x00\x00\x00\x00\x01N\xee\xa7\x00\x00\x07\xa6\x01\xfb\
21
+ 0\xd4\x00\x00\x01\x96\x02Qlo\x00\x00\x07\xd6\x04\xa6\
22
+ L\xf7\x00\x00\x05\xfb\x04\xc4y%\x00\x00\x05\xa2\x04\xef\
23
+ \xc5\x9e\x00\x00\x02\xa3\x05K\xe0\xd4\x00\x00\x01e\x05h\
24
+ \xc9\xb4\x00\x00\x07\x0a\x05\xaa\x8b\xc3\x00\x00\x07[\x05\xbd\
25
+ \xb9i\x00\x00\x04W\x062\x88\xff\x00\x00\x00\xad\x06\x9f\
26
+ x\x01\x00\x00\x02\x1f\x08K\x95\xb4\x00\x00\x00~\x08\x96\
27
+ \x1e\x8c\x00\x00\x05E\x08\xbd\x8c\xc8\x00\x00\x03\xcb\x08\xcc\
28
+ e\x97\x00\x00\x03\xf8\x09\x16(\xb1\x00\x00\x03\x17\x09\x87\
29
+ \xbc\xc5\x00\x00\x01\x01\x09\xc5P\x17\x00\x00\x072\x0b\x09\
30
+ ye\x00\x00\x05v\x0c*$W\x00\x00\x01.\x0c\x88\
31
+ \xfa>\x00\x00\x06\xe1\x0c\x97\x12\xac\x00\x00\x05\x14i\x00\
32
+ \x00\x08'\x03\x00\x00\x00*\x00A\x00D\x00B\xff\x08\
33
+ e/c\x01T\x0eS\xf0\xff\x0cc\xa8\x83Pu(\
34
+ N\x8e\x00A\x00n\x00d\x00r\x00o\x00i\x00d\
35
+ \xff\x09\x08\x00\x00\x00\x00\x06\x00\x00\x002ADB \
36
+ (Supports Backgr\
37
+ ound, Recommende\
38
+ d for Android)\x07\x00\
39
+ \x00\x00\x0dLoadingWindow\
40
+ \x01\x03\x00\x00\x00\x06[\x89SSrH\x08\x00\x00\x00\
41
+ \x00\x06\x00\x00\x00\x07Android\x07\x00\x00\
42
+ \x00\x0dLoadingWindow\x01\
43
+ \x03\x00\x00\x00\x0cxn[\x9a\x90\x00Q\xfaT\x17\x00\
44
+ ?\x08\x00\x00\x00\x00\x06\x00\x00\x00&Are y\
45
+ ou sure you want\
46
+ to exit the app\
47
+ ?\x07\x00\x00\x00\x0dLoadingWin\
48
+ dow\x01\x03\x00\x00\x00\x04cU\x83\xb7\x08\x00\x00\
49
+ \x00\x00\x06\x00\x00\x00\x07Capture\x07\x00\
50
+ \x00\x00\x0dLoadingWindow\
51
+ \x01\x03\x00\x00\x00\x08\x90\x09b\xe9z\x97S\xe3\x08\x00\
52
+ \x00\x00\x00\x06\x00\x00\x00\x0dChoose W\
53
+ indow\x07\x00\x00\x00\x0dLoadin\
54
+ gWindow\x01\x03\x00\x00\x00\x06]\xf2\x8f\
55
+ \xdec\xa5\x08\x00\x00\x00\x00\x06\x00\x00\x00\x09Con\
56
+ nected\x07\x00\x00\x00\x0dLoadi\
57
+ ngWindow\x01\x03\x00\x00\x00\x06]\xf2\
58
+ e\xad_\x00\x08\x00\x00\x00\x00\x06\x00\x00\x00\x0cDi\
59
+ sconnected\x07\x00\x00\x00\x0dL\
60
+ oadingWindow\x01\x03\x00\x00\
61
+ \x00\x04\x95\x19\x8b\xef\x08\x00\x00\x00\x00\x06\x00\x00\x00\x05\
62
+ Error\x07\x00\x00\x00\x0dLoadin\
63
+ gWindow\x01\x03\x00\x00\x00\x04\x90\x00Q\
64
+ \xfa\x08\x00\x00\x00\x00\x06\x00\x00\x00\x04Exit\x07\
65
+ \x00\x00\x00\x0dLoadingWindo\
66
+ w\x01\x03\x00\x00\x00(g*h\xc0mKR0n\
67
+ 8b\x0fz\x97S\xe3\x00,\x00 \x8b\xf7bS_\
68
+ \x00n8b\x0fT\x0ep\xb9Q\xfbR7e\xb0\x08\
69
+ \x00\x00\x00\x00\x06\x00\x00\x00:Game Wi\
70
+ ndow is not dete\
71
+ cted, Please ope\
72
+ n game and refre\
73
+ sh!\x07\x00\x00\x00\x0dLoadingW\
74
+ indow\x01\x03\x00\x00\x00\x0e\x95.v\xd8\x00\
75
+ /\x9f h\x07N\xa4N\x92\x08\x00\x00\x00\x00\x06\x00\
76
+ \x00\x00\x1aKeyboard/Mous\
77
+ e Interaction\x07\x00\x00\
78
+ \x00\x0dLoadingWindow\x01\
79
+ \x03\x00\x00\x00\x06\x00P\x00CrH\x08\x00\x00\x00\x00\
80
+ \x06\x00\x00\x00\x02PC\x07\x00\x00\x00\x0dLoad\
81
+ ingWindow\x01\x03\x00\x00\x00>\x00\
82
+ P\x00CrH\x97\x00\x89\x81{\xa1t\x06TXg\
83
+ C\x96P\x8f\xd0\x88L\x00,\x00 \x8b\xf7Qs\x95\
84
+ \xedkdz\x0b^\x8f^v\x91\xcde\xb0N\xe5{\
85
+ \xa1t\x06TXgC\x96P\x8f\xd0\x88L\x08\x00\x00\
86
+ \x00\x00\x06\x00\x00\x00TPC versio\
87
+ n requires admin\
88
+ privileges, Ple\
89
+ ase restart this\
90
+ app with admin \
91
+ privileges!\x07\x00\x00\x00\x0d\
92
+ LoadingWindow\x01\x03\x00\
93
+ \x00\x00\x04R7e\xb0\x08\x00\x00\x00\x00\x06\x00\x00\x00\
94
+ \x07Refresh\x07\x00\x00\x00\x0dLoa\
95
+ dingWindow\x01\x03\x00\x00\x00\x08\
96
+ kcW(R7e\xb0\x08\x00\x00\x00\x00\x06\x00\x00\
97
+ \x00\x0aRefreshing\x07\x00\x00\x00\
98
+ \x0dLoadingWindow\x01\x03\
99
+ \x00\x00\x00\x04_\x00Y\xcb\x08\x00\x00\x00\x00\x06\x00\x00\
100
+ \x00\x05Start\x07\x00\x00\x00\x0dLoad\
101
+ ingWindow\x01\x03\x00\x00\x00 \x00\
102
+ W\x00i\x00n\x00d\x00o\x00w\x00sv\xf4c\
103
+ \xa5\xff\x08N\x0de/c\x01T\x0eS\xf0\xff\x09\x08\
104
+ \x00\x00\x00\x00\x06\x00\x00\x00,Windows\
105
+ Direct (Does No\
106
+ t Support Backgr\
107
+ ound)\x07\x00\x00\x00\x0dLoadin\
108
+ gWindow\x01\x03\x00\x00\x00\x04\x8c\x03\x8b\
109
+ \xd5\x08\x00\x00\x00\x00\x06\x00\x00\x00\x05Debug\
110
+ \x07\x00\x00\x00\x0aMainWindow\x01\
111
+ \x03\x00\x00\x00\x04N\xfbR\xa1\x08\x00\x00\x00\x00\x06\x00\
112
+ \x00\x00\x04Task\x07\x00\x00\x00\x0aMain\
113
+ Window\x01\x03\x00\x00\x00\x08Qh\x90\xe8\
114
+ f\x82P\x5c\x08\x00\x00\x00\x00\x06\x00\x00\x00\x09Pa\
115
+ use All\x07\x00\x00\x00\x0bStar\
116
+ tButton\x01\x03\x00\x00\x00\x08Qh\x90\
117
+ \xe8_\x00Y\xcb\x08\x00\x00\x00\x00\x06\x00\x00\x00\x09S\
118
+ tart All\x07\x00\x00\x00\x0bSta\
119
+ rtButton\x01\x03\x00\x00\x00\x04y\x81\
120
+ u(\x08\x00\x00\x00\x00\x06\x00\x00\x00\x07Disa\
121
+ ble\x07\x00\x00\x00\x0cTaskOpBu\
122
+ tton\x01\x03\x00\x00\x00\x04T/u(\x08\x00\
123
+ \x00\x00\x00\x06\x00\x00\x00\x06Enable\x07\x00\
124
+ \x00\x00\x0cTaskOpButton\x01\
125
+ \x03\x00\x00\x00\x08\x91\xcde\xb0_\x00Y\xcb\x08\x00\x00\
126
+ \x00\x00\x06\x00\x00\x00\x05Rerun\x07\x00\x00\x00\
127
+ \x0cTaskOpButton\x01\x03\x00\
128
+ \x00\x00\x04\x91M\x7fn\x08\x00\x00\x00\x00\x06\x00\x00\x00\
129
+ \x06Config\x07\x00\x00\x00\x07Task\
130
+ Tab\x01\x03\x00\x00\x00\x06]\xf2y\x81u(\x08\
131
+ \x00\x00\x00\x00\x06\x00\x00\x00\x08Disable\
132
+ d\x07\x00\x00\x00\x07TaskTab\x01\x03\x00\
133
+ \x00\x00\x04[\x8cb\x10\x08\x00\x00\x00\x00\x06\x00\x00\x00\
134
+ \x04Done\x07\x00\x00\x00\x07TaskTa\
135
+ b\x01\x03\x00\x00\x00\x06\x96\x1fR\x17N-\x08\x00\x00\
136
+ \x00\x00\x06\x00\x00\x00\x08In Queue\x07\
137
+ \x00\x00\x00\x07TaskTab\x01\x03\x00\x00\x00\
138
+ \x04O\xe1`o\x08\x00\x00\x00\x00\x06\x00\x00\x00\x04I\
139
+ nfo\x07\x00\x00\x00\x07TaskTab\x01\
140
+ \x03\x00\x00\x00\x04T\x0dy\xf0\x08\x00\x00\x00\x00\x06\x00\
141
+ \x00\x00\x04Name\x07\x00\x00\x00\x07Task\
142
+ Tab\x01\x03\x00\x00\x00\x04d\xcdO\x5c\x08\x00\x00\
143
+ \x00\x00\x06\x00\x00\x00\x09Operation\
144
+ \x07\x00\x00\x00\x07TaskTab\x01\x03\x00\x00\
145
+ \x00\x06]\xf2f\x82P\x5c\x08\x00\x00\x00\x00\x06\x00\x00\
146
+ \x00\x06Paused\x07\x00\x00\x00\x07Tas\
147
+ kTab\x01\x03\x00\x00\x00\x06\x8f\xd0\x88LN-\
148
+ \x08\x00\x00\x00\x00\x06\x00\x00\x00\x07Runnin\
149
+ g\x07\x00\x00\x00\x07TaskTab\x01\x03\x00\
150
+ \x00\x00\x04r\xb6`\x01\x08\x00\x00\x00\x00\x06\x00\x00\x00\
151
+ \x06Status\x07\x00\x00\x00\x07Task\
152
+ Tab\x01\x03\x00\x00\x00\x04N\xfbR\xa1\x08\x00\x00\
153
+ \x00\x00\x06\x00\x00\x00\x05Tasks\x07\x00\x00\x00\
154
+ \x07TaskTab\x01\x03\x00\x00\x00\x08N\xfb\
155
+ R\xa1\x91M\x7fn\x08\x00\x00\x00\x00\x06\x00\x00\x00\x0c\
156
+ Tasks Config\x07\x00\x00\x00\
157
+ \x07TaskTab\x01\x03\x00\x00\x00\x08N\xfb\
158
+ R\xa1O\xe1`o\x08\x00\x00\x00\x00\x06\x00\x00\x00\x0a\
159
+ Tasks Info\x07\x00\x00\x00\x07T\
160
+ askTab\x01\x03\x00\x00\x00\x02P<\x08\x00\
161
+ \x00\x00\x00\x06\x00\x00\x00\x05Value\x07\x00\x00\
162
+ \x00\x07TaskTab\x01\
163
+ \x00\x00\x11t\
164
+ \x00\
165
+ \x00\x86\xbex\xda\xed]ypU\xd5\x19\x7fNm;\
166
+ \xfe\xd3q\xa6\x9d\xa9\xfftjgjK[Gq\xac\
167
+ U\x88!\x0b\x18\x12\x92\x97=A\xa2(\xa2\xa0\xa0\x22\
168
+ Z\xab\x15Aq)\x02\xa2\xb5\xee\xbb\x08\x1a\xd9\x92\xbc\
169
+ \x04HH\x88\x09[\xd8\x13\x02aM\x80,\x10\xc8F\
170
+ XC\x12\x02\xef\xf4\xfc\xce\xbd\xf7y\xdf}\xf7\xdc{\
171
+ \xee[\x13\xc8\xc7|\x13\xde}g\xf9\xce\xb9\xdf\xf9\xce\
172
+ w\xbe\xe5<\x9b\xed:\xdb\xcfm7\xdeh\xa3\x7fo\
173
+ \xb6=q\xbd\xcd\x96i\xb3\xd9n\xbaI\xfa<\xf7\x06\
174
+ \x9b\xad\x8c>\x1b:T\xfa\xbc\xe4\x16\x9b-\xe6W6\
175
+ \xdb\xcd7\xcb\x9fi\xbd\xce;m\xb6\xc8H\xe9\xf3\x90\
176
+ h\x9b\xed\xe3Q6\xdb\x10\xda\x06\xfd\x8a>\x91\x9e\x03\
177
+ \x22\xaf\xb7\xe9B\x92#~tr^\xfc\xbe\xe4\xbc\x04\
178
+ g\x8a\xc3N\xe8_]\x94\xbfs\xa2,\xea\xa0nJ\
179
+ n\xe2})\x05v\x92Q\x9cL\xec\xb9\xb1$>g\
180
+ 4I\xcc\x8d\xf3\xa8k\xa7\xcf\xf0]\x02-\x93N\xcb\
181
+ \xa2\x0e\xea\xd2\xefjP7\xc5\x91\xe8\xb4\xe7\xc4\x91\xd8\
182
+ \xe5\xa3\x18\xaa\xeb&\xe5\xc5\xbb\x9e\xa3L*-\x8b:\
183
+ \xa8\x0bz\xd0&\xda\xdf\xd3\xbe\x9bt\xf7u\x93\xfc\xba\
184
+ <\x12\xf1\xc3p2fE\x0c\xc5\xfbH\xe4\x92{\xc9\
185
+ \x9a\xa3\x85\xe4b\xdfE\xb2\xafc/I\xca\x8dgt\
186
+ (\xe3M\xca\x1dC\xcb\x87\x91\x92\xfa5D\x01\xda\x07\
187
+ \x89\xa2\xf5\x22\xe9\xf3\xb1\x05\xe9\xae\xe7e\x8d\xa5\xacl\
188
+ \x22\xad\xa3\x9e\xabQK#\xc9\xd4\xb5\x8f\xbb\xca\xb5u\
189
+ \xb5\x91\xd6\xae\x16\xd2B\xb1\xe3b\xbb\xeb\xf9\xb4\xd2\xa9\
190
+ d\xe4\xd2\x08\xcf\xf9\xc9\x89\xa5mD\x90#\xa7\x0f\xbb\
191
+ \xca\x82^\xa0\x02\x8dg\x1b\xc8}\xcb\x22IBN\xac\
192
+ \xee\xfb\x19A\xc7\xfci\xf5\xc7\xacl\xcf\xe5\x1eV.\
193
+ \xcd\x91D\xae8\xaf\xb0g_\xee\xf9\x9c\x96\x19\xc6}\
194
+ \xbf\xa3\x97\x8f$\x0f\xac\x1a\xeb\xea\xef_\xeb\x9e#\xaf\
195
+ n\x9a\xe9\xfa<~u\x16\x89Y\x1e\xcd\xad\x9f(\xcf\
196
+ \xe3\xf6\x93\xdbX\xf9\x8a\xe3\x1b\xc9\x0e\xf9\xffU-\x95\
197
+ l.Q\x86W\x1f\x88w\xf5\xc6\xe6\xd9D\x0bom\
198
+ }\x93\xd5\xe7\xf0\xa4\x0b\xf1\xce\xc1\x0b\xeay\xeb\xbd\xdc\
199
+ \xcbx(\x8e\xf2\x82.?;T\xbcFy\x03\xef\xfd\
200
+ \xfb\xfd\x8b\xc9\xe9\x9e\xd3\x0c\x97\x1c\xc8f\xcf\xf0\x9d\xab\
201
+ \xbeT\xc7\xa9\xf0\xaf\xfc\x7f\xd7\xf7\xe0\xd5\xb8\x15\x12j\
202
+ \xf9\x19e\x15\xfeU\xaf\x1f5\x1d\x98\xa7\x04\xac\x17\xb6\
203
+ \x9e\xc6\xb8\xf5\x9b\xa1Z?\xbe\xae__\x01r\x86\x8a\
204
+ *\xdbP\x95\x9c\x99p\x03\xbf\xbc\xbd\xc0\xfe\x87\x94\xdc\
205
+ \x84\xaf)\x1d\xc7(^V\x8f\xd9\x14\xa5\xb2\x97Q\x17\
206
+ m\xa0-u\xdb)\xb9cbQ.\xb34\x95\xa4\xae\
207
+ L$\x96\xdaV\xf5\x81\xbah\x83\xcd\x19m\x13m\xa7\
208
+ \xe6\x8c\xf9=\xe6Ny\xee\x0f\x94\xdbr\xa2\xed$G\
209
+ \xc2\xe7\xae>\xf3\xec\x8c\x8f\xa3\x97\x84SY1\x82\xfd\
210
+ \x85\xec\xd4{\xb7x\xa6-\x8b\xcfhC\xe9\x03mc\
211
+ \xce\xd8\x9c\xd0g\xe0\xa9)%\x93\xc9\xec\x8aY\xe4\xe5\
212
+ \x8d\xff&\xaflz\x99d\xad\xcc\xd4\x95+\xe8w\xfc\
213
+ \xeaqL\x0e\xa0,\xea<I\xe5\x1c\xda\xc0\xf7r\x9b\
214
+ n\xef2\x8a\xd20g\xeb\x1bn\xeb\xb7\xe0\xb0\x83\x84\
215
+ g\x0fc\xebP\xcd\xe3\x90G\xe5Mene\xdf\xde\
216
+ >\x8f\xad7\xb7w\xee\xd0\xacq\xba\x0f\x9c\xe99\xe3\
217
+ \xaa\x83u\x0a\x19|o\xf6=l\x1e\x80a\xdf\xff\x83\
218
+ \xd1\x0fY\xa8\xc0\x85K\x17\x18\x0dhC\xc3Wn\xfb\
219
+ M8\xa5k\xc5\xa1ent}R\xfd\x11y\xb6l\
220
+ \x1a\x99\xb1\xe1E\x86\xd3\xcb\x9e&\x0b\xf7~\xed1N\
221
+ \x8cI=N=\x1cE\xe5\xf8\x94\x92I\xc4*L\xfb\
222
+ \xf1I\xb6O\x98\xf1\x16d \xf6\x99\xba\xd3u\xc2m\
223
+ K\xfbK\x14w\x7f\xd1\xdbo>\xde\xf5\xa1[\x1b\x8e\
224
+ \xba\x5c\xfa\xee\xdfd\xef\x1f{\xae\x1a\xa4\xfdg\xb8\xf0\
225
+ \xfa\xc0~\x04\xbet\xd2\x7f\x0a\xe4\xd5\xe6\x90[\xbf\xf9\
226
+ 3\xb9\xed\x9b\xbf\x90\x1f\x1b\xd7\xba\xb5\xff\x10\xdd\x9fF\
227
+ \x1b\xecO\xbc\xfdj\xeb\x89-n\xfc\x01y\x8d\xf5s\
228
+ \xd9y\xd9\xf5\xbc\xaa\xb5\x92\xedMf\xfb\x97\x16\xc1\xc7\
229
+ \xafo~\xd5\x8dN\xf0\xd0\xab\x1535\xfb\xdb\x7fX\
230
+ \xfbVe\x08\xf8\x184\x9d\xeb=\xebj\xab\x88\xce\xfb\
231
+ \xfac\xeb\x5c\x9f\xbb\xfa\xba\xd8x\xb4\xfb\x9f\x08\x82\x8f\
232
+ \xc1\xcf+\x0f\xe7\xbb\xda\xeb\xbb\xd2Gu\x8a\x9f\xe6\xa6\
233
+ \xb8\xbeH\xe2\xf9\xdcx\xaf\xe4 \xf8\xf4\x19\xca\xd7<\
234
+ x\xbe|:[\xcf\x02{\x83.\x82\x9f\xc1\xd7M\xe7\
235
+ \x1a=\xda>y\xe1\x04\xe33C\x9e\xd7\x91A\x9ek\
236
+ a\x18\xf9\x8a\xf2\xb7\x16\x16\xef[\xc8d\x89\xc8\x9e\xa6\
237
+ \xc8g\xdezN\xcfO!\xb36\xce 37\xbe\xc4\
238
+ d\xf1\xacM3HfA*\x93\x85\xbcz\x8a|V\
239
+ \xef/\xba\xba\x01\xe5\x0f\xccA\xb4,;\x95\xbd\x04\xcf\
240
+ \x94\xbd\x84\xb7\x87\xa1\xed@\xef\x8f\x81\xde\xdf\x83\xa1\x9f\
241
+ \x04\x12\x86\xc8:\xd8\x04\x95\x1e6\xfb\x16\xf1\xfaq\x85\
242
+ q\xbfL\xce\xb3\xa7%\xe7\xc4\x7fI\xe9\xaf\xa4\xd8J\
243
+ \xb1\xd7_\xef\xd2\x00{\xe5\xbe*\xa5\xbe\xedi\xa0E\
244
+ \x94\xee\x8ce\x19?\xa3\xf5f\xa1\x8d\xf45\xc9\x04\x98\
245
+ \xb6:\x91\xe9\xc7^\xf1\x87\x17\xfc\x84\xbe\xd0\xa7\xd2?\
246
+ \x1b\x0f\xa5\x09\xb4\x19\xd1Ny\xefO\xb4lSVE\
247
+ &\xab\x97\x92o'A\x98oC\x04\x0d\xa0\x054\x81\
248
+ 6\xd0\xa8G{b~\xe2\x1f\xe9\xf7W\xee_\x9f\x1e\
249
+ \x9cy\xf6\xe2\xbd0\xda(\x8d\xa0\xd5\x83g\xf2\x12\x1a\
250
+ \xe5\xef\x9d\xfd\x8ev\xd59Q\xa6\xb1Q\xcdK\xf4\xec\
251
+ \xf6b\xd6\xe6\xcc\xfe9\xef:\xef\x01\xb4\x82fy\xee\
252
+ \x7fA\x9f\xb7\xa4K\xe7\xdf\x01\x812\xad-\xa0=1\
253
+ '>\xd1l\xadBg2Bo\xe9\xf0\xb6]eM\
254
+ \x83v\xec\xd5\xb2\x8c\xd2\xd5\x01\x94\xf3\x1b\xf4t\xe8\xc6\
255
+ j\xc43\xe8jF\xfa\x80\xb7\xed2\xfb\x0a\x1d\x03\xaf\
256
+ m\xd0,\x9fc+!kyz^\x06\xd5\x91~8\
257
+ \xf0=Y~h)\xfb\x0b\xdb\x8d\x828;\xcc\xdd6\
258
+ \x87\xe9{V\xde\x03\xf4k\xe8\xce\x1f\xed\xfa\x80\xe4\xd6\
259
+ \xaepk\x13},;\xb8\x84\xe1\xb8\x95\x19\xec\xbc\xa9\
260
+ \xd7\x86L3\xdbWy\xbc\x03\xfac\x96E\x93F\x1d\
261
+ =U\x01\x9cea\xaft;\xbf\x9a\x9e\xa3\xa2\xd9\x19\
262
+ \xde\x08\xda/\xb63[)\x8f~\x99fI'p\x18\
263
+ \xdb\xefp~7\x02\x9c}\xc0\x0b\xa2\xf4\x83G>\xa5\
264
+ go#\xc094B\xc7>\xa8\xd1\xcdL\xf5\x19\xbc\
265
+ \xe7\xb4\xfcd7\xfb\xa1\x16`\xaf\x88\x10\xb0e*z\
266
+ ;\xec\x12\x07O\x1d\xe0\xb6\x87sf\xd6\xaaL\xc6\x97\
267
+ \xbe\xca*\x9c\xc1`\xfb.m(\xe1\xf6\x87\xb1\xa5\xe5\
268
+ '\xb1s\xae\x99L\xc1\xb9\xe9\xb15\x13\x0c\xe7~s\
269
+ s\x85Wgc\x1e\xe2\x0c\xf2\xe2\xfa\xe7\x0d\xfb\x84\x8d\
270
+ \xf8\xf6\x85\x7fcc\xd5\xca\x13\xb5\x5c\xb9}\xe1_\xc9\
271
+ \xd75_\x1a\xb6\xf5Z\xc5+\x96\xf8\xd1\x0c\xb1\x86\xc0\
272
+ G8[\xf2\xa0\xfe\xccQ\xb2\xb0\xe6+\x0f\x19\xa5\xc6\
273
+ \xec\xfd\xdf\x91E{\x17\xd2\xb5\xd9\xc6m\xe7L\xcfi\
274
+ 6\xefV\xe4\x81\xd8\x99\x7f8\xb3\x81\xeb\x81\xd3\xe9\xb4\
275
+ l\xb7\xe2\xd5\x91\xece\xc3}\xda\x17\xf5\x10|;\xa9\
276
+ x\x22\x094<#h\x8f\xb3\x8a\x92\xfdn\x04\xf3W\
277
+ \x05\x0a\x1a\xce\xd6\xb3\xfdF\xd4\xdeg\x15\xb1\x06\xdf\xab\
278
+ |\xd72O\xb8\x95!\xfc2\xb0\xb7DX\xb0'Z\
279
+ E\xc8\xc7\xb1\x05i\xe4\xd2\x95K\x5c\x1aN\x5ch&\
280
+ \xd5\xad\xbb\xd8{R\xe3\xae\xd6*\xd2q\xb1\xc3pl\
281
+ \x0f\x17>`\xc9^i\x15\x15\xfb\xa6\xda\x16\xa8\x85\x8d\
282
+ \xc77\x90\xbb\x16\x0fe\xb6\x1e\xd8\xa4\x81\x91K\xc2H\
283
+ X\xf6\xdd\xa4\xb6\xb3\x96[\xaf\xb2e'\x93\x99\xfe\x92\
284
+ \xf9\xdc\xbd\x80\xf6\x01{\x97\xd1\xde\x09\xbd\x0btc\xcd\
285
+ \x00\xa1K>]:\xc5p\xee\xe7zio\xb5\xbe\x17\
286
+ \xc4\xb0\xf5\xa5\xf6\x01k\xe1\x83\xaa\xff\xb9t\x17E\xf6\
287
+ \xe6\xd4.\xe7\x96\x87\x8d\x1a\xfeio\xec\xb9\xde\xee\x05\
288
+ Z_\x88\x1a\xe0w\xc7\x9e\xad\xf8\xf8\x81\xf0}\xf3`\
289
+ M}\x11[\xb7\xde\xda\x8b\xad\x22xC\xed\x9b\xd7\x83\
290
+ \x09\x85\x0f2\xdf6\xce7\xf0{\x1b\x01\xbe7\xb5G\
291
+ \xfb\x11%\xfbu$\xa9;\xcd_\x8f\x9fU\x7f\xc2l\
292
+ \xd0xW+\x8f\x14p\xcb5\x9fof>i\x9e\x9e\
293
+ \x1f(\xc4\xfb\xfe\xc4@\x87?\xd4y\xd0\x15\xb3q\xaa\
294
+ \xfb\x14\xb7\xdcw\xfb\x16\x05D_\x10\xf1E=\xb0\xea\
295
+ ~W,\x85\x1e\xc0\x16?\xfd\xc7\xa7\x0cy\x07\xbat\
296
+ \x0c\xd5M\x82m\xc3\x80\x9c\x86\xbcS\xfb\xba\xb4\xf0\xde\
297
+ \xcew\xc8\xd2\x83?\x08\xad\xf3P\xd8a\xa28\xb1!\
298
+ j}\xa6\xad\xab\x95\xfb\xfd\xbb;\x16\xe8\xc6\x90\x04\x0b\
299
+ \xc1\xdb\xe0\xdb\xb3\xbdg\x0c\xf5\x1c=\x9d\x07\xe7\xfe\x8c\
300
+ \xfcT\x12\xbbbT\xc8\xe8W\xf6\x02#\xf9\xe2\x8f3\
301
+ s \x11\xf2\x1d~{\xab\x00\x7f\x7ft\x10e\xbe\xd1\
302
+ ^\x00\x9d\x11\xbezQh\xa3\xe7Ge_\xee\x0f\xf6\
303
+ T\xf0\x90\xd9\x99\x5c\x0d\xb0\xad\xf9Q\xe6\xf7\xfaj7\
304
+ \x87\x9e\x00}A\x14\x9e(\x99\xc4\xf6o_\xed\xe8\x8a\
305
+ \xaf\xccW?\x11\xe23\xb1\x17\xecn\xab6\xa5\x1d\xf1\
306
+ \x88X3F>fQ\xbf\x92\xe2\xe7\xe3\xd9o\xad\xee\
307
+ \xc7\xcf\x95M#yu\xb9\x5c\xfb\x09bQ`G\x8a\
308
+ \xf1\xc3\x19K\xb1\xdf\x1a\xd9\xcf-\xcd\x87\xc3\xce\xc6\x00\
309
+ \x9d\x8do\xbf\x1a\xc6h7\x8a\xe9\x13\xf6a\xc8\xf6s\
310
+ \x11\xffE0|\x12\xde\xf8$A\xfb@\xf7\x1f\x0dt\
311
+ \xff\xdd\xd5\xe0?\x1d\xe8\xfe\xeb\xab!~\xe0j\x88\xdf\
312
+ \xb8\x1a\xe2g\x06!\xb80D\xce\xc9\x89T\xc7i\xdd\
313
+ hR\x89\xd8\xaeK\xc9\x8f\x9f\x98\x9c\x17_B\xf7\xf0\
314
+ \x93\xf4]\xf7\xf9\xb46\xa4\xba}R[\xf1%h\x1b\
315
+ }\xe8\xe7\x06\x8d\xb9\x9b\x96\xa9\xcf,M!\xe9E\xc9\
316
+ \xfe[\x97\xf2\xbaC\x9bh\x1b}\xa0/u\xdfi\xf9\
317
+ \x89\x7f\xc7\xde9\xb6<-\xa0\xb2\x0dm\xa3\x0f\xf4\x85\
318
+ >U{\xdc\x11<\x0f\xd2\x1e\xe7\x94\xfb:\x22\xf5m\
319
+ \x1f\x8f\x18E\xed\xb8q~\xd6\xa2\x15\x1b\x90Q]\xf4\
320
+ %\xc5E\xda\xc7\xd3\xcf\xc5x7\xda8\x0e\x9cc`\
321
+ \x87\x81]\x1e\xf6\x7f\x9c#x\xb9\x09\xda\x1c\x05\x94E\
322
+ \x1d\xa9\xee\xbd\xcc.\xab\x8d\xf7\x90\xfb,\x06o2^\
323
+ S\x9d{a\xf3^\xd7TFv\xb6\xec`>\xe7m\
324
+ '\xb6\xb2\x5c\xa3G\x8a\xc6\x1b\xdaEp^F\xce\x02\
325
+ b\xb8a\xffB\xdd\x1d'\xb73\xdf\x07\xe2E\xd4\xe7\
326
+ b\xf4\xa9\xb7\xc60W\xa0\x1d~\x1d-|\xbb\xf7\x1b\
327
+ n^\x95\x92K\xa0\x8e\x9fV\xe0\xc0\xa9\xfd\xcc\x8e\xec\
328
+ fO\x93\xd7\xa6\xde\x1a\x8b^\x1a\xce\xec\x10zv/\
329
+ \xcc\xa5\x12\x0b\xae\xc6X\xd9\xd6\xdb\xa9cS}m3\
330
+ \xc7\xef\xed\xe0\xfb\xb5\xd1G\xbb\x8e/cr\xf1D\xe6\
331
+ GR\xde\xaf\xc2\x1fw.\xba\x8d\xbc\xb0\xee\x9f\x1e\xe5\
332
+ a\x03\xb3\xea\xb7Vb\xd1a\x0f\xd0\xf3\xa7\xaf?V\
333
+ \xce\xde\xad\x1a\xd77\x95\x93\xe6\xf3\xc79~\xe7a\x96\
334
+ \xcf(\xf0+?^\xf2\x98\xb0\x8f\x92Wf\x9a\x97~\
335
+ c%\xaf\xe3P\xe7!\x0b485\xfcb-\xcfC\
336
+ \xcf\x96\xffa\xd5\xfb\x1e\xbd\x9c\xeb=G\x8e\x9e9\xc2\
337
+ \xe2\xec\x81\xf8?r\x0f\xf4\xfc\xb6#|\xf0\xdb\xc2/\
338
+ \x0b\x9f\x9f\xd6\x16\x0f\x9bX\x94\xec\xc7\x84\xad\x0e~\x0e\
339
+ =_\x82\xd5<\x11\x9e_us\xf3&\x8f\xb6\x9f.\
340
+ \x9d\xca\xbe\x0b\xcf\xbe\x87\xc5\xe7k\xa1\xaau\xa7_b\
341
+ e0N\xe4bi\x01\xb9\xaf\xc8\x81\xc2\xfcn8\xb6\
342
+ \xde\xd3\xef\xb9\xcd?~O%\xcfR\x9d\x83\x05\x80\xcf\
343
+ \x1b\xf3\x0f\xdf\x9e:\xef\xca\x95\x87\xe2\xb0\xfb\xc5o\xa9\
344
+ \xc8\x02\x8cW\x0bX\x9f36\xbc\xe0\xf1\x5c\xcaS\xf1\
345
+ \x9f\xef\x08\xe3\xc4\xfb\xd6\xb3W\xa2/\xaf\xf2X,\xfb\
346
+ \x05\xa3H=\x95\xffZ\xffp\xf7\xe5n\x8f8\x85X\
347
+ \xb3<\x17/m\xb9_\xec\xf9\xcc\xd4\x8f\xb1x\xdf\xb7\
348
+ \x86\xb9\xc7\xbe\xd8\x01\x91\x97l\x06\x8f\xaey\xd8\x9a\xdf\
349
+ \xcda\xcd\xafVIu\x12\x1e\xecm\xafa\xfb\xa1\xb0\
350
+ \xdf\xcc@\x07\xe0\xc5\x5cj\xf3-\xd5\xf0\xce\x8e\xb7\x8d\
351
+ c#9g\x03\xb5\xfee\x16\xef\x86<s\xc4\x99@\
352
+ \xafR\xf6^\xe4~o\xa2:\x16\xfc\xa2\xa2\xfb\xbcJ\
353
+ \xff\xf2\xd0?\x8d\xf4\xcbD\x16\xf7\x11\xee\xa1\x7f@\xcf\
354
+ \xc4\xbc\x8b\xdaP\x15\xfd\x93\xa7\x7f[\xd5\xaf\xad\xc8y\
355
+ \xb5\xfe\x1d\xea\xf3G\xa8\xcf_\xfd\xe1\xfc\xd9\x1f\xce\xdf\
356
+ \xa1\xb4S\xc0F1[e\xa7\xb0E{\xdf^\x92#\
357
+ >\x9c\x8ey&\x1d\xafC\xbe\xb7\x036\xab\x9e~`\
358
+ k\xed\x91i\xa9\x91i\x9b\x09Z\xfd1\x87I\x8e\xa4\
359
+ \xdf%\xe7$\xcc\xa3m6 \xe7\x90\xd9\x17\x8b\x92H\
360
+ \xea\xaaDi=9\xfa\x87\x9d\x19\xb4\x80&\xd0\x06\x1a\
361
+ \xe5\x9c\xd1\x06\xd0\x8e1x3vZ\x7f\x0e\xda\x19\xb7\
362
+ !\xddu\xdf\xcb@\xf1w0\xb9@i\x06\xed\xf2\x5c\
363
+ \xcc\x11\x1d\xb7=\xdb\xfe\x9b\x94\xdc\x84\xdd\xb0\x7f\xa7\x15\
364
+ &\x0d\x18\x1f\x15\xd7\xefI\xc7\x80\xb1`L\x18\x9bq\
365
+ >c\xca\xaf\xe1\xe7\x1a\xb71C}?\xca@\x9f\x03\
366
+ v?\x0c\x1b\x13\x1d\x1b\xc6h\xc0\xf3\xd5r\xb9\xab\x12\
367
+ \xe5\xb1Us\xc6\xfe\xfa\x80\xf1i\xfa\xe8\x0b\xc5X5\
368
+ \xbe\xc4\xdfBN\xc8\xeb\xddy\xd5\x8e\x9f\x8e\x0dc\xc4\
369
+ X1f\xd7\xbb\xcfI\x98\x03Yy\x15\x8f\xdb}\x1d\
370
+ `\xac9\xf2\x9e@\xf56\xec\x95\x19\x03(\x1e\xc1W\
371
+ \x94\xc7\xda\x80\xb1\xdbs\xe2\xee\x01?\xa4\x16\xd8\xaf\x99\
372
+ \xf1c\xac\x183\xc6\x9e\x92k\x7f\x99\xf9\x8c\x1d\xe69\
373
+ \xb0\xb0;\xc1.)\xf9A\xf41RF\xb3{7\xac\
374
+ \xc4\x19\xc1\xde\x86\xb8\xd7(\x93~\x95|\x0e\xd3~\x1d\
375
+ R<\x11\xc6\x0e\x9d\x19z\xa3\x88\xdd:\xb3 \x8d\xbc\
376
+ \xbd}.\x99O\x11y\xb8z8\x7f\xfb[d\xfe\xb6\
377
+ \xb7\x98\xcd\xc0\x1f\xb6*\xd8&\xe0\x1fzg\xc7|2\
378
+ \x8f\xb6\xcb\xed\x97~\x872Y\xab\xc6\x0a\xf5+\x8dY\
379
+ :\xcb@w\x16\xa1\x03\xedvvw\x0a\xc5\x0c\x9a\xe6\
380
+ \xb3Z\xc8\x05-V\xddkh\x04\xc8sB^\xa8\x88\
381
+ }V\x1es\x8dh<\x22x\x1f<(\x1a\xf7\xb9\xbf\
382
+ c\x9f\x94\xd3\xe3C\xdc\xa1bs\xd2\xda\xa8y\xb0\xe2\
383
+ \xd0r6\xe7\x22y)\xaax\xc6\x1eQ\x9d\x07>\x87\
384
+ \x87\x0b\x1f\x14\xf2\x17I\xb9\x02\x8f\xb0\xfc<_r\xa7\
385
+ \xf4|\x04<\x98\xbav\xb2x\x9c\xaa\xc3uv\xb6\x14\
386
+ w\x0a\x9a`#\x14\x81\xaf\xf6|!\xbd\x0f/\xec\xf5\
387
+ \x8a]V{\xb7\x9cQ\xfe\x89/>1+9\x0c\xf0\
388
+ \xc1\x88@]g-\x8b\xff\xf4\x86&\xaca\xf8\xb6\xbb\
389
+ .u\x09\xca\x9b\x0f|\x967\xa2t\xc1V\x0c_\xa1\
390
+ \x08L\xb1\xc2\x93\x9ay\xc6=t\x22\x80\xfb\xccp\xef\
391
+ \xa9?\xf2\xef\xc5dr\x18):\xbaZ\x886\xf8M\
392
+ \xee\xf8\xf6VV\xc7h\xffV#\xfc,w-\xbe\x83\
393
+ li\xae\x10\xea\x03~\xcc(?\xe6\xef\x8b\xe4`<\
394
+ \xbf\xeeY!\xdaZ.\x9c$ony\x8d\xf97x\
395
+ {\xb7\x16Q\x1e>\x0f\xad\xff\x91\x07\xb8\x9f\xcf\x9f\xf9\
396
+ \xff\x22\xba\x00\xe22\x9a\xce5y\x953\xef\x8f\xbc{\
397
+ \x05\xa0\x8fx\xdc\x87\x19\x84<\x22\xe8%\x88\x9b\x095\
398
+ \xe4\x1f\xce\x13\xde\xf3\xfd\x89\xd8\xd7\x1f5\xb9W#\x18\
399
+ 0\xbd\xec\xa9\x80\xdc_ \x1a\xc7R\xdd\xb6+dc\
400
+ G\xcc\xd0\xe8\x00\xf8\xc4E\x11\xfa\x09\xce\x1c\xa1\x02\xe9\
401
+ \xfe\x84\xb0\xa0\xe7\xd2\xba\xe2x\xa8\x0c\xc49\xcf\xe8\xae\
402
+ \x1dod\xa1hY%\xe7;Tv\x04\xa6\xa3\xd2\xf9\
403
+ \xd7\xdec\xcb\x8d#\xe8\xa8a>\xf6-\x9a\x187\x05\
404
+ \xd75\x95{\xc4\x82\xf0\x001\x94\xa1\xcc\xe5U\xdf\xf5\
405
+ \xf3\x92N\xac\x0eO\x17\xc2\x9d?z\xb6\x0c\xe8<\x88\
406
+ 5\xc4\x9d\xf3\x22\x00=!\x18\xf7?\x88\xd9\x05F3\
407
+ =\xc7\x0cp\xa7\x82\xa2;hc\x0cpV\xc6}\x22\
408
+ \x22\xbc\x7f\xbe\xf7<\xd3\xc1\x83q\x7f\x84\xa8.\x80|\
409
+ =\x11\x00\xafhc\xa8\xa46\xc2\xd8\x1d\x08\x22\xb0\xa6\
410
+ \xbe0${\xbeQL\xe9\x13\x82w\x81\xe3\xdc\xa0\xa5\
411
+ \x1d6\x12\xb4\xb1\xff\xd4>\xa16\xa4\xfb+\x22\xfa\x8d\
412
+ =U\xa2?\x92\xc5C\x9b\x81\x9e\xbe\x8a\xb8\xae\xc9\x82\
413
+ w=\x1d?\x7f\x8c\xd5\xed/\xb9\xd0.]\x80\xbeS\
414
+ \xdc\x03#\x02\x88+Ur\xd1\x15\xde\x17\xb5\xabA\x86\
415
+ F\x84\xe0\xfe\x0c\xf3\x98\xde\x91\xec\x0e<\xa3\xbb\x96\x14\
416
+ (mX\xeb\x8a\xa1\x95\xf2\xe1G\x92\xc3\xaa\xdfM1\
417
+ \x82I\xc5\x8f\x84\xe4\xfe\x0d\x11]\x00\xfb\x18r\x12\xcc\
418
+ \x00\xb6\x13E~c\xdd\xc3F\x22\x025\xed{\xa4\x5c\
419
+ \xee\x10\xef\xf9Vc\x9a\xf5\x00g|\xcc\x17x\xf9\xbb\
420
+ \xfd\x8b\x84\xea\xfcw\xe7\x02v\xb7U\x7f\xf5+)\xf9\
421
+ \x1b\xa7\xba;L\xc7\x82\xd8n\xc4y\x83\xf7\x1b\xcf6\
422
+ \x9a\x96\xc7\xef\x22\xe1.3\x9d\xdf\xa2\xe97\xa8\xd8\xc6\
423
+ pO\xab\x19\x5c\xec\xebb\xf35\xb9\xf8Q\xa1w\x8f\
424
+ \xdfm\xc2\xbb\x0f\xf5\xfd#\xa61\xe5K\xf5c\xcay\
425
+ \xba\xd0\x17\xbb?\x1bP\xf7\x97\x88\xc4\xb4\xe3L&\x22\
426
+ \xcf+\x9a7\x91ZM\x1e\x0cOoF\xbb\xfdm\xcf\
427
+ \xe7\xeb\xc3a\xe4\xf3\xdd\x9f\xfa\xed\x9c\x8f|\x84P\x9e\
428
+ \xf3\xbd\x89\xe9G\x8e\x8e\xd1][V\x00\xbfu\xe4\xf3\
429
+ \xfd+A\xd7\x05\xc2]\xbf\xa3\xe6\x0b\xe0\xdea\xe8\x08\
430
+ \xf6\x10\xd9\xb8|\xf1\x93\x19\xe54\x88\xc2GU\xef\x07\
431
+ \xc5\xaf\x15\x08?\x19\xf2]\xd5\xbf\xebc\x15\xfa\xa8.\
432
+ \x9d\x15$\xbfV\xa0t\x81\xc2\xa3\xab\xbc\x1e\x7fE\x90\
433
+ \xfdZ\x01\xf1\x93\x95O\xf7z\xfc\xfe\xbe\xd7\x9a\x1b?\
434
+ \xef\x08\x9cm,N\xc0O\xa6\x07\xc8\xfb\x04\x0f\x05\xcc\
435
+ \xaf\xf5S\xfcCk\xa0rc|\xf1\x93I\xbf\x81\x1a\
436
+ 8\x1b\x97*\xfeE(\xfe\xc9{?Y\x14\x99X\xf4\
437
+ \x90\xe5\xf1O\x0b\xd0\xbd\xdc\x9e\xf1Ob\xf1o\xbe\xc8\
438
+ A\xac\x03\xfcF\xe3\x02\x16\xc3f\xec\xfb^\xb0}\x1e\
439
+ [\xf7\xd0w\x03)\xf7\x94\xf87\xd1\xf8G\xaf\xf9L\
440
+ \x8eE\x1ci\x127\xa9\x8ecD\x8c\x91\xd1o\x89\xf8\
441
+ c\xed+\xf1\x8f\xd7z\xfc\xeb\xb5\x1e\xff|\xcd\xc7\xbf\
442
+ \x0f\xe6?\x5c\xf3\xf9/\x83\xf9O\x83\xf9o\x83\xf9\x8f\
443
+ \x83\xf9\xaf\x83\xf9\xcf\x83\xf9\xef\x83pm\xc1\xff\x01\xe7\
444
+ \x0c\xaeQ\
445
+ "
446
+
447
+ qt_resource_name = b"\
448
+ \x00\x04\
449
+ \x00\x06\xfa^\
450
+ \x00i\
451
+ \x00c\x00o\x00n\
452
+ \x00\x04\
453
+ \x00\x06\xc4\xee\
454
+ \x00i\
455
+ \x001\x008\x00n\
456
+ \x00\x08\
457
+ \x0e8\x05}\
458
+ \x00z\
459
+ \x00h\x00_\x00C\x00N\x00.\x00q\x00m\
460
+ \x00\x08\
461
+ \x0aaB\x7f\
462
+ \x00i\
463
+ \x00c\x00o\x00n\x00.\x00i\x00c\x00o\
464
+ "
465
+
466
+ qt_resource_struct = b"\
467
+ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
468
+ \x00\x00\x00\x00\x00\x00\x00\x00\
469
+ \x00\x00\x00\x0e\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\
470
+ \x00\x00\x00\x00\x00\x00\x00\x00\
471
+ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
472
+ \x00\x00\x00\x00\x00\x00\x00\x00\
473
+ \x00\x00\x002\x00\x01\x00\x00\x00\x01\x00\x00\x09\x7f\
474
+ \x00\x00\x01\x8e2\xed>\xd3\
475
+ \x00\x00\x00\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
476
+ \x00\x00\x01\x8e\xa9\xc7\x8f\xaf\
477
+ "
478
+
479
+ def qInitResources():
480
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
481
+
482
+ def qCleanupResources():
483
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
484
+
485
+ qInitResources()
@@ -0,0 +1,14 @@
1
+ from autohelper.gui.widget.ListTableWidgetItem import ListTableWidgetItem
2
+ from autohelper.gui.widget.NumericTableWidgetItem import NumericTableWidgetItem
3
+ from autohelper.gui.widget.YesNonWidgetItem import YesNonWidgetItem
4
+
5
+
6
+ def config_widget_item(table, row, col, config, key, value):
7
+ if isinstance(value, bool):
8
+ table.setCellWidget(row, 1, YesNonWidgetItem(config, key, value))
9
+ elif isinstance(value, list):
10
+ table.setItem(row, 1, ListTableWidgetItem(config, key, value))
11
+ elif isinstance(value, (int, float)):
12
+ table.setItem(row, 1, NumericTableWidgetItem(config, key, value))
13
+ else:
14
+ raise ValueError(f"invalid type {type(value)}")