From b535efd84c51e41f72fc6b11cdd461035d9bdd18 Mon Sep 17 00:00:00 2001 From: DFlak Date: Fri, 17 Apr 2026 00:06:12 +0200 Subject: [PATCH] Refactor Java CAN bridge app --- .gitignore | 18 ++ .vscode/settings.json | 1 + build-bridge.sh | 25 ++ current_bridge_output/fome-can-bridge.jar | Bin 0 -> 613577 bytes fome-can-bridge/README.md | 50 ++++ fome-can-bridge/build.gradle | 49 ++++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 62076 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + fome-can-bridge/gradlew | 245 ++++++++++++++++++ fome-can-bridge/settings.gradle | 1 + .../devexperts/logging/DefaultLogging.java | 162 ++++++++++++ .../com/devexperts/logging/FileLogger.java | 40 +++ .../com/devexperts/logging/LogFormatter.java | 185 +++++++++++++ .../java/com/devexperts/logging/Logging.java | 237 +++++++++++++++++ .../logging/ThreadNameFormatter.java | 40 +++ .../com/devexperts/logging/TraceLogging.java | 146 +++++++++++ .../java/com/devexperts/util/TimeUtil.java | 9 + .../main/java/com/fome/canbridge/Main.java | 107 ++++++++ .../com/fome/canbridge/view/BridgeGui.java | 180 +++++++++++++ .../java/com/opensr5/io/DataListener.java | 8 + .../main/java/com/opensr5/io/WriteStream.java | 27 ++ .../java/com/rusefi/CompatibleFunction.java | 8 + .../src/main/java/com/rusefi/Listener.java | 10 + .../java/com/rusefi/NamedThreadFactory.java | 30 +++ .../src/main/java/com/rusefi/Timeouts.java | 24 ++ .../rusefi/binaryprotocol/BinaryProtocol.java | 36 +++ .../binaryprotocol/IncomingDataBuffer.java | 234 +++++++++++++++++ .../com/rusefi/binaryprotocol/IoHelper.java | 85 ++++++ .../rusefi/config/generated/Integration.java | 18 ++ .../generated/VariableRegistryValues.java | 13 + .../com/rusefi/config/generated/readme.md | 3 + .../main/java/com/rusefi/io/ByteReader.java | 46 ++++ .../src/main/java/com/rusefi/io/IoStream.java | 76 ++++++ .../main/java/com/rusefi/io/can/HexUtil.java | 61 +++++ .../java/com/rusefi/io/can/SlCanIoStream.java | 135 ++++++++++ .../com/rusefi/io/can/SocketCANHelper.java | 63 +++++ .../com/rusefi/io/can/SocketCANIoStream.java | 148 +++++++++++ .../rusefi/io/can/isotp/IsoTpCanDecoder.java | 108 ++++++++ .../rusefi/io/can/isotp/IsoTpConnector.java | 78 ++++++ .../rusefi/io/can/isotp/IsoTpConstants.java | 7 + .../rusefi/io/serial/AbstractIoStream.java | 113 ++++++++ .../com/rusefi/io/serial/RateCounter.java | 23 ++ .../rusefi/io/serial/StreamStatistics.java | 7 + .../rusefi/io/tcp/BinaryProtocolProxy.java | 98 +++++++ .../rusefi/io/tcp/BinaryProtocolServer.java | 153 +++++++++++ .../rusefi/io/tcp/ServerSocketFunction.java | 8 + .../rusefi/io/tcp/ServerSocketReference.java | 25 ++ .../java/com/rusefi/io/tcp/TcpConnector.java | 85 ++++++ .../java/com/rusefi/io/tcp/TcpIoStream.java | 95 +++++++ .../java/com/rusefi/uds/CanConnector.java | 11 + .../java/com/rusefi/ui/StatusConsumer.java | 17 ++ .../main/java/com/rusefi/util/HexBinary.java | 47 ++++ .../src/main/java/etch/util/ByteBuffer.java | 185 +++++++++++++ .../java/etch/util/CircularByteBuffer.java | 97 +++++++ fome_bridge.sh | 9 + .../com/rusefi/config/generated/.gitignore | 5 + .../com/rusefi/config/generated/readme.md | 3 + .../com/rusefi/enums/auto_generated_enums.h | 55 ---- .../com/rusefi/io/can/IsoTpCanDecoder.java | 62 +++-- .../com/rusefi/io/can/IsoTpConnector.java | 20 +- .../com/rusefi/io/can/SocketCANHelper.java | 93 +++++++ .../com/rusefi/io/can/SocketCANIoStream.java | 156 +++++++++++ .../bin/main/com/camick/RXTextUtilities.class | Bin 0 -> 4577 bytes .../bin/main/com/rusefi/BenchTestPane.class | Bin 0 -> 3343 bytes .../bin/main/com/rusefi/CommandControl.class | Bin 0 -> 1173 bytes .../ui/bin/main/com/rusefi/ConsoleUI.class | Bin 0 -> 3520 bytes .../ui/bin/main/com/rusefi/DeviceManager.png | Bin 0 -> 2350 bytes .../main/com/rusefi/FixedCommandControl.class | Bin 0 -> 946 bytes .../main/com/rusefi/KeyStrokeShortcut.class | Bin 0 -> 1142 bytes .../ui/bin/main/com/rusefi/Launcher.class | Bin 0 -> 1647 bytes .../com/rusefi/PerformanceTraceHelper.class | Bin 0 -> 2268 bytes .../SerialPortScanner$AvailableHardware.class | Bin 0 -> 3340 bytes .../rusefi/SerialPortScanner$Listener.class | Bin 0 -> 2576 bytes .../rusefi/SerialPortScanner$PortResult.class | Bin 0 -> 3270 bytes .../SerialPortScanner$SerialPortType.class | Bin 0 -> 2791 bytes .../main/com/rusefi/SerialPortScanner.class | Bin 0 -> 5727 bytes .../bin/main/com/rusefi/SimulatorHelper.class | Bin 0 -> 2239 bytes .../ui/bin/main/com/rusefi/StartupFrame.class | Bin 0 -> 4562 bytes .../ui/bin/main/com/rusefi/appicon.png | Bin 0 -> 3290 bytes .../ui/bin/main/com/rusefi/check_engine.jpg | Bin 0 -> 5844 bytes .../ui/bin/main/com/rusefi/connect48.png | Bin 0 -> 3498 bytes .../ui/bin/main/com/rusefi/download48.jpg | Bin 0 -> 2032 bytes java_console/ui/bin/main/com/rusefi/erase.png | Bin 0 -> 4093 bytes .../ui/bin/main/com/rusefi/fuel_pump.jpg | Bin 0 -> 2273 bytes java_console/ui/bin/main/com/rusefi/help.jpg | Bin 0 -> 942 bytes .../ui/bin/main/com/rusefi/idle_valve.png | Bin 0 -> 8255 bytes java_console/ui/bin/main/com/rusefi/info.png | Bin 0 -> 382 bytes .../ui/bin/main/com/rusefi/injector.png | Bin 0 -> 9580 bytes .../ui/bin/main/com/rusefi/livedocs/gauge.png | Bin 0 -> 5600 bytes .../bin/main/com/rusefi/livedocs/setting.png | Bin 0 -> 7695 bytes .../bin/main/com/rusefi/livedocs/variable.png | Bin 0 -> 1516 bytes java_console/ui/bin/main/com/rusefi/logo.png | Bin 0 -> 9437 bytes .../ui/bin/main/com/rusefi/logo_alphax.png | Bin 0 -> 7826 bytes .../ui/bin/main/com/rusefi/logo_proteus.png | Bin 0 -> 8144 bytes .../com/rusefi/maintenance/DfuFlasher.class | Bin 0 -> 5813 bytes .../com/rusefi/maintenance/ExecHelper.class | Bin 0 -> 2282 bytes .../maintenance/OpenBltFlasher$Chunk.class | Bin 0 -> 1948 bytes .../OpenBltFlasher$ChunkHandler.class | Bin 0 -> 2047 bytes .../OpenBltFlasher$ProgressUpdater.class | Bin 0 -> 2214 bytes .../rusefi/maintenance/OpenBltFlasher.class | Bin 0 -> 4517 bytes .../rusefi/maintenance/OpenbltCallbacks.class | Bin 0 -> 266 bytes .../rusefi/maintenance/ProgramSelector.class | Bin 0 -> 8077 bytes .../maintenance/UpdateStatusWindow.class | Bin 0 -> 1535 bytes .../ui/bin/main/com/rusefi/radiator_fan.jpg | Bin 0 -> 3261 bytes .../ui/bin/main/com/rusefi/sdinfo.jpg | Bin 0 -> 875 bytes .../ui/bin/main/com/rusefi/solenoid.jpg | Bin 0 -> 2732 bytes java_console/ui/bin/main/com/rusefi/spark.jpg | Bin 0 -> 2966 bytes java_console/ui/bin/main/com/rusefi/stop.jpg | Bin 0 -> 907 bytes .../tools/ConsoleTools$ConsoleTool.class | Bin 0 -> 1641 bytes .../main/com/rusefi/tools/ConsoleTools.class | Bin 0 -> 3993 bytes .../ui/bin/main/com/rusefi/trigger.jpg | Bin 0 -> 911 bytes .../trigger/TriggerImage$TriggerPanel.class | Bin 0 -> 3476 bytes .../com/rusefi/trigger/TriggerImage.class | Bin 0 -> 7167 bytes .../trigger/WaveState$trigger_value_e.class | Bin 0 -> 960 bytes .../main/com/rusefi/trigger/WaveState.class | Bin 0 -> 1617 bytes .../main/com/rusefi/ui/FrameHelper$1.class | Bin 0 -> 2412 bytes .../bin/main/com/rusefi/ui/FrameHelper.class | Bin 0 -> 1606 bytes .../main/com/rusefi/ui/LogSizeControl.class | Bin 0 -> 1014 bytes .../bin/main/com/rusefi/ui/MessagesPane.class | Bin 0 -> 1864 bytes .../main/com/rusefi/ui/MessagesPanel.class | Bin 0 -> 2033 bytes .../com/rusefi/ui/MessagesView$Listener.class | Bin 0 -> 1285 bytes .../bin/main/com/rusefi/ui/MessagesView.class | Bin 0 -> 2725 bytes .../com/rusefi/ui/RecentCommands$Entry.class | Bin 0 -> 2514 bytes .../main/com/rusefi/ui/RecentCommands.class | Bin 0 -> 4866 bytes .../ui/bin/main/com/rusefi/ui/RpmLabel.class | Bin 0 -> 1963 bytes .../com/rusefi/ui/RpmModel$RpmListener.class | Bin 0 -> 267 bytes .../ui/bin/main/com/rusefi/ui/RpmModel.class | Bin 0 -> 1739 bytes .../bin/main/com/rusefi/ui/StatusWindow.class | Bin 0 -> 2071 bytes .../ui/bin/main/com/rusefi/ui/UIContext.class | Bin 0 -> 1419 bytes .../bin/main/com/rusefi/ui/WarningPanel.class | Bin 0 -> 1627 bytes .../rusefi/ui/config/BaseConfigField.class | Bin 0 -> 2949 bytes .../com/rusefi/ui/config/ConfigUiField.class | Bin 0 -> 2826 bytes .../com/rusefi/ui/console/MainFrame.class | Bin 0 -> 4842 bytes .../com/rusefi/ui/console/TabbedPanel.class | Bin 0 -> 1143 bytes .../com/rusefi/ui/engine/ChannelNaming.class | Bin 0 -> 1190 bytes ...ineSnifferPanel$ImageOrderComparator.class | Bin 0 -> 2989 bytes .../rusefi/ui/engine/EngineSnifferPanel.class | Bin 0 -> 5638 bytes .../ui/engine/EngineSnifferStatusPanel.class | Bin 0 -> 2055 bytes .../main/com/rusefi/ui/engine/NameUtil.class | Bin 0 -> 1039 bytes .../com/rusefi/ui/engine/UpDownImage.class | Bin 0 -> 10837 bytes .../ZoomControl$ZoomControlListener.class | Bin 0 -> 835 bytes .../com/rusefi/ui/engine/ZoomControl.class | Bin 0 -> 1929 bytes .../rusefi/ui/lua/DocumentSizeFilter.class | Bin 0 -> 1564 bytes .../com/rusefi/ui/lua/LuaScriptPanel.class | Bin 0 -> 3012 bytes .../main/com/rusefi/ui/lua/TextEditor$1.class | Bin 0 -> 958 bytes .../main/com/rusefi/ui/lua/TextEditor$2.class | Bin 0 -> 958 bytes .../main/com/rusefi/ui/lua/TextEditor.class | Bin 0 -> 4065 bytes .../ui/util/DefaultExceptionHandler.class | Bin 0 -> 1548 bytes .../com/rusefi/ui/util/HorizontalLine.class | Bin 0 -> 973 bytes .../rusefi/ui/util/JTextFieldWithWidth.class | Bin 0 -> 953 bytes .../rusefi/ui/util/JustOneInstance$1.class | Bin 0 -> 876 bytes .../com/rusefi/ui/util/JustOneInstance.class | Bin 0 -> 1670 bytes .../rusefi/ui/util/LocalizedMessages.class | Bin 0 -> 1444 bytes .../main/com/rusefi/ui/util/URLLabel$1.class | Bin 0 -> 914 bytes .../main/com/rusefi/ui/util/URLLabel$2.class | Bin 0 -> 722 bytes .../main/com/rusefi/ui/util/URLLabel.class | Bin 0 -> 3239 bytes .../main/com/rusefi/ui/util/UiUtils$1.class | Bin 0 -> 1197 bytes .../main/com/rusefi/ui/util/UiUtils$2.class | Bin 0 -> 849 bytes ...ls$DynamicForResourcesURLClassLoader.class | Bin 0 -> 1195 bytes .../bin/main/com/rusefi/ui/util/UiUtils.class | Bin 0 -> 10267 bytes .../com/rusefi/ui/widgets/AnyCommand$1.class | Bin 0 -> 750 bytes .../ui/widgets/AnyCommand$Listener.class | Bin 0 -> 254 bytes .../com/rusefi/ui/widgets/AnyCommand.class | Bin 0 -> 3909 bytes java_console/ui/bin/main/com/rusefi/undo.jpg | Bin 0 -> 975 bytes .../ui/bin/main/com/rusefi/upload48.png | Bin 0 -> 12553 bytes .../ui/bin/main/com/rusefi/writeconfig.jpg | Bin 0 -> 1097 bytes .../ui/bin/main/com/rusefi/writeconfig48.jpg | Bin 0 -> 1836 bytes .../org/putgemin/VerticalFlowLayout.class | Bin 0 -> 6913 bytes .../test/com/rusefi/ui/LuaFormatterTest.class | Bin 0 -> 1976 bytes .../rusefi/ui/engine/test/UpDownSandbox.class | Bin 0 -> 1675 bytes .../ui/test/EngineSnifferPanelTest.class | Bin 0 -> 607 bytes .../com/rusefi/ui/test/WavePanelSandbox.class | Bin 0 -> 1781 bytes .../java/com/rusefi/SerialPortScanner.java | 44 +++- .../maintenance/UpdateStatusWindow.java | 2 +- .../main/java/com/rusefi/ui/StatusWindow.java | 6 +- .../com/rusefi/trigger/TriggerSignal.class | Bin 0 -> 1424 bytes .../rusefi/trigger/TriggerSignalReader.class | Bin 0 -> 2679 bytes .../TriggerWheelInfo$TriggerGaps.class | Bin 0 -> 1213 bytes ...erWheelInfo$TriggerWheelInfoConsumer.class | Bin 0 -> 336 bytes .../com/rusefi/trigger/TriggerWheelInfo.class | Bin 0 -> 9787 bytes 180 files changed, 4055 insertions(+), 83 deletions(-) create mode 100755 build-bridge.sh create mode 100644 current_bridge_output/fome-can-bridge.jar create mode 100644 fome-can-bridge/README.md create mode 100644 fome-can-bridge/build.gradle create mode 100644 fome-can-bridge/gradle/wrapper/gradle-wrapper.jar create mode 100644 fome-can-bridge/gradle/wrapper/gradle-wrapper.properties create mode 100755 fome-can-bridge/gradlew create mode 100644 fome-can-bridge/settings.gradle create mode 100644 fome-can-bridge/src/main/java/com/devexperts/logging/DefaultLogging.java create mode 100644 fome-can-bridge/src/main/java/com/devexperts/logging/FileLogger.java create mode 100644 fome-can-bridge/src/main/java/com/devexperts/logging/LogFormatter.java create mode 100644 fome-can-bridge/src/main/java/com/devexperts/logging/Logging.java create mode 100644 fome-can-bridge/src/main/java/com/devexperts/logging/ThreadNameFormatter.java create mode 100644 fome-can-bridge/src/main/java/com/devexperts/logging/TraceLogging.java create mode 100644 fome-can-bridge/src/main/java/com/devexperts/util/TimeUtil.java create mode 100644 fome-can-bridge/src/main/java/com/fome/canbridge/Main.java create mode 100644 fome-can-bridge/src/main/java/com/fome/canbridge/view/BridgeGui.java create mode 100644 fome-can-bridge/src/main/java/com/opensr5/io/DataListener.java create mode 100644 fome-can-bridge/src/main/java/com/opensr5/io/WriteStream.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/CompatibleFunction.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/Listener.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/NamedThreadFactory.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/Timeouts.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IncomingDataBuffer.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IoHelper.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/config/generated/Integration.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/config/generated/VariableRegistryValues.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/config/generated/readme.md create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/ByteReader.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/IoStream.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/HexUtil.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/SlCanIoStream.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANHelper.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANIoStream.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpCanDecoder.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConnector.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConstants.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/serial/AbstractIoStream.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/serial/RateCounter.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/serial/StreamStatistics.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketFunction.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketReference.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpConnector.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpIoStream.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/uds/CanConnector.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/ui/StatusConsumer.java create mode 100644 fome-can-bridge/src/main/java/com/rusefi/util/HexBinary.java create mode 100644 fome-can-bridge/src/main/java/etch/util/ByteBuffer.java create mode 100644 fome-can-bridge/src/main/java/etch/util/CircularByteBuffer.java create mode 100644 fome_bridge.sh create mode 100644 java_console/generated/bin/main/com/rusefi/config/generated/.gitignore create mode 100644 java_console/generated/bin/main/com/rusefi/config/generated/readme.md delete mode 100644 java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.h create mode 100644 java_console/io/src/main/java/com/rusefi/io/can/SocketCANHelper.java create mode 100644 java_console/io/src/main/java/com/rusefi/io/can/SocketCANIoStream.java create mode 100644 java_console/ui/bin/main/com/camick/RXTextUtilities.class create mode 100644 java_console/ui/bin/main/com/rusefi/BenchTestPane.class create mode 100644 java_console/ui/bin/main/com/rusefi/CommandControl.class create mode 100644 java_console/ui/bin/main/com/rusefi/ConsoleUI.class create mode 100644 java_console/ui/bin/main/com/rusefi/DeviceManager.png create mode 100644 java_console/ui/bin/main/com/rusefi/FixedCommandControl.class create mode 100644 java_console/ui/bin/main/com/rusefi/KeyStrokeShortcut.class create mode 100644 java_console/ui/bin/main/com/rusefi/Launcher.class create mode 100644 java_console/ui/bin/main/com/rusefi/PerformanceTraceHelper.class create mode 100644 java_console/ui/bin/main/com/rusefi/SerialPortScanner$AvailableHardware.class create mode 100644 java_console/ui/bin/main/com/rusefi/SerialPortScanner$Listener.class create mode 100644 java_console/ui/bin/main/com/rusefi/SerialPortScanner$PortResult.class create mode 100644 java_console/ui/bin/main/com/rusefi/SerialPortScanner$SerialPortType.class create mode 100644 java_console/ui/bin/main/com/rusefi/SerialPortScanner.class create mode 100644 java_console/ui/bin/main/com/rusefi/SimulatorHelper.class create mode 100644 java_console/ui/bin/main/com/rusefi/StartupFrame.class create mode 100644 java_console/ui/bin/main/com/rusefi/appicon.png create mode 100644 java_console/ui/bin/main/com/rusefi/check_engine.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/connect48.png create mode 100644 java_console/ui/bin/main/com/rusefi/download48.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/erase.png create mode 100644 java_console/ui/bin/main/com/rusefi/fuel_pump.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/help.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/idle_valve.png create mode 100644 java_console/ui/bin/main/com/rusefi/info.png create mode 100644 java_console/ui/bin/main/com/rusefi/injector.png create mode 100644 java_console/ui/bin/main/com/rusefi/livedocs/gauge.png create mode 100644 java_console/ui/bin/main/com/rusefi/livedocs/setting.png create mode 100644 java_console/ui/bin/main/com/rusefi/livedocs/variable.png create mode 100644 java_console/ui/bin/main/com/rusefi/logo.png create mode 100644 java_console/ui/bin/main/com/rusefi/logo_alphax.png create mode 100644 java_console/ui/bin/main/com/rusefi/logo_proteus.png create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/DfuFlasher.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/ExecHelper.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/OpenBltFlasher$Chunk.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/OpenBltFlasher$ChunkHandler.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/OpenBltFlasher$ProgressUpdater.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/OpenBltFlasher.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/OpenbltCallbacks.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/ProgramSelector.class create mode 100644 java_console/ui/bin/main/com/rusefi/maintenance/UpdateStatusWindow.class create mode 100644 java_console/ui/bin/main/com/rusefi/radiator_fan.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/sdinfo.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/solenoid.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/spark.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/stop.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/tools/ConsoleTools$ConsoleTool.class create mode 100644 java_console/ui/bin/main/com/rusefi/tools/ConsoleTools.class create mode 100644 java_console/ui/bin/main/com/rusefi/trigger.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/trigger/TriggerImage$TriggerPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/trigger/TriggerImage.class create mode 100644 java_console/ui/bin/main/com/rusefi/trigger/WaveState$trigger_value_e.class create mode 100644 java_console/ui/bin/main/com/rusefi/trigger/WaveState.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/FrameHelper$1.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/FrameHelper.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/LogSizeControl.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/MessagesPane.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/MessagesPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/MessagesView$Listener.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/MessagesView.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/RecentCommands$Entry.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/RecentCommands.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/RpmLabel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/RpmModel$RpmListener.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/RpmModel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/StatusWindow.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/UIContext.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/WarningPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/config/BaseConfigField.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/config/ConfigUiField.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/console/MainFrame.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/console/TabbedPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/ChannelNaming.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferPanel$ImageOrderComparator.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferStatusPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/NameUtil.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/UpDownImage.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/ZoomControl$ZoomControlListener.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/engine/ZoomControl.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/lua/DocumentSizeFilter.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/lua/LuaScriptPanel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor$1.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor$2.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/DefaultExceptionHandler.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/HorizontalLine.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/JTextFieldWithWidth.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/JustOneInstance$1.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/JustOneInstance.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/LocalizedMessages.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/URLLabel$1.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/URLLabel$2.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/URLLabel.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$1.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$2.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$DynamicForResourcesURLClassLoader.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/util/UiUtils.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand$1.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand$Listener.class create mode 100644 java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand.class create mode 100644 java_console/ui/bin/main/com/rusefi/undo.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/upload48.png create mode 100644 java_console/ui/bin/main/com/rusefi/writeconfig.jpg create mode 100644 java_console/ui/bin/main/com/rusefi/writeconfig48.jpg create mode 100644 java_console/ui/bin/main/org/putgemin/VerticalFlowLayout.class create mode 100644 java_console/ui/bin/test/com/rusefi/ui/LuaFormatterTest.class create mode 100644 java_console/ui/bin/test/com/rusefi/ui/engine/test/UpDownSandbox.class create mode 100644 java_console/ui/bin/test/com/rusefi/ui/test/EngineSnifferPanelTest.class create mode 100644 java_console/ui/bin/test/com/rusefi/ui/test/WavePanelSandbox.class create mode 100644 java_tools/trigger/bin/main/com/rusefi/trigger/TriggerSignal.class create mode 100644 java_tools/trigger/bin/main/com/rusefi/trigger/TriggerSignalReader.class create mode 100644 java_tools/trigger/bin/main/com/rusefi/trigger/TriggerWheelInfo$TriggerGaps.class create mode 100644 java_tools/trigger/bin/main/com/rusefi/trigger/TriggerWheelInfo$TriggerWheelInfoConsumer.class create mode 100644 java_tools/trigger/bin/main/com/rusefi/trigger/TriggerWheelInfo.class diff --git a/.gitignore b/.gitignore index 812329a46a..02e68c5554 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,21 @@ Icon Network Trash Folder Temporary Items .apdisk +<<<<<<< Updated upstream +.gradle/ +======= + +# Auto-generated files +firmware/config/boards/**/generated_ts_name_by_pin.cpp +*_generated.h +auto_generated_*.h +firmware/fome_generated.mk +firmware/tunerstudio/generated/*.ini +firmware/generated/.gitignore +java_console/generated/ +fome-can-bridge/src/main/java/com/rusefi/config/generated/FuelComputer.java +fome-can-bridge/src/main/java/com/rusefi/config/generated/IgnitionState.java +fome-can-bridge/src/main/java/com/rusefi/config/generated/readme.md +firmware/generated/ +/firmware/ext +>>>>>>> Stashed changes diff --git a/.vscode/settings.json b/.vscode/settings.json index a57705b48d..0bbe17d899 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -32,4 +32,5 @@ "editor.formatOnSave": true }, "C_Cpp.clang_format_style": "file", + "java.compile.nullAnalysis.mode": "automatic", } diff --git a/build-bridge.sh b/build-bridge.sh new file mode 100755 index 0000000000..12189fc7e7 --- /dev/null +++ b/build-bridge.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BRIDGE_DIR="$SCRIPT_DIR/fome-can-bridge" +OUTPUT_DIR="$SCRIPT_DIR/current_bridge_output" + +echo "Building FOME CAN Bridge..." +java -version + +cd "$BRIDGE_DIR" +./gradlew shadowJar + +[ -d "$OUTPUT_DIR" ] || mkdir -p "$OUTPUT_DIR" + +JAR_PATH="$OUTPUT_DIR/fome-can-bridge.jar" + +if [ -f "$JAR_PATH" ]; then + echo "Build successful!" + echo "Artifact: $JAR_PATH" + ls -lh "$JAR_PATH" +else + echo "ERROR: Bridge JAR not found at $JAR_PATH!" + exit 1 +fi diff --git a/current_bridge_output/fome-can-bridge.jar b/current_bridge_output/fome-can-bridge.jar new file mode 100644 index 0000000000000000000000000000000000000000..27fa17e6a9680e5d785e8857f513dbe836cc34bd GIT binary patch literal 613577 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%0DGrdxU34OJej3PbkWF!67fhuKSY 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

(l~8Rc|~GqxD4#|X%TeC`d}QiBDTLfk8*r4 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 z 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¨iPm*jC|%kV5esLky19k_5&Fwm&2X;Qp$nI^7$!WLEatrZvWW4GYO zm#z67yd_x+vq^d%+Rmicnc|z_P2VMKb9NVl_oRrX8URUIyuqYBV9ruKIR~W_c}kKu zr)+tmJQ38zn-f|N%C##kavTO9-y#Q=^lY4nUwbGZ{v?7d$HCo5qMcIC#;o+HvLX(B zE8t?MqGP^zaieX_?fQluD^oCTE~Id!M3CS4D!2ZaQ zqhJ6sZH-_`$!hEo{Z~|9BKjH|ZZmQiNk5E!FXSs%AR)7=I3x>9(pi1)k)PI0E5M863>Dv*!=+*$q>C zu2n3nw~Lu>ysTnonYcrxe}I1=JY?#P<&;BD%V6ef?#E}i6*G=re8O(#%kqN%U%g6eJ`tvVk^0e1i!_!_La*KAwfpafuQ~}+t z;Kaqs|HLzjVJ`g~aDe4~aC;(}!EG?N7o0Q*?lQpe5*t^X&6pikZSP{^z?ouZ9PfzE zZ5Lb5ZKtAho3GBl9oNL2S62JCqYJ?4Qx3>S0Z|uv$sP z8Rt=Cajobtw}?4kE&sZGh^IZS-!ojlYlrKmpT(sPS_gy4&KBsp>|dyW`N#y%v8*p! z@d~fGt-j2WbQU%&l@=~>$$OlI7am=@(BqO1xjR+LhYK%GUbxiflIvWZ_K?as zVb&QCGoq;4TWe0=Z2tnO{8u+|0_r z>>mR8*Q9$zfAU0VR(1L-&4U^ysDdlNPlpoYLU9I8N*gyX&d5pq$1THKZ+>(0HCT?? zSM?EL$}|wMqVU)96`i2E0c!Szn(m@QQm?`joX~({CCua2Vy+o-uV;Y6i_7LfemxL# z+LcqcHWf((`jDR7CLk#=TM>4iN+6U*s8j`&oWjl%-B&EF;Ggcp7*@gm8lX7hz|IqW zR!qZN-xXd!W~dR%PTIvzV4(7?U=gjUabx3rBV~Rj)bLkYD)`9&;D?MZyA^wYcfym@ z&0lG+;D-Z<(_w%g3J}}i&SC~`AL>9hZ=J}a?3UxZ@UUL`%a5psw(r1(LFt@5n03Q= zkXJtHl@EFRO;+L8%P>p3Hx-8n*djTxNd{%F}Rk&RRGr}xYFPX!BqoS9$fWsy$M$X zT-F&J=Y~6-2Pzk~B`ykBU}c{u!VR8W!q$mKNOF}pjOD`C#1c#S_rep#?}ZIq`Jzo; z*(hwAVu3Q`<;s5!e9^8hjC7{iiKqbEWH5IHwji(;;Wdk*`roL;;WFj852X8SOX~` zNU6b;dQ55X{RdHc{Pi1zw6aK&PM628SQ$}fsqdng_PaQvv_lKN^H5Wel08AQ1<)Bm z?8F8v10q^Z-!(}Gdeed4l%hmb+IDoO1KsIu=}rf_(_7IE)p5@nazc<3OaCjvTTS6C zP(G4BkEsbp7X`f#~Skb07PhCHvN=DS$HJ7K-=z9w>YV6e++B=q?1|${f zLUuL~J1wBXi6|M6i;UdY_FpS|B5Xb6*;2OB6%|cUo5YH|A4eeb~;SxxNbvy_O;CHGg7Htv(_go0v)4V8f z&yOYdsO9+lL*Slk;AP#@hzW52K5)-f1lf7Vz&#fO_gsPU*CEe}*P=k4r6ey=&!=Zh z7xBJmQ+Zoo!il>&S5#Z!B@>rC7zubcN^f~g|rMQ!%!wyifEe+D8_0Y(z*a&_mioXdU z-(%p&pBBJt!Z&9+bIjAtV__WaD_YrooxVm&fu@&eU(-UjdLDjM0e#;LH%5CfR2a0? z{m0CK!;WDwGkNjJuXKZznDidL_!QLNs}G#P$5uz(W|!ZHFGIWCkS`~`@0c%T-?!mQ z&u$&_#oA5di_lHy3*SxS%NLzBz6k#h_;T&vZTV8%75MVtyRG>0%db1&3t|Z-Plw|4 zRjhDdT;sEEKFvoQeev9&f6#qhV>U6{#&?|eX&<1W9gF!EQ4Z(I*DO}Q z3-s#zH_B61bhylmgyMSi+T@iYI~^EUo0^rADfn^AU%oDyRM~aa?9FKsp86;58n~`n z@WKBI1yZkCIicuT1|}J#o{*hHZ@GI+AA97_)SBYZ>UHa-!gU<2AJRnsxW{o9RJs{@ z`Y?ue?)ZwF~;*$oE~v4?MW!T*&-X z`lh9D?!=Ui=Ol!!U60@wP>o6U3;--%bx@Q zd$nR2FvKpoU?7SQNm*`~nM|RHva8%I<}@s~BLwS;h7~=aymex>tK91A1Yi<^Nib8W zWv-k(%PZjzxVKOQV|`Fw8WianoD8$aXU@Q#q6=%hW5_jq>{M&i3b|X(72&DJfl}(O zH~3(x!z0hi@W_v4dE^xUpJHF6a6YJicTYJ5i+AM+NQ3gVH5wD^sYvW0Udil&kwN9( zKdP!838Z@e!dF3xqv1s@4mVhc2^dCWI)12Jbj;U9nFCmr6YvL${ysS-T%*M%tCb`RY@q8#^;)(4SNo0W+Sob| z)+JIe(Z4G}3_26U^qNx3m?Wz&5o}FSmG2^~?E8dZ@uuTYZP&hIA(3t(ZkbmqSww3& z?!SE-9gCfV1`a4X{l|-YVG2)(^cJ>;Jlp?^5=9ng7rvP$yj>%zWu*p?k$U`CWSL@z zobr8M`3p~AmcFN3YXg;y9yXM|9UCvCQKX=vH*Nx*Mwq~X~dwBtcu z1(`w9Rpkjx+O8yQU^~RP1^P6FT*#g}vPPM}oXqv=Lm2kKO-m2^h9c-kwU7qSi-ZmF%1DzDR)`H=;hlAy z#EWu6q^n2%)PtvWudBAr-l-9N2y82?S;Ig0$syD0Vx+&GMT z8IZ?6nbh&##{8t8*xR^~4u~5;-eEl2-eYwm7A|$ATG<{!rAqrG!Q=}TGe=*_JZ)j` zDOp+$hK2#&!E6kFlx2U8*+(G_>wb;-Mwb5>%RhwqJG6YPv%|#lt62UX%zs(S{}S`f z?em}1@)0Kmw;{ibUNH`6on#UHO{(OJ zEX|eQ{UK`!aQhIx+qoT&vZ=PGA|_4bef?EiY6PQ(Gko1>I>$p0w)w0;#N?5WqyBcr zvGZ&!BK(n?L96u#l>7wR*mi$|>VM2PT=ZAKMD(LjypV-A*tz#5`0}QNJ2Y$QwO_mT z-B7?4`QoSi13PrkC11#uPvDt-1vvPxmsJ(iy<_RgS(Gb)fz)PX5aZ?r zotswTW}{+4We90CW{dt$%t&@IzV;9OeZ#_YY;dG09`+qJ+g_|A^G{nCqLILhout+$ zCZr!M-GfKJ4&w&zV}R6?Sugfck+GVM zXC98{OdQX7(V^7rP<#2MvqYKS%FXy8-O=B@sHzPf;hle9#|}%$^uk3>nJBnEiLCI* z?_Ouz7F(qCQzcefS1PfLrk&vbDw?#4@|VagE8_HQe41Lw3`P1f4qtCAug{+~(e!k~ zV{1R-w}M=rrnfV$cwsf1QzI0;MoKv>33{k&>CA z@(iQ5yEZ0!^&>64pbYy)EbVjMKsMM$FIYDa_*x^rx`J=>R~gAR?l$67p&Y|)9Hw&Q zTpUwS4XWuB=4W(pE5dId$+dq|rOkNWhz2LyY(^3mM@e{qkub}s%}7dq3l%+)ihKpX z@`hCW9}qz@r5W^QXs^4mWkNHv77cJylq=E31Z+$>i_g_<8euE^8}%zAmbV`n^p3q_ zVDpwin<|yHEo}|Kw$@TxUi@HQHSJwt7xCl)27(Yw&281k|qx_w9MCC7|O1Q@*jkfT(i!I@*jW_WW6?GL5W}W zlQ>UsEpz;Sj&L4;o08uKXMQW3-8#S-dye>X!2D<2L~RCqFK{hx!c&O5xe0O8Y1}S| zyP4MBhk*%4BApmu+i^;7Att)h(b)+nO_WoxvCr}QJhaJ+&ECOj-iH!sX|FrB7x)@w z`4c+Zi%l}XHoT?DHgA975*(&fTVEp{dKy>U6V}5qXAj8#+(El^nY+Fh|Am5KK^=tE zL-sUnhb*HfTE|XeaTUya{$^Ez;l6glq%A{W85`t>VUe6VUtQ~0Z)5f+3eVxDYi?#J z7vmcbvyTg=DK+~{7_`7Vt(NxwF`erQ+?Sf-f^t?*MVX!dU9X5mE3>JkFvE|}xMpN~ zH+#bKx*53+*L;(^wOT*5Uc0rd)o!>pi*H?@#Z(T;$vFm|Q{I9_OY1c;GOY_R=)oSy zph}5Xc6Zf|uC(BllYiuR4mq1i(}vO&k6I=x9L-9Zhm`3*l7|5@5ahcOCY-Ba-SH$t zrkz#6HFP(Q*5$Bjp$*jT-Hcq!d30UQ{o_gjxk?kvld5fZy@`{PS3{EApgeyKJVIU3 zlW|^C>uDB_Ox?K}um`6E6dQ7ZO@(IpK%_hLpNOqd{spz=1CVY}Z52>2BB-{HsQzA& z_O_7hU0twxMF%lZ;#n}c3>JaP!(hk*{7Kae^Oj0+i9TpIY`DXzOuB}w_Qfl>tsOZP z8=H`m-@-b;&Ll+w9RB22;8|@Gm&iN@$i~?yKqdy0{s7mWofsNY@(8umMdj~=Y_;5f z)v)~VWK7<^v}1Ej&EN|;TL9mlP1tqu7mGhm3^1Vs)*5p}QD zP^D@shjME2*N_S$emoioX~Fqg3(jX4PEh0g>*kKvkKi3H_HwC;%!=Tf0cfS9UusoU^o{aK1(5RC)zh?g~!3Q1k+zEf~WIMH>Nd{4GO3a8-JPchgEZO` zbQ+v$NDRamWO2TCQDAcED~Iu=mZB=Dk4Sll{1(*2-IFY)NMHDCjPxj2W8r*OfDMsE zAl48u!(XFzJUsSSCj={`mVGa5FqH2rxi8f^t)-Vov6osGiw;Rz>=1*;S;{B$5kc*E zSQ{Q?UKa6C_fcHMh`@v3bUeT|3nSUzjAu#-f{={sP%&UBooXov8w;8ZqHyPRa0M*r z8SfSYCb6-ucj$6Ws;Oj>B@*u_`6VfSIsOy?@G;bXCA|kDU5cN+;8#9yIRD{8|dXO zJ?tuZFm*I^=E*qc7K5j;&ZAa|+xKfzjHj_)Ec?b(x+_#~3?^BPRjwgr&Vo>eyTpLM z>QQ{iSA%C3;-Qjrw_zB5plGy5KIl#_Lk3(*VGIDbDGOuigAUM%TJ}p5QCg2*iKX=r z(mKjja!*@YySPA-M*W{shZK!!p=d!Hihj30N)Z?Z8=kZc7-(9<=VEvc+yfF~$PD?f z7+gVz*(ta}0cR2`vd^EO66EynQN^HhrVIC%tlj|s2P>W`nWL^3O79d9pHay<)eqb8C)g?l5fS*CHzb)dl3rh3i>@M7zO-<*ZV6%HzC{F{tS;3e7zu_qnEsh zKL-K=?ndkmaX~HU+!29#sXUa!v5%q2m4P)@)W}}Ns+20GH^{Z6=FTMsQ7sew-xz!s zBZ7Z{m5U^Z{`nTpKcD@kM;jZ0zZnrs{uSU3C*W(E|Ccu9mpy*QrjQMgkLscp7=b-= zM=eZqXRt6OV_Gasp801i3?3;XtBKap)IrZ$`8>NatH6S^vMgXu5?jm(itWE`v6e)y z-=ZBL1hhH>yU|S%7Dw%dMhAIRdUd_+&z=6JgjECl*{amTm1Ee@#j_v;dQoN(tOnq+ zG18sh2#WAKO&t3M%$TdpM#k7Pbb$54S@Y!F%I*03X8qlD11mwXUr6S;kMQTMME}AN z{;A;txs?=U#@KX0)&!yW830Q23QzYz6Y4}GRL*mnO0?-r8UZXKT`(r*bF~k zCh#+5!0A*jv@cWeqy-8c-H;~w$8f$*!iV=-ls!-^(o^(jbG`(ym}o8|VBWeamyB)f zpl065R60u0wQ^-SEgK#HX_!v+`=N0y!FPo4(@ZfYR=EjxEl1E~lYBIR=bXVjtMc$@ zW+OX8;yKV-N6Bh14;J=@u(DEXUOyJtE;hhAgJf)Y1ne@{;CW*92v~uLp!JdaU><{6 zEK&HdMmdXCX%cIFmfrfAQ7snwEwmXow9t&6GsMmgOmo}$kI@CwUh{?rVNnBgVHZ=w+3!n%miFwk*v~U>ufmP-3Lf zjPRZojfbyga@y%+31lZ8&l*OInN_&RPE<|e0+Sfjg1Z2d!PLzK48Z@XxCx*%9>%UrO+m9a8Hzyx zu#ZP#36S}T@jTa9^QM7TcgcC*3a-ve;Q-?_Q2d7#y3C5{fLD-I|Zvb6?4MB zNup1GI(Ohq?cC1w!9&z%>EjSZDHdFBek<1$p2TlMxa7<1QxJjtC!E4_pA5p!L%0WC z2)I|txvSj8-#X>puE68(3+^&kz_$&JfxO!}FyzcB6N>i5Ls=>U*^t$Tvc_>;u%Wjh za~#(d!Pn#QtlgQ;EAE&1#XLqM%EG3DO5?%Cnt_#<%M8>*p=cWh@a#}y3%-u=27WvC z*$cXVuu=05HY$feLxnW=MwoQ*rA1)4oc{!n;S$_Fp!l*-wAG-0`a&rFr$ImHpP_6X zfG4DZOIy|;Mux6jL&ttW50V#A@)Gn+g83Wi#R6px`6>J}W}0$q(Z!fvkmZ!JnL{;I zc@+9wur^gR2}Mg)RV`R;F#uJY4)~x z$|C4%B$0iK>otJi$I&ak3G;m7mZ7W*g$+bjZ7Yt1n)NQ&PF%t>*m@^SS7STzax=ZQ zwCj@gx`c9?`iN*h1aDMM-e-cbDT9Fl%@d07M?&SYGR4du55i;dUZJ>(*9S=X;XKyY z*cPQ`WR#lRja%%DkU7mQOm?);7f;E)jV^iN6XBEejZRbX?HIm=NtyC* zJ9?M+3oiJ$#ejq~Dlh1%_*fh1h6qxl2%yKl9y)@@VvC;DQ}ZcxZE6NlA2ADQ>)rq) zLJ^&J(h;ErSR?Zf8}Vb1AmP{zZ;)>|VB)Zoh{<1%ufX8%-g0B-NjLS+uf~r^QeTx6 zTTIgxkrDm#pP|w9FWkr}SG%K!T5XbggB)fV)^`)O;?GMKo#c1CJ@c3+ zyKkzLCuW0xCXH|8AA#0Us(m9#f;K8!zGYUeb$bn$qjH5}dIBCJopkdC1QafO2D$8& zPl*2AHujCkcQX=-&5q|p$ z6VJ$4Ho1g2ZCbr+C>}Vjr;VMGnU=zN+Bz>K0*mrf)FEj3;22zRWPnU>Yh|9&4J4sL zQ6yG2P)flp+0rkP2EV9G|CW@uu?^*iFKL6p1bFBomVB)x8Lfj?8>|fFuN{})cPVyE zGa^G#^t#0Bj>5 z0qU&P5GePw9+xve;3G7@AEu}+_^#PToEFwZIvUd*KeVD{utv+tA6lXO9Xw)R`?k`` z&ZK2jU^x_kwGak}q2)5A8|g}S<;We(E2BcWP$+VXvg;0A1$vVTbjRNnB{eufYET(~ zXPI9SMP|{E?Y}Dq8OM; zl5Q#0LDm;vuF*8np*#W32KWtYQBGCgZQ8WH7=0CHAHY{xa}URbQ_ZYMl2&9Hu=2|t z+&q>#pHg$md^1TsH!8RFVFrvDm@R9x5psOrBD))7W%umGXojuRdDQ7@a(&W)Vc|DT zOna`uq@EM<7|elJ&WYT5uT*XO(vCfC&&vy|Leu zgMRLss{TWTKfW=L1I-a)Nk?3JwqwN8S|OJC7q1}w@r?f8BmE)yNa4v4?kHVx2+xI} zZ5V$AZ4Qp$KxiN`C9_KVoZNF|nIV)aE5e~@AF*TtmbBw>Xe#9{J{?;EiETWm5j*4t z#Qyz!Yc5>IS@=Y=S(}9c#m72|vu8R+v7i+SaO15jhC#hQ>h<2fLA`Xn9z5US4gN8; zffhLx9(k6-DWt7vfIn;MW6yiiFJ{R6oy{6U{q+W13*Ju8=IHY+^lXYg_n>DX`W#2k zU8B#Jn=~t^J)ePRbb#m)o{uzX0;uKhhUY=ZpK_VsNihEMZ@c}yY!2h-6g`)^=y6+r ze-0Otk)^mKU5HWjdEhsc02U`K@TLCXM^Hc^F_o=ON4hXPK=FeaAjpwaR=}!+2eJZP zN;~84mZDGwtRCEBm==((Hzoct9$XNLSI<`p#0V;lD} zzlX|LqIGsQV*l;Li?;w~8LfGd7Zb7nkTjMtqu@yktiMzmbw0n5+1R4<6efN^C^`cG z$fG&)a-<8aZsfg6_P1n?hfq*9~S0zDrPTyI5iEOMUqZYZc=8j4+eaUc+$bKZZfRz0eJri&;INLDUnl{m zrvZ@8J4b~57OUh`_BQE9ax90sH z=SAZ{fSu2|Our3MkTp{%`b1~WZ?tv4UDb@b5dUN=B3=k}&osGsjEjXil1M4on z(NIHe#KS|uy6uMbFL|@aOA9qxVEJKX(v}m)omlWa^YfX9K zo0zsE!j@Uer^od*gS$oxWdSu;TDTHoTnQ=T!^9Q*sUGDk?M<9z9(<#Fmfa(-Nb|^R zGPJ2;w!SAW^L@W(KdU3#h95UkybvRVyNpbjdl2!-$1Z}(WOGu!@FDG129m2T;sKcq zDZ}41QtIk&8toH}Y{6O(;M%r|nTYx15)XMA8DNzMSmN)09MtfG)m^reYo8*D&y;letU zRsUWUzj_!*j)#J~-5Jn}yEiNpivDWEZzfL?o}N#Ddp%gS$?M1Xn>_1>`kU@rf3v?S zS15L|pGx>E6Yv^k3fhZ8miTK(1RW3BoEt55-?XNK7pUi-P((>`JoGDPA>Ofy<2z&H)()Yq3CS_CU1Ds-*o4?$3U^B z_?uFt{{GMhV26c`7m1m+6rIF3z-WX|7?@BhpU{ggwuipf7x(qb$gfE2!e!VEmHk8j zG<~+g%n~ zOk4<1AMTY_0~4f2{7w1Nbbr$f$?XrliQgt10dxQf4>J-Pl%D9>S-C}`us$RV2C>Iq zF-!)MC{){%@&5&EA%V5_D};Y!eVv2w1qM$<_-h8=g78s*-@lFlMr#~NiY6wgZ}tAG z*M(wyd*gjFZ^2~w0~41pTk!_n^_u-@P`2F)_H=fW&k87~)teZ>2hJcycSCpCLg+}~WRiW4c1xsgV zl;&m?G*6NS1fB1{*(`M}XrAkH6-3+xS1qf?UM@HI?tseo1F}dw0LvJbdL{FVs4;EO z3{8Ww9kwUjP8O(+_Os#UCNO?V!CH*Y-Wb3)_NtHtOB`{nxn4!enG+~)LSpuEfI60Fg6 z>vyLxrGjn7qQ^kKv3_11e|+V1r`G2OV)sk=v)|ImSn{Iwphxgw3Ud?GkU!#tDS0;( z@L#nG8{dhVuiK8{5y~paXbA!1yCVKm*QJO2SB=tr{;Ou`PXE<7Da(J=A`S6hO_KWh zuXdI?118@ru)=jmVSvT~a2$bA031Ld9f0=`7y!T@5$FZL9}vJT^QVr|u*$Yy0zl!& zSS$YeS1m>~UJsA^KaaA

6s`&x$Xz;yH2rhG>4w&dopYO=n!3T^0r}s}u&W-tI+{ z%m2?gGp7Zd8*}N`ro@2nyrabTks~WZC=%k(Axm}13peb93D*n4)9gObsTVpgbyv-dtlJ78J@~qK}WiCOr=xE z4fW4Io8Htvzg9?FS1sFIP*bk(D`ple^eZqF_#JWro@RjLLyKAb9({~lAFnC!)Od(! znk>rW7T1}$%e#o36-JQj<486O$sbqto*-GLG*PZ)iHAnRrvm=ZFCE4f&D@FnoZL-?!klYpEPwK3!n8SAQ{^=iezNTCOf zlxk%%k+QB@7`(39D?eTxd6<#%2f(5W2-Ge50t3O1S7XtLQ{E%*Dhqds*;|sbHHIVs z1yiAJ_#4n|hRP9(>bQ~(sAOBkH?UaS?qtiBKfwd@f}i^aJ?~WCkk(S5Dt|~KDF9P; z6a!MWjj{FTz{3t4aTloKhgmSxmFdl4JN-m6?}SW{GAUkE`OyIT)qcW8_7kA=9W&s? z5hbsdcyk`wL;jpc=A2g!97p@K?l}1RzVpIhU$r!x80tHZWt8*Bqm_=gRC<|GS$P~2 zR%IQl^1<*}KADdH`3O0WItEt#$X6}&MD7GcKPu>yr%AJ@ z$=^Z!MZy!i^%Fv6CAqZ)%_gZYMM-{P01F+J?al`K4R|hSc1S(L zy`ZFSsH>F;_0)W|%>PAUL4-FAas}AK`lPW*z6GcX#b;@T24bdP>Zt#*9T>^#rBm@+ zFX39C_GgHN5im*^fBE7Ijm@`x)j|qH+#7BOK0(Vi|@|d?As(KP0FhB z_F>!ts%=Hf`7d-~%stQS)p@1Qmn_XAAEAVZ!>O;AaBqkfOke>ttoIYvBav>{)KD$a z#hTKaA%csT3vr&tcNIJ&tgD5-eI)U)HmXfVvlQ-sg*+lPoB}|$Z-Y>b>vK=`?b1@} zB6TXylRZMZOP7`N%JFEw^fi#G^kn@a`C$E0l}TC}`%OihMU)1ZiX&M%Dph&zFsVZ1 z3v8lCOZwVqe}+tk;MXc#Da-%`W%KUrb|*kfXW5 zyXxru<#}6794(GLfxGJZ7JF&v1J1eJ~UkvvX^FxMNgwgkFVE#6uL= z3EJk?Y0ls6nBpm1sL);@q)_eLdL$4!@rQSqKMM%!PNTH}$E&unWkDJ#Y;nLc59zk1 zMjwMEpGQxRFJmX+VqzBhhbZ%8{-x8j1{HSJC$AVH>}*Iz+A9mj6Y3* zAm4?^n=mUOvwaC$49dN?fdTDLziZE*JcX}gD%G(5h|mx9Vw}LB{4N{UmFsFa*;gkC z!p<`ZD-tT)cKuL_os$ogg$4f!L&3T_Lm)S0eFAyJ6B!LbKzf<`NGN)h@vdI!N54V8 zuAb9IcU<5U{=$fxE%Ec~qXB~5{1cd?bUjL#Cc#5AT!7)My9iy)O|+b#HB1DXuEzqn zA~k-h4g9drNn`Y73@f0#U&m4jAM{PmO_B5M#fPNM)LSWD*!f*Tz*pzojt60itE4z* zr-lH&fCafMZbw@>#TSI)MAq3?PqJuRHzY5f9rd^uChHPNFHZgw{FQDkKI9wdEN<}K z3@fmDl%RS|B1y2ef+mMQxUQ{IK#c!}s@;Q76;=88Xq@n!Y8EG49UCWXC39MwOw%y0 z%p0No%*!r(1-jW;kadqMINjjul55%}21gG+Y{J9p$4`JSf)kt1>XZ-RmX`M?X=S}8=M zu1)(f45WpExtP~Zw1pXKV+)@4Q!=i%%DTbWf>D`NPwO|A9CDT^g0r#4>904yGGk|b z((-tUu}6$}(%p9bxS5Mx`U@X|eb^-iY+pl0ag|V1g{y_|ebO3#*dRTQf9B$!zWArJ zzuDkh4w|(ZG%GR>Z7TvZkbh3Ofqr8F5`Xb&%X#fx`*gq@Fj{47TCC`e}gl$Lfu zn|fGVv43}1TM>U&gN`d`il!wfYq}L6Q=zOud!lK!a^_Qpn-+h)M0F4TBul^+f1Kja z0l=!8sF(v(F?S#I;h299@rZVY_u@?=wZeTJYD3jp%8r+{Xjp>{!8{o=d2Fw z2mWScRK{F#zQP3m{V(xXB^qc@oP{T`<4zJWS0G>Um=3scNu2yVlyV6lCb;D?C#Zr@ zgdfv#r|%Yu?m!?10Q}9kf^1+Jo>?t*8Zd|%M-Jezm|cp>Jz#)-hfY)32{US$@L@yY z?wV_Od?xueXvJx|;LN$a@-E$;)*w;9pxy48p#ZAPwAQ=vTw=bWJbW4!Z4}Z`*6r2j z1+)@Oq?FeWwIpsC&(dm`TT=D~%|LAaz_neH$Fv(J&VN99#J**YE|c}jpLHZM|1@N3 z6*x(&uo^2QIhlP@dZWzld|c_Q39c#pI)~q%I1;|bzSPryKW>W{BXiZxV^X=E zu^%#EP=VLwSfs7lirJ{b-}qd{r05275c(8!j9LsP{|&Iw#$`sl{^23~Jytun+X3j= z`6#ei$F$?o2QE>kYw#Fc4fP&8w(uJ!PTRQ4uiviEq5a);{oRVv_d6EVqj9veakLza z9q=P8@xL`Jk*q$Nd$Rm%C#KwU~(ASZFr<7w~UN4PX>thJeXLN@Ua8Q)b%896@R&n*Klbt^_Wss_oAL zGAMX)M@_@TBv%wu5L7MI9-(4UzNp^au{$Z2!@X?~$uoNbhNL2X?3 zEjmQH=&eAOL1a~AY&g$Ky_(CbKhL5a{%x~j4z%boyNLXQlyo!6+jj6a=CJcRalcgJ zE7S8kX)Jm0EVR=hTFeeWgO|Xy`5~Me!8!$dTnULx?%Nk|omTiEathc-@8S|l7laj# zj)UMo9>gtOW6vT7*kDf>M_tNx7PMGLWB-4f6!u%mjI@&aP)1tG9Fl}vN$usgF^4HrPj(o|STGg) z$RMC2NE+b8-v0?BlY?^(iLut}nYoXUwZkdb?>bT7%*Lba@X`87i9a-l| zVQD3O`vazP#K?yy#!fQLY$~Q7@f<}sA_o3=KxK`;iLkZ7p{hjVVrO?M~~N^eEyEn7(g-SeW0Er%bFYn1;Q)C1irFSh(Gm58FV zbYBx$MT?GtilP)14J)p!qUW|(CScumLMgsGAWhniL*eW9<4`!jDPbHRj;nW?(PfVi zU?>UjCIl#QG&{Q|F=r>H#W#~yF!H1!1nROK8@AE{2G`|QuaV*VX;~vnFHkMbqz^l4 zDIMKLQhK#xO(~^AbE+Azc7ROhGGXbRfn&xQD)0B(CEZetUFA3AljOJ1VS%hzs2>wO zMg=_Q8m9c_quna+zlh^<0xKJ7yQJl}3irv#0 zW}=&Fuj9o2xKGYKxlIczCs)Z2$<#1TJmnT?o)Rgi&} zDqRdx$;bYaL8K}Ab2+XcYRZYNk?8er%S1b$1Od^bk{EM2P#M9+Z^^oKJ=vETf8h!A zQ88+b37_ntAz$HeG-)2bguN>~A_DC)-W=e>v~b)D6v)~1&H&Dq9L9BpdNDbivt>m< zc~^OV|%Gv7~ICWnoRAamqKR=TN})JBj+makbaP}wJY9>T{)JSw;3m`b4nWE z(h?@;Ei#wglbQP!nM?0A^KPL$j+s}2V>ZnC;ZRAm(_2sxFYbH$F;Z#^CEX@68ea&> z45V|-jf>@m{Bs-V!Um6qd{`-MqBxpEXhMy3cg|iW=XGT~s!=PjvI$CW*S@}TZ+FKQ zHQn7(AwGy!(sS>~i47E(Kl2v8-|5nrP1q1FXABMcnsP(Ld76HTBt~z$qE%o%-rvcNK&#j#*C+dwK!QI z_b}%-BTIS?hBy*%;1SSHcs;l)0NwmPg^OO~CTYn97d?2a#rK8KPc0HEMlkaRBIGNE zGxn!2eMbh9^9=~6>rN);0SF$y(^{;M3lZC$<0!d#NbY%3{RRHtE;^B7#b#q6IYE_F zdJRD3jxL0zB0-8~@}5B6$3xTqTp%Mn=%Oh-`?$Pp;}eovXv8i$`a&9j&32JhJ4}v= z=(ZQgqYzYXnB1B!^TP2pn%SpN93AV3v@zm0J3;vN3(9gZ3N^ayXwD{ioUT0>Y20Gv zhSCqnH!^-%DBYz50A@g$zx=&%rGQVl2fSGcxV>_~+uZ|(z=OQCz4b3pByaKv+QU8Q zx5bop&4w_@;o(2k6lO`4J4eo9b(FMF8zp^7e(TtFK?5IZv)d3iZT8$Cql1)oJDL8F zi+K~ef+c4T#6O#I5LdY~IZs}|t%&Clr?)Y4$C45?ikbTyd2>56w>NnMrEu1HH(0Ve zXbt?#gBY&d%*;JSmevfOIY}tLg_-+3c}in)Q_pL(0zd7t2UA)zvXIs_Q1;v4Y+Yy0 zSdzbogs}zwupPerypf>t;C306hai|0IuzJxFNT*mB=4B_hi5Uo!9Ddot4RtkZ>OtW zvSSBXZ<78;{K%1ocaoWAVckyFw_4lL#53X1*+e=UrZnPqOKmrj6)?}NlgsJ@pb5uI z=d{Y={S+-<$444b?Vd}~RO5Kj?ZXuJ506*4T(pDfrq$cz5EH;uNw=@V@ir!BScPh? z=A9$8Olhzq7w%}A&tea~`%4`1J0#6FdMq+gzYltaexL05y^{Zk42u{zW*b(H=SU}C zUTJ|NPb{9E>B2r@$xz{>jhu0!>?%t zK*J9D72cWPow7RX&ULb6rmgjo%&`qbGKb5EWVla_I>)yci1^85869#;KS@ShXu8YG zP*?|`JAK#7MxC_m-vs84MGGtg<`u%obI_UdaO?jLFsB$MlpoTqye?t$O42yepGhsXlq|OA@;vg9M0;m zBa?F{4z6p;~#y((YDk-(>eyH|_nDB6W9!G4g>*R*s(l30B*mhnokJz@vI1#x28{!Ou zIL@u=7_OU~KKO#pLlRLDIsLei#srEEUnz#;!uEvr)TI^j>dF}Eoq^jm`6EB=S;M&sh0z^dX|ek%J57dx!e&`QiAq^{4BklLDG%;h0eg+LT5OXdMsoHErQGaaqH%%% zr?M){d5@Xc{4>z!?u5BpY`tu(32Niq9mL24Hrp)EJg*~*jc)D;&wMD{w1pccrvsi) z7}t-#2aiYjf)vVZso4q{Cmx;h=hnC_DNM{c!*?gk_@9*`KlK&-UL`nChcSSbIhz8g zucLDY1seP&goX)B8Q3&~Yy`5%O&c%^#84QR9I`^&VS-PjNo3+5CQZ1vrRLw!;e_<% z*yVd|x!l6QEqt?=t3wNk(pRhL7LCLeo#l-kM3v{|*YuGtqC?`}Ro*+MLe8`CR7X^; zD{xaWm<6alqDec?5}C0=FHLEUlI0^uTW`TQ8J0Ns&iBRj;h&R5K5BOFuTis;H`YeT z8TL^!l=l_4z(b@v8Hh$9HKEjiPT??@SnJ&&%7kKh^Cb`VjOd|IdgBw9wqw^#69-qh zGfDOi;A_2-CDD#6(6JHB<6PY0@c;pG$q*A5?tYGGWRXSS){V560gMCBIpNSwAM2IT zC#!r*bCmKvai!i7MOq1g(@1ih9w(27f+-nfO@&U!{Tr43@=<6(r=9Qxtl(8{IE0jX zZInf^7kg+iF1aW1^nYYz;Jk{I{jslcru7Aintz10GP^tx&%rJVAeF#4Y1~JosZg0vULm5o{qTSXpur!BWX>82?g$RSNmx1?Cclnbhi-_ zj3}g?iV#}GG=WFwgP493uN`PksFdS%L~Qhs-jAUsa}Fc~jH1flwA_n;pI7=I;0X@` zirr2|R>wdS$##{{oDFn7#wu@t0Yx4E5ET`(H(`*qA04{8dqaS1hi*m?cb7Ne9hBC5 z;PUe0^(Qm}(5=-jso{TI%Hr+}dVIRCHELgqeymaZd5>a+GTizn9zLZxu^07s&*h%6 zLbH6Mvke_VBhHF$5wQ)unKa0Ds>8)zE~CBMV$}CKC&rNj&Tt1C4rot6=atc#_qP-I z@^CJl?znG#fX+Tz&yC+F9mm-iI^hwYF7{2Qgq1iuq>3%M@rOC_$uN}D$N4yxKN#1= zSd7K!y!=23w8l+1if$}1DDJ09WS>~mDZS{x9LM3U{morB5~t;Y7sXk=LhK7JnS8$qLasy=#I&VXRmB5PL1E4Wy)twc?Mi?f+wX^CEv$P zs(|@UoY)ty?c8Milg&%U<(lIxPf1tl=bjU%nk;y@mP96`gOsF2CF%Y0X#Ytresfm) zRBkw-gm%v!mfILI0and3SO zT&cLU0bsQqU8xwmmax?cH`z6$_T+e&yKg(9cU9-!bM=LEt^GrbWv8<#onu_=7y87! zsZgJsQoVr2ne)1zSc6OMr<$1DRI&)O-8y)2#t5y-ICwVapH0a*&Ig+FPdJV2O1+s` zZ#3t-X5YVn%&`j+=wQZtvK6^A&U>sO%SyM<5%Mf}k{^sYjkF<#2TRUb? z(??p{G3(O|IM^{%aP;E)sRIICgbE{nbG|WQv^5PAv$vT00WR2Rcl{dbH$-|1>Ptrl z9HuDHb3!q6RNEQhn{yjJI2&e9Gu~$10QUj#;TV)^$2goMkF;I~$;BGUO1lH_X%~Ew zo`z3kFd+dNupiM**b?cwbLau51ZxEB+YaU829&`AKbTz=M#7M}(IryYAM#AI__ZDc zIAAdZ!fI}p)c$FDY(NZ|WI`{2jzrpq`Pmsj=40(G*1r!O^BM1vzTgt%Oc54olYr%! zk7p;mPhAUSk`IHH(+}jy88Q3*4RmG5$O4@11%(tyImb1rgH9c*5OKw+T{n^4-PeJt zcCMmrnJ|bqU;2_XsM{4`xVRbf`MxR8322C$(059olNQFv`FKA8?o)DHJcD}@ktle# z{1Xy4cNGF@CN$*NLxU?ZZ@^0=Q>bjyJEIrkP%E8iEhK&BG4k0~(>RY=)=Ie6FnyF_ z`sIZRruzYuH&9C(YFdSTjnnH zz|2GJu&eH)s3;}j&y|y@MJ5ORUgoEi=A~>&=xz){M2Nh$3?o$RE~ zk)B)(&4K$p01*EX>Br9}niY3qcV7A#ijyOmu3oXWM}F-sURa7nBQ&5OfY2QcDLEo2 z-E*Wn_L9cVXG`4tKP@Ir4O}F@6eGl(g$TH_iR+5u`*J1V_kd$RydYlT3Z(XnT&`>< zm;Hxfas){$1t&ss;4m|Mi1~n`y99Lhd&_lDL~gXR64=f-iiV>4&z(E@2&jp@H?DOV(o)J z#KYllk*o5Z((px?4uZ2Ef^*X26r4vXIHB#Eg}Vb{)g9KHaHFndut_&NlP=sUCe&2? zj$VP}+Ms~EGMtrhGGmWkcQ$a&7qt2i5Ar=M;($DOOoyh=4Ptq!xNG*$E<7yY>};qe zcCoGlYAtc|1($2~_xKUpb?;&OV;d&A2D6eDO;Styd@1Q2BJ*4Maqw&4?|@%Dp9XB} zncT*7K(zQhBdyU|z9W}pcjt63y-%cwuJV3*my~EC%5SiK{YKtj3<)^b!A%_AeD1bi zTeCY4M`lAI&89uTsh>j$M0cwdWK00xW>3*aGPzHX@1eusyRa3S7@hikj)Rni28-Ce z58U=X%-QS*b#w0dy(`3#skzNcY-4CY6sNK+slAu?p=1N$1-eE@sSa@A|*0a zo06`Wg=2kmN;+hPJerWWjLu2peV=8t&TWbPpU>#}dwIsD$!9oYgKZcw_aJ5Q%nBUE z=yZf!x*uIZS~a*$l#F)W`L^7XfO;5JF?$m^+t$P1jMBGA6~-UbVef(r;{g!I%#u48 ziaS1~lYt!!97D|C?B2QXIc|OT3S}QIj#b}bjgU9=7b?rO!%}u*`-jr4cRoaVmfx-= zINbWKw(j~CMd@Exj@^jriII2Ml)J*lQMm{dx_f;6f(F>2bJ+G z5Q`YN?9%`pyBf=J%w879$wQ$7z><~ybMaHYt{a=snt6JI5rhftIVQKCflN)L^xg|$ z9{Q9{kl;-9yt6u-A0)nB%9xxzWGWpZ;O>!Bd!jx&Hp9Z03+ePjFNl~D8^%w^90o5v z&)*2C-@^BV-!x|K3YuH`%rN*JIiWc`67S)Q!Mp}8)Bay9^3 z7GQDN%ZD&)PMaWeY*jae`(U^a)ajP$`34X))ENNpLWQFZ_L_%=d$0Fyh;fO~bt zt(^veC?Khy0Z*Org>ZBO1aAb=34+KW&ZhX1S#vT7G8Re`F>khG8I!Wx+55~PBD%JP z#*L1J1|pp^L^{s{A&FAWR1c zBRHa|pF|?NwG4E%W*f9}8^Gye3zpKzf9EWsRH>#^o^L&$InC?kl{^&6pN61+I0 zCoi1j#RPcqBYp8bc`*)Nd__}ejIwiVp%0;;1jkyeK!{dQ6Cn_Z%%C0%R+Ql_&Mw0N)gT8(80l#Qr1#YUu0;_Z8&cV?FG(aR7>+We~KpjZEz+x&($uav2CpAe@$p74|ldy6Rx$&@)( z^U}lE93$55yPsT&=c+#zQn!TLq+Vq8WZ(@S($PP8$6qr-r|Lkd@>vb!G>r<(0KJPd z^IoK_lfxg#?zBeeWrs5EYwoR6s#$ZtbbaMzB`+>?A2vKdUk+NRZPUq~g_*aancww+ z?DlILodJ9NZQ=<-dWf<(2tSkXSmT}1ZQ!R6L$>WldB}S=S^qX)F@Daey`#2y!ei>KqTD$7X!p5w}!^ssoxC??4+o5#F{hd!63iY4r-rdV%pbKxRUp6MTEZA1^BFdK`l zPG)5=vr-pdYHg4z6g6}9hp4e`QA2S5Rdw;0+^uBtwFr0K1_8UrmIAx!4jj%nyHp;| z7{&<$D)50HqV`~LMSGBxNW3-y?`t=a@rHB53^?eb>B78f!n34F}S_3rJ|Xs=VS& zs9(%z%_CXb;T7%=(t(l~+!+B{1?EDRD*GbZ(pjEAm(Zo-(zF-UL68I3fNlYb+_i)b zdj#Vmd};FnLd5|(Q?B*~@4Zi36YjG&xLpifu>}19CZZoe)>I@ll6@!QePeo0&;NT- zKBpZrmG4QI5V!E5Zucg)xP0TYEcKBeNY<8kz7KGJPvSC4TvFS;Raoq6U3yHR)9t{O z=~=Ey>&Qhmq*zJU*Lw7}@_KZ)WN!A6jL)%eVQM%)$}!_+x;p(ala|J*$JI1i;(&J> zeEDzk5;{l5a@&k>F(q6cg_f6GtMd&a8&)g^zV==KwC}8U3#Ixkf%m`za$yS;-XkXs z+XG*F9Zgq@`1f!pOkg*9xtU%D(#sIIYze#xesLmz+Y;CXZVmLdC)^rId)+v>DLscl zdKY399Sy)CUdSLALKHJ=9yB!qn(*3KzJ|!xP?RYia1n@4!6Ymrf0K``+Rm&e$4G2X zAt!cr-IF2~dW@i-COVGQlM^>wh1qdB>lrybS#Qn?WiDqJ&O|{CVUTNxjVZ<=tReKw z%7$Hwy!WrMx5)!+sp28(!_y+3O3y7L2mO4gLl3mluz4=mvz)En4jfb#b0Wj^q`z5$ zk3y&Yi*ecGC|su;xEAi2f}BVkYQqycsqaa8elDpLaFqVz7hJNZ{a0S5lRM&oCo!#D zJi=0J_XOVC+D#^}4)YOsXoaoCxW#l`@g^JsAytt$zzpx4JAgvtJTj)^Hjd-Ixmi1> z)=$1yP`+=UOZonKkq6&97ZJYyyGY}^815lJgu=E+MSy3%MR;+){CS1@*IrV%pT0=r ze##=k{nSMs+~2#1a$oYO#{J+$GWUUVYvA5Td4yW+P^#>+)getAi$fG6aHHcci){os z444zY=IDATlTaLiHKXZ6qLO;G*pWU90V5Ie-!*jn{8}tCj2DAe}*}a9bvJ} z9*v7}Y_rD&V8g}0*=A25chH!)JpyG42?blo`E<93n{Bfv$%okz8d5!Iu+%RNLaEC( zTM7lp&i*A-Aqg5>uV#~A9+XAMltCg>0yO(@CCI3*G(gsgNJr9T)|KCMTtx2&!N z+*~VL*UHwFps)Itl?504kS4cc;u}g64F=t_*nY@-K&Qi3jimeFm2!x-$Jubc;&)Zz zH-1QoA6c9DPQ4s|{{$ue5Bgff|3HcVvYP+m+Qgrz#Q)d*D*v^K-&Kj@ulV97 zas;`J3%A%gfDade2ld)BA~-u|lE&hs968&)`fxX2@Go4tpXuH2XL{$)`xkDclAfq1 z`%f+S-IfU9GN6IUX`at=_gY&>uC03A79IM1l>S|y$CBo}B^^3AKXG>G)Y(Rsa<-I% z7JGUrJVTZvcf<2hi#_EaJVSCR65UCV5&`!o=~kYUXb$(Q*eSj0m{Ij~OxEZaQNMI- z{G<-CdZpudt>iIEqoYs#($UF_ z4)68MDAXCOagw$ z`4Vs9i=If6>|6BE=dnO<&OTVriThH;U1BU+qe&d?oth&jkgloJi0tdWV0}os9pVVF zH!!*A=S)h2CtIv@x|F0Qg>@aKWEP`+CWVvACFXb+Nv{njTyR;#B_mDM8Y5Md=yhgW zwDYFi!l_XuMiQ!>^nD4+{05w3Xe8|~Q5EpnXG8(=S+->B#q`JwoJ1du{Y}=xPXO)D zk067@Ajg!LAKZm#iMuay5|i^=Wl0{TlKe%H0lVcLud%G~lfl~1oQD{|wZA3iNKVh$Nh@$0iYWtES^z(} zq={rt&n8k#2k}Cnaa53{x6)72-Lv3k{6SoGo64dq*c)(U)P!irCld>}W@c}mi?#^nC@cN>p0i*bv^C*LcWseE;jOUyi&cdsEw52wkKX2~u=(R%E)P{%Y@j_wU-w;% zzPJ&xzJi`n^_AwOuV>x$bra~T3+k(ra~kUFG1OOU&{qQ}7B@N>Rbh|8bL3z}V^c&Z zjW(h&b1YO7)hI00LMH}Ly0WJjb^YR&_Y zl0#L!bqg(9%Nx^WPL1oKY)~Ot zzGB2nTDGpstFde;3OmlxvW3#Em$Kzq6W(R5-frEsUR7262Q^lM6NY)J>e;(4o!yE` zmvxmk;}Vvw$Dj7!ZY2%5)OKrmR*iP+qc2s36??H2mWxG1}&oXz$P$evF?@%Bq6CoU>Yf6`)=1+eyamkX#j$_@Mo$*|U~E&BT! zRd0Kj(6%UDz@welg2$Zsl~ctTnp37Np62w*8n>K8EvE@f+`1CVT$Qlegp<712CHy} z7vwdY$ZL;;;~BH@8_sYs<{}@@zV>yI3{IniI0tw33@04DzzOAsEJiXALU7$i??UGo z&UgkGj3b#_L%G=(FxSZe%k@qW{HOTv#BXH(fuPsPenZ=VE-|>Y{V8~7dlT;y3-p}r z3k)7pCVdX?6Z5zD+>J+dC#;5syH0Nr_gGtU0vloC#MB52vz{%t*bI&r5Rc=@sHadq z{)y(&(ABE!y1l1Ix~;-$9O%?rN0~)7fwMPHLHEDr{8W}R?v6POFZRT>u{PggAf9sb zZV52klEOaI=NCKU&8RHdKgMf!>2x`T)}N%~tJEB}zN^$50mW<7|v z;c~rPq=3O;%F*7TvT%Pxq%g_*Q-JP`UnJuGRl<)^GhEb%#>_ zYk5q0vnDQTuwzy6(ND{xc|G$nL8-C#eWK>E{EeFVaI-}leAuU2zpEsd7Fykt&z76> z431~L#S)>BeExMJmdEQ1(O7q(OdKH#W&Ou$4zIuNEtGsyUN!jigZ^<^>I3SP{?|v! z^k4W$&EfEC)zYu(Bp)@B*U&@9ZttqK5d~G)>d6`zBVMadTfOmCnb8(n4yRwOWFZP_ zVXLd+;j<6b9G-o(K6&_cxXi;aEr%ZU!b2rnec}Uc{`ZyowbkJY3!)1 zB9p8-V>8ZOB1VfWk=wK!VqWl;h*)i%=?DGg@2aVP{d|4WACoTA|FV`t*7Fxjf2FQS ztd@F<=RLb3b-<(t2lxC-=HRQvY960HS1kwC)(utiz-#Fbd#-+Ycvq>V!?Zk(KU)J2 zYS|FgqH$60s;g_nD(d`ki?sIdv$d=9jaAk8_(A%BQ`*1pXzky5m1-KX7Il7AJiMXh zFm+yi@^Bzk=AplqL#uk>p;DcHaG{#R7jtV_=Nqf6^9dLFG?@!t%VXHw8n~zn56!jo zPuc62hZLojUjDY4huvNS51Q=}eb}S=c~=*_{<1*jq3oIZ#B0A4SxWg@4i7w2BVPY< z{@>F07weP%&Vv>HwHzK0FE{^{%E>QpYW(NdZ#ii(M3z9FmdE}1m$01FiT^h={%!Tk ze>=tMuN%>wJ#f}tjy_Kud6vs%ey4@H9^avb-nU1IZ5W>o7dDF z3g%oA`#MF-VdR|p#oWSVnTzIH9;cqZ1orjwSJm{Nd%Avk_|Yu$kfG(#y(S(mxh-v` z%H%W?#+Fwelz-U4htvtSLT0S)aHL?UlRLvrc{Hhsi@Nae)$`i;&#e08A#k9~!z3+_^jVkNzWIU8!sk?a-<(;W*lg5K zmdIUN4)HTDN%{KoSv7}4GwPFvez7tSuW30ri0 z%b_dlcU|D0OCvtF*7WiB4q@)$a`1}=Qm z6Mpg0Sj)pXrGEJsq}18(i)tQorqsxX*Bp1Ik9qG}y(3*lNcd7+vmME2ijGjHdG7bC zj<`TPf+IOIw-n!aKik=*2@#XSxHbB)r-++sj#;$vaZ`3h7arZCDX#6d*CJe|P+mD? zaHil9)ZcK~6_W@f$`wA78|9kq81BaR@Jf6S_u^Z5X2nv$Vc;X>12u#3JcII3zIpbs z@n<%kU|uYWDah`WYNB64iwVF8lY_IS1?41-5tZ-9K z40iOGhfdP8=Yh|9J~#II-kyA?`(NzrXbZYk&BOfgXs6sVv-l0im`gcf6{RnT(C2K( ziPVc3%L_|&-NHH7rF2c=Qe8S>vu|) zkMugB+{HI>8AT)BG;(c;KR+YTSt2xYRdX~h(7?>i!BL=U=rA+uPqTPPZ`FjfB!m>~ zlwy|Zb*u68pv?H9%G4B9PmSDXPl-9qiHA@;DHgFA2+@=pmlS4g%4Rk)ShpZ=WZgy=r0Z_!*not+JsbSQ| zqJgvN>7fd>zprijS6cY`;R_EV)9yD5gheb%qjkg zi;8QCiyn_{Y*JOxJ@QuKhWVAZ<|~zx?S}%fEkF{3Us)XL-exakfUB zEe$eDgUr$(voy#o4dSLn+tNT_X^FP9jJ!0+Nu)W6YEFWZQwC>CCOM6Un+S`|Xo1vh zB6_cu4n2} zgazi@NDk#=P0pdxIP}763*zjffQ~%k?!g8v>byL1HxzO&m5$Cu|7r|`36o6o$h|ll zedjGTSVM(UgN;0t3<=kB9xnb>c@YA)O7|_&>++CanIU*B8i+M55^m7B@gXdvhl)Xq zOIS#{Ms8_|Hk6~}?1OF?7mXtUy|AN%+2Ti-MSg^tjNYYuaua+vI?;dltVs2AQQ-acu+tx0~W$?@(2vX-KW z&|hZ_7FknnA#bo5+}rVxE^#I~i>7OGOV|Cp#|jQdbb_VPBv@x1_R673g}PAasB^0i z$$Acmr?|qL{mV&W2Lhe#WGAjUkw?iJJ;^*4k5K9P7FM{!P3Vy|HZlJsCpMLuokO>> z&Cr!DpSKw|z*=@Fm^ou)oRiH+GVjX8ONcuhri zQpGXhsbUr$rAN=X3wA`kjw}Q_n#miry9)8JX{Nnrm*S*WZ@Z;5%gXXVP!MC$@HRb;`ALakd#qd2t#d+sQ&+^~Zzw-ZDrSktv zwR~SUpO*6o`5HdID*cC7qyJZZ=>PYNk;8MU97cKK{@E`6>HpPA`gc|iW zIgdmwwkI96*h6o)!Kh2PV=}`r>o+DbD=ns@!ncgm5L3q514@mh@G2mcV4a6NaW?U#?}^nY9eRKf-@n8baEcLirt&8#4vfCr-nE6H&YHw^SQmC1$%q z`;+yWe&z6MuJ@N7_jWQ=<>#37!BWT=oF}}WXE;|ev$B!I57Xn^QdBkANF_-%?c zfD?)V%|ZFip!`rs>+?-{jUY)iP@X8m&tusj~g+VTxcQd z@&^ZecBI?zoMP6_e#AnUoMLzdQMx6Qck7rJi*kxFF2;z%n2^HVcr9acd&nsbr75xY zJM`T~Yx@WiA|^M40$WJ;6J*Z}=)&f2wHorbv2+uI+ebDZiR=O&i*w4XVVLMS+-4Hj z-hp`QU&`bj!)I}D7%OfSM?_|@LU}MNZUp*-bHPAhJOshR&sLi-oc;E5W_#+N5GZg~ zI^P-(rSE6%TFfWlPjCE*GRGHN%@z@&2hK|4@66rHkLa>2e`c`3LiF3&0o0;YI&qXM^5_&cOb= zfiHP-oR5rEr^K)6`>NG<;~if5KEJ&V`py)*6rRZn?iyb!>*+H+Zm1d@u$Jz*k%njH zs)~nO{DhGODVcsi?c;k{{fV;rC&=o*Sx$DeoGj`eBD*1g>?8_i3aFMFW(uAd@cIlO zK*Bvx@TZJ|b218ksTl=jS1=0tA_}?!3OZ91Fa-n#{kADEUI&Hg#gMS_ldX{

    o)m@4^xv77^G4-I+rS*TnRwx6{8Op!>w@!sp@HM)_czt=^~JR#5gQJ62(dD#V~v! z8=pZUCRd1oCB!hn1WBFBDyi3#Ezx+)j=wd>Ac}7Z4l-|X4U)unV+8`GDe6h;pGX<7 z4Z6oGkc2RcviyizjBMkx;kNM@l!!NDo>Y*g_IlEa<3-YnBjtGCCKIpGE)ze7xz=EQ z-2{$Am~G<4a4LoX)R>+E)8f~Np-fkbnB5`7?2aD^-1{MZ!RH|!zb$<5w>i+CTB9v= z(4P-bA2kN2A2;OyU^cfe{uwdtPX(I)wNb^ifqDhSXS7QXN|+aucrxU~iG#-!%!f}@ z%*Rilg!Z_-fchd>>SEssoPKsW5Lo|q+|oioecm}si)XlbPqTOU zphO|Sivdp5f8i587=yVNfI|tLaZ^=X;Yfuy57G?v8?ngJ+;Ggev=T#vRSCAziUOJ2 zj+#K|;-@A?f3s)|Pmp>MZUwFiWitMHQFQ#LgbIM8g10R|x5rB=AWIUGk2>so&Gd}( zbmCVdoWe!B8= z>gLT9UfQz>rToZ{PO@o?OdwOj{_;deLHgNIVH`qZsM`QJXzK}B%t-Mc+%`$83WO0f zNzt6>r~u2EL0qF_q_P3hSUd)kqt=kaBv1un}@ zP!^4AYoBM3v`7>Jzz1b-yf2G(q?uwB*UOC%k3poSAE{Y)QtZ<{_x$)K%y#EqNcA(v z-ZnpXqSzSH&>z(H9hfok?DsG#PZN~%9hkR7%XvQMt@r8u@dAxsJ2 zz4v%NHpQ`29K_ShHoCoJ*P_9$x$dQU@a%Vh0H-ewfd^o(dQ?lYF{G)Gk9MWkJEt(k zb&rbOa`-sF#nlFEnP8)odW%#M#HXonl4noMp*`Y(uk0hRLNG*S zWLG*15|U}o->}G6soQ{VA15L+M}4pjF4|@P1X*#)p?H`;YG%8$w>WLN83PN?vuW~u zE1Wzl@En|WAdUAbV}X(y@E3Yt+hm-oL!++-IiD<3m~Q>@neKU)@UDNa#G!v??q}jy zUMhkIJTx4hq7njSioJR*|AYT0(H|!((mmQo^vfppP4Aw!_ZwY+WgLgl=NXl*0N3wm zi80*r$?qdZ-xenQHBE?^b9H9F@T)~LmOt(?uM;;40!J0p#(MgK&PuI^G%)B z4Qm^fZ`xNsfeUY6gn#~WE|;fmbYFzn@y`=b`e4*#?(ypfvY`lb*PlX=W%<)3`s>4p z!LE_uUgg}R?`)js9`!zeD+e$QG@aD>0b63Q|2AqyDmzs;RjHZPjhky_&38-WpJa4v z-NbD1jz6yIB6s(OW_SwD+PLG}@h>4j&Evayc)IWr$36{Lr4^@9Q5~a^+oN&21x`B) zg?OS2PV9(x>Fe|KC)YZLP;MdM7f_u9+;^c;eZ#T?mp+YiItz&`EDjvUxqPtKLWyh1#&XZ* z{6-1s#;{QAGA3rFb0mje22<7=)$fDgo!A#!=R>PN*8CuJ`p}z{+^F0-1>{%?5)w}z zpXwRQ7Gb5bA0-Z`Cqdd`z5~6Abf0f%2ki%~m|7Ua^H$;ladZG%Yw_pA0HwmzTsVkn z>j87}f`%VH1p>C1CnP`9Z-eE`V{*X`1+^w{q!S)8bb!ZdVOv(zM*0LNpO}9SEr;UM zsk1M7L%1DuYhGuRtp8 zj(&?0y~f!}Z37Ymw$N|867HWNYgPgApdCyN)-{fe6sGq2f3+Lvx1oiY+H2{Dc+dty zB{UcF3A6kGIAF0dx^#YmnP9DPBj3M7WGGm>$G%A9zwO(5+k4@Iy*}zGFd%eI=*vCX z_HB4E>4anm-B6ueVbTrj;8MKRHbP+>3_l?0jcWT3$u}5EpI+BVX&uU^0~k8@TMeV0 zT42%;x&KdHpcq&;Dts{bk$OsO_0-Q_*3C2qxk3_h`*iQ&S*Jbt6aUaToZYH*52xz+ z2Nchs;Y3I1PkykN!oBc4C9^ zHWHN*Y~P|wq$he}xRT&j=E$>WD2|1?rMQhmBuX*%zrkyky@P*D@lgWd5;i@2z+BrT z(0>9jhhH$f&jU9O7~$qT%C(W?oXCBbd2jng4?o6J$RrhcKupEBhk*_l)M4JcH@=b0 z38U`C6M(h;x;DwQL4~ba<%bDiC~=<=3Lt>7>&GCw9uNMIo(A&~A=NRg0an4tnGsNz zt2IR%X+Z0Fm?$qX)LQxka2`e$YAQps4Nxph4#dZZ6`?I`gm?Pb1|$KEK9ns5kVhc(+rz}`K%`!8 zhCt&F7^egb3m4oz#Dlj``C(cI0%)gWz#yv2w5P6u|C(rsUvd1pD%u-ljbe$vm3`H7 zQc1q;6Bzu)avdicsX=lcW)KQ{PcZ}=IC6QJ3tEUdY23PR2o(r_1^reB*!nLC`jI>c zmX)>=hs4E9n73z&n{=BOb63Xb4jckPF%z)FY#0TsG7Cfdv3Ca;st!|N7W7{tG59S; zL}tLeSp1B93aIDT>{~`{z?J{@?#n|-%t!`Mhw`^UxZ6vC?T=XEa>qo!w`ue6-;1k- z%l@aG1}%ti7(rkcaRq$lizh832pnmnEB1|;S0R+6yTp4ITNH?>(EQr| zxm~Yk(B;6(hlKo_*FnV*+dP;KeuB5`+E@S6&bd#B5ZXaKbA4Y<k>S-d+>)HsB|E38V0yQ>&Nc;9M3TUXj;e##ay<@L}#|CHCkO z8G9pKqao?f6dCOmx8O%t{ayC&k5gH<*1Zw$CjlJvJ{EWMqn;mwt;0aYu7K|YQb(Ws zo-G&KIsMd%5i&rHG{{8E?Ve$aYq$d_zXJEh0)MFY-g%oZY_K|;LlOdtjRU(|B!^1U zLW?Y3{`o}s(vU7{N8`{HfZ>J9XUAH{P3ef)R@Sk z3K|~;vY4Ejt2cOD5qvD|mP!aC8oRmm+AXFpBegqh3%~9uDP-chHDG)!=tu-DFu7fg zuZLR3{ZO54ejn_f)msv>D|3w|=UTud%;th*H%qx@?oFBb@RyZEW$QU#1@ApkPlTI? z#LpIXg&4m3mwUNhmUM#dNY!@+-5>o)0v$GqjISe$4>)*lcmA-`JXYjZa)?+;UklIO zk7Up;J}~r6>6*5|SKu_FhvN>RP(bh}M6HN5OPSD0ud0(}8H{E^fZWX{I4Y-Gv1%$s zw}A6ycQ1l+s29yq#+qZv^Wi4TgkK2NfS_oK(%nQ9ndPm%zjm|r?!gVoS`vUBiP$@A zSt{dOg*ZxOkZnwjMwOjEOWF(bOV`y;jbF$^mn0{dhLf#-IJ2n`aMlS2>o!*XDIlP- z6LP-0qg6g{y$(uTVwWBI=7sP`%HK=VowvX(p_scfzuDVA7M{JokjlZUHaR5hDe;P)GD%{Uk~% z9MJI1Lap8W{M@7?8XEpv6TSFCnfIhpAb-0%MVDzuK{;$FTj1Xdj|-B{sQ_XOG#hTx z-h^r2x2Y))LFZTD4g1m^{yfQtZP_8ZL!8!z`%%rQB9)CnZNXuB))sptGq@On3`zs$!5XzyZ z-Y1z_Ii7Rk6A?KG`#usVpDP%?aSryDDwB=twVyZd{H$wx{`bBlJXX*&)LpXdDivU3 zVEoe$kPTEmKj)@y7ImLohWB55O4{oZpjbZG)}R)#S{?p&dB(7D-=3rky}y)oKwV=C zIwK@gW>7>8)Xkp{sQt*v1)RJ5qjfU^DIC>1AL}o8ac$@Gg^F}lmZOp=3D=%3o(m}_ z!u}6iZy6S4_q~A{gow1XfQX0)2uewgG}0j;ISSI$TA4(oT_FFVZ>bN;nU9v~6-HPu$Np1VyH{4Lvh{~R*Ev6Q&84WJ;h z9Z0Tme=yH5gtMYRz=pkZ}qAC6dI)7+YU<1*}TEYIv68i#mqeB z(oMdrS>5dX%uV?l9j1%O2w^*vUq3`KLy9BbHifJXC9=g+a|RL-0)Mi})c?{ z*DUnB(!VEKSx`zG2;6x)n<1Y#_3h>sCu_UVH9LDpsfz>xN3)dWK-se$PE90VWVSIO zIrwA2VxLRV3jgH72?b;z;+_vUfbN0;x#_BN>pcjX>nfxeaMdgQb_QBeaEVNa3 z2-f}&^5b!0BTG#T=KURk*8ds;=TYYuv~3k@;NBcg z07&QhmTNtAN172JclvCz!sVCy-$Oo(*f=BUBFkiGbvMtvw0bXcJ%> z8}NeKg}9F<%4~uyo>Hv9UhsW8tUE~}!9D)uf*G!GXEXZ${DQNxuQo^Oik;9FCCPX z%RT$+;`325inBIH-R?*ws@g+-S4m7H)472~{m}esN7xnolU`rGj5(S-JgUCXMV&}C$}=B^BLR%XbXAXztl^H3Bo^PAGF7keR?^zfV( zMlf$~VBlzY{s4im4oZ3hpG$2r52B{3&)m;2V(t%= zVTi1kSK7W7CNQt5Kg z&@t703s_GkpHyJ%{xkmfe((H4u#xTA3S~-{(#F*H&6$a{#-fM`psJIttqJ)e;FX7b z#J>%y35xhN5;O5!K8Q7IEuAM%p(Ev21af}Q(v&KpdRHkdz?@p^$S>e6eQv3{VU zO2aX3OdZCVk^v5_s(str7$w>kbhPNEmhN!`HWc_|$?iC?*So<_y#pUW3W>E( z=&N36Ps_H}1iyV5euflFCloZ#vnzaIlWOyR6{#e}U$Ryp? zm}=SSp(pInF&jQ5^E-J*Gx~=A^CMj9clGZcuthbWeeBun5$3bF+x`A7SRQco46?%L z`(Z1an!Ec%ke3WxTjBB7I3u>VICD$yiz~1CY|X|lQ^t!Qb8uv~wZw)zFtGVGuk_|l z1&LUjKN=nv_()kE_YeEge)}ZOtPyY^Za!!sb%X#!`EFrTy%UEBaV#Rd$v|dFZI53Y zlPD3E=m7y3r6}!%OdOgowno_1gtsB|yq4}KA%K}XVxjb1&|BxT(I?>Vu>&wQUZVYM zgh0A{{4sDWZlqxI=_9Ak$TH_z^naMPkFmg2rI(%GB!xCUvR$_a&7K*u43fBRz-wE7 zD4c#dfyCZn%!(n}N0nFQ{_2YGA6o16+DsH4@(@|h>6flQ&Cm8c6246sa;ga#Wtv8* zgSvt+x|`^$2?2XpvYwB0klpjy?#CO>9y6MGhkba_JT#b+GuOfUywl(i96Nw!;nTyE zJGV(i73#Y{MjgY{s!)euLrTD;o#L@02;E4E z)<7Sa!Sdu^b-7r}!G;KjU0i(fb`0Q4qNh-SO~>1l-S4#g z0)uc+1T0a6zcDHg9^8F;?HMZatZJg8tN)R5oPwkub-b8`m-s8*D7p6r3ue_O=4gSS z;$Uqnf3fXXD(An%Yijohpe-u^0X-Bp3%uug7WTHW^kGYit^Yw^A-}zn>6@EFhdrAY z<}hVOUj8_e=gre{$%s^JG%Pu8v@g1UEEXnFb=e7B#K(C>f2Ry)(yz3Z`r|33-pQ8U zec+<)T|Xes!+W{IU}BI`qFfi|XW^@n_1hH!trb5x*`2B;mYk;+@+z>#N-pN??&t{E%x({~t9kI*`Y9bdr~#nbltQ=4WBbnx)Dm#gYiwC$zqNy2^-{Br zbAP}9%4-sOP5ckGQTG#!W*xd?kY5*O>ZIL2Rks}YlyhLDPw4OsAMM>(rOlR2P^Ix^ zf0j6j0~!0c8yuihmM(v1C3fmRc>f1Dx8wtjAv)X_Y zkD>C$f`IxRpiK2Ef}z6K1Wzr^1jAsa4sROW(Cz~rZSUH1E9?K36JQgz?Jl#G4*l%_ zL#UGurvMtig`nmg>g%7Y9?c3gJQ04nd=cT*wtN2!w4uDD$;!*~@zfdB#Apq9p((zeMR+|WJe;V3sy^Z~Y zY=38Jlh*&$@cpDevE+c*A2uGTi)srztonQ-PlEsRVTZ*HQDbdpLC_k$vUshR+{9hz1xPFmBTYc#L;_xW(};)is%-Mnd@n+TB*}(o3sNZ zQ^H1EiA6D(?EEI{vWIp5Yzy-X+O{8m_wo1? zp93?^1j9XS(5}e0t`Jwx2`YUvk^%G-Zl3Logu7vfbjZetSEi;dKKN@{_&Q z_Pe|t=6EgW*wIx3Ccy8SAg+571@bvppLTThsBCEcp4=wNgLurtDYxDb@Ipwe33}Gh zRNl9-205_#exn6i=N>vBxL?pItvk{Uec0S^;_ABU|Ee9oqSm$S0eu)D5%C>9fyyc# z9@5`35bt4*w}}e)=r~7B-=_8fNp&Ey*h6>~QCyBJAa* z?KgT1%95~`onSJtJMCA>Megp4d{N%bC!*$B)hW<{t)kYY%3nw6j@6xu9K~? zW>#9oUb3(QuEMO%CVV4hdDq_6w97ESgg6ba6(*Q0um~DwC9#)ypWjIunuk8NJzqsE zYOz;7bbX2I{V`)Uz0m#BET*=ySY_dr)m~yziY3+4*HLVG)u7C9N{UfYh?*e&6U=M&CZ#B|=xdHW-(d@Iy-%)Kl93eIA8?!xPAc@SyW zKHcbUw2AYdo*2`K|49THgzfid8#;Y2NPmP=oKnIx`cH3VX&$XMBlBK^viRpBR^;|G zNj#%lU?m|EZ|m&E9Ax)lLU`Ug`*Ar}ql(Z!r~c!wgzVXlL4J5SnjNi)R}0^}g4<`l z`cHe)i3l9tQ4~t@6aNv?wIWw;ITr_1TFFaCA9)3Is;PY%qdGs$yU@F+|2#Bqu5)uW z+_RqiT37?~0&lAX&ll);$&xV|lslF?X}Zxt~X zIuP=r+rjfPld!T?*?gyqs*FMX?o#B+pia4P#~;!wI{K%`heZ9`f_?DDZ@cKMUOvKB z)$2pJX-8Pz3z6e|!pK%ER8EA{iCWWl2PlZ>?=7Fz!AXrKGd;DkoJ723d0+RJo=frk z%%9?C$5Z(7#%YM1WcNv3d_T3gCv)dT)x}WV1ie9axOw~qapR~WqtV2yb+?q~7oqCH zI0!RZ?J%y>m%G?1#t~^A=CDvKTuPOn`LsD3MVPg7E@6mhPf=VttGXEXhW3wPltkb> zQk=vCaHeQ;Q1FWL3lTv~*anGu+(H{dZx{aVuQ%&-x*Q~4VM(MIV50DKHvgA z@uXPu=1JJaCN-;xOK@MMm$#Yr317bLDjt4&ziqIz{fd#FziZoEN)Q=$yZqHVudUvH zw_PtjvVRg6t4YNNT3WpyuSjj@=(fFZ^850-TYhMHqu};_5-tUXIl|s{ZH~H&v*6dS zZwfiLtyjhSF3c>kL_aC^Nh1TdSf$tP2j*xJ1L3k zyjHcLh2T=Z^2JZM-DNm+L=yh3TAPcw8|SxAO8Y1|k@;QM^Sc*lZfn%fwV?}@NgqB^ zQUhgR;KA9o1^77+{MD$<(mg!!9l6I?q~^hwM8wh796Lt;~6b3VOqoHLh zZ>`?9Z37;-nB6S5acipO!&yA_6uBgAuqus|bpPy#Ng$*=L4eF;I zopQvbuqzoWCFC)1E;c~#3Tw5(?}~UN(YO#4+cY55b}~IiKkP?FkHG+ksrH8) zR66cF({aUZ-d?u*sk{gpj2rn{50ou1;?gd*3Df(vJ-_kZG<=X&rc-H@-!`<3SUE*Q z?~42Pmk4;I@UXS;^r@oUIREi0k8Z$|5q{jSFKJPqz55%2F;oi0-!V<$1mAQue90kE zB@M!h?v=Ky&tIo$JDhk*;@iaC=fWxgVbQpH_ZI}8jPBs1|o(5Lx>~z|m#MJvG zq{VFn!$h$ucX9Dwr}Yy1me;^U_}m`d>wF=onZ&^*f)MuPMC$g`UvrYengCR7n-4Mx zyk#FeqeQLwU{q9{Nj_~)_ICbPb;$h@KtPlaUy(Siw7ud{>Zv+5oc1OS{rf14WB7wa z^@eY{Z$+|K-L+GU_uh;d1`N2c^z zmKF6mM!KsdOi?9$kI@Eii(f(;-#!SQhOMcJQyxU4^nd$h{?WNh1_S%z0@@eS3n;GM zh)}|HvQGO7IsrflI_ZYsGqtbV9)3_{E>n-{J;JwfBYR(pI9dC4m(`;1e%1GPEK*~j zPF{GsYk5o(cah*z_tMC%mJ9ypIG%q|GmDlq?;7rjtk7nD1f~SkG$`O=zmc`}5JJyk z9p^L9{{pc4Kw){}1-I&kJTV}}R#p03U@c%3j5vigdsR)8;^z$({vq%n zVAMh=lsz*N2RWOmo7EFIb3H$Km%KsZbubiYc^%*=_r3WO%dq#|MzOpIcACw7LXhhb zt=!pBLKz~z>=v~i;HjG&VHUvlwxpIHo1;N<~)d!EG)W0RLticK7yNk0nMz?qH#xSxOSJ9zjxnSlQD4cj@Ysw!yQ6?E*) zZvUuR=kR2he>W>8#$io^2C)h*uUeyeM=Hs{aKG49zuwK1`3dHqtE1|Y9h`YrS9NPC zQfd*_ce);==LipeLRh0+Rgy7#div-e-7<}9!+&{t;Cz+ojDZwk^QI>V9t-S$^rW41 zJfW3IT}N?6Oe>g3|A5!L#iYrR*102+C3|ibro+1?ulY?eK@jIK*YD41TpW+ zB#45RI|V4{cLFqDW3LUlTzwG%p~Rxi72QL7gP|KvVdDr&((d6{&OD-Lj)_Znz4d6$k(|JCjNmSGKpJyu=d&N}tsZ)*0ViwG8PPK>%8_3Mf^{ zTxv&2-N!*!ZTgn}yb~3s?#pi7PadnUdOaiQ;bkb?oq3t;BvAjxeD~)wz8TZ>lYi$- z`X2W_N`1-~4OGy*sBX-{|FF{49X%FdX&tv){HSN$%GAHZAtTetvf|(wem#i6(OGt8XkuT2wRys$CVaBtgdwmLXu;pFUvDiZEf1pIit~ic)k$5LVmV+&t{-KT5dgp*j zqP`eI-xU>~H`1%Rs}(xdF^ATq310n~6RdF5Me@9;_69>1zq;KK>FaxCC=fq(xYkCZ zt0wi)e0fe6(W%fC#Xer}`Ptu{cU7_S8A&wu-i^E7StR4C{**399lmrn6dxC z`crxfJ(lrLo~%{JtVj_MzL_+Y1VZ(9P( zsLpL3Efun!(tlhj(rnqwJ)53o8PqOz|7#21bt>8*R zpB8UGfl!iA33>d@#FxA8Nm?ijxcc=ed%*bxQ&`%j+W8ka%<7y+6Osi%(IE$if! z@ZMRN7oYN>WT)^b_xUJt2l{fps`PSIX4l{ikmOBJAbWJ7VBX^1b76-tBtF0O5)Z_% zd##4;L?IP_%^fn410(;nqvFWQfJ+>{9|}`m{lBjfa;tO1Civo;mnZ3$(jj}W4&JNt z=d@To8 z(ISV*WHeE>b5~lg(A#htBjP|a&gStPEU9T|Ev3s%lA-Dp2yXn&OnT?=Q)8kaU%rPc z?H)KSt$(7@M?Zp1XUyItmc@E6ygN=h1GGM!Bn;)VWIU?fxE8Xgvl}=9_Xy&yhEmS>T6asm z{EgEbXJ*B$J)O5vNRclQ&mI~Vp3?PMm-q|o&nGyuH8gD_G|?wgoz{6hAVb)pA=^4B@?hiPyi>2- z?V0Qvb#yg+O1(X)+0kdppV@xVMK*EloBAyu^Ip*P@l0Q3@xeN~ISHGg^(=HA-PhxY zXsojA*VFK5Y$10)rb7ip=I&?sr2?umP|V{tiNJ5(O#nthl*o^_P((=L z|0{!f?S4T^nDh{)TLlEZ64Iptnxxw#tlsa2>MG_DOd>8twovCl&e|;UNJtmaV(<_S zeQqaC&O8gl)g~^CMmcucT~?B|a>xfE3q*^djvc7{nlyRttOi$`96S~k*y(9h_PW!uBG&&aV^^xzg(YH-S!Z#~BZGeCNAr{{KxVV(zb2%fu^%3(<_* zQuu^@^Xu;y-y;YcR=g9xg3XE-F@H_vFJa1=aET(2C)%fq5b8g*8$RBYY5sh?M(QP><4>H|ql61_U zJ4{%dQuIp(1_=iN2&4khQ@t^-i zSPPg$x=r2xV*4qN_m?-tVYwg;arWMBoF1N}{KBy)Hh~^;-({PO;ys7rAYH!z58k+y zY5k;?k@J+rZ8q8Ls4Ug%x6Z+@-GNJ1A)sLV%jWac>NomzRcBd3JZR=M_q z{+I5{qU{qEQSaWx&I1qgL9GU)FyR{zq8RpidFM$i_|^dYceooKQ*lZQ9VV0kOct>T z->`>?TkPp$5;%*g6HwE0PODr3zYvA%R`$_KvHkMqZHT)NOr$oPZZ{#qqyOBdg z4byU-bYPrcA&fCLSTyX_~pf=Dwa1D8SnC-;;GehQRwjVF6mDg@?eOtH2?eIL4 znWbbl2yIGEcv_8lseahy^h_yT2WLcr&H2p&>(wQ)=3HY{$8Andnf87J;)JUp7YE(B zH20p*G9mOVh5O_)%qvr)MwU3nY;5%}1HWqpzPkMu_YWn$o6@LG?jp|7ZV*O`jsjSl z766&GciOVK{6tV^(EPBzII_nJkv+Y}w2btZiVMh~Jz(*9X?yo1-vYi@t)nvaTWn0= z(2tW|VEHqjvu;H`{=lnPQF|MhK~5a!jSC;_{=W-#ufnF?7p;Q?`^9z`5IQkzy_%25 zBxxx`a{@eJxK-68d`wY(6sh|w*9nBg7&djuIr&aI_Q^I?#e9B9wsDPd|E5PkqM}Ik z-_~4G0?gUoUBB+Yl!v{!5@5ZwJ%8uD=iVLl3&jmlVy@`{&&SZ~2LHvlGaq)mFpLR8 zYy2vBn@N3*TKGtM^M`UywWwCZ9F1ehL+jWdkM-t1_vKO$b@Xy1Wnb;S-K0M;#I`ZD z4^Nm%Ft+C!1*`IWmhZX_x*+@(9LwXA`AKx@b)MbuCyYlAtVF03EYM-6Q@xdn9?|j9 z!RBrpDQG-y{yo&{6q+XXvY=UG3{*1q(eT%Gpqb>lq)ctLI42x#)>n!GcV(wf(BUY? zG;r|&*o?5~oR2`!F}D_PHPbq8;7ks#A@>?Ek|jdf-84|%&+C3IGn_LJ>(W`CW>w(L zvT$KywfttxVh+2r?Rbcw$w@fpr`%t%pzE?I=rAI z%?EoyxCtre1FIB#13mJfqewm>Fg323`Ceh4#nR-k)@VWsJ)f9GQK{0lL{9gAF?dk@ z?a;fsO!q)6py4@0zFQ$Wp}r`xYxdksdUAKActd1*0}|QnhHa=!W3SpsnB9Qf>o}-H zLMpmNV2rA2hw`{Rj@~_eqP-EJgsw=ft1#lkc*xYnpzMoLLQKkz^T$$CUJ~0&nx666 zfNQ{;s=?teaGhm51vT*akpxqOafiR+1&+S05>E43+@w#7)I4o#OMm;H?Wmc9YS-%h zF78_;zdlc*xRjsl>xr!+YmbMg-5)jS^=TdRegc`&l;F~IT|UO7#0+tM5YL(n`^?5= z1D?qc*MCW%SQlZk!Igm{YSajMYGn+WS}rXyDR>bqmoodUYBd+-A}1a)97x&yK(!op z{P|$cpKqJ?rE()ZFhbSPma2PCg!e|XY^;%IXc4Yyuc1+?Fmj^f=*dKG4AAdf`XQA5 zQ*&eyy1BdfJ3DCDtl%8ia{M24rFRLt`wsUf(C}w2_jQHWl%U@KEuILoF_7IK=ZcD@ zZX)gP)>G9nP|qLdw(G#*(Dh1rpd|3YIh={h>LzebZe5aDxeJ|*g!2QZ+Hy$DA3!_Y z2v&<5KugClQ2n1QNT1edBdV&=X6oEU=*e@^A8*!Qv;gLtLR|-s&b8iyz>DO0wec+H|-5&673(d!eFa?_x_L1N{ zhIMxx?4tk2$vm#!rSLZzPU$7 z>SRE+o@>N7@?FZe&REB9+YL@ojL!PJr*Pt?Jz{f6 z-6Ap6ZkFiryUyHI-d(Yk!wIe1o^wb_Wl!57%xrD9XCCP8Zj=I5t5u(|Za48G~p zS%i-W3HPK80At3+Td(D<<$afxo%nI3>)~o7M6#=jyt-y44o{J+*iC9kx(bZ@T>wJQ zHzsr%bb#w#52`_uo9uE|t_sg-TK4wL(CLq#x>tjfQPp$s!m?)f&?4kb%IZ8&(;7$M zwlNvrWI7?v+UlRFHEN7DdR!W$xFzU#qDkpi+Oar01CzaV+Cx;bT=hdf>9g)4Q19rDy zBfe(fW&rkL+IV(lPFbn@9*?p)K<^De&*)M|uLczz!%h*_5cIp1{qKww&0Mm;8>J%} zkergQa%-tFxLERxLJo7$MMP8m)K7PENmou)yukr?P0Kcvk`Py&ic14{jWssR3b zn^PI_daFEqHY{nz2GxN2NprC4c1c0Hc*<3}BN9IqRr3V5=zsPIy9YGe@-nb1py#6l zx|;9Su7dm{lO+!cOG8ypsWtt_NJV>71xJ@hQ+QJIwy{BIz(339BXbiMgfZ2O^jaQV zbK=9}gpI-d$6Uub^dmn2n#b&iZx--_J4=IQE6v-_@T4MKt5@A3)Wg=TB0Z&L;%A5L%FX3V zRzu(ODRj>ZGjQ$pQ)#ek{MC{~wZAYR*#znZMc5sjS)R1ZDT8w}{?9ASZ2TzRksNCK zE;3>vZJcj6`p`ld-}$)9+O}W}vzHY;;)<|Aw5*2=ZazsFJJqN>7D*05`O~V7#wg&* z@`y}$v|P+byHTIT({Bp@GE1V&0elE_nQ=<3{oSi$LtRxl;FK@Rs=W(;}v zcHs7s#{p=xb&d#P@j!rR>*hLB+#=Wztj=x8>HF5{asIRW63oiLF{I~>W(74{@niF8 z@(iLL{m^#I;>QUd1nH1#9rHP_z7G`~#uLIlX68`Oz1!WxmOvk4!~?Dp!mvvUX|R9_ zAd19Nxcb%L1Nw=A3T(pc>;U(u)(soKH5aD4X?w`Da$3JQthG{09KaLen~-VB2`J3f z%R~9Gh;=bQSzOlyW2ol*Yk8qyxf&svZ&)W(fwTzK52=tSFmV%K_2eRC$1)OXVxJ@{ zyXSm^sWMxX#X;axn#`@a{m1kD(vwdlU2b}fu@cjqlMD8U(kG&w*UCo&bC1eT;t9Rc zOYc;yLT?<&)R-+hn`Ew>_p4ggViIO==n1 zocZD=YE{I!B}FzX|G=zPZP>D^XQ8!Jq|ohxKdZc-e1pgEV)59cRXiS9F~!%`5k_Lm ziDU)?qa&?Kk4LadymQOH9nW1AGx^-=AYXR?Y20x&)Q_`AZ1(%f5R(U`wUKm z1<$_7*7X&A#VlDj@}S+09#{9!*NSUfYi?7WR<|j?7uoce?tD!J%?J|@+oN!<%kD!q{4p#fSe#mg93hM{`@OY?l-*%1L8yQDYj z-%W>hDf`1MenJxWWM;wxw#`cu#z=?7xz(?Pdz;(Ma3LQQE8~bBJUmhc6MQ{$i+#(s z8aBSt@CtQ@M%)Kwm~v78=cIj3UU25~h#a|roQ&_^(xd_}kN(bzx)U#o%Uk}oah97l5~!ak53;%F z>#d)!-a+Wr>TUE2cp?e$rvGo?&E{Pm9}=7G7F&g%5jF+#t|aK`E5~!#@2rq_a?%l3M4XogSD_nre~j5XB+m zg}UqKx}OtBV4uE%!IH zY$B=lp67?6qS(pQ3lcXK({gFS+{-5o)-Pzh4+N$3A42O3R85%|no?5cj286EbT6+k z`F+b}@5Fipets9e&=V`dnla3yC&P4I8C0wF3ze3qC@wPiy{7Lj_wVap=T`ihr`)U; zqv@pz`HN@s_E$0u$5?$*;L(z0|9pMBHGW%wRsr7Q^B5PXu--FXZMtRUp;+CX^2FjT z04UodTUKKvJJ_e=2~25;4SMSxP2*I|rl-qg@9tg~tl?fqKATUivE?|~1zMLmd}VV> z8(g2PxB8U%C#js$SHxJ8zKDLCZ-#2S%H^hCORF)i?_XJF?BtWOk48~}JRPNTeX5>G z>edPY6rlr;g8@YsICGuH$H2S?8S`}1MH!G#ty?Kaw?OqF&@Yqrvxlo}N1Tgn1(`c7 zlNQ-aY&$7YUbI_70EvI4JP4E{R0QdBR;*KlE5~cX2JFbEwti;uPO5S5(H|l)?)3KK$h2r3?{Vpn_g^K>^Ge~#2b~>p@aWQr0zHQvu;Z%+OS6Zf16RgGFtp@49U~ZD8I-x6DaGXL-t9{e)!BZH3sCmA zX9quEvzAfT4Q{Xu02UP$wXJK&f18aIZzA752sT>g!L9_y61W3vL;?&v9yg_U-fyC> z5SRK>b%vZ zMDBlU3uDP%xORoa#26ncJri@xX~G8iX6MndU+P-l2y%_Y|a!}i)uUIBmY z8Y*HZD*4{B;Q5Pbw*?!8sE%GaMPiIv<{mAZ$9_Y+{z7N9atF(e$akvx+A=x%6+ae| zy1r^#m?(@gRf^PK)n3^YY!&OaRM zgba&@UR=Al(+lAT&rPX0;sdKh0u;@FF7C)6WxnU`axO$=o_yC5xBM@AefF~$p@VSX zP}J)JptX4QQ-!3_g(no0?@IZw2H+LqwK2KiMiMXhnsa1kVFA$CF!$O5@xSM&k*I4l;F{D?6pnXlw(FX6 z`?=~%m^1$ewHr1wtc69>H#oXV*QYh z3j4HQxA(&-T*4(6s%oQf4=eu}Lhj{{RDIEJ-K%2w#2)&T_mj6h%QuT8%G%n0RZT>A z_Z_(5(uq}jy9Gh-v0}yeP*ctL`M2nx&iEj)y#xHcLOgLfcR;p%;TWO-ZzV}{oZrfW{S~q<6=i`kWY`WsaIad=>VX};dG<1b?z~s3MMCP%1KVgRXpEvFq&}D%UrcdK z;5qKN8+U4v$-5r>=9@ya0xP!C@(y^DECcBHyR{A)EI?ffBQXDJ) zZyHMOlbF|zG0K80_Bk%7OA^A)yITYFt$tJEZjO1 zR@oAA3+hU=`?Rl6QLigUB~>t6MS6TRl5#y1w!!qibkJet+E5J5ZhPOo!f6AySRfex z30j@LZs>s$YQb|`(RL^ApnnP`C0sE9&%@IR%hVyauD78+KU!M*WZ@Ul^GtC-wZZwztM=G`2(QWD>@>(}NmL+!#c1hv?4PbRN<6;yS(p3^qHfA0?t8E=na4 zYHsesY-4Y#shh0Vv?IblkcnwIsRl>Jq!+VcI>!^AdB-Dvgx7-rpGhD_Nm@ENOXxX?Z0q-MRA>g7!dTa9)WbSfOc)^2g76e%|A&h2jL>RCWb@ zIfiZhf@i30XFdA0EUizhU`r7!p7C@ZTTXFioG7l@ z=4@o>p?Kxd6xU0>0@aAlisMm}fuHp1dYT4MZDzQ1d4_vRg?ij9>zB&EMnaln5B<|d z+>3tz&w8a=PH1EZj5*PM$}i;xzUnd(gm+n{py;uhAg>qIq1|W-1)j&X{PZ>_C;M(f znY&t7KMLt(@X5{ml_JAyMZzt$%o$p&!5)lr3ZhE-!*wY4}Sj_`f`D&J3qxz z0V#b08LF5}j}5a^QA!BB_LXC@-wleR5^+@nw3@WG|x~iv@d!ArEF59scw~`Qj<~4DCqkGr9})jZ(z& zh2L?k^Wokz3yAX{@0@2;2lbFErfEjr{~$wE5TQaYrCh17zhy!Ip51pw6RYxJS0b;8 z_w3SnYuR>K(D3k|xAA@K*PohNxJdkIfcn%qGJGw<`}b4kcfR8JIF5>1NzdTu*T-J_ zj~F&+ju^h9Oj;qKU4{9frR*13$q&5V-oT0J&$V_8a9Jzl+7O^}jVhFjF+|6zM7(UkarEsm{{u7uW^h#ICWc5osx-V1ylRq2Q>}PrF`MS zwaK3cyKY+>Mef~8<%>R_3EbXw+qMqaZoO0!15m?vi-<{&qcW3037V00$wUn<9PTkJ z`CP>4vQqxMTv6WJ2(~UB@@7@c>&-YwJ48g(xw~r){&SH6ejqh{yZBv~%H`hLTvp=; zz+8*LN%arF-+o-P-ui0Vm&1Nb1Sq)mdUAsb@%^kMr1cP)zkIr|lyqU4OLKK{Ha8r# zyI{N`gVOt1KNa8Nt&X?yUW~0{Ia}kJ4$w&dSsNBjMtT+=hBsl>+ESCF{p-8`_Mv<- zNDkf$cool>px?!A)bX!E*mew&%5E$7T#$_VFRF9Bu)#%Yp8oIooFin5Z1<58d^;au z4E)LJZ7lc?DH&)s3y0INFI}V3L6-RSf;g_D=8Vc?F_UElzT^B9^te_y6MNA=C3&<- z2hoa~qSf&i=F57|ZKclSC271a{_%*X%wEc1R%kNHHzLxgZ8=hRJE0~}u0a(EvM841 zLmjCrSrC5BJ3ld%gE`Gk)$2q0O2vx@nyzifihe-IMA*)#z;Vq8Myu3a&-}S@TysTI zO;}FBoZ^-?-@LM*O+tC~7Ae3V_-BPuo9~F$b85aD zaYym)(F#C<54)zgCQaFF-ahH)(-^myB zyN8>;Utww>j#K3C6xttb8zH8RmnMZ>3Oc=@7Vu_MB5-!Mm|S+@?_TB zdMeTh6tTjhQ5p$;b6hSQVjDg@`FFk|4c*clvl3p?smCCzgJHz z1AXQ)tEU_p{94!r%T8|`5Nx&hGHFP=F@EH>JxbCgQaI^p5g)czg8Jg#_{ViT$%bT6 z3=yj3Qkr6)4NEK=YQKA-*nGD){9tc*W-8q#si0LVOw~BWm2)q<^G>hU;ohq&<71Un zFmIL<_Brfc+0bd^EyMpaDD6kVlfu+;Ts(55y9Az-p|ht4mRCAkXr%}Moku9@MMK*akmgs`vx*mGbyC_ zb?boo`eh9yW#r;;<7v~K1Hsv60W5ACpimhahM~xm;HV?m{p08+3OL4^zNPpnb;|{u z@p9WQ#I7@XLr9|2IICSXtI$a`K^An6?r2RgFd?5HGloNe5;b{>w09ra#s{!Ym!@{l z^36Y{zppgSH}CZM`iCy+bv#oE!$%$^z8f9(yf+AZn*W5@Fu25$smqv@OM+!_Dr|0PE8wN{!6O; zv+L_KFeae7GUjcw4c?$i_R_QMzo+1&Ppf99+YN`t+FCFz-xGxKo_7`KE^%%987K<( z3~?CRKZg7O5M@AIu`V%rkM*6$pqm9VmPdBh8$Nph;hn-L6XbH>*6(idG%MM*M;b`|G%UCp4F_|FG8|!oCyAF(f z4xFuzJwVZ3+_e&_5kyzb|s5KIY5g!1uPh;=|49-*Y2ym zmr~RDvn2}qGA~P$@MZ2d`!BBPe+*}3b0OVqF{izVjWT!Q%LQK<{b;_G(`7vu7Z=gf z;O0W;48ks<*X~L9@k{Lm+MDn6&<8IUPoWO?nVeG=MYS>H$T zd$H0BbCG2LZCmF=!w&#e@U^^4ia#L;8bsgEtJ`%alAp*%q8_O()>VNO-&YO%Ler-=m%@|w2j^w(L*4|1KA7c zk@p|7n5I2~fL89KIAX?%3cYVr?ka>`jBswt!z?=4E?(DAcE0Dq2l5mjvh+vQL}Mp~ ze7gy+zJkBJpgy*gzIARQO;#T@6gMo=H`47{nSA|$NpM_6=`^o)Lk8}^)yglXy42yW zeMlAk|M2u4Kuxr58|bU3sGu|zkrL?wA}C5PBE2^Okt#)$DoqHGLP$DB9BCN6`rvj z>Qyly+np@IPjzPRIkX2M$67USosG`ZKF2C}TgbJA`Qo4GHKE%gDHq?TGgQ%^ja$Sid-7~!vbzH zj<9t^*^^CXI~UHM(%Ic96;(7V<(LZ1j>`@_Shz#|kjQ6-zX7H%5UIf~YV*HnCCE=5 zuXSrKFK(~~FGdNpzyqZ-w1s>MjdSfA5vHMONBFIJ zsf6dj+h3%|ep}Z{l~+S;%XP&w|0R-o9&Xis{6;wKD%(}*QC@4`JA1gn{oM@t__*P( zV1BK`ZO~$SPjH(jR|L}mS=FlF2x=6gj|{xN_p;5Ok8@sZUm-?fBErr6`(kq!f%Q7I z-tPvj0BLs=JF|!R4I3@S1zrW(96y$Aup%3qdkizLPUBB>3^N$%5GNW|PT& zV>ETjH{XAZ7VrBWC;EZRU6-4Ew!~UHU-Pc8aw98SAOo+7V1}3vxJfNo1#()O+LdhL zUojUnTE7;jO3%*+wa0oY-^7Kx(mq=HH?#9X+o8ueEoTtv>syQ-gqa5(8@Ao`k3M3e zBqxye1_Ve0KLPBI9k~AN-p&SO1%PL|tHjyjHRgVv%S^|Zc-+eU1{e3&AqoYVxwlH833sVzNFKuu%Z}PtEr5s}i>Z3Vr3(L< zi<452mQ5E{i;cyn$&&^1`6#7v`AwwDt2fB!4>K@F?1M3e$R&{)p&H>+-tyai;_@8i ztC^Jcys(_GjIcENgw6+O&rtj`0<@KT&t8Q1q%aCE%6*>9Xm-RBl7|jX={RRumOq>n z4a7gM^`D>co_Fh-Qx$s=1W2cQ(%k}+(c{4o-2FZH{2esFKOgDG*~pAXPa0(VQRf^EDL=leE8p{O8zm2 zj7XBGsc05wHoGn7G^fAlVs{uoL|w_4cp$Ww_#%w~IeVb73BEAF5TG*M_iAw&cmrGv zXgSh|Xju>a&m1DF!CIza_1XBY=)EOU=05Um%LK*#{Y;gN94w>ID>Ch1-(X`}C=_}! z?`Vm{FN)G;>)YK`)rN6XrS3F!szhrxzOM8eq$O4p3GP4oemKk2Gow z@bJ8G5qzRaAY+}`WDU2rd2@kTRoXWgCD-K-(#6j`C+E)#lQ)Bw!F*)|iA0do*x)%Y z{j+cjvNd|5Giak z;v}DC80+}02On^S&es?Uop+X;f%hYi#A2G|s6H{|KMW)f_#bSFI3-wBfX~KrKr*os z3$E4*wrQJBv&wvO21O@&a!wjpau+4x`905L=0?IShiEWu)aNg_*uY+sQgYgn{i$(^ zJo-Ygez0V=a~KMy*Ve9$f3B|Zz(OxXEd0lIOHGT<}G(6$qF~y2ez-b+nW}$sdJVV4*Wr!ir0nof)bA?^5_rK|>nMfQA7^pD)Iv&nSPL@()5)9!WlBIO}(-0pLoPFkj-pQ6X(<(5JC<>PBpp|w-q-@EG0r=mjClbA8+&g5^?@_Aw5m^F5 zE^778&C~g$4P%$Ka`+|WKe;6?-B=~=Kyh>d5mr?q`x?e-Fy7xW$HVYQfJnEdQ#!nY zw*p7^n89pT%uao8I&43YQeUlpjF>~;hu8Hh-az@z1W3+JntEh5>Hu=Sawbk>`Dfi& z%u>uMY-Xcsjuu7bvC5LB_89)7* zx_Nztt>>1XdKy9>DSWS$3^N}1vUKz0>pNn9PyL!Keo?PGpWzM27f-Go0ShmwK!ow# zD7|#<)Ck??Ma-X#b0zIE#%&8K(Fsa!f0K9!@Z1qMtV%yzaGI_)KDlvjv+T^g7DHmj zLNX|%P4A%u+MBo4&()!`Pv4PGn@>r1V8}FIP501N5-Jtv-HSr}^zDhcUx%zK_}gfV<)lbpwIURwV`ikaTI(k#98-*1S1po z5&e51?wA0gl|atN7b!p0$OX;dfT8`2vU zQfqsPw}y)_tsTj&Mni>-s2Oyw_LPsngLh|DcjkG9=}PG{g!*~czQBb(DopH>5zO<5xw%vW_=qGGscO)QjtB?osxn8= zljhF-(2b1>NAPD#XXTYKjh(vBMnzp>bovn+`fXLy`ju zjDfN2I19Ywm)Ip?y7XSPy7V40`1#R!!T}1jog!oA{(4AyFbg<6*a*zkil8Pk0L1p)Ek&XqtzgAA z=P;A>YWMFBPv{!q!F1>)0nenw6`+vnZ(q34RI z@l@ETCSi~B?L~@+3;v4GijKmr%3ogW46lOzU-Bu2Fu~GmKPeu`+H}8wv&724LDNCb zX)}O7U_6W`yNN5WchIf?)Dy*u6BJ|7r2`71O7K;I>jxox!etz6>}Q)e1?LWo+A z3u=WQOKVm9PNAPE8=rUOfXJK;xz+bxIkDj)wAm=Sg`C6=!RhF$b_z$th{Sm zkO`^r^2FX@Na!W4PFVQ88&WP2)QJS>1Ya}2JbO}gH;ud{g_=Ia0LzP;i&Nn-3wo@4 zObdZuTCO2Y#Jui%%T{yRrWgYsmQ*2i%01ctYtgLr5A*IhtN@GC;aOAM56;-VKDrFC zYKUgUQH_YSj4jZYEUC+ZuYqae7YPsFlS-m5W`3WA;L@hxSBP)X1ZW+;!rjvfHvGkp zMJ&1_-W}%2J}9>9C=xJvZgfYPI2U)NXQxMO*{OF0#$GkYBHlFRYnSY@AOK^JeA#aV zN=V|M`6P4D8WXS6)_N{uZb}^wCvbsfO{wrt>ASS$k8DtGa84aa2lUeT8tv`pI~|0c z|7cgqTee%~7@c%i_p-2LpuFvx`9w9y^}C;^9GV4M11&6izI+TVoC_yP?@!-kPlhQp z<%!_KP1Aq2@Qz%bTEIiA(Gk~Wkq}opGLf6+kbnEwKL0i~?;H@8a)&Nse9cK8kw@&1 zw^-}Km}aQ2T?1}^+dUo&|KXv#w`g1~J@PSfC(=@1#Z#RHnq=UE>lrv5u-@ynewN=6 z;7dg^p=cM7@8^l<&TrSqrfZB+?NKv>wDn3cgRnez;G%dgO@iV|G|9kyH7JBLrE5C_ zQXrrUpx-b}XIKGW(e|(7fw~~P$xw5=)8#mwx1-an#0SSgvrz{Jh|WgD#LTbb=N|sm zGUB9@Ya~of;(BRQ;<`5zrPT(g{!5bX-S02ttON9GhzGy@tK*DLL;A7R%2adP!*@@) zoZcRzt;4nU-+rbf7TnEIx7$xQ*;cdLmydH`oZYjGsm$F@wuK8HO}pC-_E=`W1pG0g zb7|uGLX#$Eq@Fbki#Jd0Os3nzF%?A!a3Q^g?U_Pi36-jef(j!i|=UP2XZx?5-!n6Vk5B##mRUt~berpB##W%BG zHnee-Uq!>ef3FgY&A1-IZ$DHg`O=Ofg1f%z6WZK{)z*s7(&l&dpk!0%R^7lR|LM+) zfr@7X74O3vO5&XgHVPTdCFd?6sl zT_1^>J{>;UsblfWQ>#|oC6UGoBx7%dNkOF4td-55+^LUY^!KimYq1$@2fQjDSLHsg zYHh2Xu2)%CyWc#r`Y?!tTRqQ4H>p<-dWOPNh`D3O`JRxbpUs#$abf|ja{fW) z`aP2ik#2Vk89-iH4Ky-uz4nh13HJY2z-f7J!n-PJb=jqrJwoN#y(GB|mhMT#Cj-An z+Z-;B_&VN83ep<*%~9gO_sh565acxDw11)*G0LFue~au5We3|cOTf`}M;%2+@JWj< z4gFL7B|?&&`9&0TCb&=(pQ&SOm7ZstY32~`FNBMg!8{zTo2mDnjW_r=mh@x)?u11D z-|fg;mCO9!?KmCO)9Bk)QGIw^Ns~Z(DDJ`*`0(il{BwEowrL@JOBqUER*na&1mB>0 zcmf6Tr0IPgEO0~hya#tbORkW1tUNmCQj{Vqrrxc0VBM{*w|-RvBhBUV;vX2iKTot9 z#^5iujuu#*yY>aPg=ovXj?r`BzbhuV=vK4GwE84Bz{)GUBz?Kvs3oYKMIolIY^g>+ zGfMutoWn@!C;P~hJStM}TOG`!OgTrG7Urb-Zi|ueDi2=f>P^LbS5W;`2a`PcuN3-Y z{M>kHKypPXO0KaK6{!$~W?|Fm zB~A(;{h9R#&nvRSK$KOp{)GKRrg^BePFxpf2HP^nm$4GZbHjD+9zi1KJ5TE5G|ms1ar~LJ$2OC*sH&4Hw>3Oog7Y22 z^(q!q9N|&B%Rn1Ih6!XqU^5F)PTa6%)czS11T!sQlRmI!HWeN4pI6FgjIOgWO>b&; z{k+Xg%RFKa;D!^vG89TFb2apt6GMamL25^8%|U`uKavSb&&5L2ZD&_)v4cUsA%Pl~ zod1~3_odIx>QwyY7Ya49JBWL#W^U7#Z}^X3nj^NZy&3+YUuIBlf*vW+ZZ2?h&Di(Z z4;ql9okXWtg2zdA@OoG4tRj=jcCo8F|5UDQiu<*#OZ&I2`>qEEG_$3IC9$SZ#jj)> zF&?Izm{qL|&(c(99F)Y~LBgIE__iwj$KIxtqn%^g#Jwe~Geskv7 zFlU=2;v=gEenLApVL@is`t5MjLGMv$w<3@89X8gW66M*JZiad{zS36fl=jd`9z$D6*3vaf5KuX3pehCQa~ z0H;2XZ!G~rKPb{3en9hWkhxG+%6)l(q3`B>y{IeSfPRT}3YJZwP&j+C)uHn{SgO$U zfJI?;Vv+V@H@3e>6p&fe>c=BZM+*qgqo9^buVlWic%6aOevnYaI6FVWoOjc3CUOnf zfBdEBC#`LN$6e)NAJfo>Ckw;!yvx12Gj3NN`TA__YT{V|*xudN71ofAmZ_zvc^-At zaB1w`E4>w($IYINK0Eiat6Ws@|NiH@WcWIn>vZl4J|Fvk8%$2#C`KC)g6omW2?BDEAH z>s7u~_t!A#Qj<05>Xb_)@zZFsYvR5{PQ&N)SiiQfG2Iha-_y~FPjPE{gN&i`ZFwR0 z{+i&kUX{-BzXCODlUBC5a*zvh-vDz8T5I?Fph)&2nJip6cRa(Cn?(D^ni{dgT7!9c zlU1CQi{NH~Lw*c-!o&dzr@=bIqi=T0FeRxl2lRR82k|S-xuHDMQS(YQ%x$#NN6*zr z@Q45u_#w$I>_5WCU6H6Bjl_5EhC+Z|5HAidB|n?%oixtI&J!<+XG38WcMBXH=@ z4G>k`e%~e-I)Q^`Uj#Hh-t6B$-$k&yO()CzqmMt?V@$_;be@poTiHzL{lAx{J)g6U z0knE`Vm6tDJ?r*!ci9!j0lk8|GA>@2-Gu`FWnBpV_Z`xJ3*^0D)6(d(*hUNPfljz6 z0vMNni3}%%)>TaygPreN5z`E|P00>lnhp0;&83gO+pr+x=5_pdxhi|Vz;7mjm!E8i z4*}~JYf~8N#!n3%one6Vc`oPJaE!w=@8(GybQw74kVEz%yuf~sH2UVCHjEbq7Xvs5 zuc}n)4n*7odL*hMi(-h}I+a4U@!O*6Ga!%L_Azr7n+w?1p_5Dw_aXouHKQObZUe&oWk}8 zwLoK`dY%I(_;l?@@fg{Wv^TlhwDG^7tnF1SXY4NUMVv<8T?)NA`dL3t>It=4u$F0) z;kclU@XbOYgR(T7kNp+fhi;Is%JSz<7cL2UqCERmurbz_U>;k86UVU33_`uF0YzO8 z++lM(_{n=!jcPP~nL&FFRL3a;*%(V9T^MKY9AMi~_)_wsS56%=xN>*@O4{Q0D{0_` z3kC!eR558+&V0}>S6VgX?Gbsn&1ab56BJ@ScFC1xB?OM&v6+OkiFZA-MTZ#pB;yQA+--3okbypv|YkUgP*%E zUv;1YPsO#~EnYWS%xL8KA>Sf*zgq)L-G9f1+qUGnLQ1q%;5=<(n$CaprjYnm3 z*^bk05ZmL(T%qjnQsguWQ?MlyyM{ENyYVU#{MbA1-bQ|=>JlUR0fHDKyjU{AHf*!A z3oQnC?4+$86{%!CJ?Duc?@}tUHUig%X76@rP;{{4C|v6F*^r3Hm`FA_(oi4>zFSY= za(b+u6{&6xcWaG}l!6n)Aq4f&X>qIs⪚vzw(2r%i8l*M5`Fy!wPe1n21^mZ1ik% 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 RurI)$e_)4tr3 Settings`. +3. Set the communication type to `TCP/IP`. +4. Port "29001", IP Address "localhost" +5. Run "Test port" to verify communication. diff --git a/fome-can-bridge/build.gradle b/fome-can-bridge/build.gradle new file mode 100644 index 0000000000..2d17787fa9 --- /dev/null +++ b/fome-can-bridge/build.gradle @@ -0,0 +1,49 @@ +plugins { + id 'java' + id 'com.gradleup.shadow' version '8.3.5' +} + +group 'com.fome' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +dependencies { + // Serial port access (SLCAN) + implementation 'com.fazecast:jSerialComm:2.11.4' + + // SocketCAN (Linux) + implementation group: 'tel.schich', name: 'javacan-core', version: '3.2.4' + implementation group: 'tel.schich', name: 'javacan-core', version: '3.2.4', classifier: 'x86_64' + + // Annotations + implementation 'org.jetbrains:annotations:16.0.1' + implementation 'net.jcip:jcip-annotations:1.0' + implementation 'com.google.code.findbugs:jsr305:3.0.2' + + // UI + implementation 'com.formdev:flatlaf:3.4.1' + implementation 'com.miglayout:miglayout-swing:11.3' +} + +jar { + manifest { + attributes( + 'Main-Class': 'com.fome.canbridge.Main' + ) + } +} + +shadowJar { + archiveBaseName.set('fome-can-bridge') + archiveClassifier.set('') + archiveVersion.set('') + destinationDirectory.set(file("../current_bridge_output")) +} diff --git a/fome-can-bridge/gradle/wrapper/gradle-wrapper.jar b/fome-can-bridge/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c1962a79e29d3e0ab67b14947c167a862655af9b GIT binary patch literal 62076 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 literal 0 HcmV?d00001 diff --git a/fome-can-bridge/gradle/wrapper/gradle-wrapper.properties b/fome-can-bridge/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..a3a17a86c9 --- /dev/null +++ b/fome-can-bridge/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-all.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/fome-can-bridge/gradlew b/fome-can-bridge/gradlew new file mode 100755 index 0000000000..aeb74cbb43 --- /dev/null +++ b/fome-can-bridge/gradlew @@ -0,0 +1,245 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/fome-can-bridge/settings.gradle b/fome-can-bridge/settings.gradle new file mode 100644 index 0000000000..19a47c9cda --- /dev/null +++ b/fome-can-bridge/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'fome-can-bridge' diff --git a/fome-can-bridge/src/main/java/com/devexperts/logging/DefaultLogging.java b/fome-can-bridge/src/main/java/com/devexperts/logging/DefaultLogging.java new file mode 100644 index 0000000000..b7acfed7bc --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/logging/DefaultLogging.java @@ -0,0 +1,162 @@ +/* + * !++ + * QDS - Quick Data Signalling Library + * !- + * Copyright (C) 2002 - 2020 Devexperts LLC + * !- + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. + * If a copy of the MPL was not distributed with this file, You can obtain one at + * http://mozilla.org/MPL/2.0/. + * !__ + */ +package com.devexperts.logging; + +import java.io.IOException; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.logging.ConsoleHandler; +import java.util.logging.FileHandler; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +/** + * Logging implementation that uses {@link java.util.logging} logging facilities. + */ +class DefaultLogging { + + Map configure() { + // Heuristically check if there was an attempt to manually configure logging + if (getProperty("java.util.logging.config.class", null) != null || + getProperty("java.util.logging.config.file", null) != null || + !hasDefaultHandlers(Logger.getLogger(""))) + { + return Collections.emptyMap(); // logging was already manually configured + } + return configureLogFile(getProperty(Logging.LOG_FILE_PROPERTY, null)); + } + + private boolean hasDefaultHandlers(Logger root) { + // Default configuration is 1 ConsoleHandler with SimpleFormatter and INFO level + Handler[] handlers = root.getHandlers(); + if (handlers.length != 1) + return false; + Handler handler = handlers[0]; + return handler.getClass() == ConsoleHandler.class && + handler.getFormatter().getClass() == SimpleFormatter.class && + handler.getLevel() == Level.INFO; + } + + Map configureLogFileAndConsole(String log_file) { + Map result = configureLogFile(log_file); + initAndAdd(new ConsoleHandler(), Level.ALL, getRootLogger()); + return result; + } + + Map configureLogFile(String log_file) { + Logger root = getRootLogger(); + Map errors = new LinkedHashMap(); + + try { + // Don't reset configuration. Retain all manually configured loggers, but + // reconfigure the root logger, which (as we checked) has a default configuration with + // 1 ConsoleHandler with SimpleFormatter and INFO level + for (Handler handler : root.getHandlers()) + root.removeHandler(handler); + + // configure "log" file or console + Handler handler = null; + if (log_file != null) { + try { + handler = new FileHandler(log_file, getLimit(Logging.LOG_MAX_FILE_SIZE_PROPERTY, errors), 2, true); + } catch (IOException e) { + errors.put(log_file, e); + } + } + if (handler == null) + handler = new ConsoleHandler(); + initAndAdd(handler, Level.ALL, root); + + // configure "err" file + String err_file = getProperty(Logging.ERR_FILE_PROPERTY, null); + if (err_file != null) { + try { + handler = new FileHandler(err_file, getLimit(Logging.ERR_MAX_FILE_SIZE_PROPERTY, errors), 2, true); + initAndAdd(handler, Level.WARNING, root); + } catch (IOException e) { + errors.put(err_file, e); + } + } + } catch (SecurityException e) { + // ignore -- does not have persmission to change configuration + } + return errors; + } + + private void initAndAdd(Handler handler, Level all, Logger root) { + handler.setFormatter(new LogFormatter()); + handler.setLevel(all); + root.addHandler(handler); + } + + private Logger getRootLogger() { + return Logger.getLogger(""); + } + + Object getPeer(String name) { + return Logger.getLogger(name); + } + + String getName(Object peer) { + return ((Logger)peer).getName(); + } + + boolean debugEnabled(Object peer) { + return ((Logger)peer).isLoggable(Level.FINE); + } + + void setDebugEnabled(Object peer, boolean debug_enabled) { + ((Logger)peer).setLevel(debug_enabled ? Level.ALL : Level.INFO); + } + + void log(Object peer, Level level, String msg, Throwable t) { + ((Logger)peer).log(level, msg, t); + } + + // ========== Utility methods ========== + + /** + * Safely, from security point of view, gets system property. + */ + static String getProperty(String key, String def) { + // For applets we need to be ready for security exception in getProperty() call + try { + return System.getProperty(key, def); + } catch (SecurityException e) { + return def; + } + } + + static int getLimit(String key, Map errors) { + String value = getProperty(key, Logging.DEFAULT_MAX_FILE_SIZE).trim(); + int multiplier = 1; + if (value.endsWith("K") || value.endsWith("k")) { + multiplier = 1024; + value = value.substring(0, value.length() - 1); + } else if (value.endsWith("M") || value.endsWith("m")) { + multiplier = 1024 * 1024; + value = value.substring(0, value.length() - 1); + } else if (value.endsWith("G") || value.endsWith("g")) { + multiplier = 1024 * 1024 * 1024; + value = value.substring(0, value.length() - 1); + } + try { + return Integer.valueOf(value) * multiplier; + } catch (NumberFormatException e) { + errors.put(key, e); + return 0; + } + } +} diff --git a/fome-can-bridge/src/main/java/com/devexperts/logging/FileLogger.java b/fome-can-bridge/src/main/java/com/devexperts/logging/FileLogger.java new file mode 100644 index 0000000000..171884dfd3 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/logging/FileLogger.java @@ -0,0 +1,40 @@ +package com.devexperts.logging; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class FileLogger { + public static final String DIR = "logs/"; + + public static final String date = getDate(); + public static final String DATE_PATTERN = "yyyy-MM-dd_HH_mm_ss_SSS"; + + static { + try { + FileLogger.createFolderIfNeeded(); + Logging.configureLogFile(FileLogger.DIR + "efi_log_" + date + ".log"); + } catch (Throwable e) { + e.printStackTrace(System.err); + System.err.println("Error starting logging" + e); + } + } + + public static void init() { + // just need to touch the class + } + + public static String getDate() { + return new SimpleDateFormat(FileLogger.DATE_PATTERN).format(new Date()); + } + + public static void createFolderIfNeeded() { + File dir = new File(DIR); + if (dir.exists()) + return; + System.out.println("Creating " + DIR); + boolean created = dir.mkdirs(); + if (!created) + throw new IllegalStateException("Failed to create " + DIR + " folder"); + } +} diff --git a/fome-can-bridge/src/main/java/com/devexperts/logging/LogFormatter.java b/fome-can-bridge/src/main/java/com/devexperts/logging/LogFormatter.java new file mode 100644 index 0000000000..2c3eb86700 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/logging/LogFormatter.java @@ -0,0 +1,185 @@ +/* + * !++ + * QDS - Quick Data Signalling Library + * !- + * Copyright (C) 2002 - 2020 Devexperts LLC + * !- + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. + * If a copy of the MPL was not distributed with this file, You can obtain one at + * http://mozilla.org/MPL/2.0/. + * !__ + */ +package com.devexperts.logging; + +import com.devexperts.util.TimeUtil; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Arrays; +import java.util.Calendar; +import java.util.TimeZone; +import java.util.function.BiConsumer; +import java.util.logging.Formatter; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import javax.annotation.concurrent.ThreadSafe; + +/** + * Thread-safe formatter for log messages. + * It is used for formatting log4j, log4j2 and {@link java.util.logging} log messages. + * Performs conversion of thread names according to patterns specified in configuration file. + *

    + * If the system property {@code logformatter.properties} is specified, then it should contain + * an URL to the configuration file. Otherwise, configuration is loaded from classpath, using + * /META-INF/logformatter.properties file. + *

    + * The format of the file is: + *

      + *
    • pattern=replacement + *
    • "Pattern" uses regular expression syntax. + * You can escape "=" in pattern with "\=" syntax. + *
    • "Replacement" string can refer to capturing groups defined in pattern using usual + * regular expression syntax "$n", where "n" stands for the number of the group. + *
    • ISO 8859-1 encoding is used. + *
    • Empty lines and lines starting with # or ! are ignored. + * Lines containing wrong patterns are ignored. + *
    + * Configuration file is loaded during class loading. + * Any errors which occur in this class are printed in {@code System.err}. + *

    + * Sample configuration file can be found in etc/logformatter.properties. + *

    + * This class is not intended to be used standalone. + * It is a part of implementation of {@link com.devexperts.logging} package. + * + * @see DetailedLogLayout + * @see DxFeedPatternLayout + */ +@ThreadSafe +public class LogFormatter extends Formatter { + public static final String CONFIG_FILE_PROPERTY = "logformatter.properties"; + public static final String DEFAULT_CONFIG_FILE = "/META-INF/logformatter.properties"; + + private static final String LINE_SEP = DefaultLogging.getProperty("line.separator", "\n"); + private static final BiConsumer STRING_FORMAT_CONSUMER = (s, sb) -> sb.append(s); + + // ============== Instance ================ + private final ThreadLocal formatter; + + public LogFormatter() { + this(TimeZone.getDefault()); + } + + public LogFormatter(TimeZone zone) { + formatter = ThreadLocal.withInitial(() -> new LocalFormatter(zone)); + } + + /** + * Used by {@link java.util.logging} logging. + * Formats messages with the same format as for log4j. + */ + @Override + public String format(LogRecord record) { + String s = format(getLevelChar(record.getLevel()), + record.getMillis(), Thread.currentThread().getName(), + record.getLoggerName(), formatMessage(record)); + if (record.getThrown() != null) { + StringWriter sw = new StringWriter(); + sw.write(s); + record.getThrown().printStackTrace(new PrintWriter(sw)); + s = sw.toString(); + } + return s; + } + + /** + * Formats log message. + * + * @return Formatted message. + * @throws NullPointerException when threadName, loggerName, or msg are {@code null}. + */ + public String format(char levelChar, long time, String threadName, String loggerName, String msg) { + StringBuilder out = formatter.get().appendTo; + out.setLength(0); + try { + format(levelChar, time, threadName, loggerName, STRING_FORMAT_CONSUMER, msg, out); + return out.toString(); + } finally { + boolean trim = out.length() > 1000; + out.setLength(0); + if (trim) + out.trimToSize(); + } + } + + void format(char levelChar, long time, String threadName, String loggerName, + BiConsumer msgConsumer, Object msg, StringBuilder out) + { + out.append(levelChar).append(" "); + formatter.get().appendTime(time, out); + out.append(" "); + int threadPosition = out.length(); + out.append("["); + out.append(ThreadNameFormatter.formatThreadName(time, threadName)); + out.append("] "); + out.append(loggerName, loggerName.lastIndexOf('.') + 1, loggerName.length()); + out.append(" - "); + int messagePosition = out.length(); + msgConsumer.accept(msg, out); + out.append(LINE_SEP); + if (out.length() > messagePosition && out.charAt(messagePosition) == '\b') + out.delete(threadPosition, messagePosition + 1); + } + + static char getLevelChar(Level level) { + int levelInt = level.intValue(); + if (levelInt <= Level.FINEST.intValue()) + return 'T'; + if (levelInt <= Level.FINE.intValue()) + return 'D'; + if (levelInt <= Level.INFO.intValue()) + return 'I'; + if (levelInt <= Level.WARNING.intValue()) + return 'W'; + return 'E'; + } + + private static class LocalFormatter { + private final Calendar calendar; + private final char[] timeBuffer = new char[17]; // fixed-size buffer for time data "yyMMdd HHmmss.SSS" + private final StringBuilder appendTo = new StringBuilder(); + + private long translatedMinute; + + private LocalFormatter(TimeZone zone) { + calendar = Calendar.getInstance(zone); + Arrays.fill(timeBuffer, 0, 17, ' '); + timeBuffer[13] = '.'; + } + + private void appendTime(long time, StringBuilder out) { + if (time < translatedMinute || time >= translatedMinute + TimeUtil.MINUTE) { + // set year, month, day, hour and minute + calendar.setTimeInMillis(time); + translatedMinute = calendar.getTime().getTime() - calendar.get(Calendar.SECOND) * 1000 - calendar.get(Calendar.MILLISECOND); + print2(0, calendar.get(Calendar.YEAR)); + print2(2, calendar.get(Calendar.MONTH) + 1); + print2(4, calendar.get(Calendar.DAY_OF_MONTH)); + print2(7, calendar.get(Calendar.HOUR_OF_DAY)); + print2(9, calendar.get(Calendar.MINUTE)); + } + + // set seconds and milliseconds + int millis = (int)(time - translatedMinute); + print2(11, millis / 1000); + print2(14, millis / 10); + timeBuffer[16] = (char)('0' + millis % 10); + out.append(timeBuffer); + } + + private void print2(int offset, int value) { + timeBuffer[offset] = (char)('0' + (value / 10) % 10); + timeBuffer[offset + 1] = (char)('0' + value % 10); + } + } +} diff --git a/fome-can-bridge/src/main/java/com/devexperts/logging/Logging.java b/fome-can-bridge/src/main/java/com/devexperts/logging/Logging.java new file mode 100644 index 0000000000..c18f98dae1 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/logging/Logging.java @@ -0,0 +1,237 @@ +/* + * !++ + * QDS - Quick Data Signalling Library + * !- + * Copyright (C) 2002 - 2020 Devexperts LLC + * !- + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. + * If a copy of the MPL was not distributed with this file, You can obtain one at + * http://mozilla.org/MPL/2.0/. + * !__ + */ +package com.devexperts.logging; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.logging.Level; + +/** + * Main logging class. + * It supports use of both log4j and {@link java.util.logging} logging facilities. + *

    First it tries to use log4j logging. If this attempt fails, it uses {@link java.util.logging} logging, + * so you'll always have some logging running. + *

    Usage pattern: + *
    public class SomeClass { + *
    private static final Logging log = Logging.getLogging(SomeClass.class); + *
    } + *
    + * + * @see Log4jLogging + * @see DefaultLogging + * @see LogFormatter + */ +public class Logging { + private static final boolean TRACE_LOGGING = Logging.class.desiredAssertionStatus(); + + private static final int FINEST_INT = Level.FINEST.intValue(); + private static final int FINE_INT = Level.FINE.intValue(); + + public static final String LOG_CLASS_NAME = "log.className"; + public static final String LOG_FILE_PROPERTY = "log.file"; + public static final String ERR_FILE_PROPERTY = "err.file"; + public static final String LOG_MAX_FILE_SIZE_PROPERTY = "log.maxFileSize"; + public static final String ERR_MAX_FILE_SIZE_PROPERTY = "err.maxFileSize"; + public static final String DEFAULT_MAX_FILE_SIZE = "900M"; + + private static final ConcurrentMap INSTANCES = new ConcurrentHashMap<>(); + private static final DefaultLogging IMPL = configure(DefaultLogging.getProperty(LOG_CLASS_NAME, "com.devexperts.logging.Log4j2Logging")); + + public static Logging getLogging(Class clazz) { + return getLogging(clazz.getName()); + } + + private static Logging getLogging(String name) { + Logging logging = INSTANCES.get(name); + if (logging != null) + return logging; + INSTANCES.putIfAbsent(name, new Logging(name)); + return INSTANCES.get(name); + } + + /** + * Programmatically reconfigures logging to a specified file. This method + * overrides the value of {@link #LOG_FILE_PROPERTY} system property. + */ + public static void configureLogFile(String log_file) { + reportErrors(IMPL, IMPL.configureLogFileAndConsole(log_file)); + } + + // ========== Instance ========= + + private final Object peer; + + /** + * This constructor is designed for abstract framework classes like BeanBase or + * DAOBase that extend Logging to decorate messages by + * overriding {@link #decorateLogMessage(String)} method. + */ + protected Logging() { + peer = IMPL.getPeer(getClass().getName()); + } + + protected Logging(String name) { + peer = IMPL.getPeer(name); + } + + /** + * Returns category name of this logging. + */ + public final String getName() { + return IMPL.getName(peer); + } + + /** + * Changes default {@link #debugEnabled()} behaviour for this logging instance. + * Use this method to turn off debugging information for classes that do not + * need to print their debugging information in production environment. + */ + public final void configureDebugEnabled(boolean defaultDebugEnabled) { + IMPL.setDebugEnabled(peer, Boolean.valueOf(DefaultLogging.getProperty(getName() + ".debug", + String.valueOf(defaultDebugEnabled)))); + } + + public final boolean debugEnabled() { + return IMPL.debugEnabled(peer); + } + + public final void trace(String message) { + log(Level.FINEST, message, null); + } + + public final void debug(String message) { + log(Level.FINE, message, null); + } + + public final void debug(String message, Throwable t) { + log(Level.FINE, message, t); + } + + public final void info(String message) { + log(Level.INFO, message, null); + } + + public final void info(String message, Throwable t) { + log(Level.INFO, message, t); + } + + public final void warn(String message) { + log(Level.WARNING, message, null); + } + + public final void warn(String message, Throwable t) { + log(Level.WARNING, message, t); + } + + public final void error(String message) { + log(Level.SEVERE, message, null); + } + + public final void error(String message, Throwable t) { + log(Level.SEVERE, message, t); + } + + public final RuntimeException log(RuntimeException e) { + log(Level.SEVERE, e.getMessage(), e); + return e; + } + + /** + * Decorates log message (reformatting, auditing, etc). + * This method is invoked one time for each logging event. + */ + protected String decorateLogMessage(String msg) { + return msg; + } + + // ========== Internal ========== + + private void log(Level level, String msg, Throwable t) { + if (TRACE_LOGGING) + TraceLogging.log(getName(), level, decorateLogMessage(msg), t); + int levelInt = level.intValue(); + if (levelInt <= FINEST_INT) + return; // trace never goes to regular log + if (levelInt <= FINE_INT && !IMPL.debugEnabled(peer)) + return; + try { + msg = decorateLogMessage(msg == null ? "" : msg); + } catch (Throwable tt) { + IMPL.log(peer, Level.SEVERE, "Failed to decorate log message", tt); + } + IMPL.log(peer, level, msg, t); + } + + /** + * At first tries to use logging from passed class name. If this attempt fails, tries to use log4j logging. + * If this attempt fails, it uses log4j2 logging. If this attempt fails, it uses {@link java.util.logging} logging. + * + * @return Logging implementation + */ + private static DefaultLogging configure(String className) { + DefaultLogging impl = null; + Map errors = new LinkedHashMap<>(); + if (!className.isEmpty()) { + try { + impl = (DefaultLogging)Class.forName(className).newInstance(); + errors.putAll(impl.configure()); + } catch (Throwable t) { + // failed to configure with passed class name + impl = null; + if (!(t instanceof LinkageError) && !(t.getCause() instanceof LinkageError)) { +// errors.put(className + " link", new IllegalStateException(t)); + } + } + } +/* + if (impl == null) { + try { + impl = (DefaultLogging)Class.forName("com.devexperts.logging.Log4jLogging").newInstance(); + errors.putAll(impl.configure()); + } catch (Throwable t) { + // failed to configure log4j + impl = null; + // LinkageError means that log4j is not found at all, otherwise it was found but our config is wrong + if (!(t instanceof LinkageError) && !(t.getCause() instanceof LinkageError)) { + errors.put("log4j link", new IllegalStateException(t)); + } + } + } + */ + if (impl == null) { + try { + impl = (DefaultLogging)Class.forName("com.devexperts.logging.Log4j2Logging").newInstance(); + errors.putAll(impl.configure()); + } catch (Throwable t) { + // failed to configure log4j2 + impl = null; + if (!(t instanceof LinkageError) && !(t.getCause() instanceof LinkageError)) { + //errors.put("log4j2 link", new IllegalStateException(t)); + } + } + } + if (impl == null) { + impl = new DefaultLogging(); + errors.putAll(impl.configure()); + } + + reportErrors(impl, errors); + return impl; + } + + private static void reportErrors(DefaultLogging impl, Map errors) { + for (Map.Entry entry : errors.entrySet()) + impl.log(impl.getPeer("config"), Level.SEVERE, entry.getKey(), entry.getValue()); + } +} diff --git a/fome-can-bridge/src/main/java/com/devexperts/logging/ThreadNameFormatter.java b/fome-can-bridge/src/main/java/com/devexperts/logging/ThreadNameFormatter.java new file mode 100644 index 0000000000..9bf571b17e --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/logging/ThreadNameFormatter.java @@ -0,0 +1,40 @@ +/* + * !++ + * QDS - Quick Data Signalling Library + * !- + * Copyright (C) 2002 - 2020 Devexperts LLC + * !- + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. + * If a copy of the MPL was not distributed with this file, You can obtain one at + * http://mozilla.org/MPL/2.0/. + * !__ + */ +package com.devexperts.logging; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * Simplified ThreadNameFormatter — returns thread names as-is. + * The original used IndexedSet for complex pattern-based renaming; bridge doesn't need that. + */ +class ThreadNameFormatter implements Comparable { + + private static final ConcurrentHashMap NAME_CACHE = new ConcurrentHashMap<>(); + + static String formatThreadName(long time, String threadName) { + return NAME_CACHE.computeIfAbsent(threadName, k -> k); + } + + final String thread_name; + final String replacement_name; + long last_time; + + ThreadNameFormatter(String thread_name, String replacement_name) { + this.thread_name = thread_name; + this.replacement_name = replacement_name; + } + + public int compareTo(ThreadNameFormatter o) { + return Long.compare(last_time, o.last_time); + } +} diff --git a/fome-can-bridge/src/main/java/com/devexperts/logging/TraceLogging.java b/fome-can-bridge/src/main/java/com/devexperts/logging/TraceLogging.java new file mode 100644 index 0000000000..860655a901 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/logging/TraceLogging.java @@ -0,0 +1,146 @@ +/* + * !++ + * QDS - Quick Data Signalling Library + * !- + * Copyright (C) 2002 - 2020 Devexperts LLC + * !- + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. + * If a copy of the MPL was not distributed with this file, You can obtain one at + * http://mozilla.org/MPL/2.0/. + * !__ + */ +package com.devexperts.logging; + +import java.io.PrintStream; +import java.util.Arrays; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Level; + +/** + * This is a small in-memory cyclic buffer to keep the log for debugging concurrency problems in order to + * reconstruct what was going on immediately before tests crashes, without actually writing all debug logging + * to the log file or console normally. It is used by some tests when assertions are enabled, + * otherwise this class should not even be loaded. + */ +public class TraceLogging { + private static final int STOPPED_INDEX = -1; + private static final int SIZE = Integer.parseInt(System.getProperty("TraceLogging.size", "4096")); // must be power of 2 + private static final int MASK = SIZE - 1; + + private static final int THREAD_OFS = 0; + private static final int NAME_OFS = 1; + private static final int LEVEL_OFS = 2; + private static final int MSG_OFS = 3; + private static final int THROWABLE_OFS = 4; + private static final int DATA_CNT = 5; + + private static final long[] timeQueue = new long[SIZE]; + private static final Object[] dataQueue = new Object[SIZE * DATA_CNT]; + private static final AtomicInteger index = new AtomicInteger(STOPPED_INDEX); + private static int lastIndex = STOPPED_INDEX; + + static { + if ((SIZE & MASK) != 0) + throw new RuntimeException("Size must be a power of two"); + } + + /** + * Restarts trace logging from scratch (old log entries are cleared). + * Use it at the beginning of the test. + */ + public static synchronized void restart() { + Arrays.fill(dataQueue, null); + lastIndex = STOPPED_INDEX; + index.compareAndSet(STOPPED_INDEX, 0); + } + + /** + * Stops trace logging. + */ + public static void stop() { + stopIndex(-1); + } + + /** + * Adds log entry. It is invoked from {@link Logging#log(Level, String, Throwable)} method when + * assertions are enabled. + */ + public static void log(String loggerName, Level level, String msg, Throwable t) { + append(nextIndex(), loggerName, level, msg, t); + } + + /** + * Adds last entry and stops trace logging. + */ + public static void logAndStop(Class where, String msg) { + logAndStop(where, msg, null); + } + + /** + * Adds last entry with exception and stops trace logging. + */ + public static void logAndStop(Class where, String msg, Throwable t) { + append(stopIndex(0), where.getName(), Level.INFO, msg, t); + } + + private static void append(int i, String loggerName, Level level, String msg, Throwable t) { + if (i < 0) + return; + timeQueue[i] = System.currentTimeMillis(); + dataQueue[i * DATA_CNT + THREAD_OFS] = Thread.currentThread(); + dataQueue[i * DATA_CNT + NAME_OFS] = loggerName; + dataQueue[i * DATA_CNT + LEVEL_OFS] = level; + dataQueue[i * DATA_CNT + MSG_OFS] = msg; + dataQueue[i * DATA_CNT + THROWABLE_OFS] = t; + } + + /** + * Dumps last entries from this trace log. + * It should be called after {@link #stop()} or {@link #logAndStop(Class, String)}. + * It does nothing if called more than once after stop or before stop. + */ + public static synchronized void dump(PrintStream out, String title) { + int stop = lastIndex; + if (stop < 0) + return; + lastIndex = STOPPED_INDEX; + LogFormatter formatter = new LogFormatter(); + out.println("********************** Dump trace log for " + title); + int i = stop; + do { + i = (i + 1) & MASK; + Thread thread = (Thread)dataQueue[i * DATA_CNT + THREAD_OFS]; + if (thread == null) + continue; + String loggerName = (String)dataQueue[i * DATA_CNT + NAME_OFS]; + Level level = (Level)dataQueue[i * DATA_CNT + LEVEL_OFS]; + String msg = (String)dataQueue[i * DATA_CNT + MSG_OFS]; + Throwable t = (Throwable)dataQueue[i * DATA_CNT + THROWABLE_OFS]; + long time = timeQueue[i]; + out.print("* "); + out.print(formatter.format(LogFormatter.getLevelChar(level), time, thread.getName(), loggerName, msg)); + if (t != null) + t.printStackTrace(out); + } while (i != stop); + out.println("********************** Done trace log for " + title); + } + + private static int nextIndex() { + int result; + do { + result = index.get(); + } while (result >= 0 && !index.compareAndSet(result, (result + 1) & MASK)); + return result; + } + + private static synchronized int stopIndex(int lastOffset) { + int result; + do { + result = index.get(); + } while (result >= 0 && !index.compareAndSet(result, STOPPED_INDEX)); + if (result >= 0) + lastIndex = (result + lastOffset) & MASK; + return result; + } + +} diff --git a/fome-can-bridge/src/main/java/com/devexperts/util/TimeUtil.java b/fome-can-bridge/src/main/java/com/devexperts/util/TimeUtil.java new file mode 100644 index 0000000000..7b1d4875c6 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/devexperts/util/TimeUtil.java @@ -0,0 +1,9 @@ +package com.devexperts.util; + +/** + * Minimal time constants used by the logging library. + */ +public class TimeUtil { + public static final long SECOND = 1000L; + public static final long MINUTE = 60 * SECOND; +} diff --git a/fome-can-bridge/src/main/java/com/fome/canbridge/Main.java b/fome-can-bridge/src/main/java/com/fome/canbridge/Main.java new file mode 100644 index 0000000000..6f20a0b2b0 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/fome/canbridge/Main.java @@ -0,0 +1,107 @@ +package com.fome.canbridge; + +import com.rusefi.io.serial.AbstractIoStream; +import com.rusefi.io.tcp.BinaryProtocolProxy; +import com.rusefi.io.tcp.TcpConnector; +import com.rusefi.io.can.SocketCANIoStream; +import com.rusefi.io.can.SlCanIoStream; +import com.rusefi.ui.StatusConsumer; + +import java.io.IOException; +import java.util.concurrent.*; + +import com.fome.canbridge.view.BridgeGui; +import com.formdev.flatlaf.FlatDarkLaf; +import javax.swing.*; + +public class Main { + static { + // Workaround for Windows "Access Denied" when extracting to default %TEMP% + String tempDir = System.getProperty("user.home") + "/.jSerialComm"; + System.setProperty("java.io.tmpdir", tempDir); + java.io.File dir = new java.io.File(tempDir); + if (!dir.exists()) { + dir.mkdirs(); + } + } + + public static void main(String[] args) { + FlatDarkLaf.setup(); + if (args.length > 0) { + runCli(args); + } else { + SwingUtilities.invokeLater(() -> { + BridgeGui gui = new BridgeGui(); + gui.setOnConnect(config -> connect(config, gui)); + gui.setVisible(true); + }); + } + } + + private static void runCli(String[] args) { + System.out.println("FOME CAN Bridge starting (CLI mode)..."); + } + + private static void connect(BridgeGui.BridgeConfig config, BridgeGui gui) { + int retries = 3; + int timeoutSeconds = 10; + ExecutorService executor = Executors.newSingleThreadExecutor(); + + AbstractIoStream canStream = null; + + try { + for (int i = 1; i <= retries; i++) { + final int attempt = i; + gui.logLine("Connection attempt " + i + " of " + retries + " (Timeout: " + timeoutSeconds + "s)..."); + + Future future = executor.submit(() -> { + if ("SLCAN".equalsIgnoreCase(config.type)) { + return new SlCanIoStream(config.device, config.rxId, config.txId); + } else { + return new SocketCANIoStream(config.device, config.rxId, config.txId); + } + }); + + try { + canStream = future.get(timeoutSeconds, TimeUnit.SECONDS); + if (canStream != null) break; + } catch (TimeoutException e) { + gui.logLine("Attempt " + attempt + " timed out after " + timeoutSeconds + "s."); + future.cancel(true); + } catch (ExecutionException e) { + gui.logLine("Error: " + e.getCause().getMessage()); + } catch (InterruptedException e) { + gui.logLine("Connection interrupted."); + Thread.currentThread().interrupt(); + break; + } + + if (i < retries) { + try { Thread.sleep(2000); } catch (InterruptedException ignored) {} + } + } + } finally { + executor.shutdownNow(); + } + + if (canStream == null) { + gui.logLine("CRITICAL: Failed to connect after " + retries + " attempts."); + gui.setConnectEnabled(true); + return; + } + + gui.logLine("Connected successfully to CAN."); + try { + startProxy(canStream, gui); + gui.logLine("TCP Proxy started on port " + TcpConnector.DEFAULT_PORT); + } catch (IOException e) { + gui.logLine("Failed to start proxy: " + e.getMessage()); + gui.setConnectEnabled(true); + } + } + + private static void startProxy(AbstractIoStream tsStream, StatusConsumer status) throws IOException { + BinaryProtocolProxy.createProxy(tsStream, TcpConnector.DEFAULT_PORT, clientRequest -> { + }, status); + } +} diff --git a/fome-can-bridge/src/main/java/com/fome/canbridge/view/BridgeGui.java b/fome-can-bridge/src/main/java/com/fome/canbridge/view/BridgeGui.java new file mode 100644 index 0000000000..5e991bc108 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/fome/canbridge/view/BridgeGui.java @@ -0,0 +1,180 @@ +package com.fome.canbridge.view; + +import com.rusefi.ui.StatusConsumer; +import net.miginfocom.swing.MigLayout; +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.util.function.Consumer; + +public class BridgeGui extends JFrame implements StatusConsumer { + private final JTextArea logArea = new JTextArea(); + private final JComboBox deviceCombo = new JComboBox<>(new String[]{"can0"}); + private final JButton scanButton = new JButton("Scan"); + private final JTextField txIdField = new JTextField("0x100"); + private final JTextField rxIdField = new JTextField("0x102"); + private final JComboBox typeCombo = new JComboBox<>(new String[]{"SLCAN", "SocketCAN"}); + + private final JButton connectButton = new JButton("Connect Bridge"); + private final JButton helpButton = new JButton("Help & Guide"); + + private Consumer onConnect; + + public static class BridgeConfig { + public String type; + public String device; + public int txId; + public int rxId; + } + + public BridgeGui() { + super("FOME CAN Bridge"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setSize(600, 500); + setLayout(new BorderLayout()); + + JPanel mainPanel = new JPanel(new MigLayout("fillx, insets 20", "[right]10[grow]5[right]10[right]", "[]10[]10[]10[]10[]10[]20[]")); + mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); + + // Header + JLabel header = new JLabel("Connection Settings"); + header.setFont(header.getFont().deriveFont(Font.BOLD, 16f)); + mainPanel.add(header, "span 2, wrap, gapbottom 15"); + + // Type + mainPanel.add(new JLabel("Adapter Type:")); + mainPanel.add(typeCombo, "growx"); + mainPanel.add(createHelpButton("SocketCAN: standard Linux driver.\nSLCAN: STM32 Virtual COM port, CANable, etc."), "wrap"); + + // Device + mainPanel.add(new JLabel("Device Name:")); + deviceCombo.setEditable(true); + mainPanel.add(deviceCombo, "growx"); + mainPanel.add(scanButton); + mainPanel.add(createHelpButton("Linux: can0, can1, etc.\nWindows COM Ports: COM1, COM2, etc.\nClick 'Scan' to find connected devices."), "wrap"); + + + // TX ID + mainPanel.add(new JLabel("PC -> ECU ID (TX):")); + mainPanel.add(txIdField, "growx"); + mainPanel.add(createHelpButton("The CAN ID that TunerStudio will use to send commands. Default: 0x100."), "wrap"); + + // RX ID + mainPanel.add(new JLabel("ECU -> PC ID (RX):")); + mainPanel.add(rxIdField, "growx"); + mainPanel.add(createHelpButton("The CAN ID that the ECU will use to send data back. Default: 0x102."), "wrap"); + + // Buttons + JPanel btnPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + btnPanel.add(helpButton); + btnPanel.add(connectButton); + mainPanel.add(btnPanel, "span 3, growx, gaptop 20"); + + // Log Area + logArea.setEditable(false); + logArea.setBackground(new Color(30, 30, 30)); + logArea.setForeground(new Color(100, 200, 100)); + logArea.setFont(new Font("Monospaced", Font.PLAIN, 12)); + logArea.setBorder(new EmptyBorder(5, 5, 5, 5)); + JScrollPane scroll = new JScrollPane(logArea); + scroll.setBorder(BorderFactory.createTitledBorder("System Log")); + + add(mainPanel, BorderLayout.NORTH); + add(scroll, BorderLayout.CENTER); + + connectButton.addActionListener(this::handleConnect); + helpButton.addActionListener(e -> showGeneralHelp()); + scanButton.addActionListener(e -> handleScan()); + typeCombo.addActionListener(e -> handleScan()); // Auto-scan on type change + + setLocationRelativeTo(null); + handleScan(); // Initial scan + } + + private void handleScan() { + String type = (String) typeCombo.getSelectedItem(); + new Thread(() -> { + java.util.List devices = new java.util.ArrayList<>(); + if ("SLCAN".equalsIgnoreCase(type)) { + try { + for (com.fazecast.jSerialComm.SerialPort port : com.fazecast.jSerialComm.SerialPort.getCommPorts()) { + devices.add(port.getSystemPortName()); + } + } catch (Exception e) { + devices.add("COM1"); + } + } else { + devices.add("can0"); + } + SwingUtilities.invokeLater(() -> { + deviceCombo.removeAllItems(); + for (String d : devices) deviceCombo.addItem(d); + }); + }).start(); + } + + private JButton createHelpButton(String tip) { + JButton btn = new JButton("?"); + btn.setMargin(new Insets(2, 6, 2, 6)); + btn.setToolTipText(tip); + btn.addActionListener(e -> JOptionPane.showMessageDialog(this, tip, "Parameter Help", JOptionPane.INFORMATION_MESSAGE)); + return btn; + } + + private void showGeneralHelp() { + String helpText = "" + + "

    FOME CAN Bridge Guide

    " + + "

    This tool allows TunerStudio to connect to your ECU over the CAN bus instead of USB/Serial.

    " + + "

    Requirements:

    " + + "
      " + + "
    • Linux: SocketCAN (can0) or SLCAN (/dev/ttyACM0).
    • " + + "
    • Windows: SLCAN (COM port, e.g. CANable).
    • " + + "
    • Firmware: Yellowbox firmware with 'TS over CAN' enabled.
    • " + + "
    " + + "

    How to use:

    " + + "
      " + + "
    1. Configure the IDs to match your ECU settings.
    2. " + + "
    3. Click 'Connect Bridge'.
    4. " + + "
    5. In TunerStudio, select Connection Type: TCP/IP.
    6. " + + "
    7. Set Server: localhost and Port: 29001.
    8. " + + "
    " + + ""; + JOptionPane.showMessageDialog(this, helpText, "FOME CAN Bridge - General Help", JOptionPane.PLAIN_MESSAGE); + } + + private void handleConnect(ActionEvent e) { + if (onConnect != null) { + try { + BridgeConfig config = new BridgeConfig(); + config.type = (String) typeCombo.getSelectedItem(); + config.device = (String) deviceCombo.getSelectedItem(); + + config.txId = Integer.decode(txIdField.getText()); + config.rxId = Integer.decode(rxIdField.getText()); + + connectButton.setEnabled(false); + logLine("Starting connection..."); + new Thread(() -> onConnect.accept(config)).start(); + } catch (Exception ex) { + logLine("Error: " + ex.getMessage()); + } + } + } + + @Override + public void logLine(String status) { + SwingUtilities.invokeLater(() -> { + logArea.append(status + "\n"); + logArea.setCaretPosition(logArea.getDocument().getLength()); + }); + } + + public void setOnConnect(Consumer onConnect) { + this.onConnect = onConnect; + } + + public void setConnectEnabled(boolean enabled) { + SwingUtilities.invokeLater(() -> connectButton.setEnabled(enabled)); + } +} diff --git a/fome-can-bridge/src/main/java/com/opensr5/io/DataListener.java b/fome-can-bridge/src/main/java/com/opensr5/io/DataListener.java new file mode 100644 index 0000000000..ac396ee92c --- /dev/null +++ b/fome-can-bridge/src/main/java/com/opensr5/io/DataListener.java @@ -0,0 +1,8 @@ +package com.opensr5.io; + +/** + * Callback for incoming data bytes. + */ +public interface DataListener { + void onDataArrived(byte[] data); +} diff --git a/fome-can-bridge/src/main/java/com/opensr5/io/WriteStream.java b/fome-can-bridge/src/main/java/com/opensr5/io/WriteStream.java new file mode 100644 index 0000000000..ca2ad7de44 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/opensr5/io/WriteStream.java @@ -0,0 +1,27 @@ +package com.opensr5.io; + +import java.io.IOException; + +/** + * Basic write operations for a stream. + */ +public interface WriteStream { + void write(byte[] bytes) throws IOException; + void flush() throws IOException; + + default void writeShort(int v) throws IOException { + byte[] packet = new byte[2]; + packet[0] = (byte) (v >> 8); + packet[1] = (byte) v; + write(packet); + } + + default void writeInt(int v) throws IOException { + byte[] packet = new byte[4]; + packet[0] = (byte) (v >> 24); + packet[1] = (byte) (v >> 16); + packet[2] = (byte) (v >> 8); + packet[3] = (byte) v; + write(packet); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/CompatibleFunction.java b/fome-can-bridge/src/main/java/com/rusefi/CompatibleFunction.java new file mode 100644 index 0000000000..7e80aa63a4 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/CompatibleFunction.java @@ -0,0 +1,8 @@ +package com.rusefi; + +/** + * reducing Android level down from 24 + */ +public interface CompatibleFunction { + R apply(T t); +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/Listener.java b/fome-can-bridge/src/main/java/com/rusefi/Listener.java new file mode 100644 index 0000000000..064e0f8f85 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/Listener.java @@ -0,0 +1,10 @@ +package com.rusefi; + +public interface Listener { + void onResult(T parameter); + + static Listener empty() { + return parameter -> { + }; + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/NamedThreadFactory.java b/fome-can-bridge/src/main/java/com/rusefi/NamedThreadFactory.java new file mode 100644 index 0000000000..674f2d60d9 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/NamedThreadFactory.java @@ -0,0 +1,30 @@ +package com.rusefi; + +import org.jetbrains.annotations.NotNull; + +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicInteger; + +public class NamedThreadFactory implements ThreadFactory { + private final AtomicInteger counter = new AtomicInteger(); + private final String name; + private final boolean isDaemon; + + public NamedThreadFactory(String name) { + this(name, false); + } + + public NamedThreadFactory(String name, boolean isDaemon) { + this.name = name; + this.isDaemon = isDaemon; + } + + @Override + public Thread newThread(@NotNull Runnable r) { + Thread t = Executors.defaultThreadFactory().newThread(r); + t.setName(name + counter.incrementAndGet()); + t.setDaemon(isDaemon); + return t; + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/Timeouts.java b/fome-can-bridge/src/main/java/com/rusefi/Timeouts.java new file mode 100644 index 0000000000..3dd5f00eb6 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/Timeouts.java @@ -0,0 +1,24 @@ +package com.rusefi; + +/** + * All i/o timeouts in one place + */ +public interface Timeouts { + int SECOND = 1000; + int MINUTE = 60 * SECOND; + int COMMAND_TIMEOUT_SEC = 10; // seconds + + /** + * The longest justified binary communication delay would be related to stm32f407 flash saving time + */ + int BINARY_IO_TIMEOUT = Integer.getInteger("BINARY_IO_TIMEOUT", 10) * SECOND; + int READ_IMAGE_TIMEOUT = 60 * SECOND; + + // local connection is happy with 1 second, but remote TCP is asking for 5 seconds + int CONNECTION_RESTART_DELAY = Integer.getInteger("CONNECTION_RESTART_DELAY", 10) * SECOND; + + int CMD_TIMEOUT = 20 * SECOND; + int SET_ENGINE_TIMEOUT = 60 * SECOND; + int TEXT_PULL_PERIOD = 100; +} + diff --git a/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java b/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java new file mode 100644 index 0000000000..154644f1ef --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java @@ -0,0 +1,36 @@ +package com.rusefi.binaryprotocol; + +import com.rusefi.config.generated.Integration; + +/** + * Slimmed-down BinaryProtocol — only provides findCommand() for proxy logging. + */ +public class BinaryProtocol { + + public static String findCommand(byte command) { + switch (command) { + case Integration.TS_COMMAND_F: + return "PROTOCOL"; + case Integration.TS_CRC_CHECK_COMMAND: + return "CRC_CHECK"; + case Integration.TS_BURN_COMMAND: + return "BURN"; + case Integration.TS_HELLO_COMMAND: + return "HELLO"; + case Integration.TS_READ_COMMAND: + return "READ"; + case Integration.TS_GET_TEXT: + return "TS_GET_TEXT"; + case Integration.TS_GET_FIRMWARE_VERSION: + return "GET_FW_VERSION"; + case Integration.TS_CHUNK_WRITE_COMMAND: + return "WRITE_CHUNK"; + case Integration.TS_OUTPUT_COMMAND: + return "TS_OUTPUT_COMMAND"; + case Integration.TS_RESPONSE_OK: + return "TS_RESPONSE_OK"; + default: + return "command " + (char) command + "/" + command; + } + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IncomingDataBuffer.java b/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IncomingDataBuffer.java new file mode 100644 index 0000000000..30737586ca --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IncomingDataBuffer.java @@ -0,0 +1,234 @@ +package com.rusefi.binaryprotocol; + +import com.devexperts.logging.Logging; +import com.rusefi.Timeouts; + +import com.rusefi.util.HexBinary; +import com.rusefi.io.serial.AbstractIoStream; +import etch.util.CircularByteBuffer; +import net.jcip.annotations.ThreadSafe; + +import java.io.EOFException; +import java.io.IOException; +import java.util.Arrays; +import java.util.Objects; + +import static com.devexperts.logging.Logging.getLogging; +import static com.rusefi.binaryprotocol.IoHelper.*; + +/** + * Thread-safe byte queue with blocking {@link #waitForBytes} method + *

    + * Andrey Belomutskiy, (c) 2013-2020 + * 6/20/2015. + */ +@ThreadSafe +public class IncomingDataBuffer { + private static final Logging log = getLogging(IncomingDataBuffer.class); + + static { + log.configureDebugEnabled(false); + } + + private static final int BUFFER_SIZE = 32768; + private final String loggingPrefix; + + /** + * buffer for queued response bytes from controller + */ + private final CircularByteBuffer cbb = new CircularByteBuffer(BUFFER_SIZE); + private final AbstractIoStream.StreamStats streamStats; + + public IncomingDataBuffer(String loggingPrefix, AbstractIoStream.StreamStats streamStats) { + this.loggingPrefix = loggingPrefix; + this.streamStats = Objects.requireNonNull(streamStats, "streamStats"); + } + + public byte[] getPacket(String msg) throws EOFException { + return getPacket(Timeouts.BINARY_IO_TIMEOUT, msg, System.currentTimeMillis()); + } + + public byte[] getPacket(int timeoutMs, String msg) throws EOFException { + return getPacket(timeoutMs, msg, System.currentTimeMillis()); + } + + /** + * why does this method return NULL in case of timeout?! + * todo: there is a very similar BinaryProtocolServer#readPromisedBytes which throws exception in case of timeout + */ + public byte[] getPacket(int timeoutMs, String msg, long start) throws EOFException { + boolean isTimeout = waitForBytes(msg + " header", start, 2); + if (isTimeout) { + if (log.debugEnabled()) + log.info("Timeout waiting for header"); + return null; + } + + int packetSize = swap16(getShort()); + // if (log.debugEnabled()) + // log.debug(loggingPrefix + "Got packet size " + packetSize); + if (packetSize < 0) + return null; + + isTimeout = waitForBytes(timeoutMs, loggingPrefix + msg + " body", start, packetSize + 4); + if (isTimeout) + return null; + + byte[] packet = new byte[packetSize]; + getData(packet); + + // Compare the sent and computed CRCs, make sure they match! + int packetCrc = swap32(getInt()); + int actualCrc = getCrc32(packet); + if (actualCrc != packetCrc) { + String errorMessage = String.format("CRC mismatch on recv packet for %s: got %x but expected %x", msg, actualCrc, packetCrc); + System.out.println(errorMessage); + log.warn(errorMessage); + return null; + } + if (log.debugEnabled() && packet.length < 10) + log.info("got packet: " + Arrays.toString(packet)); + + onPacketArrived(); + // if (log.debugEnabled()) + // log.trace("packet arrived: " + Arrays.toString(packet) + ": crc OK"); + + return packet; + } + + public void onPacketArrived() { + streamStats.onPacketArrived(); + } + + public void addData(byte[] freshData) { + synchronized (cbb) { + if (cbb.size() - cbb.length() < freshData.length) { + log.error("buffer overflow not expected"); + throw new IllegalStateException("buffer overflow not expected"); + } + cbb.put(freshData); + cbb.notifyAll(); + } + if (log.debugEnabled()) + log.info(freshData.length + " byte(s) arrived, total " + cbb.length()); + } + + /** + * Blocking method which would wait for specified amount of data + * + * @return true in case of timeout, false if everything is fine + */ + public boolean waitForBytes(String loggingMessage, long startTimestamp, int count) { + return waitForBytes(Timeouts.BINARY_IO_TIMEOUT, loggingMessage, startTimestamp, count); + } + + /** + * @return true in case of timeout, false if we have received count of bytes + */ + public boolean waitForBytes(int timeoutMs, String loggingMessage, long startTimestamp, int count) { + //log.info(loggingMessage + ": waiting for " + count + " byte(s)"); + synchronized (cbb) { + while (cbb.length() < count) { + int timeout = (int) (startTimestamp + timeoutMs - System.currentTimeMillis()); + if (timeout <= 0) { + log.info(loggingMessage + ": timeout " + timeoutMs + "ms. Got only " + cbb.length() + " byte(s) while expecting " + count); + return true; // timeout. Sad face. + } + try { + cbb.wait(timeout); + } catch (InterruptedException e) { + return true; // thread thrown away, handling like a timeout + } + } + } + return false; // looks good! + } + + public int getPendingCount() { + synchronized (cbb) { + return cbb.length(); + } + } + + public int dropPending() { + // todo: when exactly do we need this logic? + synchronized (cbb) { + int pending = cbb.length(); + if (pending > 0) { + log.error("dropPending: Unexpected pending data: " + pending + " byte(s)"); + byte[] bytes = new byte[pending]; + cbb.get(bytes); + log.error("DROPPED FROM BUFFER: " + HexBinary.printByteArray(bytes)); + } + return pending; + } + } + + public int getByte() throws EOFException { + streamStats.onArrived(1); + synchronized (cbb) { + return cbb.getByte(); + } + } + + public int getShort() throws EOFException { + streamStats.onArrived(2); + synchronized (cbb) { + int result = cbb.getShort(); + if (log.debugEnabled()) + log.info("Consumed short, " + cbb.length() + " remaining"); + return result; + } + } + + public int getInt() throws EOFException { + streamStats.onArrived(4); + synchronized (cbb) { + int result = cbb.getInt(); + if (log.debugEnabled()) + log.info("Consumed int, " + cbb.length() + " remaining"); + return result; + } + } + + public void getData(byte[] packet) { + synchronized (cbb) { + cbb.get(packet); + if (log.debugEnabled()) + log.info(packet.length + " consumed, " + cbb.length() + " remaining"); + } + streamStats.onArrived(packet.length); + } + + public byte readByte() throws IOException { + return readByte(Timeouts.BINARY_IO_TIMEOUT); + } + + public byte readByte(int timeoutMs) throws IOException { + boolean isTimeout = waitForBytes(timeoutMs, loggingPrefix + "readByte", System.currentTimeMillis(), 1); + if (isTimeout) + throw new EOFException("Timeout in readByte " + timeoutMs); + return (byte) getByte(); + } + + public int readInt() throws EOFException { + boolean isTimeout = waitForBytes(loggingPrefix + "readInt", System.currentTimeMillis(), 4); + if (isTimeout) + throw new EOFException("Timeout in readInt "); + return swap32(getInt()); + } + + public short readShort() throws EOFException { + boolean isTimeout = waitForBytes(loggingPrefix + "readShort", System.currentTimeMillis(), 2); + if (isTimeout) + throw new EOFException("Timeout in readShort"); + return (short) swap16(getShort()); + } + + public void read(byte[] packet) throws EOFException { + boolean isTimeout = waitForBytes(loggingPrefix + "read", System.currentTimeMillis(), packet.length); + if (isTimeout) + throw new EOFException("Timeout while waiting for " + packet.length + " byte(s)"); + getData(packet); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IoHelper.java b/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IoHelper.java new file mode 100644 index 0000000000..0469d61325 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/binaryprotocol/IoHelper.java @@ -0,0 +1,85 @@ +package com.rusefi.binaryprotocol; + +import com.devexperts.logging.Logging; +import com.rusefi.config.generated.Integration; +import com.rusefi.util.HexBinary; + +import java.util.zip.CRC32; + +/** + * Utility methods for {@link BinaryProtocol} + * + * Andrey Belomutskiy, (c) 2013-2020 + * 3/6/2015 + */ +public class IoHelper { + private static final Logging log = Logging.getLogging(IoHelper.class); + + static { + log.configureDebugEnabled(false); + } + + public static int getCrc32(byte[] packet) { + return getCrc32(packet, 0, packet.length); + } + + private static int getCrc32(byte[] packet, int offset, int length) { + CRC32 c = new CRC32(); + c.update(packet, offset, length); + return (int) c.getValue(); + } + + /** + * this method adds two bytes for packet size before and four bytes for IoHelper after + */ + public static byte[] makeCrc32Packet(byte[] command) { + if (log.debugEnabled()) + log.info("makeCrc32Packet: raw packet " + HexBinary.printByteArray(command)); + byte[] packet = new byte[command.length + 6]; + + putShort(packet, 0, command.length); + + System.arraycopy(command, 0, packet, 2, command.length); + int crc = getCrc32(command); + + if (log.debugEnabled()) + log.info(String.format("makeCrc32Packet: CRC 0x%08X", crc)); + putInt(packet, packet.length - 4, crc); + return packet; + } + + public static int swap16(int x) { + return (((x & 0xff) << 8) | ((x >> 8) & 0xff)); + } + + public static int swap32(int x) { + return (((x) >> 24) & 0xff) | (((x) << 8) & 0xff0000) | (((x) >> 8) & 0xff00) | (((x) << 24) & 0xff000000); + } + + public static void putInt(byte[] packet, int offset, int value) { + packet[offset + 3] = (byte) value; + packet[offset + 2] = (byte) (value >> 8); + packet[offset + 1] = (byte) (value >> 16); + packet[offset] = (byte) (value >> 24); + } + + public static void putShort(byte[] packet, int offset, int value) { + packet[offset + 1] = (byte) value; + packet[offset] = (byte) (value >> 8); + } + + public static boolean checkResponseCode(byte[] response) { + return checkResponseCode(response, (byte) Integration.TS_RESPONSE_OK); + } + + /** + * @return true if packet has the expected response code + */ + public static boolean checkResponseCode(byte[] response, byte code) { + return response != null && response.length > 0 && response[0] == code; + } + + public static int getInt(byte firstByte, byte secondByte) { + return firstByte * 256 + (secondByte & 0xFF); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/config/generated/Integration.java b/fome-can-bridge/src/main/java/com/rusefi/config/generated/Integration.java new file mode 100644 index 0000000000..6dd54cf745 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/config/generated/Integration.java @@ -0,0 +1,18 @@ +// Slimmed down from auto-generated — only constants used by the CAN bridge +package com.rusefi.config.generated; + +public class Integration { + public static final char TS_BURN_COMMAND = 'B'; + public static final char TS_CHUNK_WRITE_COMMAND = 'C'; + public static final char TS_COMMAND_F = 'F'; + public static final char TS_CRC_CHECK_COMMAND = 'k'; + public static final char TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY = '8'; + public static final char TS_GET_FIRMWARE_VERSION = 'V'; + public static final char TS_GET_PROTOCOL_VERSION_COMMAND_F = 'F'; + public static final char TS_GET_TEXT = 'G'; + public static final char TS_HELLO_COMMAND = 'S'; + public static final char TS_OUTPUT_COMMAND = 'O'; + public static final String TS_PROTOCOL = "001"; + public static final char TS_READ_COMMAND = 'R'; + public static final int TS_RESPONSE_OK = 0; +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/config/generated/VariableRegistryValues.java b/fome-can-bridge/src/main/java/com/rusefi/config/generated/VariableRegistryValues.java new file mode 100644 index 0000000000..fa9559becf --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/config/generated/VariableRegistryValues.java @@ -0,0 +1,13 @@ +package com.rusefi.config.generated; + +/** + * Slimmed down to only the constants actually used by the CAN bridge. + * Originally auto-generated with 1800+ lines of unused constants. + */ +public class VariableRegistryValues { + public static final int CAN_ECU_SERIAL_RX_ID = 0x710; + public static final int CAN_ECU_SERIAL_TX_ID = 0x720; + public static final String TS_PROTOCOL = "001"; + public static final int TS_RESPONSE_BURN_OK = 4; + public static final String TS_SIGNATURE = "rusEFI master.2026.02.26.f407-discovery.3105081426"; +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/config/generated/readme.md b/fome-can-bridge/src/main/java/com/rusefi/config/generated/readme.md new file mode 100644 index 0000000000..422aa6458a --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/config/generated/readme.md @@ -0,0 +1,3 @@ +All classes in this folder are generated using ConfigGenerator + +See ```gen_config.bat``` \ No newline at end of file diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/ByteReader.java b/fome-can-bridge/src/main/java/com/rusefi/io/ByteReader.java new file mode 100644 index 0000000000..7680bf2c6c --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/ByteReader.java @@ -0,0 +1,46 @@ +package com.rusefi.io; + +import com.devexperts.logging.Logging; +import com.opensr5.io.DataListener; +import com.rusefi.io.serial.AbstractIoStream; +import com.rusefi.io.tcp.BinaryProtocolServer; + +import java.io.IOException; +import java.util.Arrays; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +import static com.devexperts.logging.Logging.getLogging; + +public interface ByteReader { + Logging log = getLogging(ByteReader.class); + + static void runReaderLoop(String loggingPrefix, DataListener listener, ByteReader reader, AbstractIoStream ioStream) { + /** + * Threading of the whole input/output does not look healthy at all! + * + * @see #COMMUNICATION_EXECUTOR + */ + Executor threadExecutor = Executors.newSingleThreadExecutor(BinaryProtocolServer.getThreadFactory(loggingPrefix + "TCP reader")); + + threadExecutor.execute(() -> { + log.info(loggingPrefix + "Running TCP connection loop"); + + byte[] inputBuffer = new byte[64 * 1024]; + while (!ioStream.isClosed()) { + try { + int result = reader.read(inputBuffer); + if (result == -1) + throw new IOException("TcpIoStream: End of input?"); + listener.onDataArrived(Arrays.copyOf(inputBuffer, result)); + } catch (IOException e) { + log.error("TcpIoStream: End of connection " + e); + ioStream.close(); + return; + } + } + }); + } + + int read(byte[] buffer) throws IOException; +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/IoStream.java b/fome-can-bridge/src/main/java/com/rusefi/io/IoStream.java new file mode 100644 index 0000000000..1f8c1999de --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/IoStream.java @@ -0,0 +1,76 @@ +package com.rusefi.io; + +import com.opensr5.io.DataListener; +import com.opensr5.io.WriteStream; +import com.rusefi.binaryprotocol.BinaryProtocol; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.binaryprotocol.IoHelper; +import com.rusefi.io.serial.AbstractIoStream; +import com.rusefi.io.serial.StreamStatistics; +import com.rusefi.io.tcp.BinaryProtocolServer; +import org.jetbrains.annotations.NotNull; + +import java.io.Closeable; +import java.io.EOFException; +import java.io.IOException; + +import static com.devexperts.logging.Logging.getLogging; + +/** + * Physical bi-directional controller communication level + *

    + * Andrey Belomutskiy, (c) 2013-2020 + *

    + * 5/11/2015. + */ +public interface IoStream extends WriteStream, Closeable, StreamStatistics { + + @NotNull + default BinaryProtocolServer.Packet readPacket() throws IOException { + short length = readShort(); + return BinaryProtocolServer.readPromisedBytes(getDataBuffer(), length); + } + + default void sendPacket(BinaryProtocolServer.Packet packet) throws IOException { + writeShort(packet.getPacket().length); + write(packet.getPacket()); + writeInt(packet.getCrc()); + flush(); + onActivity(); + } + + long latestActivityTime(); + + void addCloseListener(Runnable listener); + + Object getIoLock(); + + void onActivity(); + + default void sendPacket(byte[] plainPacket) throws IOException { + if (plainPacket.length == 0) + throw new IllegalArgumentException("Empty packets are not valid."); + byte[] packet = IoHelper.makeCrc32Packet(plainPacket); + // todo: verbose mode printHexBinary(plainPacket)) + //log.debug(getLoggingPrefix() + "Sending packet " + BinaryProtocol.findCommand(plainPacket[0]) + " length=" + plainPacket.length); + write(packet); + flush(); + } + + /** + * @param listener would be invoked from unknown implementation-dependent thread + */ + void setInputListener(DataListener listener); + + boolean isClosed(); + + AbstractIoStream.StreamStats getStreamStats(); + + void close(); + + IncomingDataBuffer getDataBuffer(); + + default short readShort() throws EOFException { + return getDataBuffer().readShort(); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/HexUtil.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/HexUtil.java new file mode 100644 index 0000000000..0740877873 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/HexUtil.java @@ -0,0 +1,61 @@ +package com.rusefi.io.can; + +public class HexUtil { + private static final String HEX_STRING = "0123456789ABCDEF"; + public static final byte[] HEX_BYTE_ARRAY = HEX_STRING.getBytes(); + public static final char[] HEX_CHAR_ARRAY = HexUtil.HEX_STRING.toCharArray(); + + public static byte[] asBytes(String hex) { + if (hex.indexOf(' ') >= 0) { + hex = hex.replaceAll(" ", ""); + } + if (hex.startsWith("0x")) { + hex = hex.substring(2); + } + return hexToBytes(hex); + } + + public static String asString(byte[] input) { + StringBuilder sb = new StringBuilder(); + for (byte b : input) { + int i = b & 0xff; + sb.append(HEX_STRING.charAt(i / 16)); + sb.append(HEX_STRING.charAt(i % 16)); + } + return sb.toString(); + } + + public static byte[] hexToBytes(CharSequence s) { + return hexToBytes(s, 0); + } + + private static byte[] hexToBytes(CharSequence s, int off) { + byte[] bs = new byte[off + (1 + s.length()) / 2]; + hexToBytes(s, bs, off); + return bs; + } + + public static void hexToBytes(CharSequence s, byte[] out, int off) throws NumberFormatException, IndexOutOfBoundsException { + int slen = s.length(); + if ((slen % 2) != 0) { + byte nibble = (byte) Character.digit(s.charAt(0), 16); + out[off] = nibble; + hexToBytes(s.subSequence(1, s.length()), out, off + 1); + return; + } + if (out.length < off + slen / 2) { + throw new IndexOutOfBoundsException("Output buffer too small for input (" + out.length + "<" + off + slen / 2 + ")"); + } + // Safe to assume the string is even length + byte firstNibble, secondNibble; + for (int i = 0; i < slen; i += 2) { + firstNibble = (byte) Character.digit(s.charAt(i), 16); + secondNibble = (byte) Character.digit(s.charAt(i + 1), 16); + if ((firstNibble < 0) || (secondNibble < 0)) { + // todo: huh? when does char produce a negative byte?! + throw new NumberFormatException(); + } + out[off + i / 2] = (byte) (firstNibble << 4 | secondNibble); + } + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/SlCanIoStream.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/SlCanIoStream.java new file mode 100644 index 0000000000..a83024862e --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/SlCanIoStream.java @@ -0,0 +1,135 @@ +package com.rusefi.io.can; + +import com.fazecast.jSerialComm.SerialPort; +import com.fazecast.jSerialComm.SerialPortDataListener; +import com.fazecast.jSerialComm.SerialPortEvent; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.io.can.isotp.IsoTpCanDecoder; +import com.rusefi.io.can.isotp.IsoTpConnector; +import com.rusefi.io.serial.AbstractIoStream; +import com.rusefi.util.HexBinary; +import java.io.IOException; +public class SlCanIoStream extends AbstractIoStream { + private final SerialPort sp; + private final IncomingDataBuffer dataBuffer; + private final int rxId; + private final int txId; + private final StringBuilder lineBuffer = new StringBuilder(); + private java.util.concurrent.CountDownLatch waitLatch; + + public SlCanIoStream(String port, int rxId, int txId) throws IOException { + this.rxId = rxId; + this.txId = txId; + try { + this.sp = SerialPort.getCommPort(port); + } catch (LinkageError e) { + throw new IOException("jSerialComm native library failed to load. This can happen due to an architecture mismatch or blocked temp directory: " + e.getMessage(), e); + } + this.sp.setBaudRate(2000000); + if (!this.sp.openPort()) { + throw new IOException("Failed to open SLCAN port: " + port); + } + + // Setup SLCAN: Close, Set Speed (S6=500k), Open + sendString("C"); + sendString("S6"); + sendString("O"); + + this.dataBuffer = createDataBuffer(); + } + + private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder() { + @Override + protected void onTpFirstFrame() { + // Send flow control to the ECU's RX ID + sendString("t" + String.format("%03X", txId) + "83000000000000000"); // 0x30 = Flow Control + } + }; + + + private void sendString(String s) { + byte[] bytes = (s + "\r").getBytes(); + sp.writeBytes(bytes, bytes.length); + } + + @Override + public void write(byte[] bytes) throws IOException { + IsoTpConnector connector = new IsoTpConnector(txId) { + @Override + public void sendCanData(byte[] total) { + // Formatting as 'tiiildd...' + String msg = String.format("t%03X%d%s", + canId(), + total.length, + HexUtil.asString(total)); + sendString(msg); + } + + @Override + public void receiveData() { + waitLatch = new java.util.concurrent.CountDownLatch(1); + try { + if (!waitLatch.await(500, java.util.concurrent.TimeUnit.MILLISECONDS)) { + // Timeout waiting for flow control, but we'll continue anyway + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + }; + IsoTpConnector.sendStrategy(bytes, connector); + } + + @Override + public void setInputListener(com.opensr5.io.DataListener listener) { + sp.addDataListener(new SerialPortDataListener() { + @Override + public int getListeningEvents() { return SerialPort.LISTENING_EVENT_DATA_AVAILABLE; } + @Override + public void serialEvent(SerialPortEvent event) { + byte[] data = new byte[sp.bytesAvailable()]; + sp.readBytes(data, data.length); + for (byte b : data) { + if (b == '\r') { + processLine(lineBuffer.toString(), listener); + lineBuffer.setLength(0); + } else if (b != '\n') { + lineBuffer.append((char)b); + } + } + } + }); + } + + private void processLine(String line, com.opensr5.io.DataListener listener) { + if (line.startsWith("t")) { // Standard frame + try { + int id = Integer.parseInt(line.substring(1, 4), 16); + int len = Integer.parseInt(line.substring(4, 5)); + if (id == rxId) { + String hexData = line.substring(5, 5 + (len * 2)); + byte[] data = HexUtil.hexToBytes(hexData); + byte[] decoded = canDecoder.decodePacket(data); + if (decoded != null) { + if (waitLatch != null) { + waitLatch.countDown(); + } + listener.onDataArrived(decoded); + } + } + } catch (Exception e) { + // Malformed or different ID + } + } + } + + @Override + public IncomingDataBuffer getDataBuffer() { return dataBuffer; } + + @Override + public void close() { + sendString("C"); + sp.closePort(); + super.close(); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANHelper.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANHelper.java new file mode 100644 index 0000000000..068a6e0b8a --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANHelper.java @@ -0,0 +1,63 @@ +package com.rusefi.io.can; + +import com.devexperts.logging.Logging; +import com.rusefi.uds.CanConnector; +import org.jetbrains.annotations.NotNull; +import tel.schich.javacan.CanChannels; +import tel.schich.javacan.CanFrame; +import tel.schich.javacan.NetworkDevice; +import tel.schich.javacan.RawCanChannel; + +import java.io.IOException; + +import static com.devexperts.logging.Logging.getLogging; +import static tel.schich.javacan.CanFrame.FD_NO_FLAGS; +import static tel.schich.javacan.CanSocketOptions.RECV_OWN_MSGS; + +public class SocketCANHelper { + private static Logging log = getLogging(SocketCANIoStream.class); + + @NotNull + public static RawCanChannel createSocket() { + final RawCanChannel socket; + try { + NetworkDevice canInterface = NetworkDevice.lookup(System.getProperty("CAN_DEVICE_NAME", "can0")); + socket = CanChannels.newRawChannel(); + socket.bind(canInterface); + + socket.configureBlocking(true); // we want reader thread to wait for messages + socket.setOption(RECV_OWN_MSGS, false); + } catch (IOException e) { + throw new IllegalStateException("Error looking up", e); + } + return socket; + } + + public static void send(int id, byte[] payload, RawCanChannel channel) { + CanFrame packet = CanFrame.create(id, FD_NO_FLAGS, payload); + try { + channel.write(packet); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + public static CanConnector.CanPacket read(RawCanChannel socket) throws IOException { + CanFrame rx = socket.read(); + if (log.debugEnabled()) + log.debug("GOT " + String.format("%X", rx)); + byte[] raw = new byte[rx.getDataLength()]; + rx.getData(raw, 0, raw.length); + return new CanConnector.CanPacket() { + @Override + public int id() { + return rx.getId(); + } + + @Override + public byte[] payload() { + return raw; + } + }; + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANIoStream.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANIoStream.java new file mode 100644 index 0000000000..d3d635160c --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/SocketCANIoStream.java @@ -0,0 +1,148 @@ +package com.rusefi.io.can; + +import com.devexperts.logging.Logging; +import com.opensr5.io.DataListener; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.uds.CanConnector; +import com.rusefi.util.HexBinary; +import com.rusefi.io.IoStream; +import com.rusefi.io.can.isotp.IsoTpCanDecoder; +import com.rusefi.io.can.isotp.IsoTpConnector; +import com.rusefi.io.serial.AbstractIoStream; +import com.rusefi.io.tcp.BinaryProtocolServer; +import org.jetbrains.annotations.Nullable; +import tel.schich.javacan.RawCanChannel; + +import java.io.IOException; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +import static com.devexperts.logging.Logging.getLogging; +import static com.rusefi.config.generated.VariableRegistryValues.*; + +public class SocketCANIoStream extends AbstractIoStream { + static Logging log = getLogging(SocketCANIoStream.class); + private final IncomingDataBuffer dataBuffer; + private final RawCanChannel socket; + + private int rxId; + private int txId; + + private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder() { + @Override + protected void onTpFirstFrame() { + sendCanPacket(IsoTpCanDecoder.FLOW_CONTROL); + } + }; + + private final IsoTpConnector isoTpConnector; + + private void sendCanPacket(byte[] total) { + if (log.debugEnabled()) + log.debug("-------sendIsoTp " + total.length + " byte(s):"); + + if (log.debugEnabled()) + log.debug("Sending " + HexBinary.printHexBinary(total)); + + SocketCANHelper.send(isoTpConnector.canId(), total, socket); + } + + public SocketCANIoStream(String deviceName, int rxId, int txId) { + this.rxId = rxId; + this.txId = txId; + this.isoTpConnector = new IsoTpConnector(txId) { // PC TX ID -> ECU RX ID + @Override + public void sendCanData(byte[] total) { + sendCanPacket(total); + } + + @Override + public void receiveData() { + readHardwarePacket(rxId); + } + }; + System.setProperty("CAN_DEVICE_NAME", deviceName); + socket = SocketCANHelper.createSocket(); + // buffer could only be created once socket variable is not null due to callback + dataBuffer = createDataBuffer(); + } + + public SocketCANIoStream() { + this("can0", CAN_ECU_SERIAL_TX_ID, CAN_ECU_SERIAL_RX_ID); + } + + @Nullable + public static SocketCANIoStream create() { + return new SocketCANIoStream(); + } + + @Override + public void write(byte[] bytes) throws IOException { + IsoTpConnector.sendStrategy(bytes, isoTpConnector); + } + + @Override + public void setInputListener(DataListener listener) { + Executor threadExecutor = Executors.newSingleThreadExecutor(BinaryProtocolServer.getThreadFactory("SocketCAN reader")); + threadExecutor.execute(() -> { + while (!isClosed()) { + readOnePacket(listener); + } + }); + } + + private interface SocketListener { + void onPacket(CanConnector.CanPacket msg); + } + + private void readOnePacket(DataListener listener) { + readHardwarePacket((rx) -> { + byte[] decode = canDecoder.decodePacket(rx.payload()); + if (decode != null) { + listener.onDataArrived(decode); + } + }); + } + + private void readHardwarePacket(int expectedId) { + readHardwarePacket((rx) -> { + if (rx.id() != expectedId) { + return; + } + canDecoder.decodePacket(rx.payload()); + }); + } + + private void readHardwarePacket(SocketListener listener) { + try { + CanConnector.CanPacket rx = SocketCANHelper.read(socket); + listener.onPacket(rx); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private void readOnePacket_old(DataListener listener) { + try { + CanConnector.CanPacket rx = SocketCANHelper.read(socket); + if (rx.id() != this.rxId) { + if (log.debugEnabled()) + log.debug("Skipping non " + String.format("%X", this.rxId) + " packet: " + String.format("%X", rx.id())); + return; + } + byte[] decode = canDecoder.decodePacket(rx.payload()); + listener.onDataArrived(decode); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public IncomingDataBuffer getDataBuffer() { + return dataBuffer; + } + + public static IoStream createStream() { + return new SocketCANIoStream(); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpCanDecoder.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpCanDecoder.java new file mode 100644 index 0000000000..247bf7a2c3 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpCanDecoder.java @@ -0,0 +1,108 @@ +package com.rusefi.io.can.isotp; + +import com.devexperts.logging.Logging; +import com.rusefi.util.HexBinary; + +import java.util.Arrays; + +import static com.rusefi.util.HexBinary.printHexBinary; + +/** + * ISO 15765-2 or ISO-TP (Transport Layer) CAN multi-frame decoder state + * + * @see IsoTpConnector + */ +public abstract class IsoTpCanDecoder { + public static final byte[] FLOW_CONTROL = {0x30, 0, 0, 0, 0, 0, 0, 0}; + private static final Logging log = Logging.getLogging(IsoTpCanDecoder.class); + + static { + log.configureDebugEnabled(false); + } + + private final static int ISO_TP_FRAME_FLOW_CONTROL = 3; + + private final static int FC_ContinueToSend = 0; + private final int isoHeaderByteIndex; + + private int waitingForNumBytes = 0; + private int waitingForFrameIndex = 0; + private boolean isComplete; + + public IsoTpCanDecoder() { + this(0); + } + + public IsoTpCanDecoder(int isoHeaderByteIndex) { + this.isoHeaderByteIndex = isoHeaderByteIndex; + } + + @Deprecated // warning: Some native CAN drivers use larger data buffers + public byte[] decodePacket(byte[] data) { + return decodePacket(data, data.length); + } + + public byte[] decodePacket(byte[] data, int dataSize) { +// log.info("Decoding " + printHexBinary(data)); + int frameType = (data[isoHeaderByteIndex] >> 4) & 0xf; + int numBytesAvailable; + int frameIdx; + int dataOffset; + switch (frameType) { + case IsoTpConstants.ISO_TP_FRAME_SINGLE: + numBytesAvailable = data[isoHeaderByteIndex] & 0xf; + dataOffset = isoHeaderByteIndex + 1; + this.waitingForNumBytes = 0; + if (log.debugEnabled()) + log.debug("ISO_TP_FRAME_SINGLE " + numBytesAvailable); + setComplete(true); + break; + case IsoTpConstants.ISO_TP_FRAME_FIRST: + this.waitingForNumBytes = ((data[isoHeaderByteIndex] & 0xf) << 8) | data[isoHeaderByteIndex + 1]; + if (log.debugEnabled()) + log.debug("Total expected: " + waitingForNumBytes); + this.waitingForFrameIndex = 1; + numBytesAvailable = Math.min(this.waitingForNumBytes, dataSize - 2 - isoHeaderByteIndex); + waitingForNumBytes -= numBytesAvailable; + dataOffset = isoHeaderByteIndex + 2; + onTpFirstFrame(); + break; + case IsoTpConstants.ISO_TP_FRAME_CONSECUTIVE: + frameIdx = data[isoHeaderByteIndex] & 0xf; + if (this.waitingForNumBytes < 0 || this.waitingForFrameIndex != frameIdx) { + throw new IllegalStateException("ISO_TP_FRAME_CONSECUTIVE: That's an abnormal situation, and we probably should react? waitingForNumBytes=" + waitingForNumBytes + " waitingForFrameIndex=" + waitingForFrameIndex + " frameIdx=" + frameIdx); + } + this.waitingForFrameIndex = (this.waitingForFrameIndex + 1) & 0xf; + numBytesAvailable = Math.min(this.waitingForNumBytes, dataSize - 1 - isoHeaderByteIndex); + dataOffset = isoHeaderByteIndex + 1; + waitingForNumBytes -= numBytesAvailable; + if (log.debugEnabled()) + log.debug("ISO_TP_FRAME_CONSECUTIVE Got " + numBytesAvailable + " byte(s), still expecting: " + waitingForNumBytes + " byte(s)"); + setComplete(waitingForNumBytes == 0); + break; + case ISO_TP_FRAME_FLOW_CONTROL: + int flowStatus = data[isoHeaderByteIndex] & 0xf; + int blockSize = data[isoHeaderByteIndex + 1]; + int separationTime = data[isoHeaderByteIndex + 2]; + if (flowStatus == FC_ContinueToSend && blockSize == 0 && separationTime == 0) + return new byte[0]; + throw new IllegalStateException("ISO_TP_FRAME_FLOW_CONTROL: should we just ignore the FC frame? " + flowStatus + " " + blockSize + " " + separationTime); + default: + throw new IllegalStateException("Unknown frame type"); + } + byte[] bytes = Arrays.copyOfRange(data, dataOffset, dataOffset + numBytesAvailable); + if (log.debugEnabled()) + log.debug(numBytesAvailable + " bytes(s) arrived in this packet: " + HexBinary.printByteArray(bytes)); + return bytes; + } + + protected abstract void onTpFirstFrame(); + + public void setComplete(boolean isComplete) { + this.isComplete = isComplete; + } + + public boolean isComplete() { + return isComplete; + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConnector.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConnector.java new file mode 100644 index 0000000000..541a828e1d --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConnector.java @@ -0,0 +1,78 @@ +package com.rusefi.io.can.isotp; + +import com.devexperts.logging.Logging; +import com.rusefi.util.HexBinary; +import org.jetbrains.annotations.NotNull; + +/** + * @see IsoTpCanDecoder for RX operations + */ +public abstract class IsoTpConnector { + private final static Logging log = Logging.getLogging(IsoTpConnector.class); + + private final int canId; + + protected IsoTpConnector(int canId) { + this.canId = canId; + } + + public int canId() { + return canId; + } + + public static void sendStrategy(byte[] bytes, IsoTpConnector connector) { + log.info("-------sendBytesToCan " + bytes.length + " byte(s):"); + + log.info(HexBinary.printHexBinary(bytes)); + + + // 1 frame + if (bytes.length <= 7) { + connector.sendCanFrame((IsoTpConstants.ISO_TP_FRAME_SINGLE << 4) | bytes.length, bytes, 0, bytes.length); + return; + } + + // multiple frames + // send the first header frame + connector.sendCanFrame((IsoTpConstants.ISO_TP_FRAME_FIRST << 4) | ((bytes.length >> 8) & 0x0f), bytes.length & 0xff, bytes, 0, 6); + // get a flow control frame + connector.receiveData(); + + // send the rest of the data + int idx = 1; + int offset = 6; + int remaining = bytes.length - 6; + while (remaining > 0) { + int len = Math.min(remaining, 7); + // send the consecutive frames + connector.sendCanFrame((IsoTpConstants.ISO_TP_FRAME_CONSECUTIVE << 4) | ((idx++) & 0x0f), bytes, offset, len); + offset += len; + remaining -= len; + } + } + + public void sendCanFrame(int hdr0, byte[] data, int offset, int dataLength) { + sendCanData(new byte[]{(byte) hdr0}, data, offset, dataLength); + } + + public void sendCanFrame(int hdr0, int hdr1, byte[] data, int dataOffset, int dataLength) { + sendCanData(new byte[]{(byte) hdr0, (byte) hdr1}, data, dataOffset, dataLength); + } + + private void sendCanData(byte[] hdr, byte[] data, int dataOffset, int dataLength) { + byte[] total = combineArrays(hdr, data, dataOffset, dataLength); + sendCanData(total); + } + + @NotNull + public static byte[] combineArrays(byte[] hdr, byte[] data, int dataOffset, int dataLength) { + byte[] total = new byte[hdr.length + dataLength]; + System.arraycopy(hdr, 0, total, 0, hdr.length); + System.arraycopy(data, dataOffset, total, hdr.length, dataLength); + return total; + } + + public abstract void sendCanData(byte[] total); + + public abstract void receiveData(); +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConstants.java b/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConstants.java new file mode 100644 index 0000000000..288a9f4549 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/can/isotp/IsoTpConstants.java @@ -0,0 +1,7 @@ +package com.rusefi.io.can.isotp; + +public class IsoTpConstants { + final static int ISO_TP_FRAME_SINGLE = 0; + final static int ISO_TP_FRAME_FIRST = 1; + final static int ISO_TP_FRAME_CONSECUTIVE = 2; +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/serial/AbstractIoStream.java b/fome-can-bridge/src/main/java/com/rusefi/io/serial/AbstractIoStream.java new file mode 100644 index 0000000000..801b7429fd --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/serial/AbstractIoStream.java @@ -0,0 +1,113 @@ +package com.rusefi.io.serial; + +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.io.IoStream; + +import java.io.IOException; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.atomic.AtomicInteger; + +public abstract class AbstractIoStream implements IoStream { + private boolean isClosed; + + // todo: this ioLock needs better documentation! + private final Object ioLock = new Object(); + + protected final StreamStats streamStats = new StreamStats(); + private final AtomicInteger bytesOut = new AtomicInteger(); + private long latestActivity; + private final CopyOnWriteArrayList closeListeners = new CopyOnWriteArrayList<>(); + + public IncomingDataBuffer createDataBuffer() { + IncomingDataBuffer incomingData = new IncomingDataBuffer(getClass().getSimpleName(), getStreamStats()); + setInputListener(incomingData::addData); + return incomingData; + } + + @Override + public StreamStats getStreamStats() { + return streamStats; + } + + @Override + public void close() { + if (isClosed) + return; + isClosed = true; + for (Runnable listener : closeListeners) + listener.run(); + } + + @Override + public void addCloseListener(Runnable listener) { + closeListeners.add(listener); + } + + @Override + public Object getIoLock() { + return ioLock; + } + + @Override + public void write(byte[] bytes) throws IOException { + bytesOut.addAndGet(bytes.length); + } + + @Override + public void flush() throws IOException { + } + + @Override + public void onActivity() { + latestActivity = System.currentTimeMillis(); + } + + public long latestActivityTime() { + return latestActivity; + } + + @Override + public boolean isClosed() { + return isClosed; + } + + public class StreamStats { + private long previousPacketArrivalTime; + private int maxPacketGap; + private final AtomicInteger totalBytesArrived = new AtomicInteger(); + + public long getPreviousPacketArrivalTime() { + return previousPacketArrivalTime; + } + + /** + * @return maximum time in MS between full valid packets received via this stream + */ + public int getMaxPacketGap() { + return maxPacketGap; + } + + public void onPacketArrived() { + long now = System.currentTimeMillis(); + if (previousPacketArrivalTime != 0) { + maxPacketGap = (int) Math.max(maxPacketGap, now - previousPacketArrivalTime); + } + previousPacketArrivalTime = now; + AbstractIoStream.this.onActivity(); + } + + public void onArrived(int length) { + totalBytesArrived.addAndGet(length); + } + } + + @Override + public int getBytesIn() { + return streamStats.totalBytesArrived.get(); + } + + @Override + public int getBytesOut() { + return bytesOut.get(); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/serial/RateCounter.java b/fome-can-bridge/src/main/java/com/rusefi/io/serial/RateCounter.java new file mode 100644 index 0000000000..530b6ede32 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/serial/RateCounter.java @@ -0,0 +1,23 @@ +package com.rusefi.io.serial; + +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Simple counter for rate tracking — slimmed down from the original. + */ +public class RateCounter { + private final AtomicInteger count = new AtomicInteger(); + + public void add() { + count.incrementAndGet(); + } + + public int getCurrentRate() { + return count.get(); + } + + @Override + public String toString() { + return String.valueOf(count.get()); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/serial/StreamStatistics.java b/fome-can-bridge/src/main/java/com/rusefi/io/serial/StreamStatistics.java new file mode 100644 index 0000000000..74a55bafa7 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/serial/StreamStatistics.java @@ -0,0 +1,7 @@ +package com.rusefi.io.serial; + +public interface StreamStatistics { + int getBytesIn(); + + int getBytesOut(); +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java new file mode 100644 index 0000000000..6c85712422 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java @@ -0,0 +1,98 @@ +package com.rusefi.io.tcp; + +import com.devexperts.logging.Logging; +import com.rusefi.CompatibleFunction; +import com.rusefi.Listener; +import com.rusefi.Timeouts; +import com.rusefi.binaryprotocol.BinaryProtocol; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.binaryprotocol.IoHelper; +import com.rusefi.config.generated.Integration; +import com.rusefi.io.IoStream; +import com.rusefi.ui.StatusConsumer; +import org.jetbrains.annotations.NotNull; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.net.Socket; + +import static com.devexperts.logging.Logging.getLogging; +import static com.rusefi.config.generated.Integration.TS_PROTOCOL; + +/** + * Takes any IoStream and exposes it as local TCP/IP server socket. + * Slimmed down — removed cloud proxy and NetworkConnector references. + */ +public class BinaryProtocolProxy { + private static final Logging log = getLogging(BinaryProtocolProxy.class); + public static final int USER_IO_TIMEOUT = 10 * Timeouts.MINUTE; + + /** + * @return starts a thread and returns a reference to ServerSocketReference + */ + public static ServerSocketReference createProxy(IoStream targetEcuSocket, int serverProxyPort, ClientApplicationActivityListener clientApplicationActivityListener, StatusConsumer statusConsumer) throws IOException { + CompatibleFunction clientSocketRunnableFactory = clientSocket -> () -> { + TcpIoStream clientStream = null; + try { + clientStream = new TcpIoStream("[[proxy]] ", clientSocket); + runProxy(targetEcuSocket, clientStream, clientApplicationActivityListener, USER_IO_TIMEOUT); + } catch (IOException e) { + statusConsumer.logLine("ERROR BinaryProtocolProxy::run " + e); + if (clientStream != null) { + try { clientStream.close(); } catch (Exception ignored) {} + } + } + }; + return BinaryProtocolServer.tcpServerSocket(serverProxyPort, "proxy", clientSocketRunnableFactory, Listener.empty(), statusConsumer); + } + + public interface ClientApplicationActivityListener { + ClientApplicationActivityListener VOID = (BinaryProtocolServer.Packet clientRequest) -> { + }; + + void onActivity(BinaryProtocolServer.Packet clientRequest); + } + + public static void runProxy(IoStream targetEcu, IoStream clientStream, ClientApplicationActivityListener listener, int timeoutMs) throws IOException { + while (!targetEcu.isClosed()) { + byte firstByte = clientStream.getDataBuffer().readByte(timeoutMs); + if (firstByte == Integration.TS_GET_PROTOCOL_VERSION_COMMAND_F) { + log.info("Responding to GET_PROTOCOL_VERSION with " + TS_PROTOCOL); + clientStream.write(TS_PROTOCOL.getBytes()); + clientStream.flush(); + continue; + } + BinaryProtocolServer.Packet clientRequest = readClientRequest(clientStream.getDataBuffer(), firstByte); + byte[] packet = clientRequest.getPacket(); + listener.onActivity(clientRequest); + + BinaryProtocolServer.Packet controllerResponse; + synchronized (targetEcu) { + sendToTarget(targetEcu, clientRequest); + controllerResponse = targetEcu.readPacket(); + } + + if (log.debugEnabled()) + log.debug("Relaying controller response length=" + controllerResponse.getPacket().length); + clientStream.sendPacket(controllerResponse); + } + } + + @NotNull + private static BinaryProtocolServer.Packet readClientRequest(IncomingDataBuffer in, byte firstByte) throws IOException { + byte secondByte = in.readByte(); + int length = IoHelper.getInt(firstByte, secondByte); + + return BinaryProtocolServer.readPromisedBytes(in, length); + } + + private static void sendToTarget(IoStream targetOutputStream, BinaryProtocolServer.Packet packet) throws IOException { + DataInputStream dis = new DataInputStream(new ByteArrayInputStream(packet.getPacket())); + byte command = (byte) dis.read(); + + if (log.debugEnabled()) + log.debug("Relaying client command " + BinaryProtocol.findCommand(command)); + targetOutputStream.sendPacket(packet); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java new file mode 100644 index 0000000000..a46beb3ab9 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java @@ -0,0 +1,153 @@ +package com.rusefi.io.tcp; + +import com.devexperts.logging.Logging; +import com.rusefi.CompatibleFunction; +import com.rusefi.Listener; +import com.rusefi.NamedThreadFactory; +import com.rusefi.Timeouts; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.binaryprotocol.IoHelper; +import com.rusefi.config.generated.Integration; +import com.rusefi.util.HexBinary; +import com.rusefi.ui.StatusConsumer; +import org.jetbrains.annotations.NotNull; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicBoolean; + +import static com.devexperts.logging.Logging.getLogging; +import static com.rusefi.config.generated.VariableRegistryValues.*; + +/** + * TCP server that accepts TunerStudio connections and relays them. + * Slimmed down to only the proxy-essential functionality. + */ +public class BinaryProtocolServer { + private static final Logging log = getLogging(BinaryProtocolServer.class); + public static final String TS_OK = "\0"; + + static { + log.configureDebugEnabled(false); + } + + private final static ConcurrentHashMap THREAD_FACTORIES_BY_NAME = new ConcurrentHashMap<>(); + + /** + * Starts a TCP server socket that accepts client connections and dispatches them. + */ + public static ServerSocketReference tcpServerSocket(int port, String threadName, CompatibleFunction socketRunnableFactory, Listener serverSocketCreationCallback, StatusConsumer statusConsumer) throws IOException { + return tcpServerSocket(socketRunnableFactory, port, threadName, serverSocketCreationCallback, p -> { + ServerSocket serverSocket = new ServerSocket(p); + statusConsumer.logLine("ServerSocket " + p + " created. Feel free to point TS at IP Address 'localhost' port " + p); + return serverSocket; + }); + } + + public static ServerSocketReference tcpServerSocket(CompatibleFunction clientSocketRunnableFactory, int port, String threadName, Listener serverSocketCreationCallback, ServerSocketFunction nonSecureSocketFunction) throws IOException { + ThreadFactory threadFactory = getThreadFactory(threadName); + + Objects.requireNonNull(serverSocketCreationCallback, "serverSocketCreationCallback"); + ServerSocket serverSocket = nonSecureSocketFunction.apply(port); + + ServerSocketReference holder = new ServerSocketReference(serverSocket); + + serverSocketCreationCallback.onResult(null); + Runnable runnable = () -> { + while (!holder.isClosed()) { + final Socket clientSocket; + try { + clientSocket = serverSocket.accept(); + } catch (IOException e) { + log.info("Client socket closed right away " + e); + continue; + } + log.info("Accepting binary protocol proxy port connection on " + port); + Runnable clientRunnable = clientSocketRunnableFactory.apply(clientSocket); + Objects.requireNonNull(clientRunnable, "Runnable for " + clientSocket); + threadFactory.newThread(clientRunnable).start(); + } + }; + threadFactory.newThread(runnable).start(); + return holder; + } + + @NotNull + public static ThreadFactory getThreadFactory(String threadName) { + synchronized (THREAD_FACTORIES_BY_NAME) { + ThreadFactory threadFactory = THREAD_FACTORIES_BY_NAME.get(threadName); + if (threadFactory == null) { + threadFactory = new NamedThreadFactory(threadName); + THREAD_FACTORIES_BY_NAME.put(threadName, threadFactory); + } + return threadFactory; + } + } + + public static int getPacketLength(IncomingDataBuffer in, Handler protocolCommandHandler) throws IOException { + return getPacketLength(in, protocolCommandHandler, Timeouts.BINARY_IO_TIMEOUT); + } + + public static int getPacketLength(IncomingDataBuffer in, Handler protocolCommandHandler, int ioTimeout) throws IOException { + byte first = in.readByte(ioTimeout); + if (first == Integration.TS_GET_PROTOCOL_VERSION_COMMAND_F) { + protocolCommandHandler.handle(); + return 0; + } + byte secondByte = in.readByte(ioTimeout); + return IoHelper.getInt(first, secondByte); + } + + public static Packet readPromisedBytes(IncomingDataBuffer in, int length) throws IOException { + if (length <= 0) + throw new IOException("Unexpected packed length " + length); + byte[] packet = new byte[length]; + in.read(packet); + int crc = in.readInt(); + int fromPacket = IoHelper.getCrc32(packet); + if (crc != fromPacket) + throw new IOException("CRC mismatch crc=" + Integer.toString(crc, 16) + " vs packet=" + Integer.toString(fromPacket, 16) + " len=" + packet.length + " data: " + HexBinary.printHexBinary(packet)); + in.onPacketArrived(); + return new Packet(packet, crc); + } + + public interface Handler { + void handle() throws IOException; + } + + public static void handleProtocolCommand(Socket clientSocket) throws IOException { + if (log.debugEnabled()) + log.debug("Got plain GetProtocol F command"); + OutputStream outputStream = clientSocket.getOutputStream(); + outputStream.write(TS_PROTOCOL.getBytes()); + outputStream.flush(); + } + + public static class Packet { + private final byte[] packet; + private final int crc; + + public Packet(byte[] packet, int crc) { + this.packet = packet; + this.crc = crc; + } + + public byte[] getPacket() { + return packet; + } + + public int getCrc() { + return crc; + } + } + + public static class Context { + public int getTimeout() { + return Timeouts.BINARY_IO_TIMEOUT; + } + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketFunction.java b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketFunction.java new file mode 100644 index 0000000000..9297af2e75 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketFunction.java @@ -0,0 +1,8 @@ +package com.rusefi.io.tcp; + +import java.io.IOException; +import java.net.ServerSocket; + +public interface ServerSocketFunction { + ServerSocket apply(int port) throws IOException; +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketReference.java b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketReference.java new file mode 100644 index 0000000000..16bb9ce5b3 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/ServerSocketReference.java @@ -0,0 +1,25 @@ +package com.rusefi.io.tcp; + + + +import java.io.Closeable; +import java.net.ServerSocket; + +public class ServerSocketReference implements Closeable { + private final ServerSocket serverSocket; + private boolean isClosed; + + public ServerSocketReference(ServerSocket serverSocket) { + this.serverSocket = serverSocket; + } + + @Override + public void close() { + isClosed = true; + try { serverSocket.close(); } catch (Exception ignored) {} + } + + public boolean isClosed() { + return isClosed; + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpConnector.java b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpConnector.java new file mode 100644 index 0000000000..35fe040be5 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpConnector.java @@ -0,0 +1,85 @@ +package com.rusefi.io.tcp; + +import com.devexperts.logging.Logging; + +import java.io.IOException; +import java.net.Socket; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; + +import static com.devexperts.logging.Logging.getLogging; + +/** + * @author Andrey Belomutskiy + * 3/3/14 + */ +public class TcpConnector { + private static final Logging log = getLogging(TcpConnector.class); + + public final static int DEFAULT_PORT = 29001; + public static final String LOCALHOST = "localhost"; + + public static boolean isTcpPort(String port) { + try { + getTcpPort(port); + return true; + } catch (InvalidTcpPort e) { + return false; + } + } + + /* + public static String doUnpackConfirmation(String message) { + String confirmation = message.substring(CommandQueue.CONFIRMATION_PREFIX.length()); + int index = confirmation.indexOf(":"); + if (index < 0) { + return null; + } + String number = confirmation.substring(index + 1); + int length; + try { + length = Integer.parseInt(number); + } catch (NumberFormatException e) { + return null; + } + if (length != index) { + return null; + } + return confirmation.substring(0, length); + } + */ + public static class InvalidTcpPort extends IOException { + } + + public static int getTcpPort(String port) throws InvalidTcpPort { + try { + String[] portParts = port.split(":"); + int index = (portParts.length == 1 ? 0 : 1); + return Integer.parseInt(portParts[index]); + } catch (NumberFormatException e) { + throw new InvalidTcpPort(); + } + } + + public static String getHostname(String port) { + String[] portParts = port.split(":"); + return (portParts.length == 1 ? LOCALHOST : portParts[0].length() > 0 ? portParts[0] : LOCALHOST); + } + + public static Collection getAvailablePorts() { + return isTcpPortOpened() ? Collections.singletonList("" + DEFAULT_PORT) : Collections.emptyList(); + } + + public static boolean isTcpPortOpened() { + long now = System.currentTimeMillis(); + try { + Socket s = new Socket(LOCALHOST, DEFAULT_PORT); + s.close(); + return true; + } catch (IOException e) { + log.info("Connection refused in getAvailablePorts(): simulator not running in " + (System.currentTimeMillis() - now) + "ms"); + return false; + } + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpIoStream.java b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpIoStream.java new file mode 100644 index 0000000000..e07884702c --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/io/tcp/TcpIoStream.java @@ -0,0 +1,95 @@ +package com.rusefi.io.tcp; + +import com.opensr5.io.DataListener; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.io.ByteReader; +import com.rusefi.io.serial.AbstractIoStream; + +import org.jetbrains.annotations.NotNull; + +import java.io.*; +import java.net.Socket; + +/** + * Andrey Belomutskiy, (c) 2013-2020 + * 5/11/2015. + */ +public class TcpIoStream extends AbstractIoStream { + private final InputStream input; + private final OutputStream output; + private final String loggingPrefix; + private final DisconnectListener disconnectListener; + @NotNull + private final Socket socket; + private final IncomingDataBuffer dataBuffer; + + public TcpIoStream(String loggingPrefix, Socket socket) throws IOException { + this(loggingPrefix, socket, DisconnectListener.VOID); + } + + public TcpIoStream(String loggingPrefix, Socket socket, DisconnectListener disconnectListener) throws IOException { + this.loggingPrefix = loggingPrefix; + this.disconnectListener = disconnectListener; + if (socket == null) + throw new NullPointerException("socket"); + this.socket = socket; + input = new BufferedInputStream(socket.getInputStream()); + output = new BufferedOutputStream(socket.getOutputStream()); + dataBuffer = createDataBuffer(); + } + + @NotNull + public static TcpIoStream open(String port) throws IOException { + int portPart = TcpConnector.getTcpPort(port); + String hostname = TcpConnector.getHostname(port); + Socket socket = new Socket(hostname, portPart); + + return new TcpIoStream("[start] " + port + " ", socket); + } + + @Override + public void close() { + // we need to guarantee only one onDisconnect invocation for retry logic to be healthy + synchronized (this) { + if (!isClosed()) { + super.close(); + disconnectListener.onDisconnect("on close"); + } + } + try { socket.close(); } catch (Exception ignored) {} + } + + @Override + public IncomingDataBuffer getDataBuffer() { + return dataBuffer; + } + + @Override + public void write(byte[] bytes) throws IOException { + super.write(bytes); + output.write(bytes); + } + + @Override + public String toString() { + return "TcpIoStream{" + loggingPrefix + '}'; + } + + @Override + public void flush() throws IOException { + super.flush(); + output.flush(); + } + + @Override + public void setInputListener(final DataListener listener) { + ByteReader.runReaderLoop(loggingPrefix, listener, input::read, this); + } + + public interface DisconnectListener { + DisconnectListener VOID = (String message) -> { + + }; + void onDisconnect(String message); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/uds/CanConnector.java b/fome-can-bridge/src/main/java/com/rusefi/uds/CanConnector.java new file mode 100644 index 0000000000..321efa41fa --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/uds/CanConnector.java @@ -0,0 +1,11 @@ +package com.rusefi.uds; + +/** + * Minimal CAN packet abstraction used by SocketCAN. + */ +public interface CanConnector { + interface CanPacket { + int id(); + byte[] payload(); + } +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/ui/StatusConsumer.java b/fome-can-bridge/src/main/java/com/rusefi/ui/StatusConsumer.java new file mode 100644 index 0000000000..d5611f362c --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/ui/StatusConsumer.java @@ -0,0 +1,17 @@ +package com.rusefi.ui; + +import com.devexperts.logging.Logging; + +import static com.devexperts.logging.Logging.getLogging; + +/** + * @see StatusWindow + */ +public interface StatusConsumer { + Logging log = getLogging(StatusConsumer.class); + + StatusConsumer ANONYMOUS = (status) -> log.info(status); + StatusConsumer VOID = (status) -> {}; + + void logLine(String status); +} diff --git a/fome-can-bridge/src/main/java/com/rusefi/util/HexBinary.java b/fome-can-bridge/src/main/java/com/rusefi/util/HexBinary.java new file mode 100644 index 0000000000..c06803c822 --- /dev/null +++ b/fome-can-bridge/src/main/java/com/rusefi/util/HexBinary.java @@ -0,0 +1,47 @@ +package com.rusefi.util; + +import com.rusefi.io.can.HexUtil; + +import java.util.List; + +public class HexBinary { + public static String printHexBinary(byte[] data) { + if (data == null) + return "(null)"; + char[] hexCode = HexUtil.HEX_CHAR_ARRAY; + + StringBuilder r = new StringBuilder(data.length * 2); + for (byte b : data) { + r.append(hexCode[(b >> 4) & 0xF]); + r.append(hexCode[(b & 0xF)]); + r.append(' '); + } + return r.toString(); + } + + public static String printHexBinary(List data) { + if (data == null) + return "(null)"; + char[] hexCode = HexUtil.HEX_CHAR_ARRAY; + + StringBuilder r = new StringBuilder(data.size() * 2); + for (byte b : data) { + r.append(hexCode[(b >> 4) & 0xF]); + r.append(hexCode[(b & 0xF)]); + r.append(' '); + } + return r.toString(); + } + + public static String printByteArray(byte[] data) { + StringBuilder sb = new StringBuilder(); + for (byte b : data) { + if (Character.isJavaIdentifierPart(b)) { + sb.append((char) b); + } else { + sb.append(' '); + } + } + return printHexBinary(data) + sb; + } +} diff --git a/fome-can-bridge/src/main/java/etch/util/ByteBuffer.java b/fome-can-bridge/src/main/java/etch/util/ByteBuffer.java new file mode 100644 index 0000000000..5207051482 --- /dev/null +++ b/fome-can-bridge/src/main/java/etch/util/ByteBuffer.java @@ -0,0 +1,185 @@ +/* $Id$ + * + * Copyright 2007-2008 Cisco Systems Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package etch.util; + +import java.io.EOFException; +import java.nio.BufferOverflowException; + +/** + * Byte buffer with operation to support getting and putting + * bytes. + */ +abstract public class ByteBuffer { + /** + * @return true if the buffer is empty. + */ + public boolean isEmpty() { + return length() == 0; + } + + /** + * @return true if the buffer is full. + */ + public boolean isFull() { + return length() == size(); + } + + /** + * @return the amount of data the buffer can hold. + */ + abstract public int size(); + + /** + * @return the amount of data in the buffer. + */ + abstract public int length(); + + /** + * @return the next byte from the buffer. + * @throws EOFException if the buffer is empty. + */ + abstract public byte get() throws EOFException; + + /** + * Gets bytes from the buffer to fill buf. + * + * @param buf + * @return the length of data put into buf. + */ + public int get(byte[] buf) { + return get(buf, 0, buf.length); + } + + /** + * Gets bytes from the buffer to fill buf, starting at the specified + * position for the specified length. + * + * @param buf + * @param off + * @param len + * @return the length of data put into buf. + */ + public int get(byte[] buf, int off, int len) { + if (off < 0) + throw new IllegalArgumentException("off < 0"); + + if (len < 0) + throw new IllegalArgumentException("len < 0"); + + if (off + len > buf.length) + throw new IllegalArgumentException("off+len > buf.length"); + + if (len == 0) + return 0; + + int count = 0; + try { + while (len > 0) { + buf[off] = get(); + count++; + off++; + len--; + } + } catch (EOFException e) { + // nothing to do. + } + return count; + } + + /** + * Puts a byte into the buffer. + * + * @param b + * @throws BufferOverflowException if the buffer is full + */ + abstract public void put(byte b) throws BufferOverflowException; + + /** + * Puts the bytes from buf into the buffer. + * + * @param buf + * @return the amount of data copied into the buffer. + */ + public int put(byte[] buf) { + return put(buf, 0, buf.length); + } + + /** + * Puts the bytes from buf into the buffer, starting at the specified + * position for the specified length; + * + * @param buf + * @param off + * @param len + * @return the amount of data copied into the buffer. + */ + public int put(byte[] buf, int off, int len) { + if (off < 0) + throw new IllegalArgumentException("off < 0"); + + if (len < 0) + throw new IllegalArgumentException("len < 0"); + + if (off + len > buf.length) + throw new IllegalArgumentException("off+len > buf.length"); + + if (len == 0) + return 0; + + int count = 0; + try { + while (len > 0) { + put(buf[off]); + count++; + off++; + len--; + } + } catch (BufferOverflowException e) { + // nothing to do. + } + return count; + } + + /** + * Clears the buffer. + */ + abstract public void clear(); + + /** + * @return a little-endian 32-bit integer from the buffer. + * @throws EOFException + */ + public int getInt() throws EOFException { + int b0 = get() & 255; + int b1 = get() & 255; + int b2 = get() & 255; + int b3 = get() & 255; + return b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + } + + public int getShort() throws EOFException { + int b0 = get() & 255; + int b1 = get() & 255; + return (b0 | (b1 << 8)); + } + + public int getByte() throws EOFException { + int b0 = get() & 255; + return b0; + } +} \ No newline at end of file diff --git a/fome-can-bridge/src/main/java/etch/util/CircularByteBuffer.java b/fome-can-bridge/src/main/java/etch/util/CircularByteBuffer.java new file mode 100644 index 0000000000..1105b5eef5 --- /dev/null +++ b/fome-can-bridge/src/main/java/etch/util/CircularByteBuffer.java @@ -0,0 +1,97 @@ +/* $Id$ + * + * Copyright 2007-2008 Cisco Systems Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package etch.util; + +import net.jcip.annotations.NotThreadSafe; + +import java.io.EOFException; +import java.nio.BufferOverflowException; + +/** + * Description of CircularByteBuffer. + */ +@NotThreadSafe +public class CircularByteBuffer extends ByteBuffer { + private final int size; + + private final byte[] buf; + + private int length; + + private int nextGet; + + private int nextPut; + + /** + * Constructs the CircularByteBuffer. + * + * @param size + */ + public CircularByteBuffer(int size) { + this.size = size; + buf = new byte[size]; + } + + /** + * creates buffer FILLED with specified content + */ + public CircularByteBuffer(byte[] buf) { + length = size = buf.length; + this.buf = buf; + } + + @Override + public void clear() { + length = 0; + nextGet = 0; + nextPut = 0; + } + + @Override + public int size() { + return size; + } + + @Override + public int length() { + return length; + } + + @Override + public byte get() throws EOFException { + if (isEmpty()) + throw new EOFException(); + + length--; + byte b = buf[nextGet++]; + if (nextGet >= size) + nextGet = 0; + return b; + } + + @Override + public void put(byte b) throws BufferOverflowException { + if (isFull()) + throw new BufferOverflowException(); + + length++; + buf[nextPut++] = b; + if (nextPut >= size) + nextPut = 0; + } +} \ No newline at end of file diff --git a/fome_bridge.sh b/fome_bridge.sh new file mode 100644 index 0000000000..c55a07f144 --- /dev/null +++ b/fome_bridge.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Run the FOME CAN Bridge on Linux (SocketCAN) +# Usage: ./fome_bridge.sh [device_name] [rx_id] [tx_id] + +DEVICE=${1:-can0} +RX_ID=${2:-0x102} +TX_ID=${3:-0x100} + +java -Dcan.type=socketcan -Dcan.device=$DEVICE -Dcan.rx.id=$RX_ID -Dcan.tx.id=$TX_ID -jar fome-can-bridge.jar diff --git a/java_console/generated/bin/main/com/rusefi/config/generated/.gitignore b/java_console/generated/bin/main/com/rusefi/config/generated/.gitignore new file mode 100644 index 0000000000..5a5c169b23 --- /dev/null +++ b/java_console/generated/bin/main/com/rusefi/config/generated/.gitignore @@ -0,0 +1,5 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore +!readme.md diff --git a/java_console/generated/bin/main/com/rusefi/config/generated/readme.md b/java_console/generated/bin/main/com/rusefi/config/generated/readme.md new file mode 100644 index 0000000000..422aa6458a --- /dev/null +++ b/java_console/generated/bin/main/com/rusefi/config/generated/readme.md @@ -0,0 +1,3 @@ +All classes in this folder are generated using ConfigGenerator + +See ```gen_config.bat``` \ No newline at end of file diff --git a/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.h b/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.h deleted file mode 100644 index fdbbfcc3da..0000000000 --- a/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.h +++ /dev/null @@ -1,55 +0,0 @@ -constexpr inline const char* getLive_data_e(live_data_e value) { - switch (value) { - case LDS_ac_control: - return "LDS_ac_control"; - case LDS_antilag_system_state: - return "LDS_antilag_system_state"; - case LDS_boost_control: - return "LDS_boost_control"; - case LDS_electronic_throttle: - return "LDS_electronic_throttle"; - case LDS_engine_state: - return "LDS_engine_state"; - case LDS_fan_control: - return "LDS_fan_control"; - case LDS_fuel_computer: - return "LDS_fuel_computer"; - case LDS_fuel_pump_control: - return "LDS_fuel_pump_control"; - case LDS_high_pressure_fuel_pump: - return "LDS_high_pressure_fuel_pump"; - case LDS_idle_state: - return "LDS_idle_state"; - case LDS_ignition_state: - return "LDS_ignition_state"; - case LDS_injector_model: - return "LDS_injector_model"; - case LDS_knock_controller: - return "LDS_knock_controller"; - case LDS_lambda_monitor: - return "LDS_lambda_monitor"; - case LDS_launch_control_state: - return "LDS_launch_control_state"; - case LDS_main_relay: - return "LDS_main_relay"; - case LDS_output_channels: - return "LDS_output_channels"; - case LDS_throttle_model: - return "LDS_throttle_model"; - case LDS_tps_accel_state: - return "LDS_tps_accel_state"; - case LDS_trigger_central: - return "LDS_trigger_central"; - case LDS_trigger_state: - return "LDS_trigger_state"; - case LDS_trigger_state_primary: - return "LDS_trigger_state_primary"; - case LDS_vvt: - return "LDS_vvt"; - case LDS_wall_fuel_state: - return "LDS_wall_fuel_state"; - case LDS_wideband_state: - return "LDS_wideband_state"; - } - return "unknown"; -} diff --git a/java_console/io/src/main/java/com/rusefi/io/can/IsoTpCanDecoder.java b/java_console/io/src/main/java/com/rusefi/io/can/IsoTpCanDecoder.java index d58eb0fa30..9c47d76bb7 100644 --- a/java_console/io/src/main/java/com/rusefi/io/can/IsoTpCanDecoder.java +++ b/java_console/io/src/main/java/com/rusefi/io/can/IsoTpCanDecoder.java @@ -7,9 +7,10 @@ /** * ISO 15765-2 or ISO-TP (Transport Layer) CAN multi-frame decoder state + * * @see IsoTpConnector */ -public class IsoTpCanDecoder { +public abstract class IsoTpCanDecoder { public static final byte[] FLOW_CONTROL = {0x30, 0, 0, 0, 0, 0, 0, 0}; private static final Logging log = Logging.getLogging(IsoTpCanDecoder.class); @@ -17,54 +18,71 @@ public class IsoTpCanDecoder { log.configureDebugEnabled(false); } - private final static int ISO_TP_FRAME_FLOW_CONTROL = 3; - final static int ISO_TP_FRAME_SINGLE = 0; - final static int ISO_TP_FRAME_FIRST = 1; - final static int ISO_TP_FRAME_CONSECUTIVE = 2; + public final static int ISO_TP_FRAME_FLOW_CONTROL = 3; + public final static int ISO_TP_FRAME_SINGLE = 0; + public final static int ISO_TP_FRAME_FIRST = 1; + public final static int ISO_TP_FRAME_CONSECUTIVE = 2; private final static int FC_ContinueToSend = 0; + private final int isoHeaderByteIndex; private int waitingForNumBytes = 0; private int waitingForFrameIndex = 0; + private boolean isComplete; + + public IsoTpCanDecoder() { + this(0); + } + + public IsoTpCanDecoder(int isoHeaderByteIndex) { + this.isoHeaderByteIndex = isoHeaderByteIndex; + } public byte[] decodePacket(byte[] data) { - int frameType = (data[0] >> 4) & 0xf; + return decodePacket(data, data.length); + } + + public byte[] decodePacket(byte[] data, int dataSize) { + int frameType = (data[isoHeaderByteIndex] >> 4) & 0xf; int numBytesAvailable; int frameIdx; int dataOffset; switch (frameType) { case ISO_TP_FRAME_SINGLE: - numBytesAvailable = data[0] & 0xf; - dataOffset = 1; + numBytesAvailable = data[isoHeaderByteIndex] & 0xf; + dataOffset = isoHeaderByteIndex + 1; this.waitingForNumBytes = 0; if (log.debugEnabled()) log.debug("ISO_TP_FRAME_SINGLE " + numBytesAvailable); + setComplete(true); break; case ISO_TP_FRAME_FIRST: - this.waitingForNumBytes = ((data[0] & 0xf) << 8) | data[1]; + this.waitingForNumBytes = ((data[isoHeaderByteIndex] & 0xf) << 8) | data[isoHeaderByteIndex + 1]; if (log.debugEnabled()) log.debug("Total expected: " + waitingForNumBytes); this.waitingForFrameIndex = 1; - numBytesAvailable = Math.min(this.waitingForNumBytes, 6); + numBytesAvailable = Math.min(this.waitingForNumBytes, dataSize - 2 - isoHeaderByteIndex); waitingForNumBytes -= numBytesAvailable; - dataOffset = 2; + dataOffset = isoHeaderByteIndex + 2; + onTpFirstFrame(); break; case ISO_TP_FRAME_CONSECUTIVE: - frameIdx = data[0] & 0xf; + frameIdx = data[isoHeaderByteIndex] & 0xf; if (this.waitingForNumBytes < 0 || this.waitingForFrameIndex != frameIdx) { throw new IllegalStateException("ISO_TP_FRAME_CONSECUTIVE: That's an abnormal situation, and we probably should react? waitingForNumBytes=" + waitingForNumBytes + " waitingForFrameIndex=" + waitingForFrameIndex + " frameIdx=" + frameIdx); } this.waitingForFrameIndex = (this.waitingForFrameIndex + 1) & 0xf; - numBytesAvailable = Math.min(this.waitingForNumBytes, 7); - dataOffset = 1; + numBytesAvailable = Math.min(this.waitingForNumBytes, dataSize - 1 - isoHeaderByteIndex); + dataOffset = isoHeaderByteIndex + 1; waitingForNumBytes -= numBytesAvailable; if (log.debugEnabled()) log.debug("ISO_TP_FRAME_CONSECUTIVE Got " + numBytesAvailable + " byte(s), still expecting: " + waitingForNumBytes + " byte(s)"); + setComplete(waitingForNumBytes == 0); break; case ISO_TP_FRAME_FLOW_CONTROL: - int flowStatus = data[0] & 0xf; - int blockSize = data[1]; - int separationTime = data[2]; + int flowStatus = data[isoHeaderByteIndex] & 0xf; + int blockSize = data[isoHeaderByteIndex + 1]; + int separationTime = data[isoHeaderByteIndex + 2]; if (flowStatus == FC_ContinueToSend && blockSize == 0 && separationTime == 0) return new byte[0]; throw new IllegalStateException("ISO_TP_FRAME_FLOW_CONTROL: should we just ignore the FC frame? " + flowStatus + " " + blockSize + " " + separationTime); @@ -76,4 +94,14 @@ public byte[] decodePacket(byte[] data) { log.debug(numBytesAvailable + " bytes(s) arrived in this packet: " + IoStream.printByteArray(bytes)); return bytes; } + + protected abstract void onTpFirstFrame(); + + public void setComplete(boolean isComplete) { + this.isComplete = isComplete; + } + + public boolean isComplete() { + return isComplete; + } } diff --git a/java_console/io/src/main/java/com/rusefi/io/can/IsoTpConnector.java b/java_console/io/src/main/java/com/rusefi/io/can/IsoTpConnector.java index 0148ef0303..af3e6a5fc9 100644 --- a/java_console/io/src/main/java/com/rusefi/io/can/IsoTpConnector.java +++ b/java_console/io/src/main/java/com/rusefi/io/can/IsoTpConnector.java @@ -8,8 +8,20 @@ * @see IsoTpCanDecoder */ public abstract class IsoTpConnector { + public abstract void receiveData(); + private final static Logging log = Logging.getLogging(IsoTpConnector.class); + private final int canId; + + protected IsoTpConnector(int canId) { + this.canId = canId; + } + + public int canId() { + return canId; + } + public static void sendStrategy(byte[] bytes, IsoTpConnector connector) { log.info("-------sendBytesToCan " + bytes.length + " byte(s):"); @@ -49,14 +61,12 @@ public static byte[] combineArrays(byte[] hdr, byte[] data, int dataOffset, int } public void sendCanFrame(int hdr0, byte[] data, int offset, int dataLength) { - sendCanData(new byte[]{(byte) hdr0}, data, offset, dataLength); + sendCanData(combineArrays(new byte[]{(byte) hdr0}, data, offset, dataLength)); } public void sendCanFrame(int hdr0, int hdr1, byte[] data, int dataOffset, int dataLength) { - sendCanData(new byte[]{(byte) hdr0, (byte) hdr1}, data, dataOffset, dataLength); + sendCanData(combineArrays(new byte[]{(byte) hdr0, (byte) hdr1}, data, dataOffset, dataLength)); } - public abstract void sendCanData(byte[] hdr, byte[] data, int dataOffset, int dataLength); - - public abstract void receiveData(); + public abstract void sendCanData(byte[] total); } diff --git a/java_console/io/src/main/java/com/rusefi/io/can/SocketCANHelper.java b/java_console/io/src/main/java/com/rusefi/io/can/SocketCANHelper.java new file mode 100644 index 0000000000..a1b0d1fe1b --- /dev/null +++ b/java_console/io/src/main/java/com/rusefi/io/can/SocketCANHelper.java @@ -0,0 +1,93 @@ +package com.rusefi.io.can; + +import com.devexperts.logging.Logging; +import org.jetbrains.annotations.NotNull; +import tel.schich.javacan.CanChannels; +import tel.schich.javacan.CanFrame; +import tel.schich.javacan.NetworkDevice; +import tel.schich.javacan.RawCanChannel; + +import java.io.IOException; + +import static com.devexperts.logging.Logging.getLogging; +import static tel.schich.javacan.CanFrame.FD_NO_FLAGS; +import static tel.schich.javacan.CanSocketOptions.RECV_OWN_MSGS; + +/** + * Low-level SocketCAN send/receive helpers. + * Uses the javacan library (tel.schich:javacan-core) which wraps Linux SocketCAN. + * + * The CAN interface name defaults to "can0" and can be overridden with the + * system property {@code CAN_DEVICE_NAME}, e.g. {@code -DCAN_DEVICE_NAME=can1}. + */ +public class SocketCANHelper { + private static final Logging log = getLogging(SocketCANHelper.class); + + public static final String CAN_DEVICE_PROPERTY = "CAN_DEVICE_NAME"; + public static final String DEFAULT_CAN_DEVICE = "can0"; + + public static class CanPacket { + public final int id; + public final byte[] payload; + + public CanPacket(int id, byte[] payload) { + this.id = id; + this.payload = payload; + } + } + + @NotNull + public static RawCanChannel createSocket(String deviceName) { + final RawCanChannel socket; + try { + NetworkDevice canInterface = NetworkDevice.lookup(deviceName); + socket = CanChannels.newRawChannel(); + socket.bind(canInterface); + socket.configureBlocking(true); + socket.setOption(RECV_OWN_MSGS, false); + log.info("SocketCAN: opened " + deviceName); + } catch (IOException e) { + throw new IllegalStateException("Failed to open SocketCAN device '" + deviceName + "': " + e.getMessage(), e); + } + return socket; + } + + @NotNull + public static RawCanChannel createSocket() { + return createSocket(System.getProperty(CAN_DEVICE_PROPERTY, DEFAULT_CAN_DEVICE)); + } + + public static void send(int id, byte[] payload, RawCanChannel channel) { + CanFrame packet = CanFrame.create(id, FD_NO_FLAGS, payload); + try { + channel.write(packet); + } catch (IOException e) { + throw new IllegalStateException("SocketCAN send failed", e); + } + } + + @NotNull + public static CanPacket read(RawCanChannel socket) throws IOException { + CanFrame rx = socket.read(); + byte[] raw = new byte[rx.getDataLength()]; + rx.getData(raw, 0, raw.length); + if (log.debugEnabled()) + log.debug("SocketCAN RX id=" + String.format("%X", rx.getId()) + " len=" + raw.length); + return new CanPacket(rx.getId(), raw); + } + + /** + * Returns true if SocketCAN is available on this platform (Linux with javacan on classpath). + */ + public static boolean isAvailable() { + if (!System.getProperty("os.name", "").toLowerCase().contains("linux")) { + return false; + } + try { + Class.forName("tel.schich.javacan.RawCanChannel"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } +} diff --git a/java_console/io/src/main/java/com/rusefi/io/can/SocketCANIoStream.java b/java_console/io/src/main/java/com/rusefi/io/can/SocketCANIoStream.java new file mode 100644 index 0000000000..552384aca7 --- /dev/null +++ b/java_console/io/src/main/java/com/rusefi/io/can/SocketCANIoStream.java @@ -0,0 +1,156 @@ +package com.rusefi.io.can; + +import com.devexperts.logging.Logging; +import com.opensr5.io.DataListener; +import com.rusefi.binaryprotocol.IncomingDataBuffer; +import com.rusefi.io.IoStream; +import com.rusefi.io.serial.AbstractIoStream; +import com.rusefi.io.tcp.BinaryProtocolServer; +import org.jetbrains.annotations.Nullable; +import tel.schich.javacan.RawCanChannel; + +import java.io.IOException; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +import static com.devexperts.logging.Logging.getLogging; + +/** + * IoStream implementation that speaks the FOME binary protocol over Linux SocketCAN, + * using ISO-TP (ISO 15765-2) framing. + * + * The CAN device name defaults to "can0" and can be overridden with the system property + * {@code CAN_DEVICE_NAME}, e.g. {@code -DCAN_DEVICE_NAME=can1}. + * + * CAN IDs used: + * TX (PC → ECU): CAN_ECU_SERIAL_RX_ID (default 0x100) + * RX (ECU → PC): CAN_ECU_SERIAL_TX_ID (default 0x102) + */ +public class SocketCANIoStream extends AbstractIoStream { + private static final int CAN_ECU_SERIAL_RX_ID = 0x100; + private static final int CAN_ECU_SERIAL_TX_ID = 0x102; + + private static final Logging log = getLogging(SocketCANIoStream.class); + + private final IncomingDataBuffer dataBuffer; + private final RawCanChannel socket; + + private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder() { + @Override + protected void onTpFirstFrame() { + sendCanPacket(IsoTpCanDecoder.FLOW_CONTROL); + } + }; + + private final IsoTpConnector isoTpConnector = new IsoTpConnector(CAN_ECU_SERIAL_RX_ID) { + @Override + public void sendCanData(byte[] total) { + sendCanPacket(total); + } + + @Override + public void receiveData() { + readOnePacket(CAN_ECU_SERIAL_TX_ID); + } + }; + + private void sendCanPacket(byte[] total) { + if (log.debugEnabled()) + log.debug("SocketCAN TX " + total.length + " byte(s): " + IoStream.printHexBinary(total)); + SocketCANHelper.send(isoTpConnector.canId(), total, socket); + } + + private SocketCANIoStream(String deviceName) { + socket = SocketCANHelper.createSocket(deviceName); + dataBuffer = createDataBuffer("SocketCAN"); + } + + /** + * Create a stream connected to the default CAN device (can0 or CAN_DEVICE_NAME property). + * Returns null if SocketCAN is not available on this platform. + */ + @Nullable + public static SocketCANIoStream create() { + return create(System.getProperty(SocketCANHelper.CAN_DEVICE_PROPERTY, SocketCANHelper.DEFAULT_CAN_DEVICE)); + } + + /** + * Create a stream connected to the named CAN device. + * Returns null if SocketCAN is not available on this platform. + */ + @Nullable + public static SocketCANIoStream create(String deviceName) { + if (!SocketCANHelper.isAvailable()) { + log.info("SocketCAN not available on this platform"); + return null; + } + try { + return new SocketCANIoStream(deviceName); + } catch (Exception e) { + log.error("Failed to create SocketCAN stream on " + deviceName + ": " + e.getMessage()); + return null; + } + } + + @Override + public void write(byte[] bytes) throws IOException { + IsoTpConnector.sendStrategy(bytes, isoTpConnector); + } + + @Override + public void setInputListener(DataListener listener) { + Executor threadExecutor = Executors.newSingleThreadExecutor( + BinaryProtocolServer.getThreadFactory("SocketCAN reader")); + threadExecutor.execute(() -> { + while (!isClosed()) { + readOnePacket(listener); + } + }); + } + + private void readOnePacket(DataListener listener) { + readHardwarePacket((rx) -> { + byte[] decoded = canDecoder.decodePacket(rx.payload); + if (decoded != null && decoded.length > 0) + listener.onDataArrived(decoded); + }); + } + + private interface SocketListener { + void onPacket(SocketCANHelper.CanPacket msg); + } + + private void readOnePacket(int expectedId) { + readHardwarePacket((rx) -> { + if (rx.id != expectedId) { + return; + } + canDecoder.decodePacket(rx.payload); + }); + } + + private void readHardwarePacket(SocketListener listener) { + try { + SocketCANHelper.CanPacket rx = SocketCANHelper.read(socket); + listener.onPacket(rx); + } catch (IOException e) { + if (!isClosed()) + throw new IllegalStateException("SocketCAN read error", e); + } + } + + + @Override + public IncomingDataBuffer getDataBuffer() { + return dataBuffer; + } + + @Override + public void close() { + super.close(); + try { + socket.close(); + } catch (IOException ignored) { + } + } +} diff --git a/java_console/ui/bin/main/com/camick/RXTextUtilities.class b/java_console/ui/bin/main/com/camick/RXTextUtilities.class new file mode 100644 index 0000000000000000000000000000000000000000..de8c66bd0c6b285e9e58ace531a28090b709b611 GIT binary patch literal 4577 zcma)Ad3+RS8Ga@^n<2{pA&>w$xXO`i0$XSsDmmJafGj2i352%V!mvA=4D9Z#yAw!h zwQ6ZSs9gsxxjC6f_V1ZvGFCWg5u8Kh zu|0yn-_GRhELU~4jcQn|pgw4~XVfxJ=Ip!^!4lMKSV{_l-$%q-nF1XRSVsI~rqh>A zm<7kq52yOmMuEV)JOCay?z=7*QOr2$!~!6KFSCxpMDkq`tU!~7Mg^;a!7q`7j%Kv5 z3`Edx@kyd-p~56l4*16 z03lq4^%~YGSRoKx)N_q=Y`{hZH4MJPp2#Mdbwg{wY1tpW)uK&D6zv2;^PQ6pD==c6 zVx=mU3|JX6TVMiRHQ0ohhRvk6450i~$K}{Usg0Y~*f=$(Fx6UIq2o%4FrN`5P4QoY zPF$^FThL7zmyYL&8|7xPibc?kUJX487P=8#RSy}?xQ=UZEg8)ilM2GE@pv1&Pl5Ov#1t-Ob`=zTbE|Ro$lB|4lrbG}-Jb zhh&^1D^WRH)jXqfXQ+_9JDp2G*&aSS1&RM=9rwwc4n*kZ#H5c!W42?n5%SJ(O2}ll zdvd7YVb0DKZ{sLY@HQQ9$2%xBh6=bCPNgW0=jh1ol6UENH{Qce{6}@~+$H(yrudQWMmtBNo+0(K+xBWhf;FFlr@TrQEiuX;&r%~h{B0BG* z2g$TQf@wUYVTPUM_KxeTztjmj9>!-l)U3jxamz6aIU~V>sjdBOH$?CV9@X%T2qRA{V}kgJ}) zylHT(MDRGC(D3!S=N@5EOmut$-(-&y;z26EX-;S5(ncyKwg=;!o8QKFHGGHjKiF6S z6CK~f_q}|jUu92Lu)PwT%g`KsdxfkJj;v+Gr|?4!KbQmFbs+{ieuN);s_E(w|IztZt*(W}hg(jGQv=PR+u`Kg|8 zv#m5JBc;KjTq$D7Swx!5dyrxJgrxgt9e%aVij(m6-=%~B_a4D>t`FC%yzlF*-t;gAt`F5$U%;*+;^&|aoo7THH*#Me zVj6;QE1!X7jK6|+Em)3~ysqNubTyM&%TwBA7{+?8*}zpBVW8E`X19l!-}Z4m4*;MPpCIQ(sp%)I)yAvUNVJ=WM{ZO+??(`hwyf_ zMLqH$ebwO#o(oEeZ(t1IDqcHzvfRe6T}->10DEZH%eU9yYW^)JrR(+L`^nbu`zhQ) zkG1H)txTedtD|@+??Uvk)FnWrr!ZdTCMzk{qv}~YRY|l4OQBqtC>sK|l@mQoMd&Ai^Ff5%=M8h7T~l_=!n| zACXe^2$p7b1|JP!@1{@@=cjSuENY|C=4pJE1e97YOqFcH7wAA*Z!PBWnqdtKe0KQv z@CnYBN!pyE)h*P|tuDN%7p@F17J&C9m!JmL`pftV{fg4~pAQ+0QOMh4_^Qv_BzY9n z>xlJh{P!)wd~&c|E#m3BdW6iM7x9ZCe%agHlAcw7$Jp(hSf?4{4)Sql0Ma@_`VD<9 z;QaV4e#b~l$?NZ3NUIs`54_|5T@Xd7m8bX|=87#Lk@p`LXP;>jNFHk|U76j@bnck*! wB^2p|wJy*qu4=(EF1%$NS%2f5>TujU%1I-H~;_u literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/BenchTestPane.class b/java_console/ui/bin/main/com/rusefi/BenchTestPane.class new file mode 100644 index 0000000000000000000000000000000000000000..f2a1ad6fa713402e2d346fd3e436a989558d287c GIT binary patch literal 3343 zcmcJR|5F=96u{pGIFKQ5)0b^eMIk%j z-Ubu?VV#9~iwfqzIDsoi^q6`96)o?(#u4*10mqj@Gl6$=RU_w>6Kh;>y-r|dAyuoo#Z<^c;|~oFcq>v=b17CA_Xvy^WfQ}^ zOkn2kFiT2FH3>6hY-v|07Run5HC>FN!-Lq=?I_s@SUY^;=Cbue=JIw&Ds5EqNgnbI zE~q+1JuQ71RzZ3_0Iof??Puj1f!~%XbtzUJjI z6_^LLu;?Br*>*K580YR;Y2mS8)!@A|@G;+nqI zUJ+YY3LF5dlW?2BkAu6q*VO-0%@DZkD~7$iS*e;qISKC*czJP1!yXiY>4aZt1}t&l z5}3cx0fDQD-HxV8ox?b1zchpIQpKV7woFe_2U*~VSjJvq^2Cs?!%N#H?$ z3srC@;^10MYWr+$#;P0g#B9zT-V#(t3VWb1g6UdcqxQV4Bk#_3Bs6ccia6#W$5t(v z%@uD!?96*rsaoC<(+x$r2)%eWB|@(zbu9|aHoyB%MjeOkIZh4-bG+5fH$ks;&t9+h zRgl|}k@8uY#{=WsAjq5T?ZDRrZltUo0#lpG7&qQA_DeN9nN4P9Q0TxnIA(BtTR&s& zKXl;fAo(K)3WMZJ4ipE;mmMe#lCL=M?I8JMmo~H$f>pem##q;29iG7kJcsgMVkL6x literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/CommandControl.class b/java_console/ui/bin/main/com/rusefi/CommandControl.class new file mode 100644 index 0000000000000000000000000000000000000000..590835ef7b6bee2bab1d236f62c01271be89e772 GIT binary patch literal 1173 zcmb7DT~8B16g^WG3M&eff+8x5pY4NgVtf)~f&>#xgC7(UGZW_GsVlkr!X zXrk}_DC3>dQV@*#vNLz)oHO^Hd-uoBFW&&HqFO{jV4-Q!*yb7Ss(8($sno4Cqn$NL z5rM$;zU<04k-8nfZ0u9h2?X`^t-3&|HoV$$R_XSNz(wX}PHML!lbpse;o+1qYqTRZ zB?9Fh?J&*`m=V8t?i7){!(RCl|66uuDQOBA_Lh0iu zoT%?nl#<&st*A||@AT`Oa;j9LU2D?FF~WW5P;^{xWNDXd7CF8{^|yJ;LzJX`Z?H0mi4! z_4a!|j=NmeU%M+1ZkgOR>ACX8&Ym{xfghP5g1`v>cq3TAD8@J{a#R2h5JFtweF>Ae z$ZLR4+{!6NOmp;z8DqSLUorExH2WEI-#IGa3V*!{aGw>yT)z)-6^pzExQ6S@yuo{q uTHkW>mAY zj(Oro_z$X}3f}oBiZi>4B*$wb6X$`Ky>_4O={|k=>+j$GAfgJbQw@y2EIuUe}$DRGlS8bF0<0%67f6+o;^% zt!=DUe_+IFjLteN%az^XVJs$Lkf1msRICr-x2$n!c{;}^-{n&6THeIt=7aAWyWdtH z=4p=6R8JeYP!tNL#g>xowlJGqiICA^edH9e^ivtXdPo!=7l7RqEvL!o`g4jw8UepC zkO`qO6H6S&ihbC>{G7&it^W&h^MKwGAwnfubs1TqgozlPPmdZ~8T#wI=K!~4M{ye) zxUhQg?{fOepIW4&+tW%YyEObJ_VDgk0xPw8W@70cAg7n5lJ*{>i=|XLNnAg&i#v$l zif)MWWXPQjuV-{K6y4~qSD0x$5}t%l#yXL5 z3(oBKgt1W>yl{jl_le;JTq$k6rtqGD9@0)ZR}Qoh<#iE7yd$C&9M16Y1nN?k5vDFz zt?yzHi<4>ArFyc?6)c-^6i@HGJtII~p#l+Q8a_IVp4A@r>`y(B2DB^eBi-^k!uEAa zDZYj4*>CB4he_bvQrxKOvmTK)8R4kL%+;@Oorwd$nN7%}W3s}x!SLbAqXIP44=nLpa4lO5a@>IgGV^*9HyU&OEf zhwgYZT|;IenUT|RiT*MXvZ{B;kCWwLgxi^?9ix{Q=o;Oar8nsA{7!ou#$OJdXfs(5=1Yr*2VkDwXS8tqh{J>f4we>U zwG-L?>-^JB=04aKpO1NX8r<)@P$-e~QRtAE~K*-YvREA|AXw$fVNFOEs z+=RU$+MNuvC_!^RPtd3I*@zcY&ch?U_&LLi0(}lI(nuV%{6&W4Uj~*ZX(_S4Okd$X M1%xl@>;6;aACyTe{{R30 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/DeviceManager.png b/java_console/ui/bin/main/com/rusefi/DeviceManager.png new file mode 100644 index 0000000000000000000000000000000000000000..9883f6ffe790369298d13892aab478f54a8a4b40 GIT binary patch literal 2350 zcmV+}3DNe6P)EX>4Tx04R}tkv&MmP!xqvQ>CI62Rn#3WT;LSq>4Cd6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~=H{g6A|>9J6k5c1!y_N(-E(;FK0s(xm}YfN0Ge)_ z>10C8=2pefEBX+iFOHzhEMrcRQt+*>d+MaRi}5V~zCWv9&07ozh{UtZFm2)u;^|G> z;Ji;9VI^55J|`YG>43zKTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSPoII3zoH~2kUt1ub&lEMj~`^9lSMuE^S(5ySo_p#$NPk`VvaHY5X)dn#0NqW7l zMUQ}iZQ$a%ttorJeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00#z1L_t(o!>yOgj~rJO#(($LtE+mt=hdDW&)6o!Cbp%) z2nE~YC>VtxSx6A91Xu;c0>ml{7OcJFFMuTyE7legm<0q0;t(Ppl0%$~?HPMK@A34z ztGcV|K3H_m*v8{%JV{HXt}5NS=R4o|?sx7Ldo_s`7E{^sP#7v6q!KKEIIFR!dj+_|$br-Io!cxY(oJ zX*3#SS+)z#T8j_@A)c)Gz5!^hpO3=G&-0vSv&q8ZA`=r609b1QOB9B*+ikFYafuy? ziT<;-=81XbegOy}$9&(T+w1c858mU!*oVBg@Mj#yK^sGsB-lt{2?y_Kw?UzBC-FHF=q?CIyAcR00eQ*ufK|TWr{ZbgS zE5!a%m3W@_5X3_lKp=3Wvp)tpaa?J%J5DhSi=)HkMS%H_KlZO(yT;_?BqvUsV0d_h z>FH@)*I{Q7NFfM(AEgvpYm`*GE{NE1%%`;DPMmlf+qJXn)%shp(yx1-=UHp>Ea|LN zH`e*x)vHI&&&~NN?XtPH%H4$pd_UmIl`Aw`ErbyGzK82Lbh}-WIHud{k)|nGmf^ZC z#xno??|t{wo&ete@BCYM{;R3h-^jHtTCFigv$?dyU;pwpuYB`cxUN9u{SN3N`0#@p z1Zd_iyhI`JDHS7vARtXsk|ZHX5_-KJX|IRlxJcKX|ITaQKJ`QiZp`2L)1gY`s|DZl zEzrv{T1l5?CqaJh7?&BsW<8%`l^3WZxR)YRIA%e zPfza+Ac`Us&`n~RjXG|p%2qdF;>agqCu zz^7*y6)@KX>jI zKYa5CzuMCW{`l@cKT^UuWwasdb*Zl`5>=*(7MuyUAOX>>0|sXjZo zQm9;^lw!M=Qwb%FR)^ex(VE(WDnS%dCT=e|COShrL;SSOb;58(Fh<20)imeZP5ek%>ea@0KR1!{Y|5p@->-+uwf6N5< U#-8$(ApigX07*qoM6N<$f&3dKnM+&(jp->;j$kPRH>>|2^96EB`-W}l5JS9cagKE`7Dq? zm5|^A_$b7T9Z*X8gn03unLRUe_Kbi0{Q4ch0Um~^2yBmCDzkj1&x|}Wb3Hk9X{sz8 z)@LpW5eRgaIG3*lLb_wVz>UFM^+Cx**{MA7nX%KpK>fL~#_tPE_6AE`awA{8;1PQ6 z`>S>Tmgx=!fcuF(I!(OpMIkYVUVJJqr+t<%gFI&Pa`aQ|(gUaZvAgZ=F{1%{c@T^c!tXu0sN>J`iH zE0w*2VwoW#c9mL{VW3d1?akM>OSOW^F#F*?!AM?jnH|&FWROznIzw>B`e;NDih*HN zK^zYl!g;SGkt*FppnztlnJcF2QL25YAcSxPG6#$uZkZD(pK3Ncn&aA3 zwBpm{BKf;bZsxXDsZ$aSd1z~b_ZOg*S}RuSs#vL^z(|s}lPZJMZ3TnG8zS_DF#lD5 zfHmU7(m6)XFeX4ED8RS?6CnYT0!)Pkn3jJMN$O)vZ3O!mR~w-|l4>K|$FzEe*>9v9 zz#M%Op1a(WCNHqC^p*a(vUH`!t}R5V*UO$phHCg-u{g_IAo~mK Qc3uE$Lh~gB;@azf0l0GZF#rGn literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/Launcher.class b/java_console/ui/bin/main/com/rusefi/Launcher.class new file mode 100644 index 0000000000000000000000000000000000000000..c7a17ad8c9aa332fa40c83465b3c8116dba5e9ac GIT binary patch literal 1647 zcmdT^TTc@~6h5=9UAh!O5WMRsUWyOf7oU`n5YmPwE09o{7$3-Xd%7L6o!QJx8~9}= zn&`WKz<*;r+e?5@LV0wPo$L9&bLQNB|NZ_G0Jhv87v3qz(cD? za$aM9KbS}qHiZ;+i}=bLO$PZL)kYWYGFUuER<%}o4wjhn=SXTaDj8s#ldY*pLMxQy zsaCB7d*&neij6LE(My%KnTX%U0iLF)t?|j?%v67DGLJ$jmE|qu6VfZ_ku&^A$&QHq z7$xe^X3B2?)#wvVwN`JUHkq}z1g9E1s8L2}W`W-F!8e)4t>PiKXDNEc>m7GdDhogl zZCABJLZ>ERQhSrygbI`D)Q*rLh>0r}p~27V1X!oUFQ3 z6ei8_^TvmH+ZBdbf+@93MVjx0LNZt@f1R$ytDZ)fW_B7Eo>EJ=P==G6Ie5<4{0yZy zTfY4N;bY((s=kh}CbGCJOcL17oJX;!OKKqFT-X)VLUhzUb77r9uluZIso!?^JK{N{u0--DO~GAE{9M#ctN8BoGi}1 MxAYfi{|a9J1HESQUjP6A literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/PerformanceTraceHelper.class b/java_console/ui/bin/main/com/rusefi/PerformanceTraceHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..4ca2df2373a3821890d5cff203d11fa08152578f GIT binary patch literal 2268 zcmeHJTTc@~6h2cbZPzNu#T#CR_)?U#FFpw&K>|@ygh(YZ#)sMM>9VjpvzeVm`fvOf zCYq?v{wU*_Zl#4Rq3~$z!)(vwJNNIL-Cw`Ieg}Y6cwB-4gLzLy4V@;~2^u@7J4#1F zdf3v!!&ex_s7p{}FnJ)3L?aZ^Z*02<=otp%%Yh8c3WKrQ!XAU-nrdSSDhwtD*mbRy zF2i*;_Vb<8n5ggw+nij+K`2b1B#*UnLyVFa+^Mwokq1$%w6TzS7FFF1q|jZ$8Re<4 z{<0_T^hNFoDV55~SH2ey<76XJ3Q zbz%dz<%xnMA^K%y8Zu;=PW22$q^)Vu{_-KYZok}djJ;ur- zv~Fkx{kt>Bz}Z!)_RvzzfvS*GbF< z-0v{WsrX)L(+Q}QOm8$slndGuY>(>x3#wTO775%qrX%VLDntKC@0bOKz|{!7V%%z_ zdx_z~Z}HgF2~;{fl++}e5vWgWZ?$s6+f)u%oCs6jMx=6oknE~N_6d+@1eUhAs_Z)P} zJFA{Y6N7mfEQgmBvVjZDBNm)6T>z%XCDo^xtWkjy-oC^HF`;j%q2DBf!GFS1draUl z3uF^0IpCoeGQ5q{SVrgOBT$-o2T8m$;4g1rQTLaQg%jt>+gBZ<866e~ie4=)PaacA z!$Lfv<6+cChMpk5>3wTbA$l}8iHn6te!Y&uJ7b!S_P;r`2_ml>L`{VaBrs}ru`j>f zu2C*^&1uA(%H>v0<@JRfM=EALPt`BaZ9Hy%F*C~%#jcB;A@95wFfZ*4#jWP4^#6E< z*L@0a`|%ov{RX{tG}UOyPS#stllwwxSTFAH_F_GZ|Hb){no~c z26EyFdqN#N$0f=E>bws`zI)~()H!2+^&GVC$kwI4KrYD)!FJU#os&lVTW5l5x; zFkkviDKFGN*F$E$lj?=Ex(Fevo3%;dL*VPF#UcWS!0m%X8a`zEa>Qef$7omqlKxUK zCp?}OwPg5>qKm8kLn|@oFb|OT*3@(B7d=-Quh``;+P+e^M7s4&EpAsrC?gh>> z(OIvd1}yP-XBe4N0#`Qe-07%92W*#H`fp7MTF(kL0?YeW-8Kb{V-}a-GXi(=bSQz< zsdALyO9Bt_yf$8`SIldCQf{-@?5WtmI$+|c#uuOpS78ZfrF2$?Rj7c2?~Ay04VKX& z+qn+!;ObZCW&NDrVC9GE>M!u_AF1Chd|DL1-S_ahoW48oK74>P0w2O{M9h%xz(;4+ zALDqAYJD@*yVI!T#~G;W=url;24Hard;<6Id5*V`i}!p69)S(`bPORsqrnV>D{vp9 aF2DoW#IcHR1Zwa(GWrFM9*%yxU;76ofE@Y& literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/SerialPortScanner$Listener.class b/java_console/ui/bin/main/com/rusefi/SerialPortScanner$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..b86712a18e02da683f80a9a18977bda6adfd64c2 GIT binary patch literal 2576 zcmc&$OK;Oa5FSH`6H{m#XrWM$4my5X&{YjLlGB0X6NzE%_4~)q0MLZ{He9mcAy@r|PGandMjN$Y;cKN$ zn=>g{W5N6(8?Z*mWYE~@93nRsRM&VYq%hAdxV-vk-+~!mbsl*ag{zkRZBJ^9RXD(|OMxR1G9#39Bdt0i_T#6nQ`Jn}`LNa|!V2$D`^tL1c zBtS2jVK0(i@2`BRO$;f`5@@)RJrQ_8+8}1qiWaU1R~o%HNxa?@Z4pRj5{+fee;Sqs zE|j;W+D0Smmk3H$Eg_FyG0B2bbt1#Ps7n>vq55X~&1YfQVf-jA7oO_twH56d<2See zBx}PXZMg}txIa4SBVkoZ|A3eVtv^|9<#LqffDw%#SDQ?C-!Y9@9H*@k&2dAdA(keX zjhBM6V0J5|Iey6E7-Ji5Ti}(8Wy2i{R`P5tSeQUa#OZ`t(dRbCW>dwc0zfp1xEa7D zD(Mxd(7#Q8k4IAH6I9>UoewbkCDWOwXQ~6VzK}^$npTG!ndD|BS%f8e*U958Scbb$ PBmHGqsZ`-!w!ZuW{y$?b literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/SerialPortScanner$PortResult.class b/java_console/ui/bin/main/com/rusefi/SerialPortScanner$PortResult.class new file mode 100644 index 0000000000000000000000000000000000000000..0bbcfd1a6ba2ace0df091c2e7c5c89d580578cc5 GIT binary patch literal 3270 zcmc&$-&4~-5Z;4Ae}F&{P!u&N2o*_Rd=f{63Ij6*99o!>w`+PW2WhU}T^RYxoY5J5 z_u0S4ajykhXb6qs_>xO5yWj49d)a(Hetr1{0Lze#Ll1#DN7S;?SFFOb1tvLl-wUY= z4)r`HXUzQ$Q@*R?5F;>hNRMgOrCv3=T{>irCJ?Km34zgk>s3KZ?p2rYoj$2E0*m?3 z7_F#9G)K3j;#H4oU!re1zvHXb3NM^(;rsqq+~fK+f#Q5;)JU;9-7|Zbc21O89EJ%D zw~AVoQpg0PN&M%oCz%rNF)LeGSe?66bKzNaDM~J@sh3tNSv+7CuNi8LiCt#L>{Fdd zt!!6RtH_R>Z?2XhT4<}ptTWIK?`C&w>TAqPBkOjPvSr-J9WdvJ$p|nd?ooMy$!g&U z*WU0jK}_f!)pW(LRQ?J}tTPwOjF62Zyb7<{RfeaHYQt#Pd^kcf`_k!%>VAH#A}7v; zy&>?VGg^xf6ut7?JKCfktw!Pr9e3+xWM~`tZJf6pb=?wmj#RYp$gf=xcxH5NdFxNA z)=u3nI`y2u0pVy7-0Z7Qx21(eEi)KW$*ZkW$?F^2jug$ho33A-TYKE_W;QL4DNa?K z3}N+Nz`SxYM7Qdu)BmxC>pq2leazYkjqrJ0?rX>(Xpaz1bSl~1RKKBMYn-{|pxMz` zT*#E@8l`K)8!E4>-&$L9QZNL!2Vnrl2#g2F3Zn~#v4L#Mua%fAnh)Bj9^p`T@ALyd z-Hho2t_Wnpl}Jljp`uv{h#2mENi>=C659Na@K;V?Y(CQ|Z4&T+z;w8HLG6P2ihcB{ zizQqjqAB>6GW!JjxLS350=@I*DOC`@bl4gGJFpulAx0A4l`!U>I0J~v1`x~5T`e6V7 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/SerialPortScanner$SerialPortType.class b/java_console/ui/bin/main/com/rusefi/SerialPortScanner$SerialPortType.class new file mode 100644 index 0000000000000000000000000000000000000000..12a89885f38623733f009b1938117091f85f805e GIT binary patch literal 2791 zcmc&$-EY${5I>J@T|?PNVS~Yd42HynNQJ}`Ok-W?v`S?|v>W2lP2AKpwIjzV>@PzC z3Ep|;??GJJuol*K4Gi&;bDaD5-JN~;ef|FNGXNCeUK*wdJg{Xuufl*ec)rRMr`}7c zbk(LpFty&_sU7<)4JiV1Z)u0-Ju2LMNrY_z>0Q}oB|9YWu#&*pQv$iz@-^4Z1D}by zr_o)s+KE;RRcW`FE>cl&sIQsAkB6cqOXCUc;i z$d;4|%xrSO^%jAR`=`~*L$)@K2&9VA!Q3wsnD2)uDJ9h`ERpoLL!nq8y$*9s%-`o8 z)m#eGSF-N0cJRbBGPNc%dD}-Yk&5N84twu2r31^8u8a7sN>7?m;iWd~%>3!}ly$FL z77aDx(#+OYuT2HqC^i|^OeJtr=YpzZ1goVjJ*zAbAOd<$HQfmtjlc3G_n3!iCO~6L z(crG-GCX}$M-`p89=24>dKCtx2Cs5gP#r3k)cnLSF>o%evcz-8Xgfhrw5o8?dO-zs z6V(X~4}AwKgtr9?h3BnEJ+DsfR*)<_*4K*fSz-TAveve5)oi~gabVb54sZ78(`{;L zQd8q}F*2jIjLg}M9rTn;dy=k?#x@vtd^3BR9g0&HC&RdWfAKkTG9=fUq|^T~hqJE2 zzdmMz1x;|he(&p;K`Ey;tiHW^Ttawi8P4rtEXpR9n zxSEA|xJF=U2v>-B!8|sQ?T76;Q?=+qM;t`j)H{kVc)Xd?O&$<1sxnkI+vSnsa-Uem zRLhE}1rnB%Sw!I303V5{)@CAlwT1L2TaH*<(W61Yf;8MAusV*RA*<@+iU=Qp*?ku1 zJsIfjM?l~L636uR3QWTc0LpYMXJeU(r4dP3go}{v%1bbZlE4%ebOGfezCA{7(B%{r~^~ literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/SerialPortScanner.class b/java_console/ui/bin/main/com/rusefi/SerialPortScanner.class new file mode 100644 index 0000000000000000000000000000000000000000..2d49979f3ee98e1cfda75948531df294d938cef3 GIT binary patch literal 5727 zcmds5OLH4V5bhC*^@tNE4ly`{pqM;t2UZD$SL_(eiX1D*a*>ez^z?6k|MUw0$Hu3O9y8bJ44r`6=^BEgo{!x*<`k3NLSd{A~(5QA}}>O zj8vT4Mx*9Moh9G`E~anRf@KLS2^UG?*_LTBTNwMSoTI8V(`J^mHFT-+rRMoGqhdwKOpRr_phMi90Mn==aa|Ift94>6hZFf- zrtdK;0!)pY)Ow1Gl|mPWRy1*exS)Gf(iNxC_)l13jTxwBgw^Q6Z1ASmRIxy%vgpY6 z(1pdcO~)=YcrOm4viBGxFPsalC@}sQZAB1@TqSPqty7aWBiRWVx7u~I&<5Jqjki2C zj2hMV>}cZAzFGy729x<*`QKr+6@6W(d>w0A?pc1h_Ri)hM2RfjS(u75?uq^BXk6_8RnS zNFwk{2sd;(HCk3bCSj|b8TFvtF|1rjmKYgjWWr-oZ=_?*=bSW5!=-VUg0~2q4=4;& zT`++TWM!vSV^&pdXjOL!of_NT2KOf8a+hPhbduKV-71H`{A_rU(xqIO+fKqY0++*! z46HFw0yph8=3rIe5V#w(>TsdH$|wo*1pWvY>Q*){MP4Lu7QN#oM`|iNpvTU67VMX} z%Int$X9Eh*CD(0P0zZsk!55U135@&V1=XDyRBU0+S801CJ{=?q)_#ETh~nQDcS{RN zxJ}@GxZPAqJyPJ|=527Zo->Tzb;fgUe0E1|t&a)(87`|63#*3pn2MO3Ba3hqnZ?Y=h!mveka3TR;5=eO277vYeZrj)& zP_(M5DKlHHGgSlG%eMe?3bw-%%hPZI#_;O`Bp`|J6-YrE-;;0>#_=74Q*hcHPrw=E zI_u6&BKWO@EBy4&F#TxqjUVC7UtPWoKF5#-@b6`Oj=SG! zm~q!Y;BC0#Lx>?o2jOY}!fpUU8m_~vhcJ&al%x*ATmZt?E`losZooUJK}WlHT^$bc zYXSV<`}l9dtseh-0sQX=@c-W9kHH7O^;oya+8^_2iV>EpY12wx$9@7o^V3Am4O5rZ|)-$i(U u;~9v+$)ceE{@+{z>bP6m!phS)qeoc8rtOm literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/SimulatorHelper.class b/java_console/ui/bin/main/com/rusefi/SimulatorHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..461a5c5e24e019b1379505a1dca7b9effcb8c8c1 GIT binary patch literal 2239 zcmeHITT|0O6h2#OZ$P;#AZk$57PT2KPu9_?l@2(iFtn86iP@%W38uT5&4$Y#(;1!7 zXZ=x*CrJ&|DTS(!CNs%q^L^*+*>k?L-+z4i0ssZb#UVmq-VkkFx(<71>Q%GtT2u+S z$}F47I7A7IAJ9XpTa>r-jm7~p6oGVYb!(;YX0KEz);6|w2`rU;kgH5fHv~6aDH&IK zZC^6lEKvh3p5zJ4RM*zG%LU}@ynwN40b6CJOn(7j~k zv-JerBBXT*J^im!zuoxCJ=No21wdfdz~-u0n35uPFTt_x5_p>FN~V`N*DguyC;6;j zE62KXgk4sD8XUzXI1amkZ z2~cSDx`&1ZxY4n&+-2cr4-0d?g$VMJp!qBHJa_YM_u#!c!&?eh?D4!SSn=H+yq%C2 Sf%}MzKnAk-j^St-9{vQcr>Fn` literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/StartupFrame.class b/java_console/ui/bin/main/com/rusefi/StartupFrame.class new file mode 100644 index 0000000000000000000000000000000000000000..d1daa2b094a806a008f06c55e336d2185e91a834 GIT binary patch literal 4562 zcmdT|TXPge6h0jSdm#}B*9gdfK{lYf0)k3nWD~h8Y%b=8s0h8Yy_=zCr?+}~5-9bD z_z(O8mQ`A%@A^M{^4%B9^6Qz&UdUv#LCY#rmGn&a>F<1f&gpZ`fyNpK4?Hx;6MFPV!((^U<^eT4)k*58Oh6){O84VhUG`+&;Naq4n$$Zm; zzP&ZW3Ckh=vx2_?=)%2_DJTrt((^!XfqTN;A{EX;Dhr(zxgeGHaqe!U8M8DkpPBP4 zIdzZgKtbPhveaa`gZ`3G4tEXglFdOwjhW{~;Rmjsm@mP|_BniUTrYpE4ST?R4PJ3g74Ttu`q0ig2N2IJUubptbZE9qpzbO+)U0 z9VjI{y-9-6+r3XyT<4CD^0rhW@5o*32(;toOL7H+-_N#x zcEnDaO(kjqKD9-%;_WSGX=!mwKW~c2h7Fg)Z6D6)_GN#@+VQ6Sr!ajf z%hGweI7H{@5)x)E%$QNRi;I^@ZU@Q;^|_!?5o+0_K~v?V&D~XwypQ*Ia!{{1s4Jsg z$+V-OB5NMB*QE4CyI`d03ZqATWXG2ebnxfRru+Q9CpWyf_Fc_&k=#3Zdgkv(lo>9=8osg^iBhe&b&xv8L7C7&S7wF z8@Xtk(wn9`jDGE{JuJ(+%UQdV?tQe(uE5~fs^d3tyF%v|y=vS>F*+T_f7qW17r}<( zFUu90xUl{1mM)LciDk z4B9y%rsx5qQ@!>;@s>22BDC`tdhP1?bigs%-w`Q##3&WJ4E$#u-$zeu?m80A{yE|6 zSz#&^PJ{D}cIxP;L1ULwWcOIUk|J1a+uc{`ETQGc*W)m~N_%M^o<=D}Y0PHuJV05@ z4|Ti`(+C})gIF7(L-;l0VLAf&qoMpUydRI}PsHPBI1T{mWGH`%PKUCu(V1|xz=CK$ zFwW8I_&bKTcfg8a%>GE{AC6r3p2mL;W#7c#ec{R;dJE4(krd^rfH!>lY=dw)0pY6z zgaNt=-E9s7K#e$DOF;NG5#il!IJ}pD@Ld8zhHlVA%;92}9g+}!3lR*@3{BDp9s4j9 zb5Gj$duv~orszZHxe0k=+agBe1EbsgMCYGQVE;!8<0Hr+YL1xyLzuX^wT%sKZ$)84 z2{vGKcN>I+v#>J>2m@52dteg9<^5JvwLMx+;BqMeDNA!LF5NbnPe8cdvdJKQ9NJ=$ kmN1Th%QCIfC-BoljGtlr0`r5g_~-N(Piffu300{2Hzn30FaQ7m literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/appicon.png b/java_console/ui/bin/main/com/rusefi/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..2fbd012ff2624a4b61358f21ce4300f9b5eec696 GIT binary patch literal 3290 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 YANa)xy`=UeNdN!<07*qoM6N<$f^27C;s5{u literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/check_engine.jpg b/java_console/ui/bin/main/com/rusefi/check_engine.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ff78bd0898282580e874dafb7a3eb9ddd38650d GIT binary patch literal 5844 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 fesRq9X4RC4oyja-WKBqjVN`*{2N- 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 Y003=UXN44YY5)KL07*qoM6N<$f?lq$`Tzg` literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/download48.jpg b/java_console/ui/bin/main/com/rusefi/download48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3db6f58c996aa364249f0540cd942518037c90b0 GIT binary patch literal 2032 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 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/fuel_pump.jpg b/java_console/ui/bin/main/com/rusefi/fuel_pump.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bd2b9303f742f221235eaf8eb058a34ad7a676d0 GIT binary patch literal 2273 zcmb7_cT^Mk7RP7ONCPGz0l`87h;$MH2=eG17AaB`K{qVDxKtOg&=Evd=|xy+(h&(o zML>;Up{%q;iHI~&d5E}xqN2PBt8e%H`R@GAnRDhh-?_j0xn(w=Y)%1?m6@d(0D>T3 z0bju8S3t+u!PL;v)?pvb$5Yuq*vp4@oT`cvR$2HaDm1rRm z>_ETpD4H%!O9Q|86fg#m2n2t@hJqIwi$fi3B`>ASgtJ1cgXK1Og-q zkwhp|DwQZKwoR0>jZC3Z_#Xk0um*+3q0u;sAVHAwf7>P(AYlP#;724#0uUq+Ndh;! zfgJz(7gY z@9OD4;KvNiq`T=H&21TTzQ4Ddw$Zz&^9LgaXlXg==H9IX!_EaA;U$E)jDV$FKhF>xtdD*5F_gJ@im?U{+SYH0E zt8_z!72LI6*Yxi}L5~8{~e7urTWR+3Aqp2KEM|rf0QyKHH+=#Q}Wt8YFL? zcI|Lznhv>%Wk|a4G_7{o$FfyKUbA56-#1(GEQYqXukc!(DjSI-Cf9{3mV;a~ip6Gh z<&%|OO)a`!udL${S7fwhFVgeY?9@J@l$XN>hla0-O_`6pbtE+I3i8b&GRyPDPrW*; z%kWYe#9wQ1X3vT{s@+wa*lGRvJR3XN1!ZrXHpFC zT|}lrOR~BRuh~ck`BS1}@$6KqROEVRkCxY_jgg>(NnQ&8>{U{TykDS9dS8& z3uYt%mjv>EGEJfZpdEs-MF!r{2OmQkHOZ7)P_a)8ERZ6>JQ05*<+DbR=nxr6V;I^= zF+;Y52)=N2*ivTx(~kCvlvkGWW6qvWo@9LxidaxCz1M|yubT-rg&f1~bd ztwq(aVRy#U^X9M*RR}Zl$CDTJ2zIi@9l-E!T#;s zdC}Sg>E9i9QwqcIvcPidhX0=GB>9^SYj__4>&3vF1c&J4FELJ^T_uj+XkF2^%`fs& zNbhx5>RLW}RIs97=1&pTeW_}t5^j%@hE*gJrnMK6?(Z-E!sz^H(-7I1Ta?rgu*2q> zUM1Vn*e_tfn{!z~rFKy{>;=Jvvfe(h#u(w9to6Or6ogePnMaPWj(fiz>7V4DY!{yN zB}a@M8>w$TQP38YzYBdRgf;Nx92eJO(;PVRj-NLf2<}5T4e)gNjtGDO8QQZ$G9X6W z9fQ*ETtI#LSMfBl(WV5<*Ao|94rHGsXmFCgs09iiZ$4P!ep)GdA-o=qxq60cy?jN8 z)(4Ij?Kit4$DOW8a!=|5!VLaJE@H`rL_4KT&aC8i^uIq>6ES1AWNzwft0F8W5Z0q2 zI<*62Exc^F;(3Pn{GLXt;&N2#M0UWkvED_U)VKIefJ0Rf=khw9R*H7qPFndW7tVaAzp5Fo_h)y$P8ra$YRsa0Pf!5DDWS9A_ zutSCH@mWM9-2Z`$jFA_6Mx^j1)+kyM z_OcW90>X~I=l7czh9Ql~{%?;#uib4`9qD?MM6;Zn*_`*SO6-ShIZPI}th7+BT`LEt ziV9U7x_*DRk^O0Un{;GKs%M#z_KiDgwWbMy4U1$gBXC8WN>S zL~rkrs>EjHLdvf1-|RBB>wPO$oT4eD?cuIhva2Ac8c{ubF8JY;*a&McvaKMoF&s^| z%h!r>$dhQ{6wky+NO#uN+sR?u1Tjhdl5Wxx3`b>m*L2iV!MeTcR`gY`!Mca1$h^Sm z#*RMp5w94j8naT##j%I1^VR9h>n47)1#-?ssYbEaZT1QThuJSxGd-UvE|Dp}8e#oD pSzVZvO)UOZeA{-W`dB2LC(lvjD7Hj}RqYF_Lh_IXlJ7Ui{{uYdQn~;D literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/help.jpg b/java_console/ui/bin/main/com/rusefi/help.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7858ab96ecdadaf1499212a8c2c0a67e29fc2804 GIT binary patch literal 942 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxp z=qM@~8U=#Q0lM9uan8>TQrl*&x~S98eftf{6K-kbRkX1y{$SDZwT{e3r z>DqkRZ>8;@_eic=;9G8??mr{NH$ncK3QlAbf$@kSf6ojfn1)AV>db8h0-_YMy7 z&$Z{NUz-n94vsYjkk19yJ1?CNv_Vb~6b-00C^85*76v9x+z7S+6uJU(TYSW-FPhIV zZPuClO1b0Qx7`vcU*y-%Wwfxk$-Uw6`?>ppW+?~)jRK}_WY;nX1S%Rj7A7_>gg6%z zvH}SVa!HFGn$3^?8Z7N1wxH};2Gop~&H{+=!l&nq$j!!%K#5Xtib z0qd<87v8on@|2v^rB?P#*+=Zv1y}VelMAn9EZ^9$aI%5Kv_q%gJUD2$u{8GL*1UcE Q7ri=nNX?&k`uP8w0LUQvng9R* literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/idle_valve.png b/java_console/ui/bin/main/com/rusefi/idle_valve.png new file mode 100644 index 0000000000000000000000000000000000000000..a28c0e52be7ab88de9107177832adf4b26316c4d GIT binary patch literal 8255 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 THmUGe{RCi;f!0?Ii;({Vs#oAj literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/info.png b/java_console/ui/bin/main/com/rusefi/info.png new file mode 100644 index 0000000000000000000000000000000000000000..68a44dde650032f3e3c432057e8f87cf30effa15 GIT binary patch literal 382 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 WFO${w>b9r=0000xN#000w$dQ@0+Qek%> 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 JPDHLkV1ni0@G<}Z literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/livedocs/variable.png b/java_console/ui/bin/main/com/rusefi/livedocs/variable.png new file mode 100644 index 0000000000000000000000000000000000000000..08b61834800bdb305712c163dc867f79630965f3 GIT binary patch literal 1516 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 O06;}S16(6#5%E9N1>ME~ literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/logo_alphax.png b/java_console/ui/bin/main/com/rusefi/logo_alphax.png new file mode 100644 index 0000000000000000000000000000000000000000..5e773a2fee0f806ec041c025b75c56b295c320d1 GIT binary patch literal 7826 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 OfSfc)s#?M@=zjp$KOda{ literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/logo_proteus.png b/java_console/ui/bin/main/com/rusefi/logo_proteus.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1f8106bf6069c98e6c4370558e164e2729b929 GIT binary patch literal 8144 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 R34g)gunPa=x5Vw={{!Qj2iX7s literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/maintenance/ExecHelper.class b/java_console/ui/bin/main/com/rusefi/maintenance/ExecHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..63816be3923458d71ad59f85bc9c3ba9c99e926b GIT binary patch literal 2282 zcmcgtTTc@~6h2c6y;$WUAPUGLUZ|Jui;0OfMkEkP3K%IwO^lgt2N>L)X=Y{{OpH(d z8-IX_Ci?D=GM?F%QrK;Y#P~9^JA2M|zVBRSfBpXU0{|AGlz|k1IZpA z8VrN?X4W!mQpG9i%;(M+;lH}&Aqy7@FaQ?`j4xD<%DHJ27rSL!?x6}7Y&{HWOjWHi z0;3h_QGdIww0)R1dt4KkubkRuWdb>_Uxq?p2m%w`abGCuF|EtRH(8j#p6%aD*h&OO zw4ur%VMc@M94z|v~EPEjk-pvU3Z_En!=k&yV2OUKDr3D9{PSc3-bhC z_0PJ!Th5kr0<$L>R&nBwvHbYYQya@{yZef<4>&ZRlEU{=8?W$TW1k%IW9RJxmJD6Da<@vg81 z(J%-2Bf|e0Kn9-%U=Y^~zCFNGf_wfuWM7Zwze3?BzNKIYS8D_KeHhn5%L+zd6yNf2 z3C7w8ca9;9Cm;+(2r2Z-!eyB3@=IH+DDssAzv+%&4yIrl(lCSeY4pDa4nA3abGTa_ zmcDM}Fz6^N&`J#DsicCFn_CH{iH zK>`Wh`6$FBrAivw;6~xayR$w%bMfq)pTE9-2Y{FGpbR+%n~@$g&Cue$Yz~A}4wX<5 zHg{80+lkvrgzckw*y<0}Q5gyhRu09nXeL4(Gb zLFu_v(!F4i-*~)7uUb0BGF)X)pRl|#Mw<%MS@H8bMKn4&#+XxBsZ4~ETJhBAFu{R+ z#=UBC7SV)^xVlJ%Tcj{&SOPRsBqCB ziDXYu-;(|3u;BWV1ma2O5_+@6zzg)yM7TpkmBH#+QSwLeFsQYaLenClvS`b2m%*b< zJ{T0os>YzwMeAN`>wp7E6{%y6)*_T>N9qQZ@tUJLcw}E8>nWiat=>1NeP~?!0xLhr q%E2lW9Nt==oFoKPK+&iXa>#}>ib z^t(UGICoN^*y2I(%WY=n*?GI!d4Bx-@(lo9z}-BoF?bT_p=U-B?h9|og|eu)3ef9> zs9s9DBY8AHbFVQNsrS2F^(C4-WEiX;@+0m^t`5A8e~5u)P}mBjP{KZEaIW@Xk3puP z`3%|7*hY8 zXk7|lQ+~d*^|wLT(!7tx4Y*R;x<0zcUejIgqP0RDM9VqY7ZU4TgTX6qqGhwNhN~zp zvfiY6ddJdo8BLs#uQpQSmTAlhFI_Z(%TpcA>%VKY%U%01M5j2nMbp54bzmAx!RP$F z8RVH`vLr5LkJJ%e!k0t;%Qdaxb@p!uDwBqv>(l*9|0&1@IaVN+<|C3w6>k2bOlCMj|8SNJ$k^ zV>vrnNDs3vXgWX$N0!PFHH zO@T@hNb5GqgrpcW;r1fC@I>HIkSqBzA9)$6$h{JHyqNRM(zZZxRd=a`%Ust$Vduh)k>_nM4|%bEF~ z`#DGIzAFDu_QBVsFZG2AnfqSk2fm|F8y+ctT>H~~v@Q^p_aDfMyWm!H|0N!#FkOL% z8G+fw;ACdEoZ$(%oXzxV5Gh(eNIGQNlE<{bbf7~SZ%e+n9RJ=dW*#H(JfB&^6;R67S`B4P_TmBye2H-tj-K|AfcFJc zAEv9HaOGPMbCsVHjLDd0`B~|`d$@+{9050Qb0EX50Sv(ahB4e>mIChL9ng+ z1K&XLP8EMa6;#1HACk|Y=vm2<>{`}iBZ>#@?r6Ht^qlVL?)metUw;R1A6phO3~xB0 zUzXiS?6_s0yMYn`4;)e6=!oEfr&c^3?Fnfi%P{+xKjCGM2fO8s)??u)2FtI9ye%Zd zRQ(I5(;HM63VxM)UW+^X5yN~vWsR1n2BM^x_Zwo@7l9(Z*?PQSSGiuf?nX*aH{9KT ztF9Cb*N;pu)*Dhdn_NahmK%?R6UugFiImRz%}{Y~#q~tP{f;zQjbU=p4P3Rvuv)Cw z$n>Vy>8&!-=pWkN4R>QWiaE@VSNY%2Gq0Hd|oA_ZXkRl4bC!%c= zBOTY{$_)d%Bg2*_{OF!t$T#_JH%pXNc8DI)B)M0L)8CUFydxi5OJp=W@u9Ee(7>A5h#s+TZJ~a)wdl{$fr^? zDtH_Nqq4DSy~s>3?ucaXFpf_yC2mGnKJkA3f$C9A^L?Li_2h6lvh-MqG>!{%!CtC6 z#?k$RI2I|>Ghiw==B*k>O969uVHz{I#Bib5D<^SzYbZ(CzoK*cOx+E{de?6W+2oX_ z8RqJt!@X@zaZBU=pINo%QpviJRxgI-G_H_*Uo?aceul3T7C&VfGBh9uo8f1Jf@Dl) z{)9)bxA*jT)C~sF)O0!wGJ&Joe@)UghM)dVl8((!3==!LMWdE$`5Q-cbVCtYC^DRj zTM#!a*ER+-IV=#7W*Zu3)?>(d)Fkp`D3`gjx8h3wDVL(U*A4a=?iOoi$>3V7u*!qB zCnP1k9Nwdplx}F;teU&Xq(o8wtS=x87mHsd4x&0v(j!s5$nY@T-afHrJq#VD zM%a~(&;d(p9=;2e^uc17t_6XRRXTi;pc8kW;bzJ;XPEnYY?Jq5)-8O(aQg&`eK*ni zqh7P{DZ?Ezm`xe((v2b7>a@AiSGSoX|5*5p;mo0QZlO+vZ|LuX`;~=tx|9tf*1{&; z1V>5+nYrdh5f#%Wb;VR5r`AQJ)`TvnL|T(7rkT;Va20fn=;E5CqCJ60`kI4<9KAEh zqd>D$@%J>1&)_V5=jk_tS(3~2r`J*VUE z0N;U$N&m*c zc8%Iwc|HMQA;IT53z;~JnD}dq*2An-}R_Nxc~qF literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/maintenance/OpenbltCallbacks.class b/java_console/ui/bin/main/com/rusefi/maintenance/OpenbltCallbacks.class new file mode 100644 index 0000000000000000000000000000000000000000..ab815e38d876b7f6600f41d707efeee709beee6c GIT binary patch literal 266 zcmZvXO=Fld0dgowPY{HV zP5nMzef53$`~vWVVU8AIqTNaPI>^3KC$4N1%T|k8oy8U=KC>|e>-Uf&BRn4YgOy=h zs#S3m9SLpYO2TNmysb9TSGHWt-U!3`yyGZq?@BKr5VGlOGw+D^&J%h;;`+cr2;+Y& ywvD#Gakba-QkkS0{pFfBce{i{lD-16gxNti6@(nU-+XuN`?yaE!b6HJ41NGRu|j76 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/maintenance/ProgramSelector.class b/java_console/ui/bin/main/com/rusefi/maintenance/ProgramSelector.class new file mode 100644 index 0000000000000000000000000000000000000000..a7ef072f401431843300d78bf29487e627f22242 GIT binary patch literal 8077 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 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/maintenance/UpdateStatusWindow.class b/java_console/ui/bin/main/com/rusefi/maintenance/UpdateStatusWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..97fa451be33cf951514b7b37af227aa2732f4e95 GIT binary patch literal 1535 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 JJaYtJ`~euv&{qHe literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/solenoid.jpg b/java_console/ui/bin/main/com/rusefi/solenoid.jpg new file mode 100644 index 0000000000000000000000000000000000000000..beaffa5b15b5f38050756d395ba6a90510ca83dc GIT binary patch literal 2732 zcmbW2cU03^7RP@nln??0Lm5Db1Ox>X1f>WGh?JlsPL!bvLPR=ErbQ z5C{ZZXAOWk18D1!oNfXD9)BF*1ONa8I7LHQGXRLN{6Js;{2T1g6ARW3@^9;dD03Xp z1t4JXfw2T-85<`X8x+dM#lgYO$<4*h4d;Tx5j^~S2p%L49L^`mhdhK55D?(z6%rOi z3G<@_PzR5IAgnu3HW(Wl426IrQ2(=-3_w$tpr>=yn4p1nxS`;D%iaO)t8_vUE$idu z?v2}Iw_D5@>)y{AM%+~;t6R-d*ARtKqj08cDAZ7<3 z!72zFt6B#I`=>x)79l$aCyWcuN~q-nz#s?&422vpv$BI(aR7>B<3FOL!+z)&TMkK2 z)TyxK98S!+$~FPQAWcfy?shngOHfGoClTqRGP1{xtDHWgs-~`?dtOi9zz}bA<*LcA zre@|A#2fZE9UPsUy}W&V{Yd@+5qBe_qVL7TraXA~C^hZzll0uY{DNnNMa3mm)it$s zFY6l`-?Vphc6ImkzWqoZ8Xg(_G)9@3otyvsWnpn?dGqVmw{7~)?)SX|E)W3u2i9L? z|G|Z1ae<*w2$bW13k3FKIRpu1JEFwSuk#Cst>+=hQ(>H_bICcCZ7_^7fhJ&gdyq>| zN@YfR^8oEnvi}Y&{Qn~R3+!K96o4B7VtpP23E+VJE4i_ORl2jmqIcik9)h{=Tnhg%2^Ye8WQaTV(-6PGbNCR&F1CSZ@&t6@%;u_PWrfUwmI2C`>;2lA(#y}LOyYt%&Y0Z$t{*VEC=rR3 zUb0}Xd|UG6TtfVj;`HEm^X{SH^GQ6WC=Y^xl+OUE@~Sx(@=^5yIDyWWIcP zyjOH$iIClB)z#tFvwli3VCP#)U?)RrzadEV*|g>EB~a<2m;6U_(XrC2d9ceDL4#tU#C!G#_ZzNV+M{$`QfD+Ni)B2S^Vlo#R^UWhJQX!(#E7lHYN)1JMkv-!IbE z@6RSe%$CwoRR+X`vHroylTS2>UKg7T0UpnUGVC!_-=knT%6Q9WzS@4R(^l*XMT zx%%>cp5eoWg;W`t24M-=+16UxMms!C?p#^x=e;PYd65xXe;RF^`nmS)F7aF)+5N~=@TY#dr<)%7OeiI_C-0he;J7qpW?L|`?gg~=S=HFWA(h_qFP3g!>+hV8 z8ER?D4~v4ASYbfnBANlFlOf7?92eNgHABrZkiO;fbPgE&mCQ1rsJftOyrje?&_c&9v^dZwOo}h{Y!;i4Q>o zh__UZQVxIA%nWsgzlyS{)6dNkAt!69mh>LGfQXiNKaya8=H2rUq@HzmC3=>HQiyYf ziOp^^G1LZfxtljVR!{cD0l@@4Ur9hJIL ziEqQPTe%WG9_#5}rzyJhbaId%g7JvDf1C-Jl9<5YJc)Y5Zu=$&^dycHA2{MwPsW~T zaCsNi;NN@J6O+9mxPY_Pb0ooDpDqO?`Y?5L!! zn5X;e9^#$QOL7yMFzUT+4?(AqaRF$G>rFK9e5y=;uS%>eXZxE3@4EXPm$+i7Mb&^& zU3;p6#t?CJ$_4aJU24?!nZ?vHXKp*bwGkRrUbk8_ZQy!x`vBiE)c=LW(qMMW zLSL)#kIx_u#-2b*j79ZRnnbi+Vy6hP9p(JS-i{B@wt1S^Gy36l->yyD8HT8rYKFVJ z(b|-$qjNSSmfdo!K?HJj#7{?Rxt66*o!+kS#;9C*s5)Oul$o` z6V#!wZfw^polyIYJ6^j6=4qW8Wf`en@(PH2A*IzM!5{rszcvTuY57UG?h6$-2KYvT mB7P>XdGF$T6GjALLZ!hKCN?=@jgyh6UkqRTO=E^I$Nm8O_t|p* literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/spark.jpg b/java_console/ui/bin/main/com/rusefi/spark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba049b128d0eaaa2eeddf0cacb2e8f7213d861b0 GIT binary patch literal 2966 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 K*Do*D`u+`J|G`=S literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/stop.jpg b/java_console/ui/bin/main/com/rusefi/stop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8965600815f8ec31569a6a02c1b52ab41084a4ae GIT binary patch literal 907 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxvbtKWFEP2Q@rhw zztLx3@{Egj&QEmS(G%L+DeU{FJG8aY7-)(D$j6LGZUuUmk%fU(s93XfQA`2nskR79RWn3sif>N>`2MmS6RSi2^P*smiUDCv8Hs zHLuSRS#f|%;|fq2IP$<|2vmny)dP){5(LIHvZ)|r69u4#f&y0{bPHGO_MmFLg>xDO zcxMT1KF)nUXt&eEld}Rd0;EAfC=E0N=v}1v201NoVqzgY00mZZuoqvy7BZ!K=j}uN zd!%#<+qyV`TIE2#LJ59GK|=<`z>NZlg^h532{fH8tTAKRw(ZB#WosK_Z%sa&mh;PRV&J{Yx15FMA0k8L4sN(&T;~LW$H+32|~Zlf-4$j%;tBLi{cy zkl@abLX0<|2~wJ*2QJync>LasXXgF-{p|+;JcmaGSYc3$bW%5|#jdP7tz%n1(8}r< zTi)24G76AmuzoIvq87FsTQLUXZ$Q|eo7NEqSJc&LuMw=q6 zvRwbIGDr+V>~JC<$XGb36(1Pgjxn)Mcu;Efk;`PDjq@SlD8Epoj*uO(hD|zpnf=v< zM?xv>cpLd&;HwbYQVDZGOio8S4qs$ub8KD%C(^1bdtnb18sU5)OQ#@pNRO(h2rBy2 z(d~w`&I4T!QYczI&e;&BTRQO zAiPD1Ezznbnr_R8C>z}wB`hMDPG{kK&CholYWc|J=VBV)?@EHMuRC0;3B;jw)G2BE z*s0dI?sEUmT;WGPiTP*zsMj^$?Ab9ptoIw1u>ks2p|QrUNt?%!qHaWiz;s zgp7%n22`rveeNJdL=VMagIaQ_xuK6| zuy#x$VGd$pEfUZJ2D@{mn!)N63d!;bTK7s@mj@taCdmg_p%=Lcd9n*+Jsx|5?@)YK z3BJPG&n#x0etir;4mL86SN;lYlJ8FDWw1qe?`CKB;68l=I%BW{5A#LX&HOum01SH- A!TDt-6U_zA4*+0BKGESvD4FH%L4$#(y`d%FAAoj?En^>+Z+fbAqq5O~m( zoxJi~cEs~qO2^F?rEsOg>gJGy1c93;v`6y}747_PjqF$p%19zu@s~U%%efnwuRJoi)n;pEdtl-ySvpIf!P4X z)7;5#(=I}!YrHL}_7o$qGyHVzqRDD(NK2vk3hM^k5Bn)|x&&56gI|cyU`(xX!SyLDd;r(y}R?+@^or>mRRx z)0ELFF<0iy zX}J-Yww5-vdsK0XS+de&3&!{vVCu6j;*D}_j8yG0byQch={Ijg2&0UI-5FV5@&1OP z#+MwwF2eYxS2|1|%a$$0IYbFrr{Qq-n6)xlTOQfwo^8Rtv(IIQ$}f}s;YYjUx!RUJ zrW9{68+!}85Sx+-joEj-E>k{CU@z#h2-{`K9W)z|;J;>kRE{i|hnHvICfp@(J9CjK z4Oh)#cG!;BX)skcg>6_|HmP&aFZBMG34P360uSTK6{#?ZSLb456S$N4Hp*lQ76~lI zQy?-Rff>cxh8UC?MFjRE0*Lo!i0Y$UAz*cJN@;)A5tw$FXcc9rLj{f_tMq-7bqz=1 z7|h_%@~NE5d}Vj=Bn6KM{2U*PPv`#`2jI9?o){v66ue8I81JMRIYUZO?19CCEv58^ zxh0>#3E2It_|y8x6F#Zu%l!`pQ(;eHMb@ezdMJdlbRc;P2Xyuz1&;~&E8c(ql0!fd z?uQv;RO5^w<1p0tMlWHV5w8AU$&J7bE_(8m6{+JiX!8`Q1uHw?f@o^_CJ7(C=u>}P z9rP)Jnbj%SmrU|;h0SC`#WvVh@9%p;^A4+s9(OtN;fC3){QV5+Z>cI(JAcA-Ls2f= zyuWq@5A!>o;}`-hq~KEmoALGP_uGgK4%zmf&eU;&4LM}hq^Fv!jMIj|Ev&G?>Yg)n zg(Oo=JHdhYfw@X{Z?-aULZr~nDLkFPU<6ubft@MOWO@UV~YXb8cMKv?z>CVaiu z;PsH6i6F2XrMEKBOT*H@V`IVUM#B9#=vLZ)2qK z2=7E7d^JEwLk{wY5ai>%2oIJc^y>qC3*N^Vf@}?Y9(8AYpqIwnu7o`QFv4;a!r1`9 zf{)=7yzN!IJyQz>d^a^SoPo6n?|&L#tfPDi$O8D<33!6%3HS_uYMUxTO2GfEsT6#U RXOp24JoPmup#opR=5w}Cm`MNt literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/trigger.jpg b/java_console/ui/bin/main/com/rusefi/trigger.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcacfd36e34744b7f0db6f5ea7f92d0a5a570f7c GIT binary patch literal 911 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox{JFMz|O%26c+({01f=V#lXYN$iO7PEWp6P z=*@D9MZlc#p##(5OrUxx0S0EEr;#+Vu(B~TF^U0oaR7xGS(!F&WM{RE-F#Q)u10KQ z;i0$EZ(Lq{6v!3(%WEZ55`2d7-qN`W3y+vlABv9yVsMMW$Dh-nhydl zPkHD(`H`{Zj;z!_y<0n^1Z92yVP!(wHn*YGE4h? znbS%Is+xpm2i4tq^7-|V(BIptiv8}dN#P1&Iyvv}KVR;nX08YAgzOf~f4?-s>fM~f zF+_?p#-;1T&`zB=n2lLq%dwx3nmJ6pO!SpH5t^g(f%LdxOie5P-;4NheUzTQg8@2`eIkZ*8MXx=^l-uCZFa2T9zCBuQ>#kqYFcF@oo2dS}c=pDZuCF&W OIC}W4=b3!}|4jh-Yx45| literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/trigger/TriggerImage$TriggerPanel.class b/java_console/ui/bin/main/com/rusefi/trigger/TriggerImage$TriggerPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..b46e596a93182031809ffefa950121e8bb2168dc GIT binary patch literal 3476 zcmdT{U31$+6us*>vEv5PgtmNB^@CzVv2ZXcr5$DzTe00ZQjlf0;bmuIukB?l$s@^0 zJNz(aU5%hL!|i*gYHJ8V=*nZ^itt+kOZh?vnJQk7XJCWC`b(L*?|Xh0-Xg1y+pf<8Z*_DB_(Faq^c1E<>8F_-9uB>p(id)T=Y{F_gv&;G;f4jJ?|Y6C zVl7dyV$bY1itTehh^V4}pqx%ib)~KP$VOs4S&1%zD=b2o5-83-A9<5lKu}4c= zv?Pa1@;sp1a`Cl&x>bIDnOM3d7hN^0HJuu|Y0%QchhP0A5H*eF;j{;G_|~3@ZQIp4 zrqz(#P3*t}$xW%$t;1GRx2RF8&@Z>?mTWIfL-JHU(e(pbrj^5{T)lC8>FY>|tQJc* z8qa9Cd|AYHT(4{v+cfREUZqd#y55X>C3$}5aFVCZwi?vdDs{QGoz1fSg=|%LR-$0Z z)}8%KovZBM`%eD91x;_`3)*^|MVq$sl)U42Ip4g_bLZh;rbf9 z0XGO-&(GVy$bYRj(cKvn=ZO1uWC$X^=ylnslNf~LWjY)RGsR( z;TP~9c;O$w3^OnT@60g6kKvi&tn4~=;v_P(opz=#l8jg;H+*s7WGU9(VjUwMfrGlbK#NkTB+g1P7$tBL{g7s4 zAz2+0G85^{&CEpR7J<>lIY}zeX;lj>5qTf_f0DrA_Vc_f7A0NM@G1ElpO%VZp+I|| z{y<=arteO0xu4L5qO4F|E=ov8{z5;bC0!F~PAw}sXCVX69n~NG#O468PZTb%h>`RVS&|J=`Vd^dsII@`*$#oq!23JV@LD_bh=UD5k zCSd-Xre*l1V+&2!S+Q8dyDuc-`Wh3=M$>V9&NAL!qH$)o8s2!nd7*09w&M#cOn9kv zC-Dtqoq6MuT{mr}v9|I7!h7l$d`B<@9(~(VgZXPtO;|PU+Vl(6t(mrAB~9BO6INZP zA@~>zXBIjs3@QtqU1hGvRq^)?)AO)u+I;;EpbcJVTAqrf1zD2@1l)FL-Ed6|xcj#0&{@EhUOgA*=F{BrVWMnp-Y}i#Om;-{qc! z^+l5ud5KO=4l6Mg#2eO%uB!T+l&9?`jJXO~zuV+OR-3NLR2Oq|;nLP`Woja9R9GvV zIb`bk+tiMpy}3U5ZaY+N=A8|Dk2LPFdG+p0L$JQ>ra2mT-J9%C#q(;J6Y=nCl>h-g z9)&s?|F^jWRT6N5Vhehks1huR3=z&1`G>e#{lL*U!p_Nd?xezmiw zEf_YlvO%h!r@Re3h^HRy@@(h*vS;V3#2`x|^c~D$e5gfz+p%MKXf*^1i-(H(jnw=+Y1(g@nEP+A?7q)!UN)=4c&psIft!?=N2*gWf-8TG|i@2}3RrP~iGzW54_Tm3C ze@<)JzS&^d&`i%nI4kmbU(neQymNnv7s3?)37-5CUB;cC1b-+&ALW& z&8&LaJa62ms*b(RT)&+fPj?piOp?Imt$BS3oj2Ez!0J|}P|5FL@UEhPLfnlKCY9l8 z;pDn+lu6)3QXbnn^^Ji_;QQT^8jNy>>L#z28J9Fsa$0Vc&6xZcbga|wgXTZZw?Le) z%eKwjoMm_(!_8DDaAW8GzJ1p~1s$cq#}|b~tcU(6kfqoj@A7iO#XhJo&o455K0}L7 zu{QUzn2y3%A=ol-32+FHQ~U&c2>amxQc{pWb*>qVp{(M!VL{tCkK@ykEM)!&hd zz^8cSUIUCk60f6eE*OJrNG0Gp+~{by)~Dg-01c@?Lj>jGkb()+p2pt?@SZ{Y+>3r4 zQv-B-)76oHyKt|^_6YYU@c#Y)x$k=99>8Z9%|qmmz~}G<-g$%~-e390L31UHnk|*^Fgv*EhDgiF-PDrXhA**lu%0!0XGX9ETtvrD* Gq4Y2F-=-u0 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/trigger/WaveState$trigger_value_e.class b/java_console/ui/bin/main/com/rusefi/trigger/WaveState$trigger_value_e.class new file mode 100644 index 0000000000000000000000000000000000000000..feba98b83f0a6619ff53baef3b26cecd02d2e67d GIT binary patch literal 960 zcmcIjU279T6g?ATHrd8Rqph}9nTI|o$S#6Uwv#$I^xeVkw7C zIJtFdnJz_=%c=BGWoW$1Y{}*(e zJ~zjj&ws1!eCi8i+s_v>X-9%)&CrR=TqF}=RiU36 ztL{i;4F1sMb}nD20@(V=w4m52Lu067EnIHN**!;uf@nLJW7jV6t2xkG+Py?%nan)g zW!U^1L#dZv2+vU8mznFE%yl1w;R^knN_QPsQ3FVNg(Q20M${nbllFvA1=soF{)TCQERwe$~#ym=@W)w1DllVUTNR>4ltD$jzaNXx<<=xS7`Sw z?~A(OMx>EsD4g;>cRjAU?(5d6Xd8xHq{yOE_0JRot1_elE&9!XA#E40IIWVN3<+AO z#paQbo?D}x3PZLoyNa7g3x@Rz$J@0%)s;%T5rMCb+YGFa$_`njwxyD0hheH%IwJaA zzeDlOGR*vmZ%=DqXE4uLv#GQQeXlP%4&5-29yiigPN4mkCwk#CCzoxU2uJp;9}6iD zl2AUQ%ZKIjQ8;a`ly97taDH*-vi|@$#&@`5J_O=_K?kWB5!-p!6M-hbN)81q=9M6SS{^mu*|SBzQ9yplFSKL9UH-u;#fCpL*XCyxfh9JQK?o-M;Y8__&DB6 zEThTOcNx)4QaQ@UndU(T4;b_Wkxs&Si5RI5)cr`e#Y<_EeC>DJDBBmwkl$BI=v|M8 zp$OC1VAvd2?2A<(DP5>b8jl&~&*yvCAjsE&3`3G&gI*lTYWh%w=0I2xhFAeL4QhEw z`mP{FBaj}>nRuQ>7CAyq(@6q(LNXHhH5zAV=P6k;nsZ-JcsDoq3D>{HxSKSl;*%-d zqIG_N!Xj>4H11$&$gn{S3A-0F+#SI%A2V1C!#y}dJL}oTJFr_BVYfQMGsEg%VqY7< iur-1qiHGDhfprwEcZ#M&-=pV?DAT{q&L-U9s`L{-E43E@ literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/FrameHelper$1.class b/java_console/ui/bin/main/com/rusefi/ui/FrameHelper$1.class new file mode 100644 index 0000000000000000000000000000000000000000..331c81ab2619f8dbfcec2abb1d11a50b0465c5c2 GIT binary patch literal 2412 zcmah~TUQfT7~LmC2I3TAL|YM+Dri74URrOl7epvn2)0mcv9}>P!bmcc&YWVgkGKekl`F zLV3;2RNTx^;FRRBES6=^b=*Q+pyRr;;AEUdm5~e5Q<*ESSMV463r<xenB=v;3*qh z(5P3fHY_wH(12|=nvoJ{Nb9Suqpl}&mC}q1CY_n06iAKwd8at#1g?IsZpJlxfjy7* z+;yDn?L`yxcv*U~V3=+y%Agh~+cT9wJ31`v7TEPjO>FGZY+HOU5;VeYrsX~xop@GY z%Qc+~fwocYY$+3x#BAo0$xt?d1L(HU#ke+}+Bk?q0?Apa2A7od3bH`K6|pGJh=m^d zT@S$EX}H5Sj-Zcb;RdsKdPIvVh|po!Y^aAQbY_N*^7CU(xhil~xq+e|%7WJAq>bn5 z0$)2ig)u#M657mEgeGH~*edE1umiRe_6Tg=dFb}P=~ zMGG&GiNRSru<;UJX0gr7pa zfMHy+Fj7rP#<*TPwec!OS;3xMqW88n1QX`?%ypSpOzA1)Y>eZw_7+}rWXbnT%BGv~ zIwmbl)TuME94c9|@dlWh2ERhw9g!NYpSc{ko|;h9uSDQCF>T?kdTYfSvo@~cZ2^nj zS&`${1P-Pnh+1M*jm;JzX_ifKg1l?vJ-jdQbjg{Q1HPAc)D>6FaTO}ZQ%p}CSk-b9 zumomMu#o4JFgdHIZ$pB_tg?=%NI`bgQd~ow((2FIaJ72YoD=3KbOLG2+bE(W(9H5N zrA}Vk(>+%omhoCc`S`#>c}*mfz5XC@mO~o>Xw{_r$eX~Sbk+U|G6}@w0{e!kN!92Y z)pgdwl0f@r(@p}33BMBL<&difSke%UX7f>P#VI%F<=I)x$e2`fK3nBue8O1u zL^ZeBuaR2o<72=tm3>doDKk=&7kpoZDsajXLYTm3_`<^H0$qlgiO}^H{CSy)!jDot z6!^6^C)L{#;IQKriZbjP_5JxuIa{MbHFY&Rb%vA6Wx2`qCkS7K7;rc# z*sUNoNAETx!Sk(Lokh&-wDump1G~554qAHu zLh=u7itYSuSG1_ zlZ`i5(5ulK40;N2u6s%CFk1Ls=tiIMv@=4hdLk~4B12!tjHT%2^7y**`@F1Sa*^{B zt9bq{_&L3ceu3QYIM8<&uL%5&Q)5R~Fm?;6Kk?d;Rb07;cYqZ*Jf9V~_26Ibuj2YD zJZ?TDxtH`ne-=()KTe{DpO!OR_j8ht;j|&#X;jRu6V5>y!uu&z1q)=Tskb5afVATl zgoQ-{4g>p`pJkrKa04Im8RysQBYetL6Qlf!|6k)$ DXF6=R literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/FrameHelper.class b/java_console/ui/bin/main/com/rusefi/ui/FrameHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..2220d4eb016180b6f3af262c00fcf34a723e58ae GIT binary patch literal 1606 zcmah}+fvg|6kP{WLThXR0YN~yC@rlTZ+JsRts*#89#9b80vt3>n`o1Y<5%g7mKmM# z1NKk1*VJP&ycHTL5)$v~1tJ|;jPNI6 zaA9s;3^{FK3TG6?56#;Wqtd*2Tt~HsAqw7{g`(i4r9qJfx#(F7=Wt#j!;7xFfg4$E z6e8$c&3W(E+z)!yTML~!o3FN{=8}cWxT0XPW{t-jioy!JX5uPaacCz_U(8@0*QFIV z6iyZX(KFHu(Sn6rxUJCd?C!=RQ*nb(d%CVL9ou3%`=PDh(Kh?fjL5|yELymWdmKkX zC=@%2I{c1oi;&uz3R&NaA=z|Kv%0krjRH3^Yks4?qnBKn&%Vgh_~SV*L#AM@c+^_1 zIzga0rAMCXAbg@_rUUktqWC3pB4y~f>gAeK%4eF<6?Ab0^b}JEus(6sg&dz5zJY$$ z44{uIE6(E103$)jCI~NxFS#Sd0~{-U!_ejdj(=hJ86#s&oM>YXz+m1WpILGY;W&mP z?BTdR!6p(WaFXck9wrkOJBopnzI%rjz2uM50+N8BNTz6~(ul zpf4vol$b3gCT5Y3nE8z)V9yCAj^>J`@g@qQhoGf4Xf`^YBIq-!Q*f96!LdCT>bxYU0jDn>u!Q7DuUi0yju< zvx7e0qR+SJ^9j9y`>mNMky>n3ZQ$7F+Z{ghbBRX5K>7cLcmGn@jR)lD!b2?aEk7Oe Me9PY>{u>hi2F@@j`Tzg` literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/LogSizeControl.class b/java_console/ui/bin/main/com/rusefi/ui/LogSizeControl.class new file mode 100644 index 0000000000000000000000000000000000000000..354aa3eeb01568a7dd843a9e7a3430004fd103b7 GIT binary patch literal 1014 zcma)4U2hUW6urYo7q(le^uw>Ji`EJ}urcvTjEN!|4W*4BNuQcwdrPNTX2|T&s=ula zCMKHbyFbc!XQ81+MPFv_oxS&*J?Gx}eWSOhIK=!g&4 zP||1>Ignwne9TXH5OFyOcKXK{8V1>Cd);P-L9sRa)-hVhL7l-8HOGca)8o+?bC4&9 zPUB6p+1_vMyxgC*Iw4V@B(T*4F;>wD9{8kdBqDBvlKx1meuTsLk?-caN9c>;NNHnBY7^TuNp9KKkeIZvHPHe4~8soA)F9pAr`eus+85Am@w3&B;Ga>Df*I-71=8%4G!1u>s=Kg7cZQlb;r=u#{{--^`8EIm literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/MessagesPane.class b/java_console/ui/bin/main/com/rusefi/ui/MessagesPane.class new file mode 100644 index 0000000000000000000000000000000000000000..473231e77eea97d6a0942803eb7ab3c2626c4b06 GIT binary patch literal 1864 zcma)7TT>iG7(KmQ28K<5H9E-ex z{4ZK%X;rM!cgx>o`Ss33mL*B~GJX55=bY~O>z@~Y09ZoZLqTA&p7<+-BoC~z5iQnb+?LV&rrxv1($IX9j-E9* znvRIaR!hdsRKVjcOEH&nrIY_8OpiHr_{3EmaRqG9u@$&cJKx{2YVMOw!=?DNn%S`V z;DU;kz0cM&J?7hM+>50XTdA$s0p6HmVs|-WngCcy42u!dKC)uQk^+nB^ zN|{|U0@ri@P#)Wmj@U0;YB)4snp8?G<(oxJ;}-WJJ7*hY_OxkHQ(&=|&vV6QwY@$z zD?O5}-KLzr%eCg<^;WX%s$yNZerAg(;*yUK@v(=G1RS|tck80|iYOx#C>r{qO{rbc zjW#3PH{)0l%)?Yh*sF6g)|3xK_Ge9$bEw+`RwVxAv^D? literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/MessagesPanel.class b/java_console/ui/bin/main/com/rusefi/ui/MessagesPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..39d7a79dd1258083b5591f4b4f99476ca5aa7fd1 GIT binary patch literal 2033 zcmb_cU31$+6g}&vm8_^q>$XXgv_)gygqH&{Zv3l@B@Y`jpOC%U5Yc^ z9V#V*SS-WESjtN`Iv^G9lXz7h8hDi6!}uh_rSU__GMzeePXt2UXSiM-Kd~nJ0~zo@ z)f!E?%WIVm!_*pm8JK67J<5JP3}t9yf#I+1AmowsU+`Ur^bdsZDIo)A5X!F4`_Wy; zDz=|-M-X$U^pR>(foe~NygCT^9uIlY<54wIGNgJ`b!eyO1%Xsfmpd7~RXkzCQPS}o z_5FbVPe&}wVadh?T%kKmt|&1@T6BFavkejO=CI%8VcVljwL4_b^E+NB^gLahQqM%h zaP@@RW_2q@Ty5#n?b3ypcPgDC7~ZsT7Bd#!M%lnS42viG!^U;o(3o2`&ZDF;@7Z`C zRR&X#!4u|F<;sqQ53p?D!++2XmGIqdu}wo{<2F_(qfAxeoHl<+4Y4rcnbcLJnSt#v z%xM^pb6eD58g`O+6Tq6&X&^vwIqg^gBZ{gJuPo zG`Di|X_U0VX|JSh5RYVD8co7nz(xAMM6(rQ(|p!%nES4D`DZNtL9+s`(!XX0?OvmQ zJN~xt1{|8v>xLUCLyJxqXl?%1E8JW<#9K60^!Fj&{RQq%w3X1!#DSJcz-@X1R$|(@ z1e($k3H8-SM9lCp?xX?Scupx3=_fyq=n{2za_UZx)ZIlb1uv&yQ!9Ffdz1KD4sVX| zN$p^`fTCr b9D}Y;QsLtm8pkjc@J)QvEp%v{BCht|3M$Z* literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/MessagesView$Listener.class b/java_console/ui/bin/main/com/rusefi/ui/MessagesView$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..93ced52243eb5f0455fa4b6a59259e6696c0ad5f GIT binary patch literal 1285 zcmb_cQEL-H5T0#oE;*xVqSdzgu%JRBa(QoyAhBZMOp(-pkDJRR-Ey~k?Czx$@plOd z`tFYs=PrrOgRu$taCdvN-^}cO^UeJH_4PXdyn@FbY%q8d>7;EkizC_2WcwXjE5>O1 z5-*>I(mGUVJlJBeeIX{I9Sb#XpAIfCatyZmrzfu&JPTKdamb*26va|W_maV8v(+d6 zjvk^1w;9x~gC85CO&RX6P5wa{v^t*PkW+?K#==Rhcxv<@#>5_QzjAhtTqdbDE{6ou ziv(|EjG-R$NGPQpA0VFxTILaHgTb*HONBir9Iop+=dFXv84<7HE_Kk+Ng~wneTLcE ziBp3kG^ir9fpywY@q#YV`qvXI=Y>1X1)m5b1##QsYxW)B|=a=9LFZm2I7kjhy=`&9<>$skvF_Ng%Cf68Aj*3ex z*(^mPW=>SP@%u)#V&yV4g8Od>KC~Cqrf!iT_Oz7 h{=LGIPpSJ*FDyHS$gM{ zhq%Hmt|=XH+h9=asBnkDHwS`{GGY5FM3R^imWLvsNucDe=+dOQsdn5}S(q(O zz7YU>Nz1739fO4tyzkm%eTz${bABMy3bYDC23JN!v(J6uawv>NiJHOP=6ELVH2Y%C z-6ui{`;!3FP8mAE`jrCR86%t#PZsN46g9ung zX*CZ|p)OQ?Sw#_-JKramoZ4`#aThhp08QOkr6~;SE)H@%7|)AmmB+mv*Mbwb)yf!% zOw7KD|2L775O=)HuwO1DBD8yI$5XPeT3ZgeG55We)s#t#p4#=?Av}o(USDJothL2o zUVBkutfzXYwIC{$b}>dFN0&=1nIuM?s%K_S#MUu)JbZx3VK^jNg$1}i1M~16gG;rn zqNFt^J7&Y>*ld$RdNYYSsN3#p8O$|Rz{BnSRrfy@?Vd2MEKwGXDQuL*vw=oRjx7}@ z@dnC-3Sn(=v{1a+Bk^l55@|(*>#`?|Amd9e9n&NxTeq7^cl~{|9nFO_ewwSy>wgBnw{r4k*WD@qJ54h*;+T6gV$!OXg( zCX*e7m()c{0ltOCzZoaj-2eap literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/RecentCommands$Entry.class b/java_console/ui/bin/main/com/rusefi/ui/RecentCommands$Entry.class new file mode 100644 index 0000000000000000000000000000000000000000..f0049bbe8fc1df4d9fafbd90ecd8531ce74aefe1 GIT binary patch literal 2514 zcmeHJ%}*0S6n}#)ZPzMTz)#c#LE1}u@g#(Vl!8raQ79yOG1Kj|9kM%9XJ(1~SKdrC z(YqJVUcC8l7~ixdZNrL1j3*EKHS^x@ea~+{|9Jlq05%|(fC&PNo(u{q)U3%1AusGQ zj|o$hK|n=AFO`H*#|elLm_DROwBS?GD(ut`nP(C(Nnm!ciaH&tXx(Q75(sJm2xKY) zi9MsZXsr^MT;qb9bpmtQ)7!ZN0OS^kdga)!NMEK}RZMMe@A}^PUt<-paR_V2T>6PKA)htuyxo@mH!`<}pMY z)$@>r>>Qe9xo^0C4uuPNc_CHB@*TyROflgxo!3Sx+G6=l5%0-L2N)xgH+ zq&TU67I{h7#Pz+;_J-;_j*jMWlk2|;_uskkJ7%;H*s*`oa+@2q(ip=t-0TtJr~7|! z(*1?$av%-Y(vSiNPxK1TQZ)?fOx1d9k*P?J`Um|Jp}!b2ZLSF{RlMKwlVue4I;1|z zk1$G)s8(|?lW>c`!r82Wq(LCrrn+s(hrp$5u8a#t_9hIuE}J{eRs>S$AQB&|Ndha` zaon}I&YldF$F{ho%bC%$ByTwnf%kYzP!lSYs18}~M>Vv9#qCq?+Bo*tF=6SlKng7S zRBNUa@Q}d#S&1eP@BRv4LaI!gCsG@50h5GR9Ip%{Ac=n!alEj~xN;fa9^w83KAjJc zev!HQ4yHfh*91xfOri|n{tVvJ-FF9OVGh3tT!$Nx2sa}TzC6-hD1@(( y2=j1vY=m!-2>0Or5W*l2Q9gW+K!{<6ZMGI*vHN@gOEwO~B(MxCnD1~Cz+rzMkfu~ z$vM6&T4v5SbF0D-wpWmy4!4_bf+iRpy2l^zoW<>SuC{qk7#^dU>RM${U)`uJZ4_#i zO1@gGGh!u12MW@5J#KsJ-15aZ_Q^0Bzp3AbOnFyN-E&O4J)fj0M$=BPg7^JZ|JK@nugvV8Kvuu+KOIXE>-m;%>cWe>eW_2ikJRb^2awjk?P0M9QS0$ zG;;aiXHiN^a2qxs>D$iV2+7Jr6-D1fI(p&}wmJTcwQHr`68I(; zOxyIXp%yX&x#re!dw#!$2u;_txMxaR>pF7N z5*_!7mQFRcgl2ZS((x2aHmtiW{BD`;Y+KmE;hqxbwk)*B)@keJaBlA zyF%N^Ih-ooan+t`v17VuEbWjfdYa*(N3|Ppj9 zTAZRQRA6*86S=B-)HC--e>JMB z#<#oNxSymOj7|@~FK}Hj+RvNKqG)m7@}Pb^Gq;|kDjRDI7Y(kO*Ojjt^6SbUx$==; z$hIWiVzfCtzqTitm${ixTBf_GhVpi=3k)d2J4sq&RDQ8VD&a@#JB+3bM_|%g^gU17 zjJksdzdeknF&!iz?M$a|v@2~)EO`0gMfCG1baUY?9alZ9DRcSC+Iv~ z*r8tp{SsXcJpPnE3w}SRFYucJ&lQ@-_X5x*L}d)W>EG$ u6#YOO5!-itjsG4`v}SF=H>lJ$1q}_MHpoo<;%veNwzJur*}Va) z;~((X=!^q1c1FMZYx)ZupS!z(N~xnWen{@iKIb{-JolXQ$DhCc2H+mnEer@uv{lE8 zdx_i%yk6iv?sn>aONJH-0%xE4yS^9t(YCkNdMevmV5G73O?9o&SgNkq)*1q(`Vpq7 z;~?5zAgHRMMEjB6@WY-gVpw3X;Z+5!wu-cj$TObWed{HAH1Sp*`H>81S&X}#)aVsN z8Wj;X5mmpd0~HCJx)Vf!UL<{adPAU4Rh!a=z#9%mG0ux}&D@XHgGe@dotBK({Z=SV z*sAS^8-5&^bADOSJ3%6Fp?t=dbb-Z`tBt2u06cIBi*3WRk1dZO7x8BaIXAngP6Lpx20xISu;$Or%!5!Vb)vO zfsNDboJ8s-OU>NfaBv1AHr|70p~7M|Rd?7*X`?uJAGc^lFU#~IFqXUU{5|cND^~L? zKCm#yc1^3c|G~kB_$V_q4%6PM8Sp0#=D`j$qz%8rFXMgEbVTIsZ=jz#STrO>LYw+o z$flgdXGW5H0_RVVq{coq?NxQ~083fAS>UA{-4AcUs3*2eQ~xb&Gd#AKR~B=@Y>h%y zBUs&mgAt0}RK2(@mjg2bM*5?!Vt52jH)Nt$r5O^5g)cb=P96i-Zdqu){_AaArN==| z*a9wM2&Z_mcp5+vCG(ctmrOY6%6H^yFrzrj|1qBCh!y5`rf`7L&)f~*9RF>uzy)$n zVuCv-L*YE{kTQ(t40q|@V6B-cQcNDFxI~ASQ;LZUmQ&CGm-vPHnjx2y&5_KcV?W20 zCnfg)Z~e|w7Lo}Z{CX6QeHhL=csFP8xEkEh%rCh9(=p@4myCxFji=GiTfRN zJWRZtCtie0#OF+Jlq!EgF$QU8p~kxcZ&{pqQmZ@}jmJz}H}@g2ZQ1W||z3idIsnvmp4UgF^_Jb;H1S3$6_+1VY2 znc2tlb_Xy)%SMUN3v{Bg!tgOvMW{BHWT_7v_hs=ylXJ?MjS8V1`Bz`XetJ^teZ)ad zsOwZz)3b0)=nlO9R^#E0;BIx11w0F5kv6|6qqixcu}CFm8vDkuu~8><{#!}rPcMSA lVw2Cc$t{3TmbV0@Y!yPtZObgdK~2yVh4etfa?t$n?hEH4LstL* literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/RpmModel.class b/java_console/ui/bin/main/com/rusefi/ui/RpmModel.class new file mode 100644 index 0000000000000000000000000000000000000000..da2ed13e00c2b22ee635e096fa24b697341fa6f1 GIT binary patch literal 1739 zcma)6%W@k<6g@4;9zDj6Q5+|+1DV7okz`u}90EkfU=#-glBhyPRM?H>#-1>mQO&em z{0BRJfDH?tl`^RU*7*vy`~>0jXk;tKDo~ZWr|;wReVp4*|Niwi0NZF8NC+%+{az&) zgz^igGH@!N^m|QzU%CcT0&|b-BfH|--a+N#y+^XE1k&|Zdw084+Yz|ZIN!A@Fm+_R z11TWt0vXo{mGoo~60i{=4wU0o8Whts({>I#TMYu5-#w$=oN&VmqtxyiwYo)+^k&y} zJV$K_Bn!okK&r+hvJiN|L>{vO)0>e#L(#m6DNGAoXgHp14SIVr*tPdu-k)#yUEA&0 zfuql{Fn1tT-3yiNb!oC#C{75fYG9F|rzP770zXLOn!ul*dVvgm_ekzrtXbc2ZRPl$ z)en5$(+lre+05>tw47ew50o}34?9xs`hhIBr5E~v)wMm(SJs}iMqvNLt0p}a*zUQ` zL)`ziILFyizGYiSaiy|ZT*XVe($@tp6^31mXwz1K;~i9^mZ(FA6iA0sb%yLn73#%~ z?#PM>18Mzr%R~m*9118IC<@Fz&leM`SR;m`WMC^lAbr`7Q=57$ujWw3D+Vg;>A$rm zUd3zVh$p`yqvuBmV?1Xs?+DyHpWox`%V7g|O}v3O1#-SeUe*pdE+ooQVG>V@9Ua|0 z6IE;q7>9P)iUJ{XKPP{KevcWBhK9wNfHNKjM_{I{?CzIMyC2gwP1?qFCNSqPXYcQi zhDPA_r0|}D)u9&fz{LCbfT0oLOn-;ZLRANzZTo|uD<3#|l4eHlNLiO(z^r?m)tYOE zp(F`%V*|`nONOc`^&p10K^7$WJ|(fJ$CO_QO%CpPO$};uk<6qnjTy{Ra)FXn+UZ~J z3B<$4nEMGAf8a5JOI)XEqyZKp2?%rwm|D!% ~UEmLF zG}lVUcs&6M-V*rc*m+DrU<>c? z;&*A4N8%ZmlmS5sl8%_8%{JbP1FUe@DNZrA x>M?c_`0TV7*+^Gn8&@Nog`w?9z-APtCP6*A_d|TdT{nJ%|HgD0O`cQw{12hJgdzX{ literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/StatusWindow.class b/java_console/ui/bin/main/com/rusefi/ui/StatusWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..8b5140b33104858ac36fd1094468ea12570f7541 GIT binary patch literal 2071 zcmc&#U2hvj6uo0i96M>#CMAU=&?zn8K=Bf2UudZmjPrq9gAz9tPiVZJ*c0vUSTnOu z@{9NhNFc#GKMHYX*C9^3shX!gcxPwtJ?DO3|MTx3e-Y6pJ*rTN(MqV}z@%0lsvuRt zz7sCBFI3Xk#}z6wx^X1NB8WsX2!84v$K((~7m~_t1*ubEl#L5A%#q zETTYdu+{gSL7mpQK75sr$EkH(kEJoHFFDMj*r+|)9--RQm)iS~Q@&x?HCm?Cd0L`1 zM(@@0am)rd_vEo}%?0mTCyjg3bOpMN(PCSNB03O8`TOK!*$oxuW9_BcnobD@K& zYis{q&eA*@XH}F0K^vz60&}B=M-Tc=j=piV`9)h3Yto=#L zzbwB0JFWbUTZulz(`ypsAK^KlYtbFzxS@wGVfeU!;Xxt8{VOnR6f%55Yw+YOiW2Q6a;pmoR)*5XE>& z%21ypJvT<1G8P&8xTlPWbvPA6kJ6aPkXxyhH!->&iYR{Kxs~3b@MJX6#-=W; zw>mnCxEj7nL?XNaS4vy2FT7uXXGCUF&J8@|0kqMJm0VS1bf#n1@!fQS3s$W%XmEZRdEGpq(Qw>*XsU6w|| zW_n1_&CL^xT6>)+DzemjZqlP*)Av;R??Whac7b;<$;oUh($VUCU8r)r-n1Og9 z(^)V5UJsfW!w-TTz@0@1yj+wITVw*{)LC*Hf>a^kAMiFKo$ zm)h^hbV4N*1&SNn+jq80I4-a-Po57W^BE+MwG;=WN9`zIMWLX- zfis6j3&+}W{-zW@zsnC@4(N(Eo0(tGA0|?=VjvZrlPd(4r#%Z z*PgUW^0US<&f;7JOL&oItoCmiguz*CDNXIks7tmJl7e0gkK#@alK(jGca;-3*E(8> zVbFUiNtR2YR^KT@;Pna?uvo&I0*Fz^TM;gBfiR(uHI#{@f{TG<#4_p710Ql56`aJW z81LZS2$xt42ePKxso*lM2*jMWp#%FqE1~vHxL0XNK9i@wnOgmTkaF3EA|F;z!3jpV zYbLfwn<_Nm)a>`A5z0om#=v2`1S(s~IhJRKUxYhyyiLw;QRttG@Cmo*=nkE~6k+Y@ z5q#HMPmj2aSD1K#zmCVSf+DZnH$KgQm5%bvIYu?yj(yee44LJYX10pcYzv&bgk@gO z@aYPl=h()-;q2Gd=YPQqfADDzFYy|xg!q?vtz`Qc2{Q@)SMgeoaEnhNu6p5ToUgv| z5H;SsU3iG*Pg!I@TFAI>GSl14<=zJTc@PpZK>T$=!IsOflM=#)=)aR%)m_Ad^%3y#Ygc8K6tl9yfE-5L*Bn1OYR zKr3)}kh@#O9vf#!znvld(+ur%4$4@ybp!9~*C+!cyxnH{ixfL@Gv zMh%xD7%ADySg!8`etT!11w0=~W$cuw&koq(h$*8ZWW~}EjcEx|Dugsaj|E4dQ`U0C zgjTnslJr8k<+gGkeRVfxRFt<*N4R(fxw^- zqzViM*a8K|=KAef%v2Zuzvj$O=_})1bZMhpC8Ul$Eb<;xI~2u*KqrwY&Gx9`wm<&aH2WN7^~N!AOKbHS_3(mX zzZOiJEmTEr(Xs-e&xGAQ4*~)|oh)!x-{wv{TnsfQWm;Dk^WZvxzfWGq>F67qws>4+ zlJ>{cUJjG#GafE&?93NhFN#wyT0xwQRbX30~ zWkbMA6{Cjjasu6&x+zJZ&rFQvHj;t~~)|8YgmTU;cUUzc=vEDw%}WP{U}d*0*enyHQd4TLN`|cOARksXW=S73;4AR zE%31IKpTA5z6Fc!|J!g5TMsRk;5@$H!QL8LTYLWx=sfN${|1--!d?Te;Clh*0FGY8 z_oDmu;XSy9y(YX5A5;+Ryb|HV8ib$*p#dv15I(9wSe-^_HenS$cD~%0fpoJ5DV|2c z-E`rT%5Elnd|HFBR*Uc%M70QYKCIUu5QyRP3c`fZI)sNc2o3lG*=WF*@Ex`u#_cP( H4d46=Vl!6e literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/config/ConfigUiField.class b/java_console/ui/bin/main/com/rusefi/ui/config/ConfigUiField.class new file mode 100644 index 0000000000000000000000000000000000000000..2041fe4be7c2620b92f9f052dc8eeb3076ee8d1d GIT binary patch literal 2826 zcmcguU31$+6g}Ixk*%601e&(c7B!^BPK!-S!$(~TiAiXRla%Iz0fvW-y-C!_T90<^ zw8QW(c;JoSzzh?Zb_U-0Q4Dui3b7+6xIFM+Yo)z=?zwl*9_i1&p8XDB7OM_UF-+8D zvmCXR*z(J5zg(B$mcL!D+RM7X;ESN)Aj2@(H*StA5y#p{hD^s7dkhz9k9mhbDXTp{ z+%7*@6Hl}as4xuQ^+R9ZW0)z_dNJ1*2})CFr4|QUkaEBYVpT_kR4HyyimGe~2WJ>Y zOpbQBOx@}p>GXIausHNSkLgAoS(7NLj=#qYk4yCORxiu{J~WYpCm?x}W5M7EW2nxxP{_T6@5 zkicWMvAfQJvC@0fM<6NWlVe=C7|FxID8soz|06z9^Fy)RZf=Tbjnk=R7^}%T4>ow@ zoBQNpM(_BFtm%l4#3!-W!^n8DN@y#&BY9UgAB(ysYsrC(E05C{cJUf6Ie496yuXj- zaT!+_T!Ner4WkD6QsL|3h6@i94z4nc9-33Eojl&eB!km2vR~O^xZYj;0gH4)#>lO& z=kXQ_4CkAC*BEY{>o0x1LnEbmsHq7(UD4F8X%MT(;(dl6 zPELOCTKIpBjwG}y+fiLC_*Ug{^@+olOs`2ub5d&KrmZFGrOL%!+;i{|DgSUc{IDZ; zMe?2`7*far`LB$g8tHt@@ME{ylIR%lKD~1Sp(blm?zUT%t}RY<)b*ri;TrjHpYU(G z;`_)tfvEBzSfzJGWn>tYEan&(W5_Rto>@a4l71Kh_RDW4Lm1D1CdxB|3OO zQcf$)L5-wt-I16q`AX3@hbfZI*O_IZ^pY@^M7$mz_d(RNfs@k?9t{?G3s>nB4$)C3 zX2ybOl%cVMEdA%`?l#S4=;}U)`_)+fSDgKW?oQ!l`X8nk(7dsVydArE1+Uuqa~Mw$ zzNP3>^z8D~FF2ps$3=6!@f+TFhHJn+ic|Zz`LkVQK*wylG7)$O7ch-WxMdTJ#~?`p zf}{CqN|B-Ycav0xtVtDneAI+Vp{C`yuYo)iml8`pu$h bGSlc&EZ{yaVu|jDiO(WF$8s`W!54o6_^C@Y literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/console/MainFrame.class b/java_console/ui/bin/main/com/rusefi/ui/console/MainFrame.class new file mode 100644 index 0000000000000000000000000000000000000000..c2494be66ac3603099051a0d2f2624fd9912d4b4 GIT binary patch literal 4842 zcmeHLTTdHD6g~q48$&}vnoCJjHci^vz1U6CYl0#L6ci*wqGG7pxAE@S9=e{fW@jN$ z)!$XAmD=~d_WxA<#&*05S;G<~Q66|;FWxiXob#RQ@XvpL{6$0$Xt_WWjFx=et(iCy zEm@0Y&DSc@p{Q+esn!hdiULhBI=9RBcrE0rU3=Wz6~1LO8R|BpnR;Ef+fudf;d!`r zd!5mxdJ1-RfVsU6p{qZ{%F3=-S9>y&%}_j0N?UFvWEkD3Ytydn3fnZ;KdSNMV{KF0 z%{UB!v2+-t@vL_cr(}7vDS{_l2?v_eC1qk`B;!D@1l)=(Vb`>2bYujb73_psjM&eN z&a@mE(EkuvpQA@2>j}gfm!Syi!*7tAUY1JQ`;3;$X}pA}^si%7 zuIwf!GsIVT_HcaIo`ib?9Nw?|Z{*3hz1S3#$ilRBcMd%`@y`wXehKO8@oA@bv^Z zzE&;SuC^Vc@D7Z~t%9$OsP>F#2_uv*q7y8QtqiN{dKx z@JUzLjt;!Gu){Uw)sRQga-GM@?+A0h;>pO1Re-ctAhxBAXAubw!5ig%X(r!}`J~p6 z1dz=1#JF6^5Kf!=lFMAoTW-M4z+l~i@!$iIkI;^g^j%jj<6q3w0-Z^cuKR78YF z4#l~zE1|t=53EXUd{|%cycXrxNUOx;K|L#PS%b|go}Y_LRrup#jff&m;nWOV=qNoTE&MES^%nXM+9K+HEEa_`y;o0Cm0jl zDHUBpzEZ!gNf8EFWoi&ud)!FyaH4=cwp_odm~BbZ-RDN^Ai`ZvzF7VHK@@qIAY7t4 zDoQh(Xo*>(V=E-Qh%SRD$yE^#I`d>}-x_9*=x!ytOz+RpyL64w#d19vD+bwq&y5}P zh+(lAcbmdshzcVrpI1)-av zCd-wbB7MXr{>?GSB*}PMkzZ52%h%^q8FE^YQ`7RHij30&x41|>o1V$gzCz%N441{(D!UTOfMu*Qb m5W-A^FUBBLGZ6MO5GLu%J{z~_8{DVC%WW|F?eO_Ky8A!)>?OMZ literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/console/TabbedPanel.class b/java_console/ui/bin/main/com/rusefi/ui/console/TabbedPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..9bcb36505a860b166dec426ac6eb4033cc3ac50f GIT binary patch literal 1143 zcmb7DT~8B16g@)=rAx7ZAmA5^pn{s+n5Yk8Oh`eaDXj^$iBD#_9hM>6nPzrc{0IIX z6QhYH`tFZ1-q}|BU=5f}=Ifq&?zuB(fBgLN4ZtpL7cjxF9_dbKdZ{>)VNZsUR;f-z z*x;>}Xusl0Bn9Ld=1zE@hY444SZ|$($TG}EMp_y1WZxKV7#6A{%%L?>#XAh1{X@jC znjzkW=_v)nm!ld4oO&Xav`-mwTiZ>Bd_}iK0kaI{5o=ax8fC`bzg9+&(7tH<)Ie7z z+)AzduF0Bvo{g&{5GyXf(h~Pk^ zDUU^35y~2#{71UfK}9P?cSlMOEw{b2s$&_Ar8qybR&Ttm)N8feKn6dxVTG)r6}{BXcC!eE%Ow;r?cpk}7jTVX*?DV> zA4^!q3d5w8*6A%ei)B0vi{seI=ZCsyBJoT*{M^XdN#IH_%+y3`4}`mfw18XG=b3G8 z-p4v=&e6|0LEj{%Xf^K|$WBNWJc`fI?g60~&E8j(-Yi`BjJfX_<|2(#StN%=T9*bW zEa4LEsDG@`=oqTR;3|1{K4SImy-&FEfp!yc3?9wEL#p>EWAO*bA&ZNz4Xb$YNwZUX OBg@{vCe3-Oaq}0r-#GaI literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/engine/ChannelNaming.class b/java_console/ui/bin/main/com/rusefi/ui/engine/ChannelNaming.class new file mode 100644 index 0000000000000000000000000000000000000000..64dc1fd93dbe5d2748c8df56a07f55cb37ec3ffe GIT binary patch literal 1190 zcma)*ZBNrs6vzK}9c(LQzz~oJpAcj#NChL&Y(dDFad8Zi!ji>Tms+-xt|NUQ*|$=N zfk-62_Cp!ZEfc2GxV~u5J@=gd{hf1ezyJ7h1z;1;V~8-!8qJ302A+9nX@RAgPR(*m zEnnx3W7=iju$)>9QHJCZKjE6qotjo~f(AppSl0J8%lQJsTjIy+_fu2(tVdev)!I`(itd}_qXRN zo2C7N&M^PJH`;j4ur0^(*BPXAros@-H$Rwh^vPgIDHz2ahW=bTWIWw{b}>^)Q0%yZ zKJ*Lgu7Uw53_~UAaXDxlnC>1wu&KOMsY$)4aMu#+&?!SgDu#OuBVEmrF@pyJAt_`Z zDTpCXfPUTbi0Opefl0=;hYGX)T`VOR#EcSUShZ8OEYtX(gRvOh3cKC)$o+lHM|XLE?jS#8l`NJ9Git zVq1hDAX4h$%sHmjOUzWyasM+O-fASn2!R+U#A_Xe@+k|mA$S6hG1pdHqX?lmeu|0e zJ4wB&<^(lAnOkm*bP;J=Cst-P>E6K%PFQ_;ORH8f9FN;EYw_Sw{7(& D_h=Nj literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferPanel$ImageOrderComparator.class b/java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferPanel$ImageOrderComparator.class new file mode 100644 index 0000000000000000000000000000000000000000..63f510798de24a2c604fd5b94c64ea39e1d57193 GIT binary patch literal 2989 zcmcImU2oeq6unHc*w)ge&AN6U-O6rl7r)3aduoCJh1XyKJU5t=0___kUn@){(jaL! z{bdDOpnczu8g?mpun=30RA3LbWcuE7c|Q(${{H9vM*w&V4;!$?U_a7n$4o4aWM?8f zsA8$G^DKJ|lpKxF91DfX!=qHh_}mQ9bagrwMmTL6u)*Nwg_w#?B2?UYes+P8YrrOh z+u7>G$)q#4XRx_1m2?LT)_2=47;JR)5F79%gY7xWGh?)A!VT8kJXHp*PNq2Iw9m0j zgp*qFvC(G)UEna^%F5!UW6((s_orR5VfB)%#dvk`UP5d%CHUo^i8|4Qrh*yyPw8t=CG z$mn$L?*Hs+8VH>bL#V;l@6)5F(pq9t9;Jv8v<@XEL%XDTd5%+Iq#&*at&;gDDMe(E zsBmJ0vc!44xY^V3@A{3(4y9F_J&`Fsy_9y26twa(mA3ur#w%x7+0Y+Zg_cY8`cI*V zLrbze@(saDw<^cp9H4e`vymw|cZ$uaoLyzZJa!rRi?IuqE2v&G@HGRFv-6r+saWqy zSjB`(QwdtNPnG|ZO8MQh>J}-zofc_UdglfZ!1fk2;3k7_c6)QBFmQ&Br9H1CwuuGU zpQLAKPW*wxV5g@ek-V54K(oaScP=f1gC1#x&z3!V3>sdJ2t#3hU9zDiTRdvQw+tSv z7Br-1NI8w1s2tGjYa%bxueD#S|*Wea?Z<39--=XiV>^*?5;WquE5rR7f z1do{`++9RqkCq?+dAw3i@kzz^iJ2KV5{?D-Si_ZWo9DBqtc!(Xy>{x6f7 B%@Y6s literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferPanel.class b/java_console/ui/bin/main/com/rusefi/ui/engine/EngineSnifferPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..e0d78b86541df8694498a472a913a91a228716eb GIT binary patch literal 5638 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 NZ8xyRdz%?H{{k74B+CE* literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/engine/UpDownImage.class b/java_console/ui/bin/main/com/rusefi/ui/engine/UpDownImage.class new file mode 100644 index 0000000000000000000000000000000000000000..f03e6a0c95ddbadcec6dab2cce4decaba1e22a3f GIT binary patch literal 10837 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 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/engine/ZoomControl.class b/java_console/ui/bin/main/com/rusefi/ui/engine/ZoomControl.class new file mode 100644 index 0000000000000000000000000000000000000000..21697567a94d3bc6cb84b903a7b6e4b6098fce79 GIT binary patch literal 1929 zcmbVMTTc@~7(Ii9E#+3Zc)tva+Inf_ssb@VkOVDA0+L|j!_p40xSgr9v*lv^T_&37 zyFbeKOdil`H3%Tb>k$3yt^Y z7`n9xgt2=JBZa>hUxdaeNj1GEw7srX)hk)9{(>z(UDJNoyeB>LoZ(z1yTy=LR3+iy zJi~y+%lj^!|E1PSCo#m>$G4I=m0uMlt3$=}UE?XqD_ZUNq8!ZfRQKk-;9j|+w6P_* zx>UJCw<>~Ml$;k`DV5aYeLMYL8SFW?z-~UR|&)>qI8Y)ou-q zOL54f+?njB&%7K4hO4U3n#AKu+iTG+g*0@CAgl;&Ptrhc>p)Se7#$+lOd*YtUi9Gt zd7P=4TsLLIXv)@{HEp0k5nKz)J3?=|uJkgJnw@vBC9Za@TH{oEqmAXj> zPg<#)a`3E`x@iX#zvlOt0SA4w=);^q2RhM3Gs+v1G!CL0soL0sUK+b-rw{$~9H7+{ zy~SuueM5SCaPSL;f6%G}7aNtJ{Yy0OtykePuGIFg{sZA!48n3O!i_c%wqp@)wt?_I z7J*|lqJ!11u0z}{+!zG%2Dc*!f0P`H(cvHlA%VL!J?|l7*$FF4zXx4OKBm2WAd3ev@9Fotm*rx_M|@SS6d z#U0XUU;>j21KUD&Pz)31e6P;V>%sue;+&2thU{-M890w=hBVQZg}*I#qSGs7Fbh-1 z9K%r+dayDE=2b+W7s1uBFBllb@eC~3I`W+m{#@D{LEt@grGX2$$S|z5iyCivvi*W# zwC%t?052%2%LcBfUec;UG#C=KDntJFW`9vJ>JTlc)u=m?O&O}5``HR17^f-dr9E`k zGzAsOou})((e6||6b+9%)W}=^+G+pOYO2V04J?6XE>j6wp`(VFvY+gn^^dvEE0Z)3 zCEpie(WCAbYChun#O;nLn$0AAFzBe%fYMWvo^|xoHBGDgNYD?+ErF#84on+qA18F_j`Dm9|IcTZ&Y*vAR05ni4v(6-yl^sS{Z(o7%^n zUx=Ngf&vdnc!@+lAaNy}!b2LYG8VBO315yAbcI`8;Z|3;Mf27d3AZ8(ssvVKA=R-k Xn-eFK(qgf3uGFUn^cwK9y>u`xx zzu%S`jY{?~c5WMqgj=DcKhmn7U~0bfy+&^reUXlowoW8aBa}ve5s*g)VwmY%VKe1J z^dl~%vVI@^1JD!Nleh$ZA-UeCQ>=Xqdq>E^Zc2~tdWn)3F)%FKkrM@Kr2kQTmQWQ}lYaEK(OocI&@)Mx~fY+Gcr_T-g z|48}ynOr2ZAux$eX`D{on&|IwEjU${*O*(d;N6lFi?m*3SdU^)d)K23GyHcsQ$+AQ zScWT$Z~;~rTxsP!b<&x;R#TScjckehfLmGGN8NKCWYFxWh$lN!k4}G9?XEB<`|in0 zfI4ZNl7HIBS6c0|R$hl|46e`ak<=m?tPm72=wd?s1mlh{*0m&3o&tw_Y(v~bX~WgL z;~a<(kMkONyg_xhzP8QawN`tl4(~IzIs4qaH@~W((mFg=Y?LblA>*wqNqVSLx@@T3 zGC0?Ie6PJp<5&xeb!apAX%3&i6a`7yOLr_a?~K>s69(VSCVp^_A9np>0saRiOs|-( z%5;Pq!qw)bqc5(&y*+Ahhu$OZB4e<4e{zBJ=#nvT9VqST1y_Y8oP!0LHK7Led~AT1 zkLO{L#u`apfY<4}M61t9%jtQ)!Sc7w=Ff2X4_Z~=4f-yS4AAbI^j*y79$baDXvN@d zc&C8iWZZhR~`*ULr9GuEir<9^I^IjU}ZZ)c4tfdMLv^= zCO-HB{87exmnN8)>?SjF@64TZ&pmVZ_n)7?0BmE!MM+>eG@~HNQgsjoSro*X4EEK; zc7~BPiNEQ>5m@{z$8r*+r;$Dkwg;(AWN5cT8yPK7u}4wrKP9AY5!9AIeJo=?(?ipf zS{|x|ul$S5N5RL-bGlM_9_h%w5O~=tMlS|h>kBwLW~gQ%aLvONRM@I}a4}Ow8P`3` zVospk;?R0G(rPyw4OFr(2eA^E>zYu;eVIh;Pd6Q|T%cLV%-`h7NiP!Xy-E&DGEzf< zl~&F;kf%0KW2J3yp=XEft+jp?i&%1TS750~A`kbNw!_l7SP}65i{6o18_TkGCZRgH zcr-yZEfp~!nf9yHI2L&&cPvdVBpGUVGylwe}A*&ho$;G*>7PIKoYuz1*(j7UszlxQ#ng zm`}7ajMx5#+IK8`h0{CBqg_h1OlOQ$%VT09GNR-sIp%y$$eUtvjwbHY%?A`u|KD4e dZo|Pta!c^>h*k%yXrWCOSHbl7Tc=UN>R)Tb=luWx literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor$2.class b/java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor$2.class new file mode 100644 index 0000000000000000000000000000000000000000..8b5ae4c20390f0ee8a38e4174607c39d46db2c30 GIT binary patch literal 958 zcmaJ=T~8B16g|_fU0PRKtD+!6)rxH)uHnsKG!3cogAyXhn-A0N04vK3*_|!L#NXpH ziD=@3KfoVlymx7WiOFuVJNM3t?9R5V+>y3QBBMJ-C>vpor@p z%BTwzTMVskgj#K;M*|h_$U&q8>Ki7I(XNa`_9vSTXD-mlRn}bP%&A^ftSuGqnfOQz z1r}SGVqczEUyYQu{zW}|Y_GL>r!iD-xHuW z4%G2Q(*)%-pQnJzv~6W@*q6tXY%AL)jRW;6YWw_A8wJS%!8g)B>F`*K~$CB_W?F_?L`xCKKdMI5|cG_vz*X!qflv f)}`BU@Q~aBns`L3gC(@kA&awMdHgKXTfov^TfyiX literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor.class b/java_console/ui/bin/main/com/rusefi/ui/lua/TextEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..a7486e5cf401db02ddf1661f7072ad757a4eb25c GIT binary patch literal 4065 zcmbVOX>%Oa6+KUu)HChI5`!0PgBdRn$+FePcBP1h;0R&I5+h+O$wmezw5Fd%ZTECf zdXX)%0ZAYsD@*nj2qa`rRZ1qPD*2wuUrH+Hb|%2{F)iWpe?ht3PKY|Tq|ot@+@MecI_iWND& z*AVM{)bX6?F@bFZgO?b@m~TrB{Q`Y!5uObKKggjV@aI`CkfHA`NxR4#>yDe)D%Jyk z-j%g*q^Rd-7G=??)%_q+BEu;R!xi6KaH_*q>B+!~l)B}4epH;7#im6)f6kGv9d2+{ zjQpZiT(SbkqMth#)X|5X1`O;H*fo&gmV!PV1%$VxQtm4|o}7wn^D>xG)&&Y>V&q0HMF98~$=l?SaE(2&#d zAU>wyAqJLBC5{}|oONb-ga!sMD6k_nY=!$9yB~c z-Hyv~uO3IqwT=-ys)2mj)m~_7lgKn~;FDkv8&w&#-jQ1ai5Bjx#u@V+?0CJkjAeDY+Ut2F~Hr0^8~M3BMAvI-F$pcMv{dN%Oi?;Gi5g zFo7pIq?A+DbZRu7x9W9{2NL6amKdFpbx0-Gx#h!jMNc0mJPjSqtrGE)BVFysN!Qm=TS+SG+I%6q7h)0 zN3ARJhy(LLc93NE-I0fN*r=*0v?y?9VCw;zY3%idXOP$6YPjA($W}lq{hGjFnt1z$ zO>=HiAXQ-2Irv04NLw}SCJmpvT}~%;)KMjCGV!kA%L=RD8?B_)MtiN+<;DGOx7ufa zMmF0#0y15d86t47WB9bfXbuN1qBHo8f$!pb)MMADdWSZNzNI#JML>}358hE8EY!3g z2NikFQJ)lj3eNQVZ&+o;FTlrrKjLbz_>~YX`gW+}hxoCE9|;^kWp02^Z&a{ zU2d(L4waN!4Yy<5ozqSvOMSigfxtkvDw~jitm((kbu#`}2EK+@sQXL4;20bCxCX{t zD-6{Fevj2#hwVlPY4{C$c56|A-V{!jVM>P4q*R}f^z!@L4UbbA{&+i?(>Ta zqoBH&PX+b)mYjL$$+`m_XVLvtRYe?PCQ(3!6%`Tq1S8-tO7K-JeqkqGp4{>A#M=uZkg*U0?9Z9TD zGro)1iRr|{?o_kkAxC?|FzNLKwHWhGKzZrH!<)o@a)a0}Zy5XOmWBT?#~xa}(SPM` zy!atLQSP5hA0}6Eh8c`bsRUN=_(=EO?&BZfJn(mvyP)3otYBuS@XQLXq%zMJo>_%G zcl7uzEUdt3iX1C=Z6e+(>WN4|k-xS88A;%Kj=?;OJeSfATx9{D$38CD!>AC11w4W( z9>XHx3Mm!ALX0JRIZ5$!nnnY>JUq-%iUS)GKA*a1=_++%0)H4Y)Vo2d2;9Un|Etm| zs1*@<821Znl}b7AavP344JSfvhKBMe9jLnJRnkK%_~Ke-dUEj!OZaMAnez=JRAB}$ zCce2L8s<(WzghMa*spYk^IBUtxztj>u3EXFf2tJ@V|jH2-(CwR&8O04AdlDa1{J&U yW>Su~@O_?&?>{40zrfpg2k-LDKK`09f8mcm~-j6IPygMUC6#v;{Z zDAsDK*$m_6I>THb{EK8;k&QoRU|$#t8(|!pO$sVkju`UW%9jqN7^eCOceGY|95ala zAI4fHD(Xm|Q(NsY61IHa)~XT7R`QOQiuFM9u+>)DSeL3VJMye8wMnW}maV7StBZRg zj+NmJ$^U}>Z}f0vZWI^XoVR5+M@yPO`MfDjFQ&X5i6q$=!pvrchY3$(pID5k`D3NI zp++qr9}-h4j#kb{UM1YY+$1J&mtnqK>yvX}wB^{6H&vtB_S05F>bf947-nnA6VZ{- zq22e4c@u;Q!&+^0VUmPq(yMwSX%80CmF4|KgJsawK+i4Y@Bj|R>1HdTNDq)F`vfLwy-mBfnID~g$DPl!(_b!y>&I?h|ewVa%Ro2oJA8ShxnEh(~zbLs-33!;@3l! n4#bh^hRhomad|u=&m30pJVUXwd4Y1Fh*z|?GpS&$_wV%|nh&bf literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/HorizontalLine.class b/java_console/ui/bin/main/com/rusefi/ui/util/HorizontalLine.class new file mode 100644 index 0000000000000000000000000000000000000000..2bb6966b1bae37f80205b01b8aa4e994538850ee GIT binary patch literal 973 zcmah{+iuf95Ix((bz|H%O+uhRp=r6~Qfh9cKoC+J1Qb$KsVEYUZn8}lId-*n29P5=Q z#j)oGw$l_Y*O6w(eXu{;pDceU+^+R{&vv=PF#S}xB6!A-Dpy(z>4w+g22#kF&@jy~ zuhQQR`UhOTvkx3jFio#*J1tuZbsk@)gP!miR-6BoQfJVPY~cnB#d1?gvg~1Cy_EJ* zPqh7drDcF&!9)&u2EEIJeQ`{*#d0NyelGgl^@ZowGdPb6I*JT)F;>HKJZa)07Kv-S zxz%{XkWG?9ciq5cEa|vHTyf%=2oqOvjbX;;K^V-CpO6~mS6UgAu&QHa+}W^@PK2MyqZYCb zLm~0RwB(wjmhIA`_6L2{IfH2LtH*pmw1lj1vlOx?`5~8*ccLJMO%r!j%Z+_+Alv+f zP>-Gedydvss|b+Bh2{@P(~ic3tWGD3Rz|BF>>{Q^E`jT7AaLco*q3ls7cStNfW21#lk;o-l@ixbIO Koct)Hc>D*DpuQ3S literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/JTextFieldWithWidth.class b/java_console/ui/bin/main/com/rusefi/ui/util/JTextFieldWithWidth.class new file mode 100644 index 0000000000000000000000000000000000000000..ebd368b7067f067e18f62fb333fc64bfb36db96a GIT binary patch literal 953 zcma))U5nE|7=_RDD@_{P-EQ0cXmwjZ)-(lkD^$cqS*TP|y6oa*ww-N9(iW1bUHnxF zD+L9w#UCZUGYMIjxfscbfeb_Kz5l_#@}i}fjn_mB*`?AjupUG1iI@rblp*8v+Gq57J|FQs z3JkEoaLa~)BC(vlqIrQ&tbq&(+12_|U(ERH#q@%Qr~XC28Or_n&=1c1P^fvbn2{3^ zF*yDI%im>4J1S0fgRhP$sb=N%Pbv#(?5Wfhlky+f$RfwEHRke7$S-*q^3gziq?|RU z9q;y+(t9DMd=`oMtgH6lu~A3EK$9G_!Cw*+hq!Cwp5o>vT#P5uqNNAQ^oY9a^x{rN z+NQF}guxoj7vYef2-UK^4M+G$8KXrtr0M)Ah$@6eSsEM2)6=BcGy0mMcit^q^%d;T zG)|#JPfM>CNn64e&1cd+xpG&Yd5>zkUbs3a*WuK*NvD+&E3-$G}bb>mYRB zringKvaJ&BDPK08+pq*4oOlCd}jq#{++9c5*`|+a{~EhyWQ#=%e;d+9&s4mRuf zVIY+rwkA*-0}i}5}HvQa| b32D-qW9oHE3l$dFqE<8jO7m@VyXTzu^Ld{)FJAun7k~^NY3LES-gNd-ZrhXJ zo2fP*-?UQq+n!&sW#0CD!){6qy#m9JjUSAZW!O8Z%JyT~^aXm?D(f`?krx=qI)SoZ zH>|b{0q&H*)nX-^DK@f|aygf+*@ zcuOF%BmK^az}S4Tt5@}1MoA|&HC$s&!G$gTRMlxdk$wcz7}9WEVDjuH&+C)hOsnNe z&(kp{5Vln9yN*YjS=>+q57yPd#7mMe!b%h?CQ1F@cF6RfSk2m*ZEOVBT9b*S0G9)iwrm^zY8Hb zB}mOKEa$9wH&FGB=97}K-(jof*gSE44MlSH&6J&6ilCqJ zqpIk^@l2dASP@=Y!3JMw#DC9Smk*>@S{gw;--d`;F-=)`~zKyaQNQ<7NIeE z828TrT}5wj5kE$OD3l7vC~qWVYe!f=#Dgxvg8_2anBx*NynTkW&KkeP2BU|t$+d@d SZBa((wLqyp-|?rS6#fHp9)9Tn literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/LocalizedMessages.class b/java_console/ui/bin/main/com/rusefi/ui/util/LocalizedMessages.class new file mode 100644 index 0000000000000000000000000000000000000000..0c729e8b69608a009e11d4132f9ddfc78e8ad67d GIT binary patch literal 1444 zcma)5ZBG+H5Pr7pwbyb$J+bnxB0{gc6jTstMQSaP*n;6`lSaQB<)}ycLhi04_#6B& zS~L)i#LxaHWT{?_+YQG&u;LB+T&oh# z)=NgkdS~wEOvf?GrW1gVq3_T*HsTedR*q+CjVgnb&Sp|O3{%-|FcOsTDwWqW4E~*r zp3l)nqD^L(AyB<6#Gq!cs_3q5)ykCDliAAWCJU)-KBF^CzwWl4oGewWn&qxBc%xc@ z!I!S@n=&LB*Qt1^Vj6Y`3^x=+aFci?ThY;ICymWcmsSW;_K*Szei;E7ql9{7&@j1w zTtR^QWf^w}+cup>RUF(^AoGKuj44W>1JmURQ3XNx`7WkFK`%pp)~cCXjq09h?;3j* zlh23WO~J4&ZVP7!Ud;0j;tY|05x=Cls33$Mnt}V)au`Bo(`{WZ!$4H)?2b4e8>2B{Gnk6^UKIh-AO@4U+ z!Djn_VYNN2r4p?>QSf1{D|mtw!%{m;x?(s^qH_xEgW<9#IfnFl!!DT{7Qc{4$77l2 zjZ>exRjwIs!=|8>He3#p?2hbOVttX+;HBs4UmxNs185~xiIqeoRuTLoMKRz!#;IHm}A1cC8@WCIU&qRzj{xY(}8c4 z>}_IDFZ!Ao(~D9Q6ME6##I$}2?IYoPFhllwbl*c53U${j5F(UM@whMg<~!cGm+&6oVGA`*E2AhW_6Z9g zL|IPEFPvckqg)2GV1ih}GI{v0mWehWdZY=h_|hA@C?fgc6r6S3xG^pb1;R(@2W@~Ph?+{=f{>~zsFmCvXqy8!C)u`(9J{jDrGE>l zfW(0xz>h-AIze!VY9n3S`H~xE_K@AN&bnt++De>gyZvme<;rVH6ufx;;JVtrVLM5OWYGK8qAp>4|c0IctBVm5zQ9-YjDms22$Gk68 zYuks%(EQ9tJmP0I5+k8)bZ7|PN%_!ln2)6vN5!BovX8v41VcSG30FOyNw=RQJ$ov1 zhSm618>A*2IMrPxlP@A=SeaJ12TULafl_<$cq^Y&A>=wbL{j+ zR)*k%DY8Volg`fU|1LjseIvuWI#DK<`s7g9Qx-S(>F oXpC_a4ywQ-G^yIdW2&!U87s7U^gUMbgrb1XoC5c3(5RsC5BhqYt^fc4 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/URLLabel.class b/java_console/ui/bin/main/com/rusefi/ui/util/URLLabel.class new file mode 100644 index 0000000000000000000000000000000000000000..2ca5c64b5229a700ae3ff525b414c3f1c225da40 GIT binary patch literal 3239 zcmai0Yf}{28Ga6+4YNI7M%PumFd`~5!#b{#>?$Lxg08SLvT*=|W|K5CN2aCeo^+oP z$ZfN^Z1$4-b|%@m%65t~cgkgJUOEQ41Tqh;N7hO)Shn4T;$*ll(52*x;#pZA z79ER6RpnD+L|}Kxc5O8(aCUI}@%EkEEX|F1b(umZUNK?76zCkx&88r*$HZRj6X>b= z(o%B9w*~rlFq@0)x>6DR#E4eSm^grg0=ojKT1|mdJE(2d(n$7}ZCBoIEzL`R+M0Ky zj?t@G&aCCz`aRz4QVly0I9`4Ud!(YX<=Y013YZ~JF}xIdaa;#_Lg3XMP~~O~WCeOR zxxLeJmAxcytkh&v*`Aw1ANsY0Qv!#R7N#4%x2$oFXd|bY-lXH|s;jJ(4J+i`BU@y7 zD-QyKaUb8Z`GP8AOIMXuTdY{kkP-t!BrkMkEvw>K%MUz1g#ylLm_@o8oQP8ThKUQf z$docKk(j{2IEGDC;_qP+zhYt+cI$M$Y2qzSm_fB^7M~{ZvWXFt1iF@oZ>j0I(p4i{mH^1_?EzHOV*+s^W2)H?%JxsRiG?avE$C{pu9uIGtBt=dZ4^1 z(9v?p#XXjwW4nt69+1?{)>ES0Fpgfa4ABQT*f>$~UKvw`f!BbMS#%XVZvtGujZwcJ`G zs~R$^aSvrzy_TQVWVe*`vv$DkMd_?&m+YYCxex4xmM`n)y0Jo(W0vcBDqD_haHcV; z?~>OoNt_C2$$OT|(YuQ8oA?2K$RY?D-f~3-fwdsVZOic%1WJjDd$A3|G)~Pwl(qH7 zNG6s|-;Ey$T$p6}XwVv#9#Dx8b$CJ6bGJr#&cKfa4uqMqz2d}FVs07rC@Fe6hXP4% zIaH&~ty&yesVXU~$(y8@^K1QOB80T^i}v;`)5FR1AeVDkofyqA|w`0vQ zUe){2DZ2Pck;Xn8;$Al1dku&Are(Bc5w4DK)j`Yr0Es<(6ni-Q9KCb&a;*FW>B@8T z%?+*Lac-o0GI7{tA^cbzu+#N)Y z?|Dj?=qMW)_&0hC-g|5d9E>r2N=rKG;rw$H=JuIuc)gAD`NH41lm8or+xTjJsEtc) zT*;G?s}vj8*l)HmvB}K|@(41VMn5s1qK^TtP7~7^T*UbhbHvp!*0~x+CFW`vw<)Q) z;yoJUxqQA&N7M~&`uA=PQ6GfXMJzSCC? zNV2woYK-d3IGeerXgtQTr*O-Kd>j4~9I1#*E3>@oDZclFU&xscqV*S4Own=%AI3N@ zvxtFr=;szsCVBQQ%cabMsSxKBF_&=+clZTaW%*At%`;4NmBn^9j3Y{Oj&f&dCq>IY z!B6SsKv5)K8Y}I;vgUv>o_Y{23++ z2_|Zye(^^cpIa+K1H^6j_T0O3p7WgNoc{Q^_X)r}9%x7jjMTiQ8MH$A(l%TCMYdzE z*=u}+<5LAZ62so1VuYBe`x zuxf2MQlPKm)huV-3T$;wE;G@l9SV$Ajw_C|jHaq(Ignu}>-7Ik?%!G$RoSJ&x=vyP z2F{|NbbQYj5G0U`3pzYTpexSsL^{%93LPUD)o@N==rB>^Lh2q_PT2MNi*~nuNBnfLtC}WNM>tNWnn)T z-J0WtoR_MMHodxrI|9Q;cg?^(+!yGz-7vBoXMe;5rjHz~zXz_(R&h1Tt}BBD$Kn8R zU^oc*w9E+7w zL!Iz?!AezSInv6##X#{rbeb2qE^`%ja7~d-$E9}1B7LPW-$>{Cfh4(o!nuU-%{WR7 d6Mvd!iW=VLGlLo2MTwSrzm#(7Gs~62%rE!~0!jb? literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$2.class b/java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$2.class new file mode 100644 index 0000000000000000000000000000000000000000..946057f440feaa0571b73de5620fd80b6c30f311 GIT binary patch literal 849 zcma)4ZEF)j5Pmi}bIJ8=(x_Ey+8P@*jo^X!$%(3H= z0YCTyM9^O(&RzqeQ0s9!yE8m9`^+=@_2=g=0M^m=Q4navW)!94j1E*Z=HIF$+E@F$ zWvxd(Jb~JgoX9AV`c1SuIHK74C zmd}Vrf2*+J6j@vC2e^R+A2%6!LHi+YIo@7uj^7FhrrO9gIH$Bg@Y;;im|iH?RyZBl zLw5@k-OzDjGFEz{SxGOLlrz9dvA~o6n8P2F+H!fDmPV{r zxT*OabQ76n#OjuJD6=n3W^tP*R^)XFqE>f<Tm2e^W(>0nJ}KHP9#k literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$DynamicForResourcesURLClassLoader.class b/java_console/ui/bin/main/com/rusefi/ui/util/UiUtils$DynamicForResourcesURLClassLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..7e30978cd0e427e9ea6dce0367cac755884e3eac GIT binary patch literal 1195 zcmbtT+fGwK6kXHS-YAq?K|$prDy7H~FHa>T1SK}9Ja99?r)fKu!P7b9%p4Lv#lO%O zNPO@E`~V;HS^W#+o}oh9NPI9k*)w})&070*KL7go3BVejrVwLTsRu1DjI?+oy@);| zeQ#Ip(xT^{ohaUt^^G9h5;};&y3o5@)peh1T@83cgefE##t->1_mnVR_a#GeMJj1l z8H)3-tDUIwx#x4$^g8Iu#XW|^de9JA#F5G28j=k8s#Ib#YSl!z!)v}^7_J6&?(gwX zTEBgmFb7gItXBUgp)%=5p-(*do`@-%BOVH6DB&xjCkSses0a*0^WFIt_iRRm9ELH% z5GM(Sfo=#xUsISrg=Uy-Q@A2+n^3A|x!C(;aw}3swnRl8OD(AwYf1%%8yP6dVXhj4 zP47^cTF9l+9>2WwHY4A+)hnlQi-CDrOkpO4X@)`9sSep3W^sohs|^p0ekIKTL*Z}H z?OT$&Io!j2hK!DC+J$Y=m3HVIv}Ie8Vh-1FgQ`xG<~rLeP95prHoX4!B|mC+da5_+ zos*;P#IxIOS~sMfmRx(Bmn=286{SSzrcUS-9x+T@JuwV3|NIFU(wjn?7lAgI26dPI zE|6t*e95NBdrrPRPc4)d&yfB=+ZeKBEdcm}KC;v25aiHL9)U4{yt_|f5JU8WMjs<& zE#)ftFYR@S1gYQv`K@F!l}ivM1Bk& R9@3h1F)iaU?Vh;v<=+ve94G() literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/util/UiUtils.class b/java_console/ui/bin/main/com/rusefi/ui/util/UiUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..32a13a007b809d80913c7b44ca77e8b6acb99185 GIT binary patch literal 10267 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 Ps^;HgJb-;hFeCIYSBq1n literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand$1.class b/java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1f699deb8bc102f53a488c013588a31e00095cbd GIT binary patch literal 750 zcmah{QBM;=5dOBDy>gtk0v1FR#F7+DTuFF?7@MX>lS)i94T-*N?-p2dx0~#4DgG=I zg@gxxfIrGOTWWZ-m+b7!+&ACOe7nE@T>k>l!Lt|@hONw$+>V?)QGBHMSmmeEJKoXX zx~43J&RcsiB8IiE;#^#CH&*(TcZSYek@-&MmC+1Uf2LgPC9(Bq(H#)_P-*2~F>JSI z!*>P@QP<>h9t;a9?x31r4tG<;xW_Qp4uE=JX?Zj%hthr$!$LAF_Dv>=fv_sX(_|Fd zWN6JiwY5iW)@eYR?t`=^#+EW?*l72I3S5jmm*-M@ej`9H_y;?K1Wl~QSYg4U{;hGI%1BgtAFR;`T9a3y6{AM^dGhut4w+>4`A;%e zNWV`ob+T2$0LN&MO(%YW`&guiVF}AqhS#(QhT85AB$s$_Tc1qwpXszO6OQH$ZpuLw iSi>W#j<8Pk6+Ffh+9OhZ15e3I=wIj{d|R|CX#NH5;H}C4 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand$Listener.class b/java_console/ui/bin/main/com/rusefi/ui/widgets/AnyCommand$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..2c6f05c4688f809e3686fbeafa69d7b1d087802f GIT binary patch literal 254 zcmaivL2kl83`M`8&7^@skHCUO*>uhjMXHK~V1dMbnwV%%G9zUsRJ~dkJwOkIaFGy8 zHvYC{e?R}7etrSum?#Vgi_*8c>jUqt?ydf^Rn0Nz+$MG!QkcBt|%;035*hwI^gOdeTp6S?1G}0hx zoEX>z0s+D|)K=}jQngj=!#*rkltV!kyz^6d;ujE3OPaAfabj;36s{U|tNY&D=bn4} zUipWgzxfWp2tL!05irYMwdmIadC@M`?cx=?GAF~JIN~mrylT~QD;lx_J(sKntLRwn zT=DemC0Pyy+D?wn2;|3?cg}{s?amDgY$$nd5L#|HZ8>$BL#Kf5SV8#Wf_fL|tlN|b z`e#)!J z;oG@8f4(qHzf0WJuuY(QncY#}_xv2Ti_C^8*O!6kEXazAUd?u_(Dq!j=6kb_tOkco zy>oJ2nl|b2LnSg82YAr-21%NV>N9m&muA^=T`x3erP(leC(W|w%fXs2FG^p!Wf=?x zq32t3a!@(4s+~J*n4xD{X1G|B@ljP7&U+P;NtZ^}S1>R7UeyfghLSa#+!84<1j>xs ztlB}qtcZou7WB^a+o}i^N59?i>+t_q5z(;~I}L2YE`iN`x2Kd!sP1vwm8a^}S?Nz& z%n@~Oy|U#@TfVK{lf`T}ZwCTgHxSt1?eQAaAm@S=(z-VjQ zHv7zQ+@jf#*RF;+{7vBLyN5|N<+bbm-M=c7{^}nMYhxshvF9W7pD$;QZUk{@2eIS zj4Y{>_7Xo>G&?ax{L@4?g>5*8?HqUEIXsLPQYeO+D4uDe_$M)S(8huIpl8ST=ckwO z+|1$j?+#_#j(&lj-u7KX6a52Ac;T%!v1@bo^IJbD0Bw=0Tj&H}5ymXv%QQR7W-p^d z&4};=$)PzsKsiOtZtBc(mZ3aIX66=S(xE|UtS*AjilQx}>Tp7pB0EFbnCy$IkR7Dl zY>=&E9(H2kKZ%C{Il8@a?r zCtjvoahCU!_$*~(;$K~b_Q_mrMWj63W7E2a0^|Dm_k)XU;^o{(WEu5rwB kcATU7dy^=xcjWLc=UL9*#tqIkGBC&S9zLMgpWw}30HSRCZU6uP literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/undo.jpg b/java_console/ui/bin/main/com/rusefi/undo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b3cc60657ffda853cda97988cbdb49924833548 GIT binary patch literal 975 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 literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/com/rusefi/writeconfig48.jpg b/java_console/ui/bin/main/com/rusefi/writeconfig48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3f12e8b042072933532ff797ebcf766775fecce GIT binary patch literal 1836 zcmb7EYgAKb7QN5#NFetn;h|8HRDu`{1}L6DBG2>~jKSV3*1KozOXjkVgp-QV}`tb5PiXYcbZ3@qFO zFux7H8vqalfsMog7WBY60EQsrC4dkYHAPVbLCsA}NTw8X3WaP=CR| zF`Uk@va+I3ZEUR>wlszn!}t>rCcZ&XGZZyrSdc9ke;W&(0B#EK0X_`k0EB}u4lZZ_ zI{<(Im|*)Js0mCmg%D#A1PI!HtpOw$1rZZyVGy7Y1qg#N001Ypz$CBw!ldaA04#K< z`sf#C%GV*htpMnxJc82e=1%^cdOo-_eD~5l@!yD+u4sQA`gr5&3?)W$NSW(w3G2y= zy?OUeyK3=_MdOzT-Ql{}+mfSAM1K}W^d|tnBL|@{0%9Z@K#Yh@kT4~fgDCW4*Xa*8 zbn~{w-TI=NH|Dv`{k{d%_nMilk22fT;v zX-D$T3V)x9`0aVXk-VX~aVsOtfNdib4ZLaWRnA=zGiWKv_ z^WbN8OdnA+yT;wnABIuI-STRGdAVp_)A?lWRNw=xo2ZEwpk60^2qru_)+HE-n0a=j z=>wNro>PgQ})y3Hq)oMc5$hP(|5$S|slvuI1AXX1^WebCh zp{Y=44Sz;hz`j8LC##Bskp`hd-q+*JE+ALh9Qc7pbHDqE%V~`3-eIt_K3-jxHBsog z#rt$EL#KHh+LLa`JvP`)dr)OPQntxv(+^X>`mOARHDjJb6hs2o#mp428hAnnjOEQ3~?g5vq z&Mh%3B*Zx4MllG8zI!YPF>F`D6A8wOkXESQT4G!S%#fJnWA8XRF0rrCH=PZvxD>en zaPMuo=0U;?mdoPt+Gf@8`o(+aI7*vJi{msJD9phn&onF7wUyaFo z+=n$O4)wd^7#IGN`|o;lc%Zy&=fiLp(IIAx%&UIY-q4Z_)|qX2ttEqFX=usQQ|AN^2Ueo2>t;;DD zwc7NOpG4U!v-^sw7jcE!%|ia`&(l11Iu$0CUwp31XHaw!&^HxgnK88N1nnQ!gvpB^a{jfo<8>W%e0zU^x-L~S{FvuhC(lIqV1Z9%%ZiBB z)xs29EL*uq_`24ygte94LgJD;ptc7CC94j7?+(>vbyq`*3{Tg z#}cjQDay({i-*pum_2*By{od_t~UHnyzYuFsN>qHmHvJ&>w2QfIvr+nsqH6E3WZ&= PwM~r_l9)6jSkV0+f0M4y literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/main/org/putgemin/VerticalFlowLayout.class b/java_console/ui/bin/main/org/putgemin/VerticalFlowLayout.class new file mode 100644 index 0000000000000000000000000000000000000000..618180c8a0c263048e8079c898a72291be9220be GIT binary patch literal 6913 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 GQ2QHT&(|{m literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/test/com/rusefi/ui/LuaFormatterTest.class b/java_console/ui/bin/test/com/rusefi/ui/LuaFormatterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..22076c564473bb6647c48bfaea7b166a79469be7 GIT binary patch literal 1976 zcmbVNYi|=d6unLgsb|Ad+NDdoJj_BjDTGcEm4`M2DH}jrb=sgNR6=M!xDzLJJN2+L z9>m|`3m}mA0sN@dUVHL@G_Z6P#n-;}J?F$Zwm<#z{v!Z1pp=6Qfy;h)deTj# z>m~eg7#(q~Mbr_o&cO_UxdZ-^y8%~yx3za5d`;l=eW|2=Kpc4aIP zrlC}*xt5_qlsPYq`tCu3!d#=hHVgA4v)D_NZ&t8SHM!b(RoqMB5|iB$>jpkHT=P|j zv0JxZL{jNup&x42Y;5C-dV#I2VKi;Qtj2`tW6xB`ZlzL}-IZ#2{hs5%Npj0RN+ZRc;g4X=h^s@X`mED>*!rDqJ#BYb zYukIq9=2HL&y6+?*v^wJ*4gkp*6uWRv@_7VUVUCQdQtGbs?~IiW_?7nDT4rasCRhZc+xJ)ve-(_lwn{qN!Q{!p;v(WP^ zEcG>=YHWuZ@UM8A(y@m}&ZY)voF99eQaa7rlv;C7oh>81{VylP4gHNp{>aB81z2P? zjAlj-H#7G4oZRK6a>D7>=$JMNr*WosA99W?|38ohw}Yu1`hO}49s$g!J7!xe&7K21 z4Zz^n99+ck@F53y@m5P zKfof!3vXa)YyMK{9b6d`EF%aYd=_rvWl(|((1In57vYH|WhvNzGz-hH0>2^oB9axb Um%&dF5i+m}H!wPOZUNEgzhjT~o&W#< literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/test/com/rusefi/ui/engine/test/UpDownSandbox.class b/java_console/ui/bin/test/com/rusefi/ui/engine/test/UpDownSandbox.class new file mode 100644 index 0000000000000000000000000000000000000000..a41840444bd93e1c1a1c6e08cfe14614bf816609 GIT binary patch literal 1675 zcmbVMYflqF6g>mT(xqBNMM1^&4L-WQUo|F(7)k0Q7Bt3B({?C>+nLSmw7}2ulSUK$ zZu}qq3*((`rAw%U_+@tY?z!ild-vS^@%zg+0COmL7+|XT9J)n zLnvXmb?ICwZG)-^{xbe6b)C0GQe5bCHowXp@Bin%;wBO1KN((&w5>kncb6Af9q_=|Kqc>fWZg9x1%7kIIyho#!$b?NU6~n~L`~H>vg^ikso$(S6 zM;R{n^ck@dk*~u=)g~Ngii#mSMjnNgu?Vs=wuu7Vl_w ztXqto9VEpxu|s{jXYeb!WoqK7>-6{K)%9jR-4T{uA;~=+U$iGerC0HGgIjb?hB@X&zSy54+C&yK3##cwBqM7 lggJUTPw_!q=pZj*hOVwyNU>|UNdj+E#Levv?%@F@{{TA(?vMZg literal 0 HcmV?d00001 diff --git a/java_console/ui/bin/test/com/rusefi/ui/test/EngineSnifferPanelTest.class b/java_console/ui/bin/test/com/rusefi/ui/test/EngineSnifferPanelTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f243dec66c619f9caac2b61a536ae410e473e4a3 GIT binary patch literal 607 zcma)(O-~y!5QbleKw$X_p=qI9mK$j$eBne85<(zRty)BAB#zEz5*%%81UElx-v z!JQw47^e~8z@e8Jk7wrb%_+CLtppn|4bVW`*EekC@AoWN?ru;0b7 zL+(;_G7_jIHdR?$IUVB3W!YcrT;ON&-vc$79p*hVIXSjnx)s>GD2&%bYU^Ax{Ky#V zmDkoVyP85Q_hq2jS+gz$f26Wp`S5J zuC}B5N>k%dTE8o;BRd!2zhqkkG4>{w@laYNnY*a`KvCLr^HN7B;dBMB;EcffW^3A* zwzo?6>!ESg7GL4(e9$4g7w`nuTBa-0{R#fWxZ)3$6WC}iAep+rsf-i&ZQW0aqt4IC z-E3~{mvBzt`vs)&|I)&09Z01G&TW1-pOk3ls7qPUge&3=fg4lmSWYPqK+@DhrYX4W zN!urX98ttu0+*%%P3_6rJY(%1`>gR0zFk3#%RE0eACM1o ze29-&B!j6*;P+XPOd`kNU-Bkm9bIb~^EA)uGdxXnJYzW#xc5AxS@*?%j#K`7>}>cm|p z4DnVTbA-#Bc$q~8K1ImSXOX{dj=q8DXOteVML(kQD_fUPEUZonO0 pVRvT$%h<#g+n4d~$nyr?<7X)MW47JIEqsR0*%Fw)&C&O8;ZGe}0Ac_D literal 0 HcmV?d00001 diff --git a/java_console/ui/src/main/java/com/rusefi/SerialPortScanner.java b/java_console/ui/src/main/java/com/rusefi/SerialPortScanner.java index b26a08d175..70cfae299c 100644 --- a/java_console/ui/src/main/java/com/rusefi/SerialPortScanner.java +++ b/java_console/ui/src/main/java/com/rusefi/SerialPortScanner.java @@ -10,6 +10,7 @@ import com.rusefi.io.IoStream; import com.rusefi.io.LinkManager; import com.rusefi.io.UpdateOperationCallbacks; +import com.rusefi.io.can.SocketCANHelper; import com.rusefi.io.tcp.TcpConnector; import com.rusefi.maintenance.DfuFlasher; import org.jetbrains.annotations.NotNull; @@ -31,6 +32,7 @@ public enum SerialPortType { FomeEcu("FOME ECU", 20), FomeEcuWithOpenblt("FOME ECU w/ BL", 20), OpenBlt("OpenBLT Bootloader", 10), + SocketCanAdapter("SocketCAN (Linux)", 15), Unknown("Unknown", 100), ; @@ -86,7 +88,9 @@ public boolean equals(Object o) { } public boolean isEcu() { - return type == SerialPortType.FomeEcu || type == SerialPortType.FomeEcuWithOpenblt; + return type == SerialPortType.FomeEcu + || type == SerialPortType.FomeEcuWithOpenblt + || type == SerialPortType.SocketCanAdapter; } } @@ -108,6 +112,11 @@ public void addListener(Listener listener) { private static PortResult inspectPort(String serialPort) { log.info("Determining type of port: " + serialPort); + // CAN adapters are pre-classified when added to candidatePorts + if (serialPort.startsWith(LinkManager.SOCKETCAN_PREFIX)) { + return new PortResult(serialPort, SerialPortType.SocketCanAdapter); + } + boolean isOpenblt = isPortOpenblt(serialPort); log.info("Port " + serialPort + (isOpenblt ? " looks like" : " does not look like") + " an OpenBLT bootloader"); if (isOpenblt) { @@ -128,6 +137,34 @@ private static PortResult inspectPort(String serialPort) { } } + /** + * Enumerate SocketCAN interfaces visible to the OS and add them to candidatePorts + * using the "socketcan:" prefix format. Linux only. + */ + private static void addSocketCanPorts(List candidatePorts) { + if (!SocketCANHelper.isAvailable()) { + return; + } + // Read /sys/class/net to find CAN interfaces (canX, slcanX, vcanX, etc.) + java.io.File netDir = new java.io.File("/sys/class/net"); + if (!netDir.isDirectory()) { + return; + } + String[] ifaces = netDir.list((dir, name) -> + name.startsWith("can") || name.startsWith("slcan") || name.startsWith("vcan")); + if (ifaces == null) { + return; + } + for (String iface : ifaces) { + String portName = LinkManager.SOCKETCAN_PREFIX + iface; + if (!candidatePorts.contains(portName)) { + log.info("Detected SocketCAN interface: " + iface); + candidatePorts.add(portName); + } + } + } + + private static List inspectPorts(final List ports) { if (ports.isEmpty()) { return new ArrayList<>(); @@ -195,7 +232,8 @@ private static List inspectPorts(final List ports) { private final static Map portCache = new HashMap<>(); /** - * Find all available serial ports and checks if simulator local TCP port is available + * Find all available serial ports and checks if simulator local TCP port is available. + * Also adds CAN adapter entries (SocketCAN on Linux) when detected. */ private void findAllAvailablePorts(boolean includeSlowLookup) { List ports = new ArrayList<>(); @@ -206,6 +244,8 @@ private void findAllAvailablePorts(boolean includeSlowLookup) { if (includeSlowLookup) { candidatePorts.addAll(TcpConnector.getAvailablePorts()); + // Add SocketCAN interfaces visible to the OS (Linux only) + addSocketCanPorts(candidatePorts); } for (String candidate : candidatePorts) { diff --git a/java_console/ui/src/main/java/com/rusefi/maintenance/UpdateStatusWindow.java b/java_console/ui/src/main/java/com/rusefi/maintenance/UpdateStatusWindow.java index 74eed8938e..a954f93557 100644 --- a/java_console/ui/src/main/java/com/rusefi/maintenance/UpdateStatusWindow.java +++ b/java_console/ui/src/main/java/com/rusefi/maintenance/UpdateStatusWindow.java @@ -10,7 +10,7 @@ public UpdateStatusWindow(String title) { @Override public void log(String message) { - append(message); + logLine(message); } @Override diff --git a/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java b/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java index 6a0aa9e096..c4c0f186e2 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/StatusWindow.java @@ -38,7 +38,7 @@ public Dimension getPreferredSize() { }; content.add(messagesScroll, BorderLayout.CENTER); - append("Bundle " + BundleUtil.readBundleFullNameNotNull()); + logLine("Bundle " + BundleUtil.readBundleFullNameNotNull()); } public void setErrorState() { @@ -58,7 +58,7 @@ public void showFrame(String title) { } @Override - public void append(final String string) { + public void logLine(final String string) { // todo: check if AWT thread and do not invokeLater if already on AWT thread SwingUtilities.invokeLater(() -> { String s = string.replaceAll(Character.toString((char) 219), ""); @@ -74,6 +74,6 @@ public void copyContentToClipboard() { SwingUtilities.invokeLater(() -> Toolkit.getDefaultToolkit().getSystemClipboard() .setContents(new StringSelection(logTextArea.getText()), null)); - append("hint: error state is already in your clipboard, please use PASTE or Ctrl-V while reporting issues"); + logLine("hint: error state is already in your clipboard, please use PASTE or Ctrl-V while reporting issues"); } } diff --git a/java_tools/trigger/bin/main/com/rusefi/trigger/TriggerSignal.class b/java_tools/trigger/bin/main/com/rusefi/trigger/TriggerSignal.class new file mode 100644 index 0000000000000000000000000000000000000000..492a8941b6df410b979a779b911abd05803b4761 GIT binary patch literal 1424 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 tUhfxyP+74}=h~(oflze60m$Vl!*g8`!qoyQs5L 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 literal 0 HcmV?d00001

lV6+pw;QJ0^FtSf+q6Svhj4V-OK#3(l+Ab)mMLnH*K5PJX-8UcdC zAlW^n(2TBOLJCYs!E(LR(7O;xXpnoHH`sb00kN2SB0W-=_OLD@|Io{vzx}q$%>QN1 z-#+p(^ItFdtLMpSg9G)X=c2tC2F3#S45M$H{<1^sDo6d17MsOvE3)7->%rm!RA0(L-hj;51A&(3t zv&>3Mlrs2X57=rf6^odaAvYB{0&HpBgbEXrGXkRJmN7XMK$YOoGdTy8n^)-#KLLO4 zz@I4mX(?3bncVJ}x42Du&8*WoHtXoaj$ZJv3Wueqv0b1Ru@8^M*E`EyF2_PLJDH5` z2a?gvG33eZvZcj3dkN!Xb&jW%SPdXnA7`n1P+MA`+_I^`LRxgd*+cLE%D4?UO^D#5 z5<2qj6T0%v6T0&a6QZrj5XR&jfFYgz;8zc+r$t9NyTY%**-04R2P78_{|UO1Z32;AxLiA8O0@1!65S<`H6aysgA^}=BPMmkSq+5rm80y)F zAkZiSH4%ZzVa-L2H=g?H)}N}X{?cm+{x^nza{fLIl-vUn_1C{V>aUT0 z)L+cXfT$uVz$Rmdld)5wK<0pQ^Qw%U3HWn|7j`Z`~URk`}!Rn%7qikLG9i?~k_7S?d-xLG^@vll(T_Y;(F++*SV zcb@Y=IWMR^YRD-rZ>%YwQgORgI>w;>Q1;{k!iG6dqXy2;k7s}~w3S3-k!;;hsp zS=H^YJqaWZY_HOWp#cM2ER%8Zb&?u)MNf(gYPB8&Tu`g^c!R6LY6X?lyVaVI;%2qx z^zdc1mYq_p)}Rd+XSGJHxx7|uL3j;Tt7VzH)p{dQJO81(A6CoTW(lh&kd<)aAwc0! zEwOIhDGI5X!i9I=dR0%FnVMp}g3Q#m6gM-qzq?N}Zz@Iqt0xf+(9;2O9_CI!wtk@ z(V^tzBmhJv+qHzuJ2Uvgy*MktSFa-X8XP0r~ADo+roOfm;&MLQoNP`S^CCCe~lngAF* zRQRYfZ6j@{{DzC0Wa6*q#24^^WeQ5A?;qCo(^>;<)1sV4S8~*HJs|CVL>lp+mzIE*M4!HRelM*E`(2KTsO&~1D02zDeLiSsg! ztF#1OilR8o@HCFyN4g9Ex(7N`GLVs#3}jP7?F}STpv$x+gHWJe(g2M{a)Ae+H+cd& zs*<6+Ni&q+$%bmCo1wf{uKOYtL)k#N*(le2)9~j}uevW@hIK2%_({3$JJ%H+zE_~C zTFRhb0OH$GmN%`Y1f2J2DLRtMWuOt10bd5w96Ua{MuWM(DXAv=dxLkh0$vRC$VS;{9!8`2K%5FF^Nm#+ zO#t#}I#|n&W$!HZzuq)y$^Y1i;x(wMdef=ao4x-uxYwKSdDNSq`de?}dYxD|Yr0HE zRFDFsV~RC>M@G~{{JF~uQBTQ;de^fOFUU}Vp zJ#e>3#$EhozBj@y3Srj{Vb_$v&L+doku67aK1qJ*#8}W!AOOnQ6`^&b3sFLmNIXQydkm?U2>KxC48Cplpqg!V6W_g9H@_KD zN*@(UH*~0r%?{8K_%_0~&0cu+se{?0- z?0<#$VY5@#y4&o}dTHlhx37cEuA%N6p(Wp|J;iIIs_M=YYTY^Wf9`eX2Of3jNc4r=xt=oQ5B+)tr^=Hd}?=ZeMeC*|MjKp5NNK z*=>Ds@UZAw{gXAnab$CXwPDDqtPbUNsjm5~uVJL?gjA?!Tf%RE zGYo$9&W7+C;S7LZ1KEFaEuQaqOaYrDlt=iqUNyzO7T5o{bf0z1UNEZCq+nvWljRyW ze>kgku^Ow@FnW1w&8*)lceA8#?jj!NtbxJFO7F_qRQmEJwPt;_C7vkZysY$GL%tsP;kJ7Fu()_f#&(#SHnleOJl4$sy}4tvM?lEddw z+WChqD#?N7_c_gvldYsVKbci6WfQV_o>%eW#fGUSwTU^;pgg$rB-24! zrq{V;T07a_M`iyBCC)5o0mAS_+b%*|nM#{tzw=b{?b12lm)`5F5+*cv7r%!*zN&9| z^whEqY3?nL5*FJhhsen$^1wny^P*!RXEu6k`#MF{qei)nDl{NuP=(hl=R4?5MJi|B zQuUaIXVww!gBk~Kt2X=Xb>?eU^$C;HUo2t~P1)wrqH9L<(tvd(MmeKcfrF?W@Bvkm zD(1mN?s<1VE&R7$r~DXpPWN`s7(l1h>=*L;s$6*MG46H>SZ@{E96 ziiW3@7Ni;713slSA&a+P3O?NN8x>HO>gxI1E7c!9>WXo7O1rOLX}?mZw7(hcPuja_ z+Joz-OuLsen!YLU(x#ty$#| zg~WBMb=epk|1xt!GWh#yunz9UF>Rz*air7GoU1S|jm1&6oHA>3sa=F>5zmE?1HTMv zvE5$pG!=~ShbG(gDovS}o~Dj|(e!(Jm8QLoylDc8q9{ds%*;x*5=lw9A&LBiYHU^{ zv03da*(`IOYO-ALoFvnA3(%EB=^Cri)!&`2D6+os^3k=qol4g`4X+@&x@&YbtV9=< zXKWYvdlgb+UFge}jm|@-y9s&h2-0W0_MX1ap2~KCYLXA;?89OmE6Z?rPCk)O>&%V=O4!P-Gz%DPj&6M3tJpLM(6lN~7Klg=w+68396CtV=7Co_Qy2 zttoHM@GsXGzDin;Kve0;i=g#}Z8hbcDNIdri(suO0;QG2@*;K(M3ug+4Y6K%SJafZ zSNPQJb*6PLM3vHCtvjtdYRVhyB^;+3Y;Ao;Z(?%C>2OwKaAj-bnQ6DIJFCp^U8 zoA5B-H-YDGOqk5KOn7p+p2@}ef-P)91GqSj(EAX)-$U<_9C?8p8=f8eu(cV~aqu3y zNa#@8v5bbp11ZTAJlqH3{c~!Z3Dz(gM=!^5PJsvXTH$;YZbI=U6K;?>=U7f07M^cN zh_SZHep27t+Jv(w8Q^0>C2m4OU-GGs`l*rfsYAEX2@#Xql8yf!=SyYy+BJ zM%g#3LiS@?sj`m^xF-8cA^YXctC0PX7OL#OG+dMYC6RrLDr7&txhnfa{WaNN64|$` zLiRs5Rb{^kdb8JLU;nb-)T#>EPi&&fp1W{O_H~s#wv80o&+(RhIIbI*nxu&T0XOmg z!l>de`;&-2O%*?#e*zus(%}LiP{KNL16sg^fomqfPy9xHx={WQKXJ{&^eIj#=W(6E zWWJS9PIPk4O((y)>Ex)JPQH@mn;92oZO#dW26v?txGCiWH>E7_5lPXC<0%@DC}ygn zm`RFa9zew~1%^zaJjNQHDLiSQ$_a2+P7-|WOTYF}zpDC)L?0={^+_9aeNw%OYShs$ zt*h1%*I3n2r$4Ug=(6c3s%_OeS{$P4Xm-Ul9bGmZWn5Raj&zMw9sTF*H62|x9ZhLh zwT|u#R&^A2=9-Q!n~pwjU$u@_1!?<#{&!7Bmrh62kN3lo;kZ{hLfNYv&8%lxPCUeJ z&=b+#H)|}DQ%Y`GCTB0XN#Xu ze=B;Gz2BbkiZfj*ehfr4atj+9MumyIr{r&0gOAQ$VrsNlR3rtmIa~N3W{o4rmKMFn zM0B#v877?>4}rpk)abA^DAAMvctD50m_ljazu;A%^yN*&RYMSfEk%zzK@)XMZY(bQ z9v&T2m}xUdX2iJi%#pW>8;hg>Ouh%+H6R(4z}N21Hf+uTdf(OASlqZr!fz&gjz|?< z`Dy6NZs`##gYgJ~fk3y@n9{q@&Td$Ggu2hO2ILg-T}sRe8PTamS9Zl{J~+FA#tY|bug7=(lLRzyQM zX)dHim-c-1JSc63PB*=+m>gXs88C_xGy;Q;hoC?#uAm)_D`>~z3fc*Px@Zqy8hr-vJ2mW$!HRCJygbz$M@FrgoTR@GA~~C1h-~q? zABg-jPeEjx=W0OYp1c|mc{%WCNmB6m-Su_C=_@v2<&yayAt;1SqS!4Mg1MImznDq z_B#55y*9b39k$niy%RZCB=)`>s9^6{+d5&d)k7D7z5KD2u=iOS!QSYoe~umg>M6ev z`P@r>ATsYM)eb*X10u&hbp_ht$N>r-&$O-+9(zu>2s~aGQwfiqDIS~uE$hNNvi(9{ zs~7x0UgK=l4(Hc^yzgh#zAhx2oeBODIWbWGv5}r|WsZ!+VTkpki4G6h|IcBz&s>I} z9K+<4;E=;+CTEX~$=(E$+Z9Z%kuiB!d`WeXOo>+@`F*Q8L9$!sML=@M9hD&2=N1CV zH#@74d{~9#-3lb}z^)h<0<#Z+q}l#x1ZL4&g=ItgknZ?B+S!&Mb5&QQ=eUB*;7l`! zA5`mN3eu9;)#!kpDJaV9T9V1;7WslHd}Y6khD31BErfAHY)?q+zUc_r%=n#q< zkY(0mK_a2tVcXIZwru{_QqvjL;x<~w?eKY?xNR-twh09zoBtJ}ar1NqxbyR5;9jQz zR}K3$hJAIqj9g1(ES^-hY$l#mc4uT_syHS#Rh$UdEG||29&wDjp#8z}%^&=ASnd#~ zV0nIvI$=5LzKg)}sL_?MY)U0qZlPiMDWB&4!G9RSqo4E(;g3Dz55m8nsvvyf(={Qy zV5%p=w@j-M;WglUuTG(e;t+`eH1J=YEmaGM~=G)EQ=#5VOckXV7c8t z7t2pu{lfC1Jb$npXH~HL{ZlnzIn?Tj^Ja0_GeYz!_#mES_alGuC;N%y2)dVRj^JZ2 zlT2_D#FmO`P4IS48m9X}gM0Yx7e#a9`9O20yDySvZhp-)tin|-cz$kGS5x&@&K?-J z#6ZrkJO3WN{w`mS%hz1_Izzr%T4U1AoZ513gf&%k`xGb;Nhm=|C3h^S17u&l`GrJ`e5X`Fy0e z=kvZkp3md^dOrWw&-3}`IM3(F@t)5?13aJq7)YMAGbd$#^F(!rPrJT!k@iCk@ z*~I0Z;k%ecHX(l)%Zb5KGr;xK{aZEuF-)N6yOU^+5CeF5S<7~>=L)X7+&}~W1 zz$IIpEsaCJ>BL1F07p6QP(9-cefEaS1dI#AL#@Kl8ACjanSgQhM&oew?iTA!Tyg^O zTGL3HGpYvS0z0@9mrRI5x@6C<@`(|3m5r&U>_gvK?3Zlnn19}FHRXSUfB9FZn+1t= z(~WavO}fclbP09ya822VHds_oy6L0j-xc#`3Wg;i0c~p}Aom?V2&h&!Myi_$m2@*g z)r~uG$qDGc5tTD@L`}+(7W$za|LPUr^7&(UP4c;ap+EAeYyQ(}%>T!?FIGR}2h~wO z|Gl*){cvwzV*QM%iG`U1!kx`u85;@KScM<90R_RugUPrnUflKv#Gu#eu4duk) zkX9Ne>1VoJ`N>p7k0_z6<7r;QIZlMjY~oN>G@0}DP7~X|5L#@mjrj%;*6Dl$+yWwd zJA=EWEIp!qImL-vIoHkFp+Z=q98HL zd_%X?gie#2bE`W*w)oF6i;A)WN|MOcgY#c_xvahn^M5I<5eDeFwmU>7!w6--(%Id@FBqiCLjA_Zg?V;MyeCl*iweyuf% zNUyd;3TaRciq=lMvQU)9t#L!qMg>KsfTF_e1U;fCSw#_4GLsZ2ZNCKd%uCn( zt?QX%#%d7q>eMR>As1iI)Gs!sw)tCQW2e3vY|NPacf&?y8)O^%m)M}*;q_{Rg8E-k zHYm@fs~Sc9tXCF_u1p)$q~+hbp2<944MJLEU0DdJk9uZ$WH>qY!VMwpdYmZ%oLq+! zQ<;LqX0jbiGS7OTrIodX{B=ksn_E&HWd7Ui>V-^F&5()tqZ-J3H_7Ef56r5Zt|;8J z_QFl@sw|xRvLz>ZfCtA0CN0+khExQxce%~s^Ek&jJ(8Yzrdq75QL4r2;nQNZG!PTS zZqVSCtiWxHJKU0GxT#{?Qk@BVv`M|1u#i5~gx&lXn6T>5CY!L$<<+2#|3443ZMh=Q zrrNRAUUtkKZPgev0N)e>IeF~nFR8P-Fn{YhYu1@+P}Jk$e?Xn}7hve8kiRvC;{R6- zhK@b>55SObyVrKu<*|E{8`i7c`*-&%%I@trRSnvvKXA?N)lZ$(+w`}tv*w(r21R}E z|2x-NF?$`iLj=4A>gn}&`MS_Rujxj59S}gT4*6;el)pEi*W>cl9z?IhOmHRhdSpru zC+z^8^1L_S7wQkFs>p%$9?$?(SWOgco^{H6S~aENfxKKfm%A4gE5+|Xpz~cyk`wjL zNDD z98?bQ2t#IYpQ<#2+gfGXyGYVnCDwZlgAbNV`_z-J=54zqy7EPH^ZKIs@YcT;Ut?l? zLag?Xilddv7kll1K-VyeRk)eU7rGHtyy+K32q%M_a3=!{kABo|jv0bKTIRs_{wpRUM{EOvL1a-6Tv9ZU_&A9}h;tDI+Zi zBMehuChSsf^cp}kHmbo%Eo6RsbnRvSNO670ymoYc+Ozg_Zr=EpU}Io6f3fjPkGf&w z&!WqMjRBR&ty$*7it0h;*cMNTDP-*#4IRr-s&3DT2G8d{0iMsB0zIEc1bIGl!Jf|t z8+txZ2=RQrv$5y%FO28&^d_FqlbY#tbX_*PmTuTMB&H^$Soy(#wOKXJYC{baqe z1(zQW$DbkiGXU2s-d>*YtO*Gq* zqscKK!E*Q8*+dv0eU_N3xa8QGM(hef?snwC)^jA2)f>q+O>qq`5dB?n|!K4 z13#XN-^dS;#(b{oE_NZ&-5sQ#c+R|3ttXZf4|O#Kx0()4p* zm#e4_ZS{#}|6Z?$Iy9yYsY9P>S5+O_CXm#jkD98gLv4Rvz&iAKeN}bn+rN`KR9|tq z>d;4{HDx!u>FTIMdw!(qIpno}W*HsPQ&U@c=PRrZo%eyNpNC)hXX+=Tho+zZ-FOw% zq5GC;_V4BTXot3-?a_M%Q# zM;+>1qUyQy#eZfQ{h_O-w!FwItPV|kPt{M<3;#_09POg%C#U08REN%6tl7Wk>Z2Xn zgtkMQSJ@85X66uSqU%Bxb*TL}+72zRst#TJ3vGvQT3cN z@1I#l`6x|o;T`H$M&0(O%6h8c^tVUQJ*tz+rR@iB;Mm$q>bFppck{VK-g$_~p|m8U zI=k@$L7n|j)WqjQWBiE%b@DgH9CqHYmT0BzTEb*=)Cz+E8lqMLouKY-IKipsyO7_u z@M{3Vq8xD#CKNzJ@k0>-|fHF5dUQL-%p)_ z?`zzAYO>4qwqdc32mkB){i!3q-~Z=Z-|z4L-uL_CKlpxs=qKOr?~#1JcQ|~%|Jv#M z{n+Ea-~afl@ArF9e%1I35+92dF1S=5TT{wcxm>PUoNX${m`~z*!}4I4iyOZ`r;u;Q z<+{*W5N8klV3a|}F)3svkMz(oC}XYQBYb$;{lo7|u!uu3QJ3ZWt_wK(RF05yKzjZJ z)`vV_Xl_Np(8xT2l7n8D+xp!fAmZ z)tq@*r^eV|!)Bml<>5$_xov+o`WXRDI2lA3h1j5Qd!eFGT=K;gLfpB&) z8aOZFFkR${xy246(60w`S^I4 z7atEU^5P?V*k6se_ndXd+hC&?-gabo<8976-gtX6<4VKZEQ6Px8f19ssc4~>o(>MZ zM0yfaId1%3$Nv^!1xW8DxBGv)-S2k0-{f|`3hpf;i*%XAy%zD%|Fie)@l6%k<9Re~ z3Y6PI3q?Sx6s%UH8r0T+KGU8b+o3&Y?bMz#c5Bc7`CNPE z_Gr(xecJOU`?cqrzto=R13m36XU)g~KK)PqsxgUj_;p0Zfs*hHk=4bF47)I;!|r7# z1b2}+wlke<3|b^S{c5xOruGwshgCJ{E0l27ZsUBM9<)R{Q?VLyRkSQ!TAG{bS;QY( zaNnH*FDB`9)@Ib5_Epna=BgSm0dYk&oG;aZ`js;_!{he6%REEs4LI$#S5Awwd#5DZ zs`R#1^`V(|Jcf*0lO!Owc#xc;@az{aeNfx~af2n*B974@1~<%23LcV!O9jwmfx#%$5NaDieZt6Sf>HS0Ov@?kih< zJ6~?|{a@gVcf8D(pLmrE+e!#u4rq{%O8U+hUW@&Y%LfyFE38j^&h5ERe!1#@y-!Ze zl9~MQO3nY{F2dydG|2Do>XFI0zot+2!jrAu|8<_EpDXj^-ZE|f^G?E(TQtZOcb;yZ z^w=MF$K=U>yFVUL*s`EhWdeH#Vax9{$oM<@%9h{Gm)gqz3w+ssp3E25{VEsEy`Avo zG7U2H_P+BaO4sE6MwrFV<>{FwPMscPXM>eaV0E7&-rwT7FNg{DUAr5r8NJ2gk|?W@`v0$O!t9 z|BWm;|4=RePq)zg)c=cLc0P6prs7js{8#BGj$z8{b;>nwI?r76?aR@fpEEIW$yBx) z@6IBpS;bZ5xYM-4f?Xm9mF2n0szEB}6Ds5I&M&rlej*f_FtSUk=gGBkxS7p^k3I$Dr8wp{IeoB$tvoa7b0!@lI30_r+H-7~79ap~yN%Q8J@@|_Fr z8z%R@2Ii^&?R1Jml{k30%7eo<6CQm1+j;N+-)9~eNBl}2oXwv$9x(T+JoxUWm^|1c z^MI++7xNv!hRtDY_#KfW3EEBP^Y<>}+ck4sg4Y`szC2i{i| z{)hS%xTABQ0skksQ^ohRY){@8sb#yReOOC-`^nN4X=!aIOM9u7HnoSeoUlzzZq|~2 zwSXj_ON|4A=Xd-%+D1;Us0`WT@|9szxqRHTD}4hv_-ib%2HfYdxX3dl!|An|aaUZ~ z8b?onPQB+@j-QfYcJlu8(6-32DVmn$OH^8}{okhL@M4vg%|-vqv@FnQVgH-7M9VwT z2eR#GU@A(nPs+tFf#R{R@f}5rQ^j{YD#5G&NC>``M4gc>KKm*s3sxUGucU6vJHwM& zZ-@( zwh!GZ;%ENQ8*MAYXj>LR+r1i!Ih3~RB4}f(oKwPyOQXc826K1n{y9>nE<;0oVtxd5 zoBB@Q?nNq+>iMUIzO+#?eWe=exzY5+(z^ni8W0D(3au-C^)kqNk)QJ=S;rYc@{1CzNxM?4oe5brdm20}*YU#0heX`HDfOmhkim~g+Ga6cp* z5NKm3>7fT6Sg5Uk%!^Q}gdU$McnQ5zaKHS!Q~up1|2E3M0r_{G{QI{2`9z3w78IDsNo+Fy2r2f;LF65;*(7+Fs$Yi)#0htE7OBGTUIB#qTfb_VPm5g`C$`{9y8)8X*@l3Enq(izlB^`fMmdkg=9wZeIku#ymSRd%afP*Y|o|k$7tL z8WLHrs?I*v>xQwvyWzr9{9_x8PBPoH9Y-5S|m z34N{Co0-48UdQg~d%bE-vAzBr*a{*0qF%GxdaKv% znd#TeCMOzm92nVfr#<)XtC@<&bQo$Ds>D3xC9}G_IacVR(Yaiig`im7cuwv!B`nu^ z4=&k>z=GMFz#~0&3?o(u0|<;CID90@a93W5*$rdNqvTp`97WE2Hf$7$ClxeG`B|Lt zXQ`eOHekgc=u^etHR0R!nRBrAw`a~r`+&V+-VL>v9^{&P+42oEsjICR^4Y?w+P)C0+Dxk| zs8zM8W=9HOO?R813Zb!t>I|$67#lJNIKd43(<^Vh&cGRe#H!X{RUhnI-<6w{qg7Rp zqUJ>P+0#(pg#QcmZ8HAX>O1uA{{!{iWjI-V%~)S~z+tapXR8+ZPM7c_CmgX0gai|FX+5$A_0nFi6Q$5(E*s_d zXG~<>z%f$}V_^QPbzLxNO5pT4wXKyQ(ounn8=(x zVpQ7M>uY1k@73%qjdZX+T*7`QP>-Zv&X4Vh^a4WqR3zP{knRG~r~5`+;u31bHPQ(n zKQ5Egr{j-{R3I)>uEF?Fl8e-Uf$_$!zm&gRlfuif3WZpOIY`fZmHN5lpg$)V?9AE# zbo41qRUA78z0$BvgrpZQH0mlEam&s&ixa+s3eD#PM-Jz8_+8$DbeGqW#d&8zwF@%1 ziWX0rxb2VXg20M7GQPNSvY>80iPqo+#C3-eW4Rur68T7EcXTGBLHesrByT8jRx(h@^gknx@4muHsf zoI=nk9Oi^$pfQ;86FQ6(-snj~`i221OvSeVvg{7Fqvo$@Vaj)rBz~rR8$$SvQh_zF zc!oG_9(whE$^EQi9m>&m-5vxF(f4K!r&5M=QggvE!TG*n<0+Rf znyYe|nWl1i#9Wojoz9-P45Qx7GOJ1)ut`P%M)y2uSd+bSZ0H&_9S2puR0=up^P?*CBDq-dQFKI= z?H&+b?t4(I6gtmdiRUFKv8gdKKvVE9kPIjxK625HWs~^T!4s0p_iQG%zEijkjI2eR zQ}~jaN%Q80ox6yTnbIGL%#;o!GEEJd?^T(ZHnj(tX--mPX33#QnR)Km zZ4(C^P%cI;qTHszB8t~Tv{@sC96GJ zF2C+sE`J_%YI3;<ctizTY&AdV(*d8NC5Be-^-)Yci&ks1MKKsioRc`K?(u3S+`s@`kQf{{X{6D78 zbl=EwQ=idYZjO)qEpqcgx7`0#xw(AgsmjfO7&&^-X8EA`@N$oC#*^QMc^WSvf^ zrMuWJq0yBc$X^v_W-IkhDNycr$8-F*de3)gCJ(Gk5re;joTT)RE&foWQif$WmNEcK zNx)KuR}K?D{GC?F(|s;vC*&;G3fUBVZiG&^Y15`4Kb-!)M}K44{3K8%S^hu9Wp|RR zSn3m4;d?IdgORf~Ihm^6X!2%-f?#~HZq_ls9^g8J?j;}Ry(gx1@gJ-{dZuEBL zt{1R?IT{`@#u-^$tlJ65aWBA%*cndPDy3bESa$#?`V-97J)u1ofAoP=&bQK!wKV7T z1K#m9$(*&>bJXGop{l`knChZMckHt^xQzf38iMHa*KHmt6Crep|6YiC1`2`x>h~mA z{6UTc&@^*Gfb%_qB_W+jdAV4a9}27S9CZqQNbPRngr#PrzLDc4lV^a-Ycu<%{t}Ew z47{Xg%E_!qxDAS4WEM)|_%1V3(M;w=0hsSTvYOPxwP0Mt#Mqh+~1oz5>TN@mJ2 zx=dN_L-6WeQkMHL{uYwue~hy&-iO8%Y77o&o0aTj{$yD%5vX@U(Z$b z`N=*kP8##n z*LrMgASa;tsqCbV^X`69+THM-<45ac?-TT~FY82cVIK3>#z@abr$?V5DeXJ}!wh$g z?0B#AsS*&brRgqj3B5NqgB1=7yX?Xd2ME?QOQV#w648O&Oj=g}MtO0b85C_1H<2?o zl;stIjpfO#?r*>kY`SL{zYZH^;Ns-GxA9g=x0w~Th|M5b>(HZBeDNinZguITzm70s zxYU2+*zu8`%*E>;G~EZ#irpTL6DD10GU|jKz$xE!TXvJonhR+-=q6`ymQDe< zxRtc+j&JnX9V{(CFCN#v2~vdyu-3hvBzU_U-o(nmP%>a2%=yxiMW~T4DG0g5=g|W6 zr6o~N7lM2MV%D0D4F_`CSjJvoY5E?XL-ArhsJPX%Cg(#jhqlSWi6OQz_;eM8oeh)N~=2vWC#tyb}6kE9)*n} z+11=Ar7izTkE#%g(buA&pzvV3Vhin~xlk3vUE~j4T1^{D@A;7{Vxge|Wx1rGzFbEe zic9yj^3}AVw(`~3P&!pE0H?U)148Ezjm}a+r)X|#&ZNFyS{yFwi0nd>Lg)lmo-xRv zL#kR1qP*emzYBOm;ZoWgUm~rjws3p3K}s7A;stHEohAbbj+fHzCyCS;AM`x1A;_J8 zw(=%jdxlY0OX9~`8o@l0f;j-kwucvea5TJZQqENyf~oK-n9jy5gkR7fj~GZlWd%R& zk7_@5;^7t3v0+A?XArl&$!TfkylEkLB{dcusnErg*E4_+1|~=(Zf1{(-ztSb3L3Y$!Mc-h| zvr(*oU$9Z5V!UW&-K~_BFW%V{qZqF~su+$IlShjgD;INSbTOb;L&HmtO>!IYx?8?U z;-s3=i79xCtrXylO{-GMTReN^Gy8%+G^&`7Ok8Zwi<{wT<9q{Vz{qG|s#1#4%Bk&P z?=#2J<`RwwpM}ntNYK>C_b=OWC+Oue8&>Jd{hocCZ<>BR4qW1WgOv)qZ+8hDZ0;rQ zKXCkJ$hLvaop1qW+rXAyKFNLYdV0;|W^o$H(t%mV6yU1kr^uw7Hs~{rz$MP!dQ(7=d8zC0)D5$ghZ%hfp5Z{p;wR#4-y?C{*!fSEm>`;>$>BB%$7zdJBv(yz&_hUhKmbf-V4MhZ6ln&hr#0Oz|g!L?1e=z zWuumLp~7|B4Yip3caSdVlC=12a-Cp6zWB0KQYTLdZuTr9q$3?zehVcZN2}#~l?t?~ zLX)gjU^*nnTu3kuH8Rmx>?K5xqeRbdCPZ%-s1faXm=Y}SErXa)f?t3%!P|gfVGtN@ z!84n&LFn@tl!MN#`yffe%;r|3LwG2{H0m3hoo z+}?*-(NoxVU}MmU5g1Lu?qR?Bf@emb@W^LEtx4+#ff_f7dvWljgPiv5ar!Ocg!WCg zkE4IX?O$;^&dxQE{1$$OwWnut?h<9mg(2{X6t$p$NNE>+0c?1ZoW7*# zIEx<>;Z5+Q1K?fomKHMkr&3hCTh74|8zt9{H^mbf#qW^U(jukp{#-?iwmYEZ`1yx{ z-=C8se^1E2hwv9?qCVE_ z5*l3DjZQw0;0y#|65de2Ol`o055|et$ER>Ur@6oy@Eob7_Sq@t=}Wr=^WP`Btp@&& zZ2$hfw0|$(+WSR(L!raJ;B9Th&J4aze~Ik+k~T9i*GNaP^(8gpa~3`e6#i2ud0xj* zvo4r*4AYsOVkj@^FSP~#!YH<&u?>x0)1R1b_Tt@YnsaEH`C(~-*U9vKM1Lz9J^EUC zo!y>!a{->CaAnRf0QDy9B63(D)Q}q;Hi}sn$YZyVwxQk7(|orn_<16lsh}5JAh5)R zErYIn3jM_D$6=}jlQVG#O!WZLUp)4Bw7sS26pA3sr^e3<%qsILl{*a6pryJj^hwPsyQ$!WLX8uvob5TR5+gXwm*Vag9o@ zuyC=xO|7C!*y6JEgDN_=H*&%hGt#)dp}@MyV{%&S+|Ypgk&juxI{eLX35SW&!66JA zI5>hVzrLSYNgNCWM!abaS*n93DM2m06bIA@pCQyUSza#P<>S)59I7JDR|vf1%;MxO zO*i+JZnvhxVeaMm+0e^ch^*5E1G*wYKO^tB(4@hle`AgV`3aGIwpZURz2y*?qMVS6 z3)r~)6Ffo2|4V_~x}T8T`^`?vVW*|TAvCbiUaZiF?FDk?yF!+!Mj}(+gIKX2QAyeg zCMKKRC{H8#A7DW2TKESpZ>Spv%~62DX@OQ5isFgW`?MX<>f52jtD!`v5Fb{QknF;N ze~P)l(hPiZZf_#3{wcQl$L=)+!naP`XxInlZRkOc?;^{RTg1unNRlZI@WEt-2xf;9 zT_v}2+c!HcB9Xy!0YV;bF{@9>5hhj)SF%lDgp7NXEP3?m&!m`&2W zqozrsX_)dE&`*HO#vctZ7Z|Vy*yr?(=mHk9!lrD%{TcRcq1KrlAZ_bUaN@eNXmkpV zKrK*JhbH3?PO6hfFwT0|a|AFh`H?gRpdrfCDNF?;Dwzc~5-}-&0nv%_oOUH76qlr7?VO!T0;{ z-6eeP^iDUUspItJLzVNz0^juXYP7oxeEFi&H!}kiR-w~3JsE!Ih}%1f4#_2RZ)mFk zy=|vK0^P+X!{G19gh~%P5;<0Z{J1Pl1zvN3m&3ngV%vDHMm6BdG|LWSHtPB15M924 zEb8^;IPCH{L_!Ydn+3D)f()-C%j?)D4y1(G=HhsL?T;Ap(R3@+>n(k)W&;EhV64Ad zA~wL!_{_nxaQ41*n*PBQJ)o$yqnL2Z$05vEGp` zqOguj3Gatxt6T_M66~0YmOY-0N#CRYiPc|V!lo_-{jwG zY4~O7kizsn)`4-b>GHfpe0>f|L()rRmt<)=e&o{WiddGm|0e7dS7Jh;8E`BmY40Iv zr+{4jKAqN_rWLOx3Fn}C#I;Zu1(H@I1MOU4|S5#KG~v|m-YH{4~~2Y5?K79?Df}>CTWn;&flU}7DDzCz%$Lbdxgu# z4<^k+d|~Tucr5^-6}lWwag$ag8KI2it$KR5K>a0Tf-I#K16H9ylrGlkyhbj1t#K#E zckWv<5zvt!Mxd%&Luq0ixuL*41_gHU$K-h!6fqo%a0#_Ihk0uY-Ff&Vlq6n%32uK5 zK+DCi6d;(^9zyG=hHY;i-DDr_xAza&y`~oq8K@mC&aNl&;O@7M?3?=GwaruppAGJF z*9}F`4^?CWpRf)r2Hoa!X_Te)X*!*a^>GIAp$wgFoe>kh5hP}`TqiVepjyD6fw)gU zWgpjm)M@oE%y%;XYNeH|*e%y{&n8m0EUf24wd8pO)YCG6)RQb~NogB4)2eQRs@{EZ z_o{Ac3&gpN&|%O&e;B{t;5L_`AzQj61ga38F@o)qy%+hT)1HHA84mBhz<;HjwRy=w z$O0gV{<|MR+b$xyF$Ik++@Ur)y~)ZvI|fX)+tbmA&X}dzQ?f$kFVi_z?RTID#4gWR z@r4PR|KC|CFrfNzou3nooL6u02VVe9iw6Z0S)Z+o?>Ku29We^_iGQu{f{{2Iw|QrY zF7F+=?5g{8PM_uUB;82Nk5dK!~+wFqi zcU5y~XX28xpv0|wpgCl!Q9W5gt3uPEXn>0!xT?D1@PAJ{PS~t1JvDU4N zvK;-7u-3y12YBMFO^cC3aiMsY`B%H~NH~W=D>;d9wp?ZE;$>P5*Qpx?(DD)4h zGkZps-q)dXd9#`F<77(g*rzywgm8=IGu%iUdV<7VzE!;QBE|Co^6EV%R`@A&Jvk(7oKpE4+VPC%KQgST3SAlIOuqzODlLGq)VC!tj z1jE7^3iLIE?i)&>Rt5Sf$v+lh=TO+9QNa}etUg1cTrm@d)`pB=C*m=&bA9YhB9Jb&dM}`6s*-8cL8q zqbjP4;{#m)F0N>C+l%v3+>^yyF3{p%4yQsGE`OnsOx3U`C5OTrGJU9M#{g(Y_5&ig z@1wMWrlg|zW|(MhWV4%sPpYE1j6Quq#jpC-c*+l&aC7i3`uTHa<*oSnSj6W|!9oNU zC(3d*6-9{aCyU_5?1mtbyswq-=cwNo?(?yW32d+i+oZrGoeHZ~U?C0mQZ*GpfPSh$ zA5u~VR2Z{zF^ZoIe=Q7t1Hh}P__fO7Cx5Z4IY9hmSPp?*fv}qt7%nbVQ}JsB@spwP z2&LlJ3gRb252N_8V-a?a%%4%g-BIEP{M-oQ*C_FwJ&0c;5kE+Y01&@m28>~>wb7k} z!&i3y?;S9D^(UhjsJggNf&&IGJC0sqx-R%FS)fYja^UgX1eX9hwHPe&wBo#U7|IT2 zt3nt^2eYvJd(SAB_Z)lf?U^>FJpUN=U(8a*vWoz~3ZDs^#p!KiEW1m5FiQ&xW3_rZ0vbvGZ(- zooDLJ%=;}S9;iuriE@~UcW+D+?<#8I9gi~c?mbtFe>DVk93pdqqpy z2(x6_(mUG@1+z%mEebp`CXA$&5N}niHCH^0dnQCv-l+Zgig940Qf_JFx7# z=dqExnS%T|+WoJou}ncWp$AiNsd)c-VhR?ZDfm(*9+B^hH5mBt)U3gJd!`$Q!4J_$ z0;{kUiZ~39>u@ZFkA=nk!5YL-7GAPS`YQu8yxoiglihbsDLm(t48XCkANernYj|O+ z57SJ!hw*J4j+^jSQk+D7Z6)+~K8{Q9%l)4I-rh`qGj`G6%nXM7o_`+woq(ed{7#%k zf9*K_z_06D`g?V9I{Cf+4EnnO2OYKZzig0guo}fikj>J6swToCih=qZdAL5)tyrgC z)jBPQr}fl2*ri&hx6;pm{6_ptjaTJ!AUIvGn9f(==fe@7Yl7!1wrv*4+>d^hZCggM zZTrg>HMSD9ZIR`{A8;k{YG^A&|Ba5)okfRtfZt5uTV;3-v+{fjpF`kPGCY@AnM&a$ zwEi;O#;p9Mi@@g-_=7T>V^$ud@Y?~ta1p{Xn3c^GmWi-=2s@uy`96hBK-hGIO=MQS zN?~?{U5YRlv+^+tyBcAm5qABe5yATbh|df9Vz#0i$jQvsS;TC;su#2MmhNWja5P(o zi2oj~cIbzbmA*jw3TSe4IRT|hY*J9@)GP(HP9*LVMdGsUK$smQ0#_k>uyX%N2oAkY zMe=^tYJE7|Y8`-x9N8O!i&V4qu5hze{{C@rW`x~}f@t^I`k^S(G&AYa!1`{?l) zjMzaD<1vw|NPG6}D0`L;3}Gg1%30d|CrQ+#J)4-cZ)BotKU2Q6lUlV)l~MYpPC80& z7GDUFQTl#yQ%0m!>qM*eZeo32s9>V@>eATuYS>u)$3A9I2kZ-}mFq++SIY?_Vr)Z~ zjM~p;;`rOUtxG%;S)mno&~b&A46_;H!Ecct&FtHHJMNZm6^|2uditifyzfWn-F~Rg zd2f%-d)rTa&TEg(Thtzvw~uSR!VHC#U{)GxyT7NbGNAXSHwB-WDg(#Y81OCJN0?dL ziJ8WNmCi3U>sO=zslrz3&{?+@52lP_}e%PlEq0 zi{?A_t}g661DXC{nW~i3ZX$Ch0#ih-7N*o_*C#L^26!>2*2kiaOy6e1+ehl#rM0-d zxM>qva45Dm$%8%LN$i0D49BZ*6i$}tR~}cRhz&&2qPq1>fr)Ly!WOblMxb*w==X3=1OR$!x47_;&ooPf*lgfRFY!{9jLEAVLmUr!ean&d?S`Abe% zjt|1%>0$7f!{9o^L>CI+ixBqZ>n?4Zn+Gjh0}c zxtBXD?$FXr>y}QFNnVl3cp{Uvnmk??A&=K-^7NS|j}8s$*W_`$2K|R30mC)e*TUc#Vem)7;N~z{TzIbn{ZW&{n-tg{O%7)& zu%>W1oTNbi6E276DA2!ZayS@ZA(JM5Je9v%#-FYGX&^!PB6(djW zR~rAKXevDrMbi^s^-j}OG4L1lj6Wk9|KuNf$N$6r?)dxv&?Ejg_DA8b-QOesOQX|1 z(R13Xqtng|X=w#h%4S2%bC{i*di6cLp1QEwIAN!hmiA9{lXwr0#^E9QLa?Bqcqz^F zPr6Tk5k1g=^vuBfA$7F(1y`RATnd z!WgK&H!_oH42#1whD9n?lEfm|hrvpP4&g^(C*LW#P2!DjoRFgml(5w}ClHssOCbfx zY;`jv7mERa!2wFpVU)uU)H@31Yf_pXD&Z2|HR~x)z=qyJcyi=*%9Bepp3Fy{*c6`N zfg8dolRbv zK7%g1$+^8zXd=F$4K8oeyZgfK2G}VMv{0WbxkXJ8$a9~Tr6SGBPG~iAKjB5ktl2l~!bWWTh&xwh@ znN1mAG~Aw8xQ!I|jnTM`r-pkN;O37fdQ86QmxeCrRtmNij(x9^QU*dPr1_Yt)H$P@ zdMhTnoVWiLqYfDq`wJ9%Ke-P4{)}EQN8!CT7G9a}PQ=?R^Copp*?|Od@G;kwnH!0_ zqD5}(b)>O-s>7iddv1p>UWqEp_}j`Vi&a(}<=5S>MDZ)G@BBJ97T%$>4#QrFlBJ=i zCQF-Nh=JQcY5w5vQ8XL+PO~Q#-r2JJ|2>N4*{3M~v2Z6-niHdGPVPI+f#+l3HB-EA zzZ`|v+;_aU#KNnmc(0AdtM5DBlvsF6DPH}{Q9MR?pLi^o&f0Cjf#XVQn`DTuJ=b%8 zed?tc{gsw8D!d#F?qRC_*btVADCo$3B$!^_6$L_sZLBu<%T7YebcL2Nf9+Wpr~Qra zp`XkL{(!8DM?{nk1ez|D%Y-Bf2g2(gRp#4&=~@M2V%aXpn;Tcea27o*H~TO-?h zQmis%T{rH+9SRS>J8X^sGk%&qviaxu^Pm=~wET9HYLUeim8g z+*oDGI<_FXOmk0V-ldjlj#1_xqRI?D-LwAP`CL?)`ku->{*h9qK1P{`K81yYM4d1T&jv;=j}ORF_mHVW8bbR?as| z6t;@f4J3w4DknHZPN+=Boy@gyc|qLX>*kvw)Ccj1m&IS~b!1dJ&c;lnCg%$6h%eA( zwlQnBh=%9M9_?UTr6+^L;jvZTcUGO_Y+Wc_yewX)BL-8w?mYS>qt0;_@ep$P3NkEy zbSc2^P)4ppsH=2bCQO0B>Cd?UBt(XlP>!4Be21P{ z>&SH{GHVO+0{hJU12LRN{zLZMfOjQyW_dFHt$nf^|8U7RjDN|eg?}}F?U{ea;{M0@ zH~yv5z`w9HLflIl6}6W{qB7m{tWJkwtP7dMr=L+akqptBNPWSFH5Jbb!#7REr;mkC zFmOeUFaebt%3K=;OV?mNHbYy($&k;Wl@J>XKt zty8!z-6<@}atdG0B|O~M3lDEy(~XB8orvIJ`fumqvS)ha;lK5##6!a=@$jqXPZJMu z-9|9|eJdG8`deDWoA4AyL#V%x{fK(g1~QbxZ8YsYT3YnCp=qC!)9zE!TKq0w(pB|( zom1Fm_u0(We(r3^?=&{^9pe`M=wlD@9VtuVtCOH+wPgWR2-UdD#di*5nJfIYtY8ns zMfOjjQ>;CUMs!N#e5Q?623;tQl`N`fu9W zd-~B)>Bn#AJ^j)4$n*&(!C%`RN&nW5dr$vpRQgx8^q#&bD*X~IeNX$cg$_%bQxHiE zJ2L+pOx#uMxfglHqSI+yvE6$ijf6u&Jjz$h3d>29q(b%vFsQfDX#Jg)bnPYAmG>4} z@OYP#2sqVmxaNEZS{4{JOyczjK$ywHc?x2eYi|Ic} zk`kr*CoRwECVKC7+wS8(pN}KIbID_8IR5Y zv+8lXKo=??3?!^XXNg>wkJ3S-XR>r-kQ-oW!6;^A8Z4#VEszcPVLZsFj;TQZJ49)K z*~ISP&FB-G_TehMj_HyVa!lQK-q0AE72^Q#NhhD@j2-3!>?8prBAk8(;kM zW0a%}LTaI_$S=3K$l(+bKo}VpwK+C5-Fe7S;y}uN2I9yr+55mYi_DXJx5H$Y|7xFL zn)e#<2;e(R%%9NJ)FlL}aT9{&_lD*?F zo@;IJ9CcAjxHIa3{s0>K&CT zW_BYXjG=^uQj3|p^u>%jP|WP`%Y-E(Vc*0iEO;X}k+I1s1YFieC@q(K_jA?&ekWm@ z=XU3>^a}E~1=vbhycw#2F+i-;-o|Y^7JPzK zeiUgCTKR(EyIrGOo!dfA>vpL8F31Y%0a!4{W%aw6C^XLOWBUQszHWV|SuvV@~#_E03Q}u%AZHn=w zL0VkafYLfpO{H2E=99B4_;gRgEcheZeY$VJ9K^)L zMB}v9dS*gv+py8Yg&Arl3-iw&gI2q~3bWjrD&whe{#M3=JQ86<-V<2_Idtp8H4gIr zo7lX^#UG8yWBS76+L*oSw=g(nkAhlw41MlVz+)0)3m9EXV#Y?w(T1+OKpNc!wLiuD z?$N%>irb()d&o0QxWli(>2ox`UuOGNT+D2Lcbz@`MQu#{({C6PnTjJM_h}jzgMU-> zZTW8-6mRHtQ0yk6QG?=01zTt^7n4*~VRYxcVEWx;8CTC>S9$45C5tatI>s5>_6R_^w$pci%v2eo?7P(oz)jhMOB~} zvpDN**_MqFvpDW@60?|u=M}t_@*LvKutBKS$rPdu4O;<<|tB>)t#?3&aq=6?@(uAdY}XBpCYSkeK8CnxodjuA9JgEoJn zI8ZMC_ub3yEv|1>ALIZ2(8qLFNqtNAjfStMSipUW9~?Vv&*{`X94T$teR_;?sN8WD z9_J9)S^p-|r^Z4R5;!7=%s+@J@FhB zJ(Ku{H)SqB{ufAoylfutoKGhI4+>stB0;<{RUB z-?S?~=@y|a`_CMwDtiCC67>rd8#JV4sta}RF8mH?Pxb+r# z%YaSM`-J>L&Rc*Nd$-D1GUVz23iM(3Ixx5V{V@FQ!;8KNcCVw^>-Yp(-y`UDe* zPaP-qDV(dG3juLCL-mIzcex20#mn9x$v_apn=J<$+n44V%zKL%X~4Yz1%E*uDx*LR_&!wtkGVUitnl~Ui2vvU)J9JcjIBVJ zFV_|t4>!Kkp&>-av8Z%$vD29-Z*n5q8pHgG(B2|#%QV;D^}5Jb7Q#Oxq4N#V|q z{~#obggakpFLT6J?Pb2WQG2;r{7`%0#J9DVLh&W-WvTdt`a-$$p!QCJxCHrBPf4*hA+ENjsmQq--X+wgNQ=#fyKzV_@PnNI-?; z294Z~CuuHPs$3pMZ|KqP9tqdKk@r8m7NN7lW9)X~^$3D@wXBiP7bmYm3LYi^YtkKW z8g%ZVpa@(~Qq|m_UzV)%n8fr-blrH4=GzS>D6nejgOMYwkYsp*w1x+7eGER8PxNp= zIcJh|@NwE!=ZP!wb;?aNBZZ_*0JpS=fqdG@hmq~gjbg#8N@tJopODfT79;x~hg=Ht zFUXI{{86t(F#nfVfcX=Jr0XB2%rDH>m|uO2Fn{MOl=(xD^VN%0&ezi_BJ@Roig&!K z-OZ!P#dt#4i8bMJ@#vJ8q?NxKLE0aXw6Q``U=1bh-6EAT0>iGfar$& ze9~F)u7>``yB@#t;9ZZ>7!&@gcd?!G2G(L1muCP*mf>hoVLJY-LFX}xONktHkEv{W z=c(>_>S>;vXGiAYgp_p>UWou^R6v}-jfUA!fZR07t)syb81ij&z!OhSZ2??I|CMqT z+uUi&t67J0@pz&nYq`L;mi89@fSzwM&^t^~=LE#b{62l`eHZ0!fD+-^%xW^*0400O zUU@by!;=d}g(DTa!OCkW5RNznk!85g#b@s7l6?97xuRyy`t6b-;>^z_iS=EddA2uQ z9N#EO!T0b^03n{%P_3S4iBO)|05}VTEf^=&<`Op0%P@9u@Z~L1+7`S#IR~VY-ozum z0;q&m5F)d^@|@rw;cfkmB;i)^@O*N}ktufqbk(0S{Wyi%c}7d=fqkVlC6&qc%K66N zI3z_2wOkSJj;~7?$4T|}RqvA=A4t$n?5cVi$Fi-}`JT#uIosj;hXYUd@!#%*?4C31 zl|vyrRL?oOmTPb2h94^Xsta(00P%(J#RZZq)mQBHm>iX3L#eoXF^3Z>$+=ZQzsk&3 z4s=zV$vl87)efer#woWXqpR4x;sOrugJ^J$4j}gJVliv1Dds!!78{F=HI)g{MnLTh z1mlWX-v7(8Eya!s|5AH&9=^l8cs%F3N?N5q|B6@ldVqB)oYWXP?6hui4_>98nCD3- zt+}i+C6w6ZuhfT(U91FU4|NH(?5Y-I?U8#a#h%-Vo{!Pvh_jW~9I=JbPQ#DFS+#e==umW_@vk04=cfmYQ@N&WsICYlkPE<2x5DzksXmzvFKulltxW8)h_a zgS_#v^4?bSY*@yA%d@%an~Lc_TB0F#t~SWU8k#B@d*w}fR`?umn!cHC78Q2$*n>IS zZSon_dvn$MrOCQ2-l1@v+3CG4+38(G?glPI!A2XxDI6BwAlpTFn*x~+9CLc}8+^0$ zV0)13E^xn#U!G|jXZJb4@c)c?EMW0h9AcjH<9Z-WoB1w@W9**+v7B+M*i=p|08?Fp zE;I>?c^)?lg$;J-31o;9K9jGS*@`=TwmN%e4)t7wv`^9<$P6)EN5{YL4OMxIFQ&dA zm9qGqMXextj#V%ee+vULb5$+xPvoA&u;mws_Ev4PDr18r(POhQw`}LtqMmtD-tNm0 z+1t9L()S7dI&?WkhPf}YwD6aYV;-vkW5KwiVmELE1GYP1Cgzmb}`}5boitrsyk4R2;G)8rB~x`yum92cFaGaw+S8^PF)PXWYqU zABRz#Ud!Or=n0U;T~zlON8d>21hxVIdw({CtP7J&CPMowhLEa;3)mF1h&1k zE?+;6q*&Jw`fZbR}gj7Ny z-N6|*ididV2{r0MW0a0SG7>Sg<4C^)#4>}JOoL=eEJP6@_Xy7Gi&)m@6NOnHDwp**0-gRC@dfn1b~&c5COo>GU7t)EF^wO zDG>s5UA!)c{TySrNey=EVdmKY-|@?Ghn1qbZ(@0)d%!9qFuC0CX|K%hQgm8GiFivW zb)DFPlA|YgS%s!3Y2mY`|F)=^r~|jG1ohpN;NaubzbQ%y;)U}tSM}YV`8HSfouA+| zO zi#}5C;d2Up2h7z*X-XT>JBu2L(r&={!niw6(Dk$6(AoOPyHLB`5jMX-2vS!e7jYHx zq>Ed&X`Uqi_z*{(;2u5R9_4p`iP1auVAwshF$*dVy0^*ZE`OYLC;9T<<2wwCO^%D& zLPmD29`9pAGu75sZ}yxg&iDzd=swFSfHkujOzg?f=}Qmj?UnA#452~X2@*(xIdXv? z;`nd${8j@WVwv)DaqA%z$CP7ePd=n~&%ytO@}V=B@+9TkMnZ(%JrO0inb^jgQ9jW& z1_%|p&%Dsvox)ZuF$aa0+%h0$fuTh9)S)td(oyh&CV{c|K?z}e5E<7TntalWRCiyE z9jXv@_ovW%3#sm|Rk|*ATjLh-_T^f)eS#1{$s>7X^$lb9r?UFqBF=;vTBzh#)S|8p zGG6*CGLAcn3og`y2LlM^(&)cmhF^;&uaANN@>7z#aLmZ%?@89(*N>@c6rWuWMtc$` z7>d1SrYgYk1_P(uqn=FS1z$5;8Ei~fJs|gc&>+GTu!;0OnoX`WG^LbzeyQDp3kLy4;!gg7NRUqE|S;3~h&Z zCKg zP3~F-4BY`}#mm=G?j{s_b2vW1z*N-{e=<~y7tJ{#(bzkna7*YA zHSY#(F3nW!q)QAJl8Iz9IxykPIf$Nfn}XMMQN2R-!_~_Dx56%_suKpliWX*#pInBt zezPRWA={o4m~c;q@)th?M2qSM5-i82IJ z-ZKWBW%oyD7m~9jc$6t*veq-MdN7d5DO;~86%vW{kCT8+UeiE)dwC6%kT=o*&z|u# z*`z~H8;FqoMM-%O0OGwgWh*>;NZeizUfAio_!}NCD;w89ehPA62w49-1N@kLF&Q>r zMP$CTodoAbjEoc5AMf;@ACG%Bfe!eI1IyfH&cYkUVe)2J5?>$Rg@X!OXdC7@$>q&; zU>E+N_xzPQf##s}H%5JDxJA(QFhs7%EQN zsLH`P)$%bakhh8!cLGM1;=Bg=ppF?wB!q!ArnmT&GhG3&F~=ko;d&H(PQ+*a)?__X z8UHR(FO_CaGB9h^ST-4g+*RV~DH%cTDZ_PSFNx-D`cHJ;$i4#x`2q||v`Yx@Kk4E< zO=^8+R}r}m?$A-ShI@mnh5S^a0-1_6I=b*F!kFYL!tg={moMpCva+pTe5O-qb_xw# zpfjF708M`YbWmy|w9>G0gD%t$9+JyRfUweg@^qd|)@L*D9s0#-kO$)pfqWm2XmA3cR;x0rQHM~%T8SXzJtzM1Nna$sptY0<|dODtUdI#^lMWtl4RpxS% z(Z;ML%d`)nXJmbti~A;W^#%6%CuChCBo&kz$n9T^dM+ZW61+xb8;d@1s@@xY}CX!V;oSW%cCW%XB0V*`~ zZ#v8}Z*!@hpDJqTLOFc53r%eMwy;#}=teo&Q6*W#n)y!g%Hw!IP~2KYPbf;=3~Z9)KqTTr!1lxjH}fHLQfE=y2Ke)Rja(lMC+i*6ETV z*E5e$ZIK|(cmxHKd>aWfsS)-0$>jP*yk^qdzdk<$-`>)PMsVJIGl?f`gd~UrzTr>k zz(xLWO$-x+39?$;1w$|}3jEvrwC)sDJ*&D>!Mv@tZZ8Kd$`XO>3AiTUz zr_c)JrPK2AsV_o*PWUsO$0Ul=645OvA1a=o4qplc9obVBj}6A}(~~h2GdAiwBt51h zQJTlWtm0oFov!QvQ>CB6RHf>(YdmIDv0yTPhbKqL+VX>@3(1=OU|P7DD+|z)2Z_Jj zjlcb|u$?6YIa1fQ5^H4e%xyD$4MV2hbG1UOFX{WoKuc~Q*-Qr>L$q`T>`hvLCKTS6 zn)D)M5;(IrDGjI#4V4R6TB4S9$DQZ^!HCz6h+=e4ZT0!^F#n50@r6661I4gz`FrzY zc&?BB4%R;UPy8+Xp5-RIBNc3|bhNV4gBwo}y;4K=@KfZt&g4u1*bTUh0}mPK8AT6x zy1dS0x+Zt>G$*^4`DEXF`i-zj7WpDIgeqTcqu!2NO08lDn^HyHo8?Bk$N4RR~Wg;d|JmiNzFb(-#lhMSa5eOA2qTSK4kOAqsLVa?RR1>h-i z+C=$xmX=P|q_q)y>CwOHUteS^LN=dU)wA64y?nbV@>}GdY7RNf)aV&RjaD1ls~oj5 z*3ZIbO5B0+beQ8iW-Z#y`35-1=sRoRDuyh$zqy0h1zP>U}OA$oHMH2%c^76)J(dQIoTGfl8# z2yIEthd^DA!OFqN1yf;8I704+v>XD$ZsdGCt{@iYWx0og5$IT@C*x;^-RCfny}m8t ztbQnOJVu1TWFsNj*-A2&-ttTnp5Koua9dc=O~N||8X31|W+?Se_-FW>P+K#i>qQtf zm#xOz57E==h?p|}gygVD#r8a_C&A(mCXt}s)(borx_tSDVn<%C`y3JniSs>#MB07R zB=Ok*F`X*N#Tj<*hiAfvPz@{m0Ji5Gub$Yy*VpLio@6yyESZqcGF6vX9P(TM&1++L zaybSsUBHy%;v?Q2HOuD0g%p@C6YTCAga5)Mp%Z$~d6;Fk_Z zLz7<;Ttku@Jkua~@*;aNo^yjd=X>&G+G!qA8*!(f$j&lMz?2(dyer1TPRC$CbNX&D zNE?C}d>)qoyInV*gX=1U?=C#CrttmY*MaZRzTJW z6`D&A7}|CXZ^X#4mw+bE!= zuwC(n7S;YD^R*VH{0$xPAYsbUQJS+hG39vXfQTOq)^;Daf=M>8Op1<4o|X*1Tr!h9 zB?BI8834&aNDe@32(baA5Fv#CnU9e91;zjXOPt1S2!{?X>OF6s0!B`lQt0&B3i&@I z>%^@KbV^)X;8odog=BfjRJ}-EmMSL^OfasnX~|_c^qK3 z0!-r+QYvzY)V+&3$kK+BOb*oq^vpR0!hRR33!)LnU}3%-xvVp3S%^$s!MowQxwYbk z&ruVuc}tJ?QK80!j-A8#DyzxJL=NJ;O1<=`-=68PfqsCV<#!63$Wo}d_XFB_&op8W zoSg5;Db8DB@SF$3>|+(!ceguXhWOeznyS!%>%?ttBkR4yDbxqa)$#mBpyMbi9;psA z$ABfCHme(r5D9GNxRGD$G)@3*0VC|=aHHg@Yq`k<>X1y!h-&3-C^>_pJ zxwy3g8qh9umXiS6AW)Chi=&R?O0?%bM}>q|%zT%yoSyBR?-X{p6U6?X;A)R(ZzQVW zI+A8R(&rR5ibrWS>W>g}O|f19hQ1cKN33UGy6;PkiNlI$y+) z&%rB6!!9SA%HkKJ>6f2%*f0ip0Xk=WT(T|$zkiTHmypp=1*-c=Y5ec>Xh!8QRZyuL zU`X4@dJ}*jDvg)Dj~*ywf7M0!MJd9Av-L>K8I+icGxT((U+62GMZb#Dd-T({L^GEBPgQ(CfenOJE2L>P0$!!AKJQwT5S$1Qq_al46f|>OW#3f^p z+6^cif66Axb1^h@5JM+haB-@b&6{{VG7ryM0_zHdkLj>}CncyHFHjERf-M=b+?wi} z_4gS1&=w1rEdz<+s{n_@N~wY@ywr6CP}MlE`A{DGONx#iP{*WD3<=>;y+Rg5|E`6r#*D; zuP9Ma%$^VFXcpT*y596%spen@`boYAGe=zADoJzz7dm{?j)<*gxTwu}9l2;xtq}hM zC5hWFByPUB#9NvA56Ui`Ip{77UjRxs5IHl3QlpNl1sT5lIO4>dBi??5IKbx04zO9i zd=sJ|?yIwMAO$8DpZhV@t(2OP7;Rk)ti{0*7sP_76UihAJJ7aL#j1ov&uWSAaQ6Bv z15NZssp{94BrZ`Cg}|^&>$sCF;EL59l2jnnv1p}j6c>`X>3(;PFns`S58z$ekozpC zq1}59=Z)utFNj0x3C??knYj4<%n4#>FlH{BPnr^vh>LHa`x-;;r|y#j$?q01p8Rg0 z!&A%%>>08fj-$fA!f6L3lTKG;W?eIz9BcM1&s+-a&)3rv>OszTKhW`+3s(#_i^XdR zy(v?`US=u1eI9a*vuIl7&rt8@lmiADZqZxi1;I~zN-v_^b^ov(K zu4NDV4siv!z{-K^$n)pc_OfpZcJR)RaB8sb@9}uo*nK!A9F)aoWcNMr9BnhraQdSHk$d#U&)wE~h3u$iB(CLN@2cTgds?aerTqyWID3FyIbf zfw9O)1pM#*L)CUV5zvGJ-&Gk-A%)9swlh^2wm8|I9gs)JMo-8o=%Im05d}gg%Q$|4 zlD6H4>+~Da<;jDQj3u8EiVAch-eeDnDv>m+xV)@F^2`L?l*@0GP|XY$>QQAG>ph7G z6`x&>oSd0M!cPcW;aflBR`M-JEQN0_Z&423UFI#y;Jk}+UEW1m!3|whO6UJS+P(xn ziXv-#&JZA>111>mC_&JmMgo{PsMBGF^uR z-EUXFy>-`%py*5@NjMV{JrUl~JrQ8+VNMX(ypmId~${PeCy&aw}aD)=J?cu$gqEj-&N`3zCNj^D}Tr@T1Fx za?w}l76P~N#}%fjLSUZuY`IkkxJdNMx^@-c05!aZ3w9grfi9tCT9NXi(w;Mde;94D z3T=XaAj)!Yam$XYO2zI z=HlVh4#o2w={$S>D6$XT^73&opmrAnv&yhbk>>%x@rehEZ3gnEPu zN==GHTc42EDzaly=#N?lc!Zsmb@jgj$ArMuAn(#v5M>=S%vWY!dqxu?5;omWJcpFn zgAQS9(0qor2Ki)VV;yvdzBS09HD%{d!j~)JorOLE2ioD5H#H)bP-lm8 z6deo7eJ5~6v>@=~X#;^(B6>e8;^?h56MC`fMD)7Ycl?|${5ewlHRE`k7vYV8(*Rq2 z#k^*+Ue&PG;&}lZFC(F!MC42qk>#|7DReio0ssffMk-%U7jJH;kUoG#L6YP-#_4Rs z7Z?>56K1iQY4GEaWXYm9FTm?Zq`I$YLafRyo9dFC7U<_SVhR{w1t_OBQndrqLMVv5End%YRDB#+ed1T zjgs#N>#8Hs^PCg}YEd&5a0UBd0nyiK^{!$iX--*s0Nq^jxoM3oCy9NWD9?TvR+|bG z4Uwl0`8SEsb|5CXv|^JA#nsyK3yhNNG9gFtbw0E#BC)J+Ib8==h?}|)ZNHglG_W1e z^^IXMIMV`K_28`*Xce{rA}g^3ONK{>L)VPnzSyl`NoF)1C$6^-f6bmDTNX?5h&g00 zFuabUwA@pIFHLGI=`0j-XEBIMeE^ik`&3fKn+0189f8U#_whKQfVjwOv__=+kxGkT z_&nDlffT|<8JKjc@1)Ut84hrvvid$g)cJ}Bo?;E$aUWeGL6h2`i49IXc`SyG3iw%EZG~+uizM>-|f$!`83LO$Pn!LU{#!YjJK+{g}23&c~y{ zYnpgZ^D$Nrofg2fALxr1Jt>=jX{dFZzNf$K`1dS&1Z%$Hhrv>{nl;E_gvFyBsNa+O zb1wg5^-GBEQGZ=plr4c=@QwlYdXo8YQK8^21n%-1*n!%v{%W;7uiat9qpfE>OHxcR>x;Nf#%O+e*<@W&~VIjxqW zgp1?Wr&NoDlDZYP;rxF78>9CHj3D$FE&b@u=dNt-(r4v3iX@bHCW{*$uK$=*pkj3U zMIXV~+aExb*ZGcK%Nslj4Gs^(l01&w9pG(r->MmfRT1>jG<9sJg-V~_a9=*(W z((Jt$9#f;EF+pmWI*zm;n6>2?{M*jeLvqd|Mlw*f z?gcVY>wKrum$klZjG{eHt^uPgYF7-4!thZQEdDRzwS%12D5+zPilir~ogI$Y2sK1U zpdVQ%qVCWd0+jE7a%#F4>F|*EBeMOWzQyXiK3?ZjyiOpA4>3_4vzij%eHVYfkH06} zt&b=uL#&*nz)x>H6bt->+^M-3XHW=Fotw1yQ5-WAFDmQgttK8a0)4Jro7V{FX~h_6 zb#Z#_<)RqvxAAV-je-2KUV}R5^EauY9eIte)<$qU-ebO5Z#_rM zx3k)U%hn*kgtpb+;>{@^bExf&Tc{P0g{b?02E+im`DPi=E9m-cJlv+v4O>mIQ30PtR>{_JZ7a^PJe%ukxW9YjVM;jS=--d9*k|F*Pf|3xI5L2xArwKz8I>=cnqUBVqB|5yDC(3EHlzr@Cikp2ogKg+|>=7%l(X8$B zky|#YB0~!VsbCMV`}K{;=56}~{}|eyx1eEnZ3M3fN^N0&x5vDOL`3zGY#(_Zh*p-e zw_7LWHJn?g;AtPvK{yglo;V_-#ELT0SnNXUs^3ibRA z3Pv}Pr3vo)LaLeb$Iqg}}u{cL6bS9WGBxn`rZQANORG-yPEawBx4Wth;Aq1x_n&F z!XYMqInPi7G#J-t5NB$G!S#nh(Dgz_x0naOy=)#$GP%q{tm|_4Q7$o4?m3G}rh2QQPz=F%1K?vP3{0qa+(iEhy06nIwl{1EHw zQ0i;dWbSKtmYagfviAYpd_1WlqnvzHbIaA7u;4L(JU4e7r00@l2LiAB@dV!|&PQO& z5ZG7%9_Y%y%VrrxqH1+lIp#$ z_j=<#F(h^nYJUl8gaug6YM&VwZ=Zlf<+WM#)%iEpRQ zYTKGX7%T48=RrB|(jE6|(y#JbXKWa*q;?liAcg5bPiuINA8LQBG+P01BHJwfkQv5cjMC79vlGvs3I?GBWz?y$T&p*t)?`2Z}pXpDx>=&WB|5hIpf*R({v zet;pPBEF$8a43w3@{R2=!sqjJDh(r2K3`^rt6V&|~v2_5Qy7OKRzzUuwG* zWlVdlzn4&R??E?!;+6nqA@xxlZFg=NTJUx!L9aPZf=iM}uuLPtJMz!E(&g(oiO*SB z)#dal2qF6x`M@vZTc(lltla;73|2m8$04k!aR@LCR? zeS7i=Z1ntCqv^kl@3T(c1C3hZjpkCLuTY<`)wmF&SC3O-M_I2rjhqA(Xly%Fi`>at za}U;p?CF;?wB4KX0saabt>&9@;I?tSF*T0|Rbrg0L>23gTS-3~r zWh(!m6-|lHvjxz+6Rp1ir~6<;-;bv2&x*gsaIUHKlVp=sck6TD7k3jZcipY+Xq5|2 zbdyb*FZ;idO&o@wCY#tV{Sn!u+q^jr{d;dIesciNb(Y4r;;+NAA|8*i6h3d-pnkTO zGZk{E)u*PHnbJEAyI3c*wifEeX02XoHUiC7F4cDU%ARjy_{`(-&!vd_25fRyFOt7L za~@xaI!ou~-x3Yx*roblW-X<`9K2LJK2YYy8=pjtn=jQFxI`TMoLdhBqu;`xu%>Z1 z-ndJLYU@#7P@l??>MiKMgsL*OG~~oFA`+-+R>O84XZJES6bMevRL8*4gi__z_9_FQB$< z-^6MgO|`Aa)A)7oob&OUb>C(Q{A=Sc;s-NTzaUW8VC75Wl@FlGhvjMfD_Jg#_4&k| z@e`(x?xc#2z>hNe8@@>kdB#Gi&+a6delIVu4}Rns!xZ&vetB=Da3k@17T;In;G2`> z@w45}%IU+;%d!9bD<0i)oEAF|%De82pM_204NXQ!p6O9Oh70&AS{^@v-N#$mkF6~F zI;I_lyUbET#(+y`+&F$Bcz$+A{Cu?N4t{IN?GA@qyo?OlqqRiMtn=P~vQnS7u zXVl_t(3VTA;by2iM0xi2>OQDw`+6vsYa}I9)Ki!={)vQ|p9v*@?U)|^He88J7OY2@Xu1g;S zRY%iFyM3KC8(z3|Wnnk^_HXlEF3BTiE;8w=m>ClK&x5Vq$}vXGsQ!{{$9p1!51T2}4|4pj0UiM#0NvyvP`(RXgP&7BvXD!gGyEf<5vQrTrH zhd!l9zAuel1>JjO(DzYUb1W5o8^|+$w+Kz8)4?A$HM~4HL9gLI{dfGX?5y^AeIwSRJ$*EiDbxWnGJ6=8 zem2Vz%yQFk852`egIQN~PnB3Tsmlb@ucRz<+`+Kq3#EC^KQ3e#jtc{=sgTX=sX=QW zc!-Vyq7PcX`?<*ww6?=v<+cqm?Z#{F$4;By;YK^D^77Ssg>w2|U3gv_%Jy8(_CdwM zK%Gk!7 zYGZT+o@W_R`@%W?jH)!V7(oA6K>#K6OisUIIsjrF0>wS<|383y1AuTKP}4&RCRiN72VXA8R6i zg6)&%5?{pP8R3hhdop|{jogQ$uOn1`;%~5sq&Wa-d0p!*qpHp1HsYAkdt8zq!C~Kw;HqYi{l==CZ�Z4cg+d$2j$!PdOb{iGdMl}R2 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%0D(yus(uH;I*TaY5(r*u(Kc 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�*_iTU!c67%JH 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ʴ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