diff --git a/.github/workflows/linux_cpn.yml b/.github/workflows/linux_cpn.yml index 775d9b9d293..b798e57c286 100644 --- a/.github/workflows/linux_cpn.yml +++ b/.github/workflows/linux_cpn.yml @@ -28,3 +28,7 @@ jobs: uses: ./.github/actions/build_companion with: os: 'linux' + + - name: Run companion unit tests + shell: bash + run: cmake --build build/native --target tests-companion --parallel diff --git a/CMakeLists.txt b/CMakeLists.txt index 8584ed99f0f..cb3715e7029 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(EdgeTX) set(VERSION_MAJOR "2") set(VERSION_MINOR "12") -set(VERSION_REVISION "4") +set(VERSION_REVISION "5") set(CODENAME "Queen Anne's Revenge") string(TIMESTAMP BUILD_YEAR "%Y") diff --git a/companion/src/firmwares/boardjson.cpp b/companion/src/firmwares/boardjson.cpp index c1d1846340e..1784f6c6697 100644 --- a/companion/src/firmwares/boardjson.cpp +++ b/companion/src/firmwares/boardjson.cpp @@ -137,7 +137,10 @@ void BoardJson::afterLoadFixups(Board::Type board, InputsTable * inputs, Switche } // Flex switches are not listed in json file for these radios - int count = IS_RADIOMASTER_TX16S(board) || IS_RADIOMASTER_MT12(board) ? 2 : 0; + // Must match the targets that set FLEXSW (MAX_FLEX_SWITCHES) in the firmware + int count = IS_RADIOMASTER_TX16S(board) || IS_RADIOMASTER_TX16SMK3(board) || + IS_FATFISH_F16(board) || IS_HELLORADIOSKY_V16(board) || + IS_RADIOMASTER_MT12(board) ? 2 : 0; for (int i = 1; i <= count; i++) { QString tag = QString("FL%1").arg(i); diff --git a/companion/src/firmwares/eeprominterface.cpp b/companion/src/firmwares/eeprominterface.cpp index 862d7967eed..410dcec0eef 100644 --- a/companion/src/firmwares/eeprominterface.cpp +++ b/companion/src/firmwares/eeprominterface.cpp @@ -58,7 +58,7 @@ Firmware::Firmware(Firmware * base, const QString & id, const QString & name, Bo simulatorId(simulatorId), hwdefnId(hwdefnId) { - gBoardFactories->registerBoard(board, hwdefnId); + gBoardFactories->registerBoard(board, this->hwdefnId.isEmpty() ? getFlavour() : this->hwdefnId); } // static diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index f6fd3e8bd26..1fc85ad2682 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -127,7 +127,6 @@ bool ModuleData::isAvailable(PulsesProtocol proto, int port) case PULSES_SBUS: case PULSES_MULTIMODULE: case PULSES_CROSSFIRE: - case PULSES_FLYSKY_AFHDS2A: case PULSES_FLYSKY_AFHDS3: case PULSES_GHOST: return true; @@ -543,7 +542,6 @@ bool ModuleData::isProtocolAvailable(int moduleidx, unsigned int protocol, Gener case MODULE_TYPE_CROSSFIRE: case MODULE_TYPE_MULTIMODULE: case MODULE_TYPE_GHOST: - case MODULE_TYPE_FLYSKY_AFHDS2A: case MODULE_TYPE_FLYSKY_AFHDS3: case MODULE_TYPE_LEMON_DSMP: case MODULE_TYPE_R9M_LITE_PXX1: @@ -566,7 +564,6 @@ bool ModuleData::isProtocolAvailable(int moduleidx, unsigned int protocol, Gener case MODULE_TYPE_CROSSFIRE: case MODULE_TYPE_MULTIMODULE: case MODULE_TYPE_GHOST: - case MODULE_TYPE_FLYSKY_AFHDS2A: case MODULE_TYPE_FLYSKY_AFHDS3: case MODULE_TYPE_LEMON_DSMP: case MODULE_TYPE_PPM: diff --git a/companion/src/tests/conversions.cpp b/companion/src/tests/conversions.cpp deleted file mode 100644 index 6ccf13ee48b..00000000000 --- a/companion/src/tests/conversions.cpp +++ /dev/null @@ -1,366 +0,0 @@ -#include "gtests.h" -#include "location.h" -#include "storage/etx.h" -#include "storage/storage.h" -#include "firmwares/opentx/opentxinterface.h" -#include "firmwares/customfunctiondata.h" - -TEST(Conversions, ConversionX9DPFrom22) -{ - RadioData radioData; - Storage store = Storage(RADIO_TESTS_PATH "/eeprom_22_x9d+.bin"); - - ASSERT_EQ(true, store.load(radioData)); - - const GeneralSettings& settings = radioData.generalSettings; - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); - EXPECT_EQ(FuncLogs, settings.customFn[0].func); - EXPECT_EQ(20, settings.customFn[0].param); - - EXPECT_STREQ("Tes", settings.switchName[0]); - EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); - - const ModelData& model = radioData.models[0]; - EXPECT_STREQ("Test", model.name); - EXPECT_EQ(TimerData::TIMERMODE_ON, model.timers[0].mode); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH, SWITCH_SA0), model.timers[0].swtch); - EXPECT_EQ(80, model.mixData[0].weight); - EXPECT_EQ(900, model.limitData[0].max); // -100 - EXPECT_EQ(80, model.expoData[0].weight); - - EXPECT_EQ(CurveReference::CURVE_REF_CUSTOM, model.expoData[0].curve.type); - EXPECT_EQ(1, model.expoData[0].curve.value); - EXPECT_EQ(CurveReference::CURVE_REF_EXPO, model.expoData[1].curve.type); - EXPECT_EQ(20, model.expoData[1].curve.value); - - EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); - EXPECT_EQ(10, model.flightModeData[0].gvars[0]); - EXPECT_STREQ("Tes", model.gvarData[0].name); - EXPECT_EQ(PULSES_PXX_XJT_X16, model.moduleData[0].protocol); - EXPECT_EQ(0, model.moduleData[0].subType); - EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, model.moduleData[1].subType); - EXPECT_STREQ("Thr", model.inputNames[0]); - EXPECT_STREQ("Tes", model.sensorData[0].label); - EXPECT_EQ(10, model.sensorData[0].id); - EXPECT_EQ(10, model.sensorData[0].instance); - EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model.logicalSw[0].val1); -} - -TEST(Conversions, ConversionX9DPFrom23) -{ - RadioData radioData; - Storage store = Storage(RADIO_TESTS_PATH "/eeprom_23_x9d+.bin"); - - ASSERT_EQ(true, store.load(radioData)); - - const GeneralSettings& settings = radioData.generalSettings; - EXPECT_EQ(20, settings.speakerVolume); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); - EXPECT_EQ(FuncLogs, settings.customFn[0].func); - EXPECT_EQ(20, settings.customFn[0].param); - - EXPECT_STREQ("Tes", settings.switchName[0]); - EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); - - const ModelData & model1 = radioData.models[0]; - EXPECT_STREQ("Test", model1.name); - EXPECT_EQ(TimerData::TIMERMODE_ON, model1.timers[0].mode); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH, SWITCH_SA0), model1.timers[0].swtch); - EXPECT_EQ(80, model1.mixData[0].weight); - EXPECT_EQ(900, model1.limitData[0].max); // -100 - EXPECT_EQ(80, model1.expoData[0].weight); -// EXPECT_EQ(HELI_SWASH_TYPE_120X, model1.swashRingData.type); - EXPECT_EQ(10, model1.flightModeData[0].gvars[0]); - EXPECT_STREQ("Tes", model1.gvarData[0].name); - EXPECT_EQ(PULSES_ACCST_ISRM_D16, model1.moduleData[0].protocol); - EXPECT_EQ(PULSES_PXX_R9M, model1.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, model1.moduleData[1].subType); - EXPECT_STREQ("Rud", model1.inputNames[0]); - EXPECT_STREQ("Tes", model1.sensorData[0].label); - EXPECT_EQ(10, model1.sensorData[0].id); - EXPECT_EQ(11, model1.sensorData[0].instance); - EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model1.logicalSw[0].val1); - - const ModelData & model2 = radioData.models[1]; - EXPECT_STREQ("Test", model2.name); - EXPECT_EQ(TimerData::TIMERMODE_ON, model2.timers[0].mode); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH, SWITCH_SA0), model2.timers[0].swtch); - EXPECT_EQ(80, model2.mixData[0].weight); - EXPECT_EQ(900, model2.limitData[0].max); // -100 - EXPECT_EQ(80, model2.expoData[0].weight); -// EXPECT_EQ(HELI_SWASH_TYPE_120X, model2.swashRingData.type); - EXPECT_EQ(10, model2.flightModeData[0].gvars[0]); - EXPECT_STREQ("Tes", model2.gvarData[0].name); - EXPECT_EQ(PULSES_ACCESS_ISRM, model2.moduleData[0].protocol); - EXPECT_EQ(0, model2.moduleData[0].subType); - EXPECT_EQ(PULSES_PXX_R9M, model2.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, model2.moduleData[1].subType); - EXPECT_STREQ("Rud", model2.inputNames[0]); - EXPECT_STREQ("Tes", model2.sensorData[0].label); - EXPECT_EQ(10, model2.sensorData[0].id); - EXPECT_EQ(11, model2.sensorData[0].instance); - EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model2.logicalSw[0].val1); -} - -TEST(Conversions, ConversionX7From22) -{ - RadioData radioData; - Storage store = Storage(RADIO_TESTS_PATH "/eeprom_22_x7.bin"); - - ASSERT_EQ(true, store.load(radioData)); - - const GeneralSettings& settings = radioData.generalSettings; - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); - EXPECT_EQ(FuncLogs, settings.customFn[0].func); - EXPECT_EQ(20, settings.customFn[0].param); - - EXPECT_STREQ("Tes", settings.switchName[0]); - EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); - - const ModelData& model = radioData.models[0]; - EXPECT_STREQ("Test", model.name); - EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); - - EXPECT_EQ(80, model.mixData[0].weight); - EXPECT_EQ(80, model.expoData[0].weight); - - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), model.mixData[4].srcRaw); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[4].swtch); - EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); - EXPECT_STREQ("Thr", model.inputNames[0]); - - EXPECT_STREQ("Tes", model.sensorData[0].label); - EXPECT_EQ(10, model.sensorData[0].id); - EXPECT_EQ(10, model.sensorData[0].instance); - EXPECT_EQ(900, model.limitData[0].max); // -100 - - EXPECT_EQ(10, model.flightModeData[0].gvars[0]); - EXPECT_STREQ("FMtest", model.flightModeData[1].name); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_VIRTUAL,1), model.flightModeData[1].swtch); - EXPECT_STREQ("Tes", model.gvarData[0].name); - - EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); - EXPECT_EQ(0, model.logicalSw[0].val2); - - const FrSkyScreenData& screen = model.frsky.screens[0]; - EXPECT_EQ(TELEMETRY_SCREEN_NUMBERS, screen.type); - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), screen.body.lines[0].source[0]); - EXPECT_EQ(RawSource(SOURCE_TYPE_SPECIAL,4), screen.body.lines[0].source[1]); -} - -TEST(Conversions, ConversionXLiteFrom22) -{ - RadioData radioData; - Storage store = Storage(RADIO_TESTS_PATH "/eeprom_22_xlite.bin"); - - ASSERT_EQ(true, store.load(radioData)); - - const GeneralSettings& settings = radioData.generalSettings; - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); - EXPECT_EQ(FuncLogs, settings.customFn[0].func); - EXPECT_EQ(20, settings.customFn[0].param); - - EXPECT_STREQ("Tes", settings.switchName[0]); - EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); - - const ModelData& model = radioData.models[0]; - EXPECT_STREQ("Test", model.name); - EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); - - EXPECT_EQ(80, model.mixData[0].weight); - EXPECT_EQ(80, model.expoData[0].weight); - - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), model.mixData[4].srcRaw); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[4].swtch); - EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); - EXPECT_STREQ("Thr", model.inputNames[0]); - - EXPECT_STREQ("Tes", model.sensorData[0].label); - EXPECT_EQ(10, model.sensorData[0].id); - EXPECT_EQ(9, model.sensorData[0].instance); - EXPECT_EQ(900, model.limitData[0].max); // -100 - - EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); - EXPECT_EQ(0, model.logicalSw[0].val2); - - const FrSkyScreenData& screen = model.frsky.screens[0]; - EXPECT_EQ(TELEMETRY_SCREEN_NUMBERS, screen.type); - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), screen.body.lines[0].source[0]); - EXPECT_EQ(RawSource(SOURCE_TYPE_SPECIAL,4), screen.body.lines[0].source[1]); -} - -bool loadFile(QByteArray & filedata, const QString & filename) -{ - QFile file(filename); - if (!file.open(QFile::ReadOnly)) { - qDebug() << QString("Error opening file %1:\n%2.").arg(filename).arg(file.errorString()); - return false; - } - filedata = file.readAll(); - qDebug() << "File" << filename << "read, size:" << filedata.size(); - return true; -} - -TEST(Conversions, ConversionX10From22) -{ - QByteArray byteBuffer; - -#define USE_ETX - -#if defined(USE_ETX) - EtxFormat etx(RADIO_TESTS_PATH "/model_22_x10.etx"); - RadioData radio; - EXPECT_EQ(true, etx.load(radio)); - - const GeneralSettings& settings = radio.generalSettings; - const ModelData& model = radio.models[0]; -#else - ASSERT_EQ(true, loadFile(byteBuffer, RADIO_TESTS_PATH "/model_22_x10/RADIO/radio.bin")); - - GeneralSettings settings; - EXPECT_NE(nullptr, loadRadioSettingsFromByteArray(settings, byteBuffer)); -#endif - - EXPECT_EQ(100, settings.calibSpanNeg[9]); - EXPECT_EQ(500, settings.calibMid[9]); - EXPECT_EQ(900, settings.calibSpanPos[9]); - - EXPECT_EQ(200, settings.calibSpanNeg[10]); - EXPECT_EQ(400, settings.calibMid[10]); - EXPECT_EQ(600, settings.calibSpanPos[10]); - - EXPECT_EQ(-23, settings.vBatMin); - EXPECT_EQ(20, settings.speakerVolume); - EXPECT_STREQ("en", settings.ttsLanguage); - EXPECT_STREQ("model1.bin", settings.currModelFilename); - - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); - EXPECT_EQ(FuncLogs, settings.customFn[0].func); - EXPECT_EQ(20, settings.customFn[0].param); - - EXPECT_EQ(RawSwitch(SWITCH_TYPE_ON), settings.customFn[1].swtch); - EXPECT_EQ(FuncVolume, settings.customFn[1].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_INPUT, 4+5+1).toValue(), settings.customFn[1].param); // RS - - EXPECT_STREQ("Tes", settings.switchName[0]); - EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); - - EXPECT_STREQ("BT_X10", settings.bluetoothName); - -#if !defined(USE_ETX) - byteBuffer.clear(); - ASSERT_EQ(true, loadFile(byteBuffer, RADIO_TESTS_PATH "/model_22_x10/MODELS/model1.bin")); - - ModelData model; - ASSERT_NE(nullptr, loadModelFromByteArray(model, byteBuffer)); -#endif - - EXPECT_STREQ("Test", model.name); - EXPECT_EQ(0, model.noGlobalFunctions); - EXPECT_EQ(0, model.beepANACenter); - EXPECT_EQ(80, model.mixData[0].weight); - EXPECT_EQ(RawSource(SOURCE_TYPE_MAX), model.mixData[2].srcRaw); // MAX - EXPECT_EQ(RawSource(SOURCE_TYPE_INPUT, 4+5), model.mixData[3].srcRaw); // LS - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM, 0), model.mixData[5].srcRaw); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[5].swtch); - EXPECT_EQ(900, model.limitData[0].max); // -100 - EXPECT_EQ(80, model.expoData[0].weight); - EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); // TR1 - EXPECT_EQ(0, model.logicalSw[0].val2); - EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY, 19*3).toValue(), model.logicalSw[1].val1); // TELE:20 - EXPECT_EQ(20, model.logicalSw[1].val2); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_VIRTUAL,1).toValue(), model.logicalSw[1].andsw); - EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); - EXPECT_STREQ("Tes", model.flightModeData[0].name); - EXPECT_EQ(10, model.flightModeData[0].gvars[0]); - EXPECT_STREQ("Tes", model.gvarData[0].name); - EXPECT_EQ(PULSES_PXX_XJT_D8, model.moduleData[0].protocol); - EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); - EXPECT_STREQ("Rud", model.inputNames[0]); - EXPECT_STREQ("Tes", model.sensorData[0].label); - EXPECT_EQ(10, model.sensorData[0].id); - EXPECT_EQ(10, model.sensorData[0].instance); - EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3 -} - -TEST(Conversions, ConversionX12SFrom22) -{ - QByteArray byteBuffer; - -#define USE_ETX - -#if defined(USE_ETX) - EtxFormat etx(RADIO_TESTS_PATH "/model_22_x12s.etx"); - RadioData radio; - EXPECT_EQ(true, etx.load(radio)); - - const GeneralSettings& settings = radio.generalSettings; - const ModelData& model = radio.models[0]; -#else - ASSERT_EQ(true, loadFile(byteBuffer, RADIO_TESTS_PATH "/model_22_x12s/RADIO/radio.bin")); - - GeneralSettings settings; - EXPECT_NE(nullptr, loadRadioSettingsFromByteArray(settings, byteBuffer)); -#endif - - EXPECT_EQ(-30, settings.vBatMin); - EXPECT_EQ(20, settings.speakerVolume); - EXPECT_STREQ("en", settings.ttsLanguage); - EXPECT_STREQ("model1.bin", settings.currModelFilename); - - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); - EXPECT_EQ(FuncLogs, settings.customFn[0].func); - EXPECT_EQ(20, settings.customFn[0].param); - - EXPECT_EQ(RawSwitch(SWITCH_TYPE_ON), settings.customFn[1].swtch); - EXPECT_EQ(FuncVolume, settings.customFn[1].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_INPUT, 4+5+1).toValue(), settings.customFn[1].param); // RS - - EXPECT_STREQ("Tes", settings.switchName[0]); - EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); - - EXPECT_STREQ("BT", settings.bluetoothName); - -#if !defined(USE_ETX) - byteBuffer.clear(); - ASSERT_EQ(true, loadFile(byteBuffer, RADIO_TESTS_PATH "/model_22_x10/MODELS/model1.bin")); - - ModelData model; - ASSERT_NE(nullptr, loadModelFromByteArray(model, byteBuffer)); -#endif - - EXPECT_STREQ("Test", model.name); - EXPECT_EQ(0, model.noGlobalFunctions); - EXPECT_EQ(0, model.beepANACenter); - EXPECT_EQ(80, model.mixData[0].weight); - EXPECT_EQ(RawSource(SOURCE_TYPE_MAX), model.mixData[2].srcRaw); // MAX - EXPECT_EQ(RawSource(SOURCE_TYPE_INPUT, 4+5), model.mixData[3].srcRaw); // LS - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM, 0), model.mixData[5].srcRaw); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[5].swtch); - EXPECT_EQ(900, model.limitData[0].max); // -100 - EXPECT_EQ(80, model.expoData[0].weight); - EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); // TR1 - EXPECT_EQ(0, model.logicalSw[0].val2); - EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY, 19*3).toValue(), model.logicalSw[1].val1); // TELE:20 - EXPECT_EQ(20, model.logicalSw[1].val2); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_VIRTUAL,1).toValue(), model.logicalSw[1].andsw); - EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); - EXPECT_STREQ("Test", model.flightModeData[0].name); - EXPECT_EQ(10, model.flightModeData[0].gvars[0]); - EXPECT_STREQ("Tes", model.gvarData[0].name); - EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); - EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); - EXPECT_STREQ("Rud", model.inputNames[0]); - EXPECT_STREQ("Tes", model.sensorData[0].label); - EXPECT_EQ(10, model.sensorData[0].id); - EXPECT_EQ(10, model.sensorData[0].instance); - EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3 -} diff --git a/companion/src/tests/flex_switches_test.cpp b/companion/src/tests/flex_switches_test.cpp new file mode 100644 index 00000000000..128e1167d15 --- /dev/null +++ b/companion/src/tests/flex_switches_test.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +// Flex switches (FL1/FL2) are not listed in the hwdefs json, so Companion adds +// them itself (BoardJson::afterLoadFixups). The set of boards must match the +// firmware targets that define FLEXSW (MAX_FLEX_SWITCHES); a board missing +// here loses FL1/FL2 and everything indexed after them. + +#include "gtests.h" + +#include "firmwares/eeprominterface.h" +#include "firmwares/boardjson.h" +#include "firmwares/boards.h" + +namespace { + +struct FlexCase { + const char* flavour; + int stdSwitches; // switches in the hwdefs json, including function switches +}; + +class FlexSwitchesBoard : public ::testing::TestWithParam +{ + protected: + void SetUp() override + { + Firmware::setCurrentVariant(Firmware::getFirmwareForFlavour(GetParam().flavour)); + ASSERT_NE(getCurrentFirmware(), nullptr) + << GetParam().flavour << " firmware must be registered for this test"; + } +}; + +} // namespace + +// Firmware indexes flex switches straight after the physical switches +// (switchGetMaxSwitches()), which is what the simulator and YAML rely on. +TEST_P(FlexSwitchesBoard, FlexSwitchesFollowPhysicalSwitches) +{ + const Board::Type board = getCurrentBoard(); + const int n = GetParam().stdSwitches; + + EXPECT_EQ(Boards::getCapability(board, Board::FlexSwitches), 2); + EXPECT_EQ(Boards::getSwitchYamlIndex(QStringLiteral("FL1"), BoardJson::YLT_REF, board), n); + EXPECT_EQ(Boards::getSwitchYamlIndex(QStringLiteral("FL2"), BoardJson::YLT_REF, board), n + 1); +} + +INSTANTIATE_TEST_SUITE_P( + FlexBoards, FlexSwitchesBoard, + ::testing::Values(FlexCase{"tx16s", 10}, FlexCase{"tx16smk3", 16}, + FlexCase{"f16", 8}, FlexCase{"v16", 10}, FlexCase{"mt12", 4}), + [](const ::testing::TestParamInfo& i) { return std::string(i.param.flavour); }); + +// Radios whose firmware has MAX_FLEX_SWITCHES == 0 (no FLEXSW) must not gain +// any, even though most of them have flex inputs. +TEST(FlexSwitchesAbsent, BoardsWithoutFlexSwitches) +{ + for (const char* flavour : {"x10", "t16", "t18", "st16", "pl18"}) { + Firmware* fw = Firmware::getFirmwareForFlavour(flavour); + ASSERT_NE(fw, nullptr) << flavour << " firmware must be registered for this test"; + Firmware::setCurrentVariant(fw); + EXPECT_EQ(Boards::getCapability(getCurrentBoard(), Board::FlexSwitches), 0) << flavour; + } +} diff --git a/companion/src/tests/gtests.cpp b/companion/src/tests/gtests.cpp index e504e60905b..8883c6f4707 100644 --- a/companion/src/tests/gtests.cpp +++ b/companion/src/tests/gtests.cpp @@ -29,6 +29,7 @@ #include "storage.h" #include "opentxinterface.h" #include "customdebug.h" +#include "firmwares/boardfactories.h" using ::testing::TestEventListener; @@ -129,7 +130,10 @@ int main(int argc, char **argv) { QCoreApplication app(argc, argv); + Q_INIT_RESOURCE(hwdefs); + CustomDebug::setFilterRules(); + gBoardFactories = new BoardFactories(); registerStorageFactories(); registerOpenTxFirmwares(); diff --git a/companion/src/translations/companion_cs.ts b/companion/src/translations/companion_cs.ts index a6d3a960119..cf4d7a571e1 100644 --- a/companion/src/translations/companion_cs.ts +++ b/companion/src/translations/companion_cs.ts @@ -1019,33 +1019,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1056,279 +1056,279 @@ Error description: %4 Boards - + Left Horizontal Levá horizontální - + Left Vertical Levá vertikální - + Right Vertical Pravá vertikální - + Right Horizontal Pravá horizontální - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global Globální - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Spínač - + Flight Let - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Žádný - + Pot - + Pot with detent Pot s aretací - + 2 Positions Toggle 2 pozice bez aretace - + 2 Positions 2 pozice - + 3 Positions 3 pozice - + Function Funkce - + Standard Rastr-X - + Small Malá - + Both Obě @@ -2478,123 +2478,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Spínač - + Action Akce - + Parameters Hodnota - + Repeat - + Enable Povolit - + Popup menu available - + SF%1 - + GF%1 - + GV GP - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy Kopírovat - + Cut Vyjmout - + Paste Vložit - + Clear Vymazat - + Insert Vložit - + Delete Odstranit - + Move Up Posunout nahoru - + Move Down Posunout dolů - + Clear All Vyčistit vše - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3479,426 +3479,451 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available Funkce Zámek kanálu není dostupná - + Possibility to enable FAI MODE (no telemetry) at field Možnost povolit FAI MODE v menu rádia. FAI je soutěžní mód (www.fai.org), zablokuje vario, zobrazení telemetrie a funkce hlasového hlášení. - + FAI MODE (no telemetry) always enabled FAI MODE vždy aktivní (nelze vypnout v menu rádia) FAI je soutěžní mód (www.fai.org), zablokuje vario, zobrazení telemetrie a funkce hlasového hlášení. - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Odstranit funkce pro heli a nastavení typu mechaniky - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Odstranit Globální proměnné - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font Použít alternativní znakovou sadu písma (jiný font) - + FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Podpora pro vibrační modul - + FrSky Taranis X9E - + Confirmation before radio shutdown Přidá potvrzování před vypnutím rádia - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5065,433 +5090,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Spínač - - + + None Žádný - + Internal Interní - + Ask - + Per model - + Internal + External - + External - - - + + + OFF Vypnuto - + Enabled - + Telemetry Telemetrie - + Trainer Trenér - + Telemetry Mirror - + Telemetry In - + SBUS Trainer SBUS trenér - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug - + SpaceMouse - + External module - + mA - + Normal Normální - + OneBit - + Trims only Pouze trimy - + Keys only Pouze tlačítka - + Switchable Přepinatelné - + Global Globální - + Mode 1 (RUD ELE THR AIL) Mód1 (Směr.Výšk.Plyn.Křid) - + Mode 2 (RUD THR ELE AIL) Mód2 (Směr.Plyn.Výšk.Křid) - + Mode 3 (AIL ELE THR RUD) Mód3 (Křid.Výšk.Plyn.Směr) - + Mode 4 (AIL THR ELE RUD) Mód4 (Křid.Plyn.Výšk.Směr) - + Keys Klávesy - + Controls - + Keys + Controls - + ON Zap - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5554,10 +5579,20 @@ Are you sure? Časový posun od UTC - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5584,7 +5619,7 @@ Are you sure? Nastavit RTC - + Vario pitch at max Tón varia na maximu @@ -5681,7 +5716,7 @@ Are you sure? - + ms @@ -5712,22 +5747,6 @@ Are you sure? Toto je volba spínače který zapne podsvětlení (pokud je nainstalováno). - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Kontrast LCD panelu</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Hodnoty mohou být 20-45</span></p></body></html> - Backlight Brightness @@ -5759,7 +5778,7 @@ p, li { white-space: pre-wrap; } Jas vypnutého podsvětlení - + Mode selection: Mode 1: @@ -5800,7 +5819,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Pořadí kanálů</p><p><br/></p><p>Definuje výchozí pořadí kanálů použité při vytvoření nového modelu.</p></body></html> @@ -5810,12 +5829,12 @@ Mode 4: - + RSSI Poweroff Warning - + Low EEPROM Warning @@ -5870,7 +5889,7 @@ Mode 4: - + Favorites matching @@ -5905,7 +5924,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5914,218 +5933,218 @@ Acceptable values are 3v..12v Použitelné hodnoty jsou 3v..12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 - + us - + Audio - + Trainer Trenér - + DMS - + USB Mode - + Power Off Delay - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode Režim kloboučků - + Stick Mode Výchozí mód vysílačky - + Metric Metrické - + Imperial Imperiální - + Default Channel Order Výchozí pořadí kanálů - + GPS Coordinates Souřadnice GPS - + Min - - + + v V - + Max - + Inactivity Timer Časovač nečinnosti - + Show Splash Screen on Startup Zobrazit úvodní logo - + Contrast Kontrast - + Battery Meter Range Rozsah ukazatele baterie - + Haptic Strength Síla vibrací - + LCD Display Type Typ LCD zobrazovače - + "No Sound" Warning Upozornění na vypnutý zvuk - + Battery Warning Alarm baterie - + Haptic Length Délka vibrací - + MAVLink Baud Rate Přenosová rychlost MAVLink - - + + Quiet Tichý - + Only Alarms Jen alarm - - + + No Keys Bez kláves - - + + All Vše - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Pokud není nastaveno na nulu, bude zapnuto zvukové upozornění, že jste rádio nechali bez povšimnutí nastavený počet minut. @@ -6140,13 +6159,13 @@ Použitelné hodnoty jsou 3v..12v - - + + min - + --- @@ -6156,116 +6175,116 @@ Použitelné hodnoty jsou 3v..12v - - + + 0s - - + + 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6280,67 +6299,67 @@ p, li { white-space: pre-wrap; } - - + + X-Short Extra krátký - - + + Short Krátký - - + + Normal Normální - - + + Long Dlouhý - - + + X-Long Extra dlouhý - + NMEA - + Play Delay (switch mid position) Filtr poloh přepínače - + Measurement Units Měrné jednotky - + Haptic Mode Mód vibrací - + Beeper Length Délka zvuku - + Beeper Mode Mód zvuku - + Beeper volume 0 - Quiet. No beeps at all. @@ -6357,14 +6376,14 @@ p, li { white-space: pre-wrap; } 4 - Extra Hlasitý. - + Alarms Only Jen alarmy - - - + + + 1s @@ -6372,7 +6391,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6537,94 +6572,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source Zdroj - + Customisable Switches - + Start První kanál - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: Název zařízení: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter ADC filtr @@ -6634,82 +6684,83 @@ Are you sure ? - + Mute if no sound Ztlumení, pokud není slyšet zvuk - + Internal RF - - + - - + + + Type - - - - + + + + Name Název - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset Ofset proudu - + Screen - - + + + Invert Invertovat - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11118,17 +11169,17 @@ p, li { white-space: pre-wrap; } Žádné pulzy - + Bind on channel - + Options - + Type @@ -11599,7 +11650,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12350,13 +12401,13 @@ s - + OFF Vypnuto - + ON Zap @@ -12376,37 +12427,37 @@ s Pln* - + One One(výběr modelu) - + Act - + ---- - + Telemetry Telemetrie - + Trn - + Switch Spínač - + None Žádný @@ -16217,22 +16268,22 @@ Timestamp TrainerMix - + OFF Vypnuto - + += (Sum) += (Sečíst) - + := (Replace) := (Nahradit) - + CH%1 @@ -17968,19 +18019,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17989,7 +18040,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_da.ts b/companion/src/translations/companion_da.ts index bc6a200d3b5..d5fd08c1d5d 100644 --- a/companion/src/translations/companion_da.ts +++ b/companion/src/translations/companion_da.ts @@ -1020,33 +1020,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition Indlæs hardware specifikation - + Board: %1 Error: Unable to load file %2 Hardware: %1 fejl: Kan ikke indlæse fil %2 - + Board: %1 Error: Unable to open file %2 Hardware: %1 fejl: Kan ikke åbne fil %2 - + Board: %1 Error: Unable to read file %2 Hardware: %1 fejl: Kan ikke læse fil %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1057,279 +1057,279 @@ Error description: %4 Boards - + Left Horizontal Venstre horisontal - + Left Vertical Venstre vertikal - + Right Vertical Højre vertikal - + Right Horizontal Højre horisontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Ingen - + Global Global - + Function Funktion - + Pot Drejekontakt - + Pot with detent Drejekontakt med midtklik - + Slider Skyder - + Multipos Switch Multipos kontakt - + Axis X Akse X - + Axis Y Akse Y - + Switch Kontakt - + Flight Flyve - + Drive Kørsel - + 2 Positions Toggle 2 position skifter - + 2 Positions 2 positioner - + 3 Positions 3 positioner - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - + Standard Standard - + Small Små - + Both Begge @@ -2481,124 +2481,124 @@ Vil du indlæse indstillinger fra en fil? CustomFunctionsPanel - + Switch Udløser - + Parameters Parametre - + Action Handling - + SF%1 SF%1 - + GF%1 GF%1 - + Popup menu available Popupmenu mulig - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) Fejl ved afspilning af lyd, lyd fil er muligvis allerede åbnet. (Fejl: %1 [%2]) - + Unable to find or open sound file: %1 Kan ikke finde eller åbne lyd fil: %1 - + GV GV - + Repeat Gentag - + Enable Aktiver - + Delete Function. Are you sure? Slet funktion. Er du sikker? - + Cut Special Function. Are you sure? Klip ud specialfunktion. Er du sikker? - + Copy Kopier - + Cut Klip ud - + Paste Sæt ind - + Clear Slet - + Insert Indsæt - + Delete Slet - + Move Up Flyt op - + Move Down Flyt ned - + Clear All Nulstil alt - + Clear Function. Are you sure? Nulstil special funktion. Er du sikker? - + Clear all Functions. Are you sure? Nulstil alle special funktioner. Er du sikker? @@ -3489,424 +3489,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available Ingen kanal overskrivnings funktion findes - + Possibility to enable FAI MODE (no telemetry) at field Muligt at styre FAI TILSTAND (ingen telemetri) på feltet - + FAI MODE (no telemetry) always enabled FAI TILSTAND (ingen telemetri) altid aktiv - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Fjerner understøttelse af FrSky D8-protokol, som ikke er lovlig i EU, efter 1. januar 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Aktiver helikopter menu og søtte til rotor mix - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Deaktiver globale variable - + Support internal GPS Intern GPS-modul - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen Aktiver tilpasning af Lua script - + Use alternative SQT5 font Anvend SQT5 font - + FrSky Taranis X9D+ FrSky Taranis X9D+ - - + + Disable RAS (SWR) Aktiver RAS (SWR) - + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed Vibratormodul er installeret - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown Bekræft før radio slukkes - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X7 / X7S FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite FrSky Taranis X-Lite - + FrSky Horus X10 / X10S FrSky Horus X10 / X10S - + FrSky Horus X12S FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T20 Jumper T20 - + Fatfish F16 - + FlySky PA01 - + FlySky PL18 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 Jumper T14 - + Jumper T15 Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 V2 - + Radiomaster Pocket - + + Senduwing H17 + + + + Enable non certified firmwares Tillad ikke certificeret firmware - + FrSky Taranis X9D+ 2019 FrSky Taranis X9D+ 2019 - + FrSky Taranis X9-Lite FrSky Taranis X9-Lite - + FrSky Taranis X-Lite S/PRO FrSky Taranis X-Lite S/PRO - - + + Support for ACCESS internal module replacement Understøttelse af internt ACCESS modul - + Enable AFHDS3 support Aktiver AFHDS3 support - + Enable AFHDS2A support Aktiver AFHDS2A support - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - + FrSky Horus X10 Express / X10S Express - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module Understøttelse af MULTI internt modul - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module Understøttelse af bluetooth modul - + Radiomaster MT12 - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed Vælg hvis internt ELRS modul er installeret - + Radiomaster T8 - + Allow bind using bind key Tillad tilslutning med tilslut tast - + Radiomaster TX16S / SE / Hall / Masterfire - - + + Support hardware mod: FlySky Paladin EV Gimbals Understøttelse af hardware modul: FlySky Paladin EV Gimbals - + Jumper T18 Jumper T18 - + FlySky NV14 - + FlySky EL18 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Radiomaster Boxer @@ -5083,433 +5108,433 @@ Er du sikker? GeneralSettings - + Radio Settings Radio indstillinger - + Hardware Kontroller - + Internal Module Internt modul - + Axis & Pots Akse & drejekontakt - + Axis Akse - + Pot Drejekontakt - + Switches Kontakter - - + + Flex Switch Fleksibel kontakt - - + + Function Switch Funktion kontakt - - + + Switch Kontakt - - + + None Ingen - + Internal Intern - + Ask Spørg - + Per model Per model - + Internal + External Intern + Ekstern - - - + + + OFF FRA - + Enabled Aktiveret - + Telemetry Telemetri - + Trainer Træner - + Telemetry Mirror Telemetri spejlet - + Telemetry In Telemetri ind - + SBUS Trainer SBUS-træner - + SBUS Trainer Inverted - + LUA LUA - + CLI CLI - + GPS GPS - + Debug Debug - + SpaceMouse SpaceMouse - + mA mA - + Normal Normal - + OneBit OneBit - + Trims only Kun trim - + Keys only Kun knap - + Switchable Trim / Knap - + Global Global - + Mode 1 (RUD ELE THR AIL) Mode 1 (SID HØJ GAS KRÆ) - + Mode 2 (RUD THR ELE AIL) Mode 2 (SID GAS HØJ KRÆ) - + Mode 3 (AIL ELE THR RUD) Mode 3 (KRÆ HØJ GAS SID) - + Mode 4 (AIL THR ELE RUD) Mode 4 (KRÆ GAS HØJ SID) - + Keys Knapper - + Controls Styring - + Keys + Controls Knap + styring - + ON TIL - + Open Quick Menu Åbn kvik menu - + MANAGE MODELS Administrer modeller - + Model Setup - Model Settings Model - Indstillinger - + Model Setup - Flight Modes Model - Flyve tilstande - + Model Setup - Inputs Model - Indgange - + Model Setup - Mixes Model - Mix - + Model Setup - Outputs Model - Udgange - + Model Setup - Curves Model - Kurver - + Model Setup - Global Variables Model - Globale variable - + Model Setup - Logical Switches Model - Logiske funktioner - + Model Setup - Special Functions Model - Special funktioner - + Model Setup - Mixer Scripts Model - Mix programmer - + Model Setup - Telemetry Model - Telemetri - + Model Setup - Notes Model - Noter - + Radio Setup - Radio Settings Radio - Indstillinger - + Radio Setup - Global Functions Radio - Globale funktioner - + Radio Setup - Trainer Radio - Træner - + Radio Setup - Hardware Radio - Hardware - + Radio Setup - About EdgeTX Radio - Om EdgeTx - + UI Setup - Themes UI - Temaer - + UI Setup - Top Bar UI - Top bjælke - + UI Setup - Current Screen UI - Aktuelle skærm - + UI Setup - Screen 1 UI - Skærm 1 - + UI Setup - Screen 2 UI - Skærm 2 - + UI Setup - Screen 3 UI - Skærm 3 - + UI Setup - Screen 4 UI - Skærm 4 - + UI Setup - Screen 5 UI - Skærm 5 - + UI Setup - Screen 6 UI - Skærm 6 - + UI Setup - Screen 7 UI - Skærm 7 - + UI Setup - Screen 8 UI - Skærm 8 - + UI Setup - Screen 9 UI - Skærm 9 - + UI Setup - Screen 10 UI - Skærm 10 - + UI Setup - Add Screen UI - Ny skærm - + Tools - Apps Værktøj - App - + Tools - Storage Værktøj - Lager - + Tools - Flight Reset Værktøj - Flyvning nulstil - + Tools - Channel Monitor Værktøj - Kanal monitor - + Tools - Logical Switch Monitor Værktøj - Logisk kontakt monitor - + Tools - Statistics Værktøj - Statistik - + Tools - Debug Værktøj - Debug - + External Eksternt - + External module Eksternt modul @@ -5522,7 +5547,7 @@ Er du sikker? Form - + GPS Coordinates GPS koordinater @@ -5532,12 +5557,12 @@ Er du sikker? Højttaler tone (kun højttaler) - + Measurement Units Måleenheder - + NMEA NMEA @@ -5552,12 +5577,12 @@ Er du sikker? Tidsdifferens til UTC - + Metric Metrisk - + Imperial Imperiel @@ -5582,32 +5607,32 @@ Er du sikker? Europa - - + + X-Short Ekstra kort - - + + Short Kort - - + + Normal Normal - - + + Long Lang - - + + X-Long Ekstra lang @@ -5622,12 +5647,12 @@ Er du sikker? Farve 2 - + Beeper Length Længde af summetone - + Beeper Mode Summer tilstand @@ -5637,7 +5662,7 @@ Er du sikker? Højdemåler lyd ved nulpunkt - + Beeper volume 0 - Quiet. No beeps at all. @@ -5654,54 +5679,38 @@ Er du sikker? 4 - Ekstra højt. - - + + Quiet Stille - + Alarms Only Kun alarm - - + + No Keys Ingen knap tryk - - + + All Alle - + Only Alarms Kun alarm - + Haptic Mode Vibration tilstand - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Kontrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Værdier mellem 20 og 45</span></p></body></html> - @@ -5709,12 +5718,12 @@ p, li { white-space: pre-wrap; } Hz - + Battery Warning Batteri advarsel - + Vario pitch at max Højdemåler lyd ved max højde @@ -5730,7 +5739,7 @@ p, li { white-space: pre-wrap; } - + ms ms @@ -5760,12 +5769,12 @@ p, li { white-space: pre-wrap; } Farve baggrundslys - + Trainer Poweroff Warning Træner: Advarsel ved sluk - + Contrast LCD-kontrast @@ -5845,73 +5854,83 @@ p, li { white-space: pre-wrap; } - + + Charge while radio on + + + + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Efter det angivne antal minutter med inaktivitet lyder et advarselssignal. 0 slår fra. - - + + min min - + Standard Standard - + Optrex - + 4800 Baud 4800 Baud - + 9600 Baud 9600 Baud - + 14400 Baud 14400 Baud - + 19200 Baud 19200 Baud - + 38400 Baud 38400 Baud - + 57600 Baud 57600 Baud - + 76800 Baud 76800 Baud - + 115200 Baud 115200 Baud - + + Key lock + + + + Power Auto Off Strøm slukkes efter - + One log per day Log skiftes hver dag @@ -5921,7 +5940,7 @@ p, li { white-space: pre-wrap; } Lys aktivering - + Show Splash Screen on Startup Vis startbillede @@ -5935,10 +5954,10 @@ p, li { white-space: pre-wrap; } - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5963,7 +5982,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tavs advarsel - advarer hvis summer er sat i stille tilstand</p></body></html> - + MAVLink Baud Rate MAVLink Baud Rate @@ -5973,66 +5992,66 @@ p, li { white-space: pre-wrap; } Højttaler volume - + Haptic Length Vibration tid - + Inactivity Timer Inaktivitets ur - + --- ---- - - - + + + 2s 2s - - - + + + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + "No Sound" Warning Advarsel for slukket lyd - + Haptic Strength Vibration styrke @@ -6057,12 +6076,12 @@ p, li { white-space: pre-wrap; } Lydstyrke baggrund - + Stick Mode Pind tilstand - + Default Channel Order Kanal rækkefølge @@ -6072,7 +6091,7 @@ p, li { white-space: pre-wrap; } FAI tilstand - + Mode selection: Mode 1: @@ -6113,7 +6132,7 @@ Tilstand 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanalordning</p><p><br/></p><p>Kanal rækkefølge på en ny model.</p></body></html> @@ -6153,7 +6172,7 @@ Tilstand 4: Styring af model layout - + Favorites matching Farvorit match @@ -6188,55 +6207,55 @@ Tilstand 4: Valgfri match - - + + 0s 0s - - + + 0.5s 0.5s - + LCD Display Type - + Power ON/OFF Haptic Strøm TIL/FRA vibrator - + Play Delay (switch mid position) Indsæt forsinkelse (kontakt i midt position) - + Play Startup Sound Afspil start lyd - + PPM Units PPM enhed - - + + 0.-- - + 0.0 0.0 - + us @@ -6251,23 +6270,23 @@ Tilstand 4: Juster RTC - + Min Min - - + + v v - + Max Max - + Battery Meter Range Batteri måler grænseværdier @@ -6287,43 +6306,43 @@ Tilstand 4: Hvis du aktiverer FAI virker kun RSSI og RxBt-sensorer. Dette kan ikke ændres i radioen. - + RSSI Poweroff Warning RSSI advarsel ved sluk - + Low EEPROM Warning Advarsel for kun lidt plads i EEPROM - + USB Mode USB tilstand - - + + Ask on Connect Spørg ved tilslutning - + Joystick (HID) USB joystick (HID) - + USB Mass Storage USB lager (SD) - + USB Serial (CDC) USB seriel (CDC) - + Hats Mode Joystik indstilling @@ -6333,32 +6352,32 @@ Tilstand 4: Ejer ID for registrering - + Power On Delay Forsinkelse ved opstart - + Jack Mode Stik tilstand - + Audio Audio - + Trainer Træner - + DMS GMS - + Power Off Delay Forsinkelse ved sluk af radio @@ -6373,7 +6392,7 @@ Tilstand 4: Drejekontakt tilstand - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -6394,9 +6413,9 @@ Værdier mellem 5 og 12 volt accepteres Vælg, hvis du ønsker hurtigt at skifte model på Model fane (ved længe tryk kommer du til model edit menu). - - - + + + 1s 1s @@ -6404,7 +6423,23 @@ Værdier mellem 5 og 12 volt accepteres GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6571,131 +6606,147 @@ Er du sikker? Død zone - + + IMU + + + + + X + X + + + + Y + + + + Pots Drejekontakter - + Switches Kontakter - + Flex Switches Fleksible kontakter - + Source Kilde - + Customisable Switches Kontakter der kan tilpasses - + Start Start - + Off color Sluk farve - - + + Lua override Lua overskriv - + On color Tænd farve - + RTC Battery Check RTC batteri kontrol - + Bluetooth Bluetooth - + Device Name: Enheds navn: - + Sample Mode Registererings tilstand - + Serial ports Seriel port - + Power Spænding - + USB-VCP USB-data (VCP) - + Current Offset - + - + ADC Filter ADC-filter - + Mute if no sound Audio fra, hvis der ikke gives lyd - + S.Port Power S.Port spænding - + Screen Skærm - - + + + Invert Omvendt (INV) - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! Advarsel: At ændre det interne modul kan betyde, at den anvendte protokol ødelægges for model! - + Internal RF Internt RF @@ -6706,44 +6757,44 @@ Er du sikker? - - - - + + + + Name Navn - - + - - + + + Type Type - + Baudrate: Baud hastighed: - + Antenna: Antenne: - + External RF Eksternt RF - + AUX1 - + AUX2 @@ -11148,17 +11199,17 @@ p, li { white-space: pre-wrap; } Ingen pulsering - + Bind on channel Tilslut kanal - + Options Tilvalg - + Type Type @@ -11629,7 +11680,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate Servo opdaterings frekvens @@ -12272,7 +12323,7 @@ x - + OFF FRA @@ -12406,7 +12457,7 @@ x - + ON TIL @@ -12426,37 +12477,37 @@ x THt - + One En - + ---- ---- - + Telemetry Telemetri - + Trn - + Switch Kontakt - + None Ingen - + Act Act @@ -16286,22 +16337,22 @@ Timestamp TrainerMix - + OFF FRA - + += (Sum) += (Sum) - + := (Replace) := (Erstat) - + CH%1 KA%1 @@ -18042,7 +18093,7 @@ Indlæs dem nu? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. @@ -18051,12 +18102,12 @@ Model and radio settings may be corrupted if you continue. Model og radio indstillinger kan blive ødelagt, hvis du fortsætter. - + Read Radio Settings Indlæser radio indstillinger - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18069,7 +18120,7 @@ Aktuelt firmware profil Board anvendes. Vil du fortsætte? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_de.ts b/companion/src/translations/companion_de.ts index 6586c15469a..03069a63100 100644 --- a/companion/src/translations/companion_de.ts +++ b/companion/src/translations/companion_de.ts @@ -1023,33 +1023,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1060,279 +1060,279 @@ Error description: %4 Boards - + Left Horizontal Links Horizontal - + Left Vertical Links Vertikal - + Right Vertical Rechts Vertikal - + Right Horizontal Rechts Horizontal - + Aux. 1 Aux1 - + Aux. 2 Aux2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Schalter - + Flight Flug - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Kein - + Pot - + Pot with detent Poti mit Raste - + 2 Positions Toggle 2 Position Taster - + 2 Positions 2 Positionen - + 3 Positions 3 Positionen - + Function Funktion - + Standard Standard - + Small Klein - + Both Beide @@ -2483,123 +2483,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Schalter - + Action Aktion - + Parameters Parameter - + Repeat - + Enable Freigabe - + Popup menu available Popup-Menü verfügbar - + SF%1 SF%1 - + GF%1 GF%1 - + GV GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) Beim Abspielen der Audio-Datei kam es zu einem Fehler, möglicherweise ist sie bereits geöffnet. (Err: %1 [%2]) - + Unable to find or open sound file: %1 Diese Audio-Datei %1 konnte nicht gefunden bzw. geöffnet werden: - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy Kopieren - + Cut Ausschneiden - + Paste Einfügen - + Clear Löschen - + Insert Einfügen - + Delete Löschen - + Move Up Nach oben - + Move Down Nach unten - + Clear All Alles löschen - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3482,424 +3482,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available Keine Überschreibefunktion verfügbar - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Sperrt das D8 Protokoll wenn ausgewählt, denn D8 ist seit Jan 2015 in der EU nicht mehr zulässig - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Kein Helimenü und zykl. Mischer - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Keine Globale Variablen - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font Alternative SQT5 Schrift verwenden - + FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Haptikmodul installiert - + FrSky Taranis X9E - + Confirmation before radio shutdown Ausschalten bestätigung vor Sender runterfährt - + Horus gimbals installed (Hall sensors) Horus Knüppel installiert(Hallgeber) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5066,433 +5091,433 @@ Are you sure? GeneralSettings - + Radio Settings Sender Grundeinstellungen - + Hardware Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Schalter - - + + None Kein - + Internal Interne - + Ask - + Per model - + Internal + External - + External Externe - - - + + + OFF AUS - + Enabled - + Telemetry Telemetrie - + Trainer Schüler Signaleingang - + Telemetry Mirror - + Telemetry In - + SBUS Trainer SBus Schüler - + SBUS Trainer Inverted - + LUA - + CLI - + GPS GPS - + Debug Debugmode - + SpaceMouse - + External module - + mA mA - + Normal Normal - + OneBit - + Trims only Nur Trimmung - + Keys only Nur Tasten - + Switchable Umschaltbar - + Global Global - + Mode 1 (RUD ELE THR AIL) Mode 1 (Seite Höhe Gas Quer) - + Mode 2 (RUD THR ELE AIL) Mode 2 (Seite Gas Höhe Quer) - + Mode 3 (AIL ELE THR RUD) Mode 3 (Quer Höhe Gas Seite) - + Mode 4 (AIL THR ELE RUD) Mode 4 (Quer Gas Höhe Seite) - + Keys Tasten - + Controls - + Keys + Controls - + ON EIN - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5555,10 +5580,20 @@ Are you sure? Zeitverschiebung von UTC - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5585,7 +5620,7 @@ Are you sure? Uhr einstellen - + Vario pitch at max Vario Tonhöhe bei Max-Steig @@ -5683,7 +5718,7 @@ und nach einer eingestellten Zeit in Sekunden ausgeschaltet. - + ms ms @@ -5715,18 +5750,6 @@ und nach einer eingestellten Zeit in Sekunden ausgeschaltet. Dies ist der Schalter für das Anschalten der Hintergrundbeleuchtung (falls eingebaut). - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - LCD Display Kontrast -Die Werte können sein @@ -5759,7 +5782,7 @@ Die Werte können sein Resthelligkeit wenn Beleuchtung AUS - + Mode selection: Mode 1: @@ -5800,7 +5823,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanalreihenfolge</p><p><br/></p><p>Definiert die Reihenfolge der Mischer wenn ein neues Modell erzeugt wird.</p></body></html> @@ -5810,12 +5833,12 @@ Mode 4: Wenn man FAI auswählt gibt es nur noch RSSI und RxBat Werte. Diese Funktion kann dann im Sendern nicht mehr deaktiviert werden. - + RSSI Poweroff Warning RSSI Poweroff Warnung - + Low EEPROM Warning Low EEPROM Warnung @@ -5870,7 +5893,7 @@ Mode 4: - + Favorites matching @@ -5905,7 +5928,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5916,218 +5939,218 @@ Legt die Schaltschwelle fest wann die Warnung für die Akku-Unterspannungmeldung Werte liegen zwischen 3-12V - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Audio - + Trainer Schüler Signaleingang - + DMS - + USB Mode - + Power Off Delay - - + + Ask on Connect Nachfragen beim Verbinden - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) USB Serial (CDC) - + Hats Mode Joystick Modus - + Stick Mode Knüppelmodus - + Metric Metrisch - + Imperial Zöllig - + Default Channel Order Voreingest. Kanalordnung - + GPS Coordinates GPS Koordinaten - + Min Min - - + + v V - + Max Max - + Inactivity Timer Inaktivitätstimer - + Show Splash Screen on Startup Zeige Startbild an - + Contrast LCD Kontrast - + Battery Meter Range Akku Ladestand - + Haptic Strength Haptik Stärke - + LCD Display Type LCD Display Typ - + "No Sound" Warning Keine Sound Warnung - + Battery Warning Sender Akkuwarnung - + Haptic Length Haptik Länge - + MAVLink Baud Rate Mav Link Baudrate - - + + Quiet Stumm - + Only Alarms Nur Alarme - - + + No Keys Kein Tastenpieps - - + + All Alles - + Standard Standard - + Optrex Optrex LCD - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Falls ungleich 0 ertönt ein Piepston wenn der Sender für eine bestimmte Anzahl Minuten nicht bedient wurde. @@ -6142,13 +6165,13 @@ Werte liegen zwischen 3-12V - - + + min Min - + --- --- @@ -6158,116 +6181,116 @@ Werte liegen zwischen 3-12V - - + + 0s 5x {0s?} - - + + 0.5s 5x {0.5s?} - - - + + + 2s 2s - - - + + + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud 4800 Baud - + 9600 Baud 9600 Baud - + 14400 Baud 14400 Baud - + 19200 Baud 19200 Baud - + 38400 Baud 38400 Baud - + 57600 Baud 57600 Baud - + 76800 Baud 76800 Baud - + 115200 Baud 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6288,67 +6311,67 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte - - + + X-Short X-kurz - - + + Short Kurz - - + + Normal Normal - - + + Long Lang - - + + X-Long X-lang - + NMEA NMEA - + Play Delay (switch mid position) Schalter Mittenpos. verzögern - + Measurement Units Maßeinheiten - + Haptic Mode Haptik Modus - + Beeper Length Piepser Länge - + Beeper Mode Modus Piepser - + Beeper volume 0 - Quiet. No beeps at all. @@ -6365,14 +6388,14 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte 4 - Sehr laut. - + Alarms Only Nur Alarme - - - + + + 1s 1s @@ -6380,7 +6403,23 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6547,94 +6586,109 @@ Sind Sie sicher? - + + IMU + + + + + X + X + + + + Y + Y + + + Pots - + Switches - + Flex Switches - + Source Quelle - + Customisable Switches - + Start Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth Bluetooth - + Device Name: Gerätename: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter ADC-Filter @@ -6644,82 +6698,83 @@ Sind Sie sicher? - + Mute if no sound Geräuschunterdrückung - + Internal RF - - + - - + + + Type Typ - - - - + + + + Name Name - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset Strom Offset - + Screen - - + + + Invert Invertieren - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11124,17 +11179,17 @@ p, li { white-space: pre-wrap; } keine Pulse - + Bind on channel - + Options - + Type Typ @@ -11605,7 +11660,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12376,13 +12431,13 @@ r - + OFF AUS - + ON EIN @@ -12402,37 +12457,37 @@ r GSt - + One Einmal - + Act - + ---- ---- - + Telemetry Telemetrie - + Trn - + Switch Schalter - + None Kein @@ -16241,22 +16296,22 @@ Timestamp TrainerMix - + OFF AUS - + += (Sum) += (Add) - + := (Replace) := (Ersetzen) - + CH%1 CH%1 @@ -17993,19 +18048,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18014,7 +18069,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_en.ts b/companion/src/translations/companion_en.ts index 7b463c513f4..d1afafa4e46 100644 --- a/companion/src/translations/companion_en.ts +++ b/companion/src/translations/companion_en.ts @@ -999,33 +999,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1036,279 +1036,279 @@ Error description: %4 Boards - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None - + Pot - + Pot with detent - + 2 Positions Toggle - + 2 Positions - + 3 Positions - + Function - + Standard - + Small - + Both @@ -2457,123 +2457,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch - + Action - + Parameters - + Repeat - + Enable - + Popup menu available - + SF%1 - + GF%1 - + GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy - + Cut - + Paste - + Clear - + Insert - + Delete - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3455,424 +3455,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font - + FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5038,433 +5063,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch - - + + None - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF - + Enabled - + Telemetry - + Trainer - + Telemetry Mirror - + Telemetry In - + SBUS Trainer - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only - + Keys only - + Switchable - + Global - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Keys - + Controls - + Keys + Controls - + ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5527,10 +5552,20 @@ Are you sure? - + + Charge while radio on + + + + One log per day + + + Key lock + + Country Code @@ -5563,7 +5598,7 @@ Are you sure? - + Vario pitch at max @@ -5649,7 +5684,7 @@ Are you sure? - + ms @@ -5680,17 +5715,6 @@ Are you sure? - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - - Backlight Brightness @@ -5727,17 +5751,17 @@ p, li { white-space: pre-wrap; } - + RSSI Poweroff Warning - + Low EEPROM Warning - + Mode selection: Mode 1: @@ -5760,38 +5784,38 @@ Mode 4: - + USB Mode - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> @@ -5851,7 +5875,7 @@ Mode 4: - + Favorites matching @@ -5886,7 +5910,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5894,187 +5918,187 @@ Acceptable values are 3v..12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 - + us - + Audio - + Trainer - + DMS - + Stick Mode - + Power Off Delay - + Metric - + Imperial - + Default Channel Order - + GPS Coordinates - + Min - - + + v - + Max - + Inactivity Timer - + Show Splash Screen on Startup - + Contrast - + Battery Meter Range - + Haptic Strength - + LCD Display Type - + "No Sound" Warning - + Battery Warning - + Haptic Length - + MAVLink Baud Rate - - + + Quiet - + Only Alarms - - + + No Keys - - + + All - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. @@ -6089,13 +6113,13 @@ Acceptable values are 3v..12v - - + + min - + --- @@ -6105,116 +6129,116 @@ Acceptable values are 3v..12v - - + + 0s - - + + 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6229,67 +6253,67 @@ p, li { white-space: pre-wrap; } - - + + X-Short - - + + Short - - + + Normal - - + + Long - - + + X-Long - + NMEA - + Play Delay (switch mid position) - + Measurement Units - + Haptic Mode - + Beeper Length - + Beeper Mode - + Beeper volume 0 - Quiet. No beeps at all. @@ -6300,14 +6324,14 @@ p, li { white-space: pre-wrap; } - + Alarms Only - - - + + + 1s @@ -6315,7 +6339,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6480,94 +6520,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6577,82 +6632,83 @@ Are you sure ? - + Mute if no sound - + Internal RF - - + - - + + + Type - - - - + + + + Name - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11038,17 +11094,17 @@ p, li { white-space: pre-wrap; } - + Bind on channel - + Options - + Type @@ -11519,7 +11575,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12270,13 +12326,13 @@ s - + OFF - + ON @@ -12296,37 +12352,37 @@ s - + One - + Act - + ---- - + Telemetry - + Trn - + Switch Switch - + None @@ -16128,22 +16184,22 @@ Timestamp TrainerMix - + OFF - + += (Sum) - + := (Replace) - + CH%1 @@ -17878,19 +17934,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17899,7 +17955,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_es.ts b/companion/src/translations/companion_es.ts index 0f41409a413..62b43efb056 100644 --- a/companion/src/translations/companion_es.ts +++ b/companion/src/translations/companion_es.ts @@ -1020,33 +1020,33 @@ Modo 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1057,279 +1057,279 @@ Error description: %4 Boards - + Left Horizontal Izquierda horizontal - + Left Vertical Izquierda vertical - + Right Vertical Derecha vertical - + Right Horizontal Derecha horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch - + Flight Vuelo - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Ninguno - + Pot - + Pot with detent Pos con fijador - + 2 Positions Toggle 2 posiciones palanca - + 2 Positions 2 posiciones - + 3 Positions 3 posiciones - + Function Función - + Standard Estándar - + Small Pequeño - + Both Ambos @@ -2481,126 +2481,126 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Interruptor - + Action Acción - + Parameters Parámetros - + Repeat - + Enable - + Popup menu available Menú deplegable disponible - + SF%1 - + GF%1 - + GV GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) Ha ocurrido un error al reproducir el sonido, posiblemente el archivo ya está abierto. (Err: %1 [%2]) - + Unable to find or open sound file: %1 No se puede encontrar o abrir el archivo de sonido: %1 - + Delete Function. Are you sure? Borrar función ¿Estás seguro? - + Cut Special Function. Are you sure? Cortar función especial ¿Estás seguro? - + Copy Copiar - + Cut Cortar - + Paste Pegar - + Clear Limpiar - + Insert Insertar - + Delete Borrar - + Move Up Mover arriba - + Move Down Mover abajo - + Clear All Limpiar todo - + Clear Function. Are you sure? Limpiar función ¿Estás seguro? - + Clear all Functions. Are you sure? Limpiar todas funciones ¿Estás seguro? @@ -3490,424 +3490,449 @@ Vacío significa incluir todos. Comodines ?, *, y [...] aceptados. Firmware - + No OverrideCH functions available Sin funciones OverrideCH - + Possibility to enable FAI MODE (no telemetry) at field Posibilidad de habilitar el MODO FAI (sin telemetría) - + FAI MODE (no telemetry) always enabled MODO FAI (sin telemetría) siempre activado - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Elimina el soporte para el protocolo D8 FrSky el cual no es de uso legal en EU en radios vendidas después del 1 de enero de 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Desactiva el menú de HELI y el soporte de mezcla de cíclico - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Desactiva las variables globales - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen Habilita la pantalla de Lua custom scripts - + Use alternative SQT5 font Usa la fuente alternativa SQT5 - + FrSky Taranis X9D+ - + Enable non certified firmwares Habilita firmware no certificado - + Enable AFHDS3 support Habilitar soporte AFHDS3 - - + + Disable RAS (SWR) Desactiva RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Módulo haptic instalado - + FrSky Taranis X9E - + Confirmation before radio shutdown Confirmar antes de apagar la radio - + Horus gimbals installed (Hall sensors) Gimbals Horus instalados (sensores Hall) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version Usar SÓLO con la primera versión DEV pcb - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module Soporte para módulo interno MULTI - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module Soporte para módulo bluetooth - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS Soporte GPS interno - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement Soporte para módulo interno ACCESS de reemplazo @@ -5074,433 +5099,433 @@ Are you sure? GeneralSettings - + Radio Settings Ajustes de radio - + Hardware Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch - - + + None Ninguno - + Internal Interno - + Ask Preguntar - + Per model Por modelo - + Internal + External Interno + Externo - + External Externo - - - + + + OFF APAGADO - + Enabled Activado - + Telemetry Telemetría - + Trainer Entrenador - + Telemetry Mirror - + Telemetry In - + SBUS Trainer Entrenador SBUS - + SBUS Trainer Inverted - + LUA - + CLI - + GPS GPS - + Debug Depuración - + SpaceMouse - + External module - + mA - + Normal Normal - + OneBit - + Trims only - + Keys only - + Switchable - + Global - + Mode 1 (RUD ELE THR AIL) Modo 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) Modo 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) Modo 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Modo 4 (AIL THR ELE RUD) - + Keys Teclas - + Controls - + Keys + Controls - + ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5563,10 +5588,20 @@ Are you sure? Zona horaria UTC - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5593,7 +5628,7 @@ Are you sure? Ajustar RTC - + Vario pitch at max Tono de vario al máx @@ -5690,7 +5725,7 @@ Are you sure? - + ms @@ -5722,22 +5757,6 @@ Are you sure? Este es el interruptor seleccionado para encender la luz de fondo (si está instalada). - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Contraste de la pantalla LCD</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Los valores pueden ser 20-45</span></p></body></html> @@ -5770,7 +5789,7 @@ p, li { white-space: pre-wrap; } Brillo luz de fondo OFF - + Mode selection: Mode 1: @@ -5811,7 +5830,7 @@ Modo 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Orden de los canales</p><p><br/></p><p>Define el orden por defecto de las mezclas en un nuevo modelo</p></body></html> @@ -5821,12 +5840,12 @@ Modo 4: Si activas FAI, sólo los sensores RSSI y RxBt seguirán funcionando. Esta función no puede ser deshabilitada en la radio. - + RSSI Poweroff Warning Aviso RSSI al apagado - + Low EEPROM Warning Advertencia de poca EEPROM @@ -5891,7 +5910,7 @@ Modo 4: - + Favorites matching @@ -5926,7 +5945,7 @@ Modo 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5937,229 +5956,229 @@ Este es el umbral cuando la batería emite sonidos de aviso. Los valores aceptables son 3v..12v - + Power On Delay Retraso de encendido - + Jack Mode Modo jack - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 - + us - + Audio - + Trainer Entrenador - + DMS - + USB Mode Modo USB - + Power Off Delay Retraso de apagado - - + + Ask on Connect Preguntar al conectar - + Joystick (HID) Joystick (HID) - + USB Mass Storage Almacenamiento USB - + USB Serial (CDC) USB Serial (CDC) - + Hats Mode - + Stick Mode Modo sticks - + Metric Métrico - + Imperial Imperial - + Default Channel Order Orden prederterminado canales - + GPS Coordinates Coordenadas GPS - + Min Mín - - + + v - + Max Máx - + Inactivity Timer Tiempo de inactividad - + Show Splash Screen on Startup Mostrar pantalla de inicio al encender - + Contrast Contraste - + Battery Meter Range Medidor de rango de batería - + Haptic Strength Fuerza de haptic - + LCD Display Type Tipo de pantalla LCD - + "No Sound" Warning Aviso "sin sonido" - + Battery Warning Aviso de batería - + Haptic Length Duración haptic - + MAVLink Baud Rate Velocidad de transmisión MAVLink - - + + Quiet Silencio - + Only Alarms Sólo alarmas - - + + No Keys No teclas - - + + All Todo - + Standard Estándar - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Si no es cero emitirá sonidos si el transmisor se deja sin pulsaciones durante el número específico de minutos. - - + + min - + --- @@ -6169,116 +6188,116 @@ Los valores aceptables son 3v..12v - - + + 0s - - + + 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6303,67 +6322,67 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aviso de silencio - te alertará si el beeper está en modo silencio (0)</p></body></html> - - + + X-Short X-Corto - - + + Short Corto - - + + Normal - - + + Long Largo - - + + X-Long X-Largo - + NMEA - + Play Delay (switch mid position) Retardo de reproducción (interruptor en posición media) - + Measurement Units Unidades de medida - + Haptic Mode Modo haptic - + Beeper Length Duración del beeper - + Beeper Mode Modo beeper - + Beeper volume 0 - Quiet. No beeps at all. @@ -6380,14 +6399,14 @@ p, li { white-space: pre-wrap; } 4 - Extra Alto. - + Alarms Only Sólo alarmas - - - + + + 1s @@ -6395,7 +6414,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6562,94 +6597,109 @@ Esta función no puede ser deshabilitada en la radio. - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source Fuente - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth Bluetooth - + Device Name: Nombre dispositivo: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter Filtro ADC @@ -6659,82 +6709,83 @@ Esta función no puede ser deshabilitada en la radio. - + Mute if no sound - + Internal RF - - + - - + + + Type Tipo - - - - + + + + Name Nombre - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset Offset actual - + Screen - - + + + Invert Invertir - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11130,17 +11181,17 @@ p, li { white-space: pre-wrap; } Sin pulsos - + Bind on channel Bind con canal - + Options Opciones - + Type Tipo @@ -11611,7 +11662,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12373,13 +12424,13 @@ s - + OFF - + ON @@ -12399,37 +12450,37 @@ s - + One Uno - + Act - + ---- - + Telemetry Telemetría - + Trn - + Switch - + None Ninguno @@ -16252,22 +16303,22 @@ Tiempo TrainerMix - + OFF APAGADO - + += (Sum) += (Suma) - + := (Replace) := (Reemplazar) - + CH%1 @@ -18004,19 +18055,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18025,7 +18076,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_fi.ts b/companion/src/translations/companion_fi.ts index e076bc9d1dc..99e27ffb3f5 100644 --- a/companion/src/translations/companion_fi.ts +++ b/companion/src/translations/companion_fi.ts @@ -1021,33 +1021,33 @@ Tila 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1058,279 +1058,279 @@ Error description: %4 Boards - + Left Horizontal Vasen vaaka - + Left Vertical Vasen pysty - + Right Vertical Oikea pysty - + Right Horizontal Oikea vaaka - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Kytkin - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Ei mitään - + Pot - + Pot with detent - + 2 Positions Toggle - + 2 Positions - + 3 Positions - + Function Toiminto - + Standard Vakio - + Small Pieni - + Both Molemmat @@ -2479,123 +2479,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Kytkin - + Action Toiminto - + Parameters Parametrit - + Repeat - + Enable Päälle - + Popup menu available - + SF%1 SF%1 - + GF%1 - + GV GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy - + Cut - + Paste - + Clear - + Insert - + Delete Poista - + Move Up Siirrä ylös - + Move Down Siirrä alas - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3479,424 +3479,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available Ei ohituskanava funkitoita saatavissa - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support HELI valikko pois ,myös cyclic mix tuki - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Globaalit muuttujat pois päältä - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font Käytä vaihtoehtoista SQT5 fonttia - + FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Värinä moduli asennettu - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5063,433 +5088,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Kytkin - - + + None Ei mitään - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF Pois - + Enabled - + Telemetry Telemetria - + Trainer Traineri - + Telemetry Mirror - + Telemetry In - + SBUS Trainer - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug Korjaus - + SpaceMouse - + External module - + mA - + Normal Normaali - + OneBit - + Trims only - + Keys only - + Switchable - + Global - + Mode 1 (RUD ELE THR AIL) Mode 1 (PER KOR KAA SII) - + Mode 2 (RUD THR ELE AIL) Mode 2 (PER KAA KOR SII) - + Mode 3 (AIL ELE THR RUD) Mode 3 (SII KOR KAA PER) - + Mode 4 (AIL THR ELE RUD) Mode 4 (SII KAA KOR PER) - + Keys Napit - + Controls - + Keys + Controls - + ON ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5552,10 +5577,20 @@ Are you sure? Ajansiirto UTC:stä - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5582,7 +5617,7 @@ Are you sure? - + Vario pitch at max Vario ääni kun max @@ -5679,7 +5714,7 @@ Are you sure? - + ms ms @@ -5711,22 +5746,6 @@ Are you sure? Tässä kohtaa valitaan taustavalon käyttäytyminen (mikäli se on asennettuna). - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> @@ -5759,7 +5778,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5803,7 +5822,7 @@ Tila 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanava järjestys</p><p><br/></p><p>Määrittelee miksereiden perusasetukset uuteen malliin.</p></body></html> @@ -5813,12 +5832,12 @@ Tila 4: - + RSSI Poweroff Warning - + Low EEPROM Warning @@ -5873,7 +5892,7 @@ Tila 4: - + Favorites matching @@ -5908,7 +5927,7 @@ Tila 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5919,218 +5938,218 @@ Tämä on jännitealue jolloin akun varoitus ääni annetaan. Hyväksytty arvo: 3v - 12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Audio - + Trainer Traineri - + DMS - + USB Mode - + Power Off Delay - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode - + Stick Mode Tikku tila - + Metric Metrit - + Imperial Imperiaali - + Default Channel Order Kanavien järjestys - + GPS Coordinates GPS koordinaatit - + Min Min - - + + v v - + Max Max - + Inactivity Timer Käyttämättömyys ajastin - + Show Splash Screen on Startup Näytä alkuruutu käynnistyksessä - + Contrast Kontrasti - + Battery Meter Range - + Haptic Strength Värinän voimakkuus - + LCD Display Type LCD näytön tyyppi - + "No Sound" Warning "Ei ääniä" hälytys - + Battery Warning Akun varoitin - + Haptic Length Värinän pituus - + MAVLink Baud Rate MAV linkki baudit - - + + Quiet Äänetön - + Only Alarms Vain hälyt - - + + No Keys Ei nap - - + + All Kaikki - + Standard Vakio - + Optrex Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Jos tämä arvo ei ole 0, piipataan valitun ajan jos mitään käskyjä ei tule ( MIN ). @@ -6145,13 +6164,13 @@ Hyväksytty arvo: 3v - 12v - - + + min Min - + --- --- @@ -6161,116 +6180,116 @@ Hyväksytty arvo: 3v - 12v - - + + 0s 0s - - + + 0.5s 0.5s - - - + + + 2s 2s - - - + + + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud 4800 Baudia - + 9600 Baud 9600 Baudia - + 14400 Baud 14400 Baudia - + 19200 Baud 19200 Baudia - + 38400 Baud 38400 Baudia - + 57600 Baud 57600 Baudia - + 76800 Baud 76800 Baudia - + 115200 Baud 115200 Baudia - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6295,67 +6314,67 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> - - + + X-Short X-lyhyt - - + + Short Lyhyt - - + + Normal Normaali - - + + Long Pitkä - - + + X-Long X-Pitkä - + NMEA NMEA - + Play Delay (switch mid position) Toista viive (kytkin keskiasennossa) - + Measurement Units Mittayksiköt - + Haptic Mode Värinä tila - + Beeper Length Piippaus pituus - + Beeper Mode Piipperin moodi - + Beeper volume 0 - Quiet. No beeps at all. @@ -6372,14 +6391,14 @@ p, li { white-space: pre-wrap; } 4 -Erittäin voimakas. - + Alarms Only Vain hälyt - - - + + + 1s 1s @@ -6387,7 +6406,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6552,94 +6587,109 @@ Are you sure ? - + + IMU + + + + + X + X + + + + Y + Y + + + Pots - + Switches - + Flex Switches - + Source Lähde - + Customisable Switches - + Start Aloitus - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6649,82 +6699,83 @@ Are you sure ? - + Mute if no sound - + Internal RF - - + - - + + + Type - - - - + + + + Name Nimi - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert Käänteinen - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11115,17 +11166,17 @@ p, li { white-space: pre-wrap; } - + Bind on channel - + Options - + Type @@ -11596,7 +11647,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12347,13 +12398,13 @@ s - + OFF Pois - + ON ON @@ -12373,37 +12424,37 @@ s THt - + One Yksi - + Act - + ---- ---- - + Telemetry Telemetria - + Trn - + Switch Kytkin - + None Ei mitään @@ -16208,22 +16259,22 @@ Timestamp TrainerMix - + OFF Pois - + += (Sum) += (Sum) - + := (Replace) := (Korvaa) - + CH%1 CH%1 @@ -17959,19 +18010,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17980,7 +18031,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts index bbd58071ccf..cd123420a8f 100644 --- a/companion/src/translations/companion_fr.ts +++ b/companion/src/translations/companion_fr.ts @@ -1020,33 +1020,33 @@ Manche Droit: Profondeur, Direction - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1057,279 +1057,279 @@ Error description: %4 Boards - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Aucun - + Pot - + Pot with detent Potentiomètre avec centre - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + 2 Positions Toggle 2 Positions momentané - + 2 Positions 2 Positions - + 3 Positions 3 Positions - + Global Global - + Function Fonction - + Standard - + Small Petites - + Both Les 2 - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch - + Flight Vol - + Drive @@ -2480,123 +2480,123 @@ Voulez-vous importer les paramètres depuis un fichier ? CustomFunctionsPanel - + Switch Inter - + Action Action - + Parameters Paramètres - + Repeat - + Enable - + Popup menu available Menu contextuel disponible - + SF%1 FS%1 - + GF%1 FG%1 - + GV VG - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) Une erreur s'est produite lors de la lecture du son, le fichier est peut-être déjà ouvert. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? Supprimer la Fonction. Êtes-vous sûr ? - + Cut Special Function. Are you sure? Couper la Fonction. Êtes-vous sûr ? - + Copy Copier - + Cut Couper - + Paste Coller - + Clear Effacer - + Insert Insérer - + Delete Supprimer - + Move Up Monter - + Move Down Descendre - + Clear All Effacer Tout - + Clear Function. Are you sure? Effacer la Fonction. Êtes-vous sûr ? - + Clear all Functions. Are you sure? Effacer toutes les Fonctions. Êtes-vous sûr ? @@ -3486,424 +3486,449 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont Firmware - + No OverrideCH functions available Désactive la fonction spéciale "Remplacer VOIExx" - + Possibility to enable FAI MODE (no telemetry) at field Possibilité d'activer le mode FAI (télémétrie désactivée) sur le terrain - + FAI MODE (no telemetry) always enabled Mode FAI (télémétrie toujours désactivée) - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Masque le protocole D8. Légalement obligatoire sur les radios Européennes importées après le 1er janvier 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Supprimer le menu HELICO et les mixages cycliques - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Supprimer le support des variables globales - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen Activer l'écran des scripts Lua personnalisés - + Use alternative SQT5 font Utiliser la police alternative SQT5 - - + + Disable RAS (SWR) Désactiver le RAS (SWR). Utile uniquement pour les X9D+ avec un RAS/SWR non fonctionnel - + Enable AFHDS3 support Activer le support du AFHDS3 - + FrSky Taranis X9D+ - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Module vibreur installé - + FrSky Taranis X9E - + Confirmation before radio shutdown Confirmation avant l'arrêt de la radio - + Horus gimbals installed (Hall sensors) Manches Horus à effet HALL installés - + FrSky Taranis X9-Lite - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + FrSky Horus X10 / X10S - - + + Support for ACCESS internal module replacement Prise en charge du module de remplacement interne ACCESS - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version Exclusivement pour les Horus DEV - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - - + + Support for MULTI internal module Prise en charge du module MULTI interne - + + Senduwing H17 + + + + Jumper T-Lite - + Jumper T-Pro - + Support for bluetooth module Prise en charge du module Bluetooth - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key Autoriser l'appairage avec le bouton"bind" - + Support internal GPS Prise en charge du GPS interne - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable non certified firmwares Activer les firmwares non certifiés - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Radiomaster Pocket - + Radiomaster TX12 - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + Jumper T12 / T12 Pro - + Jumper T16 / T16+ / T16 Pro @@ -5070,433 +5095,433 @@ Are you sure? GeneralSettings - + Radio Settings Paramètres de la radio - + Hardware Matériel - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch - - + + None Aucun - + Internal Interne - + Ask Demander - + Per model Par modèle - + Internal + External Interne + Externe - + External Externe - - - + + + OFF Eteint - + Enabled Activé - + Telemetry - + Trainer Écolage - + Telemetry Mirror - + Telemetry In - + SBUS Trainer Écolage SBUS - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug Débogage - + SpaceMouse - + External module - + mA - + Normal Normales - + OneBit - + Trims only Trims uniquement - + Keys only Touches uniquement - + Switchable Commutable - + Global Global - + Mode 1 (RUD ELE THR AIL) Mode 1 (DIR PROF GAZ AIL) - + Mode 2 (RUD THR ELE AIL) Mode 2 (DIR GAZ PROF AIL) - + Mode 3 (AIL ELE THR RUD) Mode 3 (AIL PROF GAZ DIR) - + Mode 4 (AIL THR ELE RUD) Mode 4 (AIL GAZ PROF DIR) - + Keys Touches - + Controls - + Keys + Controls - + ON ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5559,10 +5584,20 @@ Are you sure? Décalage horaire (UTC) - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5589,7 +5624,7 @@ Are you sure? Ajuster l'heure par GPS - + Vario pitch at max Tonalité du vario au max @@ -5686,7 +5721,7 @@ Are you sure? - + ms @@ -5717,22 +5752,6 @@ Are you sure? Interrupteur déclenchant le rétroéclairage' (si installé). - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Contraste de l'écran LCD</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Plage de valeurs: 20...45</span></p></body></html> - Backlight Brightness @@ -5764,7 +5783,7 @@ p, li { white-space: pre-wrap; } Luminosité écran éteint - + Mode selection: Mode 1: @@ -5805,7 +5824,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Ordre des voies</p><p><br/></p><p>Détermine l'ordre des mixages par défaut sur un nouveau modèle.</p></body></html> @@ -5875,7 +5894,7 @@ Mode 4: - + Favorites matching @@ -5910,7 +5929,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5921,235 +5940,235 @@ Seuil auquel se déclenche l'alarme de batterie. Plage de valeurs: 3v...12v - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Power Off Delay Délai mise hors tension - + USB Mode Mode USB - + Jack Mode Mode Jack - + Audio - + Trainer Écolage - - + + Ask on Connect Demander à la connexion - + Joystick (HID) - + USB Mass Storage Stockage USB (SD) - + USB Serial (CDC) Port série USB (Debug) - + Hats Mode Mode joystick - + Stick Mode Mode - + Metric Métrique - + Imperial Impérial - + Default Channel Order Ordre des voies par défaut - + GPS Coordinates Coordonnées GPS - + Min - - + + v - + Max - + RSSI Poweroff Warning Vérifier RSSI à l'extinction - + DMS - + Inactivity Timer Alerte d'inactivité - + Show Splash Screen on Startup Afficher l'écran de démarrage - + Contrast Contraste - + Battery Meter Range Plage de l'indicateur de batterie - + Haptic Strength Puissance vibreur - + LCD Display Type Type de LCD - + "No Sound" Warning Alerte "son coupé" - + Battery Warning Alerte batterie - + Haptic Length Durée vibreur - + MAVLink Baud Rate Baudrate Mavlink - - + + Quiet Mode silencieux - + Only Alarms Seulement les alarmes - - + + No Keys Touches silencieuses - - + + All Tous - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Si différent de 0, émission d'un bip sonore régulier si aucune action n'a été effectuée sur l'émetteur depuis le temps spécifié (en minutes). Réinitialisation en agissant sur n'importe lequel des manches / touches de navigation. - - + + min - + Power On Delay Délai mise sous tension - + --- @@ -6159,116 +6178,116 @@ Réinitialisation en agissant sur n'importe lequel des manches / touches de - - + + 0s 0s - - + + 0.5s 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6293,72 +6312,72 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alerte mode silencieux - Avertissement si les bips sont désactivés</p></body></html> - - + + X-Short Très court - - + + Short Court - - + + Normal - - + + Long - - + + X-Long Très long - + Low EEPROM Warning Avertissement EEPROM faible - + NMEA - + Play Delay (switch mid position) Délai position centrale inters - + Measurement Units Unités de mesure - + Haptic Mode Mode du vibreur - + Beeper Length Durée des bips - + Beeper Mode Paramètre des bips - + Beeper volume 0 - Quiet. No beeps at all. @@ -6375,14 +6394,14 @@ Long : bips plus longs. Extra long : bips extra longs. - + Alarms Only Seulement les Alarmes - - - + + + 1s 1s @@ -6390,7 +6409,23 @@ Extra long : bips extra longs. GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6557,94 +6592,109 @@ Cette fonction ne peut pas être désactivée sur la radio. - + + IMU + + + + + X + + + + + Y + O + + + Pots - + Switches - + Flex Switches - + Source Source - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: Nom de l'appareil: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + Exporter - + ADC Filter Filtre ADC @@ -6654,82 +6704,83 @@ Cette fonction ne peut pas être désactivée sur la radio. - + Mute if no sound Muet si pas de son - + Internal RF - - + - - + + + Type - - - - + + + + Name Nom - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power Alimentation S.Port - + Current Offset Correction courant - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11135,17 +11186,17 @@ p, li { white-space: pre-wrap; } Pas d'impulsion - + Bind on channel Bind avec VOIE - + Options Options - + Type @@ -11616,7 +11667,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12377,13 +12428,13 @@ E - + OFF - + ON @@ -12403,37 +12454,37 @@ E GZt - + One Un - + Act - + ---- - + Telemetry Télémétrie - + Trn - + Switch - + None Aucun @@ -16258,22 +16309,22 @@ Horodatage TrainerMix - + OFF Eteint - + += (Sum) += (Additionner) - + := (Replace) := (Remplacer) - + CH%1 VOIE%1 @@ -18010,19 +18061,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18031,7 +18082,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_he.ts b/companion/src/translations/companion_he.ts index d54a8d7c2e5..79de9c93eb4 100644 --- a/companion/src/translations/companion_he.ts +++ b/companion/src/translations/companion_he.ts @@ -999,33 +999,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1036,279 +1036,279 @@ Error description: %4 Boards - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global גלובאלי - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Switch - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None - + Pot - + Pot with detent - + 2 Positions Toggle - + 2 Positions - + 3 Positions - + Function - + Standard - + Small - + Both @@ -2457,123 +2457,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Switch - + Action - + Parameters - + Repeat - + Enable - + Popup menu available - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy - + Cut - + Paste - + Clear - + Insert - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? - + SF%1 - + GF%1 - + GV - + Delete @@ -3455,427 +3455,452 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + No OverrideCH functions available - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + Enable non certified firmwares - + Enable AFHDS2A support - + Enable AFHDS3 support - + Use alternative SQT5 font - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9D+ - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - - + + Support for ACCESS internal module replacement - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - - iFlight Commando8 - - FirmwareReaderWorker @@ -5038,433 +5063,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Switch - - + + None - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF - + Enabled - + Telemetry - + Trainer - + Telemetry Mirror - + Telemetry In - + SBUS Trainer - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only קיזוזים בלבד - + Keys only ניווט בלבד - + Switchable משולב - + Global גלובאלי - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Keys - + Controls - + Keys + Controls - + ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5527,10 +5552,20 @@ Are you sure? - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5557,7 +5592,7 @@ Are you sure? - + Vario pitch at max @@ -5654,7 +5689,7 @@ Are you sure? - + ms @@ -5685,17 +5720,6 @@ Are you sure? - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - - Backlight Brightness @@ -5757,7 +5781,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5780,7 +5804,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> @@ -5820,7 +5844,7 @@ Mode 4: - + Favorites matching @@ -5855,7 +5879,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5863,214 +5887,214 @@ Acceptable values are 3v..12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 - + us - - + + Ask on Connect - + Audio - + Trainer - + DMS - + Low EEPROM Warning - + RSSI Poweroff Warning - + Stick Mode - + Power Off Delay - + Metric - + Imperial - + Default Channel Order - + GPS Coordinates - + Min - - + + v - + Max - + Inactivity Timer - + Show Splash Screen on Startup - + Contrast - + Battery Meter Range - + Haptic Strength - + LCD Display Type - + "No Sound" Warning - + Battery Warning - + Haptic Length - + MAVLink Baud Rate - - + + Quiet - + Only Alarms - - + + No Keys - - + + All - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. - - + + min - + --- @@ -6080,116 +6104,116 @@ Acceptable values are 3v..12v - - + + 0s - - + + 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6204,92 +6228,92 @@ p, li { white-space: pre-wrap; } - - + + X-Short - - + + Short - - + + Normal - - + + Long - - + + X-Long - + NMEA - + Play Delay (switch mid position) - + USB Mode - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode מצב כובעונים - + Measurement Units - + Haptic Mode - + Beeper Length - + Beeper Mode - + Beeper volume 0 - Quiet. No beeps at all. @@ -6300,14 +6324,14 @@ p, li { white-space: pre-wrap; } - + Alarms Only - - - + + + 1s @@ -6315,7 +6339,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6480,94 +6520,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6577,82 +6632,83 @@ Are you sure ? - + Mute if no sound השתקת קול - + Internal RF - - + - - + + + Type - - - - + + + + Name - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11038,17 +11094,17 @@ p, li { white-space: pre-wrap; } - + Bind on channel - + Options - + Type @@ -11519,7 +11575,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12260,13 +12316,13 @@ s - + OFF - + ON @@ -12296,37 +12352,37 @@ s - + One - + Act - + ---- - + Telemetry - + Trn - + Switch Switch - + None @@ -16128,22 +16184,22 @@ Timestamp TrainerMix - + OFF - + += (Sum) - + := (Replace) - + CH%1 @@ -17878,19 +17934,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17899,7 +17955,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_it.ts b/companion/src/translations/companion_it.ts index a96bf90102a..9c28b95dbe4 100644 --- a/companion/src/translations/companion_it.ts +++ b/companion/src/translations/companion_it.ts @@ -1018,33 +1018,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1055,279 +1055,279 @@ Error description: %4 Boards - + Left Horizontal Orizzontale Sinistro - + Left Vertical Verticale Sinistro - + Right Vertical Verticale Destro - + Right Horizontal Orizzontale Destro - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global Globale - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Interruttore - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Nessuno - + Pot - + Pot with detent Pot con fermo centrale - + 2 Positions Toggle Momentaneo 2 posizioni - + 2 Positions 2 Posizioni - + 3 Positions 3 Posizioni - + Function Funzione - + Standard Standard - + Small Piccole - + Both Entrambi @@ -2476,123 +2476,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Interruttore - + Action Azione - + Parameters Parametri - + Repeat - + Enable Abilita - + Popup menu available - + SF%1 FS%1 - + GF%1 GF%1 - + GV VG - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy Copia - + Cut - + Paste Incolla - + Clear Cancella - + Insert - + Delete Elimina - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3479,424 +3479,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available Nessuna funzione di forzatura CH disponibile - + Possibility to enable FAI MODE (no telemetry) at field Impostazione della modalità FAI (no telemetria) da radio - + FAI MODE (no telemetry) always enabled Modalità FAI (no telemetria) sempre attiva - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Disabilita il menù HELI e le funzioni del piatto ciclico - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables Disabilita variabili globali - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font Usa font alternativo SQT5 (Leggermente quadrato) - + FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Modulo vibrazione installato - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5063,433 +5088,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Interruttore - - + + None Nessuno - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF Spento - + Enabled - + Telemetry Telemetria - + Trainer Maestro/Allievo - + Telemetry Mirror - + Telemetry In - + SBUS Trainer Maestro/Allievo SBUS - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug Debug - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only Solo trims - + Keys only Solo keys - + Switchable Commutabile - + Global Globale - + Mode 1 (RUD ELE THR AIL) Modo 1 (DIR ELE MOT ALE) - + Mode 2 (RUD THR ELE AIL) Modo 2 (DIR MOTO ELE ALE) - + Mode 3 (AIL ELE THR RUD) Modo 3 (ALE ELE MOT DIR) - + Mode 4 (AIL THR ELE RUD) Modo 4 (ALE MOT ELE DIR) - + Keys Tasti - + Controls - + Keys + Controls - + ON Acceso - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5552,10 +5577,20 @@ Are you sure? Differenza in ore da GMT - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5582,7 +5617,7 @@ Are you sure? Aggiusta Orologio - + Vario pitch at max Tono del vario al massimo @@ -5679,7 +5714,7 @@ Are you sure? - + ms ms @@ -5710,22 +5745,6 @@ Are you sure? Questo è l'interruttore selezionato per l'accensione della retroilluminazione (se installata). - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Contrasto schermo LCD</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">I valori possono andare da 20 a 45</span></p></body></html> - Backlight Brightness @@ -5752,12 +5771,12 @@ p, li { white-space: pre-wrap; } Europa - + RSSI Poweroff Warning - + Low EEPROM Warning @@ -5812,7 +5831,7 @@ p, li { white-space: pre-wrap; } - + Favorites matching @@ -5847,12 +5866,12 @@ p, li { white-space: pre-wrap; } - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Ordine dei canali</p><p><br/></p><p>Definisce l'ordine delle miscelazioni predefinite durante la creazione di un modello.</p></body></html> - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5863,38 +5882,38 @@ Al di sotto di questo valore verrà generato un seganle di allarme. Valori accettabili da 3v a 12v - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Power Off Delay - + Mode selection: Mode 1: @@ -5935,149 +5954,149 @@ Mode 4: - + DMS - + USB Mode - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode Modo joystick - + Stick Mode Modo Stick - + Metric Sistema Metrico - + Imperial Imperiale - + Default Channel Order Ordine canali predefinito - + GPS Coordinates Coordinate GPS - + Min Min - - + + v v - + Max Max - + Beeper Mode Modalità suono beeper - + Inactivity Timer Temporizzatore di inattività - + Beeper Length Lunghezza suono - + Show Splash Screen on Startup Mostra schermata all'avvio - + Contrast Contrasto - + Battery Meter Range Campo misuratore batteria - + Haptic Strength Intensità vibrazione (mod. HW) - + LCD Display Type Tipo display LCD - + "No Sound" Warning Avviso "nessun suono" - + Battery Warning Allarme batteria scarica - + Haptic Length Lunghezza vibrazione - + MAVLink Baud Rate Baud rate MAVLink - + Haptic Mode Modalità vibrazione - + Beeper volume 0 - Quiet. No beeps at all. @@ -6094,30 +6113,30 @@ Mode 4: 4 - Fortissimo. - - + + Quiet Silenzioso - + Alarms Only Solo allarmi - - + + No Keys No Tasti - - + + All Tutti - + Only Alarms Solo allarmi @@ -6132,17 +6151,17 @@ Mode 4: - + Standard Standard - + Optrex Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Se non è zero, verrà fatto suonare l'allarme se la radio non è utilizzata per il numero di minuti specificato. @@ -6157,23 +6176,23 @@ Mode 4: - - + + min min - + Power On Delay - + Jack Mode - + --- --- @@ -6183,126 +6202,126 @@ Mode 4: - - + + 0s 0s - - + + 0.5s 0.5s - - - + + + 2s 2s - - - + + + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + Audio - + Trainer Maestro/Allievo - + 4800 Baud 4800 Baud - + 9600 Baud 9600 Baud - + 14400 Baud 14400 Baud - + 19200 Baud 19200 Baud - + 38400 Baud 38400 Baud - + 57600 Baud 57600 Baud - + 76800 Baud 76800 Baud - + 115200 Baud 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6327,54 +6346,54 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Suoni disabilitati - avvisa se i suoni sono disabilitati (0)</p></body></html> - - + + X-Short Extra Corto - - + + Short Corto - - + + Normal Normale - - + + Long Lungo - - + + X-Long Extra Lungo - + NMEA NMEA - + Play Delay (switch mid position) Ritardo esecuzione(posizione intermedia) - + Measurement Units Unità di misura - - - + + + 1s 1s @@ -6382,7 +6401,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6547,94 +6582,109 @@ Are you sure ? - + + IMU + + + + + X + X + + + + Y + Y + + + Pots - + Switches - + Flex Switches - + Source Sorgente - + Customisable Switches - + Start Inizio - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6644,82 +6694,83 @@ Are you sure ? - + Mute if no sound Muto senza suono - + Internal RF - - + - - + + + Type - - - - + + + + Name Nome - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11120,17 +11171,17 @@ p, li { white-space: pre-wrap; } No impulsi - + Bind on channel - + Options - + Type @@ -11601,7 +11652,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12352,13 +12403,13 @@ s - + OFF Spento - + ON Acceso @@ -12378,37 +12429,37 @@ s MOt - + One Uno - + Act - + ---- ---- - + Telemetry Telemetria - + Trn - + Switch Interruttore - + None Nessuno @@ -16214,22 +16265,22 @@ Timestamp TrainerMix - + OFF Spento - + += (Sum) += (Somma) - + := (Replace) := (Sostituisci) - + CH%1 CH%1 @@ -17965,19 +18016,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17986,7 +18037,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_ja.ts b/companion/src/translations/companion_ja.ts index e79942f91da..66248a5f2d1 100644 --- a/companion/src/translations/companion_ja.ts +++ b/companion/src/translations/companion_ja.ts @@ -1005,33 +1005,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1042,279 +1042,279 @@ Error description: %4 Boards - + Left Horizontal 左・横 - + Left Vertical 左・縦 - + Right Vertical 右・縦 - + Right Horizontal 右・横 - + Aux. 1 AUX. 1 - + Aux. 2 AUX. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch スイッチ - + Flight フライト - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None なし - + Pot - + Pot with detent ダイヤル (ノッチあり) - + 2 Positions Toggle 2 ポジション トグル - + 2 Positions 2 ポジション - + 3 Positions 3 ポジション - + Function 機能 - + Standard 標準 - + Small 小サイズ - + Both 両方 @@ -2467,124 +2467,124 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch スイッチ - + Action 実行 - + Parameters パラメータ - + Repeat リピート - + Enable 有効 - + Popup menu available 利用可能なポップアップメニュー - + SF%1 SF%1 - + GF%1 GF%1 - + GV GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) 音源再生中にエラーが発生しました。おそらくファイルは既に開かれています (Err: %1 [%2]) - + Unable to find or open sound file: %1 音源ファイルが見つからない、または開けません %1 - + Delete Function. Are you sure? ファンクションを削除します。よろしいですか? - + Cut Special Function. Are you sure? ファンクションを切り取ります。よろしいですか? - + Copy コピー - + Cut 切り取り - + Paste 貼り付け - + Clear 消去 - + Insert 挿入 - + Delete 削除 - + Move Up 上へ移動 - + Move Down 下へ移動 - + Clear All すべて消去 - + Clear Function. Are you sure? ファンクションを消去します。よろしいですか? - + Clear all Functions. Are you sure? すべてのファンクションを消去します。よろしいですか? @@ -3475,424 +3475,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available 使用可能な上書きチャンネル機能はありません - + Possibility to enable FAI MODE (no telemetry) at field フィールドでFAIモード (テレメトリーなし) を有効にする可能性 - + FAI MODE (no telemetry) always enabled FAIモード (テレメトリーなし) を常に有効 - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 2015/01/01以降に販売された送信機に対し、EUでの使用に適さないD8 FrSkyプロトコルサポートを削除 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support HELIメニューとサイクリックミックスサポートを無効にする - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables グローバル変数を無効にする - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen Luaカスタムスクリプト画面を有効にする - + Use alternative SQT5 font SQT5 代替フォントを使用する - + FrSky Taranis X9D+ FrSky Taranis X9D+ - + Enable non certified firmwares 非認証ファームウェアを有効にします - + Enable AFHDS3 support AFHDS3サポート 有効 - - + + Disable RAS (SWR) RAS (SWR)を無効にする - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed バイブレーション対応モジュールをインストール - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown 送信機シャットダウン前の確認 - + Horus gimbals installed (Hall sensors) Horusジンバル (ホールセンサー) をインストール - + FrSky Taranis X9-Lite FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite FrSky Taranis X-Lite - + FrSky Horus X10 / X10S FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S FrSky Horus X12S - + Use ONLY with first DEV pcb version 初期DEV pcbバージョンでのみ使用 - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module MULTI内部モジュールのサポート - + Jumper T-Lite Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module Bluetoothモジュールのサポート - + Radiomaster TX12 Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed 内蔵ELRSモジュールが搭載されているか否かを選択 - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 Jumper T14 - + Jumper T15 Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 Radiomaster T8 - + Allow bind using bind key バインドキーを使用したバインドを許可 - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS 内部GPS サポート - - + + Support hardware mod: FlySky Paladin EV Gimbals ハードウェアMODサポート: FlySky Paladin EV Gimbals - + Jumper T18 Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support AFHDS2Aサポート 有効 - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access FrSky Taranis X7 / X7S ACCESS - - + + Support for ACCESS internal module replacement ACCESS内部モジュール変更のサポート @@ -5059,433 +5084,433 @@ Are you sure? GeneralSettings - + Radio Settings 送信機設定 - + Hardware ハードウェア - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches スイッチ - - + + Flex Switch - - + + Function Switch - - + + Switch スイッチ - - + + None なし - + Internal 内部 - + Ask 確認 - + Per model Per モデル - + Internal + External 内部 + 外部 - + External 外部 - - - + + + OFF OFF - + Enabled 有効 - + Telemetry テレメトリー - + Trainer トレーナー - + Telemetry Mirror テレメトリーミラー - + Telemetry In テレメトリー IN - + SBUS Trainer SBUS トレーナー - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug デバッグ - + SpaceMouse - + External module 外部モジュール - + mA - + Normal 標準 - + OneBit - + Trims only トリムのみ - + Keys only キーのみ - + Switchable スイッチ - + Global すべて - + Mode 1 (RUD ELE THR AIL) モード1 (左:エレベーター・ラダー 右:スロットル・エルロン) - + Mode 2 (RUD THR ELE AIL) モード2 (左:スロットル・ラダー 右:エレベーター・エルロン) - + Mode 3 (AIL ELE THR RUD) モード3 (左:エレベーター・エルロン 右:スロットル・ラダー) - + Mode 4 (AIL THR ELE RUD) モード4 (左:スロットル・エルロン 右:エレベーター・ラダー) - + Keys キー - + Controls - + Keys + Controls - + ON ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5548,10 +5573,20 @@ Are you sure? スティック リバース - + + Charge while radio on + + + + One log per day + + + Key lock + + Country Code @@ -5584,7 +5619,7 @@ Are you sure? - + Vario pitch at max バリオ 最大ピッチ @@ -5670,7 +5705,7 @@ Are you sure? - + ms @@ -5702,22 +5737,6 @@ Are you sure? これはバックライトを点灯するための選択スイッチです(装着時)。 - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">液晶画面コントラスト</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">値は20~45です</span></p></body></html> @@ -5755,17 +5774,17 @@ p, li { white-space: pre-wrap; } バックライトOFF 明るさ - + RSSI Poweroff Warning RSSI 信号切断 警告 - + Low EEPROM Warning EEPROM 残量警告 - + Mode selection: Mode 1: @@ -5806,38 +5825,38 @@ Mode 4: - + USB Mode USBモード - - + + Ask on Connect 接続時に確認 - + Joystick (HID) ジョイスティック (HID) - + USB Mass Storage USBストレージ - + USB Serial (CDC) USBシリアル (CDC) - + Hats Mode アナログスティックモード - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>チャンネルマップ</p><p><br/></p><p>機体モデルを作成した際の初期チャンネルマッピングを定義します</p></body></html> @@ -5897,7 +5916,7 @@ Mode 4: これを有効にすると、機体モデル選択ページで素早くモデルを変更できます(長押しで機体モデル編集メニューが開きます)。 - + Favorites matching @@ -5932,7 +5951,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5943,187 +5962,187 @@ Acceptable values are 3v..12v 許容値は3~12vです - + Power On Delay 電源ON遅延 - + Jack Mode ジャックモード - + Play Startup Sound 起動時音源 - + PPM Units PPMユニット - - + + 0.-- - + 0.0 0.0 - + us - + Audio オーディオ - + Trainer トレーナー - + DMS - + Stick Mode スティックモード - + Power Off Delay 電源OFF遅延 - + Metric メートル法 - + Imperial ヤードポンド法 - + Default Channel Order チャンネルマップ初期値 - + GPS Coordinates GPS座標 - + Min 最小 - - + + v V - + Max 最大 - + Inactivity Timer 活動限界タイマー - + Show Splash Screen on Startup 起動イメージ 表示時間 - + Contrast コントラスト - + Battery Meter Range バッテリーメーター範囲 - + Haptic Strength バイブレーション 強度 - + LCD Display Type LCD ディスプレイタイプ - + "No Sound" Warning 音源なし 警告 - + Battery Warning バッテリー警告 - + Haptic Length バイブレーション 長さ - + MAVLink Baud Rate MAVLink ボーレート - - + + Quiet 消音 - + Only Alarms アラームのみ - - + + No Keys キーなし - - + + All すべて - + Standard 標準 - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. この値が0以外の場合、送信機で指定した分数だけ入力がなく放置されるとビープ音が鳴ります。 @@ -6138,13 +6157,13 @@ Acceptable values are 3v..12v ロータリー エンコーダーモード - - + + min 最小 - + --- @@ -6154,116 +6173,116 @@ Acceptable values are 3v..12v - - + + 0s 30秒 {0s?} - - + + 0.5s 30秒 {0.5s?} - - - + + + 2s 2秒 - - - + + + 3s 3秒 - + 4s 4秒 - + 6s 6秒 - + 8s 8秒 - + 10s 10秒 - + 15s 15秒 - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6288,67 +6307,67 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">サイレントモード警告 - ビープ音が消音(0)に設定されている場合に警告を発します。</p></body></html> - - + + X-Short より短い - - + + Short 短い - - + + Normal 標準 - - + + Long 長い - - + + X-Long より長い - + NMEA - + Play Delay (switch mid position) 反応遅延 (スイッチ中間位置) - + Measurement Units 計測単位 - + Haptic Mode バイブレーションモード - + Beeper Length ビープ音 長さ - + Beeper Mode ビープモード - + Beeper volume 0 - Quiet. No beeps at all. @@ -6365,14 +6384,14 @@ p, li { white-space: pre-wrap; } 4 - かなり大きな音. - + Alarms Only アラームのみ - - - + + + 1s 1秒 @@ -6380,7 +6399,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6547,94 +6582,109 @@ Are you sure ? デッドゾーン - + + IMU + + + + + X + + + + + Y + + + + Pots ダイヤル - + Switches スイッチ - + Flex Switches - + Source - + Customisable Switches - + Start スタート - + Off color - - + + Lua override - + On color - + RTC Battery Check 内蔵バッテリーチェック - + Bluetooth - + Device Name: デバイス名: - + Sample Mode サンプルモード - + Serial ports シリアルポート - + Power 電源 - + USB-VCP - + - + ADC Filter ADCフィルター @@ -6644,82 +6694,83 @@ Are you sure ? - + Mute if no sound 音源なしでミュート - + Internal RF 内部RFモジュール - - + - - + + + Type タイプ - - - - + + + + Name 名称 - + Baudrate: ボーレート: - + Antenna: アンテナ: - + External RF 外部RFモジュール - + AUX1 - + AUX2 - + S.Port Power S.Port 出力 - + Current Offset 現在のオフセット - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! 警告: 内部モジュールを変更すると、機体モデルの内部モジュールのプロトコル設定が無効になる可能性があります! @@ -11122,17 +11173,17 @@ p, li { white-space: pre-wrap; } パルスなし - + Bind on channel チャンネルへバインド - + Options オプション - + Type タイプ @@ -11603,7 +11654,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate サーボ 更新レート @@ -12366,13 +12417,13 @@ X - + OFF OFF - + ON ON @@ -12392,37 +12443,37 @@ X - + One - + Act Act - + ---- - + Telemetry テレメトリー - + Trn Trn - + Switch スイッチ - + None なし @@ -16255,22 +16306,22 @@ Timestamp TrainerMix - + OFF OFF - + += (Sum) += (合計) - + := (Replace) := (置換) - + CH%1 CH%1 @@ -18011,19 +18062,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18036,7 +18087,7 @@ Do you wish to continue? そのまま続行しますか? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_ko.ts b/companion/src/translations/companion_ko.ts index ff02780c6bf..cd528dd8a3c 100644 --- a/companion/src/translations/companion_ko.ts +++ b/companion/src/translations/companion_ko.ts @@ -1019,36 +1019,36 @@ Mode 4: TH(스로틀) - - - - + + + + Load Board Hardware Definition 보드 하드웨어 정의 불러오기 - + Board: %1 Error: Unable to load file %2 보드: %1 오류: 파일 %2을(를) 불러올 수 없습니다 - + Board: %1 Error: Unable to open file %2 보드: %1 오류: 파일 %2을(를) 열 수 없습니다 - + Board: %1 Error: Unable to read file %2 보드: %1 오류: 파일 %2을(를) 읽을 수 없습니다 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1062,279 +1062,279 @@ Error description: %4 Boards - + Left Horizontal 왼쪽 수평 - + Left Vertical 왼쪽 수직 - + Right Vertical 오른쪽 수직 - + Right Horizontal 오른쪽 수평 - + Aux. 1 Aux. 1(보조1) - + Aux. 2 Aux. 2(보조2) - + LH LH(왼쪽 수평) - + LV LV(왼쪽 수직) - + RV RV(오른쪽 수직) - + RH RH(오른쪽 수평) - - + + TILT_X TILT_X(기울기X축) - - + + TILT_Y TILT_Y(기울기Y축) - - - - - - - - + + + + + + + + SL1 SL1(슬라이더1) - - + + P4 P4(포트4) - - - - - - - + + + + + + + SL2 SL2(슬라이더2) - - + + SL3 SL3(슬라이더3) - - + + SL4 SL4(슬라이더4) - + P5 P5(포트5) - + Global - + Slider 슬라이더 - + Multipos Switch 다단 스위치 - + Axis X X축 - + Axis Y Y축 - + Switch 스위치 - + Flight 비행 - + Drive 주행 - - - - - - - - - + + + - - + + + + + + + + P1 P1(포트1) - - - - - - - + + - - + + + + + + + P2 P2(포트2) - - - - - + - + + + + + P3 P3(포트3) - - + + JSx 조이스틱 X - - + + JSy 조이스틱 Y - - + + EXT1 확장1 - - + + EXT2 확장2 - - + + EXT3 확장3 - - + + EXT4 확장4 - - - + + + None 없음 - + Pot 가변 저항 - + Pot with detent 중간 고정점 있는 가변 저항 - + 2 Positions Toggle 2단 토글 스위치 - + 2 Positions 2단 스위치 - + 3 Positions 3단 스위치 - + Function 기능 - + Standard 표준 - + Small 소형 - + Both 둘 다 @@ -2486,124 +2486,124 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch 스위치 - + Action 동작 - + Parameters 매개변수 - + Repeat 반복 - + Enable 활성화 - + Popup menu available 팝업 메뉴 사용 가능 - + SF%1 - + GF%1 - + GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) 사운드 재생 중 오류가 발생했습니다. 파일이 이미 열려 있을 수 있습니다. (오류: %1 [%2]) - + Unable to find or open sound file: %1 사운드 파일을 찾거나 열 수 없습니다: %1 - + Delete Function. Are you sure? 기능을 삭제하시겠습니까? - + Cut Special Function. Are you sure? 특수 기능을 잘라내시겠습니까? - + Copy 복사 - + Cut 잘라내기 - + Paste 붙여넣기 - + Clear 지우기 - + Insert 삽입 - + Delete 삭제 - + Move Up 위로 이동 - + Move Down 아래로 이동 - + Clear All 모두 지우기 - + Clear Function. Are you sure? 기능을 지우시겠습니까? - + Clear all Functions. Are you sure? 모든 기능을 지우시겠습니까? @@ -3496,424 +3496,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available OverrideCH 기능을 사용할 수 없습니다 - + Possibility to enable FAI MODE (no telemetry) at field 현장에서 FAI 모드(텔레메트리 없음)를 활성화할 수 있습니다 - + FAI MODE (no telemetry) always enabled FAI 모드(텔레메트리 없음)가 항상 활성화됩니다 - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 2015년 1월 1일 이후 판매된 송신기에서 EU 내에서 합법적이지 않은 D8 FrSky 프로토콜 지원을 제거합니다 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support HELI 메뉴 및 cyclic 믹스 지원 비활성화 - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables 글로벌 변수 비활성화 - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen Lua 사용자 스크립트 화면 활성화 - + Use alternative SQT5 font 대체 SQT5 글꼴 사용 - + FrSky Taranis X9D+ - + Enable non certified firmwares 인증되지 않은 펌웨어 허용 - + Enable AFHDS3 support AFHDS3 지원 활성화 - - + + Disable RAS (SWR) RAS(SWR) 비활성화 - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed 햅틱 모듈이 설치되어 있음 - + FrSky Taranis X9E - + Confirmation before radio shutdown 조종기 종료 전 확인 메시지 표시 - + Horus gimbals installed (Hall sensors) Horus 짐벌이 설치됨 (홀 센서 사용) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version 최초 DEV PCB 버전에서만 사용하십시오 - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module MULTI 내장 모듈 지원 - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module 블루투스 모듈 지원 - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed 내장 ELRS 모듈이 설치된 경우 선택 - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key Bind 키를 사용하여 바인딩 허용 - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS 내장 GPS 지원 - - + + Support hardware mod: FlySky Paladin EV Gimbals 하드웨어 개조 지원: FlySky Paladin EV 짐벌 - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support AFHDS2A 지원 활성화 - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement ACCESS 내장 모듈 교체 지원 @@ -5080,433 +5105,433 @@ Are you sure? GeneralSettings - + Radio Settings 송신기 설정 - + Hardware 하드웨어 - + Internal Module 내장 모듈 - + Axis & Pots 축 & 포트 - + Axis 축 - + Pot 포트 - + Switches 스위치 - - + + Flex Switch 플렉스 스위치 - - + + Function Switch 기능 스위치 - - + + Switch 스위치 - - + + None 없음 - + Internal 내장 - + Ask 묻기 - + Per model 모델별 - + Internal + External 내장 + 외부 - + External 외부 - - - + + + OFF 꺼짐 - + Enabled 활성화됨 - + Telemetry 텔레메트리 - + Trainer 트레이너 - + Telemetry Mirror 텔레메트리 미러 - + Telemetry In 텔레메트리 입력 - + SBUS Trainer SBUS 트레이너 - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug 디버그 - + SpaceMouse 스페이스마우스 - + External module 외부 모듈 - + mA - + Normal 일반 - + OneBit - + Trims only 트림만 - + Keys only 버튼만 - + Switchable 전환 가능 - + Global 글로벌 - + Mode 1 (RUD ELE THR AIL) 모드 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) 모드 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) 모드 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) 모드 4 (AIL THR ELE RUD) - + Keys 키 - + Controls 조작 - + Keys + Controls 키 + 조작 - + ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5569,10 +5594,20 @@ Are you sure? 조이스틱 반전 - + + Charge while radio on + + + + One log per day + + + Key lock + + Country Code @@ -5605,7 +5640,7 @@ Are you sure? - + Vario pitch at max 최대 상승 시 바리오 피치 @@ -5691,7 +5726,7 @@ Are you sure? - + ms 밀리초 @@ -5722,23 +5757,6 @@ Are you sure? 이 스위치는 백라이트를 켜기 위한 선택입니다 (설치된 경우). - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD 화면 대비 조절</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">값은 20~45 범위 내에서 설정할 수 있습니다</span></p></body></html> - - Backlight Brightness @@ -5775,17 +5793,17 @@ p, li { white-space: pre-wrap; } 백라이트 꺼짐 밝기 - + RSSI Poweroff Warning RSSI 전원 종료 경고 - + Low EEPROM Warning EEPROM 용량 부족 경고 - + Mode selection: Mode 1: @@ -5808,38 +5826,38 @@ Mode 4: - + USB Mode USB 모드 - - + + Ask on Connect 연결 시 선택 - + Joystick (HID) 조이스틱 (HID) - + USB Mass Storage USB 대용량 저장장치 - + USB Serial (CDC) USB 시리얼 (CDC) - + Hats Mode Hats 모드 - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>채널 순서</p><p><br/></p><p>새 모델 생성 시 기본 믹스의 채널 배치를 정의합니다.</p></body></html> @@ -5899,7 +5917,7 @@ Mode 4: 이 기능을 활성화하면 모델 선택 페이지에서 빠르게 모델을 전환할 수 있습니다. 길게 누르면 모델 편집 메뉴가 열립니다. - + Favorites matching 즐겨찾기 일치 @@ -5934,7 +5952,7 @@ Mode 4: 선택적 일치 - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5945,187 +5963,187 @@ Acceptable values are 3v..12v 허용 범위: 3V ~ 12V - + Power On Delay 전원 켜짐 지연 - + Jack Mode 잭 모드 - + Play Startup Sound 시작음 재생 - + PPM Units PPM 단위 - - + + 0.-- - + 0.0 - + us - + Audio 오디오 - + Trainer 트레이너 - + DMS DMS (도/분/초) - + Stick Mode 조종기 모드 - + Power Off Delay 전원 꺼짐 지연 - + Metric 미터법 - + Imperial 야드법 - + Default Channel Order 기본 채널 순서 - + GPS Coordinates GPS 좌표 - + Min 최소 - - + + v - + Max 최대 - + Inactivity Timer 비활성 타이머 - + Show Splash Screen on Startup 시작 시 스플래시 화면 표시 - + Contrast 명암 대비 - + Battery Meter Range 배터리 측정 범위 - + Haptic Strength 진동 강도 - + LCD Display Type LCD 디스플레이 종류 - + "No Sound" Warning “무음” 경고 - + Battery Warning 배터리 경고 - + Haptic Length 진동 시간 - + MAVLink Baud Rate MAVLink 통신 속도 - - + + Quiet 조용함 - + Only Alarms 알람만 - - + + No Keys 키음 없음 - - + + All 전체 - + Standard 표준 - + Optrex 옵트렉스 - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. 0이 아니면 설정된 시간 동안 조작이 없을 경우 경고음이 울립니다. @@ -6140,13 +6158,13 @@ Acceptable values are 3v..12v 로터리 인코더 모드 - - + + min 분 - + --- @@ -6156,116 +6174,116 @@ Acceptable values are 3v..12v - - + + 0s 0초 - - + + 0.5s 0.5초 - - - + + + 2s 2초 - - - + + + 3s 3초 - + 4s 4초 - + 6s 6초 - + 8s 8초 - + 10s 10초 - + 15s 15초 - + Trainer Poweroff Warning 트레이너 전원 종료 경고 - + Power ON/OFF Haptic 전원 온/오프 진동 - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off 자동 전원 차단 - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6291,67 +6309,67 @@ p, li { white-space: pre-wrap; } - - + + X-Short 매우 짧게 - - + + Short 짧게 - - + + Normal 보통 - - + + Long 길게 - - + + X-Long 매우 길게 - + NMEA - + Play Delay (switch mid position) 재생 지연 (스위치 중간 위치) - + Measurement Units 측정 단위 - + Haptic Mode 진동 모드 - + Beeper Length 비퍼 길이 - + Beeper Mode 비퍼 모드 - + Beeper volume 0 - Quiet. No beeps at all. @@ -6368,14 +6386,14 @@ p, li { white-space: pre-wrap; } 4 - 매우 큼: 최대 음량. - + Alarms Only 알람만 - - - + + + 1s 1초 @@ -6383,7 +6401,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6550,94 +6584,109 @@ Are you sure ? 데드존 - + + IMU + + + + + X + X축 + + + + Y + + + + Pots 포텐셔미터 - + Switches 스위치 - + Flex Switches - + Source - + Customisable Switches - + Start 시작 - + Off color - - + + Lua override - + On color - + RTC Battery Check RTC 배터리 점검 - + Bluetooth 블루투스 - + Device Name: 장치 이름: - + Sample Mode 샘플 모드 - + Serial ports 시리얼 포트 - + Power 전원 - + USB-VCP - + - + ADC Filter ADC 필터 @@ -6647,82 +6696,83 @@ Are you sure ? 축 - + Mute if no sound 소리가 없으면 음소거 - + Internal RF 내장 RF - - + - - + + + Type 유형 - - - - + + + + Name 이름 - + Baudrate: 보레이트: - + Antenna: 안테나: - + External RF 외장 RF - + AUX1 - + AUX2 - + S.Port Power S.Port 전원 - + Current Offset 전류 오프셋 - + Screen 화면 - - + + + Invert 반전 - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! 경고: 내부 모듈을 변경하면 모델의 내부 모듈 프로토콜이 무효화될 수 있습니다! @@ -11126,17 +11176,17 @@ p, li { white-space: pre-wrap; } 펄스 없음 - + Bind on channel 채널 바인딩 - + Options 옵션 - + Type 종류 @@ -11607,7 +11657,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate 서보 업데이트 주기 @@ -12363,13 +12413,13 @@ s - + OFF 끔 - + ON 켬 @@ -12389,37 +12439,37 @@ s 스로틀 타이머 - + One 1회 - + Act 동작 - + ---- - + Telemetry 텔레메트리 - + Trn 트레이너 - + Switch 스위치 - + None 없음 @@ -16250,22 +16300,22 @@ Timestamp TrainerMix - + OFF 꺼짐 - + += (Sum) += (합산) - + := (Replace) := (대체) - + CH%1 채널 %1 @@ -18008,19 +18058,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings 송신기 설정 읽기 - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18031,7 +18081,7 @@ Do you wish to continue? 계속하시겠습니까? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_nl.ts b/companion/src/translations/companion_nl.ts index d00706e40ec..4f4f4a11e6e 100644 --- a/companion/src/translations/companion_nl.ts +++ b/companion/src/translations/companion_nl.ts @@ -999,33 +999,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1036,279 +1036,279 @@ Error description: %4 Boards - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Switch - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None - + Pot - + Pot with detent - + 2 Positions Toggle - + 2 Positions - + 3 Positions - + Function - + Standard - + Small - + Both @@ -2457,123 +2457,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Switch - + Action - + Parameters - + Repeat - + Enable - + Popup menu available - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy - + Cut - + Paste - + Clear - + Insert - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? - + SF%1 - + GF%1 - + GV - + Delete @@ -3455,427 +3455,452 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + No OverrideCH functions available - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + Enable non certified firmwares - + Enable AFHDS2A support - + Enable AFHDS3 support - + Use alternative SQT5 font - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9D+ - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - - + + Support for ACCESS internal module replacement - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - - iFlight Commando8 - - FirmwareReaderWorker @@ -5038,433 +5063,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Switch - - + + None - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF - + Enabled - + Telemetry - + Trainer - + Telemetry Mirror - + Telemetry In - + SBUS Trainer - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only - + Keys only - + Switchable - + Global - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Keys - + Controls - + Keys + Controls - + ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5527,10 +5552,20 @@ Are you sure? - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5557,7 +5592,7 @@ Are you sure? - + Vario pitch at max @@ -5654,7 +5689,7 @@ Are you sure? - + ms @@ -5685,17 +5720,6 @@ Are you sure? - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - - Backlight Brightness @@ -5757,7 +5781,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5780,7 +5804,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> @@ -5820,7 +5844,7 @@ Mode 4: - + Favorites matching @@ -5855,7 +5879,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5863,214 +5887,214 @@ Acceptable values are 3v..12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 - + us - - + + Ask on Connect - + Audio - + Trainer - + DMS - + Low EEPROM Warning - + RSSI Poweroff Warning - + Stick Mode - + Power Off Delay - + Metric - + Imperial - + Default Channel Order - + GPS Coordinates - + Min - - + + v - + Max - + Inactivity Timer - + Show Splash Screen on Startup - + Contrast - + Battery Meter Range - + Haptic Strength - + LCD Display Type - + "No Sound" Warning - + Battery Warning - + Haptic Length - + MAVLink Baud Rate - - + + Quiet - + Only Alarms - - + + No Keys - - + + All - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. - - + + min - + --- @@ -6080,116 +6104,116 @@ Acceptable values are 3v..12v - - + + 0s - - + + 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6204,92 +6228,92 @@ p, li { white-space: pre-wrap; } - - + + X-Short - - + + Short - - + + Normal - - + + Long - - + + X-Long - + NMEA - + Play Delay (switch mid position) - + USB Mode - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode - + Measurement Units - + Haptic Mode - + Beeper Length - + Beeper Mode - + Beeper volume 0 - Quiet. No beeps at all. @@ -6300,14 +6324,14 @@ p, li { white-space: pre-wrap; } - + Alarms Only - - - + + + 1s @@ -6315,7 +6339,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6480,94 +6520,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6577,82 +6632,83 @@ Are you sure ? - + Mute if no sound - + Internal RF - - + - - + + + Type - - - - + + + + Name - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11038,17 +11094,17 @@ p, li { white-space: pre-wrap; } - + Bind on channel - + Options - + Type @@ -11519,7 +11575,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12260,13 +12316,13 @@ s - + OFF - + ON @@ -12296,37 +12352,37 @@ s - + One - + Act - + ---- - + Telemetry - + Trn - + Switch Switch - + None @@ -16128,22 +16184,22 @@ Timestamp TrainerMix - + OFF - + += (Sum) - + := (Replace) - + CH%1 @@ -17878,19 +17934,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17899,7 +17955,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts index fb110bb7f45..d433b1b4edc 100644 --- a/companion/src/translations/companion_pl.ts +++ b/companion/src/translations/companion_pl.ts @@ -1001,33 +1001,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1038,279 +1038,279 @@ Error description: %4 Boards - + Left Horizontal Lewy poziomy - + Left Vertical Lewy pionowy - + Right Vertical Prawy pionowy - + Right Horizontal Prawy poziomy - + Aux. 1 Dodatk. 1 - + Aux. 2 Dodatk. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global Globalne - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Przełącznik - + Flight Lot - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Żadne - + Pot - + Pot with detent Potencj. z zapadką - + 2 Positions Toggle 2 Poz. Przełącznik chwilowy - + 2 Positions 2 Pozycje - + 3 Positions 3 Pozycje - + Function Funkcja - + Standard Standard - + Small Małe - + Both Obie @@ -2460,123 +2460,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Przełącznik - + Action Akcja - + Parameters Parametry - + Repeat - + Enable Aktywuj - + Popup menu available - + SF%1 SF%1 - + GF%1 FG%1 - + GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy Skopiuj - + Cut Wytnij - + Paste Wklej - + Clear Wyczyść - + Insert Wprowadź - + Delete Wykasuj - + Move Up W górę - + Move Down W dół - + Clear All Wyczyść wszytko - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3461,424 +3461,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available Brak dostępnych Funkcji Nadpisania Kanału - + Possibility to enable FAI MODE (no telemetry) at field Umożliwienie uaktywniania trybu FAI(brak telemetrii) w menu na lotnisku - + FAI MODE (no telemetry) always enabled Tryb FAI (brak telemetrii) zawsze aktywny - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Usuwa wsparcie dla protokołu D8 FrSky, który jest nielegany w UE w radiach spradawanych po 01-01-2015 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support Dezaktywowane menu Heli i wsparcie dla cyklicznych mikserów - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables dezaktywowane zmienne globalne - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font Użyj alternatywnego fontu SQT5 - + FrSky Taranis X9D+ FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed Moduł wibracji zainstalowany - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown Potwierdzenie przez wyłączeniem radia - + Horus gimbals installed (Hall sensors) Zainstalowane gimbale Horusa (na czujnikach Halla) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version Użyć tylko dla pierwszych deweloperskich platform - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5045,433 +5070,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware Sprzęt - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Przełącznik - - + + None Żadne - + Internal Wewnętrzny - + Ask - + Per model - + Internal + External - + External - - - + + + OFF Wyłącz - + Enabled - + Telemetry Telemetria - + Trainer Trener - + Telemetry Mirror - + Telemetry In - + SBUS Trainer Trener SBUS - + SBUS Trainer Inverted - + LUA - + CLI - + GPS GPS - + Debug Debugowanie - + SpaceMouse - + External module - + mA mA - + Normal - + OneBit - + Trims only Tylko trymy - + Keys only Tylko przyciski - + Switchable Przełączane - + Global Globalne - + Mode 1 (RUD ELE THR AIL) Mod 1 (SK.SW.Gaz.Lot) - + Mode 2 (RUD THR ELE AIL) Mod 2 (SK.Gaz.SW.Lot) - + Mode 3 (AIL ELE THR RUD) Mod 2 (Lot.SW.Gaz.SK) - + Mode 4 (AIL THR ELE RUD) Mod 4 (Lot.Gaz.SW.SK) - + Keys Przyciski - + Controls - + Keys + Controls - + ON Włącz - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5484,7 +5509,7 @@ Are you sure? Formularz - + GPS Coordinates Koordynaty GPS @@ -5494,12 +5519,12 @@ Are you sure? Wysokość tonów (tylko dźwięki) - + Measurement Units Jednostki miar - + NMEA NMEA @@ -5514,12 +5539,12 @@ Are you sure? Strefa czasowa względem UTC - + Metric Metryczne - + Imperial Imperialne @@ -5544,32 +5569,32 @@ Are you sure? Europa - - + + X-Short Bardzo krótka - - + + Short Krótka - - + + Normal Normalna - - + + Long Długa - - + + X-Long Bardzo długa @@ -5584,12 +5609,12 @@ Are you sure? Kolor 2 - + Beeper Length Długość piknięcia - + Beeper Mode Tryb pikania @@ -5599,12 +5624,12 @@ Are you sure? Ton Wario dla zera - + Standard Standard - + Optrex Optrex @@ -5619,7 +5644,7 @@ Are you sure? Tryb dźwiękowy - + Beeper volume 0 - Quiet. No beeps at all. @@ -5636,35 +5661,35 @@ Are you sure? 4 - Bardzo głośna. - - + + Quiet Cichy - + Alarms Only Tylko alarmy - - + + No Keys Bez przycisków - - + + All Wszystkie - + Only Alarms Tylko Alarmy - + Haptic Mode Tryb wibracji @@ -5688,22 +5713,6 @@ Are you sure? SpeakerVoice Głośnik i głosy - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Kontrast ekranu LCD</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Wartości z zakresu 20-45</span></p></body></html> - SC @@ -5761,12 +5770,12 @@ p, li { white-space: pre-wrap; } - + Battery Warning Ostrzeżenie o zasilaniu - + Vario pitch at max Ton Wario dla Maks @@ -5782,7 +5791,7 @@ p, li { white-space: pre-wrap; } - + ms ms @@ -5807,33 +5816,33 @@ p, li { white-space: pre-wrap; } Kolor Podświetlenia - + Min Min - - + + v V - + Max Maks - + Contrast Kontrast - + Battery Meter Range Zakres Pomiaru Baterii - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Radio zasygnalizuje dźwiękiem brak aktywności po określonej liczbie minut. 0- wyłącza tę funkcję. @@ -5843,75 +5852,75 @@ p, li { white-space: pre-wrap; } - - + + 0s 5x {0s?} - - + + 0.5s 5x {0.5s?} - + Trainer Poweroff Warning - - + + min Min - + Power ON/OFF Haptic - + 4800 Baud 4800 bps - + 9600 Baud 9600 bps - + 14400 Baud 14400 bps - + 19200 Baud 19200 bps - + 38400 Baud 38400 bps - + 57600 Baud 57600 bps - + 76800 Baud 76800 bps - + 115200 Baud 115200 bps - + Power Auto Off @@ -5921,7 +5930,7 @@ p, li { white-space: pre-wrap; } Przełącznik Podświetlenia - + Show Splash Screen on Startup Pokazuj ekran startowy z logo @@ -5933,7 +5942,7 @@ p, li { white-space: pre-wrap; } To jest przełącznik do włączenia podświetlenia (jeśli zainstalowane). - + LCD Display Type Typ ekranu LCD @@ -5943,10 +5952,10 @@ p, li { white-space: pre-wrap; } Dostosuj Zegar - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5971,7 +5980,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ostrzeżenie cichej pracy - będzie ostrzegało gdy pikanie jest ustawione na cicho(0)</p></body></html> - + MAVLink Baud Rate Prędkość przesyłu MAVLink @@ -5981,71 +5990,81 @@ p, li { white-space: pre-wrap; } Głośność dźwięków - + Haptic Length Długość wibracji - + Inactivity Timer Timer bezczynności - + + Charge while radio on + + + + --- --- - - - + + + 2s 2s - - - + + + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + "No Sound" Warning Ostrzeżenie "Brak Dźwięku" - + One log per day - + + Key lock + + + + Haptic Strength Siła wibracji @@ -6070,12 +6089,12 @@ p, li { white-space: pre-wrap; } Głośność tła - + Stick Mode Mod drążków - + Default Channel Order Bazowa kolejność kanałów @@ -6095,7 +6114,7 @@ p, li { white-space: pre-wrap; } Jacność wyłączonego podświetlenia - + Mode selection: Mode 1: @@ -6136,7 +6155,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kolejność kanałów</p><p><br/></p><p>Definiuje kolejność standardowych mikserów dla nowego modelu.</p></body></html> @@ -6146,12 +6165,12 @@ Mode 4: - + RSSI Poweroff Warning - + Low EEPROM Warning @@ -6206,7 +6225,7 @@ Mode 4: - + Favorites matching @@ -6241,7 +6260,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -6252,89 +6271,89 @@ Ustala próg ostrzeżenia. Dopuszczalne wartości 3v-12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Audio - + Trainer Trener - + DMS - + USB Mode - + Power Off Delay - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode Tryb grzybków @@ -6344,7 +6363,7 @@ Dopuszczalne wartości 3v-12v Rewers drążków - + Play Delay (switch mid position) Opóźnienie odtwarzania (pozycja środkowa przełącznika) @@ -6354,9 +6373,9 @@ Dopuszczalne wartości 3v-12v Błyskanie podświetleniem przy alarmie - - - + + + 1s 1s @@ -6364,7 +6383,23 @@ Dopuszczalne wartości 3v-12v GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6529,94 +6564,109 @@ Are you sure ? - + + IMU + + + + + X + X + + + + Y + Y + + + Pots - + Switches - + Flex Switches - + Source Źródło - + Customisable Switches - + Start Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter Filtr ADC @@ -6626,82 +6676,83 @@ Are you sure ? - + Mute if no sound - + Internal RF - - + - - + + + Type - - - - + + + + Name Nazwa - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset Aktuany ofset - + Screen - - + + + Invert Odwróć - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11108,17 +11159,17 @@ p, li { white-space: pre-wrap; } Brak impulsu - + Bind on channel - + Options - + Type @@ -11589,7 +11640,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12355,13 +12406,13 @@ s - + OFF Wyłącz - + ON Włącz @@ -12381,37 +12432,37 @@ s THt - + One Jeden - + Act - + ---- ---- - + Telemetry Telemetria - + Trn - + Switch Przełącznik - + None Żadne @@ -16228,22 +16279,22 @@ Timestamp TrainerMix - + OFF Wyłącz - + += (Sum) += (Suma) - + := (Replace) := (Zastąpienie) - + CH%1 Kan %1 @@ -17980,19 +18031,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18001,7 +18052,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_pt.ts b/companion/src/translations/companion_pt.ts index 60decd64ef8..915857cb354 100644 --- a/companion/src/translations/companion_pt.ts +++ b/companion/src/translations/companion_pt.ts @@ -999,33 +999,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1036,279 +1036,279 @@ Error description: %4 Boards - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Interruptor - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None - + Pot - + Pot with detent - + 2 Positions Toggle - + 2 Positions - + 3 Positions - + Function Função - + Standard - + Small - + Both @@ -2457,123 +2457,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Interruptor - + Action - + Parameters - + Repeat - + Enable - + Popup menu available - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy - + Cut - + Paste - + Clear - + Insert - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? - + SF%1 - + GF%1 - + GV - + Delete @@ -3455,427 +3455,452 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + No OverrideCH functions available - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + Enable non certified firmwares - + Enable AFHDS2A support - + Enable AFHDS3 support - + Use alternative SQT5 font - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9D+ - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - - + + Support for ACCESS internal module replacement - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - - iFlight Commando8 - - FirmwareReaderWorker @@ -5038,433 +5063,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Interruptor - - + + None - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF OFF - + Enabled Activo - + Telemetry - + Trainer - + Telemetry Mirror - + Telemetry In - + SBUS Trainer - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only - + Keys only - + Switchable - + Global - + Mode 1 (RUD ELE THR AIL) Modo 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) Modo 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) Modo 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Modo 4 (AIL THR ELE RUD) - + Keys - + Controls - + Keys + Controls - + ON - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5527,10 +5552,20 @@ Are you sure? - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5557,7 +5592,7 @@ Are you sure? - + Vario pitch at max @@ -5654,7 +5689,7 @@ Are you sure? - + ms @@ -5685,17 +5720,6 @@ Are you sure? - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - - Backlight Brightness @@ -5757,7 +5781,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5780,7 +5804,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> @@ -5820,7 +5844,7 @@ Mode 4: - + Favorites matching @@ -5855,7 +5879,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5863,214 +5887,214 @@ Acceptable values are 3v..12v - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 - + us - - + + Ask on Connect - + Audio - + Trainer - + DMS - + Low EEPROM Warning - + RSSI Poweroff Warning - + Stick Mode Modo do Emissor - + Power Off Delay - + Metric - + Imperial - + Default Channel Order Ordem dos Canais por Defeito - + GPS Coordinates - + Min Min - - + + v v - + Max Max - + Inactivity Timer Temporizador de Inatividade - + Show Splash Screen on Startup - + Contrast Contraste - + Battery Meter Range - + Haptic Strength - + LCD Display Type - + "No Sound" Warning - + Battery Warning Alerta de Bateria - + Haptic Length - + MAVLink Baud Rate - - + + Quiet - + Only Alarms - - + + No Keys - - + + All - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. - - + + min min. - + --- @@ -6080,116 +6104,116 @@ Acceptable values are 3v..12v - - + + 0s - - + + 0.5s - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6204,92 +6228,92 @@ p, li { white-space: pre-wrap; } - - + + X-Short - - + + Short - - + + Normal - - + + Long - - + + X-Long - + NMEA - + Play Delay (switch mid position) - + USB Mode - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode - + Measurement Units - + Haptic Mode - + Beeper Length - + Beeper Mode Modo dos Alarmes Sonoros - + Beeper volume 0 - Quiet. No beeps at all. @@ -6300,14 +6324,14 @@ p, li { white-space: pre-wrap; } - + Alarms Only - - - + + + 1s @@ -6315,7 +6339,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6480,94 +6520,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source Fonte - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6577,82 +6632,83 @@ Are you sure ? - + Mute if no sound - + Internal RF - - + - - + + + Type - - - - + + + + Name Nome - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert Inverter - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11038,17 +11094,17 @@ p, li { white-space: pre-wrap; } - + Bind on channel - + Options - + Type @@ -11519,7 +11575,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12260,13 +12316,13 @@ s - + OFF OFF - + ON @@ -12296,37 +12352,37 @@ s - + One - + Act - + ---- - + Telemetry - + Trn - + Switch Interruptor - + None @@ -16128,22 +16184,22 @@ Timestamp TrainerMix - + OFF OFF - + += (Sum) - + := (Replace) - + CH%1 CH%1 @@ -17878,19 +17934,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17899,7 +17955,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_ru.ts b/companion/src/translations/companion_ru.ts index fd0954f3ba2..1f7270c3b2b 100644 --- a/companion/src/translations/companion_ru.ts +++ b/companion/src/translations/companion_ru.ts @@ -1020,33 +1020,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1057,279 +1057,279 @@ Error description: %4 Boards - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch Тумблер - + Flight - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None Нет - + Pot - + Pot with detent - + 2 Positions Toggle - + 2 Positions - + 3 Positions - + Function Функция - + Standard Стандартный - + Small Маленькие - + Both Обе @@ -2481,123 +2481,123 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch Тумблер - + Action - + Parameters Параметры - + Repeat - + Enable - + Popup menu available Доступно всплывающее меню - + SF%1 - + GF%1 - + GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy Копировать - + Cut Вырезать - + Paste Вставить - + Clear Очистить - + Insert Вставить - + Move Up Сдвинуть вверх - + Move Down Сдвинуть вниз - + Clear All Убрать всё - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? - + Delete Удалить @@ -3485,427 +3485,452 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - + No OverrideCH functions available - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + Enable non certified firmwares - + Enable AFHDS2A support - + Enable AFHDS3 support - + Use alternative SQT5 font - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9D+ - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + FrSky Taranis X9-Lite - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - - + + Support for ACCESS internal module replacement - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - - iFlight Commando8 - - FirmwareReaderWorker @@ -5069,433 +5094,433 @@ Are you sure? GeneralSettings - + Radio Settings Параметры передатчика - + Hardware Оборудование - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch Тумблер - - + + None Нет - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF ВЫКЛ - + Enabled - + Telemetry Телеметрия - + Trainer Тренер - + Telemetry Mirror - + Telemetry In - + SBUS Trainer - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug Отладка - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only - + Keys only - + Switchable - + Global - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Keys Кнопки - + Controls - + Keys + Controls - + ON Всегда включена - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5558,10 +5583,20 @@ Are you sure? Смещение от UTC - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5588,7 +5623,7 @@ Are you sure? Коррекция часов - + Vario pitch at max Макс. тон вариометра @@ -5685,7 +5720,7 @@ Are you sure? - + ms мс @@ -5716,17 +5751,6 @@ Are you sure? Включение подсветки (при ее наличии). - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - - Backlight Brightness @@ -5778,7 +5802,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5819,7 +5843,7 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Порядок каналов</p><p><br/></p><p>Задает порядок микшеров при создании новой модели.</p></body></html> @@ -5859,7 +5883,7 @@ Mode 4: - + Favorites matching @@ -5894,7 +5918,7 @@ Mode 4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5905,203 +5929,203 @@ Acceptable values are 3v..12v Диапазон 3В..12В - + Power On Delay Пауза при включении - + Jack Mode Режим разъема наушников - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - - + + Ask on Connect Спросить при подключении - + Audio Звук - + Trainer Тренер - + DMS - + Low EEPROM Warning Предупреждать, если мало памяти (EEPROM) - + RSSI Poweroff Warning Предупреждать, если есть сигнал RSSI - + Stick Mode Режим стиков - + Power Off Delay Пауза при выключении - + Metric Метрическая (метры) - + Imperial Имперская (мили, футы) - + Default Channel Order Порядок следов. каналов - + GPS Coordinates GPS координаты - + Min Мин - - + + v В - + Max Макс - + Inactivity Timer Таймер активности - + Show Splash Screen on Startup Показывать заставку при включении - + Contrast Конраст - + Battery Meter Range Напряжение аккумулятора - + Haptic Strength Сила вибрации - + LCD Display Type Тип LCD экрана - + "No Sound" Warning Предупреждать, если отключен звук - + Battery Warning Напряж. при разряде - + Haptic Length Продолжительность вибрации - + MAVLink Baud Rate Скорость MAVLink - - + + Quiet Тихо - + Only Alarms Только предупреждения - - + + No Keys Все, кроме кнопок - - + + All Все - + Standard Стандартный - + Optrex Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Если не равно нулю, то передатчик начнет пищать при отсутсвии активности через указанное кол-во минут. @@ -6116,13 +6140,13 @@ Acceptable values are 3v..12v - - + + min мин - + --- @@ -6132,116 +6156,116 @@ Acceptable values are 3v..12v - - + + 0s 0s - - + + 0.5s 0.5s - - - + + + 2s 2 сек. - - - + + + 3s 3 сек. - + 4s 4 сек. - + 6s 6 сек. - + 8s 8 сек. - + 10s 10 сек. - + 15s 15 сек. - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud 4800 - + 9600 Baud 9600 - + 14400 Baud 14400 - + 19200 Baud 19200 - + 38400 Baud 38400 - + 57600 Baud 57600 - + 76800 Baud 76800 - + 115200 Baud 115200 - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6260,92 +6284,92 @@ p, li { white-space: pre-wrap; } "Тишина" - Предупреждение о "тихом" режиме (без звука) - - + + X-Short Очень кратко - - + + Short Кратко - - + + Normal Нормальная - - + + Long Долго - - + + X-Long Очень долго - + NMEA - + Play Delay (switch mid position) Пауза воспр. (тумблер в сред. полож.) - + USB Mode Режим работы USB порта - + Joystick (HID) Джойстик - + USB Mass Storage Съемный диск - + USB Serial (CDC) Последовательный порт - + Hats Mode - + Measurement Units Система мер - + Haptic Mode Режим вибрации - + Beeper Length Продолжительность писка - + Beeper Mode Уведомления (писк) - + Beeper volume 0 - Quiet. No beeps at all. @@ -6362,14 +6386,14 @@ p, li { white-space: pre-wrap; } 4 - Очень громкая. - + Alarms Only Только предупреждения - - - + + + 1s 1s @@ -6377,7 +6401,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6542,94 +6582,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + Да + + + Pots - + Switches - + Flex Switches - + Source Источник - + Customisable Switches - + Start - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6639,82 +6694,83 @@ Are you sure ? - + Mute if no sound - + Internal RF - - + - - + + + Type Тип - - - - + + + + Name Название - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset - + Screen - - + + + Invert Инверт - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11119,17 +11175,17 @@ p, li { white-space: pre-wrap; } без сигнала - + Bind on channel - + Options Параметры - + Type Тип @@ -11600,7 +11656,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12351,13 +12407,13 @@ s - + OFF ВЫКЛ - + ON Всегда включена @@ -12377,37 +12433,37 @@ s - + One - + Act - + ---- - + Telemetry Телеметрия - + Trn - + Switch Тумблер - + None Нет @@ -16216,22 +16272,22 @@ Timestamp TrainerMix - + OFF ВЫКЛ - + += (Sum) - + := (Replace) - + CH%1 @@ -17966,19 +18022,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17987,7 +18043,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_sv.ts b/companion/src/translations/companion_sv.ts index 6a3939c7866..98ca5346dd4 100644 --- a/companion/src/translations/companion_sv.ts +++ b/companion/src/translations/companion_sv.ts @@ -60,114 +60,114 @@ AppData - + Application Settings have been saved to %1 Programinställningar har sparats till %1 - + Could not save Application Settings to file "%1" Programinställningarna kunde inte sparas till fil "%1" - + because the file could not be saved (check access permissions). pga att filen inte kunde sparas (kontrollera åtkomsträttigheterna). - + for unknown reasons. av okända skäl. - + Manual Manuellt - + Startup Vid uppstart - + Daily Dagligen - + Weekly Veckovis - + Monthly Månadsvis - + Debug - + Warning Varning - + Information - + Critical Kritisk - + Fatal Fatal - + Default Förvald - + Left Vänster - + Right Höger - + None Ingen - + Wizard Guide - + Editor - + Template Mall - + Prompt @@ -990,66 +990,66 @@ Mode 4: BoardJson - + Rud Rod - + Ele Hjd - + Thr Gas - + Ail Ske - + ST ST - + TH GAS - - - - + + + + Load Board Hardware Definition Ladda hårdvarudefinitionen - + Board: %1 Error: Unable to load file %2 Kort: %1 Fel: Kan inte ladda fil %2 - + Board: %1 Error: Unable to open file %2 Kort: %1 Fel: Kan inte öppna fil %2 - + Board: %1 Error: Unable to read file %2 Kort: %1 Fel: Kan inte läsa fil %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1063,280 +1063,280 @@ Felbeskrivning: %4 Boards - + Left Horizontal Vänster horisontal - + Left Vertical Vänster Vvrtikal - + Right Vertical Höger vertikal - + Right Horizontal Höger horisontal - + Aux. 1 - + Aux. 2 - + LH VH - + LV VV - + RV HV - + RH HH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 RG1 - - + + P4 V4 - - - - - - - + + + + + + + SL2 RG2 - - + + SL3 RG3 - - + + SL4 RG4 - + P5 V5 - - - + + + None Ingen - + 2 Positions Toggle 2 lägen momentan - + 2 Positions 2 lägen - + 3 Positions 3 lägen - + Global Global Global - + Function Funktion - + Pot Vred - + Pot with detent Vred med mittklick - + Slider Reglage - + Multipos Switch Flerlägesbrytare - + Axis X X-axel - + Axis Y Y-axel - + Switch Brytare - + Flight Flyg - + Drive Kör - - - - - - - - - - - - + + + + + + + + + + + + P1 V1 - - - - - - - - - - + + + + + + + + + + P2 V2 - - - - - - - + + + + + + + P3 V3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - + Standard Standard - + Small Liten - + Both Båda @@ -1344,132 +1344,132 @@ Felbeskrivning: %4 ChannelsPanel - + Name Namn - + Min - + Max - + Curve Kurva - + Subtrim Subtrim - + Direction Riktning - + PPM Center PPM-centrum - + Linear Subtrim Linjär subtrim - + --- - + INV - + CH%1 KA%1 - + Popup menu available Popupmeny tillgänglig - + Copy Kopiera - + Cut Klipp ut - + Paste Klistra in - + Delete Radera - + Delete Channel. Are you sure? Radera kanalen. Är du säker? - + Clear Rensa - + Insert Lägga till - + Move Up Flytta upp - + Move Down Flytta ner - + Clear All Rensa alla - + Clear Channel. Are you sure? Rensa kanalen. Är du säker? - + Clear all Channels. Are you sure? Rensa alla kanaler. Är du säker? - + Cut Channel. Are you sure? Klipp ut kanalen. Är du säker? - + Plot Utseende @@ -1566,52 +1566,52 @@ Felbeskrivning: %4 Companion - + EdgeTX Simulator - + Information Information - + Warning Varning - + Error Fel - + Accept Acceptera - + Decline Neka - + files filer - + Radio and Models settings Radio- och modellinställningar - + Simulator for this firmware is not yet available Det finns ännu ingen simulator för denna typ av firmware - + Simulator Error Simuatorfel @@ -1693,32 +1693,32 @@ Vill du hämta inställningarna från en fil? Programinställningarna återställdes och sparades. - + Application Settings Programinställningar - + Select or create a file for exported Settings: Välj eller skapa fil för exporterade inställningar: - + Press the 'Retry' button to choose another file. Tryck på 'Försök igen' för att välja en annan fil. - + Uknown error during Simulator startup. Okänt fel under uppstart av simulatorn. - + Data Load Error Fel vid dataladdning - + Error occurred while starting simulator. Fel inträffade under uppstart av simulatorn. @@ -1733,7 +1733,7 @@ Vill du hämta inställningarna från en fil? <p>Typen av sändare i vald profil saknas. Använder förinställd typ istället.</p> <p><b>Vänligen uppdatera dina profilinställningar!</b></p> - + EdgeTX Companion @@ -1804,17 +1804,17 @@ Vill du hämta inställningarna från en fil? ComponentData - + Releases Stabila versioner - + Pre-release Testversioner - + Nightly Instabila versioner (nattliga) @@ -2195,206 +2195,211 @@ Vill du hämta inställningarna från en fil? + Play Both + + + + Play Value Spela upp värde - + SD Logs Logga data - + Volume Volym - + Backlight Belysning - + Screenshot Ta skärmbild - + Background Music Bakgrundsmusik - + Background Music Pause Pausa bakgrundsmusik - + Adjust %1 Justera %1 - + Bind Int. Module Parkoppla intern modul - + Bind Ext. Module Parkoppla extern modul - + RGB leds RGB lysdioder - + LCD to Video LCD till Video - + Push Custom Switch %1 Tryck på Anpassingsbar brytare %1 - + + Flight + + + + Telemetry Telemetri - + s - - Session - Session - - - + Trims Trimmar - + Beep 1 - + Beep 2 - + Beep 3 - + Warn 1 Varning 1 - + Warn 2 Varning 2 - + Cheep - + Ratata - + Tick - + Siren - + Ring - + Sci Fi - + Robot - + Chirp - + Tada - + Cricket Syrsa - + Alarm Clock Väckarklocka - + Constant Konstant - + Source (%) Källa (%) - + Source (value) Källa (värde) - + Global Variable Global variabel - + Inc/Decrement Räkna upp/ner - + Played once, not during startup Spela en gång, inte vid uppstart - + Repeat %1s Repetera (efter %1s) - + DISABLED INAKTIV @@ -2404,17 +2409,17 @@ Vill du hämta inställningarna från en fil? CFN - + Set Failsafe Sätt failsafe - + No repeat Spela en gång - + Lua Script Lua-skript @@ -2424,12 +2429,12 @@ Vill du hämta inställningarna från en fil? Sätt %1 - + Racing Mode Tävlingsläge - + Disable Touch Inaktivera pekskärm @@ -2439,43 +2444,43 @@ Vill du hämta inställningarna från en fil? Lärarkanaler - + Range Check Int. Module Räckviddskontroll Intern modul - + Range Check Ext. Module Räckviddskontroll Extern modul - + Set Main Screen Ställ in huvudskärm - + Audio Amp Off Audioförstärkare av - + !1x - - + + 1x - + %1s - + On På @@ -2483,124 +2488,124 @@ Vill du hämta inställningarna från en fil? CustomFunctionsPanel - + Switch Brytare - + Parameters Parametrar - + Action Funktion - + SF%1 SF%1 - + Delete Radera - + Copy Kopiera - + Cut Klipp ut - + Paste Klistra in - + GF%1 GF%1 - + Repeat Repetera - + Enable Aktivera - + Popup menu available Popupmeny tillgänglig - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) Fel vid uppspelning av ljud, möjligen är ljudfilen redan öppnad. (Err: %1 [%2]) - + Unable to find or open sound file: %1 Kan inte hitta eller öppna ljudfil: %1 - + Clear Rensa - + Clear All Rensa alla - + Clear all Functions. Are you sure? Rensa alla funktioner. Är du säker? - + Clear Function. Are you sure? Rensa funktionen. Är du säker? - + Cut Special Function. Are you sure? Klipp ut specialfunktionen. Är du säker? - + Delete Function. Are you sure? Radera specialfunktionen. Är du säker? - + GV - + Insert Lägg till - + Move Down Flytta ner - + Move Up Flytta upp @@ -3011,60 +3016,45 @@ För att <b>ta bort ett sparat värde</b> från filterlistan, marker EtxFormat - + Error opening file %1: %2. Fel vid öppning av fil %1: %2. - + Error opening EdgeTX archive %1 Fel vid öppning av EdgeTX-arkiv %1 - + Error initializing EdgeTX archive writer Fel vid initiering av EdgeTX arkivskrivare - + Error writing file %1: %2. Fel vid skrivning av fil %1: %2. - + Error creating EdgeTX file %1: %2. Fel vid skapande av EdgeTX-fil %1: %2. - + Error creating EdgeTX archive Fel vid skapande av EdgeTX-arkiv - - Unable to write %1 to cache - Kan inte skriva %1 till cache - - - - Error adding %1 to archive - Fel vid tillägg av %1 till arkiv - - - - Unable to open image %1 - Kan inte öppna bild %1 - - - - Error adding file %1 - Fel vid tillägg av fil %1 + + Error adding %1 to EdgeTX archive + @@ -3182,22 +3172,22 @@ För att <b>ta bort ett sparat värde</b> från filterlistan, marker Redigera %1 - + Clear All Rensa alla - + Set All Ställ in alla - + Invert All Invertera alla - + Popup menu available Popupmeny tillgänglig @@ -3506,419 +3496,449 @@ Tomt betyder inkludera alla. ?, * och [...] jokertecken accepteras. Firmware - + No OverrideCH functions available Inga funktioner tillgängliga för att åsidosätta kanaldata - + Possibility to enable FAI MODE (no telemetry) at field Möjlighet att styra FAI-LÄGE på fältet - + FAI MODE (no telemetry) always enabled FAI-LÄGE (ingen telemetri) alltid aktivt - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Tar bort stöd för FrSky D8-protokoll, vilket är olagligt inom EU för sändare sålda efter 1 januari 2015 - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + Disable HELI menu and cyclic mix support Avaktivera helikoptermenyn och stöd för cykliska mixar - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + Disable Global variables Avaktivera Globala variabler - + Fatfish F16 - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 - + + iFlight Commando 8 + + + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + + Jumper T22 + + + + Jumper T20 V2 - + + Senduwing H17 + + + + Support internal GPS Stöd intern GPS-modul - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + Enable Lua custom scripts screen Aktivera stöd för Lua-mixerskript - + Use alternative SQT5 font Använd SQT5 typsnitt - - + + Disable RAS (SWR) Avaktivera RAS (SWR) - + Haptic module installed Vibratormodul är installerad - + Confirmation before radio shutdown Bekräfta avstängning av radion - + Horus gimbals installed (Hall sensors) Horusspakar installerade (hall sensor) - + Use ONLY with first DEV pcb version Använd endast med första versionen av DEV pcb - + Enable non certified firmwares Tillåt icke-certifierad firmware - - + + Support for ACCESS internal module replacement Stöd för utbyte av intern ACCESS-modul - + Enable AFHDS3 support Aktivera stöd för AFHDS3 - + Allow bind using bind key Tillåt parkoppling via "bindknapp" - + Support for bluetooth module Stöd för Bluetooth-modul - - + + Support for MULTI internal module Stöd för intern MULTI-modul - + FrSky Taranis X9D+ - + Enable AFHDS2A support Aktivera stöd för AFHDS2 - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + FrSky Taranis X9E - + FrSky Taranis X9-Lite - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Jumper T12 / T12 Pro - + Jumper T-Lite - + FlySky PL18 - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Jumper T20 - + Radiomaster MT12 - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed Välj om intern ELRS-modul är installerad - + Radiomaster Pocket - + Radiomaster T8 - + Radiomaster TX16S / SE / Hall / Masterfire - - + + Support hardware mod: FlySky Paladin EV Gimbals Stöd för intern hårdvarumodd: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + FlySky EL18 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Radiomaster Boxer @@ -4257,20 +4277,6 @@ Tomt betyder inkludera alla. ?, * och [...] jokertecken accepteras.Open Firmware File Öppna firmwarefil - - - %1 -Incompatability - File: '%2' Connected radio: '%3' - %1 -Inkompatibilitet - Fil: '%2' Ansluten radio: '%3' - - - - %1 -Incompatability - File: '%2' Profile: '%3' - %1 -Inkompatibilitet - Fil: '%2' Profil: '%3' - The firmware file is not valid. @@ -4301,6 +4307,18 @@ Inkompatibilitet - Fil: '%2' Profil: '%3' Error - %1 is not a valid firmware file Fel! %1 är inte en giltig firmwarefil + + + %1 +Incompatability - File: '%2' Connected radio: '%3' + + + + + %1 +Incompatability - File: '%2' Profile: '%3' + + The firmware file does not cntain a start screen image. @@ -4524,92 +4542,92 @@ Inkompatibilitet - Fil: '%2' Profil: '%3' FlightModePanel - + Use Trim from %1 Mode %2 Använd trimm från %1läge %2 - + Use Trim from %1 Mode %2 + Own Trim as an offset Använd trimm från %1läge %2 + Egen trimm som offset - + Clear Rensa - + Clear All Rensa alla - + Clear %1 Mode. Are you sure? Rensa %1läge. Är du säker? - + Clear all %1 Modes. Are you sure? Rensa alla %1lägen. Är du säker? - + Cut %1 Mode. Are you sure? Klipp ut %1läge. Är du säker? - + Delete %1 Mode. Are you sure? Radera %1läge. Är du säker? - + Copy Kopiera - + Cut Klipp ut - + Delete Radera - + Insert Lägg till - + Move Up Flytta upp - + Move Down Flytta ned - + Paste Klistra in - + Trim disabled Trim inaktiv - + 3POS toggle switch 3-läges momentan - + Own Trim Egen trim @@ -4622,17 +4640,17 @@ Inkompatibilitet - Fil: '%2' Profil: '%3' FlightModesPanel - + %1 Mode %2 %1läge %2 - + (%1) - + (default) (förval) @@ -4803,17 +4821,17 @@ Inkompatibilitet - Fil: '%2' Profil: '%3' GeneralEdit - - - - - - - - - - - + + + + + + + + + + + Radio Settings Radioinställningar @@ -4870,27 +4888,27 @@ These will be relevant for all models in the same EEPROM. Dessa inställningar gäller för alla modeller. - + Setup Grundinställningar - + Trainer Lärare - + Favourites Favoriter - + Key Shortcuts Snabbkommandon - + WARNING: Restore settings from profile. Are you sure? @@ -4899,13 +4917,13 @@ Are you sure? Är du säker? - - + + Unable to restore settings from profile! Kan inte återställa inställningarna från profilen! - + WARNING: Backup settings to profile. Are you sure? @@ -4914,13 +4932,13 @@ Are you sure? Är du säker? - - + + Unable to backup settings to profile! Kan inte säkerhetskopiera inställningar till profilen! - + WARNING: Delete settings backup from profile. Are you sure? @@ -4929,12 +4947,12 @@ Are you sure? Är du säker? - + Settings backup deleted from profile. Säkerhetskopian av inställningarna raderade från profilen. - + WARNING: Reset settings to defaults. Are you sure? @@ -4943,37 +4961,37 @@ Are you sure? Är du säker? - + The internal module type has been changed and may trigger model updates. Typen av intern modul har ändrats och kan medföra modelluppdateringar. - + Default settings successfully applied. Förinställda värden applicerade. - + The Radio Settings window will be closed and re-opened for the changes to take effect. Fönstret för radioinställningarna kommer stängas och åter öppnas för att inställningarna ska börja gälla. - + Settings saved to profile. Inställningarna sparade till profilen. - + Global Functions Globala funktioner - + Hardware Hårdvara - + Enabled Features Aktiverade funktioner @@ -4981,12 +4999,12 @@ Are you sure? GeneralFavsPanel - + # %1 - + Reset Återställ @@ -4994,32 +5012,32 @@ Are you sure? GeneralKeysPanel - + Short Press Kort tryck - + Long Press Långt tryck - + MDL - + SYS - + TELE - + Reset Återställ @@ -5095,158 +5113,153 @@ Are you sure? GeneralSettings - + Radio Settings Radioinställningar - + Hardware Hårdvara - + Internal Module Intern modul - + Axis & Pots Axlar och vred - + Axis Axlar - + Pot Vred - + Switches Brytare - - + + Flex Switch Flexbrytare - - + + Function Switch Funktionsbrytare - - + + Switch Brytare - + None Ingen - - Backlight Source - Källs för bakgrundsbelysning - - - - Volume Source - Källa för ljud - - - + Internal Intern - + Ask Fråga - + Per model Per modell - + Internal + External Intern + Extern - + External Extern - - + + OFF AV - + Enabled Aktiv - + Telemetry Telemetri - + Trainer Lärare - + Telemetry Mirror Speglad telemetri - + Telemetry In Telemetri in - + SBUS Trainer SBUS Lärare - - LUA - + + SBUS Trainer Inverted + - + + LUA + + + + CLI - + GPS - + Debug - + mA @@ -5521,17 +5534,12 @@ Are you sure? Verktyg - Debugga - - App - - - - + SpaceMouse - + External module Extern modul @@ -5544,127 +5552,127 @@ Are you sure? Formulär - + GPS Coordinates GPS-koordinater - + Speaker Pitch (spkr only) Högtalarton (endast högtalare) - + Measurement Units Måttenheter - + NMEA NMEA - + Voice Language Röstspråk - + Rotary Encoder Mode Läge för inmatningshjul - + Timeshift from UTC Tidsskillnad mot UTC - + Metric Metrisk - + Imperial Brittisk - + Country Code Landskod - + America Amerika - + Japan Japan - + Europe Europa - - + + X-Short Extra kort - - + + Short Kort - - + + Normal Normal - - + + Long Lång - - + + X-Long Extra lång - + Color 1 Färg 1 - + Color 2 Färg 2 - + Beeper Length Längd på summerton - + Beeper Mode Summerläge - + Vario pitch at zero Vario tonläge vid noll - + Beeper volume 0 - Quiet. No beeps at all. @@ -5681,197 +5689,271 @@ Are you sure? 4 - Extra högt. - - + + Quiet Tyst - + Alarms Only Endast för alarm - - + + No Keys Ej vid knapptryck - - + + All För alla händelser - + Only Alarms Endast vid alarm - + Haptic Mode Vibrationsläge - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Kontrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Värden mellan 20 och 45</span></p></body></html> - - - - + + Hz Hz - + Battery Warning Batterivarning - + Vario pitch at max Vario tonläge vid max - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Anger antalet sekunder som bakgrundsbelysningen förblir påslagen efter senaste knapptryck. - + sec sek - - + + ms ms - + Backlight Brightness Ljusstyrka - + Vario repeat at zero Repetition av vario vid noll - + Backlight Auto OFF after Bakgrundsbelysning av efter - - Backlight Control - Kontroll för bakgrundsljus - - - + Text Language Textspråk - + Backlight color Bakgrundsbelysningens färg - - Volume Control - Volymkontroll - - - + Contrast LCD-kontrast - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Efter det angivna antalet minuter av inaktivitet ljuder en varningssignal. 0 förhindrar larm. - - + + Readonly Unlock + + + + + SC + + + + + SE + + + + + SA + + + + + SF + + + + + SH + + + + + SD + + + + + SB + + + + + SG + + + + + Beeper + + + + + Speaker + + + + + BeeperVoice + + + + + SpeakerVoice + + + + + Stick reverse + + + + + Sound Mode + + + + + Charge while radio on + Ladda när radion är på + + + + min min - + + Standard + Standard + + + + Optrex + + + + 4800 Baud 4800 Baud - + 9600 Baud 9600 Baud - + 14400 Baud 14400 Baud - + 19200 Baud 19200 Baud - + 38400 Baud 38400 Baud - + 57600 Baud 57600 Baud - + 76800 Baud 76800 Baud - + 115200 Baud 115200 Baud - + + LCD Display Type + + + + One log per day En logg per dag - + + Key lock + Knapplås + + + Backlight Switch Brytare för bakgrundsbelysning - + Show Splash Screen on Startup Visa startbild - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5896,116 +5978,116 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tyst varning - varnar om summern är satt till tyst läge</p></body></html> - + MAVLink Baud Rate MAVLink Baud Rate - + Speaker Volume Högtalarvolym - + Haptic Length Vibrationstid - + Inactivity Timer Inaktivitetstimer - + --- - - - + + + 2s - - - + + + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + "No Sound" Warning Varna för avstängt ljud - + Haptic Strength Vibrationsstyrka - + Beep volume Ljudstyrka varning - + Wav volume Ljudstyrka Wav - + Vario volume Ljudstyrka vario - + Background volume Ljudstyrka bakgrund - + Stick Mode Spakkonfiguration - + Default Channel Order Kanalordning - + FAI Mode FAI-läge - + Mode selection: Mode 1: @@ -6046,262 +6128,262 @@ Mode 4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanalordning</p><p><br/></p><p>Den ordning på kanaler som används för en ny modell.</p></body></html> - + Label selection mode Alternativ för etikettval - + Label matching Etikettmatchning - + Large image (2 columns) Stora bilder (2 kolumner) - + Small image (3 columns) Små bilder (3 kolumner) - + Name only (2 columns) Endast namn (2 kolumner) - + Name only (1 column) Endast namn (1 kolumn) - + Manage Models layout Layot för modellhantering - + Favorites matching Matcha favoriter - + Multi select Flerval - + Single select Enskilt val - + Match all Matcha alla - + Match any Matcha någon - + Must match Måste matcha - + Optional match Alternativt matcha - - + + 0s 0s - - + + 0.5s 0.5s - + Trainer Poweroff Warning Lärarläge varning vid avstängning - + Power ON/OFF Haptic Vibration vid radio Av/På - + Power Auto Off Automatisk avstängning - + Play Delay (switch mid position) Talfördröjning för brytare - + Play Startup Sound Spela startljud - + PPM Units PPM-enheter - - + + 0.-- - + 0.0 - + us - + Backlight flash on alarm Blinkande ljus vid alarm - + Adjust RTC Justera RTC - + Min Min - - + + v v - + Max Max - + Battery Meter Range Batterimätarens mätområde - + Automatically adjust the radio's clock if a GPS is connected to telemetry. Automatisk justering av radions klocka om GPS-enhet är ansluten till telemetri. - + Backlight OFF Brightness Ljusstyrka för Bakgrundsljus av - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Om du aktiverar FAI kommer endast RSSI och RxBt-sensorerna att fungera. Detta går inte att ändra från radion. - + RSSI Poweroff Warning RSSI-varning vid avstängning - + Low EEPROM Warning Varning för EEPROM minnesbrist - + USB Mode USB-läge - - + + Ask on Connect Fråga vid anslutning - + Joystick (HID) Joystick (HID) - + USB Mass Storage USB masslagring - + USB Serial (CDC) Seriell USB (CDC) - + Hats Mode Hattläge - + Owner Registration ID ID för ägarregistrering - + Power On Delay Fördröjning vid uppstart - + Jack Mode Uttagsläge - + Audio - + Trainer Lärare - + DMS GMS - + Power Off Delay Fördröjning vid avstängning - + This is the switch selectrion for turning on the backlight (if installed). @@ -6310,12 +6392,12 @@ Mode 4: - + Keys Backlight Knappbelysning - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -6326,19 +6408,19 @@ Detta är det gränsvärde vid vilket batterivarningen ljuder. Acceptabla värden är 3 - 12 volt - + Model quick select Snabbval av modell - + Enable this to quickly change model on the model select page (a long press can then be used to open the model edit menu). Aktivera detta för att snabbt byta modell på modellvalssidan. Ett långt knapptryck kan sedan användas för att öppna modellredigeringsmenyn. - - - + + + 1s @@ -6346,7 +6428,23 @@ Acceptabla värden är 3 - 12 volt GeneralSetupPanel - + + Brightness + Ljusstyrka + + + + Flash display on alarm + Blinka skärmen vid alarm + + + + + Not available on this radio (no key combo defined) + Inte tillgängligt på denna radio (ingen knappkombo definierad) + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6513,126 +6611,147 @@ att fungera. Detta går inte att ändra från radion. Dödläge - + + IMU + + + + + X + X + + + + Y + Y + + + Pots Vred - + Switches Brytare - + Flex Switches Flexbrytare - + Source Källa - + Customisable Switches Anpassningsbara brytare - + Start Start - + Off color Färg för av - - + + Lua override - + On color Färg för på - + RTC Battery Check RTC batterikontroll - + Bluetooth - + Device Name: Enhetsnamn: - + Sample Mode - + Serial ports Seriella portar - + Power Ström - + USB-VCP - + + Current Offset + + + + - + ADC Filter ADC-filter - + Mute if no sound Audio av om inget ljud - + S.Port Power S.Port strömkälla - + Screen Skärm - - + + + Invert Invertera - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! Varning: Byte av den interna modulen kan göra modellernas interna modulprotokoll ogiltiga! - + Internal RF Intern RF @@ -6643,44 +6762,44 @@ att fungera. Detta går inte att ändra från radion. - - - - + + + + Name Namn - - + - - + + + Type Typ - + Baudrate: - + Antenna: Antenn: - + External RF Extern RF - + AUX1 - + AUX2 @@ -7037,51 +7156,51 @@ att fungera. Detta går inte att ändra från radion. Hittade %1 - + Cannot write Kan inte skriva - + Cannot extract %1 Kan inte extrahera %1 - - + + Cannot load %1 Kan inte ladda %1 - + Cannot extract Kan inte extrahera + - - + Cannot load Kan inte ladda - + Favorites Favoriter - - + + Can't load MODELS/labels.yml Kan inte ladda MODELS/labels.yml - + Cannot list files Kan inte lista filer - + Error deleting files Fel vid radering av filer @@ -7238,122 +7357,122 @@ att fungera. Detta går inte att ändra från radion. LogicalSwitchesPanel - + V1 Värde 1 - + V2 Värde 2 - + Function Logiskt uttryck - + AND Switch AND-brytare - + Duration Varaktighet - + Delay Fördröjning - + Persistent Bestående - + - + Delete Radera - + Copy Kopiera - + Cut Klipp ut - + Paste Klistra in - + (instant) (omedelbar) - + (infinite) (oändlig) - + Popup menu available Popupmeny tillgänglig - + Clear Rensa - + Clear All Rensa alla - + Clear all Logical Switches. Are you sure? Rensa alla logiska brytare. Är du säker? - + Clear Logical Switch. Are you sure? Rensa den logiska brytaren. Är du säker? - + Cut Logical Switch. Are you sure? Klipp ut den logiska brytaren. Är du säker? - + Delete Logical Switch. Are you sure? Radera den logiska brytaren. Är du säker? - + Insert Lägg till - + Move Up Flytta upp - + Move Down Flytta ned @@ -7540,329 +7659,329 @@ fält MainWindow - - + + File loaded Filen laddad - - + + File saved Filen sparades - + Exit Avsluta - + Classical Klassiskt - + Monochrome Monokromt - + MonoWhite MonoVitt - + MonoBlue MonoBlått - + System language Systemspråk - - + + Settings Inställningar - + Exit the application Avsluta programmet - + Show the application's About box Visa information om programmet - + If you've found this program useful, please support by <a href='%1'>donating</a> Om du tycker att programet är användbart kan du stödja utvecklingen med en <a href='%1'>gåva.</a> - + Create a new Models and Settings file Skapa en ny modell- och inställningsfil - + The classic companion9x icon theme Det klassiska companion9x ikontemat - + Yerico Yerico - + Yellow round honey sweet icon theme Yellow round honey sweet ikontema - + Set Menu Language Ställ in menyspråk - - + + File Arkiv - + Help Hjälp - + Ready Redo - + Compare models Jämför modeller - + Edit Radio Splash Image... Redigera radions startbild... - + Edit the splash image of your Radio Redigera startskärm för din radio - - + + Read Firmware from Radio Läs firmware från radion - + Read firmware from Radio Läs firmware från radion - + Write firmware to Radio Skriv firmware till radion - + Write Models and Settings to Radio Skriv modeller och inställningar till radion - - + + Read Models and Settings from Radio Läs modeller och inställningar från radion - + Write Backup to Radio Skriv säkerhetskopia till radion - + Write Backup from file to Radio Skriv säkerhetskopia från fil till radio - + Backup Radio to File Säkerhetskopiera radion - + Save a complete backup file of all settings and model data in the Radio Spara en fullständig säkerhetskopia av alla data i radion - + Recent Files Senaste filer - + %2 - + The new theme will be loaded the next time you start Companion. De nya ikonerna kommer att användas nästa gång Companion startas. - + Open Models and Settings file Öppna modell- och inställningsfil - + A monochrome black icon theme Ett monokromt svart ikontema - + New Ny - + Open... Öppna... - + Save Spara - + Save As... Spara som... - + A monochrome white icon theme Ett monokromt vitt ikontema - + A monochrome blue icon theme Ett monokromt blått ikontema - + Small Små - + Use small toolbar icons Använd små ikoner i verktygsfälten - + Use normal size toolbar icons Använd normalstora ikoner i verktygsfälten - + Normal Normala - + Use big toolbar icons Använd stora ikoner i verktygsfälten - + Big Stora - + Use huge toolbar icons Använd mycket stora ikoner i verktygsfälten - + Huge Mycket stora - + View Log File... Visa loggfil... - + Open and view log file Öppna och visa loggfil - + Add Radio Profile Lägg till radioprofil - + Set Icon Theme Ställ in ikontema - + Set Icon Size Ställ in ikonstorlek - + Synchronize SD Synkronisera SD-kort - + SD card synchronization Synkronisering av SD-kort - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. En del text kommer inte översättas förrän du startat om Companion. Vänligen notera att vissa översättningar kan saknas. - - + + Models and Settings read Modeller och inställningar inlästa - + This function is not yet implemented Denna funktion är inte implementerad ännu - + Use default system language. Använd förvalt systemspråk. - + Use %1 language (some translations may not be complete). Använd %1 språk. Vissa översättningar kan saknas. - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? @@ -7871,508 +7990,515 @@ Do you wish to continue? Vill du fortsätta? - + No local SD structure path configured! Ingen katalog för lokalt SD-kort konfigurerad! - + No Radio or SD card detected! Ingen radio eller SD-kort hittades! - + The EdgeTX project was originally forked from <a href='%1'>OpenTX</a> EdgeTX har sitt ursprung från <a href='%1'>OpenTX</a> - + About EdgeTX Companion Om EdgeTX Companion - + Close Stäng - + Close Models and Settings file Stäng modell- och inställningsfil - + List of recently used files Nyligen använda filer - + Radio Profiles Radioprofiler - + Create or Select Radio Profiles Skapa eller välj radioprofil - + Release notes... Releasenoteringar... - + Show release notes Visa releasenoteringar - + Create a new Radio Settings Profile Skapa ny profil för radioinställningar - + %1 %2 - Radio: %3 - Profile: %4 %1 %2 - Radio: %3 - Profil: %4 - + Open an existing Models and Settings file Öppna befintlig modell- och inställningsfil - + Save to Models and Settings file Spara till modell- och inställningsfil - + Save Models and Settings to another file name Spara modell- och inställningsfil med annat filnamn - + + Write Models and Settings to SD Path Skriv modeller och inställningar till SD sökväg - + Read Models and Settings from SD Path Läs modeller och inställningar från SD sökväg - + Edit Settings... Redigera inställningar... - + Edit %1 and Simulator settings (including radio profiles) settings Redigera %1 och inställningar för simulatorn ( inklusive radioprofilerna) - + Export Settings... Exportera inställningar... - + Import Settings... Importera inställningar... - + Compare Models Jämför modeller - + Update components... Uppdatera komponenter... - + Download and update EdgeTX components and supporting resources Ladda ner och uppdatera EdgeTX komponenter och stödjande resurser - + Synchronize SD card... Synkronisera SD-kortet... - + Copy Current Radio Profile Kopiera aktuell radioprofil - + Duplicate current Radio Settings Profile Duplicera nuvarande profil för radioinställningar - + Delete Current Radio Profile... Radera nuvarande radioprofil... - + Delete the current Radio Settings Profile Radera nuvarande profil för radioinställningar - + File Toolbar Verktygsrad Fil - + Configure File toolbar visibility Konfigurera synlighet för verktygsrad Fil - + Models Toolbar Verktygsrad Modell - + Configure Models toolbar visibility Konfigurera synlighet för verktygsrad Modell - + Radio Toolbar Verktygsrad Radio - + Configure Radio toolbar visibility Konfigurera synlighet för verktygsrad Radio - + Settings Toolbar Verktygsrad Inställningar - + Configure Settings toolbar visibility Konfigurera synlighet för verktygsrad Inställningar - + Tools Toolbar Verktygsrad Verktyg - + Configure Tools toolbar visibility Konfigurera synlighet för verktygsrad Verktyg - + Tabbed Windows Som flikar - + Use tabs to arrange open windows. Använd flikar för att arrangera öppna fönster. - + Tile Windows Bredvid varandra - + Arrange open windows across all the available space. Ordna öppna fönster över hela det tillgängliga utrymmet. - + Cascade Windows Stapla på varandra - + Arrange all open windows in a stack. Stapla alla öppna fönster på varandra. - + Close All Windows Stäng alla fönster - + Closes all open files (prompts to save if necessary. Stänger alla öppna filer (möjligt att spara dem först). - + About Om - + View Utseende - - + + Models Modeller - - + + Radio Radio - - + + Tools Verktyg - + Window Fönster - + Ctrl+Shift+S - + Ctrl+Alt+L - + Read Models and Settings from SD path Läs modeller och inställningar från SD sökväg - + + Operation aborted: %1 models have errors that may affect operation. +%2 + + + + Writing models and settings to SD path Skriver modeller och inställningar till SD sökväg - + Ctrl+Alt+D - + Ctrl+Alt+R - + Alt+%1 - + Cannot add profile Kan inte lägga till radioprofil - + There is no space left to add a new profile. Delete an exsting profile before adding a new one. Det finns inte plats för ännu en radioprofil. Radera en befintlig profil innan du lägger till en ny. - + - Copy - Kopiera - + Companion :: Open files warning Companion :: Varning för öppna filer - + Please save or close modified file(s) before deleting the active profile. Vänligen spara eller stäng ändrade filer innan aktiv profil tas bort. - + Not possible to remove profile Profilen kan inte tas bort - + The default profile can not be removed. Den förvalda profilen kan inte tas bort. - + Confirm Delete Profile Bekräfta radera profil - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! Vill du verkligen radera radioprofil %1? Detta går inte att ångra! - + Local Folder Lokal katalog - + Radio Folder Radiokatalog - + Detect Radio Detektera radio - + Radio could not be detected by DFU or UF2 modes Radion kunde inte detekteras av DFU- eller UF2-lägen - + Check cable is securely connected and radio lights are illuminated Kontrollera att kabeln är ordentligt ansluten och radions belysning är tänd - + Note: USB mode is not suitable for reading firmware. OBS! USB-läge är inte lämpligt för att läsa firmware. - + Read Firmware From Radio Läs firmware från radio - + Could not read radio firmware: %1 Kunde inte läsa radions firmware: %1 - + Save all the current %1 and Simulator settings (including radio profiles) to a file. Spara all nuvarande %1 och simulatorinställningar (inkl. radioprofiler) till fil. - + Load %1 and Simulator settings from a prevously exported settings file. Ladda in %1 och simulatorns inställningar från tidigare exporterad inställningsfil. - - + + Connected Radios Anslutna radior - + Get a list of connected radios Få en lista med anslutna radior - + Please save or close all modified files before importing settings Spara eller stäng alla ändrade filer innan inställningarna importeras - + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> <html><p>%1 och simulatorinställningarna kan importeras (återställas) från en tidigare sparad exportfil (säkerhetskopia). Detta ersätter nuvarande inställningar med de som finns i filen.</p><p>Ett försök till säkerhetskopiering av nuvarande inställningar kommer att göras men det är starkt rekommenderat att först göra en manuell säkerhetskopiering, särskilt om inställningarna är väl fungerande.</p><p>För bästa resultat vid import av inställningarna, <b>stäng alla %1 öppna fönster och säkerställ att den fristående simulatorn inte körs.</p><p>Vill du fortsätta?</p></html> - + Confirm Settings Import Bekräfta import av inställningarna - + Select %1: Välj %1: - + backup säkerhetskopiera - + Press the 'Ignore' button to continue anyway. Tryck på 'Hoppa över' för att fortsätta i alla fall. - + The settings could not be imported. Inställningarna kunde inte importeras. - + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> <html><p>Nya inställningar har lästs in från:<br> %1.</p><p>%2 kommer nu att ominitialiseras.</p><p>Du kan behöva stänga och starta om %2 innan vissa inställningar som exempelvis språk och ikonteman börjar gälla.</p> - + <p>The previous settings were backed up to:<br> %1</p> <p>Föregående inställningar säkerhetskopierades till:<br> %1</p> - + EdgeTX Home Page: <a href='%1'>%1</a> EdgeTX hemsida: <a href='%1'>%1</a> - + File new <a href='%1'>Issue or Request</a> Anmäl <a href='%1'>problem eller önskemål</a> - + Copyright Copyright - + Check for updates... Sök efter uppdateringar... - + Check for updates to EdgeTX and supporting resources Sök efter uppdateringar för EdgeTX och understödda resurser - + Write Firmware to Radio Skriv firmware till radion - - + + Checking for updates... Kollar efter uppdateringar... - + Writing models and settings to radio Skriver modeller och inställningar till radion - - + + In progress... Pågående... @@ -8380,124 +8506,124 @@ Vill du fortsätta? MdiChild - + Editing model %1: Redigera modell %1: - + Unable to find file %1! Kan inte hitta filen %1! - + Error reading file %1: %2. Fel vid inläsning av fil %1: %2. - + Error opening file %1: %2. Fel vid öppning av fil %1: %2. - + Save As Spara som - + %1 has been modified. Do you want to save your changes? %1 har ändrats. Vill du spara ändringarna? - + Unable to find SD card! Kan inte hitta SD-kortet! - + Models and settings written Modeller och inställningar skrivna - + Error writing models and settings! Fel vid skrivning av modeller och inställningar! - + Open backup Models and Settings file Öppna modell- och inställningsfil - + Invalid binary backup File %1 Binära säkerhetskopian är ogiltig %1 - - + + Delete Radera - + Alt+S Alt+S - + Do you want to overwrite radio general settings? Vill du skriva över de generella radioinställningarna? - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -8506,7 +8632,7 @@ Vill du spara ändringarna? - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -8515,165 +8641,167 @@ Vill du spara ändringarna? - + Nothing selected Inget valt - + Edit Model Redigera modell - + Cut Klipp ut - + Ctrl+Alt+O - + Ctrl+Alt+E - + Copy Kopiera - + Paste Klistra in - - - + + + Insert Lägg till - - + + Import - + Edit Radio Settings Redigera radioinställningar - + Copy Radio Settings Kopiera radioinställningar - + Paste Radio Settings Klistra in radioinställningar - + + Simulate Radio Simulera radio - + Radio Models Order Radiomodellordning - + Delete Model Radera modell - + Add Model Lägg till modell - + Model Modell - + Import Model Importera modell - + Restore from Backup Återställ från säkerhetskopia - + Model Wizard Modellguide - + Set as Default Ange som förval - + Print Model Skriv ut modell - + + Simulate Model Simulera modell - + Duplicate Model Duplicera modell - + Show Model Errors Visa modellfel - + Show Radio Actions Toolbar Visa verktygsfältet för radio - + Show Model Actions Toolbar Visa verktygsfältet för modell - + Cannot insert model, last model in list would be deleted. Kan inte lägga till modell, sista modellen i listan skulle raderas. - + Cannot add model, could not find an available model slot. Kan inte lägga till modell, ingen modellplats tillgänglig. - + Cannot paste model, out of available model slots. Kan inte klistra in modell, slut på lediga modellplatser. - + Apply to all remaining models Tillämpa för alla återstående modeller - + Delete %n selected model(s)? Radera %n vald modell? @@ -8681,241 +8809,262 @@ Vill du spara ändringarna? - + Cannot duplicate model, could not find an available model slot. Kan inte duplicera modellen, ingen ledig modellplats finns. - + + Operation aborted: %1 models have errors that may affect simulation. +%2 + Bearbetning avbruten: %1 modeller har fel som kan påverka simuleringen. +%2 + + + + Operation aborted: selected model has errors that may affect simulation. +%1 + Bearbetning avbruten: vald modell har fel som kan påverka simuleringen. +%1 + + + New File Ny fil - + Unable to load settings from profile! Kan inte ladda inställningar från profilen! - + Do you wish to continue with the conversion? Vill du fortsätta med konverteringen? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. Välj <i>Tillämpa</i> för att konvertera filen, eller <i>Stäng</i> för att stänga filen utan konvertering. - + <b>The conversion generated some important messages, please review them below.</b> <b>Konverteringen genererade några viktiga meddelanden, se nedan.</b> - + Companion :: Conversion Result for %1 Companion :: Resultat för konverteringen av %1 - + + Operation aborted as %1 models have significant errors that may affect model operation. +%2 + Bearbetning avbruten, då %1 modeller har betydande fel som kan påverka förfarandet. +%2 + + + Models status Modellstatus - + No errors Inga fel - - Errors - Fel + + Double click to display errors + Dubbelklicka för att visa felen + + + + Models Status + Modellstatus - + Open Model file Öppna modellfil - + Cannot import model, out of available model slots. Kan inte importera modell, slut på lediga modellplatser. - + Model slot in use! Do you want to overwrite or insert into a new slot? Modellplatsen används! Vill du skriva över eller lägga till på ledig plats? - + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> <p><b>Aktiv radiotyp (%1) är inte kompatibel med fil %3 (från %2), modeller och inställningar behöver konverteras.</b></p> - + read only endast läsning - + Unable to Edit Radio Settings whilst models are open for editing. Kan inte ändra radioinställnngar medan modeller är öppna för redigering. - + Select a model template file Välj en modellmallsfil - + Add a new model using Lägg till modell genom att använda - + Defaults Förval - + Edit Redigera - + Wizard Guide - + Failed to remove temporary model! Temporär modell kunde inte tas bort! - - + + Alt-L - + Ctrl+Alt+S - - + + Export Exportera - + Export Model Exportera modell - + Model already exists! Do you want to overwrite it or insert into a new slot? Modellen finns redan! Vill du skriva över den eller lägga till den på en ny plats? - - + + Overwrite Skriva över - + Favorites Favoriter - + Internal module protocol changed to <b>OFF</b> for %1 models! Den interna modulens protokoll ändrades till <b>AV</b> för %1 modeller! - + Template Mall - + Export model Exportera modell - + Alt-R - + Alt-+ - + Alt-- - + Labels Management Etiketthantering - + Add Lägg till - + Rename Byt namn - + Move Up Flytta upp - + Move Down Flytta ner - + Show Labels Actions Toolbar Visa verktygsfältet för etiketter - - + + Invalid file extension! Ogiltigt filsuffix! - + Write Models and Settings Skriv modeller och inställningar - - Operation aborted as %1 models have significant errors that may affect model operation. - Operationen avböts då %1 modeller har avsevärda fel som kan påverka hanteringen av dem. - - - + You are about to overwrite ALL models. Du är på väg att skriva över ALLA modeller. - + Continue? Fortsätta? - + Do not show this message again Visa inte detta meddelande igen @@ -9090,157 +9239,162 @@ Vill du spara ändringarna? Dialog - - - - + + + + Source Källa - - - + + + The source for the mixer Mixerkälla - + Weight Vikt - + + Include DR/Expo + + + + Modes Lägen - + 2 Beeps 2 pip - + 3 Beeps 3 pip - + Offset Offset - + Precision - + Include Trim Inkludera trim - + Curve Kurva - + The curve used by the mix Mixerkurvan - + Switch Brytare - + Warning Varning - + OFF Av - + 1 Beep 1 pip - + Multiplex Multiplex - + ADD Lägg till - + MULTIPLY Multiplicera - + REPLACE Ersätt - + 0.0 0.0 - + 0.00 0.00 - + Delay Fördröjning - + Slow Tröghet - + Up Upp - + Down Ner - + Yes Ja - + No Nej - + Name Namn - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -9265,22 +9419,22 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Om tröghet inte är noll kommer hastigheten i förändringar att begränsas av det angivna värdet -&gt; värdet specificerar det antal sekunder det tar att gå från fullt negativt utslag (-100) till fullt positivt utslag (100).</p></body></html> - + Click to access popup menu Klicka för att öppna popupmeny - + Clear All Rensa allt - + Set All Ställ in allt - + Invert All Invertera allt @@ -9290,7 +9444,7 @@ p, li { white-space: pre-wrap; } - + image bild @@ -9458,140 +9612,140 @@ p, li { white-space: pre-wrap; } ModelData - + Model: Modell: - + THR GAS - + OFF AV - + Throttle Source Gaskälla - + Slave/Jack Elev/Uttag - + Master/SBUS Module Lärare/SBUS-modul - + Master/CPPM Module Lärare/CPPM-modul - + Master/Jack Lärare/Uttag - + TH GAS - + Master/Serial Lärare/Seriell - + Master/Bluetooth Lärare/Bluetooth - + Slave/Bluetooth Elev/Bluetooth - + Master/Multi Lärare/Multi - + Master/CRSF Lärare/CRSF - + NONE INGEN - + TOGGLE SKIFTA - + 2POS - + Global Global - + SW - - + + Off Av - + --- - + Group Grupp - + On På - + Error - Input %1 Line %2 %3 Fel - Input %1 rad %2 %3 - - + + has no source saknar källa - + Error - Mix %1 Line %2 %3 Fel - Mix %1 rad %2 %3 - - + + Restore Återställ @@ -9629,10 +9783,22 @@ p, li { white-space: pre-wrap; } Specialfunktioner - + Telemetry Telemetri + + + Simulate Model + Simulera modell + + + + Operation aborted: model has errors that may affect simulation. +%1 + Bearbetning avbruten: modellen har fel som kan påverka simuleringen. +%1 + Simulate @@ -9664,13 +9830,13 @@ p, li { white-space: pre-wrap; } Output - - + + Custom Screens Anpassade skärmar - + Enabled Features Aktiverade funktioner @@ -9791,101 +9957,101 @@ p, li { white-space: pre-wrap; } Okänd - + Off Av - - + + FM%1 FM%1 - + FM%1%2 FM%1%2 - + FM%1+%2 - + NoTrim Ingen trim - + No Trim Ingen trim - + Disabled in all flight modes Inaktiverad i alla flyglägen - + Custom Special - - + + Offset(%1) Offset(%1) - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - - + + Weight(%1) Vikt(%1) - - + + Switch(%1) Brytare(%1) - + Delay(u%1:d%2) Fördröjning(u%1:d%2) - + Slow(u%1:d%2) Långsam(u%1:d%2) - + Warn(%1) Varning(%1) - + instant omedelbar @@ -9936,434 +10102,439 @@ p, li { white-space: pre-wrap; } - - + + OFF Av - + Mode Läge - - + + Channels Kanaler - - + + Frame length Ramlängd - + PPM delay PPM-fördröjning - - + + Polarity Polaritet - + Protocol Protokoll - - + + Delay Fördröjning - - + + Receiver Mottagare - + Radio protocol Radioprotokoll - + Subtype Subtyp - + Option value Alternativ värde - - + + Sub Type Subtyp - + RF Output Power RF uteffekt - + Options Alternativ - + Type Typ - + Enable AETR Aktivera AETR - + Arming mode Aktiveringsläge - + Switch Brytare - - - - - + + + + + None Ingen - + 3POS - + + No DR/Expo + + + + Delay precision(0.00) Fördröjning precision(0.00) - + Slow precision(0.00) Långsam precision (0.00) - + Disabled in all drive modes Inaktiverad i alla körlägen - + Flight modes Flyglägen - + Flight mode Flygläge - + Drive modes Körlägen - + Drive mode Körläge - + All Alla - + Edge Edge - + infinite oändlig - + Sticky Sticky - + Persistent Bestående - + Timer Timer - + missing saknas - + Duration Varaktighet - + Extended Limits Utökade gränser - + Display Checklist Visa checklista - + Global Functions Globala funktioner - + Manual Manuell - + Auto Automatisk - + Failsafe Mode Failsafemetod - - + + Hold Lås senaste - + No Pulse Ingen puls - + Not set Ej inställt - + No pulses Inga pulser - + Step Steg - + Display Display - + Extended Utökade - + Hats Mode Hattläge - + Never Aldrig - + On Change Vid förändring - + Always Alltid - + Trims only Endast trimm - + Keys only Endast knapp - + Switchable Ändringsbar - + Global Global - - - + + + Source Källa - + Trim idle only Gastrim enbart för tomgång - + Warning Varning - + Reversed Omvänd - + Trim source Trimmkälla - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (kabel) - + Alti Höjd - + Alti+ Höjd+ - + VSpeed VFart - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Celler - + Min Min - + Max Max - + Numbers Siffror - + Bars Staplar - + Script Skript - + Filename Filnamn - + Raw 12 bits Rå 12 bits - + Scale(%1) Skala(%1) @@ -10700,110 +10871,110 @@ p, li { white-space: pre-wrap; } Negativ - + Trainer Port Lärarport - + Internal Radio System Internt radiosystem - + External Radio Module Extern radiomodul - + Radio System Radiosystem - + Flysky AFHDS2A - + Flysky AFHDS3 - + 10mW - 16CH 10mW - 16KA - - + + 100mW - 16CH 100mW - 16KA - + 500mW - 16CH 500mW - 16KA - + Auto <= 1W - 16CH Auto <= 1W - 16KA - - + + 25mW - 8CH 25mW - 8KA - - + + 25mW - 16CH 25mW - 16KA - + 200mW - 16CH (no telemetry) 200mW - 16KA (ingen telemetri) - + 500mW - 16CH (no telemetry) 500mW - 16KA (ingen telemetri) - + 100mW - 16CH (no telemetry) 100mW - 16KA (ingen telemetri) - + 25 mW - + 100 mW - + 500 mW - + 1 W - + 2 W - + OFF AV @@ -10813,179 +10984,184 @@ p, li { white-space: pre-wrap; } - - + + SPort - + + Extra Radio System + + + + PPM - + Silverlit A - + Silverlit B - + Silverlit C - + CTP1009 - + LP45 - + DSM2 - + DSMX - + PPM16 - + PPMsim - + FrSky XJT (D16) - + FrSky XJT (D8) - + FrSky XJT (LR12) - + FrSky DJT - + Crossfire - + Multi - + FrSky R9M - + FrSky R9M Lite - + FrSky R9M Lite Pro - + SBUS output at VBat - + FrSky ACCESS ISRM - + FrSky ACCST ISRM D16 - + FrSky ACCESS R9M 2019 - + FrSky ACCESS R9M Lite - + FrSky ACCESS R9M Lite Pro - + FrSky XJT lite (D16) - + FrSky XJT lite (D8) - + FrSky XJT lite (LR12) - + Ghost - + Lemon-Rx DSMP - + CH5 KA5 - + Switch Brytare - - + + No Telemetry Ingen telemetri - + MLink @@ -10993,57 +11169,57 @@ p, li { white-space: pre-wrap; } ModulePanel - + internal intern(a) - + external externa - + hardware hårdvaru/hårdvara - + profile profilen - + Warning: The %1 module protocol <b>%2</b> is incompatible with the <b>%3 %1 module %4</b> and has been set to <b>OFF</b>! Varning! Modulprotokollet %1 <b>%2</b> är inkompatibelt med <b>%3 %1 modul %4</b> och har satts till <b>AV</b>! - + Value Värde - + Hold Håll senaste - + No Pulse Inga pulser - + Bind on channel Parkoppla på kanal - + Options Alternativ - + Type Typ @@ -11051,455 +11227,462 @@ p, li { white-space: pre-wrap; } MultiModelPrinter - + Flight modes Flyglägen - - + + Flight mode Flygläge - - - - + + + + Switch Brytare - + + GV%1 GV%1 - + Channel Kanal - - - - + + + + Name Namn - - + + Min - - + + Max - + Inputs Input - + Mixers Mixar - + Curves Kurvor - + L%1 LB%1 - + Logical Switches Logiska brytare - + SF%1 - + Special Functions Specialfunktioner - + Unit Enhet - + RF Quality Alarms RSSI-alarm - + Input - + Weight Vikt - + Long. cyc Long. cyk - + Lateral cyc Lateral cyk - + Collective - + General Allmänt - + Model Image Modellikon - + Throttle Gas - + Trims Trimmar - + Center Beep Centrumpip - + Switch Warnings Brytarvarningar - + Pot Warnings Pot.varningar - + Other Annan - + Timers - + Time Tid - + Countdown Nedräkning - + Modules Moduler - + Trainer port Elevuttag - + Helicopter Helikopter - + Swash - - - + + + Type Typ - + Ring - + Drive modes Körlägen - - + + Drive mode Körläge - + Prec - + Popup - + Outputs Output - + Subtrim - + Direct Direkt - + Curve Kurva - + PPM - + Linear Linjär - + + Global Variables + Globala variabler + + + Telemetry Telemetri - + Protocol Protokoll - + Low Låg - + Critical Kritisk - + Telemetry audio Telemetriljud - + Altimetry Höjdmätning - + + Vario source Vario källa - + Vario limits > Vario gränser - + Sink max Max.sjunk - + Sink min Min.sjunk - + Climb min Min stig - + Climb max Max stig - + Center silent Centrumtystnad - + Top Bar Övre raden - + Volts source Volt källa - + Altitude source Höjdkälla - - - + + + Parameters Parametrar - + Telemetry Sensors Telemetrisensorer - + Telemetry Screens Telemetriskärmar - + Min.call Minutannonsering - + Persist Bestående - + F.In Tona in - + F.Out Tona ut - + Global vars Globala var - + GF%1 - + Global Functions Globala funktioner - + Checklist Checklista - + Mode Läge - - + + Start Start - + Customizable Switches Anpassningsbara brytare - + Switch %1 Brytare %1 - + Group Grupp - + Always On Alltid på - + Multi sensors Multisensorer - - + + Function Funktion - - + + Repeat Repetera - - + + Enabled Aktiverad - + Show Instance IDs Visa instans-IDn @@ -11507,7 +11690,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate Servouppdateringsfrekvens @@ -11989,12 +12172,12 @@ r - + Source Källa - + None Ingen @@ -12093,7 +12276,7 @@ r - + - @@ -12101,22 +12284,22 @@ r RawSwitch - + ↑ - + ↓ - + - - + ! @@ -12152,13 +12335,13 @@ r - + OFF Av - + ON På @@ -12178,27 +12361,27 @@ r - + One En - + ---- - + Switch Brytare - + None Ingen - + Act @@ -12331,12 +12514,12 @@ r - + Telemetry Telemetri - + Trn Instr @@ -12370,26 +12553,21 @@ r SdcardFormat - + Error opening file %1: %2. Fel vid öppning av fil %1: %2. - + Error opening file %1 in write mode: %2. Fel vid öppning av fil %1 i skrivläge: %2. - - Error writing image file: %1 - Fel vid skrivning av bildfi:l %1 - - - + Error deleting file %1 Fel vid radering av fil %1 @@ -12984,77 +13162,77 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga SetupPanel - + Timer %1 - + Clear Rensa - + Clear All Rensa alla - + Clear all Timers. Are you sure? Rensa alla timers. Är du säker? - + Clear Timer. Are you sure? Rensa timern. Är du säker? - + Copy Kopiera - + Cut Klipp ut - + Cut Timer. Are you sure? Klipp ut timern. Är du säker? - + Delete Radera - + Delete Timer. Are you sure? Radera timern. Är du säker? - + Insert Lägg till - + Move Up Flytta upp - + Move Down Flytta ner - + Paste Klistra in - + Popup menu available Popupmeny tillgänglig @@ -13076,17 +13254,17 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga skärmbild - + Scrl Up Scrl upp - + Scrl Dn Scrl ner - + Shortcut: %1 Genväg: %1 @@ -13365,104 +13543,104 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga SimulatorMain - + Available profiles: Tillgängliga profiler: - + ID: - + Name: Namn: - + Available radios: Tillgängliga radior: - + Radio profile ID or Name to use for simulator. Radioprofil-ID eller namn för simulatorn. - + profile profil - + Radio type to simulate (usually defined in profile). Radiotyp att simulera (vanligen definierat i profilen). - + radio - + Directory containing the SD card image to use. The default is configured in the chosen Radio Profile. Katalog som innehåller SD-kortavbildningen. Förvalt värde konfigureras i den valda radioprofilen. - + path sökväg - + type typ - + Flags passed from Companion Flaggor skickade från Companion - + flags flaggor - + data-source datakälla - + [data-source] [datakälla] - + Error: Profile ID %1 was not found. Fel: Profil-ID %1 hittades ej. - + Unrecognized startup data source type: %1 Okänd typ av datakälla för uppstart:%1 - + WARNING: couldn't initialize SDL: %1 VARNING: Kunde inte initialisera SDL: %1 - + ERROR: No simulator libraries available. FEL: Biblioteksfiler för simulatorn saknas. - + ERROR: Couldn't start simulator, missing radio/profile/data file/folder. Profile ID: [%1]; Radio ID: [%2]; Data File: [%3] @@ -13471,31 +13649,31 @@ Data File: [%3] Datafil: [%3] - + ERROR: Radio profile or simulator firmware not found. Profile ID: [%1]; Radio ID: [%2] FEL: Radioprofil eller firmware för simulatorn saknas. Profil-ID: [%1]; Radio-ID [%2] - + Radio data (.bin/.eeprom/.etx) image file to use OR data folder path (for Horus-style radios). NOTE: any existing EEPROM data incompatible with the selected radio type may be overwritten! Radiodatafil (.bin/.eeprom/.etx) att använda ELLER sökväg till datakatalogen (för sändare av Horus-typ). OBS! All befintlig EEPROM-data som är inkompatibel med vald radiotyp kan komms att skrivas över! - + EdgeTx Simulator - + Data source type to use. One of: Typ av datakälla att använda. En av: - + Unknown error during Simulator startup. Okänt fel vid uppstart av simulatorn. @@ -13688,108 +13866,108 @@ OBS! All befintlig EEPROM-data som är inkompatibel med vald radiotyp kan komms - + Radio Outputs Utdata från radion - + F2 - + Telemetry Simulator Telemetrisimulator - + F4 - + Trainer Simulator Instruktörssimulator - + F5 - + Debug Output Debugutdata - + F6 - + Simulator Help Simulatorhjälp - + EdgeTX Home Page: <a href='%1'>%1</a> EdgeTX hemsida: <a href='%1'>%1</a> - + The EdgeTX project was originally forked from <a href='%1'>OpenTX</a> EdgeTX har sitt ursprung från <a href='%1'>OpenTX</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Om du tycker att programet är användbart kan du stödja utvecklingen med en <a href='%1'>gåva.</a> - + File new <a href='%1'>Issue or Request</a> Anmäl <a href='%1'>problem eller önskemål</a> - + Copyright Copyright - + About EdgeTX Simulator Om EdgeTX Simulator - + Set voltage Sätt spänning - + V V - + Battery Batteri - + <b>Simulator Controls:</b> <b>Simulatorns kontroller:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). <tr><th>Knapp/Mus</th><th>Funktion</th></tr> - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. @@ -13958,67 +14136,67 @@ Förvalt värde är konfigurerat i den valda radioprofieln. Radiosimulator (%1) - + Unable to handle byte array. Kan inte hantera byte array. - + Could not determine startup data source. Kunde inte bestämma datakälla för uppstart. - + Could not load data, possibly wrong format. Kunde inte ladda data, möjligen fel format. - + Data Load Error Fel vid dataladdning - + Invalid startup data provided. Plese specify a proper file/path. Ogiltig data för uppstart. Vänligen ange en korrekt fil/sökväg. - + Simulator Startup Error Fel vid uppstart av simulatorn - + Error saving data: could open file for writing: '%1' Data kunde inte sparas: kunde inte öppnas för skrivning: '%1' - + An unexpected error occurred while attempting to save radio data to file '%1'. Ett oväntat fel inträffade när radions data skulle sparas till fil '%1'. - + Data Save Error Fel vid skrivning av data - + Cannot open joystick, joystick disabled Ingen joystick kan hittas, joystick inkativerad - + Radio firmware error: %1 Firmware-fel: %1 - + Flight Mode Flygläge - + Drive Mode Körläge @@ -14698,22 +14876,27 @@ För många fel - ger upp. TelemetryPanel - + Low Alarm Låg alarmnivå - + Critical Alarm Kritisk alarmnivå - + Winged Shadow How High - + + Winged Shadow How High (not supported) + + + + Delete Sensor. Are you sure? Radera telemetrisensorn. Är du säker? @@ -15952,13 +16135,6 @@ Tidsstämpel CRSF / ELRS - - - Row # -Timestamp - Radnr. -Tidsstämpel - External Module @@ -16621,7 +16797,7 @@ Tidsstämpel UpdateInterface - + Processing updates for: %1 Bearbetar uppdateringar för: %1 @@ -16636,17 +16812,17 @@ Tidsstämpel Kunde inte skapa %1 katalog %2! - + Unable to set processing flags for asset %1 Kunde inte sätta bearbetningsflaggor för tillgång %1 - + Unable to set sub directory for asset %1 Kunde inte sätta underkatalog för tillgång %1 - + Unable to set copy filter for asset %1 Kunde inte sätta kopieringsfilter för tillgång %1 @@ -16768,69 +16944,69 @@ Tidsstämpel Uppdatering avbruten av användaren - + Preparing Förbereder - + Set run folders failed Kunde inte sätta körkataloger - + %1 start async %2 %1 starta async %2 - - + + %1 preparation %2 %1 förberedelser %2 - + %1 copy to destination %2 %1 kopiera till destination %2 - + %1 decompress %2 %1 packa upp %2 - + %1 download %2 %1 ladda ner %2 - + %1 housekeeping %2 %1 städar %2 - + %1 save release settings %2 %1 spara versionsinställningar %2 - - + + %1 update %2 %1 uppdatering %2 - + failed misslyckades - + successful lyckad - + cancelled avbruten @@ -16881,7 +17057,7 @@ Tidsstämpel Kunde inte radera Radera uppackningskatalog %1 - + Save release settings Spara versionsinställningarna @@ -16896,7 +17072,7 @@ Tidsstämpel %1 tillgångar hittades, när %2 förväntades för version '%3' med filter '%4' - + Set release id from update release '%1' failed Kunde ej sätta versions-id från uppdateringversion '%1' @@ -16912,7 +17088,7 @@ Tidsstämpel - + unknown okänd @@ -17935,7 +18111,7 @@ Bearbeta nu? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. @@ -17944,12 +18120,12 @@ Model and radio settings may be corrupted if you continue. Modell- och radioinställningar kan bli korrupta om du fortsätter. - + Read Radio Settings Läs radioinställningar - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -17962,7 +18138,7 @@ Radiotyp för nuvarande profil kommer användas. Vill du fortsätta? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_zh_CN.ts b/companion/src/translations/companion_zh_CN.ts index 381a28d6cd2..39cf4b7e37f 100644 --- a/companion/src/translations/companion_zh_CN.ts +++ b/companion/src/translations/companion_zh_CN.ts @@ -1020,33 +1020,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1057,279 +1057,279 @@ Error description: %4 Boards - + Left Horizontal 左摇杆水平方向 - + Left Vertical 左摇杆垂直方向 - + Right Vertical 右摇杆上下方向 - + Right Horizontal 右摇杆水平方向 - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global 全局 - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch - + Flight 飞行 [Flight] - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None 无 - + Pot - + Pot with detent 有中位旋钮 - + 2 Positions Toggle 2位弹簧开关 - + 2 Positions 2位开关 - + 3 Positions 3位开关 - + Function 运算方式 [Function] - + Standard 标准LCD [Standard] - + Small 小 - + Both 两侧 @@ -2488,128 +2488,128 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch CustomFunctionPanel 启动开关 - + Action CustomFunctionPanel 功能 - + Parameters CustomFunctionPanel 参数 - + Repeat - + Enable 使用游戏杆 - + Popup menu available - + SF%1 CustomFunctionPanel SF%1 - + GF%1 CustomFunctionPanel GF%1 - + GV GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy 复制 - + Cut - + Paste 粘贴 - + Clear 清除 - + Insert - + Delete 删除 - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3509,424 +3509,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available 不允许锁定通道值功能 - + Possibility to enable FAI MODE (no telemetry) at field 可选择启用 FAI 模式 (没有回传) - + FAI MODE (no telemetry) always enabled 一直启用 FAI 模式 (没有回传) - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 移除 D8 FrSky 协议支持,因为在20151月1日后在欧洲销售的遥控器中使用此协议是不合法的 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support 禁用直升机菜单和CCPM混控菜单 - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables 禁用GV[Global variables]功能 - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font 使用 另一个 SQT5 font - + FrSky Taranis X9D+ FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed 振动模块已经安装 - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown 遥控器关机前确认 - + Horus gimbals installed (Hall sensors) Horus 摇杆已安装 (霍尔传感器) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version 只用与 DEV pcb 版本 - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5104,433 +5129,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware 硬件 - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch - - + + None 无 - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF - + Enabled - + Telemetry 回传设置 Tele - + Trainer 教练功能 - + Telemetry Mirror - + Telemetry In - + SBUS Trainer SBUS 教练功能 [SBUS Trainer] - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug 除错 [Debug] - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only 微调 - + Keys only 导航键 - + Switchable 可切换 - + Global 全局 - + Mode 1 (RUD ELE THR AIL) MODE1 日本手 ↕升降↔方向 ↕油门↔副翼 - + Mode 2 (RUD THR ELE AIL) MODE2 美国手 ↕油门↔方向 ↕升降↔副翼 - + Mode 3 (AIL ELE THR RUD) MODE3 中国手 ↕升降↔副翼 ↕油门↔方向 - + Mode 4 (AIL THR ELE RUD) MODE4 模式4 ↕油门↔副翼 ↕升降↔方向 - + Keys 按键 [Keys] - + Controls - + Keys + Controls - + ON 启用 - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5594,10 +5619,20 @@ Are you sure? 依照UTC调整时间 [From UTC] - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5629,7 +5664,7 @@ Are you sure? 自动调整时钟 - + Vario pitch at max 最大上升率时Vario音调 [Max] @@ -5726,7 +5761,7 @@ Are you sure? - + ms 毫秒 @@ -5759,22 +5794,6 @@ Are you sure? 这个开关用来开启背光 (如果遥控器有背光). - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD 显示屏对比度</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">取值范围 20-45</span></p></body></html> @@ -5802,7 +5821,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5843,7 +5862,7 @@ MODE4 模式4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>通道顺序</p><p><br/></p><p>定义了当新的混控创建时默认的通道顺序.</p></body></html> @@ -5853,12 +5872,12 @@ MODE4 模式4: - + RSSI Poweroff Warning - + Low EEPROM Warning @@ -5913,7 +5932,7 @@ MODE4 模式4: - + Favorites matching @@ -5948,7 +5967,7 @@ MODE4 模式4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5959,226 +5978,226 @@ Acceptable values are 3v..12v 允许值是3V - 12V - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Audio - + Trainer 教练功能 - + DMS - + USB Mode - + Power Off Delay - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode 按键帽模式 - + Stick Mode 摇杆模式 [MODE] - + Metric 公制 [Metric] - + Imperial 英制 [Imperial] - + Default Channel Order 默认通道顺序[Default Ch Order] - + GPS Coordinates GPS坐标格式 [GPS Coordinates] - + Min GeneralEdit 最小 - - + + v GeneralEdit v - + Max GeneralEdit 最大 - + Inactivity Timer 忘记关机定时器 [Inactivity] - + Show Splash Screen on Startup 显示开机画面 [Splash Screen] - + Contrast 显示屏对比度 [Contrast] - + Battery Meter Range 遥控器电池图标范围 [Range] - + Haptic Strength 振动强度 [Haptic Strength] - + LCD Display Type LCD显示屏类型 [LCD Disp Type] - + "No Sound" Warning 当静音时 开机告警 [Sound Off] - + Battery Warning 遥控器电量警告 [Battery Low] - + Haptic Length 振动时长 [Haptic Length] - + MAVLink Baud Rate MAVLink 波特率 [Baud Rate] - - + + Quiet GeneralEdit 禁用 [Quiet] - + Only Alarms GeneralEdit 只有告警 [Alarm] - - + + No Keys GeneralEdit 忽略按键 [NoKey] - - + + All GeneralEdit 开启 [All] - + Standard 标准LCD [Standard] - + Optrex GeneralEdit 光王LCD [Optrex] - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. @@ -6193,13 +6212,13 @@ Acceptable values are 3v..12v - - + + min - + --- GeneralEdit @@ -6210,121 +6229,121 @@ Acceptable values are 3v..12v - - + + 0s 0s - - + + 0.5s 0.5s - - - + + + 2s GeneralEdit - - - + + + 3s GeneralEdit - + 4s GeneralEdit - + 6s GeneralEdit - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud GeneralEdit - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6339,72 +6358,72 @@ p, li { white-space: pre-wrap; } - - + + X-Short GeneralEdit 极短 - - + + Short GeneralEdit 较短 - - + + Normal 正常 - - + + Long GeneralEdit 较长 - - + + X-Long 极长 - + NMEA GeneralEdit - + Play Delay (switch mid position) 开关拨过中档时播音延迟 [Delay] - + Measurement Units 单位制 [Units] - + Haptic Mode GeneralEdit 振动 [Haptic Mode] - + Beeper Length 蜂鸣时长 [Beep Length] - + Beeper Mode 蜂鸣音 [Beep Mode] - + Beeper volume 0 - Quiet. No beeps at all. @@ -6415,15 +6434,15 @@ p, li { white-space: pre-wrap; } - + Alarms Only GeneralEdit 只有告警 [Alarm] - - - + + + 1s 1s @@ -6431,7 +6450,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6597,94 +6632,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source - + Customisable Switches - + Start 开始通道 [CH] - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth 蓝牙 [Bluetooth] - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6694,82 +6744,83 @@ Are you sure ? - + Mute if no sound 音频停播时自动静音 - + Internal RF - - + - - + + + Type - - - - + + + + Name - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset 当前修正 [Offset] - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11196,17 +11247,17 @@ p, li { white-space: pre-wrap; } 不输出脉冲 [No Pulse] - + Bind on channel - + Options - + Type @@ -11677,7 +11728,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12428,13 +12479,13 @@ s - + OFF - + ON 启用 @@ -12454,37 +12505,37 @@ s THt 油门计时 - + One One 单次 - + Act - + ---- - + Telemetry 回传设置 Tele - + Trn - + Switch - + None 无 @@ -16306,22 +16357,22 @@ Timestamp TrainerMix - + OFF - + += (Sum) += (相加) - + := (Replace) := (取代) - + CH%1 通道%1 @@ -18057,19 +18108,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18078,7 +18129,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/translations/companion_zh_TW.ts b/companion/src/translations/companion_zh_TW.ts index 98b640a8572..7ff6bfee74f 100644 --- a/companion/src/translations/companion_zh_TW.ts +++ b/companion/src/translations/companion_zh_TW.ts @@ -1020,33 +1020,33 @@ Mode 4: - - - - + + + + Load Board Hardware Definition - + Board: %1 Error: Unable to load file %2 - + Board: %1 Error: Unable to open file %2 - + Board: %1 Error: Unable to read file %2 - + Board: %1 Error: %2 is not a valid json formatted file. Error code: %3 @@ -1057,279 +1057,279 @@ Error description: %4 Boards - + Left Horizontal 左搖桿水平方向 - + Left Vertical 左搖桿垂直方向 - + Right Vertical 右搖桿上下方向 - + Right Horizontal 右搖桿水平方向 - + Aux. 1 - + Aux. 2 - + LH - + LV - + RV - + RH - - + + TILT_X - - + + TILT_Y - - - - - - - - + + + + + + + + SL1 - - + + P4 - - - - - - - + + + + + + + SL2 - - + + SL3 - - + + SL4 - + P5 - + Global 全局 - + Slider - + Multipos Switch - + Axis X - + Axis Y - + Switch - + Flight 飛行 [Flight] - + Drive - - - - - - - - - + + + - - + + + + + + + + P1 - - - - - - - + + - - + + + + + + + P2 - - - - - + - + + + + + P3 - - + + JSx - - + + JSy - - + + EXT1 - - + + EXT2 - - + + EXT3 - - + + EXT4 - - - + + + None 无 - + Pot - + Pot with detent 有中位旋鈕 - + 2 Positions Toggle 2段彈簧開關 - + 2 Positions 2段開關 - + 3 Positions 3段開關 - + Function 運算方式 [Function] - + Standard 標準LCD [Standard] - + Small 小 - + Both 兩側 @@ -2488,128 +2488,128 @@ Do you want to import settings from a file? CustomFunctionsPanel - + Switch CustomFunctionPanel 啟動開關 - + Action CustomFunctionPanel 功能 - + Parameters CustomFunctionPanel 参数 - + Repeat - + Enable 使用遊戲桿 - + Popup menu available - + SF%1 CustomFunctionPanel SF%1 - + GF%1 CustomFunctionPanel GF%1 - + GV GV - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Unable to find or open sound file: %1 - + Delete Function. Are you sure? - + Cut Special Function. Are you sure? - + Copy 複製 - + Cut - + Paste 貼上 - + Clear 清除 - + Insert - + Delete - + Move Up - + Move Down - + Clear All - + Clear Function. Are you sure? - + Clear all Functions. Are you sure? @@ -3509,424 +3509,449 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + No OverrideCH functions available 不允許鎖定通道值功能 - + Possibility to enable FAI MODE (no telemetry) at field 可選擇啟用 FAI 模式 (沒有回傳) - + FAI MODE (no telemetry) always enabled 一直啟用 FAI 模式 (沒有回傳) - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 移除 D8 FrSky 協議支持,因為在20151月1日後在歐洲銷售的遙控器中使用此協議是不合法的 - - - - + + - - - - - - - - - - + + + + + + + + + + + + Disable HELI menu and cyclic mix support 禁用直升機菜單和CCPM混控菜單 - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Disable Global variables 禁用GV[Global variables]功能 - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + Enable Lua custom scripts screen - + Use alternative SQT5 font 使用 另一個 SQT5 font - + FrSky Taranis X9D+ FrSky Taranis X9D+ - + Enable non certified firmwares - + Enable AFHDS3 support - - + + Disable RAS (SWR) - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed 振動模塊已經安裝 - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown 遙控器關機前確認 - + Horus gimbals installed (Hall sensors) Horus 搖桿已安裝 (霍爾傳感器) - + FrSky Taranis X9-Lite - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + FrSky Horus X10 Express / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version 只用與 DEV pcb 版本 - + Jumper T12 / T12 Pro - - + + Support for MULTI internal module - + Jumper T-Lite - + Jumper T-Pro - + Jumper T16 / T16+ / T16 Pro - + Support for bluetooth module - + Radiomaster TX12 - + Radiomaster TX12 Mark II - + Radiomaster TX16S MK3 - + Radiomaster Zorro - - - - - + + + + + Select if internal ELRS module is installed - + FlySky PA01 - + FlySky PL18EV - + FlySky PL18U - + FlySky ST16 - + + HelloRadioSky V12 + + + + HelloRadioSky V14 - + + HelloRadioSky V14LCD + + + + HelloRadioSky V16 + + + iFlight Commando 8 + + + iFlight Commando 14 + + + + Jumper T-Pro V2 - + Jumper T-Pro S - + Jumper Bumblebee - + Jumper T12 MAX - + Jumper T14 - + Jumper T15 - + Jumper T15 Pro - + Jumper T22 - + Jumper T20 - + Jumper T20 V2 - + Radiomaster Boxer - + Radiomaster Pocket - + Radiomaster MT12 - + Radiomaster T8 - + Allow bind using bind key - + Radiomaster GX12 - + Radiomaster TX15 - + + Radiomaster GX15 + + + + Radiomaster TX16S / SE / Hall / Masterfire - + + Senduwing H17 + + + + Support internal GPS - - + + Support hardware mod: FlySky Paladin EV Gimbals - + Jumper T18 - + FlySky NV14 - + BETAFPV LiteRadio3 Pro - - iFlight Commando8 - - - - + Enable AFHDS2A support - + Fatfish F16 - + FlySky EL18 - + FlySky PL18 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S Access - - + + Support for ACCESS internal module replacement @@ -5104,433 +5129,433 @@ Are you sure? GeneralSettings - + Radio Settings - + Hardware 硬件 - + Internal Module - + Axis & Pots - + Axis - + Pot - + Switches - - + + Flex Switch - - + + Function Switch - - + + Switch - - + + None 无 - + Internal - + Ask - + Per model - + Internal + External - + External - - - + + + OFF - + Enabled - + Telemetry 回傳設置 Tele - + Trainer 教練功能 - + Telemetry Mirror - + Telemetry In - + SBUS Trainer SBUS 教練功能 [SBUS Trainer] - + SBUS Trainer Inverted - + LUA - + CLI - + GPS - + Debug 除錯 [Debug] - + SpaceMouse - + External module - + mA - + Normal - + OneBit - + Trims only 微調 - + Keys only 導航鍵 - + Switchable 可切換 - + Global 全局 - + Mode 1 (RUD ELE THR AIL) MODE1 日本手 ↕升降↔方向 ↕油門↔副翼 - + Mode 2 (RUD THR ELE AIL) MODE2 美國手 ↕油門↔方向 ↕升降↔副翼 - + Mode 3 (AIL ELE THR RUD) MODE3 中國手 ↕升降↔副翼 ↕油門↔方向 - + Mode 4 (AIL THR ELE RUD) MODE4 模式4 ↕油門↔副翼 ↕升降↔方向 - + Keys 按鍵 [Keys] - + Controls - + Keys + Controls - + ON 啟用 - + Open Quick Menu - + MANAGE MODELS - + Model Setup - Model Settings - + Model Setup - Flight Modes - + Model Setup - Inputs - + Model Setup - Mixes - + Model Setup - Outputs - + Model Setup - Curves - + Model Setup - Global Variables - + Model Setup - Logical Switches - + Model Setup - Special Functions - + Model Setup - Mixer Scripts - + Model Setup - Telemetry - + Model Setup - Notes - + Radio Setup - Radio Settings - + Radio Setup - Global Functions - + Radio Setup - Trainer - + Radio Setup - Hardware - + Radio Setup - About EdgeTX - + UI Setup - Themes - + UI Setup - Top Bar - + UI Setup - Current Screen - + UI Setup - Screen 1 - + UI Setup - Screen 2 - + UI Setup - Screen 3 - + UI Setup - Screen 4 - + UI Setup - Screen 5 - + UI Setup - Screen 6 - + UI Setup - Screen 7 - + UI Setup - Screen 8 - + UI Setup - Screen 9 - + UI Setup - Screen 10 - + UI Setup - Add Screen - + Tools - Apps - + Tools - Storage - + Tools - Flight Reset - + Tools - Channel Monitor - + Tools - Logical Switch Monitor - + Tools - Statistics - + Tools - Debug @@ -5594,10 +5619,20 @@ Are you sure? 依照UTC調整時間 [From UTC] - + + Charge while radio on + + + + One log per day + + + Key lock + + Voice Language @@ -5629,7 +5664,7 @@ Are you sure? 自動調整時鐘 - + Vario pitch at max 最大上升率時Vario音調 [Max] @@ -5726,7 +5761,7 @@ Are you sure? - + ms 毫秒 @@ -5759,22 +5794,6 @@ Are you sure? 這個開關用來開啟背光 (如果遙控器有背光). - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD Screen Contrast</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">LCD 显示屏对比度</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">取值范围 20-45</span></p></body></html> @@ -5802,7 +5821,7 @@ p, li { white-space: pre-wrap; } - + Mode selection: Mode 1: @@ -5843,7 +5862,7 @@ MODE4 模式4: - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>通道順序</p><p><br/></p><p>定义了当新的混控创建时默认的通道顺序.</p></body></html> @@ -5853,12 +5872,12 @@ MODE4 模式4: - + RSSI Poweroff Warning - + Low EEPROM Warning @@ -5913,7 +5932,7 @@ MODE4 模式4: - + Favorites matching @@ -5948,7 +5967,7 @@ MODE4 模式4: - + Battery warning voltage. This is the threshold where the battery warning sounds. @@ -5959,226 +5978,226 @@ Acceptable values are 3v..12v 允許值是3V - 12V - + Power On Delay - + Jack Mode - + Play Startup Sound - + PPM Units - - + + 0.-- - + 0.0 0.0 - + us - + Audio - + Trainer 教練功能 - + DMS - + USB Mode - + Power Off Delay - - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Hats Mode 按鍵帽模式 - + Stick Mode 摇杆模式 [MODE] - + Metric 公制 [Metric] - + Imperial 英制 [Imperial] - + Default Channel Order 默認通道順序[Default Ch Order] - + GPS Coordinates GPS坐標格式 [GPS Coordinates] - + Min GeneralEdit 最小 - - + + v GeneralEdit v - + Max GeneralEdit 最大 - + Inactivity Timer 忘記關機定時器 [Inactivity] - + Show Splash Screen on Startup 顯示開機畫面 [Splash Screen] - + Contrast 顯示屏對比度 [Contrast] - + Battery Meter Range 遙控器電池圖標範圍 [Range] - + Haptic Strength 振動強度 [Haptic Strength] - + LCD Display Type LCD顯示屏類型 [LCD Disp Type] - + "No Sound" Warning 當靜音時 開機警告 [Sound Off] - + Battery Warning 遙控器電量警告 [Battery Low] - + Haptic Length 振動時長 [Haptic Length] - + MAVLink Baud Rate MAVLink 波特率 [Baud Rate] - - + + Quiet GeneralEdit 禁用 [Quiet] - + Only Alarms GeneralEdit 只有警告 [Alarm] - - + + No Keys GeneralEdit 忽略按鍵 [NoKey] - - + + All GeneralEdit 開啟 [All] - + Standard 標準LCD [Standard] - + Optrex GeneralEdit 光王LCD [Optrex] - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. @@ -6193,13 +6212,13 @@ Acceptable values are 3v..12v - - + + min - + --- GeneralEdit @@ -6210,121 +6229,121 @@ Acceptable values are 3v..12v - - + + 0s 0s - - + + 0.5s 0.5s - - - + + + 2s GeneralEdit - - - + + + 3s GeneralEdit - + 4s GeneralEdit - + 6s GeneralEdit - + 8s - + 10s - + 15s - + Trainer Poweroff Warning - + Power ON/OFF Haptic - + 4800 Baud GeneralEdit - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - + Power Auto Off - - - - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6339,72 +6358,72 @@ p, li { white-space: pre-wrap; } - - + + X-Short GeneralEdit 極短 - - + + Short GeneralEdit 較短 - - + + Normal 正常 - - + + Long GeneralEdit 較長 - - + + X-Long 極長 - + NMEA GeneralEdit - + Play Delay (switch mid position) 開關撥過中檔時播音延遲 [Delay] - + Measurement Units 單位制 [Units] - + Haptic Mode GeneralEdit 振動 [Haptic Mode] - + Beeper Length 蜂鳴時長 [Beep Length] - + Beeper Mode 蜂鳴音 [Beep Mode] - + Beeper volume 0 - Quiet. No beeps at all. @@ -6415,15 +6434,15 @@ p, li { white-space: pre-wrap; } - + Alarms Only GeneralEdit 只有警告 [Alarm] - - - + + + 1s 1s @@ -6431,7 +6450,23 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + + Brightness + + + + + Flash display on alarm + + + + + + Not available on this radio (no key combo defined) + + + + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -6597,94 +6632,109 @@ Are you sure ? - + + IMU + + + + + X + + + + + Y + + + + Pots - + Switches - + Flex Switches - + Source - + Customisable Switches - + Start 開始通道 [CH] - + Off color - - + + Lua override - + On color - + RTC Battery Check - + Bluetooth 藍牙 [Bluetooth] - + Device Name: - + Sample Mode - + Serial ports - + Power - + USB-VCP - + - + ADC Filter @@ -6694,82 +6744,83 @@ Are you sure ? - + Mute if no sound 音頻停播時自動靜音 - + Internal RF - - + - - + + + Type - - - - + + + + Name - + Baudrate: - + Antenna: - + External RF - + AUX1 - + AUX2 - + S.Port Power - + Current Offset 當前修正 [Offset] - + Screen - - + + + Invert - + Warning: Changing the Internal module may invalidate the internal module protocol of the models! @@ -11196,17 +11247,17 @@ p, li { white-space: pre-wrap; } 不輸出脈衝 [No Pulse] - + Bind on channel - + Options - + Type @@ -11677,7 +11728,7 @@ p, li { white-space: pre-wrap; } Multiprotocols - + Servo update rate @@ -12428,13 +12479,13 @@ s - + OFF - + ON 啟用 @@ -12454,37 +12505,37 @@ s THt 油門計時 - + One One 單次 - + Act - + ---- - + Telemetry 回傳設置 Tele - + Trn - + Switch - + None 无 @@ -16306,22 +16357,22 @@ Timestamp TrainerMix - + OFF - + += (Sum) += (相加) - + := (Replace) := (取代) - + CH%1 通道%1 @@ -18057,19 +18108,19 @@ Process now? YamlGeneralSettings - + Warning: File version %1 is not supported by Companion %2! Model and radio settings may be corrupted if you continue. - + Read Radio Settings - + Warning: Radio settings file is missing the board entry! Current firmware profile board will be used. @@ -18078,7 +18129,7 @@ Do you wish to continue? - + Settings file board (%1) does not match current profile board (%2). Do you wish to continue? diff --git a/companion/src/updates/updatecompanion.cpp b/companion/src/updates/updatecompanion.cpp index f50698874cd..42a29e0c3ac 100644 --- a/companion/src/updates/updatecompanion.cpp +++ b/companion/src/updates/updatecompanion.cpp @@ -31,7 +31,7 @@ #if defined(__APPLE__) #define OS_SUPPORTED_INSTALLER - #define OS_FILEPATTERN "edgetx-cpn-osx" + #define OS_FILEPATTERN "edgetx-cpn-macos" #define OS_INSTALLER_EXTN "*.dmg" #define OS_INSTALL_QUESTION QCoreApplication::translate("UpdateCompanion", "Would you like to open the disk image to install the new version of Companion?") #elif defined(_WIN64) diff --git a/radio/src/FreeRTOSConfig.h b/radio/src/FreeRTOSConfig.h index d63a98ebcf9..dbec146b327 100644 --- a/radio/src/FreeRTOSConfig.h +++ b/radio/src/FreeRTOSConfig.h @@ -24,6 +24,13 @@ // Avoid using any other header file #include extern uint32_t SystemCoreClock; +#if defined(__cplusplus) +extern "C" { +#endif +uint32_t timersGetRunTimeCounter(void); +#if defined(__cplusplus) +} +#endif #define configUSE_PREEMPTION 1 #define configUSE_IDLE_HOOK 0 @@ -47,7 +54,9 @@ extern uint32_t SystemCoreClock; #define configUSE_MALLOC_FAILED_HOOK 0 #define configUSE_APPLICATION_TASK_TAG 0 #define configUSE_COUNTING_SEMAPHORES 0 -#define configGENERATE_RUN_TIME_STATS 0 +#define configGENERATE_RUN_TIME_STATS 1 +#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() +#define portGET_RUN_TIME_COUNTER_VALUE() timersGetRunTimeCounter() #define configUSE_TIMERS 1 #if !defined(DEBUG) @@ -80,6 +89,7 @@ to exclude the API function. */ #define INCLUDE_vTaskDelay 1 #define INCLUDE_xTimerPendFunctionCall 1 #define INCLUDE_uxTaskGetStackHighWaterMark 1 +#define INCLUDE_xTaskGetIdleTaskHandle 1 #if defined(THREADSAFE_MALLOC) #define INCLUDE_xTaskGetSchedulerState 1 diff --git a/radio/src/audio.h b/radio/src/audio.h index 234e8c1f014..0fc1eb03043 100644 --- a/radio/src/audio.h +++ b/radio/src/audio.h @@ -98,6 +98,11 @@ constexpr uint8_t AUDIO_FILENAME_MAXLEN = (AUDIO_LUA_FILENAME_MAXLEN > AUDIO_MOD #define AUDIO_BUFFER_COUNT (3) #endif +static_assert((AUDIO_QUEUE_LENGTH & (AUDIO_QUEUE_LENGTH - 1)) == 0, + "AUDIO_QUEUE_LENGTH must be a power of 2"); +static_assert(2 * AUDIO_BUFFER_COUNT <= 255, + "AUDIO_BUFFER_COUNT free-running counter must fit in uint8_t"); + #define BEEP_MIN_FREQ (150) #define BEEP_MAX_FREQ (15000) #define BEEP_DEFAULT_FREQ (2250) @@ -302,17 +307,28 @@ class AudioBufferFifo { #endif private: + // free-running counters in [0, 2*AUDIO_BUFFER_COUNT); each written by only one side volatile uint8_t readIdx; volatile uint8_t writeIdx; - inline uint8_t nextBufferIdx(uint8_t idx) const + inline uint8_t nextIndex(uint8_t idx) const + { + return (idx >= 2 * AUDIO_BUFFER_COUNT - 1 ? 0 : idx + 1); + } + + inline uint8_t slot(uint8_t idx) const + { + return idx >= AUDIO_BUFFER_COUNT ? idx - AUDIO_BUFFER_COUNT : idx; + } + + uint8_t used() const { - return (idx >= AUDIO_BUFFER_COUNT - 1 ? 0 : idx + 1); + uint8_t w = writeIdx, r = readIdx; + return w >= r ? w - r : w + 2 * AUDIO_BUFFER_COUNT - r; } - bool full() const { return readIdx == nextBufferIdx(writeIdx); } + bool full() const { return used() == AUDIO_BUFFER_COUNT; } bool empty() const { return readIdx == writeIdx; } - uint8_t used() const { return (writeIdx - readIdx) % AUDIO_BUFFER_COUNT; } public: AudioBufferFifo() : readIdx(0), writeIdx(0) @@ -324,22 +340,20 @@ class AudioBufferFifo { // with audioPushBuffer() AudioBuffer *getEmptyBuffer() const { - return full() ? nullptr : &audioBuffers[writeIdx]; + return full() ? nullptr : &audioBuffers[slot(writeIdx)]; } // puts filled buffer into FIFO - void audioPushBuffer() { writeIdx = nextBufferIdx(writeIdx); } + void audioPushBuffer() { writeIdx = nextIndex(writeIdx); } // frees the last played buffer - void freeNextFilledBuffer() { readIdx = nextBufferIdx(readIdx); } + void freeNextFilledBuffer() { readIdx = nextIndex(readIdx); } // returns a pointer to the audio buffer to be played const AudioBuffer *getNextFilledBuffer() { - return empty() ? nullptr : &audioBuffers[readIdx]; + return empty() ? nullptr : &audioBuffers[slot(readIdx)]; } - - bool filledAtleast(int noBuffers) const { return used() >= noBuffers; } }; class AudioFragmentFifo @@ -348,13 +362,25 @@ class AudioFragmentFifo friend void printAudioVars(); #endif private: + // free-running counters in [0, 2*AUDIO_QUEUE_LENGTH); each written by only one side volatile uint8_t ridx; volatile uint8_t widx; AudioFragment fragments[AUDIO_QUEUE_LENGTH]; uint8_t nextIdx(uint8_t idx) const { - return (idx + 1) & (AUDIO_QUEUE_LENGTH - 1); + return (idx + 1) & (2 * AUDIO_QUEUE_LENGTH - 1); + } + + uint8_t slot(uint8_t idx) const + { + return idx & (AUDIO_QUEUE_LENGTH - 1); + } + + uint8_t used() const + { + uint8_t w = widx, r = ridx; + return w >= r ? w - r : w + 2 * AUDIO_QUEUE_LENGTH - r; } public: @@ -364,7 +390,7 @@ class AudioFragmentFifo { uint8_t i = ridx; while (i != widx) { - AudioFragment & fragment = fragments[i]; + AudioFragment & fragment = fragments[slot(i)]; if (fragment.id == id) return true; i = nextIdx(i); } @@ -375,7 +401,7 @@ class AudioFragmentFifo { uint8_t i = ridx; while (i != widx) { - AudioFragment & fragment = fragments[i]; + AudioFragment & fragment = fragments[slot(i)]; if (fragment.id == id) fragment.clear(); i = nextIdx(i); } @@ -389,7 +415,7 @@ class AudioFragmentFifo bool full() const { - return ridx == nextIdx(widx); + return used() == AUDIO_QUEUE_LENGTH; } void clear() @@ -400,8 +426,8 @@ class AudioFragmentFifo const AudioFragment * get() { if (!empty()) { - const AudioFragment * result = &fragments[ridx]; - if (!fragments[ridx].repeat--) { + const AudioFragment * result = &fragments[slot(ridx)]; + if (!fragments[slot(ridx)].repeat--) { // repeat is done, move to the next fragment ridx = nextIdx(ridx); } @@ -414,7 +440,7 @@ class AudioFragmentFifo { if (!full()) { // TRACE("fragment %d at %d", fragment.type, widx); - fragments[widx] = fragment; + fragments[slot(widx)] = fragment; widx = nextIdx(widx); } } diff --git a/radio/src/bitmaps/320x240/default_theme/alpha_stick_background.png b/radio/src/bitmaps/320x240/default_theme/alpha_stick_background.png deleted file mode 100644 index 0eccd510cf2..00000000000 Binary files a/radio/src/bitmaps/320x240/default_theme/alpha_stick_background.png and /dev/null differ diff --git a/radio/src/bitmaps/320x240/default_theme/alpha_stick_pointer.png b/radio/src/bitmaps/320x240/default_theme/alpha_stick_pointer.png deleted file mode 100644 index a9867a7e15a..00000000000 Binary files a/radio/src/bitmaps/320x240/default_theme/alpha_stick_pointer.png and /dev/null differ diff --git a/radio/src/bitmaps/480x272/default_theme/alpha_stick_background.png b/radio/src/bitmaps/480x272/default_theme/alpha_stick_background.png deleted file mode 100644 index b3baf1f79e6..00000000000 Binary files a/radio/src/bitmaps/480x272/default_theme/alpha_stick_background.png and /dev/null differ diff --git a/radio/src/bitmaps/480x272/default_theme/alpha_stick_pointer.png b/radio/src/bitmaps/480x272/default_theme/alpha_stick_pointer.png deleted file mode 100644 index cb1297e4b7d..00000000000 Binary files a/radio/src/bitmaps/480x272/default_theme/alpha_stick_pointer.png and /dev/null differ diff --git a/radio/src/bitmaps/800x480/default_theme/alpha_stick_background.png b/radio/src/bitmaps/800x480/default_theme/alpha_stick_background.png deleted file mode 100644 index fd07208d070..00000000000 Binary files a/radio/src/bitmaps/800x480/default_theme/alpha_stick_background.png and /dev/null differ diff --git a/radio/src/bitmaps/800x480/default_theme/alpha_stick_pointer.png b/radio/src/bitmaps/800x480/default_theme/alpha_stick_pointer.png deleted file mode 100644 index 57dd7aee96a..00000000000 Binary files a/radio/src/bitmaps/800x480/default_theme/alpha_stick_pointer.png and /dev/null differ diff --git a/radio/src/bitmaps/img-src/default_theme/alpha_stick_background.svg b/radio/src/bitmaps/img-src/default_theme/alpha_stick_background.svg deleted file mode 100644 index adb60c45414..00000000000 --- a/radio/src/bitmaps/img-src/default_theme/alpha_stick_background.svg +++ /dev/null @@ -1,460 +0,0 @@ - - - - diff --git a/radio/src/bitmaps/img-src/default_theme/alpha_stick_pointer.svg b/radio/src/bitmaps/img-src/default_theme/alpha_stick_pointer.svg deleted file mode 100644 index 789d511bb8e..00000000000 --- a/radio/src/bitmaps/img-src/default_theme/alpha_stick_pointer.svg +++ /dev/null @@ -1,97 +0,0 @@ - - - - diff --git a/radio/src/boards/helloradio-h750/board.h b/radio/src/boards/helloradio-h750/board.h index 336831a6918..3a528f5d10a 100644 --- a/radio/src/boards/helloradio-h750/board.h +++ b/radio/src/boards/helloradio-h750/board.h @@ -61,7 +61,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/boards/jumper-h750/board.h b/radio/src/boards/jumper-h750/board.h index 354d4bbd9b6..556dcda7f35 100644 --- a/radio/src/boards/jumper-h750/board.h +++ b/radio/src/boards/jumper-h750/board.h @@ -60,7 +60,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/boards/rm-h750/board.h b/radio/src/boards/rm-h750/board.h index a987c59600c..86e49d82aff 100644 --- a/radio/src/boards/rm-h750/board.h +++ b/radio/src/boards/rm-h750/board.h @@ -60,7 +60,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/boards/rm-h750/pdm_software_driver.cpp b/radio/src/boards/rm-h750/pdm_software_driver.cpp index 53373de4d6a..38756953cab 100644 --- a/radio/src/boards/rm-h750/pdm_software_driver.cpp +++ b/radio/src/boards/rm-h750/pdm_software_driver.cpp @@ -28,11 +28,16 @@ #if defined(PDM_CAPTURE_DMA) -static constexpr uint32_t PDM_SAI_MCKDIV = +static constexpr uint32_t PDM_CLOCK_DIV = PDM_SAI_KER_FREQ / PDM_CLOCK_FREQ; -static_assert(PDM_SAI_MCKDIV >= 1 && PDM_SAI_MCKDIV <= 63, +#if defined(PDM_CLOCK_DFSDM) +static_assert(PDM_CLOCK_DIV >= 2 && PDM_CLOCK_DIV <= 256, + "PDM clock divider out of range for DFSDM_CHCFGR1_CKOUTDIV"); +#else +static_assert(PDM_CLOCK_DIV >= 1 && PDM_CLOCK_DIV <= 63, "PDM_SAI MCKDIV out of range for SAI_xCR1_MCKDIV (6 bits)"); +#endif // Burst size: ~6 ms of PDM at 1.6 MHz (multiple of 32 required for word packing). static constexpr uint32_t PDM_BURST_BITS = 10080; @@ -56,21 +61,28 @@ static uint32_t cic_bitsSeen = 0; static bool pdmRunning = false; -void pdmStart() +#if defined(PDM_CLOCK_DFSDM) +// DFSDM1 CKOUT driven from the audio clock (SAI1 kernel clock); only the +// clock output is used, capture stays on the timer + DMA path. +static void pdmClockStart() { - if (pdmRunning) return; - - // Per-session state reset. Must happen before the DMA starts producing data - // so the audio-task path never sees a half-reset filter. - cic_i1 = cic_i2 = cic_i3 = 0; - cic_p1 = cic_p2 = cic_p3 = 0; - cic_bitsSeen = 0; - pdmRingReadPos = 0; - lastSoundLevel = 0; - - gpio_init_af(PDM_CLOCK, PDM_CLOCK_GPIO_AF, GPIO_PIN_SPEED_VERY_HIGH); - gpio_init(PDM_DATA, GPIO_IN, GPIO_PIN_SPEED_VERY_HIGH); + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN | RCC_APB2ENR_DFSDM1EN); + (void)READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN); + + CLEAR_BIT(DFSDM1_Channel0->CHCFGR1, DFSDM_CHCFGR1_DFSDMEN); + DFSDM1_Channel0->CHCFGR1 = + DFSDM_CHCFGR1_CKOUTSRC | + ((PDM_CLOCK_DIV - 1U) << DFSDM_CHCFGR1_CKOUTDIV_Pos); + SET_BIT(DFSDM1_Channel0->CHCFGR1, DFSDM_CHCFGR1_DFSDMEN); +} +static void pdmClockStop() +{ + CLEAR_BIT(DFSDM1_Channel0->CHCFGR1, DFSDM_CHCFGR1_DFSDMEN); +} +#else +static void pdmClockStart() +{ SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); (void)READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); @@ -83,7 +95,7 @@ void pdmStart() | (0U << SAI_xCR1_PRTCFG_Pos) // Free protocol | (4U << SAI_xCR1_DS_Pos) // 16-bit data | SAI_xCR1_NODIV // BCLK = ker_ck / MCKDIV - | (PDM_SAI_MCKDIV << SAI_xCR1_MCKDIV_Pos); + | (PDM_CLOCK_DIV << SAI_xCR1_MCKDIV_Pos); block->CR2 = (1U << SAI_xCR2_FTH_Pos); // FIFO threshold = 1/4 full @@ -96,6 +108,32 @@ void pdmStart() for (int i = 0; i < 4; ++i) block->DR = 0U; SET_BIT(block->CR1, SAI_xCR1_SAIEN); +} + +static void pdmClockStop() +{ + SAI_Block_TypeDef* block = PDM_SAI_BLOCK; + CLEAR_BIT(block->CR1, SAI_xCR1_SAIEN); + while (READ_BIT(block->CR1, SAI_xCR1_SAIEN)) {} +} +#endif + +void pdmStart() +{ + if (pdmRunning) return; + + // Per-session state reset. Must happen before the DMA starts producing data + // so the audio-task path never sees a half-reset filter. + cic_i1 = cic_i2 = cic_i3 = 0; + cic_p1 = cic_p2 = cic_p3 = 0; + cic_bitsSeen = 0; + pdmRingReadPos = 0; + lastSoundLevel = 0; + + gpio_init_af(PDM_CLOCK, PDM_CLOCK_GPIO_AF, GPIO_PIN_SPEED_VERY_HIGH); + gpio_init(PDM_DATA, GPIO_IN, GPIO_PIN_SPEED_VERY_HIGH); + + pdmClockStart(); // TIM15 is free because FLYSKY_GIMBAL is OFF. SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); @@ -148,11 +186,8 @@ void pdmStop() LL_DMA_DisableStream(PDM_CAPTURE_DMA, PDM_CAPTURE_DMA_STREAM); while (LL_DMA_IsEnabledStream(PDM_CAPTURE_DMA, PDM_CAPTURE_DMA_STREAM)) {} - // Disable the SAI block — this stops the PDM clock to the mic, putting it - // into low-power mode. - SAI_Block_TypeDef* block = PDM_SAI_BLOCK; - CLEAR_BIT(block->CR1, SAI_xCR1_SAIEN); - while (READ_BIT(block->CR1, SAI_xCR1_SAIEN)) {} + // Stopping the PDM clock puts the mic into low-power mode. + pdmClockStop(); pdmRunning = false; } diff --git a/radio/src/boards/senduwing-h750/board.h b/radio/src/boards/senduwing-h750/board.h index 17a76725e25..137b63bdc5b 100644 --- a/radio/src/boards/senduwing-h750/board.h +++ b/radio/src/boards/senduwing-h750/board.h @@ -60,7 +60,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/bootloader/bin_fw_files.cpp b/radio/src/bootloader/bin_fw_files.cpp index 7580bcab741..35a07416b6a 100644 --- a/radio/src/bootloader/bin_fw_files.cpp +++ b/radio/src/bootloader/bin_fw_files.cpp @@ -53,13 +53,14 @@ static FWFileInfo fwFiles[MAX_FW_FILES]; static uint8_t Block_buffer[BLOCK_LEN]; static UINT BlockCount; -static void flashWriteBlock() +static bool flashWriteBlock() { // TODO: use some board provided driver instead uint32_t blockOffset = 0; #if !defined(SIMU) while (BlockCount) { - flashWrite((uint32_t *)firmwareAddress, (uint32_t *)&Block_buffer[blockOffset]); + if (!flashWrite((uint32_t *)firmwareAddress, (uint32_t *)&Block_buffer[blockOffset])) + return false; blockOffset += FLASH_PAGESIZE; firmwareAddress += FLASH_PAGESIZE; if (BlockCount > FLASH_PAGESIZE) { @@ -70,6 +71,7 @@ static void flashWriteBlock() } } #endif // SIMU + return true; } void sdInit(void) @@ -267,17 +269,24 @@ void firmwareInitWrite(uint32_t index) firmwareWritten = 0; } -bool firmwareWriteBlock(uint32_t* progress) +FlashWriteRes firmwareWriteBlock(uint32_t* progress) { - flashWriteBlock(); + if (!flashWriteBlock()) return FW_ERROR; + firmwareWritten += sizeof(Block_buffer); *progress = (100 * firmwareWritten) / firmwareSize; - readFirmwareFile(); + // a read error or a short file must not be reported as success + if (readFirmwareFile() != FR_OK) { + return FW_ERROR; + } + if (BlockCount == 0 && firmwareWritten < firmwareSize) { + return FW_ERROR; + } if (BlockCount == 0 || firmwareWritten >= FLASHSIZE - BOOTLOADER_SIZE) { - return true; + return FW_DONE; } - return false; + return FW_IN_PROGRESS; } diff --git a/radio/src/bootloader/boot.h b/radio/src/bootloader/boot.h index 5c740a5a8ab..8918956c251 100644 --- a/radio/src/bootloader/boot.h +++ b/radio/src/bootloader/boot.h @@ -53,6 +53,7 @@ enum BootloaderState { ST_FLASH_CHECK, ST_FLASHING, ST_FLASH_DONE, + ST_FLASH_ERROR, ST_RESTORE_MENU, ST_USB, #if defined(SPI_FLASH) diff --git a/radio/src/bootloader/boot_menu.cpp b/radio/src/bootloader/boot_menu.cpp index 74896b5a4e9..ecdb2ce361d 100644 --- a/radio/src/bootloader/boot_menu.cpp +++ b/radio/src/bootloader/boot_menu.cpp @@ -96,6 +96,7 @@ void bootloaderMenu() uint8_t index = 0; FRESULT fr; uint32_t nameCount = 0; + uint32_t progress = 0; sdInit(); @@ -107,7 +108,8 @@ void bootloaderMenu() next_frame += FRAME_INTERVAL_MS; if (state != ST_USB && state != ST_FLASHING - && state != ST_FLASH_DONE && state != ST_RADIO_MENU) { + && state != ST_FLASH_DONE && state != ST_FLASH_ERROR + && state != ST_RADIO_MENU) { if (usbPlugged()) { state = ST_USB; #if !defined(SIMU) @@ -244,14 +246,16 @@ void bootloaderMenu() } else if (result == 1) { // confirmed firmwareInitWrite(vpos); + progress = 0; state = ST_FLASHING; } } else if (state == ST_FLASHING) { - uint32_t progress = 0; - bool done = firmwareWriteBlock(&progress); + FlashWriteRes res = firmwareWriteBlock(&progress); bootloaderDrawScreen(state, progress); - if(done) { + if (res == FW_DONE) { state = ST_FLASH_DONE; + } else if (res == FW_ERROR) { + state = ST_FLASH_ERROR; } #if defined(SPI_FLASH) } else if (state == ST_CLEAR_FLASH_CHECK) { @@ -282,13 +286,15 @@ void bootloaderMenu() } } - if (state == ST_FLASH_DONE) { + if (state == ST_FLASH_DONE || state == ST_FLASH_ERROR) { + BootloaderState drawn = state; + if (event == EVT_KEY_BREAK(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_ENTER)) { state = ST_START; vpos = 0; } - bootloaderDrawScreen(state, 100); + bootloaderDrawScreen(drawn, drawn == ST_FLASH_DONE ? 100 : progress); } if (event == EVT_KEY_LONG(KEY_EXIT)) { diff --git a/radio/src/bootloader/firmware_files.h b/radio/src/bootloader/firmware_files.h index 4475b13d3d4..560e5135b11 100644 --- a/radio/src/bootloader/firmware_files.h +++ b/radio/src/bootloader/firmware_files.h @@ -69,7 +69,15 @@ enum FlashCheckRes { }; FlashCheckRes checkFirmwareFile(unsigned int index, FlashCheckRes res); +enum FlashWriteRes { + FW_IN_PROGRESS=0, + FW_DONE, + FW_ERROR +}; + void firmwareInitWrite(uint32_t index); bool firmwareEraseBlock(uint32_t* progress); -bool firmwareWriteBlock(uint32_t* progress); + +// Write the block currently in the buffer, then fetch the next one +FlashWriteRes firmwareWriteBlock(uint32_t* progress); diff --git a/radio/src/cfn_sort.cpp b/radio/src/cfn_sort.cpp index 49d43bdaddf..1479bc4cbb4 100644 --- a/radio/src/cfn_sort.cpp +++ b/radio/src/cfn_sort.cpp @@ -326,28 +326,6 @@ Functions cfn_sorted[] = { /* Vibreur */ FUNC_HAPTIC, /* Volume */ FUNC_VOLUME, #elif defined(TRANSLATIONS_HE) - /* Audio Amp Off */ FUNC_DISABLE_AUDIO_AMP, - /* BgMusic */ FUNC_BACKGND_MUSIC, - /* BgMusic || */ FUNC_BACKGND_MUSIC_PAUSE, - /* Haptic */ FUNC_HAPTIC, - /* Inst. Trim */ FUNC_INSTANT_TRIM, -#if defined(VIDEO_SWITCH) - /* LCD to Video */ FUNC_LCD_TO_VIDEO, -#endif - /* Lua Script */ FUNC_PLAY_SCRIPT, - /* ModuleBind */ FUNC_BIND, - /* Override */ FUNC_OVERRIDE_CHANNEL, - /* Play Track */ FUNC_PLAY_TRACK, - /* Play Value */ FUNC_PLAY_VALUE, -#if defined(FUNCTION_SWITCHES) - /* Push CS */ FUNC_PUSH_CUST_SWITCH, -#endif - /* RangeCheck */ FUNC_RANGECHECK, - /* RGB leds */ FUNC_RGB_LED, - /* SD Logs */ FUNC_LOGS, - /* Set */ FUNC_SET_TIMER, - /* SetFailsafe */ FUNC_SET_FAILSAFE, - /* Vario */ FUNC_VARIO, #if !defined(OLED_SCREEN) /* אור אחורי */ FUNC_BACKLIGHT, #endif @@ -355,19 +333,41 @@ Functions cfn_sorted[] = { #if defined(DEBUG) /* בדיקה */ FUNC_TEST, #endif + /* בדיקת טווח */ FUNC_RANGECHECK, #if defined(OLED_SCREEN) /* בהירות */ FUNC_BACKLIGHT, #endif + /* הגדר */ FUNC_SET_TIMER, + /* הגדר כשל קליטה */ FUNC_SET_FAILSAFE, /* הגדרת מסך ראשי */ FUNC_SET_SCREEN, /* הפעל סאונד */ FUNC_PLAY_SOUND, + /* הפעל סקריפט Lua */ FUNC_PLAY_SCRIPT, + /* השהיית מוזיקת רקע */ FUNC_BACKGND_MUSIC_PAUSE, + /* השמע ערך */ FUNC_PLAY_VALUE, /* התאם */ FUNC_ADJUST_GVAR, + /* וריומטר */ FUNC_VARIO, + /* טריינר */ FUNC_TRAINER, + /* לוגים לכרטיס SD */ FUNC_LOGS, +#if defined(FUNCTION_SWITCHES) + /* לחץ מתג מותאם */ FUNC_PUSH_CUST_SWITCH, +#endif #if defined(COLORLCD) /* ללא מסך מגע */ FUNC_DISABLE_TOUCH, #endif - /* מדריך */ FUNC_TRAINER, + /* מגבר שמע כבוי */ FUNC_DISABLE_AUDIO_AMP, + /* מוזיקת רקע */ FUNC_BACKGND_MUSIC, +#if defined(VIDEO_SWITCH) + /* מסך לוידאו */ FUNC_LCD_TO_VIDEO, +#endif /* מצב תחרות */ FUNC_RACING_MODE, + /* נגן קובץ קול */ FUNC_PLAY_TRACK, + /* נורות RGB */ FUNC_RGB_LED, /* עוצמת קול */ FUNC_VOLUME, + /* עקיפה */ FUNC_OVERRIDE_CHANNEL, /* צילום מסך */ FUNC_SCREENSHOT, + /* צימוד מודול */ FUNC_BIND, + /* קיזוז מיידי */ FUNC_INSTANT_TRIM, + /* רטט */ FUNC_HAPTIC, #elif defined(TRANSLATIONS_IT) /* Amp Audio Off */ FUNC_DISABLE_AUDIO_AMP, /* Azzera */ FUNC_RESET, diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 3fb00c7f2b7..1c061272b1b 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -1025,14 +1025,14 @@ int cliTrace(const char ** argv) int cliStackInfo(const char ** argv) { cliSerialPrint("[MENUS] %d available / %d bytes", - task_get_stack_usage(&menusTaskId) * 4, + task_get_stack_usage(&menusTaskId), task_get_stack_size(&menusTaskId)); cliSerialPrint("[MIXER] %d available / %d bytes", - task_get_stack_usage(&mixerTaskId) * 4, + task_get_stack_usage(&mixerTaskId), task_get_stack_size(&mixerTaskId)); #if defined(AUDIO) cliSerialPrint("[AUDIO] %d available / %d bytes", - task_get_stack_usage(&audioTaskId) * 4, + task_get_stack_usage(&audioTaskId), task_get_stack_size(&audioTaskId)); #endif #if defined(CLI) @@ -1475,11 +1475,17 @@ void printAudioVars() } } - cliSerialPrint("FragmentFifo: ridx: %d, widx: %d", - audioQueue.fragmentsFifo.ridx, audioQueue.fragmentsFifo.widx); - cliSerialPrint("audioQueue: readIdx: %d, writeIdx: %d, full: %d", - audioQueue.buffersFifo.readIdx, audioQueue.buffersFifo.writeIdx, - audioQueue.buffersFifo.bufferFull); + cliSerialPrint("FragmentFifo: ridx: %d (slot %d), widx: %d (slot %d)", + audioQueue.fragmentsFifo.ridx, + audioQueue.fragmentsFifo.slot(audioQueue.fragmentsFifo.ridx), + audioQueue.fragmentsFifo.widx, + audioQueue.fragmentsFifo.slot(audioQueue.fragmentsFifo.widx)); + cliSerialPrint("audioQueue: readIdx: %d (slot %d), writeIdx: %d (slot %d), full: %d", + audioQueue.buffersFifo.readIdx, + audioQueue.buffersFifo.slot(audioQueue.buffersFifo.readIdx), + audioQueue.buffersFifo.writeIdx, + audioQueue.buffersFifo.slot(audioQueue.buffersFifo.writeIdx), + audioQueue.buffersFifo.full()); cliSerialPrint("normalContext: %u", (uint32_t)audioQueue.normalContext.fragment.type); diff --git a/radio/src/curves.cpp b/radio/src/curves.cpp index 02553264697..2beb7637038 100644 --- a/radio/src/curves.cpp +++ b/radio/src/curves.cpp @@ -440,7 +440,8 @@ char *getCurveRefString(char *dest, size_t len, const CurveRef& curve) return dest; case CURVE_REF_FUNC: - strAppend(dest, STR_VCURVEFUNC[v.value], len); + if (v.value > 0 && v.value < CURVE_BASE) + strAppend(dest, STR_VCURVEFUNC[v.value], len); return dest; case CURVE_REF_CUSTOM: diff --git a/radio/src/fonts/lvgl/lrg/lv_font_en_bold_STD.c b/radio/src/fonts/lvgl/lrg/lv_font_en_bold_STD.c index ada52e2f676..bf3fa1d59b4 100644 --- a/radio/src/fonts/lvgl/lrg/lv_font_en_bold_STD.c +++ b/radio/src/fonts/lvgl/lrg/lv_font_en_bold_STD.c @@ -43,1422 +43,895 @@ static const uint8_t lz4FontData[] __FLASH = { 0xfb,0x1a,0x38,0x00,0x31,0x3d,0x1b,0x20,0x18,0x00,0xb1,0x7f,0x1b,0x30,0x10,0x10, 0x0c,0x00,0x00,0xdf,0x1b,0x30,0x98,0x00,0x40,0x27,0x1c,0x10,0x0b,0x40,0x00,0x31, 0x8d,0x1c,0x30,0x20,0x00,0xf2,0x03,0xcf,0x1c,0x40,0x07,0x07,0x16,0x00,0xfc,0x1c, -0x1d,0x90,0x05,0x03,0x13,0x01,0xfd,0x39,0x1d,0x10,0x00,0xf2,0x03,0x86,0x1d,0x40, -0x0e,0x0d,0x05,0x01,0x04,0xa7,0x1d,0x00,0x16,0x14,0x12,0x01,0x00,0x5b,0x1e,0x08, -0x00,0x90,0x0f,0x1f,0x00,0x16,0x12,0x13,0x02,0x00,0xba,0x08,0x00,0x52,0x14,0x02, -0xff,0x6e,0x20,0x18,0x00,0x22,0x22,0x21,0x10,0x00,0xa2,0xd6,0x21,0x00,0x16,0x14, -0x13,0x01,0xff,0x94,0x22,0x08,0x00,0x22,0x52,0x23,0x18,0x00,0xa1,0x06,0x24,0x00, -0x16,0x10,0x13,0x03,0xff,0x9e,0x24,0x40,0x00,0xf2,0x04,0xff,0x49,0x25,0x00,0x16, -0x10,0x14,0x03,0xff,0xe9,0x25,0x00,0x16,0x14,0x14,0x01,0xff,0xb1,0x26,0x28,0x00, -0x22,0x65,0x27,0x60,0x00,0x22,0x10,0x28,0x10,0x00,0xa2,0xc4,0x28,0x00,0x16,0x0e, -0x14,0x04,0xff,0x50,0x29,0x50,0x00,0x22,0x0e,0x2a,0x18,0x00,0xf2,0x03,0xc2,0x2a, -0x90,0x08,0x07,0x06,0x01,0x0a,0xd7,0x2a,0xd0,0x0e,0x0f,0x14,0x00,0x00,0x6d,0x2b, -0x08,0x00,0x22,0x03,0x2c,0x08,0x00,0x13,0x99,0x08,0x00,0x22,0x2f,0x2d,0x08,0x00, -0x10,0xc5,0x08,0x00,0x80,0x15,0x00,0x00,0x63,0x2e,0xb0,0x14,0x15,0x98,0x03,0xf2, -0x02,0x2f,0x60,0x0e,0x0e,0x15,0x00,0xfb,0x9e,0x2f,0x60,0x0c,0x0b,0x14,0x01,0x00, -0x0c,0x30,0x08,0x00,0x13,0x7a,0x08,0x00,0x13,0xe8,0x08,0x00,0xf2,0x0b,0x56,0x31, -0x70,0x06,0x06,0x14,0xff,0x00,0x92,0x31,0x70,0x06,0x07,0x14,0x01,0x00,0xd8,0x31, -0x70,0x06,0x09,0x14,0xff,0x00,0x32,0x32,0x08,0x00,0xf0,0x05,0x8c,0x32,0xa0,0x0e, -0x0f,0x10,0xff,0x00,0x04,0x33,0x90,0x0f,0x0e,0x14,0x01,0x00,0x90,0x33,0x30,0x0f, -0x68,0x00,0x22,0x2e,0x34,0x08,0x00,0x13,0xcc,0x08,0x00,0x40,0x6a,0x35,0x30,0x0f, -0x88,0x00,0x22,0x00,0x36,0x08,0x00,0xf3,0x0a,0x96,0x36,0xb0,0x0b,0x0b,0x0b,0x00, -0x02,0xd3,0x36,0x30,0x0f,0x0e,0x12,0x01,0xff,0x51,0x37,0x80,0x0e,0x0d,0x15,0x01, -0x00,0xda,0x08,0x00,0x22,0x63,0x38,0x08,0x00,0x10,0xec,0x08,0x00,0xf0,0x10,0x14, -0x01,0x00,0x6e,0x39,0xa0,0x0d,0x0e,0x14,0x00,0x00,0xfa,0x39,0x60,0x0d,0x0c,0x10, -0x01,0x00,0x5a,0x3a,0xe0,0x0d,0x0d,0x11,0x01,0x00,0xc9,0x3a,0xd0,0x0b,0x78,0x02, -0x22,0x2f,0x3b,0x08,0x00,0x13,0x95,0x08,0x00,0x13,0xfb,0x08,0x00,0x40,0x61,0x3c, -0xd0,0x0b,0xf0,0x03,0x10,0xc1,0x08,0x00,0xf1,0x07,0x12,0x00,0x00,0x2d,0x3d,0x90, -0x12,0x13,0x0c,0x00,0x00,0x9f,0x3d,0x80,0x0b,0x0b,0x11,0x00,0xfb,0xfd,0x3d,0xe0, -0x28,0x00,0x22,0x63,0x3e,0x08,0x00,0x13,0xc9,0x08,0x00,0x31,0x2f,0x3f,0xe0,0x38, -0x00,0xf0,0x15,0x8f,0x3f,0x00,0x06,0x06,0x11,0xff,0x00,0xc2,0x3f,0x00,0x06,0x07, -0x11,0x01,0x00,0xfe,0x3f,0x00,0x06,0x0a,0x11,0xfe,0x00,0x53,0x40,0x00,0x06,0x0a, -0x10,0xfe,0x00,0xa3,0x40,0xa0,0x0c,0x58,0x00,0x22,0x0f,0x41,0xe0,0x02,0x31,0x6d, -0x41,0x70,0x08,0x03,0x13,0xd3,0x08,0x00,0x22,0x39,0x42,0x08,0x00,0x13,0x9f,0x08, -0x00,0x31,0x05,0x43,0x70,0x80,0x04,0x30,0x65,0x43,0x90,0xd8,0x02,0x22,0x01,0xad, -0x10,0x00,0x32,0xfe,0x0d,0x44,0x40,0x00,0x13,0x6b,0x08,0x00,0x13,0xc9,0x08,0x00, -0x31,0x27,0x45,0x50,0x48,0x04,0xf2,0x13,0x7f,0x45,0x10,0x0b,0x0c,0x16,0x00,0xfb, -0x03,0x46,0x80,0x0c,0x0b,0x16,0x01,0xfb,0x7c,0x46,0x10,0x0b,0x0c,0x15,0x00,0xfb, -0xfa,0x46,0xd0,0x0e,0x0f,0x13,0x00,0x00,0x89,0x47,0xe8,0x00,0x22,0xe9,0x47,0xf0, -0x01,0x22,0x7f,0x48,0x00,0x01,0x21,0xe5,0x48,0xf8,0x01,0x41,0xfb,0x83,0x49,0xd0, -0xf8,0x02,0x21,0xe9,0x49,0xf8,0x01,0x31,0x00,0x7c,0x4a,0x00,0x01,0x32,0x00,0xda, -0x4a,0x10,0x00,0x22,0x6d,0x4b,0x10,0x00,0x40,0xcb,0x4b,0x60,0x0e,0x68,0x01,0x22, -0x57,0x4c,0x10,0x00,0x22,0xb5,0x4c,0x20,0x00,0x22,0x48,0x4d,0x10,0x00,0x31,0xa6, -0x4d,0x50,0x90,0x01,0xa2,0x28,0x4e,0x00,0x0e,0x10,0x11,0x00,0x00,0xb0,0x4e,0x00, -0x02,0x20,0x28,0x4f,0x90,0x01,0xc2,0x00,0x00,0x97,0x4f,0x60,0x0c,0x0b,0x13,0x01, -0x00,0x00,0x50,0x40,0x01,0x22,0x60,0x50,0x48,0x02,0x22,0xce,0x50,0x58,0x01,0x22, -0x34,0x51,0x10,0x00,0x22,0xa2,0x51,0x10,0x00,0xb1,0x08,0x52,0x60,0x0c,0x0b,0x15, -0x01,0xfb,0x7c,0x52,0xe0,0xa0,0x00,0x22,0xe2,0x52,0x20,0x00,0x22,0x50,0x53,0x20, -0x00,0x40,0xb6,0x53,0x00,0x0f,0x08,0x02,0x40,0x3f,0x54,0x90,0x0c,0x00,0x01,0x22, -0xc3,0x54,0x10,0x00,0x22,0x4c,0x55,0x10,0x00,0x40,0xd0,0x55,0x00,0x0f,0x90,0x00, -0x22,0x52,0x56,0x10,0x00,0xf2,0x03,0xd6,0x56,0x00,0x0f,0x0d,0x16,0x01,0xfa,0x65, -0x57,0x90,0x0c,0x0c,0x18,0x00,0xfb,0xf5,0x57,0x98,0x02,0x30,0x81,0x58,0x50,0x68, -0x00,0xf2,0x04,0x00,0xf5,0x58,0xd0,0x0f,0x10,0x10,0x00,0x00,0x75,0x59,0xa0,0x0c, -0x0d,0x11,0xff,0x00,0xe4,0x59,0xc8,0x02,0x22,0x3e,0x5a,0xd8,0x01,0xf1,0x2c,0x93, -0x5a,0x70,0x06,0x08,0x13,0xff,0x00,0xdf,0x5a,0x00,0x06,0x08,0x10,0xff,0x00,0x1f, -0x5b,0x70,0x06,0x08,0x14,0xff,0x00,0x6f,0x5b,0x00,0x06,0x08,0x11,0xff,0x00,0xb3, -0x5b,0x70,0x06,0x05,0x15,0x00,0xfb,0xe8,0x5b,0xd0,0x05,0x05,0x16,0x00,0xfb,0x1f, -0x5c,0x70,0x06,0x04,0x14,0x01,0x00,0x47,0x5c,0x00,0x50,0x06,0x40,0x5f,0x5c,0xb0, -0x12,0xc0,0x05,0xc0,0xe7,0x5c,0x90,0x0b,0x0a,0x16,0x01,0xfb,0x55,0x5d,0x50,0x0c, -0x40,0x01,0xf0,0x15,0xe8,0x5d,0x30,0x06,0x0a,0x16,0xfe,0xfb,0x56,0x5e,0xf0,0x0d, -0x0e,0x16,0x01,0xfa,0xf0,0x5e,0xc0,0x0b,0x0b,0x17,0x01,0xfa,0x6f,0x5f,0x00,0x0d, -0x0c,0x0c,0x01,0x00,0xb7,0x5f,0xf0,0x0b,0xf8,0x00,0xf2,0x0b,0x25,0x60,0xd0,0x05, -0x06,0x15,0x01,0x00,0x64,0x60,0xf0,0x0b,0x0b,0x16,0x01,0xfa,0xdd,0x60,0xd0,0x05, -0x05,0x17,0x00,0xfa,0x17,0x61,0x20,0x06,0x93,0x6f,0x61,0x70,0x07,0x08,0x11,0x01, -0x00,0xb3,0x10,0x00,0x40,0x0b,0x62,0x30,0x08,0x10,0x00,0x31,0x4f,0x62,0x40,0x58, -0x02,0xa2,0xaf,0x62,0xc0,0x06,0x07,0x11,0x00,0x00,0xeb,0x62,0xf8,0x00,0x22,0x77, -0x63,0x48,0x02,0x40,0xd5,0x63,0x90,0x0f,0x78,0x00,0xa2,0x6f,0x64,0x50,0x0c,0x0b, -0x12,0x01,0xfa,0xd2,0x64,0x20,0x00,0x22,0x5e,0x65,0x20,0x00,0xf1,0x04,0xbc,0x65, -0x50,0x0c,0x0e,0x11,0xfe,0x00,0x33,0x66,0x80,0x0f,0x0e,0x15,0x01,0xfb,0xc6,0x66, -0x70,0x70,0x05,0x21,0x24,0x67,0x70,0x06,0x32,0x00,0xb3,0x67,0xb8,0x02,0x22,0x13, -0x68,0xc0,0x03,0x22,0xa9,0x68,0xd0,0x02,0x22,0x0f,0x69,0xe0,0x03,0x22,0xad,0x69, -0x10,0x00,0xf1,0x04,0x13,0x6a,0x50,0x15,0x14,0x10,0x01,0x00,0xb3,0x6a,0xd0,0x13, -0x14,0x0c,0x00,0x00,0x2b,0x6b,0x10,0x30,0x02,0x31,0xad,0x6b,0x00,0xa8,0x00,0x40, -0xf1,0x6b,0x10,0x0e,0xa0,0x01,0xa2,0x80,0x6c,0x00,0x08,0x08,0x13,0x00,0xfa,0xcc, -0x6c,0x20,0x00,0xf1,0x04,0x4e,0x6d,0x00,0x08,0x09,0x11,0x00,0x00,0x9b,0x6d,0x80, -0x0d,0x0d,0x15,0x00,0x00,0x24,0x6e,0x50,0x70,0x02,0x22,0x82,0x6e,0x10,0x00,0x22, -0x0b,0x6f,0x10,0x00,0x21,0x69,0x6f,0x10,0x00,0x22,0xfb,0xf2,0x10,0x00,0xb2,0xfb, -0x50,0x70,0x80,0x0d,0x0d,0x14,0x00,0x00,0xd2,0x70,0x20,0x00,0x40,0x30,0x71,0xa0, -0x0d,0xd8,0x04,0xa2,0xc3,0x71,0x70,0x07,0x08,0x14,0x00,0xfb,0x13,0x72,0x38,0x04, -0xa2,0x9f,0x72,0xe0,0x07,0x0a,0x13,0x00,0x00,0xfe,0x72,0x00,0x07,0xa2,0x6e,0x73, -0x70,0x07,0x09,0x0f,0xff,0x00,0xb2,0x73,0x60,0x04,0x22,0x34,0x74,0x08,0x01,0xa2, -0x92,0x74,0x80,0x0e,0x0d,0x13,0x01,0x00,0x0e,0x75,0x78,0x03,0x22,0x66,0x75,0x20, -0x00,0x22,0xe8,0x75,0x20,0x00,0x22,0x46,0x76,0x98,0x04,0x21,0xcf,0x76,0x48,0x01, -0x32,0x00,0x32,0x77,0x10,0x00,0x22,0xbb,0x77,0x20,0x00,0x21,0x19,0x78,0x30,0x00, -0x41,0xfc,0x9b,0x78,0x50,0x40,0x01,0xc0,0xf9,0x78,0x40,0x13,0x13,0x14,0x00,0x00, -0xb7,0x79,0x30,0x10,0x30,0x03,0x21,0x3f,0x7a,0xa0,0x00,0x32,0x00,0xd2,0x7a,0xd0, -0x03,0x22,0x56,0x7b,0xa0,0x00,0x31,0xe2,0x7b,0x50,0xc8,0x00,0x31,0x64,0x7c,0x30, -0xc8,0x00,0x22,0xc2,0x7c,0x10,0x00,0x22,0x44,0x7d,0x10,0x00,0x22,0xa2,0x7d,0x10, -0x00,0x32,0x24,0x7e,0x30,0x18,0x01,0x30,0x7e,0xb0,0x05,0x90,0x04,0xf0,0x12,0xbe, -0x7e,0xf0,0x07,0x06,0x06,0x01,0x05,0xd0,0x7e,0x60,0x0b,0x0a,0x0d,0x01,0x00,0x11, -0x7f,0x00,0x16,0x17,0x17,0xff,0xfd,0x1a,0x80,0x00,0x16,0x16,0x11,0x00,0x00,0xd5, -0x08,0x00,0x52,0x14,0x00,0xfe,0xb1,0x81,0x10,0x00,0x31,0x6c,0x82,0x20,0x00,0x03, -0xa2,0xec,0x82,0x00,0x16,0x16,0x17,0x00,0xfd,0xe9,0x83,0x08,0x00,0xa2,0xe6,0x84, -0xc0,0x18,0x19,0x14,0x00,0xfe,0xe0,0x85,0x10,0x00,0xa2,0xdd,0x86,0xc0,0x18,0x19, -0x11,0x00,0x00,0xb2,0x87,0x10,0x00,0xf2,0x0b,0xaf,0x88,0x00,0x0b,0x0b,0x12,0x00, -0xff,0x12,0x89,0x80,0x10,0x11,0x12,0x00,0xff,0xab,0x89,0xc0,0x18,0x19,0x16,0x00, -0xfd,0xbe,0x8a,0x58,0x00,0xf2,0x13,0x79,0x8b,0x20,0x0f,0x10,0x17,0x00,0xfd,0x31, -0x8c,0x40,0x13,0x0f,0x15,0x02,0xfe,0xcf,0x8c,0x40,0x13,0x14,0x18,0x00,0xfc,0xbf, -0x8d,0x40,0x13,0x14,0x14,0x00,0xfe,0x87,0x8e,0x08,0x00,0x22,0x4f,0x8f,0x20,0x00, -0xf2,0x03,0xed,0x8f,0x40,0x13,0x15,0x14,0xff,0xfe,0xbf,0x90,0xc0,0x0d,0x0c,0x14, -0x01,0xfe,0x37,0x91,0x08,0x00,0x22,0xaf,0x91,0x28,0x00,0xa2,0x77,0x92,0x40,0x13, -0x14,0x05,0x00,0x06,0xa9,0x92,0x88,0x00,0xf2,0x13,0x7e,0x93,0x80,0x1b,0x1c,0x17, -0x00,0xfd,0xc0,0x94,0xc0,0x18,0x1b,0x17,0xff,0xfd,0xf7,0x95,0x00,0x16,0x16,0x15, -0x00,0xfe,0xde,0x96,0x40,0x13,0x13,0x0c,0x00,0x02,0x50,0x97,0x08,0x00,0xa3,0xc2, -0x97,0x80,0x1b,0x1c,0x12,0x00,0xff,0xbe,0x98,0x98,0x00,0x12,0x99,0xc0,0x00,0x22, -0x76,0x9a,0x18,0x01,0x22,0x7f,0x9b,0x60,0x00,0xa2,0x47,0x9c,0x40,0x13,0x14,0x17, -0x00,0xfd,0x2d,0x9d,0x10,0x00,0x10,0xf5,0x08,0x00,0x52,0x12,0x00,0xff,0xa9,0x9e, -0x38,0x00,0xa2,0x64,0x9f,0xc0,0x0d,0x0f,0x17,0xff,0xfd,0x11,0xa0,0x28,0x00,0x13, -0xf7,0x08,0x00,0x23,0xdd,0xa1,0x18,0x01,0xf2,0x12,0xa2,0x00,0x16,0x18,0x17,0xff, -0xfd,0xc6,0xa3,0x80,0x10,0x11,0x17,0x00,0xfd,0x8a,0xa4,0x80,0x1b,0x1c,0x15,0x00, -0xfe,0xb0,0xa5,0x80,0x1b,0x1c,0x0f,0x00,0x01,0x82,0xa6,0x08,0x00,0x22,0x54,0xa7, -0x08,0x00,0x22,0x26,0xa8,0x08,0x00,0x13,0xf8,0x08,0x00,0x22,0xca,0xa9,0xa8,0x00, -0xa2,0xc6,0xaa,0x40,0x13,0x11,0x17,0x01,0xfd,0x8a,0xab,0x60,0x00,0x22,0x70,0xac, -0xa8,0x00,0xa2,0x79,0xad,0x80,0x1b,0x1c,0x11,0x00,0x00,0x67,0xae,0x60,0x00,0xf0, -0xc6,0x2b,0xaf,0x20,0x16,0x17,0x0e,0x00,0x01,0x00,0x00,0x43,0x02,0xdf,0xcf,0xe6, -0xcf,0xe9,0xcf,0xea,0xcf,0xeb,0xcf,0xef,0xcf,0xf1,0xcf,0xf3,0xcf,0xf7,0xcf,0xfa, -0xcf,0xff,0xcf,0x04,0xd0,0x05,0xd0,0x06,0xd0,0x1c,0xd0,0x21,0xd0,0x26,0xd0,0x29, -0xd0,0x2a,0xd0,0x2b,0xd0,0x2f,0xd0,0x30,0xd0,0x31,0xd0,0x32,0xd0,0x45,0xd0,0x46, -0xd0,0x4c,0xd0,0x4e,0xd0,0x4f,0xd0,0x52,0xd0,0x55,0xd0,0x56,0xd0,0x57,0xd0,0x59, -0xd0,0x71,0xd0,0x73,0xd0,0xa2,0xd0,0xa3,0xd0,0xa5,0xd0,0xa7,0xd0,0xbe,0xd0,0xc5, -0xd0,0xc8,0xd0,0xd1,0xd0,0xfa,0xd0,0x02,0xd1,0x39,0xd1,0xc9,0xd1,0x1e,0xd2,0x1f, -0xd2,0x20,0xd2,0x21,0xd2,0x22,0xd2,0x65,0xd2,0x71,0xd2,0xcb,0xd2,0xe2,0xd2,0x38, -0xd5,0xa0,0xd7,0x80,0xd8,0x9f,0xfb,0x8f,0xfa,0x8f,0xfa,0x7f,0xf9,0x7f,0xf9,0x6f, -0xf8,0x6f,0xf7,0x5f,0xf7,0x5f,0xf6,0x4f,0xf6,0x3f,0xf5,0x00,0x00,0x03,0x30,0x6f, -0xf8,0x9f,0xfb,0x3e,0xe4,0x5f,0xd0,0xdf,0x55,0xfd,0x0d,0xf5,0x5f,0xc0,0xdf,0x45, -0xfa,0x0d,0xf2,0x5f,0x90,0xdf,0x14,0xf7,0x0c,0xf0,0x00,0x00,0x0f,0xf0,0x0f,0xf0, -0x00,0x00,0x03,0xfc,0x02,0xfd,0x00,0x00,0x00,0x6f,0x90,0x5f,0x90,0x00,0x00,0x09, -0xf6,0x08,0xf6,0x00,0x08,0xff,0x01,0x00,0xf0,0x13,0xa0,0x7e,0xef,0xfe,0xef,0xfe, -0xe9,0x00,0x01,0xfd,0x00,0xfe,0x00,0x00,0x00,0x3f,0xb0,0x2f,0xc0,0x00,0x00,0x05, -0xf9,0x05,0xfa,0x00,0x00,0x00,0x7f,0x70,0x7f,0x80,0x00,0x5f,0x26,0x00,0x83,0xfd, -0x04,0xdd,0xff,0xdd,0xff,0xed,0xb0,0x4d,0x00,0x12,0x02,0x4d,0x00,0xa0,0x5f,0x90, -0x5f,0xa0,0x00,0x00,0x08,0xf6,0x08,0xf7,0x98,0x0c,0x21,0x02,0xd7,0x06,0x00,0x10, -0xf8,0x06,0x00,0xf0,0x0d,0x27,0xfb,0x30,0x00,0x00,0x0a,0xff,0xff,0xfb,0x10,0x00, -0xbf,0xff,0xff,0xff,0xb0,0x03,0xff,0xf5,0x05,0xff,0xf3,0x06,0xff,0xc0,0x00,0xbf, -0xf7,0x06,0x00,0x41,0x5a,0xa5,0x02,0xff,0x35,0x00,0xf0,0x2b,0xaf,0xff,0xe7,0x00, -0x00,0x00,0x09,0xff,0xff,0xe6,0x00,0x00,0x00,0x4b,0xff,0xff,0x80,0x00,0x00,0x00, -0x2a,0xff,0xf2,0x05,0x55,0x00,0x00,0xcf,0xf7,0x0f,0xff,0x30,0x00,0x8f,0xf9,0x0b, -0xff,0xa0,0x00,0xdf,0xf7,0x05,0xff,0xfd,0xae,0xff,0xf2,0x00,0x8f,0xff,0xff,0xff, -0x50,0x00,0x03,0x9d,0xfd,0x82,0x0a,0x0d,0x23,0xf5,0x00,0x06,0x00,0x30,0x07,0xdf, -0xd5,0x0b,0x00,0xf1,0x07,0x07,0xff,0xdf,0xf5,0x00,0x02,0x00,0x00,0xdf,0x40,0x7f, -0xb0,0x05,0xf6,0x00,0x0f,0xf1,0x04,0xfc,0x01,0xee,0x10,0x0f,0x00,0x21,0x9f,0x60, -0x1e,0x00,0x21,0x3f,0xb0,0x2d,0x00,0x21,0x0d,0xf2,0x4b,0x0d,0x31,0x08,0xf8,0x00, -0xb4,0x00,0x12,0xfd,0x5a,0x0d,0x40,0xcf,0x42,0xbe,0xea,0x4c,0x0c,0xf0,0x13,0x91, -0xef,0xef,0xfc,0x00,0x00,0x1e,0xe1,0x6f,0xc0,0x1e,0xf2,0x00,0x0a,0xf5,0x07,0xf9, -0x00,0xcf,0x40,0x03,0xfb,0x00,0x6f,0xc0,0x0e,0xf3,0x00,0x05,0x20,0x01,0xef,0xee, -0xfc,0x2e,0x00,0xf0,0x10,0x03,0xbf,0xea,0x10,0x00,0x01,0xae,0xfd,0x70,0x00,0x00, -0x00,0x01,0xef,0xff,0xff,0x90,0x00,0x00,0x00,0x9f,0xfd,0x9e,0xff,0x20,0x00,0x00, -0x0d,0xff,0x00,0x5f,0x9c,0x00,0x50,0xdf,0xf0,0x06,0xff,0x30,0xdf,0x00,0xa2,0x65, -0xef,0xc0,0x00,0x00,0x00,0x2f,0xff,0xff,0xd1,0xf5,0x00,0x10,0xb1,0x07,0x00,0xf0, -0x21,0x8f,0xff,0xfc,0x00,0x5c,0xc2,0x00,0x7f,0xfd,0xdf,0xfa,0x08,0xff,0x20,0x0f, -0xff,0x22,0xef,0xf8,0xdf,0xf0,0x03,0xff,0xe0,0x03,0xff,0xff,0xfb,0x00,0x2f,0xff, -0x20,0x05,0xff,0xff,0x40,0x00,0xcf,0xfd,0x66,0xaf,0xff,0xf2,0x00,0x02,0xef,0xff, -0xff,0x3e,0x00,0xf1,0x2d,0x01,0x9d,0xfe,0xd9,0x3c,0xff,0xb0,0x5f,0xf5,0xff,0x5f, -0xe5,0xfd,0x5f,0xb5,0xfa,0x00,0x00,0x05,0x00,0x00,0x1c,0xf1,0x00,0x0c,0xfc,0x10, -0x07,0xfe,0x10,0x01,0xff,0x60,0x00,0x8f,0xe0,0x00,0x0e,0xfa,0x00,0x02,0xff,0x60, -0x00,0x6f,0xf3,0x00,0x08,0xff,0x10,0x00,0x9f,0xf0,0x00,0x0a,0xff,0x00,0x00,0xaf, -0xf0,0x0e,0x00,0xf0,0x12,0x7f,0xf2,0x00,0x03,0xff,0x50,0x00,0x0f,0xf9,0x00,0x00, -0xaf,0xd0,0x00,0x04,0xff,0x30,0x00,0x0b,0xfb,0x00,0x00,0x2f,0xf7,0x00,0x00,0x3f, -0xf2,0x00,0x00,0x3a,0x00,0x05,0xfe,0x01,0xe0,0x00,0x00,0x3e,0xf9,0x00,0x00,0x4f, -0xf4,0x00,0x00,0xbf,0xd0,0x00,0x04,0x2f,0x00,0xf0,0x29,0xfb,0x00,0x00,0xbf,0xf0, -0x00,0x07,0xff,0x30,0x00,0x6f,0xf6,0x00,0x05,0xff,0x70,0x00,0x4f,0xf8,0x00,0x04, -0xff,0x70,0x00,0x5f,0xf6,0x00,0x07,0xff,0x40,0x00,0x9f,0xf1,0x00,0x0d,0xfd,0x00, -0x02,0xff,0x70,0x00,0x8f,0xf1,0x00,0x1f,0xf7,0x00,0x0b,0xfd,0x00,0x06,0xfe,0x20, -0x00,0x2b,0x10,0xe8,0x00,0x20,0xef,0x20,0x0b,0x01,0xf1,0x1f,0x10,0x00,0x15,0x00, -0xcf,0x00,0x21,0x6f,0xe8,0xdf,0x5c,0xf8,0x5c,0xff,0xff,0xff,0xe7,0x00,0x0a,0xff, -0xb3,0x00,0x00,0x3f,0xee,0xf3,0x00,0x01,0xef,0x55,0xfd,0x10,0x05,0xfa,0x00,0xcf, -0x50,0x00,0x21,0x00,0x23,0x00,0x00,0x00,0x48,0x83,0x20,0x01,0x1f,0xf7,0x06,0x00, -0x01,0x10,0x6f,0x09,0x01,0x12,0xf5,0x06,0x00,0x6f,0x5d,0xdd,0xef,0xfe,0xdd,0xd4, -0x2a,0x00,0x04,0x00,0xef,0x00,0xf0,0x13,0x8f,0xf1,0x08,0xff,0x10,0xaf,0xe0,0x0f, -0xf8,0x06,0xfe,0x10,0x06,0x30,0x00,0x68,0x88,0x88,0x1d,0xff,0xff,0xf3,0xdf,0xff, -0xff,0x30,0x03,0x40,0x6f,0xf9,0x9f,0xfc,0x2d,0xe5,0x2c,0x00,0xef,0xc0,0x00,0x00, -0x0e,0xf6,0x00,0x00,0x03,0xff,0x10,0x00,0x00,0x9f,0xb0,0x0d,0x00,0x00,0x15,0x04, -0x0d,0x00,0x10,0xf5,0x0d,0x00,0x1b,0x00,0x0d,0x00,0x51,0xaf,0xa0,0x00,0x00,0x0f, -0x8c,0x02,0x40,0x4b,0xef,0xd9,0x10,0xa2,0x00,0xf0,0x0f,0xfe,0x10,0x2f,0xff,0xc9, -0xef,0xfb,0x08,0xff,0xa0,0x01,0xff,0xf2,0xcf,0xf4,0x00,0x0a,0xff,0x6e,0xff,0x20, -0x00,0x8f,0xf8,0xff,0xf2,0x00,0x08,0xff,0x9f,0x0b,0x00,0x17,0xf9,0x0b,0x00,0xff, -0x28,0xef,0xf2,0x00,0x09,0xff,0x8c,0xff,0x40,0x00,0xbf,0xf6,0x8f,0xfa,0x00,0x1f, -0xff,0x22,0xff,0xfc,0x9e,0xff,0xb0,0x06,0xff,0xff,0xff,0xe2,0x00,0x04,0xbe,0xfd, -0x91,0x00,0x00,0x00,0x05,0xb9,0x00,0x49,0xff,0xf9,0x2e,0xff,0xff,0xf9,0x3f,0xff, -0xef,0xf9,0x2b,0x61,0x8f,0xf9,0x00,0x00,0x04,0x00,0x18,0x40,0x05,0xbe,0xfe,0xa2, -0x78,0x02,0xf0,0x0c,0xff,0xff,0x40,0x08,0xff,0xfa,0x9e,0xff,0xd0,0x0e,0xff,0x50, -0x02,0xff,0xf2,0x2f,0xff,0x00,0x00,0xef,0xf4,0x03,0x32,0x00,0x00,0xff,0xf2,0x4a, -0x03,0x12,0xff,0xa6,0x02,0xc0,0x40,0x00,0x00,0x01,0xdf,0xf9,0x00,0x00,0x00,0x1d, -0xff,0xb0,0x17,0x03,0x00,0xef,0x02,0x11,0x0b,0xbb,0x02,0x30,0xaf,0xfd,0x10,0xcf, -0x02,0x50,0xfa,0x88,0x88,0x86,0x0f,0x82,0x01,0x12,0xfc,0x06,0x00,0xd1,0x00,0x07, -0xcf,0xfd,0x92,0x00,0x01,0xdf,0xff,0xff,0xff,0x30,0x0a,0x60,0x00,0xc0,0x0f,0xff, -0x30,0x01,0xff,0xf3,0x03,0x33,0x00,0x00,0xdf,0xf4,0x20,0x03,0xe0,0xff,0xf1,0x00, -0x00,0x57,0x8e,0xff,0x70,0x00,0x00,0xcf,0xff,0xf6,0x00,0x06,0x00,0x80,0xfe,0x40, -0x00,0x00,0x00,0x17,0xff,0xf1,0x37,0x01,0xf0,0x00,0xbf,0xf6,0x28,0x87,0x00,0x00, -0x9f,0xf8,0x2f,0xff,0x20,0x00,0xef,0xf6,0x0d,0x42,0x00,0x11,0xf1,0xf2,0x02,0x70, -0x40,0x00,0x18,0xdf,0xfd,0x92,0x00,0x99,0x04,0x10,0xff,0x30,0x00,0x31,0x0c,0xff, -0xf4,0xe7,0x03,0x01,0xa3,0x00,0x11,0xff,0x0d,0x00,0x20,0xaf,0xfe,0x0d,0x00,0x20, -0x4f,0xf7,0x68,0x00,0xf0,0x01,0x0d,0xfd,0x0d,0xff,0x40,0x00,0x08,0xff,0x30,0xdf, -0xf4,0x00,0x02,0xff,0x90,0x0d,0x40,0x03,0x10,0xe1,0x82,0x00,0x11,0x4f,0xec,0x04, -0x11,0x05,0x06,0x00,0x93,0xf0,0x28,0x88,0x88,0x8e,0xff,0xa8,0x00,0x00,0x9c,0x00, -0x10,0x00,0x27,0x00,0x02,0x0d,0x00,0x20,0x0a,0xff,0xc2,0x00,0x00,0xb2,0x04,0xe0, -0xf3,0x0d,0xff,0xaa,0xaa,0xaa,0x10,0xff,0xe0,0x00,0x00,0x00,0x1f,0xfc,0x24,0x04, -0x41,0xff,0xa2,0x55,0x20,0x48,0x00,0x20,0xb1,0x06,0x26,0x00,0x51,0xc0,0x17,0xb7, -0x11,0x6f,0x39,0x00,0x21,0x9f,0xf9,0x3b,0x01,0xf0,0x04,0xa7,0x88,0x20,0x00,0x7f, -0xfa,0xbf,0xf9,0x00,0x0d,0xff,0x74,0xff,0xfb,0x9d,0xff,0xf1,0x08,0xff,0xa1,0x00, -0x30,0x04,0xae,0xfe,0xc0,0x00,0x30,0x4a,0xdf,0x70,0x80,0x01,0x10,0xf7,0xfa,0x00, -0xb0,0xdb,0x40,0x00,0x9f,0xfc,0x30,0x00,0x00,0x1f,0xfe,0x10,0xcc,0x00,0x31,0x89, -0xef,0xd7,0x25,0x05,0xd0,0xf9,0x0d,0xff,0xfc,0x9d,0xff,0xf3,0xef,0xf8,0x00,0x0c, -0xff,0x9e,0x69,0x03,0x70,0xfc,0xdf,0xf3,0x00,0x04,0xff,0xdb,0xca,0x03,0xe0,0xfb, -0x7f,0xfc,0x00,0x0d,0xff,0x70,0xef,0xfd,0x9d,0xff,0xe1,0x03,0xef,0x58,0x00,0x42, -0x01,0x9e,0xfe,0xa2,0x9c,0x05,0x12,0xfb,0x06,0x00,0x60,0x38,0x88,0x88,0x88,0xdf, -0xf6,0xc9,0x00,0x01,0xb5,0x00,0x11,0x07,0x4b,0x05,0x30,0x0e,0xff,0x20,0xa8,0x05, -0x11,0xfb,0xde,0x04,0x20,0xf4,0x00,0xd7,0x02,0x11,0xd0,0xcd,0x01,0x11,0x60,0xe9, -0x01,0x14,0x00,0xbf,0x00,0x11,0x01,0x00,0x02,0x11,0x08,0xef,0x01,0x11,0x0e,0xd6, -0x00,0x11,0x6f,0x14,0x05,0x60,0x5c,0xff,0xea,0x20,0x00,0x9f,0x89,0x01,0xf0,0x02, -0x4f,0xff,0xb9,0xef,0xfe,0x08,0xff,0xb0,0x01,0xff,0xf2,0x9f,0xf8,0x00,0x0e,0xff, -0x36,0x0b,0x00,0xb1,0xf1,0x0d,0xff,0xb9,0xef,0xf7,0x00,0x1d,0xff,0xff,0xf8,0x3c, -0x01,0x71,0xf4,0x07,0xff,0xd2,0x06,0xff,0xf1,0x4a,0x01,0xc0,0x7f,0xff,0x20,0x00, -0x9f,0xf9,0xdf,0xf7,0x00,0x0d,0xff,0x78,0x10,0x01,0xf1,0x02,0xf2,0x0c,0xff,0xff, -0xff,0xf6,0x00,0x06,0xcf,0xfe,0xa3,0x00,0x00,0x03,0xbe,0xfc,0x60,0xcb,0x03,0xf0, -0x06,0xfb,0x00,0x03,0xff,0xfb,0x9f,0xff,0x70,0x0a,0xff,0x90,0x04,0xff,0xe0,0x0f, -0xff,0x20,0x00,0xdf,0xf3,0x0f,0xae,0x04,0x10,0xf6,0x0c,0x00,0xf1,0x01,0xaf,0xf7, -0x0d,0xff,0x80,0x00,0xcf,0xf7,0x07,0xff,0xf9,0x7c,0xff,0xf6,0x00,0xcf,0x52,0x01, -0x51,0x08,0xef,0xd6,0xdf,0xf1,0xcb,0x00,0x00,0xae,0x02,0x80,0x3e,0xff,0x50,0x00, -0x07,0xbd,0xff,0xfa,0x1c,0x02,0xf4,0x02,0xff,0xa0,0x00,0x00,0x0c,0xfd,0xa4,0x00, -0x00,0x3d,0xe5,0x9f,0xfc,0x6f,0xf9,0x03,0x40,0x3c,0x13,0x02,0xed,0x03,0xd8,0x3d, -0xe5,0x05,0xed,0x30,0xcf,0xf9,0x09,0xff,0x60,0x04,0x30,0x00,0x01,0x00,0xf1,0x01, -0x2a,0xa3,0x04,0xff,0x50,0x4f,0xf5,0x05,0xff,0x30,0x9f,0xe0,0x1f,0xf6,0x01,0x9a, -0x15,0x00,0xf0,0x12,0x6a,0x00,0x00,0x02,0x9f,0xfd,0x00,0x04,0xbf,0xff,0xfd,0x06, -0xdf,0xff,0xfe,0x82,0x6f,0xff,0xfa,0x40,0x00,0x6f,0xff,0x71,0x00,0x00,0x4e,0xff, -0xff,0xb5,0x00,0x00,0x5c,0xf5,0x00,0x30,0x00,0x3a,0xff,0x28,0x01,0x20,0x18,0xed, -0x32,0x00,0x20,0x04,0x8f,0x89,0x01,0x10,0x18,0x05,0x00,0x62,0xf1,0x49,0x99,0x99, -0x99,0x99,0x5e,0x00,0x01,0x0b,0x00,0x11,0x08,0x16,0x00,0x01,0x21,0x00,0x30,0x10, -0x97,0x10,0xf3,0x02,0xf0,0x02,0xfa,0x30,0x00,0x00,0xbf,0xff,0xfc,0x50,0x00,0x17, -0xdf,0xff,0xfe,0x81,0x00,0x02,0x8d,0xc4,0x00,0xf0,0x04,0x16,0xef,0xfa,0x00,0x4a, -0xff,0xff,0xf6,0x7e,0xff,0xff,0xd7,0x10,0xbf,0xff,0xb4,0x00,0x00,0xbf,0x3e,0x02, -0x22,0x40,0x00,0x5d,0x04,0x40,0xea,0x30,0x00,0x7f,0x8d,0x01,0x00,0x5d,0x04,0xb0, -0xfd,0x06,0xff,0xd0,0x02,0xff,0xf1,0x36,0x63,0x00,0x0f,0x9e,0x04,0x10,0x05,0xf6, -0x01,0x30,0x03,0xef,0xf5,0xaa,0x02,0x10,0xf8,0xee,0x01,0x10,0xf8,0xba,0x02,0x11, -0xfd,0x28,0x01,0x15,0x80,0xea,0x00,0x10,0x24,0x05,0x00,0x21,0x4f,0xf9,0xec,0x01, -0x00,0x09,0x02,0x21,0x2d,0xe5,0x17,0x00,0x52,0x28,0xcf,0xfe,0xc7,0x10,0x93,0x06, -0x40,0xdc,0xdf,0xff,0x70,0x3f,0x00,0xa0,0xe6,0x00,0x00,0x17,0xef,0x90,0x00,0x00, -0xaf,0xd1,0xfd,0x02,0x51,0xef,0x50,0x00,0x5f,0xe1,0xe4,0x00,0xf3,0x5e,0xfd,0x00, -0x0d,0xf6,0x00,0x04,0xbe,0xc8,0x10,0x0c,0xf4,0x04,0xfe,0x00,0x06,0xff,0xff,0xfd, -0x00,0x6f,0x80,0x9f,0x90,0x03,0xff,0x70,0x6f,0xc0,0x04,0xfa,0x0c,0xf5,0x00,0xbf, -0xb0,0x07,0xfb,0x00,0x2f,0xc0,0xff,0x30,0x1f,0xf5,0x00,0x8f,0x90,0x02,0xfc,0x0f, -0xf1,0x04,0xff,0x20,0x0a,0xf8,0x00,0x3f,0xb1,0xff,0x00,0x6f,0xf0,0x00,0xbf,0x70, -0x05,0xf9,0x0f,0xf1,0x06,0xff,0x00,0x0d,0xf5,0x00,0xaf,0x50,0xef,0x30,0x3f,0xf5, -0x06,0xff,0x70,0x3f,0xe0,0x0c,0xf6,0x00,0xcf,0xfd,0xfc,0xff,0xcf,0xf4,0x00,0x7f, -0xc0,0x01,0xbf,0xd6,0x08,0xef,0xb3,0x00,0x01,0xff,0x50,0xb6,0x00,0x24,0x08,0xff, -0xb0,0x01,0x72,0x0c,0xff,0x93,0x00,0x02,0x63,0x00,0x33,0x08,0x31,0xef,0xff,0x70, -0xbe,0x07,0x51,0x8c,0xef,0xfc,0x81,0x00,0x9d,0x00,0x02,0x4e,0x04,0x21,0x00,0xaf, -0xdf,0x02,0x30,0x00,0x0f,0xff,0xa8,0x07,0x00,0xa4,0x00,0x11,0xf2,0x65,0x04,0x11, -0xfb,0x09,0x01,0x41,0x1f,0xfe,0x2f,0xfe,0x20,0x03,0x31,0x90,0xcf,0xf4,0xf6,0x03, -0x10,0x07,0x37,0x02,0x21,0x3f,0xfe,0x0f,0x03,0x81,0x09,0xff,0x90,0x00,0xcf,0xf5, -0x00,0x00,0x6e,0x07,0x13,0xb0,0x37,0x04,0xb0,0x10,0x0a,0xff,0xda,0xaa,0xaa,0xef, -0xf7,0x00,0xff,0xf4,0x38,0x00,0x31,0xd0,0x6f,0xff,0x3d,0x03,0x30,0x2b,0xff,0xa0, -0x40,0x00,0x90,0xf8,0x9f,0xff,0xff,0xfe,0xa4,0x00,0x09,0xff,0xc3,0x03,0xf0,0x05, -0x00,0x9f,0xfd,0xaa,0xbe,0xff,0xf4,0x09,0xff,0xa0,0x00,0x1e,0xff,0x90,0x9f,0xfa, -0x00,0x00,0x9f,0xfa,0x0d,0x00,0x91,0x0c,0xff,0x70,0x9f,0xfc,0x55,0x6b,0xff,0xe1, -0x27,0x00,0x31,0xd2,0x00,0x9f,0x43,0x04,0x00,0x1a,0x00,0x12,0x2d,0x27,0x00,0x20, -0x5f,0xfe,0x0d,0x00,0x31,0x04,0xff,0xf0,0x34,0x00,0x84,0xfd,0x09,0xff,0xd9,0x9a, -0xdf,0xff,0x80,0x27,0x00,0x41,0xff,0xff,0xec,0x60,0x01,0x02,0x20,0xeb,0x50,0x57, -0x09,0x00,0x37,0x03,0xe0,0x00,0x9f,0xff,0xdb,0xdf,0xff,0xa0,0x03,0xff,0xf5,0x00, -0x05,0xff,0xf3,0x3d,0x00,0x40,0x00,0xcf,0xf8,0x0d,0xf9,0x00,0x32,0x48,0x85,0x0f, -0x30,0x01,0x19,0x1f,0x07,0x00,0x03,0x15,0x00,0x10,0x0e,0x56,0x01,0x32,0x46,0x64, -0x0a,0x31,0x00,0x30,0x04,0xff,0xf4,0x3f,0x00,0xb1,0x00,0xbf,0xff,0xcb,0xdf,0xff, -0xb0,0x00,0x0b,0xff,0xff,0x34,0x01,0x40,0x6b,0xef,0xeb,0x50,0xa4,0x00,0x22,0xd9, -0x30,0xd8,0x00,0x10,0x90,0xd8,0x00,0x30,0xdf,0xff,0xa0,0x67,0x00,0x30,0x5f,0xff, -0x40,0xa4,0x00,0x20,0x8f,0xfb,0x0d,0x00,0x50,0x02,0xff,0xf1,0x9f,0xfa,0x5c,0x00, -0x10,0x39,0x50,0x00,0x40,0xef,0xf5,0x9f,0xfa,0x62,0x00,0x10,0x59,0x0d,0x00,0x40, -0xff,0xf3,0x9f,0xfa,0x27,0x01,0xf1,0x04,0x19,0xff,0xa0,0x00,0x09,0xff,0xc0,0x9f, -0xfa,0x00,0x06,0xff,0xf5,0x09,0xff,0xda,0xad,0xff,0xfa,0xff,0x00,0x10,0xf9,0x5b, -0x00,0x32,0xfd,0xa3,0x00,0x0c,0x01,0x11,0xd9,0x66,0x0a,0x61,0x9f,0xfd,0xaa,0xaa, -0xaa,0x89,0x58,0x01,0x21,0x9f,0xfa,0xe5,0x01,0x11,0xa0,0x55,0x09,0x31,0x88,0x88, -0x87,0x88,0x00,0x20,0xd0,0x9f,0x26,0x00,0x1d,0x09,0x21,0x00,0x01,0x0b,0x00,0x00, -0xa5,0x01,0x11,0xa8,0x4d,0x00,0x10,0xe9,0x05,0x00,0x11,0xfe,0x0b,0x00,0x11,0x99, -0x97,0x01,0x01,0x58,0x00,0x1f,0x59,0x37,0x00,0x04,0x06,0x58,0x00,0x00,0x42,0x00, -0x1e,0x80,0x21,0x00,0x0b,0x0b,0x00,0x52,0x00,0x04,0xad,0xfe,0xc7,0x39,0x00,0x80, -0xfe,0x20,0x08,0xff,0xfd,0xab,0xff,0xfd,0x73,0x03,0x50,0x03,0xff,0xf5,0x8f,0xfd, -0x17,0x00,0x10,0xac,0x97,0x02,0x42,0x12,0x22,0xef,0xf5,0x76,0x01,0x70,0x40,0x02, -0x66,0x66,0x64,0xff,0xf4,0xed,0x04,0x90,0xce,0xff,0x50,0x06,0xff,0xff,0xfc,0xcf, -0xf8,0x47,0x02,0x10,0xc8,0x81,0x03,0xf1,0x00,0x7f,0xfc,0x2f,0xff,0x90,0x00,0x08, -0xff,0xc0,0x7f,0xff,0xea,0xad,0xff,0xfb,0xdf,0x0a,0x71,0xfc,0x10,0x00,0x3a,0xdf, -0xfd,0xa5,0x73,0x00,0x00,0x6e,0x05,0x0f,0x07,0x00,0x10,0x00,0xdf,0x00,0x21,0xff, -0xf2,0xf1,0x00,0x06,0x07,0x00,0x0f,0x3f,0x00,0x17,0x02,0x07,0x00,0x2f,0x6f,0xfd, -0x02,0x00,0x0b,0x01,0x61,0x03,0x10,0xe0,0x40,0x04,0x1f,0xfe,0x0b,0x00,0x1e,0xf0, -0x05,0xe7,0xee,0xa0,0x00,0x5f,0xfd,0x6f,0xfe,0x10,0x0b,0xff,0xa1,0xff,0xfe,0xad, -0xff,0xf4,0x06,0xff,0xff,0x34,0x01,0x41,0xae,0xfe,0xb4,0x00,0xff,0x02,0x01,0x06, -0x03,0x30,0x02,0xff,0xfc,0x0e,0x00,0x30,0x0d,0xff,0xe1,0x07,0x00,0x10,0xaf,0x58, -0x0a,0x40,0xfa,0x06,0xff,0xf7,0x7e,0x01,0x30,0x2f,0xff,0xb0,0x07,0x00,0x20,0xdf, -0xfd,0x8c,0x01,0x01,0x00,0x03,0x01,0x38,0x02,0x10,0x50,0x07,0x00,0x30,0xfe,0xff, -0xe1,0x07,0x00,0x60,0x72,0xff,0xf9,0x00,0x00,0x9f,0x44,0x01,0x12,0x40,0x46,0x00, -0x10,0xd0,0x07,0x00,0x31,0x04,0xff,0xf8,0x62,0x00,0x30,0xaf,0xff,0x30,0x07,0x00, -0x3e,0x1e,0xff,0xc0,0xe1,0x01,0x0f,0x0b,0x00,0x23,0x00,0x2e,0x02,0x11,0xa4,0x6d, -0x01,0x10,0x79,0x05,0x00,0x21,0xf7,0x9f,0x90,0x06,0x10,0x8f,0xcb,0x02,0x10,0x20, -0x06,0x03,0x20,0xfd,0x9f,0xbb,0x00,0x10,0x03,0xdc,0x02,0x00,0xeb,0x01,0x10,0x9f, -0xdf,0x02,0x90,0xff,0x20,0x00,0x0e,0xfd,0xff,0xd9,0xff,0x9f,0x3e,0x0b,0xf0,0x39, -0x8f,0xfd,0x9f,0xf6,0xdf,0xd0,0x00,0x9f,0xf4,0xff,0xd9,0xff,0x77,0xff,0x30,0x0e, -0xfb,0x3f,0xfd,0x9f,0xf7,0x2f,0xf8,0x04,0xff,0x53,0xff,0xd9,0xff,0x80,0xcf,0xe0, -0xaf,0xf0,0x4f,0xfd,0x9f,0xf9,0x06,0xff,0x4f,0xfa,0x05,0xff,0xd9,0xff,0x90,0x1f, -0xfd,0xff,0x40,0x5f,0xfd,0x9f,0xfa,0x00,0xbf,0xff,0xe0,0x06,0xff,0xd9,0xff,0xa0, -0x05,0xff,0xf9,0x00,0x6f,0xfd,0x9f,0xfa,0xdb,0x03,0x01,0x11,0x00,0x30,0x00,0xaf, -0xe0,0x11,0x00,0x11,0xfe,0x70,0x09,0x32,0x9f,0xff,0x80,0x07,0x00,0x12,0xf2,0x07, -0x00,0x12,0xfb,0x07,0x00,0x20,0xff,0x40,0x07,0x00,0x40,0xfe,0xff,0xd0,0x01,0xbb, -0x03,0x21,0xcf,0xf7,0x07,0x00,0x50,0x2f,0xff,0x21,0xff,0xf1,0xaa,0x04,0x10,0xa1, -0x07,0x00,0x31,0x01,0xef,0xf5,0xd7,0x03,0x21,0x6f,0xfe,0x07,0x00,0x21,0x0c,0xff, -0x07,0x00,0x22,0x03,0xff,0xec,0x03,0x12,0x9f,0x07,0x00,0x12,0x1e,0x07,0x00,0x10, -0x06,0x73,0x05,0x41,0x3a,0xdf,0xeb,0x40,0xfb,0x00,0x01,0x82,0x07,0xc0,0x8f,0xff, -0xeb,0xdf,0xff,0xa0,0x00,0x2f,0xff,0x80,0x00,0x6f,0x6f,0x0a,0x71,0xc0,0x00,0x00, -0xaf,0xfb,0x00,0xdf,0x47,0x0b,0x40,0xf0,0x0f,0xff,0x40,0x92,0x04,0x40,0x20,0xff, -0xf3,0x00,0x23,0x04,0x00,0x9c,0x04,0x00,0xbf,0x00,0x21,0xff,0xf4,0x83,0x02,0x10, -0x0d,0x3b,0x03,0x50,0x4f,0xff,0x00,0x8f,0xfc,0x60,0x01,0x10,0xb0,0x57,0x03,0xa0, -0x05,0xff,0xf5,0x00,0x08,0xff,0xfd,0xbd,0xff,0xfb,0x08,0x06,0x02,0xfa,0x01,0x41, -0x03,0xad,0xfe,0xb5,0x00,0x02,0x22,0xfe,0xb5,0xc0,0x03,0x10,0xfb,0xa0,0x04,0x41, -0xad,0xff,0xf8,0x09,0x6c,0x04,0x12,0xf0,0x93,0x04,0x16,0x49,0x93,0x04,0x11,0x1f, -0x0d,0x00,0x41,0x2b,0xff,0xf0,0x9f,0xaa,0x01,0x11,0x09,0x06,0x00,0x00,0x34,0x00, -0x24,0xa9,0x61,0xd5,0x03,0x01,0xd4,0x01,0x0f,0x0d,0x00,0x02,0x05,0xe0,0x00,0x1b, -0x9f,0xe0,0x00,0x16,0x70,0xe0,0x00,0x16,0xfa,0xe0,0x00,0x10,0x30,0x6f,0x00,0x33, -0x11,0xff,0xf2,0xe0,0x00,0x12,0x20,0xe0,0x00,0x11,0xf3,0x94,0x01,0x00,0xa0,0x05, -0x00,0xe0,0x00,0x20,0x9f,0xfc,0xc7,0x05,0x03,0xe0,0x00,0x12,0xf4,0xe0,0x00,0x12, -0xfa,0x53,0x04,0x11,0xfd,0xe0,0x00,0x01,0x5c,0x08,0x01,0xfa,0x06,0x11,0xfb,0x08, -0x00,0x13,0x05,0x0c,0x07,0x28,0x02,0x40,0xf7,0x00,0x10,0xfa,0xc3,0x00,0x30,0xae, -0xff,0xf7,0xa9,0x00,0x32,0x0b,0xff,0xd0,0x49,0x03,0x30,0x09,0xff,0xa0,0x0d,0x08, -0x20,0x9f,0xfa,0xf2,0x06,0x80,0x09,0xff,0xda,0xab,0xef,0xff,0x30,0x9f,0xac,0x04, -0x11,0x50,0x34,0x00,0x30,0x60,0x00,0x9f,0x37,0x00,0x20,0x00,0x09,0x9b,0x0c,0x10, -0xf5,0x0d,0x00,0x30,0x09,0xff,0xd0,0x34,0x00,0x34,0x1f,0xff,0x50,0x7c,0x06,0x00, -0xd8,0x05,0xa0,0xf5,0x00,0x02,0x9d,0xff,0xd8,0x10,0x00,0x07,0xff,0x71,0x08,0xf1, -0x08,0x04,0xff,0xfe,0xaa,0xef,0xff,0x10,0xaf,0xfc,0x00,0x01,0xef,0xf8,0x0b,0xff, -0x80,0x00,0x07,0xdd,0x80,0x9f,0xfe,0x30,0x1b,0x08,0x00,0x0d,0x09,0x10,0x00,0x95, -0x0a,0x00,0xa8,0x0c,0x12,0x7d,0x95,0x0b,0x60,0x03,0x9f,0xff,0xf2,0x02,0x22,0x26, -0x02,0x30,0x82,0xff,0xf1,0x2d,0x06,0x80,0x0e,0xff,0x80,0x00,0x0c,0xff,0xa0,0x7f, -0x00,0x06,0x10,0xf4,0x2a,0x02,0x00,0xad,0x03,0x5a,0x29,0xdf,0xfe,0xa4,0x00,0xb6, -0x04,0x91,0x5a,0xaa,0xaf,0xff,0xca,0xaa,0xa1,0x00,0x00,0x2b,0x01,0x0f,0x07,0x00, -0x41,0x20,0xcf,0xf7,0x92,0x01,0x30,0x3c,0xff,0x70,0xa0,0x01,0x0f,0x0d,0x00,0x21, -0x11,0xbf,0x0d,0x00,0x11,0x3a,0x26,0x01,0xf1,0x01,0xf2,0x6f,0xff,0x30,0x00,0xaf, -0xfe,0x00,0xef,0xff,0xba,0xdf,0xff,0x60,0x03,0xef,0x2c,0x07,0x52,0x01,0x8c,0xff, -0xea,0x40,0x36,0x0d,0x50,0x6f,0xff,0x26,0xff,0xf1,0x70,0x0b,0x20,0xc0,0x1f,0x7c, -0x00,0x41,0xff,0xf7,0x00,0xbf,0xa5,0x01,0x40,0x10,0x06,0xff,0xf0,0x16,0x07,0xf0, -0x04,0x00,0x1f,0xff,0x40,0x00,0xef,0xf6,0x00,0x00,0xbf,0xf9,0x00,0x3f,0xff,0x10, -0x00,0x06,0xff,0xd0,0x51,0x02,0x00,0x22,0x03,0x01,0xcc,0x0b,0x32,0xbf,0xf7,0x1f, -0xdd,0x09,0x31,0xc6,0xff,0xb0,0x4e,0x06,0x10,0xcf,0xe2,0x0b,0x00,0x2f,0x0c,0x11, -0x10,0x16,0x02,0x22,0xff,0xb0,0x65,0x06,0x13,0xf5,0xf8,0x08,0x00,0x86,0x03,0xb0, -0xfa,0x00,0x00,0xdf,0xf2,0x00,0x06,0xff,0xc4,0xff,0xd0,0xd5,0x01,0xf0,0x18,0x00, -0x9f,0xf9,0x1f,0xff,0x00,0x04,0xff,0xf9,0x00,0x0c,0xff,0x50,0xdf,0xf3,0x00,0x8f, -0xff,0xc0,0x00,0xff,0xf2,0x0a,0xff,0x60,0x0b,0xff,0xff,0x00,0x2f,0xfe,0x00,0x6f, -0xf9,0x00,0xff,0xef,0xf4,0x05,0xa4,0x11,0xf0,0x00,0xc0,0x3f,0xf6,0xff,0x70,0x8f, -0xf7,0x00,0x0f,0xff,0x06,0xff,0x1d,0xfb,0x0b,0x3e,0x0d,0x60,0xf2,0xaf,0xe0,0x9f, -0xf0,0xef,0xac,0x00,0xf0,0x03,0x5e,0xfa,0x05,0xff,0x4f,0xfd,0x00,0x00,0x5f,0xfa, -0xff,0x60,0x1f,0xfa,0xff,0x90,0x00,0x02,0x58,0x09,0x30,0xef,0xff,0xf6,0xec,0x04, -0x10,0xfe,0x96,0x08,0x10,0x20,0x99,0x00,0x50,0xa0,0x00,0x6f,0xff,0xf0,0xe0,0x06, -0x31,0xf7,0x00,0x02,0xbd,0x02,0x60,0x4f,0xff,0x30,0x00,0x0e,0xff,0x48,0x12,0x10, -0x50,0xcd,0x03,0xb4,0x0c,0xff,0xd0,0x00,0x0d,0xff,0xc0,0x03,0xff,0xf6,0x00,0x3c, -0x01,0x10,0xf9,0xf0,0x00,0x31,0x77,0xff,0xf1,0xd9,0x0d,0x01,0xd4,0x09,0x21,0xef, -0xff,0x7e,0x0c,0x12,0x5f,0xd8,0x00,0x32,0x6f,0xff,0xf6,0x63,0x11,0x11,0xfe,0x7d, -0x0e,0x30,0xee,0xff,0x80,0x58,0x08,0x10,0x66,0x63,0x03,0x50,0xbf,0xfd,0x00,0xdf, -0xfb,0x24,0x04,0x00,0x97,0x08,0xf0,0x01,0x0d,0xff,0xc0,0x00,0x0c,0xff,0xd0,0x7f, -0xff,0x40,0x00,0x04,0xff,0xf7,0xbf,0xfc,0x0b,0x0b,0xb0,0xf4,0x3f,0xff,0x30,0x00, -0x0a,0xff,0xc0,0x0b,0xff,0xb0,0x6c,0x01,0x10,0x03,0x43,0x12,0x11,0xfc,0x6f,0x01, -0x20,0xff,0xf4,0x55,0x0e,0x30,0x17,0xff,0xc0,0x9f,0x01,0x31,0x8e,0xff,0x40,0xab, -0x05,0x12,0xfc,0x5e,0x01,0x12,0xf4,0x72,0x0e,0x12,0xc0,0x35,0x02,0x1f,0x70,0x07, -0x00,0x12,0x11,0x3f,0xc1,0x02,0x11,0x83,0x06,0x00,0x61,0xf8,0x2a,0xaa,0xaa,0xaa, -0xdf,0x7c,0x0d,0x10,0x1f,0x23,0x00,0x00,0x01,0x02,0x01,0x8a,0x0a,0x11,0xf2,0x4a, -0x0e,0x11,0xf6,0x8f,0x0d,0x01,0xda,0x03,0x00,0x26,0x0d,0x00,0xce,0x00,0x11,0x60, -0xdd,0x0a,0x11,0xb0,0x99,0x0a,0x17,0xf1,0x25,0x00,0x00,0x86,0x0e,0x12,0xa7,0x5b, -0x00,0x21,0xb3,0xff,0xeb,0x04,0xdf,0xbf,0xff,0xfb,0xff,0xff,0xbf,0xfa,0x6b,0xff, -0x60,0xbf,0xf6,0x0b,0x05,0x00,0x11,0x11,0xa6,0x32,0x00,0x20,0xcf,0xf5,0x4a,0x01, -0x21,0xfb,0x00,0x5c,0x02,0x00,0x7e,0x04,0x14,0x80,0xa3,0x07,0x22,0xef,0xf4,0x36, -0x02,0x00,0x87,0x00,0x13,0x10,0x1c,0x0e,0x31,0x05,0xff,0xd0,0xc0,0x04,0x04,0x20, -0x0e,0x21,0x3f,0xff,0xe7,0x00,0x10,0x50,0x9f,0x00,0x14,0xb0,0x2f,0x0e,0xdf,0xaf, -0xf8,0xdf,0xff,0xcd,0xff,0xfc,0x59,0xff,0xc0,0x5f,0xfc,0x05,0x05,0x00,0x11,0x31, -0xc5,0x9f,0xfc,0x32,0x00,0x21,0x00,0x08,0x22,0x07,0x00,0x83,0x00,0x10,0x5f,0x83, -0x00,0xf1,0x0e,0xbf,0xaf,0xf5,0x00,0x02,0xff,0x4a,0xfb,0x00,0x08,0xfd,0x04,0xff, -0x20,0x0e,0xf8,0x00,0xdf,0x80,0x5f,0xf2,0x00,0x8f,0xe0,0x77,0x77,0x77,0x77,0x75, -0x61,0x10,0x01,0x05,0x00,0x50,0x16,0x65,0x00,0x00,0xaf,0x42,0x0f,0xa1,0xf2,0x00, -0x01,0xdf,0xb0,0x00,0x08,0xdf,0xfc,0x60,0x74,0x10,0xb0,0xfa,0x00,0x0a,0xff,0xc6, -0x8f,0xff,0x40,0x0d,0xee,0x20,0xd7,0x00,0x00,0x36,0x05,0x30,0x90,0x00,0x4a,0x92, -0x13,0x70,0x07,0xff,0xfe,0xde,0xff,0x90,0x1f,0xa6,0x05,0x30,0x90,0x3f,0xfe,0xde, -0x0b,0x72,0x2f,0xff,0xa6,0xaf,0xff,0x90,0x0a,0xdf,0x0b,0x75,0x6d,0xfe,0x94,0xff, -0xe0,0xdf,0xf4,0x03,0x10,0x0e,0x0b,0x00,0x50,0x69,0xef,0xc4,0x00,0xdf,0x6a,0x12, -0xc0,0x0d,0xff,0xfb,0x9e,0xff,0xf0,0xdf,0xf7,0x00,0x1e,0xff,0x5d,0x60,0x08,0xf1, -0x1e,0xf8,0xdf,0xf4,0x00,0x07,0xff,0xad,0xff,0x40,0x00,0x7f,0xfa,0xdf,0xf4,0x00, -0x09,0xff,0x9d,0xff,0x70,0x00,0xdf,0xf5,0xdf,0xff,0xb9,0xdf,0xff,0x0d,0xff,0xef, -0xff,0xff,0x60,0xdf,0xf1,0x9e,0xfc,0x50,0x00,0x00,0x06,0xcf,0xfd,0x70,0x58,0x0b, -0xc0,0xb0,0x07,0xff,0xfa,0xaf,0xff,0x60,0xef,0xf5,0x00,0x5f,0xfc,0x6b,0x0c,0x21, -0x88,0x74,0x64,0x01,0x21,0x4f,0xfd,0xee,0x01,0x80,0xf0,0x00,0x04,0x43,0x0e,0xff, -0x40,0x04,0x0a,0x0a,0x51,0xa9,0xff,0xf6,0x00,0xbf,0xea,0x06,0x54,0x6c,0xff,0xc6, -0x00,0x00,0x89,0x01,0x0f,0x06,0x00,0x03,0x50,0x19,0xef,0xc3,0xff,0xf3,0x7a,0x11, -0x00,0x05,0x0c,0xc0,0xfb,0xaf,0xff,0xf3,0x0f,0xff,0x70,0x02,0xff,0xf3,0x2f,0xff, -0x1e,0x00,0x20,0x4f,0xfe,0x06,0x00,0x00,0x63,0x00,0x04,0x12,0x00,0x40,0x0f,0xff, -0x40,0x01,0x2a,0x00,0x23,0xe7,0x6c,0x36,0x00,0x00,0x42,0x00,0x30,0xc5,0xaf,0xf3, -0x68,0x12,0x11,0x80,0xc3,0x07,0x30,0xfd,0x10,0x04,0xec,0x00,0x50,0x90,0x0c,0xff, -0x70,0x01,0xd0,0x06,0x60,0x32,0x22,0xcf,0xf3,0x2f,0xff,0x7a,0x0f,0x11,0x3f,0x74, -0x13,0x11,0x1f,0x7b,0x04,0x10,0x0d,0xb7,0x0a,0x71,0x00,0x05,0xff,0xfd,0x99,0xef, -0xb0,0xcf,0x05,0x10,0x70,0xea,0x10,0x02,0xda,0x0f,0x81,0x00,0x3f,0xff,0xfd,0x00, -0xbf,0xfe,0x98,0x5a,0x02,0x20,0xff,0xf2,0xcc,0x00,0x10,0xf7,0x04,0x00,0x41,0x35, -0xff,0xf6,0x52,0x69,0x12,0x0f,0x04,0x00,0x0d,0x51,0x08,0xef,0xd7,0x8f,0xf5,0xee, -0x0f,0x20,0xf5,0x08,0x3b,0x10,0x10,0xf5,0x2b,0x02,0x20,0xdf,0xf5,0x9f,0x02,0x55, -0xcf,0xf5,0x3f,0xfe,0x00,0x06,0x00,0x20,0x2f,0xff,0x06,0x00,0x11,0x0e,0x7b,0x01, -0x02,0x2a,0x00,0x02,0x36,0x00,0x00,0x24,0x10,0x01,0xf1,0x02,0x00,0x83,0x00,0x90, -0x96,0x00,0x05,0xff,0xf1,0x02,0xff,0xb7,0xaf,0x2e,0x0d,0x01,0x5f,0x0b,0x71,0x18, -0xdf,0xec,0x70,0x00,0xef,0xf3,0x0e,0x0d,0x00,0xc4,0x06,0x0e,0x0b,0x00,0xa1,0x48, -0xef,0xd6,0x00,0xef,0xfe,0xff,0xff,0xf6,0x0e,0xce,0x12,0xff,0x02,0xef,0xf5,0x00, -0x2f,0xff,0x1e,0xff,0x30,0x00,0xff,0xf2,0xef,0xf3,0x00,0x0f,0xff,0x2e,0x0b,0x00, -0x0d,0x90,0x20,0x5e,0xd3,0xcf,0xf9,0x8f,0xf5,0x03,0x20,0xb2,0x02,0x0f,0x02,0x00, -0x03,0xd0,0x00,0x05,0xed,0x20,0x00,0xdf,0xf8,0x00,0x09,0xff,0x40,0x00,0x03,0x05, -0x04,0x01,0xdd,0x02,0x3f,0x0a,0xff,0x70,0x07,0x00,0x14,0x40,0x0c,0xff,0x60,0x9b, -0xd0,0x01,0x5f,0xfb,0x00,0xef,0xe9,0x00,0xc5,0x02,0x09,0x00,0xfe,0x02,0x40,0xf3, -0xdf,0xf4,0x05,0xc5,0x02,0x70,0x43,0xff,0xf8,0x00,0xdf,0xf6,0xef,0x1e,0x0b,0x00, -0xe3,0x16,0x10,0xdf,0x06,0x03,0x11,0x0d,0x16,0x08,0xf1,0x01,0xdf,0xfe,0x9f,0xfe, -0x10,0x0d,0xff,0x50,0xcf,0xfa,0x00,0xdf,0xf4,0x02,0xff,0xf5,0x37,0x00,0x7e,0xe1, -0xdf,0xf4,0x00,0x0d,0xff,0xa0,0xc3,0x00,0x0c,0x02,0x00,0xf0,0x09,0xdf,0xf2,0x8d, -0xfd,0x70,0x2b,0xef,0xc4,0x0d,0xff,0xdf,0xff,0xff,0x9f,0xff,0xff,0xf2,0xdf,0xff, -0xb9,0xef,0xff,0xfa,0xaf,0x17,0x03,0xa0,0x03,0xff,0xf4,0x00,0x7f,0xfc,0xdf,0xf4, -0x00,0x0f,0x87,0x06,0x9f,0xdd,0xff,0x40,0x00,0xff,0xf0,0x00,0x4f,0xfd,0x11,0x00, -0x20,0x60,0xef,0xf1,0x8d,0xfd,0x70,0x0e,0x63,0x00,0x20,0x70,0xef,0x8f,0x12,0x6f, -0x0e,0xff,0x60,0x02,0xff,0xf1,0x92,0x01,0x13,0x02,0x0b,0x00,0x52,0x00,0x05,0xbe, -0xfd,0x81,0x3b,0x0a,0x20,0x20,0x06,0xe7,0x02,0x20,0xd0,0x0d,0xe7,0x02,0x01,0x49, -0x02,0x40,0x9f,0xf9,0x4f,0xfd,0x23,0x05,0x00,0x06,0x00,0x22,0x7f,0xfb,0x12,0x00, -0x11,0x0e,0x1e,0x00,0x02,0x2a,0x00,0x20,0x00,0xaf,0x36,0x00,0xd0,0x00,0x05,0xcf, -0xfd,0x81,0x00,0xdf,0xf4,0xaf,0xfc,0x40,0x0d,0xff,0x82,0x0c,0x50,0xdf,0xff,0x76, -0xcf,0xfe,0x1b,0x05,0x21,0xef,0xf5,0x09,0x04,0x14,0x8d,0x14,0x04,0x10,0x08,0x1f, -0x04,0x00,0x25,0x05,0x50,0xf7,0x00,0x1f,0xff,0x5d,0x48,0x02,0x13,0xe0,0x4b,0x04, -0x3f,0x6a,0xef,0xc4,0xb2,0x01,0x09,0x61,0x00,0x00,0x19,0xef,0xc4,0x9f,0x9f,0x03, -0x60,0xef,0xf3,0x09,0xff,0xfa,0x9e,0xe7,0x01,0x66,0x60,0x01,0xff,0xf3,0x3f,0xff, -0xcf,0x03,0x0a,0xd5,0x03,0x00,0x1e,0x00,0x02,0x2a,0x00,0x05,0xd5,0x03,0x1e,0xc4, -0x35,0x04,0x0d,0x06,0x00,0xe0,0x0d,0xff,0x4b,0xfc,0xdf,0xfe,0xff,0xbd,0xff,0xff, -0xea,0xdf,0xfb,0x10,0x83,0x00,0x01,0xf1,0x01,0x0e,0x07,0x00,0x00,0x25,0x13,0x30, -0xef,0xeb,0x50,0xe5,0x06,0x00,0x57,0x15,0xc1,0x94,0x7f,0xff,0x30,0xff,0xf0,0x00, -0x8c,0xc5,0x0d,0xff,0xb4,0xe3,0x07,0x00,0xa8,0x04,0x21,0x29,0xef,0xf0,0x07,0xc0, -0x37,0xff,0xf4,0x4e,0xe9,0x00,0x09,0xff,0x71,0xff,0xf8,0x45,0x58,0x08,0x00,0xa0, -0x05,0x84,0x02,0xae,0xfe,0xb5,0x00,0x03,0xff,0xe0,0x04,0x00,0x00,0x60,0x11,0x10, -0xe0,0x04,0x00,0x48,0x47,0xff,0xe5,0x40,0x18,0x00,0x04,0x04,0x00,0x10,0x02,0x44, -0x08,0xbf,0xff,0xfb,0xa0,0x00,0xbf,0xff,0xf0,0x00,0x1a,0xef,0xd0,0xe4,0x01,0x13, -0x11,0x2d,0x0b,0x00,0xb1,0xdf,0xf6,0x00,0x2f,0xff,0x29,0xff,0xf9,0x9e,0xff,0xf2, -0xb8,0x04,0xe2,0x20,0x3c,0xff,0xc4,0xcf,0xf2,0xbf,0xf8,0x00,0x06,0xff,0xc5,0xff, -0xc0,0x53,0x09,0xf0,0x0c,0x0f,0xff,0x20,0xbf,0xf5,0x04,0xff,0xc0,0x06,0xff,0x90, -0x8f,0xf7,0x00,0x1f,0xfe,0x0c,0xff,0x20,0x00,0xbf,0xf3,0xff,0xd0,0x00,0x06,0xff, -0x9e,0x0f,0x11,0x1f,0xcd,0x08,0x30,0xcf,0xff,0xd0,0xb4,0x07,0x13,0xf8,0x44,0x11, -0xf0,0x1f,0x9f,0xf6,0x00,0x3f,0xf5,0x00,0x4f,0xfb,0x5f,0xf9,0x00,0x7f,0xf9,0x00, -0x7f,0xf7,0x1f,0xfc,0x00,0xcf,0xfe,0x00,0xaf,0xf3,0x0d,0xff,0x00,0xff,0xff,0x20, -0xef,0xf0,0x09,0xff,0x35,0xff,0xef,0x71,0xff,0xb0,0x05,0xff,0x69,0xfc,0xaf,0xb4, -0x39,0x02,0xd0,0x9e,0xf7,0x5f,0xf8,0xff,0x30,0x00,0xdf,0xef,0xf2,0x1f,0xff,0xff, -0x76,0x02,0x41,0xe0,0x0c,0xff,0xfb,0xed,0x0e,0x00,0x1f,0x09,0x00,0x90,0x08,0x10, -0x02,0x87,0x01,0x10,0x0d,0x86,0x17,0x60,0xf0,0x00,0x5f,0xfe,0x00,0x0b,0x77,0x05, -0x90,0x80,0x4f,0xff,0x10,0x03,0xff,0xf1,0xcf,0xf7,0x6f,0x17,0x00,0x1f,0x07,0x11, -0x2f,0xe8,0x0e,0x11,0x08,0x9d,0x08,0x31,0x0a,0xff,0xfe,0x8f,0x07,0x01,0x4a,0x17, -0xf0,0x03,0xfa,0xff,0xf1,0x00,0x06,0xff,0xe0,0xaf,0xf9,0x00,0x0e,0xff,0x60,0x2f, -0xff,0x30,0x8f,0xfd,0x36,0x0d,0x20,0xcf,0xf8,0xa5,0x12,0xf0,0x02,0x7f,0xfd,0x00, -0x0c,0xff,0x80,0x2f,0xff,0x10,0x1f,0xff,0x20,0x0c,0xff,0x60,0x5f,0xfd,0xba,0x07, -0x20,0xaf,0xf8,0x5a,0x01,0x20,0xef,0xf2,0xfb,0x11,0x01,0x7f,0x10,0x12,0xff,0x4c, -0x09,0x00,0xee,0x00,0x11,0x0c,0x74,0x09,0x11,0x07,0xef,0x00,0x12,0x02,0x32,0x13, -0x24,0xff,0xd0,0x49,0x16,0x20,0x06,0xaf,0x23,0x00,0x11,0x0b,0x1d,0x00,0x31,0x0a, -0xfe,0x70,0x74,0x0a,0x00,0x18,0x0c,0x01,0x18,0x06,0x42,0x08,0x88,0x88,0xff,0xed, -0x0a,0x10,0x20,0x4d,0x00,0x20,0x50,0x00,0x34,0x04,0x10,0x00,0x58,0x0c,0x10,0x00, -0x5d,0x12,0x00,0xbb,0x09,0x11,0xf7,0xcc,0x08,0x31,0x88,0x88,0x83,0x44,0x06,0x12, -0x73,0x80,0x0d,0xa0,0x00,0x06,0x40,0x00,0x2d,0xfb,0x00,0x0d,0xff,0x30,0x4a,0x1a, -0x40,0x7f,0xf4,0x00,0x09,0x66,0x01,0x11,0xf3,0x07,0x00,0xf4,0x05,0xcf,0xf1,0x02, -0x8f,0xfb,0x00,0x7f,0xfc,0x10,0x07,0xff,0xe3,0x00,0x04,0xff,0xd0,0x00,0x0b,0xff, -0x10,0x1c,0x00,0x90,0x8f,0xf3,0x00,0x07,0xff,0x50,0x00,0x3f,0xf9,0x39,0x18,0x02, -0x7e,0x19,0x4f,0x32,0x2f,0xb2,0xfb,0x03,0x00,0x05,0x41,0x1c,0x90,0x28,0x20,0x31, -0x00,0x30,0x1d,0xff,0x20,0xb7,0x1a,0x61,0x00,0xff,0xb0,0x00,0x0f,0xfd,0xde,0x00, -0xa0,0x0e,0xfd,0x00,0x00,0xcf,0xf0,0x00,0x06,0xff,0xb3,0x84,0x11,0x00,0xb3,0x0b, -0x51,0x9f,0xf7,0x00,0x0d,0xfe,0x1c,0x00,0x03,0x23,0x00,0x20,0x0f,0xfb,0xef,0x1a, -0x80,0x04,0xef,0xe0,0x00,0x6f,0xd2,0x00,0x01,0x26,0x0a,0x60,0xcf,0xe7,0x00,0x02, -0x99,0x01,0xed,0x02,0xa0,0x7f,0xf0,0x8f,0xfa,0xcf,0xfd,0xaf,0xfb,0x0b,0xfa,0x4a, -0x01,0x63,0x30,0x79,0x40,0x00,0x5d,0xfd,0x74,0x16,0x15,0x11,0x73,0x15,0x15,0xdf, -0x6c,0x16,0x25,0xef,0xf3,0x0a,0x00,0x01,0x6c,0x06,0x70,0x11,0x11,0x11,0x11,0xee, -0x7f,0xf3,0x70,0x06,0x00,0xa0,0x0d,0x00,0x2b,0x1c,0x60,0x1f,0xfc,0xcc,0xcc,0xcc, -0xc8,0xba,0x1b,0x32,0x1f,0xb0,0x00,0xbd,0x14,0x13,0x30,0x0a,0x00,0x34,0x00,0x6f, -0xf1,0x0a,0x00,0x23,0x8f,0xe1,0x0a,0x00,0xe1,0x08,0xfe,0x20,0x1f,0xfe,0xee,0xee, -0xee,0xd9,0x00,0x8f,0xe2,0x00,0x0d,0x46,0x00,0x32,0x08,0xfe,0x20,0x25,0x00,0x34, -0xee,0x8f,0xe2,0x6e,0x00,0x24,0xfe,0x20,0x0a,0x00,0x14,0xe2,0x82,0x00,0x29,0xce, -0x20,0x02,0x17,0x09,0xb3,0x00,0x24,0x03,0xee,0x0a,0x00,0x24,0x3f,0xff,0x13,0x00, -0x24,0xff,0xff,0x13,0x00,0x20,0xf8,0xdf,0xb8,0x00,0x00,0x13,0x00,0x20,0x70,0xdf, -0x72,0x00,0xc2,0xe0,0x00,0x3f,0xf7,0x00,0x7b,0xcc,0xcc,0xcc,0xce,0xf1,0x03,0x0f, -0x0b,0x63,0x00,0x0b,0xf1,0x1f,0xf6,0x00,0x0a,0x00,0x24,0x1e,0xf8,0x0a,0x00,0x33, -0x02,0xef,0x80,0x0a,0x00,0xe0,0x00,0x2e,0xf9,0x00,0x8d,0xee,0xee,0xee,0xef,0xf1, -0x00,0x02,0xef,0x90,0x46,0x00,0x00,0x2b,0x02,0x32,0x2e,0xf9,0xdf,0x64,0x00,0x00, -0x54,0x0e,0x04,0x82,0x00,0x15,0x2e,0x0a,0x00,0x3e,0x02,0xdd,0x00,0x01,0x00,0x13, -0x22,0x08,0x00,0x12,0x04,0xc3,0x19,0x00,0x8b,0x04,0x13,0xf4,0x11,0x00,0x12,0x55, -0x13,0x00,0x51,0x4f,0xf5,0x00,0x5f,0xf4,0x11,0x00,0x00,0x7f,0x0c,0x11,0x40,0x11, -0x00,0x10,0x00,0x13,0x00,0x10,0x04,0x53,0x0f,0x00,0x13,0x00,0x40,0x1f,0xff,0xff, -0x80,0x50,0x0f,0x90,0xf1,0x0c,0xdd,0xdf,0xc0,0x00,0x0c,0xfd,0xdd,0x80,0x0d,0x31, -0xc0,0x00,0x0c,0x4c,0x16,0x0f,0x09,0x00,0x24,0x21,0xfd,0xdd,0xa3,0x18,0x01,0x94, -0x01,0x12,0xd0,0xaa,0x00,0x12,0x22,0xac,0x00,0x11,0x0e,0x33,0x01,0x00,0x24,0x00, -0x3f,0xeb,0xbb,0xbe,0x63,0x00,0x29,0x01,0x09,0x00,0x00,0xaa,0x04,0x11,0xc0,0xa2, -0x11,0xc0,0x1e,0xff,0xcc,0x60,0x00,0x06,0xcc,0xff,0xe1,0x02,0xef,0x90,0xbc,0x10, -0x40,0xfe,0x20,0x00,0x2e,0x7b,0x01,0x00,0x06,0x02,0x00,0x7a,0x01,0x02,0x18,0x02, -0x21,0x2e,0xf8,0x11,0x00,0x00,0x13,0x00,0x33,0x88,0xfe,0x20,0x62,0x01,0x13,0xe2, -0x61,0x01,0x2c,0xee,0x20,0x0a,0x02,0x06,0x01,0x00,0x24,0x05,0x50,0x0a,0x00,0x24, -0x0d,0xd0,0x0a,0x00,0x25,0x6f,0xf6,0xd0,0x02,0x00,0x95,0x04,0x02,0x81,0x1f,0x03, -0x03,0x02,0x53,0x00,0x1e,0xf9,0xaf,0xe1,0xae,0x02,0x22,0xf1,0x1f,0x04,0x02,0x30, -0x01,0xff,0x80,0x82,0x1e,0x01,0x5a,0x11,0x21,0x10,0x01,0x30,0x1f,0x01,0x79,0x1e, -0x10,0x7f,0x6d,0x04,0x00,0xbc,0x12,0x00,0xb9,0x1e,0x11,0x00,0xbb,0x1e,0x21,0x00, -0x06,0x70,0x04,0x11,0xfd,0x41,0x03,0x20,0xb0,0x00,0x79,0x05,0x00,0xb6,0x01,0xe3, -0xf3,0x00,0x00,0xbf,0xf8,0x88,0x88,0x88,0x88,0x8f,0xfb,0x00,0x04,0xff,0x01,0x00, -0x24,0x40,0x0c,0x0a,0x00,0x22,0xc0,0x00,0x68,0x00,0x03,0x8d,0x00,0x11,0x09,0x5c, -0x20,0x00,0xd1,0x0d,0x11,0xfc,0x96,0x00,0x60,0x04,0x14,0xfe,0x10,0x3f,0xf0,0x60, -0x20,0xf0,0x0d,0xb8,0xf8,0x00,0x0c,0xf3,0x00,0x05,0xff,0xfb,0x3b,0xfa,0x00,0x0e, -0xf2,0x00,0x5f,0xf9,0x10,0x0e,0xff,0x95,0xbf,0xc0,0x01,0xef,0x60,0x00,0x0f,0xbd, -0x1d,0x21,0x09,0xfa,0x64,0x05,0x40,0xb4,0x20,0x0e,0xf2,0xd7,0x04,0x50,0xf7,0x0e, -0xe0,0x1f,0xd0,0x1b,0x11,0x30,0x30,0x0c,0xf2,0x41,0x20,0x50,0xcf,0xa0,0x00,0x0a, -0xf4,0x28,0x21,0x50,0xe6,0x00,0x00,0x0b,0xf3,0x11,0x21,0x10,0x20,0x67,0x21,0x22, -0x0a,0xf7,0x17,0x01,0x41,0xb0,0x03,0xfe,0x20,0xb1,0x0e,0x40,0x40,0x00,0x9f,0xe3, -0x65,0x19,0x10,0xfa,0x3b,0x05,0x51,0xa5,0x22,0x59,0xff,0xc0,0xf2,0x0d,0x03,0xdd, -0x11,0x5a,0x01,0x6a,0xcc,0xa6,0x10,0x66,0x01,0x00,0x47,0x20,0x02,0xf1,0x11,0x60, -0x60,0x3f,0xff,0xff,0xe1,0x1b,0x97,0x05,0x70,0xf8,0x06,0xff,0xff,0x51,0xdf,0xb0, -0xed,0x03,0xf0,0x05,0x00,0x9f,0xfa,0x01,0xde,0x25,0x00,0x02,0xf9,0x82,0x00,0x0c, -0xe0,0x00,0x17,0xef,0x50,0x08,0xff,0x60,0x94,0x04,0x52,0x04,0xfe,0x40,0x00,0x5b, -0x42,0x00,0x42,0x76,0x70,0x0f,0xfa,0x0a,0x00,0x33,0x9f,0xf3,0x1f,0x0a,0x00,0x42, -0x6c,0xa2,0x01,0x56,0x0a,0x00,0x43,0x7a,0x60,0x0b,0xff,0x96,0x04,0x41,0xf1,0x09, -0xfb,0x30,0xf6,0x01,0x51,0x78,0x90,0x01,0x19,0xf2,0xd9,0x01,0x00,0x8b,0x01,0xf0, -0x02,0xf8,0x30,0x00,0x00,0x02,0x7b,0xfc,0x00,0x00,0x0c,0x6a,0xf7,0x31,0x04,0x4f, -0xf3,0x61,0xa4,0x01,0x51,0xf6,0xff,0x9f,0xaa,0xfa,0xdf,0x01,0x52,0xa4,0xfe,0x4f, -0xe1,0x80,0x2e,0x02,0x31,0x98,0x1a,0x60,0xb3,0x00,0x43,0xb7,0x00,0x00,0x10,0x9c, -0x19,0x41,0x9a,0xef,0xff,0xc7,0x70,0x01,0x40,0xce,0xff,0xfd,0xde,0xd2,0x21,0x70, -0x0a,0xfd,0x12,0xef,0xa0,0x00,0x29,0xfe,0x0f,0xf0,0x02,0xf2,0x00,0x2e,0xfb,0x00, -0x00,0x4e,0xf6,0x00,0x0b,0xfd,0x10,0x01,0xdf,0xc0,0x00,0x03,0x03,0x02,0x30,0xe2, -0x00,0x4f,0x1e,0x12,0x50,0x80,0x05,0xff,0xfe,0x22,0x1e,0x04,0x70,0x1f,0xd0,0x08, -0xf6,0x9f,0xee,0xf9,0x8d,0x00,0x30,0xf1,0x0a,0xf4,0xc7,0x0d,0x00,0x61,0x01,0x41, -0x0a,0xf4,0x00,0x68,0x61,0x00,0x11,0xf2,0x69,0x22,0x00,0x45,0x03,0x32,0xf0,0x03, -0xfb,0x0a,0x00,0x24,0x2f,0xc0,0x61,0x05,0x51,0xbf,0x60,0x00,0x5f,0xd1,0xa5,0x00, -0x00,0x86,0x17,0x40,0xfd,0x30,0x00,0x00,0x29,0x06,0x00,0x9c,0x13,0x31,0x53,0x24, -0x7d,0x6d,0x1e,0x10,0x05,0x9f,0x11,0x12,0xa2,0x1f,0x04,0x32,0x9b,0xca,0x72,0x72, -0x01,0x62,0x22,0x21,0x11,0x11,0x11,0x10,0xaa,0x03,0x01,0xac,0x03,0x01,0x34,0x08, -0x00,0x30,0x02,0xa0,0x7f,0xf5,0x22,0x22,0x22,0xef,0x10,0x00,0x00,0xcf,0xc8,0x06, -0x00,0x24,0x17,0x00,0x16,0x00,0x50,0x0b,0xf4,0x00,0x00,0x06,0xc6,0x02,0x20,0x2f, -0xd0,0xef,0x02,0x41,0x00,0x00,0x02,0xdf,0xb2,0x10,0x12,0x50,0xf2,0x21,0x61,0x06, -0xef,0xa0,0x08,0xfc,0x20,0x0d,0x15,0x31,0xf0,0x2f,0xc0,0x78,0x04,0x40,0x3b,0xd0, -0x8f,0xf5,0xbe,0x00,0x60,0xf5,0x0f,0x80,0xec,0xfc,0x00,0x29,0x02,0x40,0x2f,0x34, -0xf1,0xff,0x09,0x00,0x50,0xe0,0x6e,0x05,0x50,0xef,0xcf,0x00,0x50,0xf1,0x10,0x00, -0x01,0xfc,0xd0,0x05,0x51,0xfa,0x00,0x00,0x0a,0xf7,0x09,0x02,0x31,0xb4,0x24,0xbf, -0x69,0x03,0x42,0x2d,0xff,0xff,0xfd,0x98,0x03,0x34,0x5a,0xca,0x50,0x0f,0x1b,0x26, -0xff,0xf7,0x08,0x00,0x80,0x03,0x44,0x4a,0xff,0xff,0xfa,0x56,0x50,0x5a,0x07,0x52, -0xee,0xee,0xee,0xf2,0x4f,0xd8,0x00,0x03,0x08,0x00,0x80,0x00,0xf3,0x3f,0x00,0x3e, -0xee,0xee,0xeb,0x08,0x00,0x10,0x4f,0xe0,0x10,0x22,0xf3,0x3f,0xae,0x01,0x07,0x08, -0x00,0x40,0x3b,0xbb,0xbb,0xb9,0x08,0x00,0x04,0x20,0x00,0x45,0x03,0x33,0x33,0x32, -0x20,0x00,0xa2,0xf4,0x2f,0x32,0x22,0x22,0x23,0x33,0x33,0xf4,0x1f,0x64,0x03,0x48, -0xf3,0x01,0x21,0x19,0x80,0x00,0x00,0x58,0x01,0x33,0xaa,0xaa,0xa4,0xc1,0x02,0x31, -0x48,0xaa,0x84,0x08,0x00,0xf2,0x0b,0x6e,0xff,0xff,0xff,0xe1,0x4b,0x10,0x00,0x1a, -0xff,0xff,0xee,0xff,0xf2,0x4f,0xf6,0x00,0xcf,0xfe,0x61,0x00,0x04,0x40,0x4f,0x6f, -0xca,0xfb,0x22,0x42,0x4f,0x01,0xaf,0xfc,0xb0,0x05,0x42,0x00,0x05,0xee,0x40,0x09, -0x00,0x42,0x00,0x09,0xfa,0x10,0x09,0x00,0x33,0x00,0x3d,0xe4,0x09,0x00,0x23,0x6f, -0xa0,0x1b,0x00,0x12,0xf6,0x24,0x00,0x32,0x02,0xdd,0x30,0x09,0x00,0x22,0x5f,0xf3, -0x3f,0x00,0x23,0x09,0xff,0x48,0x00,0x22,0xce,0x49,0x0c,0x13,0x21,0x4f,0xc1,0x6c, -0x00,0x40,0x15,0x40,0x48,0x00,0x77,0x0f,0x12,0xee,0xca,0x08,0x23,0x5e,0xff,0x7b, -0x23,0x71,0x00,0x47,0x99,0x73,0x00,0x02,0x22,0x01,0x00,0x23,0x10,0xcf,0xd3,0x00, -0x21,0xd6,0x0e,0x0c,0x06,0x20,0xe4,0xd6,0xfb,0x1e,0xe0,0x28,0x88,0xf4,0xd6,0x05, -0x77,0x10,0x19,0xff,0xff,0xf4,0xd6,0x01,0x22,0xc0,0x0a,0x60,0xf4,0xd6,0x0d,0xff, -0x50,0x6e,0x08,0x00,0x61,0x0e,0xff,0x60,0x00,0x7d,0xee,0x10,0x00,0x01,0x30,0x00, -0x02,0x2a,0x05,0x42,0xe4,0xd6,0x02,0x44,0x08,0x00,0x15,0x0d,0x48,0x00,0x11,0x60, -0x08,0x00,0x32,0x0c,0xff,0x40,0x28,0x00,0x12,0x00,0x20,0x00,0x13,0x0a,0x20,0x00, -0x02,0x38,0x12,0x05,0x08,0x00,0x13,0xdf,0x88,0x00,0x21,0x24,0x44,0x01,0x00,0x0a, -0x9d,0x1e,0x41,0x5a,0xef,0xfe,0xa5,0x09,0x00,0x71,0x3d,0xff,0xfe,0xff,0xff,0xd3, -0x00,0x0e,0x14,0x60,0xe6,0xba,0x4b,0xff,0x50,0x00,0xce,0x08,0x90,0xe6,0xba,0x00, -0x6f,0xf4,0x00,0x00,0xef,0x60,0x0a,0x00,0x60,0x06,0xfe,0x00,0x07,0xfb,0x00,0x0a, -0x00,0x90,0x00,0xaf,0x70,0x0c,0xf3,0x00,0x00,0xea,0xda,0x23,0x03,0x40,0x0f,0xe0, -0x00,0x00,0xb6,0x14,0x40,0x0d,0xf0,0x2f,0xc0,0x1e,0x05,0xf0,0x21,0x93,0x00,0x0b, -0xf2,0x2f,0xb0,0x00,0x7f,0xa0,0x0a,0xff,0x80,0x0a,0xf2,0x0f,0xd0,0x0a,0xf8,0xf8, -0x3f,0x85,0xed,0x3c,0xf1,0x0d,0xf3,0xce,0x37,0xf7,0x09,0xfa,0x2a,0xff,0xd0,0x07, -0xff,0xd2,0xaf,0x50,0x00,0x3d,0xe5,0xbf,0x70,0x00,0xef,0x6c,0xe3,0xcf,0x02,0x10, -0xfe,0xab,0x10,0x10,0x20,0x61,0x01,0x01,0x01,0x03,0x10,0xa2,0xfb,0x1e,0x11,0x50, -0x96,0x00,0x41,0xec,0xce,0xff,0xd3,0xa1,0x00,0x44,0x5b,0xff,0xff,0xb6,0xc9,0x04, -0x1a,0x10,0x8b,0x05,0x33,0x4c,0xff,0xe8,0x20,0x06,0x31,0xcb,0xef,0xc0,0x47,0x08, -0x41,0xe3,0x00,0x0a,0xf9,0xf7,0x05,0x90,0x40,0x00,0x00,0xef,0x00,0x02,0x30,0x00, -0xcf,0x0d,0x00,0x50,0x23,0xef,0xfe,0x50,0xcf,0xcd,0x03,0xf0,0x03,0x5f,0xff,0xff, -0xf4,0x9f,0x60,0x00,0x01,0xfe,0xaf,0xff,0xff,0xfc,0x2f,0xf6,0x00,0x3d,0xf6,0xad, -0x01,0x60,0x04,0xff,0xfe,0xff,0xa0,0xbf,0x25,0x17,0xc1,0x2e,0xff,0xff,0xfa,0x9f, -0xff,0xff,0xf7,0x01,0xcf,0xd8,0x7c,0xc7,0x26,0x41,0x0b,0xf8,0x00,0x7f,0xbe,0x21, -0x22,0x4f,0xa0,0xe7,0x21,0x32,0xe0,0x9f,0x20,0xcb,0x03,0x42,0xf6,0xdd,0x00,0xbf, -0x3b,0x13,0x22,0xfc,0x01,0x69,0x01,0x32,0xfd,0xfe,0xac,0x09,0x00,0x50,0xfe,0xdf, -0xff,0xfb,0xbb,0x01,0x00,0x19,0xb9,0x86,0x05,0x04,0x09,0x00,0x24,0x1e,0x80,0x4a, -0x06,0x14,0xf9,0x13,0x00,0x24,0x9f,0xa0,0x94,0x1e,0x14,0xfb,0x13,0x00,0xc1,0x8f, -0xb0,0x00,0x00,0x46,0x65,0x55,0x55,0x44,0x4b,0xfc,0x10,0x63,0x23,0x01,0x6c,0x02, -0x13,0xaf,0x6b,0x00,0x32,0x20,0x35,0x55,0x01,0x00,0x60,0x40,0x06,0xbb,0xbb,0xba, -0xaa,0xcf,0x13,0x04,0x1c,0x00,0x00,0x7b,0x17,0x03,0x09,0x00,0x01,0x84,0x24,0x10, -0x00,0x57,0x09,0x34,0x07,0xfc,0x10,0x5f,0x07,0x14,0xc1,0x7c,0x07,0x14,0xfd,0x13, -0x00,0x24,0x4f,0xd1,0xf0,0x08,0x19,0x90,0x68,0x01,0x00,0x18,0x0c,0x22,0xc8,0x30, -0x98,0x05,0x41,0x56,0xae,0xfd,0x50,0xb3,0x09,0x51,0x42,0x00,0x3a,0xfd,0x30,0x1b, -0x00,0x41,0xea,0x40,0x2b,0xf7,0x13,0x00,0x40,0x7b,0xfc,0x30,0x65,0x51,0x00,0x43, -0x63,0x00,0x2b,0xf7,0x22,0x07,0x22,0x10,0x41,0x37,0x00,0x21,0x7e,0xe3,0xac,0x20, -0x40,0xba,0xca,0x60,0x40,0xd6,0x01,0x12,0xf7,0x98,0x03,0x01,0x78,0x18,0xa0,0x2e, -0xf6,0x00,0x00,0x3f,0xfb,0x00,0x9f,0xc1,0x07,0x99,0x0b,0x51,0xf6,0x04,0xff,0xfa, -0x03,0x48,0x0d,0x60,0x05,0xff,0xfb,0x03,0xff,0xb0,0x1b,0x00,0x20,0xcf,0xe3,0x1b, -0x00,0x70,0x06,0xff,0x50,0x01,0x00,0x2e,0xf7,0x6f,0x03,0x41,0xf7,0x10,0x05,0xef, -0x1f,0x06,0x4e,0x7c,0xfe,0xfc,0x81,0xb8,0x09,0x01,0xa6,0x11,0xf0,0x09,0xfd,0x10, -0x00,0xff,0xdd,0xdd,0xdd,0xef,0xd1,0x00,0xfd,0x00,0x00,0x0b,0x4b,0xfd,0x10,0xfd, -0x00,0x00,0x0e,0x50,0xaf,0xd1,0x07,0x00,0x40,0x73,0x3a,0xfd,0xfd,0x2c,0x09,0x32, -0xf4,0xdf,0xfd,0x30,0x00,0x0f,0x07,0x00,0x2c,0x20,0xff,0xcc,0x01,0x00,0x12,0xff, -0x69,0x03,0x03,0xee,0x27,0x01,0x69,0x19,0x23,0xda,0x30,0x6d,0x01,0x32,0xb7,0x7b, -0xf7,0x5a,0x01,0x60,0xf5,0x00,0x00,0x5f,0x66,0x51,0xb1,0x05,0x10,0x90,0x47,0x09, -0x00,0xca,0x03,0xb2,0x1f,0x30,0x00,0x00,0x01,0x40,0x07,0xf5,0x00,0x00,0x2f,0x70, -0x01,0x50,0x8d,0x00,0x00,0x7f,0x20,0x2d,0x00,0x40,0x20,0x2f,0x20,0x03,0xf9,0x19, -0xf2,0x16,0x8c,0xff,0x80,0x0f,0x40,0x0c,0xb0,0x04,0x8c,0xff,0xff,0xea,0x50,0x2f, -0x20,0x1f,0x40,0x6f,0xff,0xda,0x62,0x00,0x00,0x8f,0x00,0x4f,0x00,0x29,0x51,0x09, -0x80,0x00,0x00,0x3e,0x90,0x5e,0x00,0x63,0x27,0x30,0x06,0xf1,0x3f,0x80,0x07,0x10, -0xfc,0x5c,0x05,0x10,0x0f,0xad,0x24,0x00,0x62,0x00,0xd3,0xe5,0x09,0xc0,0x00,0x08, -0x99,0x99,0x70,0x00,0x01,0xf3,0x01,0xf9,0x61,0x02,0x41,0xe0,0x00,0x4f,0xb4,0xe4, -0x01,0x60,0x6f,0x50,0x00,0x02,0xbf,0xfe,0xbd,0x06,0x10,0xe5,0x0f,0x00,0x54,0x34, -0x44,0x44,0x44,0x43,0xab,0x02,0x14,0x21,0xa2,0x02,0x16,0xfb,0x09,0x00,0x13,0x21, -0x09,0x00,0x23,0x02,0xfc,0x09,0x00,0x03,0x37,0x07,0xf0,0x0b,0x7f,0xff,0x74,0xf1, -0x00,0x03,0xbf,0xd8,0x17,0xff,0xcf,0xf7,0x30,0x00,0x3f,0xfe,0xef,0x3f,0xf2,0x02, -0xfe,0x00,0x00,0xdf,0x50,0x06,0x46,0x07,0x20,0x00,0x04,0x36,0x1b,0x61,0xf2,0x03, -0xfe,0x00,0x09,0xf3,0x4a,0x29,0x40,0xf6,0x00,0x0e,0xe0,0x36,0x00,0x53,0xfe,0x60, -0x00,0x1f,0xa0,0x63,0x00,0x23,0x4f,0x70,0x09,0x00,0x23,0x6f,0x40,0x09,0x00,0x23, -0x8f,0x20,0x09,0x00,0x23,0xaf,0x10,0x09,0x00,0x14,0xbf,0x90,0x00,0x19,0xce,0x99, -0x00,0x01,0x5d,0x01,0xf3,0x07,0xdf,0xa1,0x03,0xfd,0xaf,0xb0,0x8f,0x10,0x8f,0x18, -0xf1,0x08,0xf1,0x3f,0xdb,0xfb,0x00,0x5d,0xfa,0x10,0x00,0x02,0x19,0x0d,0x02,0xd1, -0x23,0x00,0x75,0x02,0x12,0x60,0x2e,0x00,0x1f,0x65,0xd6,0x21,0x68,0x01,0x79,0x00, -0x12,0xe1,0x2c,0x09,0x12,0xf2,0xe8,0x03,0x12,0xf4,0x9e,0x00,0x1f,0x63,0x96,0x00, -0x6a,0x41,0x02,0xdf,0xc1,0x00,0x70,0x1b,0x22,0xcf,0xd1,0xd6,0x0c,0x15,0x7f,0xd4, -0x0d,0x0f,0x96,0x00,0x68,0x52,0x6e,0xd6,0x08,0xf6,0x00,0x04,0x19,0x10,0x20,0x12, -0x2c,0x3f,0x17,0xee,0x50,0x96,0x00,0x6f,0x50,0x02,0xa8,0x00,0x09,0xa1,0xb4,0x05, -0x20,0xf4,0x06,0x68,0x07,0x5f,0x04,0xec,0x10,0x2d,0xe3,0x2c,0x01,0x70,0x31,0x02, -0xbe,0xa1,0x78,0x00,0x31,0xc9,0x2b,0xa0,0x77,0x0b,0x21,0x70,0x9c,0x0f,0x00,0x38, -0x4e,0xfd,0x30,0x7e,0x06,0x32,0x4f,0xff,0x10,0xd8,0x05,0x02,0x65,0x0d,0x03,0xdd, -0x0c,0x10,0x6f,0x60,0x01,0x00,0xd9,0x08,0x21,0xbf,0xf8,0x51,0x0d,0x21,0xe2,0xff, -0xa3,0x03,0x10,0xf9,0x69,0x08,0x00,0xab,0x13,0x30,0x7f,0xfa,0x00,0x40,0x13,0x01, -0x3f,0x13,0x11,0x9f,0xf2,0x1b,0x02,0x5d,0x10,0x04,0x2f,0x0d,0x91,0xf1,0x00,0xaf, -0xfd,0xaa,0xaa,0xae,0xff,0x70,0x88,0x1f,0x20,0x7f,0xfd,0x87,0x1c,0x00,0xee,0x11, -0x21,0xbf,0xfa,0xad,0x0e,0x14,0x80,0x9c,0x05,0x22,0xff,0xf6,0x80,0x1b,0x02,0x32, -0x1e,0x01,0x1e,0x0b,0x41,0xf9,0x99,0x99,0x93,0x20,0x01,0x05,0x9d,0x0f,0x20,0xef, -0xf6,0x3e,0x00,0x01,0x5a,0x04,0x22,0xfd,0x0f,0xaf,0x00,0x00,0x89,0x12,0x00,0x2a, -0x00,0x10,0x40,0xfb,0x00,0x22,0xe0,0x0f,0xeb,0x0c,0x31,0x01,0xff,0xf7,0x23,0x01, -0x01,0x60,0x18,0x24,0x10,0x0e,0x96,0x24,0x01,0xcd,0x27,0x04,0x82,0x23,0x00,0x4c, -0x08,0x00,0x00,0x22,0x42,0xbb,0xbb,0xef,0xf5,0x95,0x01,0x90,0x10,0x00,0x0b,0xff, -0xb9,0x99,0x99,0x90,0x3f,0xbc,0x01,0x01,0x32,0x07,0x33,0x0b,0xff,0xe0,0x2e,0x00, -0x1f,0xf0,0x0c,0x25,0x59,0x31,0xff,0xfb,0x50,0xee,0x00,0x11,0xb2,0xe1,0x00,0x23, -0x7e,0xfe,0x70,0x07,0x02,0x3c,0x02,0x02,0xde,0x04,0x30,0xad,0x80,0x00,0x9a,0x0e, -0x01,0x3e,0x01,0x20,0xf3,0x00,0x3e,0x2b,0x10,0xc0,0xcf,0x00,0x2f,0x66,0x10,0xdd, -0x24,0x46,0x00,0x4c,0x02,0x10,0xf6,0x95,0x04,0x10,0xf8,0x5e,0x02,0x10,0xfa,0x12, -0x04,0x1f,0x65,0x4b,0x25,0x47,0x00,0x44,0x03,0x00,0xe2,0x00,0x73,0xdf,0xf5,0x00, -0x01,0xcf,0xb0,0x3e,0xf8,0x0f,0x0f,0x6e,0x00,0x46,0x70,0x8a,0x20,0x06,0xb4,0x00, -0x3f,0xfa,0x7f,0x13,0x4f,0xce,0x40,0x09,0xf8,0x6e,0x00,0x4b,0x10,0x5f,0xc6,0x28, -0x10,0x90,0x2c,0x0e,0x20,0x05,0x63,0xf6,0x2a,0x0f,0x03,0x00,0x1a,0xc0,0x7f,0xfb, -0x00,0x2f,0xfd,0x00,0x0b,0xfe,0x10,0x01,0x66,0x20,0x10,0x00,0x3f,0x06,0xff,0xd0, -0x07,0x00,0x1f,0xc3,0x00,0x4f,0xfa,0x00,0x00,0x6f,0xfc,0xfb,0x00,0x7f,0xe3,0x0a, -0x2e,0x07,0x00,0x6e,0x25,0x01,0x1b,0x00,0x0f,0x09,0x00,0x2b,0xef,0x4b,0x60,0x02, -0xa8,0x0d,0xff,0x00,0x9f,0xf4,0x7f,0xa0,0x04,0xec,0x10,0x5a,0x00,0x39,0x00,0xed, -0x04,0x00,0x81,0x03,0x01,0x57,0x04,0x10,0xc1,0x0f,0x00,0x40,0xaa,0xcf,0xff,0xe0, -0x02,0x23,0x00,0xd2,0x28,0x00,0xe4,0x22,0x00,0xd0,0x20,0x00,0x0f,0x00,0x00,0xa8, -0x02,0x20,0x4f,0xff,0x32,0x03,0x11,0x83,0xf2,0x03,0x30,0x9f,0xfa,0x3f,0xb5,0x11, -0x31,0x09,0xff,0xa0,0x1e,0x00,0x20,0xaf,0xf8,0x1e,0x00,0x00,0x9b,0x21,0x30,0x04, -0xff,0xf0,0x94,0x05,0x00,0x0f,0x00,0x20,0x02,0xef,0xb9,0x25,0x20,0xfa,0xac,0xf2, -0x1f,0x12,0x4f,0xb4,0x1b,0x10,0x04,0xf7,0x22,0x00,0x55,0x03,0x41,0xce,0x81,0x2f, -0xb0,0xaf,0x0f,0x00,0x18,0x04,0x45,0x2f,0xb0,0x5c,0xe9,0xd1,0x05,0x0f,0xf9,0x24, -0x5e,0x33,0x01,0x66,0x60,0x69,0x12,0x03,0xda,0x14,0x03,0xa8,0x2a,0x27,0x0c,0xfc, -0xec,0x0a,0x00,0xae,0x24,0x22,0xb4,0x00,0xbd,0x24,0x10,0xfa,0x07,0x00,0x10,0xfe, -0xec,0x23,0x00,0xfb,0x23,0x10,0x06,0x0a,0x23,0x02,0x0a,0x24,0x04,0x19,0x24,0x03, -0x08,0x25,0x12,0x0f,0x17,0x25,0x13,0x31,0x26,0x25,0x04,0x35,0x25,0x21,0xdf,0xf7, -0x64,0x24,0x01,0x22,0x22,0x10,0x9f,0x23,0x32,0x02,0x56,0x21,0x10,0x8f,0xfe,0x04, -0x12,0xb0,0x80,0x25,0x12,0xb0,0xaf,0x24,0x03,0x7e,0x07,0x31,0x56,0x62,0x00,0xc8, -0x05,0x12,0xfc,0xcf,0x0c,0x02,0x48,0x0c,0x00,0x1b,0x14,0x0f,0x9e,0x00,0x71,0x23, -0x48,0x50,0xe9,0x06,0x12,0x60,0x95,0x2c,0x01,0x03,0x06,0x25,0x3f,0xf6,0xcb,0x15, -0x0f,0x9e,0x00,0x6a,0x42,0x5e,0xe7,0x16,0xf8,0xb2,0x33,0x00,0x40,0x00,0x57,0x06, -0xf8,0x06,0xde,0x70,0x35,0x01,0x0f,0xf1,0x26,0x63,0x60,0x00,0x01,0xa9,0x00,0x08, +0x1d,0x90,0x05,0x03,0x13,0x01,0xfd,0x39,0x1d,0x10,0x00,0xf2,0x0b,0x86,0x1d,0x40, +0x0e,0x0d,0x05,0x01,0x04,0xa7,0x1d,0x90,0x08,0x07,0x06,0x01,0x0a,0xbc,0x1d,0xd0, +0x0e,0x0f,0x14,0x00,0x00,0x52,0x1e,0x08,0x00,0x13,0xe8,0x08,0x00,0x22,0x7e,0x1f, +0x08,0x00,0x22,0x14,0x20,0x08,0x00,0x10,0xaa,0x08,0x00,0xf3,0x0d,0x15,0x00,0x00, +0x48,0x21,0xb0,0x14,0x15,0x10,0x00,0x00,0xf0,0x21,0x60,0x0e,0x0e,0x15,0x00,0xfb, +0x83,0x22,0x60,0x0c,0x0b,0x14,0x01,0x00,0xf1,0x08,0x00,0x22,0x5f,0x23,0x08,0x00, +0x13,0xcd,0x08,0x00,0xf2,0x0b,0x3b,0x24,0x70,0x06,0x06,0x14,0xff,0x00,0x77,0x24, +0x70,0x06,0x07,0x14,0x01,0x00,0xbd,0x24,0x70,0x06,0x09,0x14,0xff,0x00,0x17,0x25, +0x08,0x00,0xf0,0x05,0x71,0x25,0xa0,0x0e,0x0f,0x10,0xff,0x00,0xe9,0x25,0x90,0x0f, +0x0e,0x14,0x01,0x00,0x75,0x26,0x30,0x0f,0x68,0x00,0x22,0x13,0x27,0x08,0x00,0x13, +0xb1,0x08,0x00,0x40,0x4f,0x28,0x30,0x0f,0x88,0x00,0x13,0xe5,0x08,0x00,0xf3,0x0a, +0x7b,0x29,0xb0,0x0b,0x0b,0x0b,0x00,0x02,0xb8,0x29,0x30,0x0f,0x0e,0x12,0x01,0xff, +0x36,0x2a,0x80,0x0e,0x0d,0x15,0x01,0x00,0xbf,0x08,0x00,0x22,0x48,0x2b,0x08,0x00, +0x10,0xd1,0x08,0x00,0xf0,0x10,0x14,0x01,0x00,0x53,0x2c,0xa0,0x0d,0x0e,0x14,0x00, +0x00,0xdf,0x2c,0x60,0x0d,0x0c,0x10,0x01,0x00,0x3f,0x2d,0xe0,0x0d,0x0d,0x11,0x01, +0x00,0xae,0x2d,0xd0,0x0b,0xe0,0x01,0x22,0x14,0x2e,0x08,0x00,0x13,0x7a,0x08,0x00, +0x13,0xe0,0x08,0x00,0x40,0x46,0x2f,0xd0,0x0b,0x58,0x03,0x10,0xa6,0x08,0x00,0xf1, +0x07,0x12,0x00,0x00,0x12,0x30,0x90,0x12,0x13,0x0c,0x00,0x00,0x84,0x30,0x80,0x0b, +0x0b,0x11,0x00,0xfb,0xe2,0x30,0xe0,0x28,0x00,0x22,0x48,0x31,0x08,0x00,0x13,0xae, +0x08,0x00,0x31,0x14,0x32,0xe0,0x38,0x00,0xf0,0x15,0x74,0x32,0x00,0x06,0x06,0x11, +0xff,0x00,0xa7,0x32,0x00,0x06,0x07,0x11,0x01,0x00,0xe3,0x32,0x00,0x06,0x0a,0x11, +0xfe,0x00,0x38,0x33,0x00,0x06,0x0a,0x10,0xfe,0x00,0x88,0x33,0xa0,0x0c,0x58,0x00, +0x22,0xf4,0x33,0x48,0x02,0x31,0x52,0x34,0x70,0x70,0x02,0x13,0xb8,0x08,0x00,0x22, +0x1e,0x35,0x08,0x00,0x13,0x84,0x08,0x00,0x31,0xea,0x35,0x70,0xe8,0x03,0x30,0x4a, +0x36,0x90,0x40,0x02,0x31,0x01,0x92,0x36,0x10,0x00,0x32,0xfe,0xf2,0x36,0x40,0x00, +0x22,0x50,0x37,0x08,0x00,0x13,0xae,0x08,0x00,0x31,0x0c,0x38,0x50,0xb0,0x03,0xf2, +0x13,0x64,0x38,0x10,0x0b,0x0c,0x16,0x00,0xfb,0xe8,0x38,0x80,0x0c,0x0b,0x16,0x01, +0xfb,0x61,0x39,0x10,0x0b,0x0c,0x15,0x00,0xfb,0xdf,0x39,0xd0,0x0e,0x0f,0x13,0x00, +0x00,0x6e,0x3a,0xe8,0x00,0x22,0xce,0x3a,0xf0,0x01,0x22,0x64,0x3b,0x00,0x01,0x21, +0xca,0x3b,0xf8,0x01,0x41,0xfb,0x68,0x3c,0xd0,0x60,0x02,0x21,0xce,0x3c,0xf8,0x01, +0x31,0x00,0x61,0x3d,0x00,0x01,0x32,0x00,0xbf,0x3d,0x10,0x00,0x22,0x52,0x3e,0x10, +0x00,0x40,0xb0,0x3e,0x60,0x0e,0x68,0x01,0x22,0x3c,0x3f,0x10,0x00,0x22,0x9a,0x3f, +0x20,0x00,0x22,0x2d,0x40,0x10,0x00,0x31,0x8b,0x40,0x50,0x90,0x01,0xa2,0x0d,0x41, +0x00,0x0e,0x10,0x11,0x00,0x00,0x95,0x41,0x00,0x02,0x20,0x0d,0x42,0x90,0x01,0xc2, +0x00,0x00,0x7c,0x42,0x60,0x0c,0x0b,0x13,0x01,0x00,0xe5,0x42,0x40,0x01,0x22,0x45, +0x43,0x48,0x02,0x22,0xb3,0x43,0x58,0x01,0x22,0x19,0x44,0x10,0x00,0x22,0x87,0x44, +0x10,0x00,0x10,0xed,0x10,0x00,0x61,0x15,0x01,0xfb,0x61,0x45,0xe0,0xa0,0x00,0x22, +0xc7,0x45,0x20,0x00,0x22,0x35,0x46,0x20,0x00,0x40,0x9b,0x46,0x00,0x0f,0x08,0x02, +0x40,0x24,0x47,0x90,0x0c,0x00,0x01,0x22,0xa8,0x47,0x10,0x00,0x22,0x31,0x48,0x10, +0x00,0x40,0xb5,0x48,0x00,0x0f,0x90,0x00,0x22,0x37,0x49,0x10,0x00,0xf2,0x03,0xbb, +0x49,0x00,0x0f,0x0d,0x16,0x01,0xfa,0x4a,0x4a,0x90,0x0c,0x0c,0x18,0x00,0xfb,0xda, +0x4a,0x98,0x02,0x30,0x66,0x4b,0x50,0x68,0x00,0xf2,0x04,0x00,0xda,0x4b,0xd0,0x0f, +0x10,0x10,0x00,0x00,0x5a,0x4c,0xa0,0x0c,0x0d,0x11,0xff,0x00,0xc9,0x4c,0xc8,0x02, +0x22,0x23,0x4d,0xd8,0x01,0xf1,0x2c,0x78,0x4d,0x70,0x06,0x08,0x13,0xff,0x00,0xc4, +0x4d,0x00,0x06,0x08,0x10,0xff,0x00,0x04,0x4e,0x70,0x06,0x08,0x14,0xff,0x00,0x54, +0x4e,0x00,0x06,0x08,0x11,0xff,0x00,0x98,0x4e,0x70,0x06,0x05,0x15,0x00,0xfb,0xcd, +0x4e,0xd0,0x05,0x05,0x16,0x00,0xfb,0x04,0x4f,0x70,0x06,0x04,0x14,0x01,0x00,0x2c, +0x4f,0x00,0xb8,0x05,0x40,0x44,0x4f,0xb0,0x12,0x28,0x05,0xc0,0xcc,0x4f,0x90,0x0b, +0x0a,0x16,0x01,0xfb,0x3a,0x50,0x50,0x0c,0x40,0x01,0xf0,0x15,0xcd,0x50,0x30,0x06, +0x0a,0x16,0xfe,0xfb,0x3b,0x51,0xf0,0x0d,0x0e,0x16,0x01,0xfa,0xd5,0x51,0xc0,0x0b, +0x0b,0x17,0x01,0xfa,0x54,0x52,0x00,0x0d,0x0c,0x0c,0x01,0x00,0x9c,0x52,0xf0,0x0b, +0xf8,0x00,0xf2,0x0b,0x0a,0x53,0xd0,0x05,0x06,0x15,0x01,0x00,0x49,0x53,0xf0,0x0b, +0x0b,0x16,0x01,0xfa,0xc2,0x53,0xd0,0x05,0x05,0x17,0x00,0xfa,0xfc,0x53,0x88,0x05, +0xa2,0x54,0x54,0x70,0x07,0x08,0x11,0x01,0x00,0x98,0x54,0x10,0x00,0x40,0xf0,0x54, +0x30,0x08,0x10,0x00,0x31,0x34,0x55,0x40,0x58,0x02,0xa2,0x94,0x55,0xc0,0x06,0x07, +0x11,0x00,0x00,0xd0,0x55,0xf8,0x00,0x22,0x5c,0x56,0x48,0x02,0x40,0xba,0x56,0x90, +0x0f,0x78,0x00,0xa2,0x54,0x57,0x50,0x0c,0x0b,0x12,0x01,0xfa,0xb7,0x57,0x20,0x00, +0x22,0x43,0x58,0x20,0x00,0xf1,0x04,0xa1,0x58,0x50,0x0c,0x0e,0x11,0xfe,0x00,0x18, +0x59,0x80,0x0f,0x0e,0x15,0x01,0xfb,0xab,0x59,0x70,0xd8,0x04,0x21,0x09,0x5a,0xd8, +0x05,0x32,0x00,0x98,0x5a,0xb8,0x02,0x22,0xf8,0x5a,0xc0,0x03,0x22,0x8e,0x5b,0xd0, +0x02,0x22,0xf4,0x5b,0xe0,0x03,0x22,0x92,0x5c,0x10,0x00,0xf1,0x04,0xf8,0x5c,0x50, +0x15,0x14,0x10,0x01,0x00,0x98,0x5d,0xd0,0x13,0x14,0x0c,0x00,0x00,0x10,0x5e,0x10, +0x30,0x02,0x31,0x92,0x5e,0x00,0xa8,0x00,0x40,0xd6,0x5e,0x10,0x0e,0xa0,0x01,0xa2, +0x65,0x5f,0x00,0x08,0x08,0x13,0x00,0xfa,0xb1,0x5f,0x20,0x00,0xf1,0x04,0x33,0x60, +0x00,0x08,0x09,0x11,0x00,0x00,0x80,0x60,0x80,0x0d,0x0d,0x15,0x00,0x00,0x09,0x61, +0x50,0x70,0x02,0x22,0x67,0x61,0x10,0x00,0x13,0xf0,0x10,0x00,0x21,0x4e,0x62,0x10, +0x00,0x41,0xfb,0xd7,0x62,0x50,0xc0,0x03,0xa2,0x35,0x63,0x80,0x0d,0x0d,0x14,0x00, +0x00,0xb7,0x63,0x20,0x00,0x40,0x15,0x64,0xa0,0x0d,0xd8,0x04,0xa2,0xa8,0x64,0x70, +0x07,0x08,0x14,0x00,0xfb,0xf8,0x64,0x38,0x04,0xa2,0x84,0x65,0xe0,0x07,0x0a,0x13, +0x00,0x00,0xe3,0x65,0x68,0x06,0xa2,0x53,0x66,0x70,0x07,0x09,0x0f,0xff,0x00,0x97, +0x66,0x60,0x04,0x22,0x19,0x67,0x08,0x01,0xa2,0x77,0x67,0x80,0x0e,0x0d,0x13,0x01, +0x00,0xf3,0x67,0x78,0x03,0x22,0x4b,0x68,0x20,0x00,0x22,0xcd,0x68,0x20,0x00,0x22, +0x2b,0x69,0x98,0x04,0x21,0xb4,0x69,0x48,0x01,0x32,0x00,0x17,0x6a,0x10,0x00,0x22, +0xa0,0x6a,0x20,0x00,0x21,0xfe,0x6a,0x30,0x00,0x41,0xfc,0x80,0x6b,0x50,0x40,0x01, +0xc0,0xde,0x6b,0x40,0x13,0x13,0x14,0x00,0x00,0x9c,0x6c,0x30,0x10,0x30,0x03,0x21, +0x24,0x6d,0xa0,0x00,0x32,0x00,0xb7,0x6d,0xd0,0x03,0x22,0x3b,0x6e,0xa0,0x00,0x31, +0xc7,0x6e,0x50,0xc8,0x00,0x31,0x49,0x6f,0x30,0xc8,0x00,0x22,0xa7,0x6f,0x10,0x00, +0x22,0x29,0x70,0x10,0x00,0x22,0x87,0x70,0x10,0x00,0x32,0x09,0x71,0x30,0x18,0x01, +0x30,0x71,0xb0,0x05,0x90,0x04,0xf0,0x56,0xa3,0x71,0xf0,0x07,0x06,0x06,0x01,0x05, +0xb5,0x71,0x60,0x0b,0x0a,0x0d,0x01,0x00,0x00,0x00,0x43,0x02,0x9f,0xfb,0x8f,0xfa, +0x8f,0xfa,0x7f,0xf9,0x7f,0xf9,0x6f,0xf8,0x6f,0xf7,0x5f,0xf7,0x5f,0xf6,0x4f,0xf6, +0x3f,0xf5,0x00,0x00,0x03,0x30,0x6f,0xf8,0x9f,0xfb,0x3e,0xe4,0x5f,0xd0,0xdf,0x55, +0xfd,0x0d,0xf5,0x5f,0xc0,0xdf,0x45,0xfa,0x0d,0xf2,0x5f,0x90,0xdf,0x14,0xf7,0x0c, +0xf0,0x00,0x00,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x03,0xfc,0x02,0xfd,0x00,0x00,0x00, +0x6f,0x90,0x5f,0x90,0x00,0x00,0x09,0xf6,0x08,0xf6,0x00,0x08,0xff,0x01,0x00,0xf0, +0x13,0xa0,0x7e,0xef,0xfe,0xef,0xfe,0xe9,0x00,0x01,0xfd,0x00,0xfe,0x00,0x00,0x00, +0x3f,0xb0,0x2f,0xc0,0x00,0x00,0x05,0xf9,0x05,0xfa,0x00,0x00,0x00,0x7f,0x70,0x7f, +0x80,0x00,0x5f,0x26,0x00,0x83,0xfd,0x04,0xdd,0xff,0xdd,0xff,0xed,0xb0,0x4d,0x00, +0x12,0x02,0x4d,0x00,0xa0,0x5f,0x90,0x5f,0xa0,0x00,0x00,0x08,0xf6,0x08,0xf7,0xa8, +0x09,0x21,0x02,0xd7,0x06,0x00,0x10,0xf8,0x06,0x00,0xf0,0x0d,0x27,0xfb,0x30,0x00, +0x00,0x0a,0xff,0xff,0xfb,0x10,0x00,0xbf,0xff,0xff,0xff,0xb0,0x03,0xff,0xf5,0x05, +0xff,0xf3,0x06,0xff,0xc0,0x00,0xbf,0xf7,0x06,0x00,0x41,0x5a,0xa5,0x02,0xff,0x35, +0x00,0xf0,0x2b,0xaf,0xff,0xe7,0x00,0x00,0x00,0x09,0xff,0xff,0xe6,0x00,0x00,0x00, +0x4b,0xff,0xff,0x80,0x00,0x00,0x00,0x2a,0xff,0xf2,0x05,0x55,0x00,0x00,0xcf,0xf7, +0x0f,0xff,0x30,0x00,0x8f,0xf9,0x0b,0xff,0xa0,0x00,0xdf,0xf7,0x05,0xff,0xfd,0xae, +0xff,0xf2,0x00,0x8f,0xff,0xff,0xff,0x50,0x00,0x03,0x9d,0xfd,0x82,0x1a,0x0a,0x23, +0xf5,0x00,0x06,0x00,0x30,0x07,0xdf,0xd5,0x0b,0x00,0xf1,0x07,0x07,0xff,0xdf,0xf5, +0x00,0x02,0x00,0x00,0xdf,0x40,0x7f,0xb0,0x05,0xf6,0x00,0x0f,0xf1,0x04,0xfc,0x01, +0xee,0x10,0x0f,0x00,0x21,0x9f,0x60,0x1e,0x00,0x21,0x3f,0xb0,0x2d,0x00,0x21,0x0d, +0xf2,0x5b,0x0a,0x31,0x08,0xf8,0x00,0xb4,0x00,0x12,0xfd,0x6a,0x0a,0x40,0xcf,0x42, +0xbe,0xea,0x5c,0x09,0xf0,0x13,0x91,0xef,0xef,0xfc,0x00,0x00,0x1e,0xe1,0x6f,0xc0, +0x1e,0xf2,0x00,0x0a,0xf5,0x07,0xf9,0x00,0xcf,0x40,0x03,0xfb,0x00,0x6f,0xc0,0x0e, +0xf3,0x00,0x05,0x20,0x01,0xef,0xee,0xfc,0x2e,0x00,0xf0,0x10,0x03,0xbf,0xea,0x10, +0x00,0x01,0xae,0xfd,0x70,0x00,0x00,0x00,0x01,0xef,0xff,0xff,0x90,0x00,0x00,0x00, +0x9f,0xfd,0x9e,0xff,0x20,0x00,0x00,0x0d,0xff,0x00,0x5f,0x9c,0x00,0x50,0xdf,0xf0, +0x06,0xff,0x30,0xdf,0x00,0xa2,0x65,0xef,0xc0,0x00,0x00,0x00,0x2f,0xff,0xff,0xd1, +0xf5,0x00,0x10,0xb1,0x07,0x00,0xf0,0x21,0x8f,0xff,0xfc,0x00,0x5c,0xc2,0x00,0x7f, +0xfd,0xdf,0xfa,0x08,0xff,0x20,0x0f,0xff,0x22,0xef,0xf8,0xdf,0xf0,0x03,0xff,0xe0, +0x03,0xff,0xff,0xfb,0x00,0x2f,0xff,0x20,0x05,0xff,0xff,0x40,0x00,0xcf,0xfd,0x66, +0xaf,0xff,0xf2,0x00,0x02,0xef,0xff,0xff,0x3e,0x00,0xf1,0x2d,0x01,0x9d,0xfe,0xd9, +0x3c,0xff,0xb0,0x5f,0xf5,0xff,0x5f,0xe5,0xfd,0x5f,0xb5,0xfa,0x00,0x00,0x05,0x00, +0x00,0x1c,0xf1,0x00,0x0c,0xfc,0x10,0x07,0xfe,0x10,0x01,0xff,0x60,0x00,0x8f,0xe0, +0x00,0x0e,0xfa,0x00,0x02,0xff,0x60,0x00,0x6f,0xf3,0x00,0x08,0xff,0x10,0x00,0x9f, +0xf0,0x00,0x0a,0xff,0x00,0x00,0xaf,0xf0,0x0e,0x00,0xf0,0x12,0x7f,0xf2,0x00,0x03, +0xff,0x50,0x00,0x0f,0xf9,0x00,0x00,0xaf,0xd0,0x00,0x04,0xff,0x30,0x00,0x0b,0xfb, +0x00,0x00,0x2f,0xf7,0x00,0x00,0x3f,0xf2,0x00,0x00,0x3a,0x00,0x05,0xfe,0x01,0xe0, +0x00,0x00,0x3e,0xf9,0x00,0x00,0x4f,0xf4,0x00,0x00,0xbf,0xd0,0x00,0x04,0x2f,0x00, +0xf0,0x29,0xfb,0x00,0x00,0xbf,0xf0,0x00,0x07,0xff,0x30,0x00,0x6f,0xf6,0x00,0x05, +0xff,0x70,0x00,0x4f,0xf8,0x00,0x04,0xff,0x70,0x00,0x5f,0xf6,0x00,0x07,0xff,0x40, +0x00,0x9f,0xf1,0x00,0x0d,0xfd,0x00,0x02,0xff,0x70,0x00,0x8f,0xf1,0x00,0x1f,0xf7, +0x00,0x0b,0xfd,0x00,0x06,0xfe,0x20,0x00,0x2b,0x10,0xe8,0x00,0x20,0xef,0x20,0x0b, +0x01,0xf1,0x1f,0x10,0x00,0x15,0x00,0xcf,0x00,0x21,0x6f,0xe8,0xdf,0x5c,0xf8,0x5c, +0xff,0xff,0xff,0xe7,0x00,0x0a,0xff,0xb3,0x00,0x00,0x3f,0xee,0xf3,0x00,0x01,0xef, +0x55,0xfd,0x10,0x05,0xfa,0x00,0xcf,0x50,0x00,0x21,0x00,0x23,0x00,0x00,0x00,0x48, +0x83,0x20,0x01,0x1f,0xf7,0x06,0x00,0x01,0x10,0x6f,0x09,0x01,0x12,0xf5,0x06,0x00, +0x6f,0x5d,0xdd,0xef,0xfe,0xdd,0xd4,0x2a,0x00,0x04,0x00,0xef,0x00,0xf0,0x13,0x8f, +0xf1,0x08,0xff,0x10,0xaf,0xe0,0x0f,0xf8,0x06,0xfe,0x10,0x06,0x30,0x00,0x68,0x88, +0x88,0x1d,0xff,0xff,0xf3,0xdf,0xff,0xff,0x30,0x03,0x40,0x6f,0xf9,0x9f,0xfc,0x2d, +0xe5,0x2c,0x00,0xef,0xc0,0x00,0x00,0x0e,0xf6,0x00,0x00,0x03,0xff,0x10,0x00,0x00, +0x9f,0xb0,0x0d,0x00,0x00,0x15,0x04,0x0d,0x00,0x10,0xf5,0x0d,0x00,0x1b,0x00,0x0d, +0x00,0x51,0xaf,0xa0,0x00,0x00,0x0f,0x8c,0x02,0x40,0x4b,0xef,0xd9,0x10,0xa2,0x00, +0xf0,0x0f,0xfe,0x10,0x2f,0xff,0xc9,0xef,0xfb,0x08,0xff,0xa0,0x01,0xff,0xf2,0xcf, +0xf4,0x00,0x0a,0xff,0x6e,0xff,0x20,0x00,0x8f,0xf8,0xff,0xf2,0x00,0x08,0xff,0x9f, +0x0b,0x00,0x17,0xf9,0x0b,0x00,0xff,0x28,0xef,0xf2,0x00,0x09,0xff,0x8c,0xff,0x40, +0x00,0xbf,0xf6,0x8f,0xfa,0x00,0x1f,0xff,0x22,0xff,0xfc,0x9e,0xff,0xb0,0x06,0xff, +0xff,0xff,0xe2,0x00,0x04,0xbe,0xfd,0x91,0x00,0x00,0x00,0x05,0xb9,0x00,0x49,0xff, +0xf9,0x2e,0xff,0xff,0xf9,0x3f,0xff,0xef,0xf9,0x2b,0x61,0x8f,0xf9,0x00,0x00,0x04, +0x00,0x18,0x40,0x05,0xbe,0xfe,0xa2,0x78,0x02,0xf0,0x0c,0xff,0xff,0x40,0x08,0xff, +0xfa,0x9e,0xff,0xd0,0x0e,0xff,0x50,0x02,0xff,0xf2,0x2f,0xff,0x00,0x00,0xef,0xf4, +0x03,0x32,0x00,0x00,0xff,0xf2,0x4a,0x03,0x12,0xff,0xa6,0x02,0xc0,0x40,0x00,0x00, +0x01,0xdf,0xf9,0x00,0x00,0x00,0x1d,0xff,0xb0,0x17,0x03,0x00,0xef,0x02,0x11,0x0b, +0xbb,0x02,0x30,0xaf,0xfd,0x10,0xcf,0x02,0x50,0xfa,0x88,0x88,0x86,0x0f,0x82,0x01, +0x12,0xfc,0x06,0x00,0xd1,0x00,0x07,0xcf,0xfd,0x92,0x00,0x01,0xdf,0xff,0xff,0xff, +0x30,0x0a,0x60,0x00,0xc0,0x0f,0xff,0x30,0x01,0xff,0xf3,0x03,0x33,0x00,0x00,0xdf, +0xf4,0x20,0x03,0xe0,0xff,0xf1,0x00,0x00,0x57,0x8e,0xff,0x70,0x00,0x00,0xcf,0xff, +0xf6,0x00,0x06,0x00,0x80,0xfe,0x40,0x00,0x00,0x00,0x17,0xff,0xf1,0x37,0x01,0xf0, +0x00,0xbf,0xf6,0x28,0x87,0x00,0x00,0x9f,0xf8,0x2f,0xff,0x20,0x00,0xef,0xf6,0x0d, +0x42,0x00,0x11,0xf1,0xf2,0x02,0x70,0x40,0x00,0x18,0xdf,0xfd,0x92,0x00,0x99,0x04, +0x10,0xff,0x30,0x00,0x31,0x0c,0xff,0xf4,0xe7,0x03,0x01,0xa3,0x00,0x11,0xff,0x0d, +0x00,0x20,0xaf,0xfe,0x0d,0x00,0x20,0x4f,0xf7,0x68,0x00,0xf0,0x01,0x0d,0xfd,0x0d, +0xff,0x40,0x00,0x08,0xff,0x30,0xdf,0xf4,0x00,0x02,0xff,0x90,0x0d,0x40,0x03,0x10, +0xe1,0x82,0x00,0x11,0x4f,0xec,0x04,0x11,0x05,0x06,0x00,0x93,0xf0,0x28,0x88,0x88, +0x8e,0xff,0xa8,0x00,0x00,0x9c,0x00,0x10,0x00,0x27,0x00,0x02,0x0d,0x00,0x20,0x0a, +0xff,0xc2,0x00,0x00,0xb2,0x04,0xe0,0xf3,0x0d,0xff,0xaa,0xaa,0xaa,0x10,0xff,0xe0, +0x00,0x00,0x00,0x1f,0xfc,0x24,0x04,0x41,0xff,0xa2,0x55,0x20,0x48,0x00,0x20,0xb1, +0x06,0x26,0x00,0x51,0xc0,0x17,0xb7,0x11,0x6f,0x39,0x00,0x21,0x9f,0xf9,0x3b,0x01, +0xf0,0x04,0xa7,0x88,0x20,0x00,0x7f,0xfa,0xbf,0xf9,0x00,0x0d,0xff,0x74,0xff,0xfb, +0x9d,0xff,0xf1,0x08,0xff,0xa1,0x00,0x30,0x04,0xae,0xfe,0xc0,0x00,0x30,0x4a,0xdf, +0x70,0x80,0x01,0x10,0xf7,0xfa,0x00,0xb0,0xdb,0x40,0x00,0x9f,0xfc,0x30,0x00,0x00, +0x1f,0xfe,0x10,0xcc,0x00,0x31,0x89,0xef,0xd7,0x25,0x05,0xd0,0xf9,0x0d,0xff,0xfc, +0x9d,0xff,0xf3,0xef,0xf8,0x00,0x0c,0xff,0x9e,0x69,0x03,0x70,0xfc,0xdf,0xf3,0x00, +0x04,0xff,0xdb,0xca,0x03,0xe0,0xfb,0x7f,0xfc,0x00,0x0d,0xff,0x70,0xef,0xfd,0x9d, +0xff,0xe1,0x03,0xef,0x58,0x00,0x42,0x01,0x9e,0xfe,0xa2,0x9c,0x05,0x12,0xfb,0x06, +0x00,0x60,0x38,0x88,0x88,0x88,0xdf,0xf6,0xc9,0x00,0x01,0xb5,0x00,0x11,0x07,0x4b, +0x05,0x30,0x0e,0xff,0x20,0xa8,0x05,0x11,0xfb,0xde,0x04,0x20,0xf4,0x00,0xd7,0x02, +0x11,0xd0,0xcd,0x01,0x11,0x60,0xe9,0x01,0x14,0x00,0xbf,0x00,0x11,0x01,0x00,0x02, +0x11,0x08,0xef,0x01,0x11,0x0e,0xd6,0x00,0x11,0x6f,0x14,0x05,0x60,0x5c,0xff,0xea, +0x20,0x00,0x9f,0x89,0x01,0xf0,0x02,0x4f,0xff,0xb9,0xef,0xfe,0x08,0xff,0xb0,0x01, +0xff,0xf2,0x9f,0xf8,0x00,0x0e,0xff,0x36,0x0b,0x00,0xb1,0xf1,0x0d,0xff,0xb9,0xef, +0xf7,0x00,0x1d,0xff,0xff,0xf8,0x3c,0x01,0x71,0xf4,0x07,0xff,0xd2,0x06,0xff,0xf1, +0x4a,0x01,0xc0,0x7f,0xff,0x20,0x00,0x9f,0xf9,0xdf,0xf7,0x00,0x0d,0xff,0x78,0x10, +0x01,0xf1,0x02,0xf2,0x0c,0xff,0xff,0xff,0xf6,0x00,0x06,0xcf,0xfe,0xa3,0x00,0x00, +0x03,0xbe,0xfc,0x60,0xcb,0x03,0xf0,0x06,0xfb,0x00,0x03,0xff,0xfb,0x9f,0xff,0x70, +0x0a,0xff,0x90,0x04,0xff,0xe0,0x0f,0xff,0x20,0x00,0xdf,0xf3,0x0f,0xae,0x04,0x10, +0xf6,0x0c,0x00,0xf1,0x01,0xaf,0xf7,0x0d,0xff,0x80,0x00,0xcf,0xf7,0x07,0xff,0xf9, +0x7c,0xff,0xf6,0x00,0xcf,0x52,0x01,0x51,0x08,0xef,0xd6,0xdf,0xf1,0xcb,0x00,0x00, +0xae,0x02,0x80,0x3e,0xff,0x50,0x00,0x07,0xbd,0xff,0xfa,0x1c,0x02,0xf4,0x02,0xff, +0xa0,0x00,0x00,0x0c,0xfd,0xa4,0x00,0x00,0x3d,0xe5,0x9f,0xfc,0x6f,0xf9,0x03,0x40, +0x4c,0x10,0x02,0xed,0x03,0xd8,0x3d,0xe5,0x05,0xed,0x30,0xcf,0xf9,0x09,0xff,0x60, +0x04,0x30,0x00,0x01,0x00,0xf1,0x01,0x2a,0xa3,0x04,0xff,0x50,0x4f,0xf5,0x05,0xff, +0x30,0x9f,0xe0,0x1f,0xf6,0x01,0x9a,0x15,0x00,0xf0,0x12,0x6a,0x00,0x00,0x02,0x9f, +0xfd,0x00,0x04,0xbf,0xff,0xfd,0x06,0xdf,0xff,0xfe,0x82,0x6f,0xff,0xfa,0x40,0x00, +0x6f,0xff,0x71,0x00,0x00,0x4e,0xff,0xff,0xb5,0x00,0x00,0x5c,0xf5,0x00,0x30,0x00, +0x3a,0xff,0x28,0x01,0x20,0x18,0xed,0x32,0x00,0x20,0x04,0x8f,0x89,0x01,0x10,0x18, +0x05,0x00,0x62,0xf1,0x49,0x99,0x99,0x99,0x99,0x5e,0x00,0x01,0x0b,0x00,0x11,0x08, +0x16,0x00,0x01,0x21,0x00,0x30,0x10,0x97,0x10,0xf3,0x02,0xf0,0x02,0xfa,0x30,0x00, +0x00,0xbf,0xff,0xfc,0x50,0x00,0x17,0xdf,0xff,0xfe,0x81,0x00,0x02,0x8d,0xc4,0x00, +0xf0,0x04,0x16,0xef,0xfa,0x00,0x4a,0xff,0xff,0xf6,0x7e,0xff,0xff,0xd7,0x10,0xbf, +0xff,0xb4,0x00,0x00,0xbf,0x3e,0x02,0x22,0x40,0x00,0x5d,0x04,0x40,0xea,0x30,0x00, +0x7f,0x8d,0x01,0x00,0x5d,0x04,0xb0,0xfd,0x06,0xff,0xd0,0x02,0xff,0xf1,0x36,0x63, +0x00,0x0f,0x9e,0x04,0x10,0x05,0xf6,0x01,0x30,0x03,0xef,0xf5,0xaa,0x02,0x10,0xf8, +0xee,0x01,0x10,0xf8,0xba,0x02,0x11,0xfd,0x28,0x01,0x15,0x80,0xea,0x00,0x10,0x24, +0x05,0x00,0x21,0x4f,0xf9,0xec,0x01,0x00,0x09,0x02,0x21,0x2d,0xe5,0x17,0x00,0x52, +0x28,0xcf,0xfe,0xc7,0x10,0x93,0x06,0x40,0xdc,0xdf,0xff,0x70,0x3f,0x00,0xa0,0xe6, +0x00,0x00,0x17,0xef,0x90,0x00,0x00,0xaf,0xd1,0xfd,0x02,0x51,0xef,0x50,0x00,0x5f, +0xe1,0xe4,0x00,0xf3,0x5e,0xfd,0x00,0x0d,0xf6,0x00,0x04,0xbe,0xc8,0x10,0x0c,0xf4, +0x04,0xfe,0x00,0x06,0xff,0xff,0xfd,0x00,0x6f,0x80,0x9f,0x90,0x03,0xff,0x70,0x6f, +0xc0,0x04,0xfa,0x0c,0xf5,0x00,0xbf,0xb0,0x07,0xfb,0x00,0x2f,0xc0,0xff,0x30,0x1f, +0xf5,0x00,0x8f,0x90,0x02,0xfc,0x0f,0xf1,0x04,0xff,0x20,0x0a,0xf8,0x00,0x3f,0xb1, +0xff,0x00,0x6f,0xf0,0x00,0xbf,0x70,0x05,0xf9,0x0f,0xf1,0x06,0xff,0x00,0x0d,0xf5, +0x00,0xaf,0x50,0xef,0x30,0x3f,0xf5,0x06,0xff,0x70,0x3f,0xe0,0x0c,0xf6,0x00,0xcf, +0xfd,0xfc,0xff,0xcf,0xf4,0x00,0x7f,0xc0,0x01,0xbf,0xd6,0x08,0xef,0xb3,0x00,0x01, +0xff,0x50,0xb6,0x00,0x24,0x08,0xff,0xb0,0x01,0x72,0x0c,0xff,0x93,0x00,0x02,0x63, +0x00,0x33,0x08,0x31,0xef,0xff,0x70,0xbe,0x07,0x51,0x8c,0xef,0xfc,0x81,0x00,0x9d, +0x00,0x02,0x4e,0x04,0x21,0x00,0xaf,0xdf,0x02,0x30,0x00,0x0f,0xff,0xa8,0x07,0x00, +0xa4,0x00,0x11,0xf2,0x65,0x04,0x11,0xfb,0x09,0x01,0x41,0x1f,0xfe,0x2f,0xfe,0x20, +0x03,0x31,0x90,0xcf,0xf4,0xf6,0x03,0x10,0x07,0x37,0x02,0x21,0x3f,0xfe,0x0f,0x03, +0x81,0x09,0xff,0x90,0x00,0xcf,0xf5,0x00,0x00,0x6e,0x07,0x13,0xb0,0x37,0x04,0xb0, +0x10,0x0a,0xff,0xda,0xaa,0xaa,0xef,0xf7,0x00,0xff,0xf4,0x38,0x00,0x31,0xd0,0x6f, +0xff,0x3d,0x03,0x30,0x2b,0xff,0xa0,0x40,0x00,0x90,0xf8,0x9f,0xff,0xff,0xfe,0xa4, +0x00,0x09,0xff,0xc3,0x03,0xf0,0x05,0x00,0x9f,0xfd,0xaa,0xbe,0xff,0xf4,0x09,0xff, +0xa0,0x00,0x1e,0xff,0x90,0x9f,0xfa,0x00,0x00,0x9f,0xfa,0x0d,0x00,0x91,0x0c,0xff, +0x70,0x9f,0xfc,0x55,0x6b,0xff,0xe1,0x27,0x00,0x31,0xd2,0x00,0x9f,0x43,0x04,0x00, +0x1a,0x00,0x12,0x2d,0x27,0x00,0x20,0x5f,0xfe,0x0d,0x00,0x31,0x04,0xff,0xf0,0x34, +0x00,0x84,0xfd,0x09,0xff,0xd9,0x9a,0xdf,0xff,0x80,0x27,0x00,0x41,0xff,0xff,0xec, +0x60,0x01,0x02,0x20,0xeb,0x50,0x57,0x09,0x00,0x37,0x03,0xe0,0x00,0x9f,0xff,0xdb, +0xdf,0xff,0xa0,0x03,0xff,0xf5,0x00,0x05,0xff,0xf3,0x3d,0x00,0x40,0x00,0xcf,0xf8, +0x0d,0xf9,0x00,0x32,0x48,0x85,0x0f,0x30,0x01,0x19,0x1f,0x07,0x00,0x03,0x15,0x00, +0x10,0x0e,0x56,0x01,0x32,0x46,0x64,0x0a,0x31,0x00,0x30,0x04,0xff,0xf4,0x3f,0x00, +0xb1,0x00,0xbf,0xff,0xcb,0xdf,0xff,0xb0,0x00,0x0b,0xff,0xff,0x34,0x01,0x40,0x6b, +0xef,0xeb,0x50,0xa4,0x00,0x22,0xd9,0x30,0xd8,0x00,0x10,0x90,0xd8,0x00,0x30,0xdf, +0xff,0xa0,0x67,0x00,0x30,0x5f,0xff,0x40,0xa4,0x00,0x20,0x8f,0xfb,0x0d,0x00,0x50, +0x02,0xff,0xf1,0x9f,0xfa,0x5c,0x00,0x10,0x39,0x50,0x00,0x40,0xef,0xf5,0x9f,0xfa, +0x62,0x00,0x10,0x59,0x0d,0x00,0x40,0xff,0xf3,0x9f,0xfa,0x27,0x01,0xf1,0x04,0x19, +0xff,0xa0,0x00,0x09,0xff,0xc0,0x9f,0xfa,0x00,0x06,0xff,0xf5,0x09,0xff,0xda,0xad, +0xff,0xfa,0xff,0x00,0x10,0xf9,0x5b,0x00,0x32,0xfd,0xa3,0x00,0x0c,0x01,0x11,0xd9, +0x66,0x0a,0x61,0x9f,0xfd,0xaa,0xaa,0xaa,0x89,0x58,0x01,0x21,0x9f,0xfa,0xe5,0x01, +0x11,0xa0,0x55,0x09,0x31,0x88,0x88,0x87,0x88,0x00,0x20,0xd0,0x9f,0x26,0x00,0x1d, +0x09,0x21,0x00,0x01,0x0b,0x00,0x00,0xa5,0x01,0x11,0xa8,0x4d,0x00,0x10,0xe9,0x05, +0x00,0x11,0xfe,0x0b,0x00,0x11,0x99,0x97,0x01,0x01,0x58,0x00,0x1f,0x59,0x37,0x00, +0x04,0x06,0x58,0x00,0x00,0x42,0x00,0x1e,0x80,0x21,0x00,0x0b,0x0b,0x00,0x52,0x00, +0x04,0xad,0xfe,0xc7,0x39,0x00,0x80,0xfe,0x20,0x08,0xff,0xfd,0xab,0xff,0xfd,0x73, +0x03,0x50,0x03,0xff,0xf5,0x8f,0xfd,0x17,0x00,0x10,0xac,0x97,0x02,0x42,0x12,0x22, +0xef,0xf5,0x76,0x01,0x70,0x40,0x02,0x66,0x66,0x64,0xff,0xf4,0xed,0x04,0x90,0xce, +0xff,0x50,0x06,0xff,0xff,0xfc,0xcf,0xf8,0x47,0x02,0x10,0xc8,0x81,0x03,0xf1,0x00, +0x7f,0xfc,0x2f,0xff,0x90,0x00,0x08,0xff,0xc0,0x7f,0xff,0xea,0xad,0xff,0xfb,0xdf, +0x0a,0x71,0xfc,0x10,0x00,0x3a,0xdf,0xfd,0xa5,0x73,0x00,0x00,0x6e,0x05,0x0f,0x07, +0x00,0x10,0x00,0xdf,0x00,0x21,0xff,0xf2,0xf1,0x00,0x06,0x07,0x00,0x0f,0x3f,0x00, +0x17,0x02,0x07,0x00,0x2f,0x6f,0xfd,0x02,0x00,0x0b,0x01,0x61,0x03,0x10,0xe0,0x40, +0x04,0x1f,0xfe,0x0b,0x00,0x1e,0xf0,0x05,0xe7,0xee,0xa0,0x00,0x5f,0xfd,0x6f,0xfe, +0x10,0x0b,0xff,0xa1,0xff,0xfe,0xad,0xff,0xf4,0x06,0xff,0xff,0x34,0x01,0x41,0xae, +0xfe,0xb4,0x00,0xff,0x02,0x01,0x06,0x03,0x30,0x02,0xff,0xfc,0x0e,0x00,0x30,0x0d, +0xff,0xe1,0x07,0x00,0x10,0xaf,0x58,0x0a,0x40,0xfa,0x06,0xff,0xf7,0x7e,0x01,0x30, +0x2f,0xff,0xb0,0x07,0x00,0x20,0xdf,0xfd,0x8c,0x01,0x01,0x00,0x03,0x01,0x38,0x02, +0x10,0x50,0x07,0x00,0x30,0xfe,0xff,0xe1,0x07,0x00,0x60,0x72,0xff,0xf9,0x00,0x00, +0x9f,0x44,0x01,0x12,0x40,0x46,0x00,0x10,0xd0,0x07,0x00,0x31,0x04,0xff,0xf8,0x62, +0x00,0x30,0xaf,0xff,0x30,0x07,0x00,0x3e,0x1e,0xff,0xc0,0xe1,0x01,0x0f,0x0b,0x00, +0x23,0x00,0x2e,0x02,0x11,0xa4,0x6d,0x01,0x10,0x79,0x05,0x00,0x21,0xf7,0x9f,0x90, +0x06,0x10,0x8f,0xcb,0x02,0x10,0x20,0x06,0x03,0x20,0xfd,0x9f,0xbb,0x00,0x10,0x03, +0xdc,0x02,0x00,0xeb,0x01,0x10,0x9f,0xdf,0x02,0x90,0xff,0x20,0x00,0x0e,0xfd,0xff, +0xd9,0xff,0x9f,0x3e,0x0b,0xf0,0x39,0x8f,0xfd,0x9f,0xf6,0xdf,0xd0,0x00,0x9f,0xf4, +0xff,0xd9,0xff,0x77,0xff,0x30,0x0e,0xfb,0x3f,0xfd,0x9f,0xf7,0x2f,0xf8,0x04,0xff, +0x53,0xff,0xd9,0xff,0x80,0xcf,0xe0,0xaf,0xf0,0x4f,0xfd,0x9f,0xf9,0x06,0xff,0x4f, +0xfa,0x05,0xff,0xd9,0xff,0x90,0x1f,0xfd,0xff,0x40,0x5f,0xfd,0x9f,0xfa,0x00,0xbf, +0xff,0xe0,0x06,0xff,0xd9,0xff,0xa0,0x05,0xff,0xf9,0x00,0x6f,0xfd,0x9f,0xfa,0xdb, +0x03,0x01,0x11,0x00,0x30,0x00,0xaf,0xe0,0x11,0x00,0x11,0xfe,0x70,0x09,0x32,0x9f, +0xff,0x80,0x07,0x00,0x12,0xf2,0x07,0x00,0x12,0xfb,0x07,0x00,0x20,0xff,0x40,0x07, +0x00,0x40,0xfe,0xff,0xd0,0x01,0xbb,0x03,0x21,0xcf,0xf7,0x07,0x00,0x50,0x2f,0xff, +0x21,0xff,0xf1,0xaa,0x04,0x10,0xa1,0x07,0x00,0x31,0x01,0xef,0xf5,0xd7,0x03,0x21, +0x6f,0xfe,0x07,0x00,0x21,0x0c,0xff,0x07,0x00,0x22,0x03,0xff,0xec,0x03,0x12,0x9f, +0x07,0x00,0x12,0x1e,0x07,0x00,0x10,0x06,0x73,0x05,0x41,0x3a,0xdf,0xeb,0x40,0xfb, +0x00,0x01,0x82,0x07,0xc0,0x8f,0xff,0xeb,0xdf,0xff,0xa0,0x00,0x2f,0xff,0x80,0x00, +0x6f,0x6f,0x0a,0x71,0xc0,0x00,0x00,0xaf,0xfb,0x00,0xdf,0x47,0x0b,0x40,0xf0,0x0f, +0xff,0x40,0x92,0x04,0x40,0x20,0xff,0xf3,0x00,0x23,0x04,0x00,0x9c,0x04,0x00,0xbf, +0x00,0x21,0xff,0xf4,0x83,0x02,0x10,0x0d,0x3b,0x03,0x50,0x4f,0xff,0x00,0x8f,0xfc, +0x60,0x01,0x10,0xb0,0x57,0x03,0xa0,0x05,0xff,0xf5,0x00,0x08,0xff,0xfd,0xbd,0xff, +0xfb,0x08,0x06,0x02,0xfa,0x01,0x41,0x03,0xad,0xfe,0xb5,0x00,0x02,0x22,0xfe,0xb5, +0xc0,0x03,0x10,0xfb,0xa0,0x04,0x41,0xad,0xff,0xf8,0x09,0x6c,0x04,0x12,0xf0,0x93, +0x04,0x16,0x49,0x93,0x04,0x11,0x1f,0x0d,0x00,0x41,0x2b,0xff,0xf0,0x9f,0xaa,0x01, +0x11,0x09,0x06,0x00,0x00,0x34,0x00,0x24,0xa9,0x61,0xd5,0x03,0x01,0xd4,0x01,0x0f, +0x0d,0x00,0x02,0x05,0xe0,0x00,0x1b,0x9f,0xe0,0x00,0x16,0x70,0xe0,0x00,0x16,0xfa, +0xe0,0x00,0x10,0x30,0x6f,0x00,0x33,0x11,0xff,0xf2,0xe0,0x00,0x12,0x20,0xe0,0x00, +0x11,0xf3,0x94,0x01,0x00,0xa0,0x05,0x00,0xe0,0x00,0x20,0x9f,0xfc,0xc7,0x05,0x03, +0xe0,0x00,0x12,0xf4,0xe0,0x00,0x12,0xfa,0x53,0x04,0x11,0xfd,0xe0,0x00,0x01,0x5c, +0x08,0x01,0xfa,0x06,0x11,0xfb,0x08,0x00,0x13,0x05,0x0c,0x07,0x28,0x02,0x40,0xf7, +0x00,0x10,0xfa,0xc3,0x00,0x30,0xae,0xff,0xf7,0xa9,0x00,0x32,0x0b,0xff,0xd0,0x49, +0x03,0x30,0x09,0xff,0xa0,0x0d,0x08,0x20,0x9f,0xfa,0xf2,0x06,0x80,0x09,0xff,0xda, +0xab,0xef,0xff,0x30,0x9f,0xac,0x04,0x11,0x50,0x34,0x00,0x30,0x60,0x00,0x9f,0x37, +0x00,0x20,0x00,0x09,0x9b,0x0c,0x10,0xf5,0x0d,0x00,0x30,0x09,0xff,0xd0,0x34,0x00, +0x34,0x1f,0xff,0x50,0x7c,0x06,0x00,0xd8,0x05,0xa0,0xf5,0x00,0x02,0x9d,0xff,0xd8, +0x10,0x00,0x07,0xff,0x71,0x08,0xf1,0x08,0x04,0xff,0xfe,0xaa,0xef,0xff,0x10,0xaf, +0xfc,0x00,0x01,0xef,0xf8,0x0b,0xff,0x80,0x00,0x07,0xdd,0x80,0x9f,0xfe,0x30,0x1b, +0x08,0x00,0x0d,0x09,0x10,0x00,0x95,0x0a,0x00,0xa8,0x0c,0x12,0x7d,0x95,0x0b,0x60, +0x03,0x9f,0xff,0xf2,0x02,0x22,0x26,0x02,0x30,0x82,0xff,0xf1,0x2d,0x06,0x80,0x0e, +0xff,0x80,0x00,0x0c,0xff,0xa0,0x7f,0x00,0x06,0x10,0xf4,0x2a,0x02,0x00,0xad,0x03, +0x5a,0x29,0xdf,0xfe,0xa4,0x00,0xb6,0x04,0x91,0x5a,0xaa,0xaf,0xff,0xca,0xaa,0xa1, +0x00,0x00,0x2b,0x01,0x0f,0x07,0x00,0x41,0x20,0xcf,0xf7,0x92,0x01,0x30,0x3c,0xff, +0x70,0xa0,0x01,0x0f,0x0d,0x00,0x21,0x11,0xbf,0x0d,0x00,0x11,0x3a,0x26,0x01,0xf1, +0x01,0xf2,0x6f,0xff,0x30,0x00,0xaf,0xfe,0x00,0xef,0xff,0xba,0xdf,0xff,0x60,0x03, +0xef,0x2c,0x07,0x52,0x01,0x8c,0xff,0xea,0x40,0x36,0x0d,0x50,0x6f,0xff,0x26,0xff, +0xf1,0x70,0x0b,0x20,0xc0,0x1f,0x7c,0x00,0x41,0xff,0xf7,0x00,0xbf,0xa5,0x01,0x40, +0x10,0x06,0xff,0xf0,0x16,0x07,0xf0,0x04,0x00,0x1f,0xff,0x40,0x00,0xef,0xf6,0x00, +0x00,0xbf,0xf9,0x00,0x3f,0xff,0x10,0x00,0x06,0xff,0xd0,0x51,0x02,0x00,0x22,0x03, +0x01,0xcc,0x0b,0x32,0xbf,0xf7,0x1f,0xdd,0x09,0x31,0xc6,0xff,0xb0,0x4e,0x06,0x10, +0xcf,0xe2,0x0b,0x00,0x2f,0x0c,0x11,0x10,0x16,0x02,0x22,0xff,0xb0,0x65,0x06,0x13, +0xf5,0xf8,0x08,0x00,0x86,0x03,0xb0,0xfa,0x00,0x00,0xdf,0xf2,0x00,0x06,0xff,0xc4, +0xff,0xd0,0xd5,0x01,0xf0,0x18,0x00,0x9f,0xf9,0x1f,0xff,0x00,0x04,0xff,0xf9,0x00, +0x0c,0xff,0x50,0xdf,0xf3,0x00,0x8f,0xff,0xc0,0x00,0xff,0xf2,0x0a,0xff,0x60,0x0b, +0xff,0xff,0x00,0x2f,0xfe,0x00,0x6f,0xf9,0x00,0xff,0xef,0xf4,0x05,0xa4,0x11,0xf0, +0x00,0xc0,0x3f,0xf6,0xff,0x70,0x8f,0xf7,0x00,0x0f,0xff,0x06,0xff,0x1d,0xfb,0x0b, +0x3e,0x0d,0x60,0xf2,0xaf,0xe0,0x9f,0xf0,0xef,0xac,0x00,0xf0,0x03,0x5e,0xfa,0x05, +0xff,0x4f,0xfd,0x00,0x00,0x5f,0xfa,0xff,0x60,0x1f,0xfa,0xff,0x90,0x00,0x02,0x58, +0x09,0x30,0xef,0xff,0xf6,0xec,0x04,0x10,0xfe,0x96,0x08,0x10,0x20,0x99,0x00,0x50, +0xa0,0x00,0x6f,0xff,0xf0,0xe0,0x06,0x31,0xf7,0x00,0x02,0xbd,0x02,0x60,0x4f,0xff, +0x30,0x00,0x0e,0xff,0x48,0x12,0x10,0x50,0xcd,0x03,0xb4,0x0c,0xff,0xd0,0x00,0x0d, +0xff,0xc0,0x03,0xff,0xf6,0x00,0x3c,0x01,0x10,0xf9,0xf0,0x00,0x31,0x77,0xff,0xf1, +0xd9,0x0d,0x01,0xd4,0x09,0x21,0xef,0xff,0x7e,0x0c,0x12,0x5f,0xd8,0x00,0x32,0x6f, +0xff,0xf6,0x63,0x11,0x11,0xfe,0x7d,0x0e,0x30,0xee,0xff,0x80,0x58,0x08,0x10,0x66, +0x63,0x03,0x50,0xbf,0xfd,0x00,0xdf,0xfb,0x24,0x04,0x00,0x97,0x08,0xf0,0x01,0x0d, +0xff,0xc0,0x00,0x0c,0xff,0xd0,0x7f,0xff,0x40,0x00,0x04,0xff,0xf7,0xbf,0xfc,0x0b, +0x0b,0xb0,0xf4,0x3f,0xff,0x30,0x00,0x0a,0xff,0xc0,0x0b,0xff,0xb0,0x6c,0x01,0x10, +0x03,0x43,0x12,0x11,0xfc,0x6f,0x01,0x20,0xff,0xf4,0x55,0x0e,0x30,0x17,0xff,0xc0, +0x9f,0x01,0x31,0x8e,0xff,0x40,0xab,0x05,0x12,0xfc,0x5e,0x01,0x12,0xf4,0x72,0x0e, +0x12,0xc0,0x35,0x02,0x1f,0x70,0x07,0x00,0x12,0x11,0x3f,0xc1,0x02,0x11,0x83,0x06, +0x00,0x61,0xf8,0x2a,0xaa,0xaa,0xaa,0xdf,0x7c,0x0d,0x10,0x1f,0x23,0x00,0x00,0x01, +0x02,0x01,0x8a,0x0a,0x11,0xf2,0x4a,0x0e,0x11,0xf6,0x8f,0x0d,0x01,0xda,0x03,0x00, +0x26,0x0d,0x00,0xce,0x00,0x11,0x60,0xdd,0x0a,0x11,0xb0,0x99,0x0a,0x17,0xf1,0x25, +0x00,0x00,0x86,0x0e,0x12,0xa7,0x5b,0x00,0x21,0xb3,0xff,0xeb,0x04,0xdf,0xbf,0xff, +0xfb,0xff,0xff,0xbf,0xfa,0x6b,0xff,0x60,0xbf,0xf6,0x0b,0x05,0x00,0x11,0x11,0xa6, +0x32,0x00,0x20,0xcf,0xf5,0x4a,0x01,0x21,0xfb,0x00,0x5c,0x02,0x00,0x7e,0x04,0x14, +0x80,0xa3,0x07,0x22,0xef,0xf4,0x36,0x02,0x00,0x87,0x00,0x13,0x10,0x1c,0x0e,0x31, +0x05,0xff,0xd0,0xc0,0x04,0x04,0x20,0x0e,0x21,0x3f,0xff,0xe7,0x00,0x10,0x50,0x9f, +0x00,0x14,0xb0,0x2f,0x0e,0xdf,0xaf,0xf8,0xdf,0xff,0xcd,0xff,0xfc,0x59,0xff,0xc0, +0x5f,0xfc,0x05,0x05,0x00,0x11,0x31,0xc5,0x9f,0xfc,0x32,0x00,0x21,0x00,0x08,0x22, +0x07,0x00,0x83,0x00,0x10,0x5f,0x83,0x00,0xf1,0x0e,0xbf,0xaf,0xf5,0x00,0x02,0xff, +0x4a,0xfb,0x00,0x08,0xfd,0x04,0xff,0x20,0x0e,0xf8,0x00,0xdf,0x80,0x5f,0xf2,0x00, +0x8f,0xe0,0x77,0x77,0x77,0x77,0x75,0x61,0x10,0x01,0x05,0x00,0x50,0x16,0x65,0x00, +0x00,0xaf,0x42,0x0f,0xa1,0xf2,0x00,0x01,0xdf,0xb0,0x00,0x08,0xdf,0xfc,0x60,0x74, +0x10,0xb0,0xfa,0x00,0x0a,0xff,0xc6,0x8f,0xff,0x40,0x0d,0xee,0x20,0xd7,0x00,0x00, +0x36,0x05,0x30,0x90,0x00,0x4a,0x92,0x13,0x70,0x07,0xff,0xfe,0xde,0xff,0x90,0x1f, +0xa6,0x05,0x30,0x90,0x3f,0xfe,0xde,0x0b,0x72,0x2f,0xff,0xa6,0xaf,0xff,0x90,0x0a, +0xdf,0x0b,0x75,0x6d,0xfe,0x94,0xff,0xe0,0xdf,0xf4,0x03,0x10,0x0e,0x0b,0x00,0x50, +0x69,0xef,0xc4,0x00,0xdf,0x6a,0x12,0xc0,0x0d,0xff,0xfb,0x9e,0xff,0xf0,0xdf,0xf7, +0x00,0x1e,0xff,0x5d,0x60,0x08,0xf1,0x1e,0xf8,0xdf,0xf4,0x00,0x07,0xff,0xad,0xff, +0x40,0x00,0x7f,0xfa,0xdf,0xf4,0x00,0x09,0xff,0x9d,0xff,0x70,0x00,0xdf,0xf5,0xdf, +0xff,0xb9,0xdf,0xff,0x0d,0xff,0xef,0xff,0xff,0x60,0xdf,0xf1,0x9e,0xfc,0x50,0x00, +0x00,0x06,0xcf,0xfd,0x70,0x58,0x0b,0xc0,0xb0,0x07,0xff,0xfa,0xaf,0xff,0x60,0xef, +0xf5,0x00,0x5f,0xfc,0x6b,0x0c,0x21,0x88,0x74,0x64,0x01,0x21,0x4f,0xfd,0xee,0x01, +0x80,0xf0,0x00,0x04,0x43,0x0e,0xff,0x40,0x04,0x0a,0x0a,0x51,0xa9,0xff,0xf6,0x00, +0xbf,0xea,0x06,0x54,0x6c,0xff,0xc6,0x00,0x00,0x89,0x01,0x0f,0x06,0x00,0x03,0x50, +0x19,0xef,0xc3,0xff,0xf3,0x7a,0x11,0x00,0x05,0x0c,0xc0,0xfb,0xaf,0xff,0xf3,0x0f, +0xff,0x70,0x02,0xff,0xf3,0x2f,0xff,0x1e,0x00,0x20,0x4f,0xfe,0x06,0x00,0x00,0x63, +0x00,0x04,0x12,0x00,0x40,0x0f,0xff,0x40,0x01,0x2a,0x00,0x23,0xe7,0x6c,0x36,0x00, +0x00,0x42,0x00,0x30,0xc5,0xaf,0xf3,0x68,0x12,0x11,0x80,0xc3,0x07,0x30,0xfd,0x10, +0x04,0xec,0x00,0x50,0x90,0x0c,0xff,0x70,0x01,0xd0,0x06,0x60,0x32,0x22,0xcf,0xf3, +0x2f,0xff,0x7a,0x0f,0x11,0x3f,0x74,0x13,0x11,0x1f,0x7b,0x04,0x10,0x0d,0xb7,0x0a, +0x71,0x00,0x05,0xff,0xfd,0x99,0xef,0xb0,0xcf,0x05,0x10,0x70,0xea,0x10,0x02,0xda, +0x0f,0x81,0x00,0x3f,0xff,0xfd,0x00,0xbf,0xfe,0x98,0x5a,0x02,0x20,0xff,0xf2,0xcc, +0x00,0x10,0xf7,0x04,0x00,0x41,0x35,0xff,0xf6,0x52,0x69,0x12,0x0f,0x04,0x00,0x0d, +0x51,0x08,0xef,0xd7,0x8f,0xf5,0xee,0x0f,0x20,0xf5,0x08,0x3b,0x10,0x10,0xf5,0x2b, +0x02,0x20,0xdf,0xf5,0x9f,0x02,0x55,0xcf,0xf5,0x3f,0xfe,0x00,0x06,0x00,0x20,0x2f, +0xff,0x06,0x00,0x11,0x0e,0x7b,0x01,0x02,0x2a,0x00,0x02,0x36,0x00,0x00,0x24,0x10, +0x01,0xf1,0x02,0x00,0x83,0x00,0x90,0x96,0x00,0x05,0xff,0xf1,0x02,0xff,0xb7,0xaf, +0x2e,0x0d,0x01,0x5f,0x0b,0x71,0x18,0xdf,0xec,0x70,0x00,0xef,0xf3,0x0e,0x0d,0x00, +0xc4,0x06,0x0e,0x0b,0x00,0xa1,0x48,0xef,0xd6,0x00,0xef,0xfe,0xff,0xff,0xf6,0x0e, +0xce,0x12,0xff,0x02,0xef,0xf5,0x00,0x2f,0xff,0x1e,0xff,0x30,0x00,0xff,0xf2,0xef, +0xf3,0x00,0x0f,0xff,0x2e,0x0b,0x00,0x0d,0x90,0x20,0x5e,0xd3,0xcf,0xf9,0x8f,0xf5, +0x03,0x20,0xb2,0x02,0x0f,0x02,0x00,0x03,0xd0,0x00,0x05,0xed,0x20,0x00,0xdf,0xf8, +0x00,0x09,0xff,0x40,0x00,0x03,0x05,0x04,0x01,0xdd,0x02,0x3f,0x0a,0xff,0x70,0x07, +0x00,0x14,0x40,0x0c,0xff,0x60,0x9b,0xd0,0x01,0x5f,0xfb,0x00,0xef,0xe9,0x00,0xc5, +0x02,0x09,0x00,0xfe,0x02,0x40,0xf3,0xdf,0xf4,0x05,0xc5,0x02,0x70,0x43,0xff,0xf8, +0x00,0xdf,0xf6,0xef,0x1e,0x0b,0x00,0xe3,0x16,0x10,0xdf,0x06,0x03,0x11,0x0d,0x16, +0x08,0xf1,0x01,0xdf,0xfe,0x9f,0xfe,0x10,0x0d,0xff,0x50,0xcf,0xfa,0x00,0xdf,0xf4, +0x02,0xff,0xf5,0x37,0x00,0x7e,0xe1,0xdf,0xf4,0x00,0x0d,0xff,0xa0,0xc3,0x00,0x0c, +0x02,0x00,0xf0,0x09,0xdf,0xf2,0x8d,0xfd,0x70,0x2b,0xef,0xc4,0x0d,0xff,0xdf,0xff, +0xff,0x9f,0xff,0xff,0xf2,0xdf,0xff,0xb9,0xef,0xff,0xfa,0xaf,0x17,0x03,0xa0,0x03, +0xff,0xf4,0x00,0x7f,0xfc,0xdf,0xf4,0x00,0x0f,0x87,0x06,0x9f,0xdd,0xff,0x40,0x00, +0xff,0xf0,0x00,0x4f,0xfd,0x11,0x00,0x20,0x60,0xef,0xf1,0x8d,0xfd,0x70,0x0e,0x63, +0x00,0x20,0x70,0xef,0x8f,0x12,0x6f,0x0e,0xff,0x60,0x02,0xff,0xf1,0x92,0x01,0x13, +0x02,0x0b,0x00,0x52,0x00,0x05,0xbe,0xfd,0x81,0x3b,0x0a,0x20,0x20,0x06,0xe7,0x02, +0x20,0xd0,0x0d,0xe7,0x02,0x01,0x49,0x02,0x40,0x9f,0xf9,0x4f,0xfd,0x23,0x05,0x00, +0x06,0x00,0x22,0x7f,0xfb,0x12,0x00,0x11,0x0e,0x1e,0x00,0x02,0x2a,0x00,0x20,0x00, +0xaf,0x36,0x00,0xd0,0x00,0x05,0xcf,0xfd,0x81,0x00,0xdf,0xf4,0xaf,0xfc,0x40,0x0d, +0xff,0x82,0x0c,0x50,0xdf,0xff,0x76,0xcf,0xfe,0x1b,0x05,0x21,0xef,0xf5,0x09,0x04, +0x14,0x8d,0x14,0x04,0x10,0x08,0x1f,0x04,0x00,0x25,0x05,0x50,0xf7,0x00,0x1f,0xff, +0x5d,0x48,0x02,0x13,0xe0,0x4b,0x04,0x3f,0x6a,0xef,0xc4,0xb2,0x01,0x09,0x61,0x00, +0x00,0x19,0xef,0xc4,0x9f,0x9f,0x03,0x60,0xef,0xf3,0x09,0xff,0xfa,0x9e,0xe7,0x01, +0x66,0x60,0x01,0xff,0xf3,0x3f,0xff,0xcf,0x03,0x0a,0xd5,0x03,0x00,0x1e,0x00,0x02, +0x2a,0x00,0x05,0xd5,0x03,0x1e,0xc4,0x35,0x04,0x0d,0x06,0x00,0xe0,0x0d,0xff,0x4b, +0xfc,0xdf,0xfe,0xff,0xbd,0xff,0xff,0xea,0xdf,0xfb,0x10,0x83,0x00,0x01,0xf1,0x01, +0x0e,0x07,0x00,0x00,0x25,0x13,0x30,0xef,0xeb,0x50,0xe5,0x06,0x00,0x57,0x15,0xc1, +0x94,0x7f,0xff,0x30,0xff,0xf0,0x00,0x8c,0xc5,0x0d,0xff,0xb4,0xe3,0x07,0x00,0xa8, +0x04,0x21,0x29,0xef,0xf0,0x07,0xc0,0x37,0xff,0xf4,0x4e,0xe9,0x00,0x09,0xff,0x71, +0xff,0xf8,0x45,0x58,0x08,0x00,0xa0,0x05,0x84,0x02,0xae,0xfe,0xb5,0x00,0x03,0xff, +0xe0,0x04,0x00,0x00,0x60,0x11,0x10,0xe0,0x04,0x00,0x48,0x47,0xff,0xe5,0x40,0x18, +0x00,0x04,0x04,0x00,0x10,0x02,0x44,0x08,0xbf,0xff,0xfb,0xa0,0x00,0xbf,0xff,0xf0, +0x00,0x1a,0xef,0xd0,0xe4,0x01,0x13,0x11,0x2d,0x0b,0x00,0xb1,0xdf,0xf6,0x00,0x2f, +0xff,0x29,0xff,0xf9,0x9e,0xff,0xf2,0xb8,0x04,0xe2,0x20,0x3c,0xff,0xc4,0xcf,0xf2, +0xbf,0xf8,0x00,0x06,0xff,0xc5,0xff,0xc0,0x53,0x09,0xf0,0x0c,0x0f,0xff,0x20,0xbf, +0xf5,0x04,0xff,0xc0,0x06,0xff,0x90,0x8f,0xf7,0x00,0x1f,0xfe,0x0c,0xff,0x20,0x00, +0xbf,0xf3,0xff,0xd0,0x00,0x06,0xff,0x9e,0x0f,0x11,0x1f,0xcd,0x08,0x30,0xcf,0xff, +0xd0,0xb4,0x07,0x13,0xf8,0x44,0x11,0xf0,0x1f,0x9f,0xf6,0x00,0x3f,0xf5,0x00,0x4f, +0xfb,0x5f,0xf9,0x00,0x7f,0xf9,0x00,0x7f,0xf7,0x1f,0xfc,0x00,0xcf,0xfe,0x00,0xaf, +0xf3,0x0d,0xff,0x00,0xff,0xff,0x20,0xef,0xf0,0x09,0xff,0x35,0xff,0xef,0x71,0xff, +0xb0,0x05,0xff,0x69,0xfc,0xaf,0xb4,0x39,0x02,0xd0,0x9e,0xf7,0x5f,0xf8,0xff,0x30, +0x00,0xdf,0xef,0xf2,0x1f,0xff,0xff,0x76,0x02,0x41,0xe0,0x0c,0xff,0xfb,0xed,0x0e, +0x00,0x1f,0x09,0x00,0x90,0x08,0x10,0x02,0x87,0x01,0x10,0x0d,0x86,0x17,0x60,0xf0, +0x00,0x5f,0xfe,0x00,0x0b,0x77,0x05,0x90,0x80,0x4f,0xff,0x10,0x03,0xff,0xf1,0xcf, +0xf7,0x6f,0x17,0x00,0x1f,0x07,0x11,0x2f,0xe8,0x0e,0x11,0x08,0x9d,0x08,0x31,0x0a, +0xff,0xfe,0x8f,0x07,0x01,0x4a,0x17,0xf0,0x03,0xfa,0xff,0xf1,0x00,0x06,0xff,0xe0, +0xaf,0xf9,0x00,0x0e,0xff,0x60,0x2f,0xff,0x30,0x8f,0xfd,0x36,0x0d,0x20,0xcf,0xf8, +0xa5,0x12,0xf0,0x02,0x7f,0xfd,0x00,0x0c,0xff,0x80,0x2f,0xff,0x10,0x1f,0xff,0x20, +0x0c,0xff,0x60,0x5f,0xfd,0xba,0x07,0x20,0xaf,0xf8,0x5a,0x01,0x20,0xef,0xf2,0xfb, +0x11,0x01,0x7f,0x10,0x12,0xff,0x4c,0x09,0x00,0xee,0x00,0x11,0x0c,0x74,0x09,0x11, +0x07,0xef,0x00,0x12,0x02,0x32,0x13,0x24,0xff,0xd0,0x49,0x16,0x20,0x06,0xaf,0x23, +0x00,0x11,0x0b,0x1d,0x00,0x31,0x0a,0xfe,0x70,0x74,0x0a,0x00,0x18,0x0c,0x01,0x18, +0x06,0x42,0x08,0x88,0x88,0xff,0xed,0x0a,0x10,0x20,0x4d,0x00,0x20,0x50,0x00,0x34, +0x04,0x10,0x00,0x58,0x0c,0x10,0x00,0x5d,0x12,0x00,0xbb,0x09,0x11,0xf7,0xcc,0x08, +0x31,0x88,0x88,0x83,0x44,0x06,0x12,0x73,0x80,0x0d,0xa0,0x00,0x06,0x40,0x00,0x2d, +0xfb,0x00,0x0d,0xff,0x30,0x4a,0x1a,0x40,0x7f,0xf4,0x00,0x09,0x66,0x01,0x11,0xf3, +0x07,0x00,0xf4,0x05,0xcf,0xf1,0x02,0x8f,0xfb,0x00,0x7f,0xfc,0x10,0x07,0xff,0xe3, +0x00,0x04,0xff,0xd0,0x00,0x0b,0xff,0x10,0x1c,0x00,0x90,0x8f,0xf3,0x00,0x07,0xff, +0x50,0x00,0x3f,0xf9,0x39,0x18,0x02,0x7e,0x19,0x4f,0x32,0x2f,0xb2,0xfb,0x03,0x00, +0x05,0x41,0x1c,0x90,0x28,0x20,0x31,0x00,0x30,0x1d,0xff,0x20,0xb7,0x1a,0x61,0x00, +0xff,0xb0,0x00,0x0f,0xfd,0xde,0x00,0xa0,0x0e,0xfd,0x00,0x00,0xcf,0xf0,0x00,0x06, +0xff,0xb3,0x84,0x11,0x00,0xb3,0x0b,0x51,0x9f,0xf7,0x00,0x0d,0xfe,0x1c,0x00,0x03, +0x23,0x00,0x20,0x0f,0xfb,0xef,0x1a,0x80,0x04,0xef,0xe0,0x00,0x6f,0xd2,0x00,0x01, +0x26,0x0a,0x60,0xcf,0xe7,0x00,0x02,0x99,0x01,0xed,0x02,0xa0,0x7f,0xf0,0x8f,0xfa, +0xcf,0xfd,0xaf,0xfb,0x0b,0xfa,0x4a,0x01,0xf1,0x10,0x30,0x79,0x40,0x00,0x5d,0xfd, +0x40,0x00,0x04,0xdf,0xa1,0x03,0xfd,0xaf,0xb0,0x8f,0x10,0x8f,0x18,0xf1,0x08,0xf1, +0x3f,0xdb,0xfb,0x00,0x5d,0xfa,0x10,0x00,0x02,0x5a,0x06,0x04,0xb6,0x16,0x00,0x19, +0x01,0x12,0x60,0xb4,0x14,0x1f,0x65,0xbb,0x14,0x68,0x01,0x79,0x00,0x01,0xd8,0x15, +0x00,0x33,0x0c,0x01,0x01,0x16,0x12,0xf4,0x9e,0x00,0x1f,0x63,0x96,0x00,0x6a,0x41, +0x02,0xdf,0xc1,0x00,0x55,0x0e,0x21,0xcf,0xd1,0x86,0x00,0x37,0x50,0x7f,0xe2,0xaf, +0x17,0x0f,0x96,0x00,0x65,0x52,0x6e,0xd6,0x08,0xf6,0x00,0xe9,0x0b,0x10,0x20,0xf7, +0x1e,0x3f,0x17,0xee,0x50,0x96,0x00,0x6f,0x50,0x02,0xa8,0x00,0x09,0xa1,0xa7,0x0b, +0x20,0xf4,0x06,0x14,0x04,0x5f,0x04,0xec,0x10,0x2d,0xe3,0x2c,0x01,0x70,0x31,0x02, +0xbe,0xa1,0x78,0x00,0x31,0xc9,0x2b,0xa0,0x22,0x0d,0x21,0x70,0x9c,0x0f,0x00,0x22, +0x4e,0xfd,0xca,0x17,0x12,0x01,0x9e,0x00,0x10,0x4f,0x4c,0x0a,0x00,0xd5,0x04,0x12, +0xf6,0xe7,0x0a,0x02,0x1c,0x03,0x10,0x6f,0x60,0x01,0x00,0x6e,0x04,0x21,0xbf,0xf8, +0x9b,0x1a,0x11,0xe2,0xa7,0x0c,0x51,0x7f,0xf9,0x0c,0xff,0x40,0x28,0x07,0x30,0x7f, +0xfa,0x00,0x25,0x06,0x01,0x24,0x06,0x11,0x9f,0xd7,0x0e,0x22,0x00,0x0e,0x06,0x12, +0x21,0x04,0xff,0x67,0x19,0x81,0x00,0xaf,0xfd,0xaa,0xaa,0xae,0xff,0x70,0x6d,0x12, +0x20,0x7f,0xfd,0x6c,0x0f,0x00,0xd3,0x04,0x21,0xbf,0xfa,0xf3,0x06,0x12,0x80,0x59, +0x0d,0x01,0x8e,0x1a,0x01,0x65,0x0e,0x02,0x17,0x11,0x10,0x00,0x09,0x09,0x41,0xf9, +0x99,0x99,0x93,0x20,0x01,0x23,0xef,0xff,0x41,0x01,0x20,0xef,0xf6,0x3e,0x00,0x01, +0xab,0x0d,0x22,0xfd,0x0f,0xaf,0x00,0x00,0x6e,0x05,0x00,0x2a,0x00,0x10,0x40,0xfb, +0x00,0x20,0xe0,0x0f,0xca,0x14,0x00,0xa7,0x00,0x11,0xf7,0x23,0x01,0x01,0x45,0x0b, +0x24,0x10,0x0e,0x7b,0x17,0x01,0xb2,0x1a,0x04,0x67,0x16,0x00,0xc5,0x11,0x00,0xe5, +0x14,0x42,0xbb,0xbb,0xef,0xf5,0x95,0x01,0xb2,0x10,0x00,0x0b,0xff,0xb9,0x99,0x99, +0x90,0x3f,0xff,0x70,0x9f,0x1d,0x43,0xff,0x0b,0xff,0xe0,0x2e,0x00,0x1f,0xf0,0xf1, +0x17,0x59,0x31,0xff,0xfb,0x50,0xee,0x00,0x11,0xb2,0xe1,0x00,0x32,0x7e,0xfe,0x00, +0x98,0x01,0x02,0x3c,0x02,0x02,0x84,0x12,0x20,0xad,0x80,0x32,0x02,0x11,0xf8,0x3e, +0x01,0x20,0xf3,0x00,0x23,0x1e,0x10,0xc0,0xcf,0x00,0x2f,0x66,0x10,0xc2,0x17,0x46, +0x00,0x4c,0x02,0x10,0xf6,0x95,0x04,0x10,0xf8,0x5e,0x02,0x10,0xfa,0x12,0x04,0x1f, +0x65,0x30,0x18,0x47,0x00,0x44,0x03,0x00,0xe2,0x00,0x72,0xdf,0xf5,0x00,0x01,0xcf, +0xb0,0x3e,0x93,0x02,0x0f,0x6e,0x00,0x47,0x70,0x8a,0x20,0x06,0xb4,0x00,0x3f,0xfa, +0x64,0x06,0x4f,0xce,0x40,0x09,0xf8,0x6e,0x00,0x4b,0x10,0x5f,0xab,0x1b,0x10,0x90, +0x3a,0x07,0x20,0x05,0x63,0xdb,0x1d,0x0f,0x03,0x00,0x1a,0xc0,0x7f,0xfb,0x00,0x2f, +0xfd,0x00,0x0b,0xfe,0x10,0x01,0x66,0x20,0x10,0x00,0x3f,0x06,0xff,0xd0,0x07,0x00, +0x1f,0xc2,0x00,0x4f,0xfa,0x00,0x00,0x6f,0xfc,0xfb,0x00,0x7f,0xe3,0x0a,0x50,0x02, +0x01,0x63,0x1e,0x01,0x1b,0x00,0x0f,0x09,0x00,0x2b,0xef,0x4b,0x60,0x02,0xa8,0x0d, +0xff,0x00,0x9f,0xf4,0x7f,0xa0,0x04,0xec,0x10,0x5a,0x00,0x39,0x00,0xed,0x04,0x00, +0x81,0x03,0x01,0x57,0x04,0x10,0xc1,0x0f,0x00,0x40,0xaa,0xcf,0xff,0xe0,0xe7,0x15, +0x00,0xb7,0x1b,0x00,0xc9,0x15,0x00,0xb5,0x13,0x00,0x0f,0x00,0x00,0xa8,0x02,0x20, +0x4f,0xff,0x32,0x03,0x11,0x83,0xf2,0x03,0x30,0x9f,0xfa,0x3f,0x1f,0x09,0x31,0x09, +0xff,0xa0,0x1e,0x00,0x20,0xaf,0xf8,0x1e,0x00,0x00,0x80,0x14,0x30,0x04,0xff,0xf0, +0x94,0x05,0x00,0x0f,0x00,0x20,0x02,0xef,0x9e,0x18,0x20,0xfa,0xac,0xd7,0x12,0x12, +0x4f,0x99,0x0e,0x10,0x04,0xdc,0x15,0x00,0x55,0x03,0x41,0xce,0x81,0x2f,0xb0,0x91, +0x04,0x00,0x18,0x04,0x45,0x2f,0xb0,0x5c,0xe9,0xd1,0x05,0x0f,0xde,0x17,0x5e,0x22, +0x01,0x66,0xa9,0x08,0x13,0x09,0x47,0x1e,0x13,0x0b,0x8d,0x1d,0x27,0x0c,0xfc,0x43, +0x1f,0x00,0x93,0x17,0x22,0xb4,0x00,0xa2,0x17,0x10,0xfa,0x07,0x00,0x10,0xfe,0xd1, +0x16,0x00,0xe0,0x16,0x10,0x06,0xef,0x15,0x02,0xef,0x16,0x04,0xfe,0x16,0x03,0xed, +0x17,0x12,0x0f,0xfc,0x17,0x13,0x31,0x0b,0x18,0x04,0x1a,0x18,0x21,0xdf,0xf7,0x49, +0x17,0x01,0x07,0x15,0x10,0x9f,0x08,0x25,0x02,0x3b,0x14,0x10,0x8f,0xfe,0x04,0x12, +0xb0,0x65,0x18,0x12,0xb0,0x94,0x17,0x03,0x7e,0x07,0x31,0x56,0x62,0x00,0xc8,0x05, +0x02,0x90,0x00,0x31,0x1e,0xfd,0x10,0xae,0x00,0x2f,0xfe,0x20,0x9e,0x00,0x72,0x23, +0x48,0x50,0xe9,0x06,0x12,0x60,0x7a,0x1f,0x01,0x03,0x06,0x5f,0x3f,0xf6,0x04,0xff, +0x40,0x9e,0x00,0x70,0x42,0x5e,0xe7,0x16,0xf8,0x97,0x26,0x00,0x40,0x00,0x57,0x06, +0xf8,0x06,0xde,0x70,0x35,0x01,0x0f,0xd6,0x19,0x63,0x60,0x00,0x01,0xa9,0x00,0x08, 0xa2,0x6f,0x07,0x20,0xf6,0x03,0x78,0x00,0x5f,0x02,0xed,0x20,0x0c,0xe4,0x96,0x00, -0x6f,0x40,0x70,0x00,0x00,0x34,0x85,0x19,0xf1,0x00,0x2e,0xf4,0x1d,0xff,0xa0,0x2e, -0xff,0x80,0x1d,0xff,0xae,0xff,0x80,0x00,0x1e,0x11,0x35,0x10,0x3f,0x2b,0x04,0x10, +0x6f,0x40,0x70,0x00,0x00,0x34,0x6a,0x0c,0xf1,0x00,0x2e,0xf4,0x1d,0xff,0xa0,0x2e, +0xff,0x80,0x1d,0xff,0xae,0xff,0x80,0x00,0x1e,0xf6,0x27,0x10,0x3f,0x2b,0x04,0x10, 0x1d,0xfb,0x07,0xd0,0x1d,0xff,0xbe,0xff,0x70,0x0c,0xff,0xb0,0x3e,0xff,0x70,0xbf, -0xb0,0xd0,0x15,0x43,0x80,0x00,0x00,0x35,0xed,0x04,0x81,0x90,0x00,0x03,0x9d,0xfe, -0xb5,0xcf,0x20,0xc2,0x0f,0x00,0x28,0x2c,0x10,0xfe,0x68,0x00,0x90,0x1f,0xff,0x90, -0x00,0xaf,0xff,0x50,0x7f,0xfd,0x6a,0x24,0xf0,0x12,0xc0,0xcf,0xf8,0x00,0x0b,0xf8, +0xb0,0x2e,0x0e,0x43,0x80,0x00,0x00,0x35,0xed,0x04,0x81,0x90,0x00,0x03,0x9d,0xfe, +0xb5,0xcf,0x20,0xc2,0x21,0x00,0x0d,0x1f,0x10,0xfe,0x68,0x00,0x90,0x1f,0xff,0x90, +0x00,0xaf,0xff,0x50,0x7f,0xfd,0x4f,0x17,0xf0,0x12,0xc0,0xcf,0xf8,0x00,0x0b,0xf8, 0xff,0xf1,0xef,0xf5,0x00,0x4f,0xb0,0xff,0xf3,0xff,0xf4,0x00,0xdf,0x20,0xff,0xf4, -0xff,0xf4,0x07,0xf8,0x00,0xff,0xf4,0xef,0xf5,0x1f,0xe0,0xa6,0x25,0xb0,0xf8,0xaf, -0x50,0x02,0xff,0xf1,0x8f,0xfe,0xfb,0x00,0x08,0x71,0x25,0x10,0xf2,0x5c,0x02,0x71, -0x07,0xff,0xfe,0xbc,0xff,0xfc,0x00,0xfa,0x0f,0x50,0xb1,0x00,0x09,0xf8,0x9d,0xb4, -0x00,0x13,0x2f,0xc4,0x16,0x22,0x36,0x64,0x76,0x15,0x11,0xf3,0x03,0x0f,0x02,0x63, -0x09,0x13,0x04,0x7e,0x0c,0x01,0xd2,0x14,0x0f,0x25,0x26,0x26,0x02,0x0d,0x00,0x12, -0x3b,0x0d,0x00,0x11,0xaf,0x09,0x2d,0xf2,0x00,0x26,0xff,0xf3,0x00,0x0a,0xff,0xe0, -0x0e,0xff,0xfb,0xad,0xff,0xf6,0x00,0x3e,0x03,0x27,0x32,0x18,0xcf,0xfe,0x3c,0x13, -0x00,0xdd,0x22,0x04,0x99,0x31,0x31,0x05,0xff,0x80,0x97,0x00,0x1f,0xa0,0x89,0x00, -0x60,0x22,0x07,0x82,0xdf,0x08,0x11,0xe1,0xea,0x1b,0x21,0xaf,0xd1,0x30,0x04,0x2f, -0x9f,0xc0,0x89,0x00,0x5e,0x00,0xbb,0x06,0x00,0x1b,0x1d,0x00,0xf5,0x1b,0x10,0x00, -0xbf,0x06,0x05,0x3b,0x10,0x0f,0xc0,0x27,0x54,0x06,0x37,0x28,0x22,0x8f,0xf8,0x1f, -0x02,0x23,0xa0,0x00,0x67,0x09,0x1f,0x00,0x5c,0x26,0x5d,0x11,0x9f,0x82,0x00,0x09, -0x06,0x00,0x42,0xff,0xff,0xfd,0x81,0x14,0x09,0x90,0x40,0x9f,0xfc,0x88,0xae,0xff, -0xe1,0x9f,0xf8,0x68,0x1d,0x20,0x9f,0xf8,0xf0,0x35,0x01,0x06,0x00,0x10,0xfa,0x12, -0x00,0x60,0xdf,0xf7,0x9f,0xfc,0x88,0x9e,0x00,0x07,0x00,0x64,0x0b,0x00,0xf8,0x20, -0x1d,0x92,0x4e,0x00,0x00,0x3b,0x04,0x31,0xef,0xea,0x20,0xf0,0x0b,0x00,0x84,0x1c, -0x40,0xff,0xc9,0xef,0xfc,0x02,0x26,0x30,0x03,0xff,0xf0,0x3c,0x36,0x20,0x0f,0xff, -0x51,0x25,0x60,0x05,0xff,0xc0,0x00,0x8f,0xf9,0x45,0x34,0x10,0x08,0x52,0x25,0x00, -0x66,0x00,0x10,0x01,0xc3,0x36,0x00,0xb2,0x1e,0x40,0xe2,0x00,0x8f,0xf9,0x48,0x1a, -0x00,0xb1,0x17,0x50,0x2e,0xff,0xc0,0x8f,0xf9,0xdd,0x01,0x10,0x18,0x00,0x04,0xb0, -0xff,0xf1,0x8f,0xf9,0x2a,0x65,0xbf,0xfd,0x08,0xff,0x95,0xaa,0x00,0x64,0x8f,0xf9, -0x6d,0xff,0xea,0x30,0x60,0x2b,0x12,0x0b,0xea,0x05,0x21,0xcf,0xd0,0x00,0x03,0x15, -0x62,0xc8,0x04,0x0f,0xd9,0x25,0x34,0x03,0x2c,0x02,0x00,0xde,0x09,0x00,0xfd,0x06, -0x01,0x5a,0x09,0x2f,0x26,0x50,0x66,0x00,0x3f,0x21,0x7f,0xf5,0x8a,0x1d,0x20,0xff, -0x40,0x6d,0x1b,0x00,0x1e,0x15,0x4f,0x44,0x10,0x02,0x44,0x66,0x00,0x3d,0x40,0x2c, -0xfa,0x21,0xee,0x9b,0x0d,0x00,0x22,0x03,0x35,0xfc,0x14,0xbe,0x1a,0x04,0x0f,0x66, -0x00,0x3b,0xff,0x01,0xbf,0x60,0x08,0xf9,0x00,0x02,0xff,0xb0,0x0e,0xff,0x00,0x00, -0x7b,0x30,0x05,0xb5,0x2c,0x01,0x3e,0x20,0x7d,0xd5,0x62,0x05,0x90,0xe3,0x4f,0x20, -0x00,0x00,0x06,0xe0,0x1f,0x30,0x42,0x0d,0x2f,0xf9,0x00,0xcc,0x00,0x43,0x71,0x08, -0xdf,0xfd,0x80,0x5c,0xff,0xd7,0x7f,0x06,0x02,0x03,0x0f,0x11,0x0a,0x33,0x16,0x00, -0x5e,0x27,0x70,0xab,0xb3,0x00,0x6f,0xff,0x50,0x04,0x85,0x03,0x93,0x02,0x25,0xff, -0xf2,0x22,0x3f,0xff,0x00,0x07,0x85,0x17,0x24,0xf0,0x0b,0x4e,0x1c,0x00,0x83,0x29, -0x01,0x01,0x1f,0x00,0xc5,0x30,0x10,0x03,0xeb,0x18,0xb0,0x20,0x02,0xff,0xfc,0x8a, -0xff,0xff,0xfc,0x99,0xcf,0x30,0x68,0x0c,0x11,0xea,0xdf,0x0e,0x8f,0x06,0xce,0xfd, -0x81,0x05,0xbe,0xfe,0xb5,0xeb,0x27,0x08,0x18,0x99,0xeb,0x27,0x00,0xe2,0x22,0x50, -0x32,0x0e,0xff,0x40,0x03,0xeb,0x27,0x33,0x99,0xef,0xf7,0xeb,0x27,0x30,0x6d,0xff, -0xd6,0xaa,0x09,0x11,0xf7,0x3d,0x2d,0x11,0xf7,0xdd,0x0f,0x11,0x90,0x65,0x04,0x00, -0xbc,0x02,0x15,0xc5,0x29,0x01,0x31,0x0c,0xff,0x30,0x60,0x0e,0x02,0x34,0x03,0x16, -0x61,0xcd,0x10,0x0f,0xbf,0x27,0x34,0x03,0x57,0x0e,0x02,0x3e,0x38,0x21,0x2f,0xfa, -0x25,0x07,0x1f,0x50,0x66,0x00,0x3f,0x01,0x4f,0x0e,0x11,0x09,0x34,0x03,0x40,0x9f, -0xe2,0x5f,0xf3,0x34,0x03,0x2f,0x03,0x43,0x66,0x00,0x3d,0x30,0xce,0x50,0x09,0x97, -0x33,0x9f,0xa0,0x0f,0xfe,0x00,0x00,0x8b,0x20,0x05,0xb5,0x60,0x00,0x3c,0x10,0x8f, -0x52,0x02,0x73,0x60,0x00,0xbf,0xe1,0x00,0x05,0x52,0x4b,0x05,0x0f,0x03,0x00,0x0d, -0x00,0x1c,0x06,0x94,0x5f,0xfa,0x00,0x0e,0xfc,0x00,0x02,0x55,0x10,0x3a,0x0c,0x2f, -0x9f,0xf8,0x07,0x00,0x11,0x00,0xc8,0x04,0x12,0x60,0x0c,0x2d,0xb6,0x07,0xfe,0x33, -0xef,0x60,0x04,0x42,0x00,0x14,0x40,0x00,0x7f,0x0c,0x0f,0x05,0x00,0x22,0x00,0x6d, -0x1c,0xcf,0x6f,0xa0,0x0f,0xfd,0x00,0xcf,0xf1,0x06,0xb4,0x00,0x4b,0x70,0x50,0x00, -0x2e,0x32,0x00,0x06,0x50,0x60,0x11,0x20,0x80,0x1a,0xba,0x0d,0x00,0xe1,0x01,0x21, -0x01,0x8f,0x4d,0x12,0x10,0x7f,0xcc,0x0d,0x30,0x01,0xea,0x2e,0x46,0x07,0x10,0x10, -0x2b,0x07,0x51,0x07,0xdf,0xe9,0xef,0xf6,0x9a,0x19,0x80,0xfa,0x06,0xff,0xfa,0x79, -0xff,0xfc,0x0d,0x93,0x0b,0x10,0xfd,0xf7,0x39,0x40,0x3f,0xfd,0x1f,0xff,0xb6,0x0c, -0x00,0x0c,0x00,0x00,0x00,0x40,0x51,0x90,0x01,0xef,0xf4,0x04,0x14,0x3d,0x21,0x00, -0x7f,0x38,0x18,0x11,0x03,0x76,0x3f,0x41,0xaf,0xc4,0x1c,0xf2,0xc7,0x01,0x58,0x00, -0x0c,0xf2,0x29,0xec,0xd5,0x0c,0xc0,0x0e,0xff,0x18,0xdf,0xd7,0x00,0xef,0xfd,0xff, -0xff,0xf7,0x0e,0xe2,0x01,0x3f,0xe0,0xef,0xf6,0xc1,0x29,0x1d,0x00,0x8f,0x25,0x05, -0x09,0x03,0x01,0x85,0x08,0x05,0xfb,0x15,0x01,0x0b,0x00,0x0f,0x48,0x28,0x33,0x10, -0x00,0x1c,0x31,0x01,0x16,0x04,0x10,0xd0,0xdd,0x03,0x2a,0xfe,0x10,0x0a,0x07,0x0f, -0x66,0x00,0x36,0x21,0x4f,0xf9,0xda,0x0a,0x20,0xef,0x80,0x00,0x23,0x8f,0x1d,0xf8, -0x00,0x00,0x44,0x30,0x01,0x44,0x66,0x00,0x3d,0x41,0x0a,0xfc,0x41,0xbf,0xc4,0x0b, -0x00,0x56,0x25,0x3b,0x22,0x9e,0xc2,0x42,0x22,0x0f,0x66,0x00,0x34,0x11,0x8f,0x0c, -0x0a,0x53,0xdf,0xf0,0x0a,0xff,0x30,0x25,0x0a,0x0f,0x2c,0x01,0x3c,0x31,0x2d,0xf6, -0x00,0xf7,0x18,0x01,0xfa,0x05,0x00,0x02,0x05,0x00,0x9e,0x1c,0x20,0x00,0x28,0x77, -0x22,0x18,0x85,0x71,0x3d,0x05,0x99,0x24,0x16,0x30,0x2a,0x00,0x02,0x36,0x00,0x13, -0x2d,0xa7,0x20,0x21,0x18,0x40,0x14,0x00,0x10,0x30,0x9c,0x00,0x16,0xed,0x9c,0x00, -0xf0,0x0a,0x9f,0xff,0xc0,0x0d,0xff,0x70,0x5f,0xff,0xf4,0x2f,0xff,0x00,0xdd,0x9f, -0xf8,0x4f,0xfd,0x05,0xf6,0x6f,0xfa,0x3f,0xfd,0x0d,0xd0,0x9c,0x00,0x20,0x6f,0x60, -0x9c,0x00,0x11,0xfd,0x9c,0x00,0x20,0xfd,0x9e,0xc4,0x36,0x01,0x9c,0x00,0x43,0x4f, -0xdf,0xfd,0x81,0x5b,0x19,0x22,0x00,0x75,0xa8,0x16,0x11,0xd0,0x13,0x07,0x11,0x80, -0xae,0x0b,0x18,0x20,0x9e,0x02,0x1f,0x0e,0xe8,0x02,0x13,0x12,0xdf,0x33,0x29,0x20, -0x60,0x02,0x7d,0x33,0x41,0x99,0xef,0xff,0x22,0x81,0x33,0x63,0x03,0xcf,0xfc,0x4c, -0xff,0x20,0x0c,0x3e,0x02,0x92,0x19,0x28,0xcf,0xd1,0x96,0x02,0x0f,0x5e,0x00,0x31, -0x01,0xe1,0x0c,0xd4,0x05,0xff,0xef,0x90,0x00,0x06,0xff,0x31,0xdf,0x90,0x00,0x22, -0x10,0xca,0x25,0x0f,0x5e,0x00,0x30,0xa0,0x08,0xf9,0x00,0x5e,0xc0,0x00,0xef,0xf0, -0x0a,0xff,0xc2,0x08,0x13,0x2b,0xc4,0x1d,0x0f,0x42,0x2a,0x2f,0x00,0xa6,0x03,0x15, -0xf3,0xb7,0x0a,0x11,0x5f,0x26,0x02,0x15,0x46,0xac,0x10,0x0f,0x76,0x29,0x53,0x11, -0xcf,0x4a,0x22,0x01,0x2a,0x11,0x0e,0x0b,0x00,0x00,0xad,0x30,0x01,0xff,0x2e,0x11, -0x0c,0xad,0x30,0x10,0xcf,0xad,0x30,0x10,0x5c,0x01,0x34,0xe1,0xf8,0xcf,0xf5,0x00, -0x07,0xff,0xac,0xff,0x50,0x00,0x7f,0xfa,0xcf,0xf5,0x6c,0x42,0xa1,0x70,0x01,0xef, -0xf5,0xcf,0xff,0xa9,0xef,0xfe,0x0c,0x19,0x0c,0x5e,0xcf,0xf6,0x9e,0xfc,0x40,0x58, -0x00,0x06,0x0b,0x00,0x02,0x6c,0x10,0x55,0x07,0xff,0x60,0x3f,0xfa,0x87,0x10,0x0f, -0xf7,0x00,0x57,0x01,0x67,0x14,0x10,0xf2,0x98,0x1e,0x38,0xdd,0xdd,0xdd,0xe9,0x05, -0x0f,0x26,0x19,0x64,0x11,0xcf,0x8f,0x12,0x4f,0x9d,0xdd,0xdd,0xd8,0xbc,0x0a,0x42, -0x00,0x1d,0x25,0x21,0x3f,0xf1,0x6c,0x00,0x22,0xdf,0xfb,0x10,0x2e,0x2f,0xd8,0x00, -0xba,0x1a,0x6f,0x30,0xbf,0x70,0x0a,0x4e,0x44,0x30,0xd1,0x2e,0xf5,0x06,0x15,0x00, -0x6b,0x01,0x3f,0x01,0x8c,0xb7,0x50,0x0d,0x3f,0x0f,0xde,0x00,0x0c,0x12,0xfc,0xde, -0x00,0x22,0xff,0x3f,0xde,0x00,0x11,0xa0,0x9d,0x2e,0x00,0xff,0x31,0x11,0xa0,0xb0, -0x2a,0x21,0x3f,0xff,0xb4,0x12,0x20,0x00,0xef,0xde,0x00,0x00,0x1e,0x39,0x07,0xde, -0x00,0x02,0x77,0x2c,0x21,0xff,0xf6,0x9c,0x2c,0x10,0x6f,0x3b,0x02,0x13,0x3f,0xde, -0x00,0x12,0xef,0x07,0x0f,0x01,0x2a,0x2a,0x02,0xf3,0x45,0x01,0x39,0x02,0x13,0x51, -0x94,0x04,0x11,0xe0,0x08,0x00,0x20,0x4d,0xfc,0x3c,0x48,0x21,0xfc,0x70,0xe6,0x00, -0x12,0xfb,0xe6,0x00,0x37,0x50,0x0e,0xff,0xe6,0x00,0x30,0x28,0xbc,0xde,0x2a,0x0f, -0x00,0x46,0x10,0x37,0x0f,0xff,0x61,0xe6,0x00,0x45,0x97,0xaf,0xff,0xa0,0xe6,0x00, -0x11,0x84,0x50,0x00,0x21,0x0b,0xfb,0xc1,0x02,0x12,0xf1,0xdb,0x2b,0x11,0x10,0x15, -0x10,0x10,0x90,0xd3,0x00,0x21,0xee,0x80,0xbb,0x15,0x12,0x61,0x63,0x25,0x02,0x26, -0x29,0x12,0xfb,0x6d,0x03,0x17,0xc0,0x05,0x02,0x0f,0x0d,0x40,0x5b,0x21,0x00,0x00, -0x52,0x01,0x00,0x05,0x2f,0x00,0x04,0x2c,0x04,0x09,0x11,0x03,0x61,0x28,0x00,0x67, -0x0d,0x01,0xc7,0x0c,0x30,0x7f,0xff,0xaa,0x34,0x33,0xa2,0x50,0x05,0xff,0xc2,0xff, -0xf0,0x00,0x08,0x87,0x4f,0x36,0x3e,0x13,0xd0,0x6e,0x44,0x80,0x44,0x30,0xef,0xf4, -0x00,0x4f,0xfc,0x07,0x89,0x0d,0x21,0x60,0x0b,0x0f,0x01,0x31,0x06,0xcf,0xfc,0xe7, -0x01,0x22,0x68,0x40,0x7b,0x0a,0x02,0xe0,0x38,0x20,0xc4,0xef,0xb1,0x1d,0x4f,0x87, -0x00,0x17,0x71,0xf1,0x00,0x67,0x20,0xaf,0xe3,0x05,0x00,0x20,0xef,0xe2,0x04,0x43, -0x8f,0x6f,0xe2,0x00,0x14,0x41,0x00,0x34,0x30,0xf1,0x00,0x38,0x22,0xbf,0x80,0x56, -0x12,0x02,0x5c,0x02,0x2f,0xbe,0x80,0xdb,0x01,0x68,0x25,0x6f,0xc0,0x81,0x32,0x18, -0x6e,0x63,0x02,0x0f,0xea,0x00,0x32,0x50,0x06,0xbb,0x20,0x4b,0xb4,0xf0,0x00,0x31, -0xe6,0xff,0x90,0x4f,0x06,0x11,0xfa,0x5c,0x03,0x2a,0xde,0xb0,0xf1,0x00,0x12,0x60, -0xf1,0x00,0x20,0xfd,0x10,0xf1,0x00,0x10,0xcf,0x21,0x3a,0x10,0xf5,0x53,0x41,0x01, -0xf1,0x00,0x23,0xaf,0xf9,0x8a,0x13,0x0f,0xf1,0x00,0x0e,0x22,0x59,0x96,0xf1,0x00, -0x10,0xf7,0xf1,0x00,0x14,0x06,0xf1,0x00,0x11,0xa0,0xf1,0x00,0x14,0xfb,0xf1,0x00, -0xa0,0x02,0xef,0xa0,0x3f,0xf9,0x00,0x02,0xef,0xbf,0xf9,0x08,0x2d,0x10,0xf9,0x86, -0x01,0x1f,0x55,0xf1,0x00,0x37,0x30,0x2e,0xf9,0x04,0xb3,0x13,0x21,0x1d,0xfb,0x38, -0x07,0x17,0x1c,0xce,0x18,0x0f,0x51,0x43,0x55,0x02,0xdf,0x33,0x22,0x2f,0xf1,0x08, -0x00,0x22,0x3f,0xf0,0x08,0x00,0x22,0x6f,0xd0,0x08,0x00,0x22,0xcf,0x60,0x08,0x00, -0x22,0x39,0x00,0x3c,0x38,0x23,0x00,0x00,0x33,0x34,0x12,0x00,0x40,0x38,0x22,0x00, -0x00,0x42,0x38,0x02,0xe6,0x00,0x00,0x08,0x00,0x02,0x46,0x38,0x02,0xc0,0x10,0x08, -0x18,0x00,0x02,0x4c,0x38,0x01,0x46,0x26,0x18,0x6c,0x48,0x00,0x03,0x52,0x38,0x0f, -0x24,0x1c,0x67,0x05,0xe5,0x34,0x01,0x1b,0x02,0x12,0x0a,0x72,0x2f,0x00,0xe4,0x0b, -0x03,0x1a,0x00,0x63,0x01,0x9e,0xfc,0x3f,0xff,0x30,0xaf,0x00,0x62,0x9f,0xff,0xba, -0xff,0xff,0x30,0xf4,0x00,0x30,0x02,0xff,0xf0,0x34,0x00,0x02,0xf1,0x00,0x30,0x04, -0xff,0xd0,0x0d,0x00,0x03,0xee,0x00,0x20,0xff,0xf4,0x70,0x02,0x03,0xeb,0x00,0x11, -0x1d,0x6a,0x28,0x04,0xe8,0x00,0x10,0xdf,0x07,0x12,0x65,0x0b,0xdd,0xdd,0xdd,0x70, -0x00,0xd0,0x20,0x13,0xfd,0xaf,0x1e,0x01,0x6d,0x1e,0x0d,0x83,0x1e,0x43,0xd8,0x88, -0x88,0x70,0xa4,0x1e,0x01,0xaf,0x1e,0x0f,0x66,0x42,0x03,0x02,0xe6,0x1e,0x05,0xcb, -0x44,0x31,0xe0,0x00,0xdf,0xff,0x13,0x4a,0xad,0xdd,0xdd,0xd7,0xa5,0x03,0x0f,0x31, -0x11,0x35,0x90,0xdf,0x70,0x0d,0xf7,0x00,0x07,0xff,0xde,0xff,0x0c,0x0d,0x2f,0xea, -0x20,0xe6,0x1f,0x4c,0xa1,0xdf,0x60,0x0b,0xf8,0x00,0x00,0x9f,0xc1,0x3f,0xf4,0x4f, -0x08,0x00,0x57,0x3c,0x2f,0x9c,0xb7,0x6b,0x12,0x3f,0x21,0x5e,0xd1,0x0b,0x0a,0x10, -0x50,0x0b,0x00,0x2f,0xc1,0x00,0xd4,0x00,0x4c,0x02,0x6e,0x00,0x01,0x97,0x34,0x07, -0x6f,0x00,0x0f,0xd4,0x00,0x3c,0x0f,0xbe,0x00,0x0f,0x0d,0xd9,0x46,0x01,0x71,0x02, -0x0f,0xbe,0x00,0x0f,0x33,0x01,0xdf,0x90,0x10,0x4f,0x03,0x9f,0x08,0x11,0x8f,0xbf, -0x04,0x20,0xaf,0xe4,0xd8,0x3b,0x25,0xfd,0x70,0xb2,0x4b,0x20,0xfc,0xaf,0xb2,0x4b, -0x21,0xa0,0x04,0xe8,0x4d,0x40,0x00,0xdf,0xf2,0x2f,0xc2,0x00,0x03,0xbc,0x00,0x11, -0x2f,0x06,0x00,0x02,0x10,0x24,0x10,0x0b,0xc2,0x00,0x00,0x30,0x00,0x20,0x89,0xef, -0x18,0x40,0x00,0x01,0x0c,0x42,0x03,0xae,0xff,0xd4,0xa5,0x2f,0x00,0x20,0x00,0x12, -0xfa,0xbe,0x0b,0x01,0x34,0x23,0x20,0xbf,0xd3,0x5d,0x22,0x20,0x2e,0xf9,0x40,0x30, -0x20,0xf7,0x00,0x03,0x4c,0x0f,0xae,0x01,0x4c,0xb0,0x01,0xdf,0xb0,0x2e,0xfa,0x00, -0x00,0x1d,0xfc,0xef,0xa0,0xfb,0x00,0x01,0x8c,0x00,0x1f,0x15,0xed,0x14,0x40,0x22, -0x05,0x85,0xcb,0x09,0x20,0xf7,0x00,0x12,0x31,0x95,0x4d,0xf8,0x00,0x00,0x03,0x87, -0x10,0x17,0x82,0x69,0x00,0x10,0x4a,0x8f,0x3c,0x00,0xe6,0x00,0x00,0x49,0x19,0x50, -0xff,0xda,0xbf,0xff,0xd0,0xb5,0x1d,0x30,0x3f,0xff,0x58,0x37,0x46,0x00,0xab,0x20, -0x00,0xa7,0x30,0x11,0x2e,0x02,0x44,0x00,0x87,0x04,0x60,0x26,0x66,0x66,0x4f,0xff, -0x40,0x49,0x48,0x20,0xef,0xf5,0x55,0x01,0x30,0xcc,0xff,0x80,0x49,0x48,0x20,0x8f, -0xfd,0x0f,0x0b,0x20,0xc2,0xff,0xa3,0x0b,0x91,0xfc,0x07,0xff,0xfe,0xaa,0xdf,0xff, -0xb0,0x08,0x7a,0x05,0x00,0x50,0x44,0x33,0xda,0x50,0x00,0xaa,0x18,0x20,0x07,0xfe, -0x4a,0x00,0x20,0x7f,0xe3,0x08,0x35,0x27,0x44,0x20,0xaa,0x18,0x0f,0x75,0x3d,0x51, -0xc0,0x00,0x18,0x70,0x00,0x88,0x10,0x00,0x01,0xff,0x40,0x5f,0xf0,0xf9,0x01,0x01, -0x66,0x50,0x4f,0x07,0xdf,0xd7,0x00,0x0d,0x01,0x5e,0x31,0xbf,0x80,0x09,0x77,0x2d, -0x00,0xec,0x0b,0xaf,0x1e,0xfe,0xef,0xe0,0x00,0x00,0x02,0xbf,0xfa,0x10,0x0d,0x01, -0x5b,0x03,0x03,0x2f,0x12,0x01,0x47,0x27,0x16,0x0a,0xca,0x22,0x0f,0x63,0x4a,0x54, -0x00,0x76,0x28,0x11,0xd2,0x62,0x03,0x25,0xf7,0x00,0x0c,0x00,0x08,0xcf,0x0e,0x0f, -0x06,0x01,0x52,0x0f,0xec,0x00,0x56,0x03,0x01,0x00,0x21,0x5f,0xf0,0x50,0x0e,0x17, -0xfe,0xd0,0x2f,0x12,0x0e,0x81,0x2c,0x12,0x25,0x21,0x00,0x11,0x50,0x8e,0x01,0x11, -0xfa,0x63,0x0a,0x02,0x78,0x32,0x11,0xf3,0x38,0x00,0x11,0xf1,0x2b,0x4f,0x2f,0x80, -0x00,0x25,0x02,0x5d,0x02,0xf3,0x19,0x11,0xcf,0xc7,0x0f,0x45,0x1d,0xfa,0x03,0xef, -0xa3,0x04,0x0f,0x22,0x4c,0x5d,0x30,0x00,0x0b,0xfe,0x21,0x44,0x00,0xa5,0x0b,0xaf, -0x0a,0xfd,0x1a,0xfc,0x00,0x02,0x87,0x10,0x07,0x84,0x49,0x41,0x4c,0x31,0x07,0xff, -0xc0,0x93,0x52,0x0c,0x08,0x00,0x03,0x44,0x31,0x96,0xf9,0x9f,0xff,0xfe,0xee,0xee, -0xef,0xff,0xe8,0x20,0x00,0x40,0xea,0xaa,0xaa,0xaf,0x08,0x00,0x02,0x1d,0x38,0x06, -0x08,0x00,0x0e,0x48,0x00,0x0f,0x08,0x00,0x11,0x03,0x22,0x1f,0x02,0xe3,0x25,0x00, -0x39,0x01,0x02,0x00,0x23,0x00,0xb6,0x0d,0x04,0x1a,0x00,0x70,0x85,0xcf,0xe9,0x10, -0x00,0x9f,0xfe,0x1b,0x07,0x40,0x09,0xff,0xfc,0x9c,0x54,0x0a,0x10,0xfb,0xad,0x0a, -0x30,0x09,0xff,0x80,0xa9,0x41,0x20,0x9f,0xf8,0xb3,0x41,0x0f,0x0d,0x00,0x15,0x40, -0xfc,0x40,0xbf,0x27,0xc9,0x06,0x4f,0xcf,0x21,0x9f,0xd3,0x0c,0x28,0x3a,0x60,0x01, -0xbf,0xb3,0x1d,0xf0,0x0a,0x1c,0x24,0x48,0x0f,0xe0,0x3b,0xfb,0x79,0x38,0x0f,0xf0, -0x19,0x28,0x00,0xb1,0x23,0x45,0x6d,0xdd,0xdd,0xdc,0xa9,0x00,0x0f,0x04,0x00,0x28, -0x00,0xea,0x33,0x46,0x8d,0xdd,0xdd,0xd9,0x30,0x0d,0x1f,0xf8,0x04,0x00,0x1a,0xcf, -0x7f,0xd0,0x07,0xfd,0x1f,0xfe,0xdf,0xf7,0x02,0xae,0xfc,0x60,0x90,0x00,0x32,0xff, -0x00,0x90,0x08,0xfb,0x6f,0xe2,0x2e,0xf7,0x0d,0xff,0xff,0xd0,0x01,0x8c,0xc8,0x10, -0x94,0x00,0x20,0x00,0x79,0x01,0x2f,0x6f,0xfd,0x05,0x00,0x0e,0xf1,0x00,0x7f,0xfd, -0x1d,0xf9,0x08,0xfc,0x00,0xbf,0xb1,0x08,0xff,0xf4,0x1a,0xfd,0x40,0xa6,0x54,0x51, -0x08,0xff,0x50,0x03,0x20,0x14,0x44,0x3f,0x0a,0xff,0x70,0x05,0x00,0x03,0xff,0x08, -0x0c,0xff,0x73,0xef,0x70,0xbf,0x90,0x0e,0xf7,0x10,0xcf,0xff,0x12,0xcf,0xd1,0x1d, -0xf5,0x5f,0xfb,0x1c,0xe5,0x00,0x00,0xc8,0x4f,0x0d,0x2f,0x9f,0xf8,0x02,0x00,0x03, -0x22,0x6f,0xfd,0x47,0x0f,0x32,0x56,0xff,0xd0,0xef,0x11,0x0f,0x11,0x00,0x3c,0xf0, -0x0c,0x1b,0xbb,0x10,0x00,0xff,0xf4,0x6f,0xfd,0x00,0xff,0xf5,0x00,0x3f,0xff,0x16, -0xff,0xd0,0x0a,0xff,0xe8,0x7e,0xff,0xa0,0x6f,0xfd,0x00,0x1e,0x32,0x35,0x30,0x06, -0xff,0xd0,0xed,0x57,0xf4,0x07,0x70,0x00,0x5e,0xd3,0x00,0x8f,0xc1,0xcf,0xf9,0x00, -0xff,0xf6,0x8f,0xf5,0x00,0xbf,0xf2,0x03,0x20,0x00,0x03,0x10,0x1f,0x45,0x2f,0xcf, -0xf5,0x05,0x00,0x24,0x03,0x00,0x57,0x00,0x69,0x05,0x60,0x02,0x9c,0xff,0xf1,0x00, -0x03,0x8c,0x0a,0x22,0x02,0xef,0x79,0x08,0x26,0x78,0x20,0xf4,0x24,0x31,0x00,0xaf, -0xda,0xe4,0x58,0x48,0xfe,0x10,0xaf,0xc0,0x72,0x15,0x1f,0xe0,0x07,0x00,0x34,0x21, -0x7e,0xea,0x5d,0x49,0x01,0x0b,0x51,0x00,0x75,0x4d,0x52,0xea,0xdf,0xff,0x40,0x00, -0x0e,0x51,0x00,0x87,0x23,0x01,0xc2,0x27,0x11,0x07,0xa2,0x09,0x10,0xff,0xb5,0x17, -0x93,0x34,0xff,0x40,0x05,0x52,0x00,0x35,0x40,0x00,0x0e,0x40,0x1f,0xb0,0x05,0x00, -0x2b,0x00,0x26,0x15,0x80,0x07,0x9f,0xff,0x60,0x00,0x0d,0xff,0xfd,0x70,0x1c,0x2f, -0x91,0x00,0x7f,0x51,0x5e,0x32,0x00,0x00,0x08,0x12,0x36,0x22,0x1f,0xf2,0xc3,0x17, -0x18,0xf0,0x59,0x37,0x17,0x7e,0xde,0x17,0x0f,0xd5,0x46,0x4b,0x02,0x87,0x00,0x11, -0x01,0x2a,0x18,0x23,0x3f,0xf0,0x7d,0x3b,0x07,0x81,0x00,0x00,0xbf,0x03,0x40,0x0d, -0xff,0xf1,0x9f,0x58,0x38,0x40,0x60,0x9f,0xf8,0x01,0x65,0x50,0x80,0xf8,0x0a,0xff, -0xf2,0x00,0x9f,0xf8,0x4f,0x46,0x4f,0x01,0x42,0x13,0x11,0x9f,0xb8,0x01,0x11,0x9f, -0x0e,0x10,0x21,0x9f,0xf8,0x3a,0x01,0x20,0xf8,0x03,0x2a,0x00,0x00,0x36,0x00,0x20, -0x70,0x9f,0xcb,0x59,0x11,0xf3,0x7e,0x0c,0x00,0x26,0x37,0x00,0xa0,0x5a,0x00,0x73, -0x00,0x10,0x66,0xcf,0x02,0x0f,0x86,0x52,0x45,0x80,0x00,0xcf,0xf7,0x06,0xff,0x90, -0x1e,0xfb,0xeb,0x24,0x2f,0xaf,0xf7,0x03,0x00,0x1e,0x0f,0x97,0x00,0x46,0x03,0xa7, -0x38,0x15,0xf9,0xfb,0x14,0x22,0x0e,0xf4,0x4f,0x58,0x01,0x47,0x37,0x2f,0x00,0x00, -0xe6,0x04,0x06,0x0e,0x05,0x00,0x01,0x9d,0x5d,0x81,0x4f,0xf0,0x07,0xfb,0x00,0xdf, -0x40,0x01,0xd0,0x50,0x70,0x8f,0xb0,0x09,0xff,0xa0,0x09,0xfa,0x0b,0x00,0x70,0xcf, -0x60,0x09,0xff,0xa0,0x2f,0xe0,0x0b,0x00,0x1f,0x44,0xb3,0x00,0x2b,0xf0,0x05,0xaf, -0xf7,0x0d,0xf6,0xaf,0xf7,0x0e,0xf5,0xaf,0xf7,0x1f,0xf1,0xaf,0xf7,0x8f,0xa0,0xaf, -0xf7,0x07,0x10,0x7f,0x4c,0x0f,0x04,0x00,0x19,0x0f,0x7b,0x00,0x0b,0x20,0x3d,0xd2, -0x1f,0x58,0x00,0x02,0x08,0x3f,0xa0,0x4e,0xe2,0x9c,0x00,0x1c,0x0f,0x78,0x00,0x09, -0x62,0x2d,0xe4,0xaf,0xf7,0x7f,0xfa,0x08,0x00,0x0f,0x28,0x00,0x07,0x01,0x5b,0x13, -0x0f,0x06,0x00,0x09,0x11,0x42,0xbb,0x13,0x10,0xf4,0x9c,0x24,0x01,0x7d,0x1e,0x01, -0x18,0x00,0x1f,0x34,0x30,0x00,0x06,0x52,0xfa,0xaa,0xaa,0xa8,0x04,0x2d,0x62,0x03, -0x06,0x00,0x10,0xd0,0x33,0x14,0x0c,0x07,0x00,0xde,0xd4,0x30,0x4f,0xff,0xf6,0x6e, -0xff,0xf8,0x1a,0xff,0xfd,0x00,0x24,0x23,0x00,0x02,0x07,0x00,0x04,0x6e,0x4e,0x03, -0xcf,0x5f,0x00,0xcd,0x5d,0x05,0x7d,0x29,0x0f,0xe0,0x54,0x5f,0x01,0x0c,0x1f,0x12, -0x02,0x0c,0x1f,0x1a,0xe1,0x0c,0x1f,0x0f,0x68,0x22,0x2e,0x0f,0xce,0x00,0x5f,0x04, -0x30,0x21,0x12,0xfe,0x53,0x06,0x18,0xfd,0xe2,0x3c,0x22,0x0f,0xf2,0xd3,0x20,0x00, -0x7b,0x01,0x0f,0x6e,0x4b,0x30,0x12,0x00,0x55,0x00,0x11,0xf4,0xad,0x0f,0x14,0x30, -0x69,0x05,0x02,0xd2,0x33,0x20,0x06,0x00,0x1f,0x17,0x21,0xfb,0x03,0xaf,0x44,0x45, -0xcf,0xbe,0xf7,0x00,0xa7,0x13,0x0f,0xce,0x31,0x63,0xa0,0x09,0xfe,0x20,0xbf,0xe2, -0x00,0x09,0xfe,0xcf,0xe2,0x8d,0x04,0x10,0xe2,0x22,0x01,0x1f,0x51,0xe7,0x01,0x37, -0x0e,0x6e,0x01,0x06,0x77,0x0e,0x28,0x05,0x80,0x67,0x00,0x12,0x00,0x73,0x01,0x12, -0x00,0x6a,0x00,0x12,0x00,0x76,0x01,0x03,0x18,0x21,0x0f,0x07,0x00,0x1e,0x30,0xaf, -0xfd,0x00,0x53,0x18,0x32,0xaf,0xff,0x70,0x07,0x00,0x12,0xf1,0x07,0x00,0x12,0xfa, -0x07,0x00,0x20,0xff,0x30,0x07,0x00,0x30,0xfd,0xff,0xc0,0x07,0x00,0x31,0xf9,0xaf, -0xf6,0x07,0x00,0x21,0x1f,0xfe,0x07,0x00,0x30,0x07,0xff,0x82,0x07,0x00,0x31,0x00, -0xdf,0xf4,0x07,0x00,0x21,0x5f,0xfd,0x07,0x00,0x21,0x0b,0xff,0x07,0x00,0x12,0x02, -0x07,0x00,0x22,0x00,0x9f,0x07,0x00,0x12,0x1e,0x07,0x00,0x03,0x5e,0x02,0x12,0x02, -0x07,0x00,0x11,0x05,0x17,0x04,0x10,0x06,0x81,0x1d,0x01,0xde,0x0f,0x11,0x30,0x04, -0x13,0xe0,0xb3,0x00,0xdf,0xf1,0x6d,0xfd,0x70,0x0d,0xff,0xaf,0xff,0xff,0x70,0xdf, -0x57,0x02,0x11,0x0d,0xc6,0x21,0x60,0xdf,0xf4,0x00,0x0e,0xff,0x3d,0x0d,0x55,0x11, -0xf4,0x0b,0x00,0x1f,0x4d,0x0b,0x00,0x08,0x05,0x64,0x0e,0x00,0x62,0x02,0x30,0x29, -0xcf,0xfe,0xa7,0x04,0x00,0x20,0x1a,0x31,0x4e,0xfc,0x50,0x16,0x62,0x01,0x36,0x54, -0x4f,0x1d,0xdd,0xdd,0xdd,0x49,0x32,0x70,0x11,0x8f,0x58,0x15,0x4f,0x6d,0xdd,0xdd, -0xdb,0x0e,0x25,0x42,0x00,0x4a,0x13,0x21,0x1f,0xf3,0xbd,0x0a,0x01,0x2a,0x3f,0x00, -0x56,0x27,0x1f,0x10,0x13,0x32,0x6f,0x40,0x7f,0xb0,0x06,0xfe,0x37,0x11,0x11,0x1c, -0xfa,0x46,0x01,0x4d,0x03,0x3f,0x6b,0xc9,0x20,0x3c,0x27,0x3f,0x41,0x34,0x40,0x24, -0x40,0x45,0x48,0x20,0x2f,0xf9,0x5b,0x1c,0x31,0xfb,0x0c,0xfb,0xda,0x11,0x2f,0x18, -0xfd,0xe1,0x34,0x71,0xd0,0x6f,0xf4,0x4f,0xf7,0x00,0x01,0xef,0x81,0xef,0x90,0x00, -0x0a,0xfc,0x4f,0x17,0x4f,0x04,0x41,0x04,0x40,0x04,0x01,0x3d,0x32,0x05,0xbe,0xff, -0xcd,0x11,0x33,0x01,0xbf,0xff,0x0a,0x00,0x50,0x0b,0xff,0xfb,0x99,0xcf,0x5a,0x41, -0x43,0xd1,0x5f,0xff,0x30,0xc7,0x28,0x20,0xbf,0xf8,0x63,0x60,0x04,0x55,0x0b,0x12, -0x5f,0x09,0x1b,0x10,0xf2,0xf9,0x0b,0x33,0x88,0x88,0x88,0x0a,0x00,0x00,0x24,0x21, -0x0b,0x0a,0x00,0x14,0xfe,0xb7,0x4c,0x03,0x46,0x00,0x14,0xf6,0x0a,0x00,0x33,0x5f, -0xfe,0x10,0x0a,0x00,0x50,0x0b,0xff,0xe7,0x55,0x9f,0xa6,0x56,0x16,0xa1,0x82,0x00, -0x06,0x96,0x00,0x00,0xe2,0x5d,0x51,0x91,0x04,0xbf,0xfd,0x70,0xff,0x23,0x23,0xfe, -0xaf,0x3f,0x18,0x22,0x9d,0xff,0xf5,0x63,0x00,0xda,0x69,0x70,0xff,0x80,0x04,0xff, -0xc0,0x0f,0xff,0xda,0x62,0x40,0x42,0x23,0xff,0xf0,0xfa,0x29,0x01,0xb1,0x21,0x07, -0x0a,0x00,0x00,0x8f,0x29,0x12,0x6f,0xd3,0x23,0x00,0xb8,0x22,0x00,0x27,0x1d,0x20, -0x00,0x04,0x48,0x13,0x00,0x8b,0x2d,0x11,0x40,0x85,0x10,0x11,0x9f,0x55,0x1d,0x86, -0x04,0xbe,0xfe,0x92,0x04,0xbe,0xfe,0xb6,0xbd,0x3f,0x26,0xdf,0xf2,0xbb,0x3f,0x01, -0x21,0x27,0x0f,0x3f,0x5b,0x56,0x71,0x04,0xff,0xd1,0x00,0x0d,0xfe,0x20,0x85,0x48, -0x23,0x56,0x30,0xd1,0x0c,0xd1,0xbf,0xc0,0xdf,0xfe,0xff,0xb0,0xdf,0xff,0xfe,0xa0, -0xdf,0xfb,0x10,0x8c,0x01,0x0f,0x04,0x00,0x09,0x0f,0xac,0x00,0x56,0x0a,0xd4,0x44, -0x12,0x9f,0x98,0x3e,0x11,0xf6,0xcd,0x05,0x12,0xfe,0x45,0x03,0x04,0xfa,0x20,0x00, -0x32,0x52,0xb1,0x0d,0xff,0xef,0xfb,0x0d,0xff,0xff,0xea,0x0d,0xff,0xb1,0x94,0x0d, -0x0f,0x04,0x00,0x09,0x02,0x0a,0x06,0x02,0xf9,0x06,0x00,0xf6,0x06,0x21,0x0e,0xf2, -0x5e,0x08,0x00,0xb9,0x40,0x20,0x8f,0xf4,0xc9,0x0b,0x21,0xbf,0xe3,0xce,0x40,0x04, -0xd9,0x44,0x0f,0xf5,0x00,0x57,0x70,0x5f,0xf5,0x08,0xff,0x40,0x5f,0xfb,0x23,0x03, -0x00,0xc9,0x5c,0x35,0x23,0x10,0x00,0xa4,0x01,0x00,0xe1,0x00,0x10,0x00,0xa5,0x01, -0x00,0xe2,0x00,0x01,0x8a,0x01,0x01,0xcb,0x00,0x0f,0x09,0x00,0x08,0x00,0xc4,0x00, -0x26,0x66,0x40,0x4c,0x36,0x21,0x9f,0xf5,0xe6,0x33,0x16,0xf7,0x87,0x04,0x11,0x29, -0xc1,0x29,0x00,0xab,0x02,0x00,0x8e,0x68,0xb0,0xea,0xae,0xff,0xf1,0x0a,0xff,0xc0, -0x00,0x1e,0xff,0x80,0x9b,0x03,0x52,0x7d,0xd8,0x09,0xff,0xe3,0x8d,0x4d,0x00,0x6d, -0x3e,0x00,0x0b,0x35,0x31,0xf9,0x10,0x00,0x94,0x30,0x00,0x55,0x00,0x60,0x39,0xff, -0xff,0x20,0x22,0x20,0x7b,0x5d,0x30,0x2f,0xff,0x10,0x8e,0x0a,0x20,0xef,0xf8,0xfe, -0x51,0x20,0x07,0xff,0x44,0x20,0x21,0x40,0x08,0x51,0x20,0x00,0xaf,0x5d,0x12,0xea, -0x82,0x00,0x01,0x16,0x69,0x20,0xf5,0x00,0x15,0x69,0x06,0x46,0x43,0x24,0x00,0x00, -0x86,0x53,0x00,0x45,0x1e,0x50,0xdf,0xf9,0x47,0xff,0xf3,0xd9,0x33,0x51,0xcc,0x50, -0xdf,0xfb,0x40,0x41,0x07,0x61,0xfc,0x60,0x00,0x02,0x9e,0xff,0xf6,0x29,0xe0,0x7f, -0xff,0x44,0xee,0x90,0x00,0x9f,0xf7,0x1f,0xff,0x84,0x5e,0xff,0x40,0x10,0x04,0x11, -0xa0,0xff,0x53,0x00,0x5e,0x00,0x21,0x77,0x00,0x80,0x30,0x11,0xfc,0x93,0x16,0x21, -0xbc,0xfb,0x96,0x24,0x2f,0x1c,0xf9,0xe7,0x00,0x5f,0x20,0xbf,0xe2,0x05,0x00,0x00, -0x9e,0x23,0x40,0xbf,0xc1,0x7f,0xe2,0x0c,0x2f,0x2f,0x34,0x30,0xe7,0x00,0x36,0x0f, -0xfb,0x5e,0x50,0x11,0xef,0xe6,0x36,0x12,0x04,0x5f,0x2e,0x12,0x28,0xec,0x35,0x21, -0x1f,0xf9,0xa7,0x3b,0x11,0xff,0xc7,0x01,0x29,0xec,0x50,0x75,0x55,0x1f,0x0c,0x75, -0x55,0x03,0x12,0x2a,0x78,0x07,0x15,0x38,0x75,0x55,0x25,0xf7,0x35,0x75,0x55,0x11, -0xaf,0x9f,0x00,0x01,0x83,0x4e,0x34,0x05,0xcf,0xf2,0x46,0x60,0x11,0x05,0x19,0x05, -0x20,0x6e,0xa3,0x4e,0x05,0x40,0xfc,0x11,0xdf,0xb0,0x67,0x4f,0x21,0xdf,0xa0,0x43, -0x08,0x11,0xa0,0x3f,0x01,0x2e,0x20,0x00,0x01,0x01,0x13,0xff,0x01,0x01,0x40,0xf7, -0x0b,0xff,0x80,0x45,0x12,0x0f,0x01,0x01,0x0d,0x2f,0x01,0x11,0xfc,0x5f,0x11,0x00, -0xfe,0x51,0x20,0x4f,0xf8,0x8a,0x23,0x00,0x14,0x1d,0x02,0x0d,0x2a,0x1f,0x54,0xae, -0x02,0x37,0x0f,0x5a,0x60,0x58,0x01,0xf1,0x4b,0x00,0x06,0x36,0x11,0x40,0xf1,0x04, -0x13,0xbf,0x9e,0x4c,0x12,0xf6,0xf6,0x13,0x11,0xf2,0x15,0x00,0x10,0xeb,0x46,0x48, -0x2f,0x88,0x70,0x04,0x57,0x23,0xa0,0x1c,0xff,0xd0,0x00,0x0a,0xfe,0x50,0x00,0x04, -0xbf,0x98,0x07,0x00,0xdc,0x24,0x50,0xe1,0x00,0x06,0xea,0x20,0x10,0x1a,0x20,0xff, -0x80,0x8b,0x03,0x2d,0xbf,0xf6,0x41,0x0d,0x0f,0x59,0x61,0x5c,0x00,0xf1,0x2e,0x00, -0x96,0x09,0x01,0x79,0x24,0x10,0x4f,0x21,0x19,0x00,0x17,0x6a,0x30,0xe0,0x8e,0x10, -0xcd,0x00,0x01,0xd2,0x00,0x01,0xf3,0x00,0x02,0x05,0x00,0x00,0xf5,0x00,0x02,0x14, -0x00,0x0e,0x05,0x00,0x02,0x10,0x5d,0x02,0xfc,0x00,0x01,0x76,0x10,0x00,0x02,0x58, -0x0f,0xcf,0x00,0x19,0x12,0x2f,0x9b,0x14,0x03,0x07,0x00,0x0f,0xcf,0x00,0x25,0x23, -0x3f,0xfe,0x8e,0x00,0x22,0x3f,0xfe,0xba,0x00,0x10,0x0e,0xcc,0x0b,0x00,0xb9,0x00, -0x00,0x12,0x00,0x10,0x05,0x3d,0x24,0x10,0x5f,0x1d,0x2e,0x05,0x24,0x00,0x01,0xb6, -0x00,0x31,0x0f,0xff,0xba,0xb5,0x00,0x00,0x1a,0x72,0x00,0x13,0x31,0x20,0x40,0xbf, -0x7d,0x56,0x01,0x5a,0x50,0x4f,0xcf,0x21,0x9f,0xc2,0xc6,0x3a,0x5e,0x60,0xaf,0xb4, -0x1c,0xf1,0x00,0x8f,0xad,0x14,0x3b,0x0c,0xf2,0x2a,0x25,0x33,0x0f,0xc9,0x2f,0x2f, -0x11,0x7f,0xdf,0x0c,0x5f,0x06,0xdd,0xdd,0xdd,0xb0,0x22,0x3c,0x5d,0x02,0x86,0x1b, -0x1b,0x7d,0x5a,0x0d,0x0f,0xe7,0x2f,0x30,0x00,0x48,0x1a,0x00,0x07,0x0c,0x10,0xed, -0x89,0x00,0x05,0x4d,0x1a,0x0f,0xb4,0x01,0x57,0x00,0x87,0x09,0x20,0x6f,0xd0,0x3e, -0x0d,0x00,0x0b,0x23,0x01,0xf5,0x62,0x3f,0x7b,0xc9,0x10,0xdb,0x31,0x38,0x21,0x4c, -0xd8,0x96,0x11,0x20,0x62,0xd7,0x67,0x06,0x31,0xf3,0x0c,0x80,0x72,0x18,0x1f,0xc1, -0x6c,0x3e,0x5f,0x20,0x04,0xcd,0xba,0x04,0x80,0xf5,0x3e,0x60,0x00,0x00,0x2f,0x20, -0xd7,0x37,0x0e,0x08,0x2c,0x4c,0x0f,0xb3,0x31,0x33,0x40,0x04,0x42,0x04,0x43,0x2c, -0x02,0x70,0x27,0xff,0x40,0x00,0x02,0xff,0x53,0x10,0x04,0x4f,0xcf,0x90,0xdf,0x70, -0xec,0x00,0x5d,0x00,0xca,0x19,0x00,0xa5,0x5d,0xdf,0x71,0xef,0x80,0x00,0xaf,0xb0, -0xcf,0xa0,0x00,0x04,0x41,0x14,0x40,0xd3,0x01,0x36,0x0f,0x99,0x02,0x47,0x11,0x80, -0x99,0x02,0x10,0xc0,0x99,0x02,0x02,0x82,0x15,0x02,0xc4,0x59,0x36,0x1f,0xf5,0x10, -0xf7,0x57,0x3f,0x03,0xce,0xb0,0xab,0x01,0x2d,0x11,0xb3,0xa7,0x0d,0x33,0x8f,0xe4, -0x00,0x48,0x75,0x31,0x01,0xff,0x41,0x1a,0x01,0x10,0xd0,0x76,0x2f,0x02,0x15,0x02, -0x01,0x28,0x0c,0x06,0x08,0x21,0x00,0x09,0x4d,0x38,0x90,0x4f,0xf5,0x2f,0x02,0x0f, -0xf9,0x66,0x85,0x00,0x0b,0x10,0x13,0xf7,0xfe,0x52,0x21,0xef,0x70,0xaa,0x00,0x21, -0xe3,0x2d,0x03,0x15,0x06,0xf7,0x34,0x01,0xb0,0x07,0x0f,0x60,0x5e,0x4c,0x05,0xd9, -0x59,0x02,0x25,0x08,0x12,0x01,0x74,0x15,0x45,0x1c,0xe9,0x02,0xce,0xe2,0x04,0x0f, -0xd8,0x40,0x5c,0x00,0x85,0x00,0x10,0xd2,0xac,0x13,0xff,0x00,0xfd,0xfe,0x20,0x00, -0x01,0xdf,0xa0,0x7f,0xe2,0x00,0x01,0x22,0x00,0x02,0x21,0x5c,0x34,0x5a,0x00,0xcc, -0x34,0x33,0x6b,0x40,0x00,0x70,0x4a,0x6f,0x00,0x0c,0xe4,0x00,0x9f,0x80,0x10,0x01, -0x66,0x02,0xc7,0x2e,0x00,0x63,0x13,0x16,0x70,0xba,0x73,0x2f,0x36,0x50,0x5e,0x68, -0x57,0x00,0x7c,0x03,0x10,0xf3,0xc0,0x00,0x14,0xf4,0xe4,0x36,0x24,0x04,0x64,0x0e, -0x01,0x01,0xf3,0x28,0x02,0xf8,0x5f,0x20,0x88,0x88,0x4e,0x03,0x02,0x73,0x00,0x02, -0x41,0x10,0x21,0xdf,0xfa,0x89,0x29,0x01,0x36,0x4e,0x10,0x30,0xfd,0x0b,0x10,0x70, -0x73,0x00,0x41,0xf8,0x88,0x88,0x33,0xb1,0x1a,0x13,0x3f,0x55,0x59,0x12,0x06,0xdf, -0x54,0x02,0xc4,0x03,0x15,0x06,0xd5,0x43,0x0f,0xe0,0x00,0x58,0x12,0x8f,0x49,0x6b, -0x00,0x39,0x00,0x1a,0x8e,0x47,0x41,0x0f,0xe0,0x00,0x30,0x03,0x8f,0x0b,0x23,0x1c, -0xfb,0xb8,0x00,0x1f,0x50,0xe0,0x00,0x5d,0xa0,0x03,0xef,0x80,0x5f,0xf6,0x00,0x03, -0xef,0xbf,0xf6,0x9f,0x0d,0x01,0x4c,0x05,0x1f,0x32,0xe0,0x00,0x37,0xa0,0x01,0x9e, -0xfe,0x21,0xef,0xff,0xf1,0x7f,0xff,0xa9,0x08,0x0e,0x21,0xbf,0xf5,0x3b,0x37,0x1f, -0xcf,0x07,0x00,0x12,0xf1,0x05,0x00,0x00,0x55,0x00,0x1e,0xff,0xd1,0x7f,0xff,0xf7, -0x8f,0xff,0xf8,0x5f,0xff,0xf5,0x08,0xee,0x80,0x72,0x44,0x06,0x10,0xc6,0x10,0x61, -0x00,0x5c,0x77,0x20,0x27,0xcf,0x67,0x1c,0xf0,0x05,0x01,0x6b,0xff,0xf6,0x00,0x02, -0x7c,0xff,0xf6,0x27,0xdf,0xff,0xfd,0x71,0xef,0xff,0xf9,0x30,0x00,0xef,0x65,0x0e, -0x11,0x71,0x38,0x61,0x00,0xdd,0x17,0x01,0x05,0x00,0x22,0x89,0x99,0x8f,0x50,0x0c, -0xb3,0x57,0x43,0x00,0x05,0x9e,0xf8,0x0a,0x00,0x24,0x26,0xbf,0x7c,0x5f,0x23,0x48, -0xdf,0xf6,0x55,0x22,0x01,0x5a,0x98,0x14,0x01,0x99,0x62,0x03,0xa1,0x57,0x01,0x6a, -0x36,0x05,0x17,0x00,0x11,0x0a,0x14,0x00,0x23,0x94,0x0e,0x17,0x00,0x61,0xfc,0x72, -0x00,0x00,0xef,0xd0,0x44,0x57,0x00,0x0d,0x1a,0x02,0x17,0x00,0x02,0x44,0x1b,0x02, -0x17,0x00,0x2f,0x10,0x00,0x17,0x00,0x11,0x34,0x03,0x54,0xff,0x17,0x00,0x13,0x5e, -0x73,0x00,0x12,0xf1,0x14,0x02,0x40,0xd0,0x01,0x69,0x9d,0xf8,0x6d,0x00,0xf2,0x27, -0x11,0x06,0x7b,0x38,0x01,0x0e,0x23,0x11,0x61,0x84,0x15,0x00,0xdf,0x0f,0x32,0xfc, -0x50,0x1f,0xf1,0x50,0x01,0x67,0x5d,0x00,0xf3,0x58,0x05,0x2a,0x2b,0x24,0xcc,0xa3, -0x0b,0x00,0x40,0x42,0x00,0x78,0x88,0x01,0x00,0x62,0x87,0x00,0x24,0xf8,0x22,0xef, -0xdb,0x58,0x40,0x22,0x8f,0xff,0xff,0x41,0x51,0x20,0x99,0x9b,0x89,0x08,0x31,0x44, -0xff,0x30,0x51,0x04,0x51,0x44,0x9f,0xf6,0x00,0xef,0x0b,0x00,0x10,0xfe,0x96,0x06, -0x04,0x0b,0x00,0x00,0xb1,0x11,0x01,0x21,0x00,0x00,0x3a,0x10,0xc3,0x66,0xff,0x74, -0x44,0x44,0x44,0x47,0xff,0x66,0xaf,0xf6,0x00,0x4d,0x00,0x00,0xec,0x5f,0xb3,0xef, -0xdc,0xcc,0xcc,0xcc,0xcd,0xfe,0x00,0x6f,0xff,0xee,0x2c,0x00,0x43,0xee,0xff,0xfc, -0x88,0x0b,0x00,0x27,0x88,0xcf,0x58,0x00,0x07,0x0b,0x00,0xd3,0xfe,0xcc,0xff,0x41, -0x11,0x11,0x11,0x14,0xff,0xcc,0xef,0xfd,0xaa,0x67,0x01,0x35,0xaa,0xdf,0xc6,0x58, -0x00,0x51,0x6c,0xbf,0xff,0xfe,0x31,0x7b,0x43,0x00,0xa5,0x6c,0x24,0xff,0x63,0x7d, -0x43,0x0f,0x0b,0x00,0x0d,0x33,0x58,0x88,0x87,0xf4,0x00,0x1a,0x85,0x57,0x58,0x12, -0x31,0x5a,0x00,0x1f,0xfc,0x4d,0x00,0x11,0x13,0x53,0x08,0x00,0x51,0x47,0x88,0x87, -0x00,0x68,0x4d,0x00,0x1f,0x74,0x4d,0x00,0x27,0x13,0x52,0x08,0x00,0x60,0x37,0x77, -0x76,0x00,0x57,0x77,0x01,0x00,0x06,0x4d,0x00,0x35,0x16,0x00,0x00,0xdb,0x62,0x16, -0xb0,0xdb,0x62,0x16,0xfb,0xf0,0x62,0x15,0xfe,0x15,0x00,0x25,0xff,0xf3,0x15,0x00, -0x45,0xff,0x30,0x04,0xe8,0x15,0x00,0x33,0x4f,0xff,0x80,0x15,0x00,0x43,0x00,0xef, -0xff,0xf8,0x2a,0x00,0x00,0xa4,0x02,0x12,0x80,0x15,0x00,0x00,0xbb,0x02,0x14,0xf8, -0x3f,0x00,0x02,0xd2,0x02,0x12,0x30,0xd7,0x24,0x03,0x96,0x33,0x03,0x17,0x00,0x14, -0x30,0x31,0x5a,0x04,0x15,0x00,0x00,0x43,0x7d,0x15,0x30,0x0c,0x28,0x13,0xd3,0x0b, -0x16,0x10,0xc4,0x83,0x00,0x50,0xc9,0x00,0x9f,0xff,0x40,0x6b,0x00,0x10,0xb0,0xdb, -0x11,0x11,0x02,0xfb,0x03,0xb1,0xff,0x40,0x2e,0xff,0xff,0x90,0x08,0xff,0xff,0xf6, -0xef,0xb9,0x5a,0x01,0x7e,0x5b,0x05,0x60,0x19,0x01,0xa3,0x02,0x13,0xb0,0xbf,0x00, -0x11,0xf4,0xbc,0x00,0x00,0x43,0x4d,0x00,0x0f,0x00,0x40,0xfd,0xff,0xff,0xf4,0x0f, -0x00,0x80,0xa0,0x8f,0xff,0xff,0x40,0xdf,0xff,0xfa,0x33,0x00,0x22,0xf0,0xdf,0x98, -0x1a,0x33,0xe0,0x2e,0xfa,0xe8,0x79,0x01,0x8a,0x00,0x12,0x21,0xd5,0x03,0x25,0x33, -0x00,0x75,0x62,0x06,0x95,0x4b,0x14,0x0e,0xcf,0x7a,0x71,0xaf,0x50,0x0e,0xff,0x80, -0x0b,0xf4,0x40,0x05,0x20,0xe0,0x0e,0x37,0x67,0x01,0x8f,0x24,0x00,0x0b,0x00,0x20, -0x5f,0xff,0xe6,0x80,0x50,0xfe,0x30,0x0e,0xff,0x80,0x37,0x67,0x30,0x0b,0xff,0xf3, -0x37,0x00,0x00,0x4e,0x4c,0x00,0x55,0x4c,0x00,0x0b,0x00,0x42,0x1f,0xff,0xb0,0x6f, -0xa0,0x09,0x00,0x31,0x74,0x22,0x8f,0xff,0x58,0x00,0x12,0x05,0x32,0x1d,0x10,0x0e, -0xa8,0x30,0x41,0xff,0xf3,0x9f,0xfd,0xfe,0x3c,0x00,0xc1,0x11,0x21,0x8f,0xff,0x3e, -0x09,0x00,0xe3,0x1c,0x01,0x67,0x00,0x02,0x75,0x00,0x13,0x0f,0xb1,0x58,0x10,0x3f, -0x10,0x01,0x13,0xf8,0xc1,0x61,0x51,0x20,0x01,0xef,0xff,0x90,0xb9,0x5f,0x10,0xf9, -0x04,0x0a,0x41,0xfd,0x62,0x01,0x49,0x2c,0x3b,0x01,0x36,0x7e,0x01,0xe1,0x36,0x01, -0x42,0x7c,0x02,0x36,0x01,0x02,0x36,0x13,0x01,0xd0,0x13,0x01,0x81,0x2c,0x1a,0x65, -0xfc,0x5d,0x03,0x93,0x36,0x25,0xee,0xc7,0x91,0x08,0x2c,0xff,0xfc,0x0b,0x00,0x90, -0x08,0x30,0x2a,0xff,0xff,0xff,0xb2,0x03,0x80,0x6b,0x13,0x01,0x58,0x00,0x10,0xbf, -0x3e,0x2d,0x05,0x1e,0x63,0x15,0x0b,0x0b,0x00,0x20,0xb0,0x1f,0xa4,0x01,0x20,0x55, -0xaf,0x39,0x0c,0x20,0x06,0xef,0xaf,0x06,0x11,0x07,0x31,0x17,0x31,0x2f,0xff,0xfd, -0xef,0x02,0x10,0xf3,0xca,0x00,0x01,0x07,0x06,0x02,0xe6,0x35,0x11,0xfb,0x32,0x02, -0x11,0xf3,0xe4,0x01,0x10,0x20,0x59,0x1d,0x11,0xf9,0x9c,0x04,0x30,0xd3,0x00,0x3d, -0xde,0x5f,0x01,0x32,0x3d,0x11,0xee,0x99,0x34,0x14,0x07,0x63,0x00,0x00,0x00,0x2d, -0x06,0x58,0x05,0x30,0x2f,0xb2,0x9f,0x71,0x00,0x20,0x2a,0xf3,0xa0,0x05,0x7e,0x02, -0xdf,0xff,0xfe,0x30,0x00,0x10,0xc6,0x00,0x05,0xf4,0x0d,0x35,0x14,0x66,0x41,0xf3, -0x00,0x23,0x1b,0xe9,0x83,0x70,0x01,0x26,0x16,0x33,0xfc,0x10,0x7f,0x74,0x56,0x00, -0x5b,0x81,0x33,0x37,0xff,0xf0,0xe0,0x12,0x61,0xb4,0xdf,0xff,0xbf,0xff,0x00,0x3c, -0x32,0x41,0xff,0x80,0x01,0xbf,0x27,0x05,0x00,0x69,0x00,0x20,0x50,0x8f,0xea,0x4a, -0x01,0x7b,0x13,0x62,0xfe,0x30,0xbf,0xff,0x70,0x6f,0x5c,0x72,0x90,0xfc,0x12,0xdf, -0xff,0xff,0xa0,0x3e,0xff,0xe3,0x0a,0x48,0x01,0xd9,0x0c,0x72,0xc1,0x2d,0xff,0xf6, -0x0c,0xff,0xf7,0x9b,0x01,0x62,0xe3,0x0b,0xff,0xf8,0x9f,0xf5,0x93,0x5d,0x00,0xd2, -0x2d,0x33,0x50,0x93,0x0a,0xcc,0x00,0x33,0xf6,0x05,0x70,0x2b,0x3d,0x03,0xb6,0x01, -0x00,0xfc,0x00,0x12,0xcc,0x05,0x3e,0x01,0x19,0x00,0x01,0x6c,0x14,0x03,0x19,0x00, -0x00,0x60,0x3f,0x0f,0x19,0x00,0x0c,0x01,0xf0,0x16,0x12,0x8f,0x52,0x0d,0x93,0x02, -0x44,0x44,0x40,0x00,0x01,0x44,0x44,0x41,0xf6,0x03,0x26,0x22,0x20,0xc0,0x13,0x16, -0xf9,0x8b,0x04,0x1f,0xfc,0x0b,0x00,0x34,0x31,0x03,0xee,0xee,0x28,0x62,0x10,0x20, -0xf8,0x07,0x02,0x01,0x00,0x15,0x20,0x9f,0x08,0x13,0xf3,0xeb,0x67,0x05,0x26,0x04, -0x16,0x3f,0x3b,0x04,0x12,0x03,0x0a,0x51,0x07,0x65,0x67,0x00,0x21,0x05,0x53,0xfc, -0x04,0xff,0x40,0xcf,0xa0,0x71,0x25,0xc0,0x23,0x89,0x65,0x23,0xfc,0x44,0x5b,0x61, -0x0c,0x01,0x00,0x25,0xf1,0x6e,0x8f,0x02,0x55,0xf6,0xaf,0x5d,0xff,0xbf,0x19,0x00, -0x00,0x1f,0x1d,0x11,0xab,0x8b,0x5f,0x01,0x5a,0x40,0x04,0xdd,0x65,0x14,0xe1,0xf6, -0x07,0x02,0x3c,0x3d,0x04,0x3a,0x4c,0x21,0x00,0x1d,0xfe,0x60,0x01,0x2f,0x45,0x02, -0x08,0x00,0x05,0x21,0x04,0x21,0xaf,0xfa,0x58,0x75,0x03,0x4f,0x65,0x24,0xf5,0x03, -0x86,0x22,0x00,0xf8,0x16,0x50,0xdf,0xfa,0x44,0x44,0x20,0x37,0x1e,0x43,0x44,0x4d, -0xff,0x8f,0x46,0x57,0x13,0x3f,0x7a,0x06,0x00,0x58,0x07,0x01,0x9c,0x00,0x01,0xba, -0x00,0x35,0xe8,0x88,0x88,0x78,0x72,0x04,0x01,0x00,0x08,0xd3,0x00,0x09,0x19,0x00, -0x17,0xbd,0x0c,0x00,0x27,0xf9,0x4e,0x25,0x00,0x06,0x8a,0x1f,0x20,0x06,0x76,0x82, -0x00,0x70,0x9c,0xdd,0xb8,0x30,0x00,0x0f,0xff,0x26,0x64,0x00,0x1f,0x00,0x10,0x40, -0x0b,0x00,0x12,0xbf,0x37,0x00,0x20,0x0f,0xff,0xa1,0x22,0x30,0xa5,0x34,0x6b,0xd7, -0x30,0x30,0x00,0xaf,0xff,0x6d,0x58,0x11,0x2b,0xb3,0x82,0x01,0x05,0x02,0x00,0x2e, -0x02,0x11,0x0d,0x01,0x01,0x50,0x7d,0xdc,0xbf,0xff,0xff,0x28,0x83,0x03,0xe5,0x05, -0x25,0x6f,0xfb,0xec,0x15,0x01,0xba,0x17,0x01,0xdd,0x62,0x04,0x42,0x0d,0x0b,0x01, -0x00,0x41,0xde,0xee,0xee,0xee,0x13,0x67,0x23,0x9e,0xe5,0x77,0x60,0x00,0xee,0x0b, -0x02,0xb9,0x7e,0x00,0x74,0x0c,0x10,0xe0,0xa2,0x05,0x11,0x10,0x03,0x0a,0x13,0x70, -0x8a,0x75,0x40,0x07,0xff,0xfd,0x00,0xce,0x03,0xa0,0x61,0x00,0x05,0xcf,0xff,0xf2, -0x00,0xff,0xe3,0xef,0xf5,0x03,0x00,0xcb,0x03,0x42,0xff,0xf0,0x19,0xff,0x55,0x51, -0x00,0x9d,0x6f,0x31,0x28,0xdf,0xff,0xec,0x34,0x20,0xab,0xa0,0xb8,0x05,0x15,0x10, -0x7d,0x1f,0x11,0x30,0xd9,0x0a,0x01,0x05,0x00,0x11,0xf0,0x04,0x05,0x40,0x24,0x44, -0x47,0xff,0xc9,0x62,0x0f,0x01,0x00,0x11,0x12,0xbf,0xec,0x59,0x00,0x35,0x06,0x01, -0x4a,0x06,0x15,0xf0,0x11,0x6a,0x39,0x2e,0xc0,0x00,0x63,0x00,0x04,0x66,0x00,0x04, -0x69,0x00,0x02,0x31,0x40,0x00,0xf1,0x80,0x00,0x6f,0x00,0x13,0xf0,0x63,0x6b,0x42, -0xff,0x00,0x75,0x00,0xe5,0x4b,0x32,0x2f,0xf7,0x0f,0x11,0x00,0x32,0x7f,0xf0,0xff, -0x65,0x00,0x22,0xdf,0x3f,0x11,0x00,0x22,0x0f,0xf3,0x11,0x00,0x22,0x0c,0xfd,0x22, -0x00,0x32,0x01,0xfe,0x20,0x87,0x00,0x13,0x01,0x8a,0x07,0x04,0xa8,0x07,0x1b,0xf0, -0xa1,0x6a,0x2f,0x2d,0xc0,0x73,0x01,0x01,0x18,0x73,0xad,0x42,0x17,0xf7,0xb2,0x00, -0x25,0x9f,0xf7,0xb6,0x00,0x12,0x01,0x99,0x35,0x00,0xba,0x00,0x00,0x7c,0x87,0x24, -0x9f,0xe1,0xbe,0x00,0x54,0x4f,0xfb,0x00,0xdf,0x80,0xc2,0x00,0x43,0x3f,0xf7,0x04, -0xff,0xc6,0x00,0x64,0x86,0x00,0x4f,0xf1,0x0d,0xf4,0xca,0x00,0x52,0x00,0xcf,0x60, -0x9f,0x8f,0x19,0x00,0x64,0x6f,0xf1,0x07,0xf9,0x06,0xfa,0xd2,0x00,0x52,0x40,0x5f, -0xb0,0x5f,0xbf,0x19,0x00,0x62,0x1f,0xf2,0x05,0xfa,0x05,0xfb,0x19,0x00,0x72,0x0d, -0xfc,0x00,0x9f,0x80,0x7f,0x9f,0xde,0x00,0x64,0xfd,0x20,0x1e,0xf3,0x0b,0xf6,0xe2, -0x00,0x21,0x0a,0xfc,0x10,0x2b,0x01,0xe6,0x00,0x52,0x0b,0xff,0x20,0x8f,0xc0,0xea, -0x00,0x00,0xe3,0x87,0x24,0x2f,0xf4,0xee,0x00,0x55,0x19,0x20,0x1d,0xfa,0x00,0x85, -0x01,0x26,0x2d,0xfd,0xe6,0x02,0x36,0x2f,0xfd,0x20,0xe9,0x08,0x2b,0xfb,0x10,0xf2, -0x22,0x14,0x77,0x01,0x00,0x26,0x50,0x9f,0x2f,0x03,0x08,0xef,0x01,0x25,0xf6,0x01, -0x10,0x04,0x12,0x90,0x60,0x6e,0x02,0x55,0x0d,0x00,0xcc,0x2b,0x12,0xdb,0xe0,0x69, -0x10,0x2f,0x41,0x07,0x10,0xaf,0xb3,0x03,0x20,0x56,0xef,0x66,0x63,0x26,0x0a,0xff, -0x56,0x07,0x10,0xaf,0xc5,0x03,0x11,0x2e,0xe7,0x65,0x01,0x1e,0x58,0x41,0x02,0xed, -0x10,0x00,0x16,0x84,0x13,0xf7,0x51,0x08,0x15,0x0c,0x22,0x6a,0x0b,0x0b,0x00,0x22, -0xfc,0xcc,0x01,0x00,0x10,0xcf,0xb9,0x75,0x04,0x52,0x00,0x06,0xc9,0x03,0x17,0xe4, -0x61,0x0c,0x23,0x7f,0x90,0x9c,0x14,0x13,0xf1,0x55,0x04,0x13,0xf7,0x45,0x00,0x13, -0xfd,0x1a,0x05,0x02,0x88,0x04,0x12,0xcf,0x22,0x32,0x04,0xd8,0x2d,0x13,0x2f,0x53, -0x05,0x12,0xcf,0x66,0x0c,0x22,0x07,0xff,0x74,0x03,0x13,0x1f,0x81,0x05,0x13,0x7f, -0xf5,0x00,0x03,0x62,0x04,0x23,0xe0,0xef,0xaa,0x01,0x31,0xff,0xc0,0xdf,0x35,0x05, -0x31,0xdf,0xe0,0x9f,0x10,0x00,0x31,0x9f,0xf5,0x1e,0x08,0x05,0x40,0x3f,0xfe,0x21, -0x8b,0xdc,0x18,0x73,0x0a,0xff,0xf7,0x20,0xdf,0xff,0xfb,0x45,0x04,0x17,0xd1,0x85, -0x09,0x47,0x17,0xab,0xa7,0x20,0x56,0x6a,0x01,0xd1,0x39,0x31,0xd3,0x2f,0xfe,0x3a, -0x05,0x31,0x82,0xff,0xe0,0x9e,0x08,0x21,0x2f,0xfe,0xea,0x01,0x31,0x92,0xff,0xe0, -0x89,0x1d,0x20,0x2f,0xfe,0x6e,0x21,0x00,0x0f,0x00,0x21,0x5f,0xff,0x0f,0x00,0x01, -0x63,0x89,0x13,0x92,0xa8,0x01,0x02,0x4b,0x65,0x07,0x0f,0x00,0x22,0xcf,0xff,0x2d, -0x00,0x22,0xbf,0xff,0x3c,0x00,0x12,0xaf,0x0f,0x00,0x00,0xa9,0x04,0x01,0x5a,0x00, -0x12,0x7f,0x0f,0x00,0x22,0x00,0x6f,0x0f,0x00,0x21,0x00,0x5f,0x0f,0x00,0x00,0x7f, -0x4a,0x11,0x04,0xe9,0x4d,0x22,0x13,0x00,0xaf,0x04,0x02,0x03,0x4b,0x15,0x20,0xa3, -0x0e,0x16,0xf8,0xad,0x0e,0x16,0xe5,0xb7,0x0e,0x15,0xc2,0x0a,0x00,0x25,0xff,0x91, -0x0a,0x00,0x24,0xfe,0x60,0x0a,0x00,0x10,0xff,0x4f,0x87,0x04,0x53,0x02,0x14,0x10, -0x0a,0x00,0x00,0xec,0x43,0x05,0x1b,0x6c,0x05,0x0a,0x00,0x16,0xf3,0x8d,0x06,0x04, -0x09,0x00,0x26,0xfe,0x40,0xc0,0x08,0x03,0x09,0x00,0x14,0xb2,0x50,0x00,0x14,0xd4, -0x64,0x00,0x14,0xf7,0x78,0x00,0x23,0xfa,0x10,0x0a,0x00,0x03,0xec,0x6f,0x03,0x2a, -0x05,0x01,0xf6,0x01,0x15,0x91,0x52,0x86,0x0e,0x0b,0x04,0x10,0x3d,0xe5,0x8c,0x60, -0x03,0xdf,0xff,0xfe,0x60,0xdf,0xdd,0x0d,0x14,0x0d,0x82,0x00,0x24,0x30,0x0f,0x96, -0x00,0x20,0x40,0x0f,0xa2,0x0f,0x0f,0x0a,0x00,0x73,0x02,0x96,0x00,0x10,0x8f,0x9a, -0x07,0x10,0x08,0x74,0x02,0x11,0x02,0x98,0x68,0x31,0x24,0x44,0x43,0xfe,0x09,0x02, -0x7f,0x01,0x1d,0xdf,0x4a,0x01,0x07,0x5e,0x01,0x1f,0xf4,0x0a,0x00,0x78,0x12,0xf3, -0x20,0x05,0x03,0xc8,0x00,0x01,0x01,0x00,0x15,0x43,0xa9,0x04,0x11,0xdc,0x8f,0x87, -0x31,0xf3,0x7f,0xfd,0xb9,0x8d,0x40,0x47,0xff,0xfe,0x30,0xd9,0x21,0x00,0xe9,0x0c, -0x01,0x0f,0x00,0x00,0xc5,0x09,0x01,0x0f,0x00,0x22,0xff,0x60,0x0f,0x00,0x22,0xff, -0x70,0x0f,0x00,0x43,0xff,0x8d,0xff,0x47,0x69,0x00,0x03,0xc1,0x03,0x09,0x0f,0x00, -0x12,0xcd,0x0f,0x00,0x12,0xb0,0x2d,0x00,0x12,0xb0,0x3c,0x00,0x12,0x90,0x4b,0x00, -0x12,0x80,0x5a,0x00,0x12,0x70,0x69,0x00,0x10,0x60,0x78,0x00,0x12,0x44,0x72,0x49, -0x12,0xf4,0x7f,0x1f,0x12,0x44,0xdb,0x0b,0x25,0xea,0x10,0xa3,0x35,0x16,0xfc,0x62, -0x6f,0x14,0xfb,0xe9,0x06,0x03,0xed,0x03,0x02,0xcc,0x10,0x16,0xf9,0x38,0x09,0x15, -0xf7,0xc7,0x09,0x11,0xff,0x07,0x12,0x03,0xd3,0x0a,0x01,0x5f,0x6e,0x12,0xff,0x78, -0x61,0x05,0xcd,0x08,0x15,0xe1,0x69,0x05,0x02,0x47,0x23,0x03,0x09,0x11,0x22,0x56, -0x66,0x01,0x00,0x06,0x62,0x52,0x03,0x4a,0x0e,0x02,0xdc,0x0b,0x06,0x5a,0x01,0x16, -0x0f,0x6a,0x0c,0x06,0x79,0x01,0x15,0x0e,0x0b,0x00,0x24,0x20,0x27,0xf6,0x05,0x11, -0x30,0xc9,0x48,0x11,0x20,0x3e,0x22,0x11,0xe2,0x89,0x04,0x11,0xf8,0x33,0x42,0x10, -0xd1,0x0b,0x00,0x20,0xfc,0x10,0x0b,0x00,0x1d,0xc1,0x0b,0x00,0x00,0xdb,0x04,0x11, -0xd1,0x09,0x13,0x12,0xf6,0xfc,0x00,0x1f,0x60,0x0d,0x00,0x0c,0x11,0xf5,0x0d,0x00, -0x16,0xf6,0xab,0x05,0x13,0x01,0x5f,0x2b,0x03,0x04,0x8b,0x01,0x44,0x09,0x12,0x3e, -0xac,0x28,0x1f,0xef,0x0d,0x00,0x0c,0x11,0x3f,0x49,0x01,0x12,0x9f,0xe3,0x42,0x01, -0xab,0x52,0x00,0xf8,0x0a,0x0d,0x0b,0x00,0x12,0x8f,0x87,0x8c,0x01,0x1e,0x0b,0x2a, -0x1c,0xf4,0xd0,0x6f,0x34,0xbe,0xd3,0x00,0xad,0x01,0x15,0xfa,0xc1,0x01,0x1f,0xfb, -0x0a,0x00,0x19,0xaf,0x14,0x55,0x55,0x59,0xff,0xfc,0x55,0x55,0x54,0x20,0x6e,0x03, -0x0a,0xbf,0xf3,0x6c,0xdd,0xdd,0xde,0xff,0xff,0xdd,0xdd,0xdc,0x90,0x64,0x00,0x1f, -0x09,0x0a,0x00,0x15,0x04,0x83,0x05,0x03,0xfa,0x53,0x02,0x2e,0x6d,0x00,0xc0,0x72, -0x15,0xbf,0x35,0x02,0x0e,0x82,0x00,0x08,0x64,0x03,0x01,0x3d,0x00,0x24,0x23,0x43, -0x01,0x08,0x00,0x19,0x6c,0x03,0x52,0x59,0x00,0x84,0x6f,0x51,0xfd,0xce,0xff,0xff, -0xc3,0xe5,0x0d,0x81,0xff,0xff,0x71,0x00,0x02,0x9f,0xff,0xf8,0x2e,0x0f,0x80,0xfe, -0x20,0x02,0x53,0x00,0x5f,0xff,0xfb,0x01,0x13,0x00,0xfe,0x8c,0x00,0xf5,0x0d,0x12, -0xfb,0xd5,0x8b,0x60,0x06,0xff,0xfc,0x00,0xef,0xff,0x09,0x71,0x40,0xf5,0x01,0x03, -0xef,0x5f,0x89,0x33,0xff,0xf3,0xef,0xa9,0x8d,0x90,0x70,0x7f,0xff,0xff,0xad,0xff, -0xff,0xf3,0x0a,0xed,0x02,0x11,0x07,0x20,0x8f,0x40,0xff,0x60,0x5f,0xff,0xb1,0x22, -0x60,0xff,0xfe,0x10,0x8f,0xff,0xfc,0x9a,0x06,0x20,0x60,0x1f,0xc6,0x03,0x92,0xaf, -0xff,0xf6,0x00,0x6c,0xdb,0x40,0x0a,0xff,0x52,0x64,0x12,0xf6,0x98,0x2c,0x11,0x70, -0x57,0x0e,0x52,0xfc,0x52,0x12,0x6d,0xff,0xbe,0x21,0x12,0x19,0xa5,0x15,0x03,0xc2, -0x01,0x5e,0x5a,0xde,0xfe,0xd9,0x50,0xcd,0x05,0x29,0x4e,0x70,0xaa,0x1c,0x09,0xb9, -0x1c,0x30,0x6f,0xff,0xd2,0x7a,0x0a,0x02,0x78,0x15,0x00,0x4d,0x02,0x72,0x60,0x28, -0xcf,0xff,0xff,0xfb,0x60,0xda,0x0e,0x00,0x3c,0x0c,0x54,0xec,0xdf,0xff,0xfe,0x70, -0xd8,0x0b,0x10,0xa3,0x2f,0x6f,0x21,0xfc,0x20,0x7c,0x01,0x91,0xef,0xff,0x70,0x15, -0x40,0x01,0xdf,0xff,0xe3,0xba,0x02,0x62,0x1c,0xff,0xfb,0x1f,0xfe,0x50,0xd6,0x18, -0x90,0x7e,0x30,0x00,0x9f,0xff,0xef,0xff,0xf3,0x08,0x9e,0x03,0x00,0x00,0x16,0x01, -0xe5,0x23,0x10,0x03,0xa9,0x00,0x10,0x08,0x24,0x01,0x00,0x28,0x70,0x00,0xfc,0x2c, -0x00,0x17,0x04,0x01,0x70,0x35,0x21,0xfb,0x02,0xe1,0x0c,0x31,0xdf,0xff,0xfd,0x2b, -0x04,0x11,0x55,0x17,0x2d,0x11,0x2f,0xb2,0x02,0x01,0x4a,0x6e,0x11,0x90,0x2e,0x04, -0x23,0xd0,0x00,0xee,0x46,0x01,0xbd,0x08,0x11,0xfb,0x91,0x8e,0x01,0x1b,0x09,0x00, -0x48,0x0f,0x53,0xe8,0x31,0x20,0x00,0x3e,0x5b,0x4d,0x11,0x06,0x9b,0x72,0x23,0x01, -0xbf,0xb6,0x10,0x50,0x04,0x9c,0xef,0xfd,0x80,0xff,0x2b,0x18,0x20,0x15,0x01,0x06, -0x53,0x12,0x01,0xdc,0x19,0x19,0xf4,0x4d,0x3e,0x2e,0x60,0x00,0x01,0x00,0x18,0x1d, -0x39,0x01,0x38,0x0b,0xff,0xf7,0x72,0x37,0x07,0xac,0x30,0x00,0x32,0x0f,0x06,0xac, -0x17,0x16,0x7f,0xc6,0x12,0x02,0x48,0x66,0x19,0xfc,0xa2,0x04,0x15,0xf6,0xb4,0x76, -0x55,0xfd,0x88,0x8f,0xff,0xe0,0x01,0x0f,0x11,0x80,0x04,0x00,0x03,0xa2,0x01,0x10, -0xf9,0x24,0x0a,0x14,0x20,0x92,0x75,0x33,0xa0,0x00,0xef,0x00,0x03,0x10,0x08,0xe6, -0x00,0x13,0x0f,0x9a,0x66,0x11,0x02,0x74,0x0a,0x04,0xc3,0x75,0x01,0x78,0x6e,0x13, -0x1f,0xee,0x07,0x10,0x4f,0x07,0x05,0x13,0xcd,0xa6,0x15,0x20,0x0d,0xff,0x12,0x0d, -0x12,0x6f,0x90,0x05,0x12,0x07,0x48,0x08,0x01,0x45,0x90,0x02,0x77,0x5e,0x00,0x06, -0x36,0x01,0x4a,0x00,0x11,0x9f,0x1d,0x05,0x12,0x17,0xf0,0x66,0x17,0x0f,0xfa,0x0a, -0x15,0xfb,0x37,0x11,0x01,0x08,0x0a,0x35,0x02,0xbc,0xcc,0x01,0x00,0x1f,0x90,0x56, -0x0c,0x01,0x15,0x3c,0x92,0x02,0x00,0x3b,0x0c,0x12,0x12,0x34,0x10,0x41,0x22,0x9f, -0xff,0x50,0x1a,0x2c,0x01,0x6f,0x00,0x21,0xf5,0xff,0x78,0x2d,0x15,0xcf,0x21,0x0b, -0x11,0x0b,0x8b,0x00,0x90,0x45,0x55,0xbf,0xff,0x60,0xaf,0xff,0xd5,0xaf,0x0b,0x01, -0x30,0x0b,0xf8,0x0a,0x24,0x03,0x01,0xeb,0x02,0x20,0x70,0x9f,0x8e,0x73,0x12,0x80, -0x04,0x01,0x25,0xfe,0x20,0x6b,0x01,0x52,0xf3,0x10,0x00,0x2a,0x30,0x6e,0x06,0x51, -0x41,0xda,0x00,0x7f,0xf3,0xcb,0x09,0x80,0xf4,0x0c,0xff,0x90,0x8f,0xff,0x30,0xef, -0xc8,0x00,0x14,0x2e,0x07,0x04,0x12,0xf6,0x6a,0x06,0x00,0xdc,0x0d,0x03,0x0f,0x83, -0x40,0xfa,0x67,0x77,0x75,0x89,0x01,0x14,0x77,0x36,0x02,0x04,0x69,0x82,0x03,0x86, -0x01,0x16,0xa0,0x2e,0x0c,0x0b,0x56,0x03,0x14,0x4f,0x53,0x09,0x14,0x4f,0x5d,0x09, -0x14,0x4f,0x67,0x09,0x34,0x4f,0xff,0xfc,0x83,0x01,0x32,0xfa,0x05,0xff,0x97,0x2e, -0x21,0xfa,0x00,0x0a,0x00,0x31,0x4f,0xff,0xf9,0xa9,0x00,0x42,0x70,0x3f,0xff,0xf9, -0xb3,0x00,0x33,0x7a,0xff,0xf9,0x2b,0x07,0x23,0x2e,0xf9,0x88,0x05,0x23,0x50,0x25, -0x61,0x02,0x13,0x40,0xec,0x14,0x52,0x01,0xcb,0x18,0xff,0xe3,0xb1,0x02,0x22,0xfc, -0x9f,0x7a,0x03,0x61,0xcf,0xff,0xd0,0xbf,0xff,0xe3,0x09,0x00,0x20,0xd1,0x00,0x0a, -0x00,0x01,0x09,0x00,0x00,0x0a,0x00,0x01,0x09,0x00,0x00,0x0a,0x00,0x32,0xe4,0xcf, -0xff,0xeb,0x45,0x05,0x5a,0x72,0x14,0xbf,0x09,0x00,0x03,0xb4,0x06,0x01,0x0a,0x00, -0x05,0xd8,0x2a,0x03,0x49,0x07,0x18,0x27,0x16,0x0d,0x17,0x02,0xf7,0x2a,0x00,0x8c, -0x0b,0x32,0xfd,0x10,0x3f,0x01,0x0c,0x02,0xb5,0x07,0x23,0xd1,0x3f,0x8e,0x50,0x01, -0x45,0x15,0x20,0xfd,0x15,0x1e,0x11,0x00,0x78,0x0c,0x42,0xdf,0xfb,0xef,0xdc,0x65, -0x05,0x00,0x46,0x18,0x64,0x9f,0xc0,0xef,0xd1,0xdf,0x70,0x0e,0x00,0x64,0x03,0x00, -0xef,0xd0,0x03,0x00,0x0e,0x00,0x02,0x8f,0x18,0x0f,0x0e,0x00,0x0b,0x64,0x07,0x50, -0xaf,0xf1,0x19,0x30,0x0e,0x00,0x64,0x8f,0xf6,0xaf,0xf3,0xdf,0xe0,0x0e,0x00,0x40, -0x5f,0xff,0xef,0xfe,0xfd,0x02,0x12,0xef,0x80,0x83,0x03,0x69,0x0d,0x12,0xef,0x2b, -0x0b,0x12,0x6f,0xf0,0x00,0x10,0x6b,0x97,0x00,0x47,0xba,0x30,0x06,0xff,0x09,0x0e, -0x07,0xbd,0x70,0x05,0xdf,0x01,0x56,0x05,0x78,0x88,0x88,0x71,0x87,0x16,0x03,0x2e, -0x00,0x03,0x2e,0x71,0x06,0xd4,0x0b,0x5e,0xcc,0xcc,0xcc,0xcb,0x91,0x69,0x11,0x0f, -0x01,0x00,0x54,0x0f,0x00,0x0e,0x06,0x09,0xd1,0x65,0x06,0xd9,0x11,0x15,0x3f,0x38, -0x23,0x16,0x03,0xf0,0x11,0x12,0x3f,0xef,0x4a,0x04,0x85,0x09,0x26,0xfc,0x10,0x01, -0x1c,0x16,0xc1,0x9a,0x09,0x13,0xfc,0xc3,0x09,0x02,0x44,0x04,0x00,0xfd,0x71,0x54, -0xef,0xff,0xf9,0x11,0x10,0x21,0x7c,0x05,0xfc,0x13,0x0f,0x0b,0x00,0x20,0x20,0xcf, -0xff,0x6b,0x80,0x22,0xf8,0x0e,0x3f,0x01,0x53,0xf3,0x26,0x66,0x50,0x3f,0xb3,0x0b, -0x4f,0x52,0x22,0x25,0xef,0x99,0x13,0x1e,0x09,0xa3,0x03,0x02,0x2d,0x08,0x26,0xc8, -0x51,0x73,0x00,0x05,0x63,0x05,0x00,0x76,0x07,0x06,0x55,0x0f,0x04,0x17,0x00,0x17, -0x03,0x72,0x71,0x03,0x88,0x32,0x03,0x5f,0x06,0x25,0xff,0xf7,0x2a,0x06,0x07,0xd1, -0x05,0x36,0xdf,0xff,0xd0,0x5e,0x01,0x26,0xf8,0x00,0x51,0x00,0x15,0x10,0x0e,0x92, -0x05,0xd1,0x92,0x12,0x05,0x9b,0x05,0x21,0x05,0xb8,0x4b,0x01,0x00,0x68,0x16,0x21, -0x7e,0xff,0xd9,0x9a,0x12,0xf6,0x51,0x44,0x22,0xf4,0x4d,0xc9,0x07,0x25,0xef,0xff, -0xd4,0x07,0x15,0x0b,0x18,0x0b,0x02,0x49,0x06,0x03,0x5c,0x0e,0x15,0x04,0x51,0x0e, -0x02,0xdb,0x7e,0x04,0x2d,0x5c,0x35,0x7b,0xb9,0x74,0xd0,0x06,0x21,0x8c,0xda,0x17, -0x05,0x20,0x20,0x00,0x44,0x98,0x01,0xce,0x00,0x20,0x80,0xaf,0xdc,0x00,0x00,0x77, -0x06,0x31,0xf1,0xef,0xe1,0x44,0x80,0x30,0xff,0xfe,0x30,0xd9,0x3e,0xc0,0x30,0x0b, -0xff,0xff,0xe3,0x00,0xbf,0xfc,0xbf,0xff,0x10,0xcf,0x51,0x0c,0x00,0x80,0x01,0x20, -0xdc,0xff,0x53,0x04,0x11,0x03,0xea,0x05,0x02,0x21,0x7a,0x12,0x2d,0xa4,0x05,0x03, -0x6a,0x06,0x13,0x30,0x05,0x07,0x02,0x80,0x07,0x33,0x01,0x8c,0xef,0x25,0x02,0x15, -0x1d,0xdd,0x7a,0x00,0x38,0x03,0x20,0x33,0xef,0x15,0x00,0x01,0x6e,0x00,0x10,0x2e, -0x50,0x02,0x01,0x6e,0x00,0x50,0x02,0xef,0xff,0xfc,0x10,0x6e,0x00,0x01,0x2e,0x00, -0x21,0xc0,0x3f,0x5b,0x01,0x00,0xab,0x04,0x21,0x03,0xdf,0xd4,0x00,0x27,0x04,0x75, -0x2b,0x74,0x10,0x00,0x4f,0x45,0x34,0x22,0x22,0x01,0x9d,0x01,0x22,0xfe,0x0e,0x74, -0x64,0x00,0x0a,0x00,0x14,0xf6,0x0a,0x00,0x00,0x71,0x32,0x12,0x22,0x0a,0x00,0x00, -0xcd,0x83,0x13,0x25,0xa6,0x02,0x35,0xff,0xff,0x25,0xf8,0x09,0x0f,0x0a,0x00,0x51, -0x13,0x24,0x48,0x32,0x32,0xff,0xff,0x50,0x92,0x0c,0x16,0x50,0x8f,0x03,0x03,0xd3, -0x02,0x09,0x0a,0x00,0x11,0x8b,0x34,0x07,0x10,0xb7,0x82,0x0f,0x02,0x3f,0x07,0x15, -0x91,0x03,0x07,0x16,0xfd,0x18,0x10,0x43,0xd1,0x00,0xff,0xc0,0x22,0x08,0x11,0x10, -0x0a,0x00,0x00,0xa8,0x07,0x15,0xd0,0x0a,0x00,0x15,0xf5,0x0a,0x00,0x17,0xf6,0x0a, -0x00,0x01,0x29,0x76,0x10,0xbc,0x0a,0x00,0x05,0x29,0x03,0x09,0x0a,0x00,0x33,0xfe, -0x51,0x3b,0x0a,0x00,0x11,0xf3,0x74,0x00,0x12,0xf6,0x03,0x03,0x12,0x8f,0x0a,0x00, -0x11,0xf0,0xa4,0x15,0x11,0xf6,0xa8,0x0d,0x14,0x04,0x3c,0x00,0x20,0xda,0xbf,0x0a, -0x00,0x05,0x91,0x03,0x26,0xf5,0x6f,0x42,0x0b,0x03,0x73,0x0b,0x43,0x21,0x00,0xce, -0xee,0x01,0x00,0x1f,0xd1,0xd8,0x0e,0x01,0x23,0x13,0x33,0x01,0x00,0x0e,0xcf,0x7f, -0x09,0x01,0x00,0x05,0x5f,0x08,0x1f,0xe2,0x46,0x00,0x01,0x14,0x12,0xe2,0x0b,0x1f, -0x10,0x46,0x00,0x33,0x24,0x02,0x44,0x01,0x00,0x04,0xdb,0x12,0x00,0x95,0x0e,0x0f, -0x72,0x05,0x03,0x07,0x21,0x00,0x25,0x04,0xef,0x90,0x11,0x23,0xb1,0x1b,0x0b,0x00, -0x52,0xb1,0x3e,0xfe,0x50,0x7f,0x1f,0x00,0x23,0x07,0xff,0xb6,0x19,0x30,0xfe,0x31, -0xbf,0x87,0x1a,0x10,0x1b,0x1f,0x00,0x14,0x4e,0x8c,0x06,0x23,0xf6,0x09,0xb0,0x04, -0x34,0x12,0x99,0x22,0xf5,0x08,0x3f,0xf8,0x33,0x8f,0xeb,0x05,0x1e,0x12,0x03,0x1b, -0x10,0x13,0x08,0x2f,0x04,0x12,0xbf,0x01,0x71,0x01,0xad,0x11,0x02,0x6a,0x02,0x13, -0xfc,0xd0,0x13,0x16,0x70,0x96,0x58,0x00,0x96,0x1a,0x43,0x66,0x66,0x51,0x08,0x21, -0x1a,0x12,0xaf,0x14,0x02,0x19,0x0c,0x2c,0x0f,0x23,0x40,0x0d,0xda,0x01,0x33,0x01, -0x22,0x22,0xcb,0x56,0x11,0x2f,0xdf,0x04,0x00,0xef,0x68,0x08,0xf0,0x56,0x13,0x0e, -0x7f,0x0b,0x02,0x4c,0x0b,0x00,0x2f,0x60,0x03,0x32,0x7f,0x02,0xc7,0x0a,0x12,0x70, -0xc7,0x08,0x04,0x17,0x0a,0x05,0xb2,0x01,0x22,0x1c,0xff,0x13,0x00,0x60,0x8c,0xcc, -0xdf,0xbc,0xfc,0xcc,0x55,0x21,0x00,0xe2,0x4c,0x01,0xaf,0x00,0x00,0x82,0x00,0x15, -0xde,0x0a,0x00,0x15,0xff,0x0a,0x00,0x14,0x92,0x48,0x03,0x22,0xfc,0x01,0x10,0x04, -0x12,0xff,0x34,0x06,0x20,0x0e,0x60,0x0a,0x00,0x10,0x1f,0x0a,0x00,0x15,0xf6,0x0a, -0x00,0x25,0xff,0x70,0x0a,0x00,0x12,0xf2,0x0a,0x00,0x00,0x7e,0x19,0x02,0x0a,0x00, -0x02,0xac,0x03,0x0f,0x0a,0x00,0x13,0x45,0x58,0x88,0x84,0x1f,0x6d,0x1a,0x0f,0x0a, -0x00,0x0b,0x20,0x08,0xaa,0x01,0x00,0x08,0x19,0x55,0x09,0x35,0x0a,0x23,0xbf,0xf0, -0x09,0x00,0x44,0x28,0xef,0xf9,0x40,0x1a,0x06,0x12,0xff,0x77,0x16,0x14,0xaf,0x0f, -0x80,0x15,0x05,0xf9,0x05,0x12,0x0d,0xfc,0x00,0x05,0x62,0x00,0x15,0xff,0x56,0x25, -0x02,0x44,0x0a,0x03,0x00,0x14,0x03,0xf5,0x72,0x00,0x4e,0x01,0x15,0x8f,0x79,0x05, -0x13,0xcf,0x1c,0x64,0x05,0x34,0x1b,0x13,0xf6,0x48,0x06,0x00,0x06,0x01,0x1e,0x9f, -0x64,0x14,0x00,0x8e,0x0f,0x02,0x01,0x00,0x0a,0xbf,0x0b,0x15,0x0f,0x44,0x1b,0x16, -0x09,0x86,0x78,0x21,0x7b,0x81,0x76,0x0e,0x15,0xbb,0x01,0x00,0x15,0xb7,0x48,0x1b, -0x0c,0x37,0x03,0xf5,0x0f,0xbf,0xfd,0x00,0x8f,0x10,0x7f,0x10,0x5f,0x30,0x3f,0x50, -0x1f,0xfc,0xff,0xc0,0x07,0xe0,0x06,0xf0,0x04,0xf2,0x02,0xf4,0x00,0xff,0xcf,0xfc, -0x00,0x8f,0x00,0x19,0x00,0x09,0xb5,0x1a,0x90,0xfe,0x66,0xbf,0x66,0xaf,0x76,0x8f, -0x86,0x7f,0x0d,0x08,0x80,0xd0,0x06,0xf0,0x05,0xf1,0x03,0xf3,0x01,0x19,0x00,0x9b, -0xfd,0x00,0x7f,0x00,0x5f,0x10,0x3f,0x30,0x1f,0xe7,0x1a,0x40,0xfe,0x66,0xcf,0x76, -0x6b,0x05,0x31,0x9f,0xa6,0x7f,0x64,0x00,0x01,0x8e,0x02,0x02,0x64,0x00,0x12,0x7e, -0xe7,0x17,0x61,0x40,0x0f,0xfc,0xff,0xfc,0xce,0x36,0x17,0x3f,0xcd,0xfd,0xcc,0x00, -0x1b,0x11,0x17,0x00,0x92,0x1a,0x16,0x5c,0x16,0x25,0x15,0x6d,0x26,0x08,0x25,0x01, -0x7e,0x2a,0x83,0x24,0x02,0x9f,0x76,0x74,0x34,0x00,0x03,0xaf,0xd9,0x05,0x00,0x88, -0x9b,0x04,0xca,0x01,0x13,0x05,0x88,0x04,0x00,0xd5,0x1d,0x15,0xef,0x31,0x18,0x05, -0x3e,0x04,0x00,0x64,0x95,0x04,0x0b,0x00,0x14,0xfa,0xfa,0x19,0x02,0x53,0x02,0x18, -0x05,0x2a,0x82,0x00,0xf5,0x02,0x17,0x7f,0xd6,0x1c,0x17,0x6f,0x1a,0x7a,0x16,0x6f, -0x47,0x0e,0x00,0x0c,0x00,0x17,0xe0,0x0c,0x00,0x17,0x70,0x0c,0x00,0x07,0xf3,0x0f, -0x16,0xf8,0x60,0x4c,0x07,0xb9,0x0e,0x26,0x2f,0xff,0x01,0x02,0x00,0xa6,0x08,0x00, -0x20,0x89,0x00,0x1a,0x22,0x13,0x05,0x41,0x87,0x23,0xa0,0xfa,0x54,0x16,0x23,0x0f, -0xfa,0x11,0x00,0x23,0xff,0xfa,0x11,0x00,0x23,0xff,0xfa,0x11,0x00,0x02,0x2c,0x06, -0x14,0xfa,0x74,0x87,0x44,0xe3,0x22,0x22,0x21,0xc7,0x00,0x14,0x8f,0xe9,0x04,0x0f, -0x11,0x00,0x52,0x24,0xf7,0xbf,0x9f,0x05,0x0e,0x1b,0x06,0x63,0x26,0x9c,0xde,0xdc, -0xb8,0x50,0xcc,0x01,0x12,0x8d,0x28,0x00,0x11,0xb5,0x0d,0x00,0x05,0x1f,0x03,0x22, -0xd5,0x00,0xbd,0xa1,0x40,0xdb,0x99,0x9a,0xcf,0x38,0x1c,0x00,0x37,0x09,0x11,0xfc, -0x17,0x0d,0x95,0x39,0xef,0xff,0xfe,0x40,0xcf,0xff,0xfb,0x30,0xe3,0x14,0x13,0xf4, -0x0d,0x05,0x02,0x32,0x11,0x31,0xf2,0x0a,0xd2,0x72,0x10,0x72,0xed,0xb6,0x20,0x00, -0x00,0x8e,0x30,0x8e,0x10,0x00,0x14,0x01,0x12,0x20,0x31,0x02,0x14,0xcf,0xef,0x17, -0x03,0x11,0x10,0x43,0xfb,0x87,0x89,0xdf,0x25,0x0a,0x32,0x0b,0xff,0xe6,0x48,0x02, -0x02,0xb4,0x00,0x21,0xba,0x10,0x8a,0x01,0x1e,0xd4,0x39,0x26,0x02,0x88,0x0a,0x19, -0xf6,0x8f,0x10,0x29,0xff,0x30,0xbb,0x03,0x07,0xf3,0x11,0x12,0x0d,0x5a,0x32,0x05, -0xfc,0x0b,0x18,0xfa,0x47,0x00,0x1e,0x15,0xc5,0x21,0x05,0xf4,0x21,0x04,0x3f,0x04, -0x09,0x86,0x0b,0x35,0x00,0xff,0xeb,0xfd,0x03,0x57,0xbd,0xff,0x50,0xff,0xc0,0x6a, -0x0b,0x35,0xf9,0xff,0xc0,0x2c,0x00,0x37,0x07,0xff,0xfa,0x0e,0x00,0x28,0x03,0x7f, -0x0e,0x00,0x2f,0x00,0x1f,0x0e,0x00,0x07,0x73,0x05,0xdf,0xfa,0xff,0xc0,0x78,0x88, -0x01,0x00,0x01,0x46,0x00,0x07,0x62,0x00,0x19,0xf6,0x17,0x07,0x18,0x10,0xe7,0x1e, -0x18,0xfe,0x97,0x04,0x2f,0xbb,0x92,0xd2,0x00,0x3c,0x01,0xa4,0x51,0x17,0xfa,0x0e, -0x00,0x28,0x03,0x7f,0x0e,0x00,0x07,0xc4,0x00,0x0d,0x0e,0x00,0x07,0xd2,0x00,0x3f, -0x86,0x00,0x00,0xd2,0x00,0x74,0x12,0xfb,0x0e,0x00,0x17,0xfa,0x0e,0x00,0x05,0xd2, -0x00,0x12,0xfb,0x9c,0x02,0x0f,0x0e,0x00,0x07,0x05,0xd2,0x00,0x01,0xd0,0x26,0x0f, -0xd2,0x00,0x72,0x14,0xf9,0x0e,0x00,0x17,0xfa,0x0e,0x00,0x03,0xd2,0x00,0x14,0xf9, -0x7f,0x13,0x0f,0x0e,0x00,0x07,0x03,0xd2,0x00,0x02,0x11,0x84,0x0f,0xd2,0x00,0x71, -0x07,0x0e,0x00,0x08,0x8c,0x00,0x01,0xd2,0x00,0x06,0x60,0x00,0x1f,0x1f,0x0e,0x00, -0x07,0x2a,0x05,0xdf,0xc4,0x00,0x0f,0xd2,0x00,0x2d,0x18,0x18,0xdc,0x00,0x23,0x12, -0xdf,0xcf,0x22,0x02,0xce,0x09,0x08,0x61,0x04,0x46,0xcf,0x76,0xff,0xff,0x3e,0x41, -0x42,0xf6,0x00,0x4c,0xd5,0x0b,0x00,0x18,0x33,0x8e,0x89,0x62,0x1c,0xff,0xd2,0x00, -0x4f,0x60,0x2d,0x0f,0x74,0x40,0x00,0xaf,0xff,0xfc,0x01,0xde,0xc3,0x00,0x19,0x10, -0x9a,0x00,0x81,0xf5,0xdf,0xff,0xff,0x88,0x88,0x9f,0xe8,0x48,0x89,0x40,0xff,0x91, -0x5f,0xff,0x40,0x53,0x02,0x2f,0x5b,0x40,0xc3,0x00,0x04,0xbb,0x43,0x00,0x11,0xeb, -0x72,0x07,0x05,0xb3,0x13,0x55,0x30,0x08,0x88,0x83,0x00,0x15,0x83,0x48,0xc1,0x2f, -0xff,0xf7,0xa7,0x15,0x08,0xb6,0x15,0x11,0x27,0xf4,0x9c,0x07,0xff,0x06,0x08,0x51, -0x05,0x0c,0x6b,0x8c,0x00,0xc1,0x39,0x12,0xc7,0xf0,0x05,0x10,0xdf,0x49,0x16,0x11, -0x08,0x38,0x92,0x11,0xfe,0x95,0x0e,0x40,0x11,0xdf,0xff,0xf9,0xc6,0x09,0x50,0xf1, -0x01,0xef,0xff,0xf0,0xf8,0x06,0xf1,0x0d,0x12,0x12,0xef,0xff,0x53,0xff,0xf4,0x7f, -0xf1,0x3d,0x13,0xff,0xf8,0x6f,0xff,0x40,0x7f,0x13,0xf5,0x0c,0xff,0xb8,0xff,0xff, -0x40,0x71,0x35,0x0a,0x6e,0x5b,0x01,0x4b,0x81,0x10,0xea,0x48,0x0f,0x12,0x06,0x6a, -0x40,0x01,0x24,0x54,0x10,0xe9,0xcb,0x15,0x00,0x7d,0x6a,0xf0,0x0b,0x8f,0xff,0xf4, -0x06,0x13,0x50,0x8f,0xff,0xd6,0xff,0xf4,0x07,0xf1,0x3f,0x40,0x9f,0xfb,0x3f,0xff, -0x47,0xff,0x13,0xd1,0x1d,0xff,0x90,0x4a,0x08,0x50,0x21,0x1d,0xff,0xf5,0x0a,0x3b, -0x08,0x30,0x1d,0xff,0xff,0xde,0x0b,0x31,0xf2,0x2e,0xff,0x25,0x43,0x21,0xff,0x4e, -0xfd,0x07,0x13,0x4e,0x28,0x10,0x00,0xc3,0x23,0x23,0xc9,0x40,0xa9,0x25,0x04,0x2e, -0x0d,0x12,0xcf,0xa7,0x24,0x30,0xac,0xcc,0xcd,0x9c,0x04,0x36,0xcc,0xcc,0xc1,0x1d, -0x0d,0x06,0x31,0x0d,0x07,0x3d,0x11,0x03,0xd9,0x15,0x15,0xca,0x50,0x1b,0x19,0xfe, -0x0a,0x00,0x60,0xe1,0xef,0xf2,0xcf,0xf3,0xbf,0x0a,0x00,0x6f,0xd0,0xdf,0xf0,0xbf, -0xf1,0x9f,0x0a,0x00,0x41,0x60,0xe1,0xef,0xf1,0xcf,0xf3,0xaf,0x9c,0x62,0x04,0xd1, -0x1b,0x16,0x06,0x31,0x09,0x00,0xcc,0x8d,0x00,0x85,0x13,0x06,0x17,0x07,0x17,0x30, -0xef,0x01,0x17,0xd1,0xfa,0x01,0x16,0xd1,0xfc,0x12,0x04,0x0c,0x00,0x25,0x01,0x0c, -0x01,0x1a,0x20,0x04,0xe4,0x0c,0x00,0x03,0x2c,0x00,0x12,0xf4,0x9e,0xa5,0x02,0x52, -0x4a,0x02,0xcb,0x2e,0x01,0x3c,0x02,0x25,0xf4,0x0c,0x0b,0x00,0x05,0xba,0x8d,0x05, -0x1c,0x29,0x16,0x04,0x4f,0x1a,0x0f,0x0b,0x00,0x19,0x17,0x03,0x86,0x1a,0x16,0x8f, -0x0b,0x00,0x03,0x80,0x63,0x05,0x80,0x84,0x25,0xb0,0x00,0x91,0x8d,0x04,0x94,0x2b, -0x07,0x0b,0x00,0x48,0x08,0xb9,0x75,0x40,0xc2,0x14,0x13,0x68,0x3e,0x07,0x16,0x75, -0x19,0x7f,0x03,0x49,0x0a,0x17,0x05,0x5b,0x03,0x08,0x1b,0x00,0x22,0xff,0xf7,0x1b, -0x00,0x50,0x80,0xcf,0xff,0xc0,0x8f,0xba,0x0a,0x21,0x5f,0xff,0x87,0x39,0x10,0xfc, -0xcd,0x12,0x23,0xf8,0x05,0x84,0x0c,0x10,0x90,0x17,0x00,0x24,0xf8,0x5f,0x3f,0x00, -0x10,0x05,0x79,0x09,0x13,0xef,0x33,0x0e,0x01,0x96,0x0c,0x24,0xf8,0xbf,0xb4,0x0d, -0x10,0x0c,0x0e,0x00,0x13,0x0c,0x77,0x00,0x10,0x10,0xc4,0x00,0x12,0xf8,0x49,0x85, -0x54,0x00,0x05,0xf5,0x00,0x0d,0x68,0x18,0x61,0xfe,0x10,0x5f,0xff,0x50,0x1e,0x2a, -0x0b,0x10,0xcf,0xca,0x26,0x02,0x50,0x00,0x12,0xf8,0x3f,0x00,0x05,0x9a,0x00,0x06, -0x1a,0x18,0x02,0x8d,0x0e,0x24,0x09,0xef,0x0b,0x02,0x07,0xd8,0x08,0x02,0xd0,0x17, -0x14,0x70,0x42,0x1e,0xf2,0x0d,0x50,0x02,0xef,0xbb,0xfc,0xbf,0xdb,0xbf,0xf9,0x02, -0xef,0xd0,0x2f,0x40,0xe7,0x01,0xff,0xa2,0xef,0xfd,0x02,0xf4,0x0e,0x70,0x1f,0xfa, -0xef,0xff,0x11,0x00,0x94,0xaf,0xff,0xfd,0x24,0xf6,0x2e,0x82,0x3f,0xfa,0x5b,0x00, -0x04,0x5a,0x2f,0x0f,0x11,0x00,0x4b,0x14,0x99,0x70,0x03,0x25,0x09,0xef,0x6a,0x0a, -0x05,0x17,0x05,0x16,0x00,0xba,0x04,0x16,0xf1,0x0b,0x00,0x53,0xff,0x10,0x00,0x03, -0xed,0x44,0x14,0x13,0xf1,0xc3,0x4c,0x01,0x99,0x9d,0x34,0x05,0xff,0xff,0x17,0x00, -0x51,0x06,0xff,0xff,0xf6,0x66,0x0a,0x0d,0x27,0xff,0x17,0x2a,0x15,0x07,0xab,0x19, -0x16,0x13,0x7f,0x06,0x10,0xd0,0x1e,0x2d,0x11,0x11,0x01,0x00,0x10,0x10,0xdd,0x14, -0x06,0x3e,0x03,0x26,0xdf,0xf0,0x0c,0x00,0x1f,0xb8,0x0f,0x05,0x02,0x1f,0xf6,0x73, -0x11,0x07,0x04,0x59,0x0a,0x17,0xeb,0x14,0x00,0x7a,0xf7,0xf6,0x00,0xfd,0xf0,0x00, -0xf0,0x94,0x15,0x09,0xa1,0x16,0x16,0x07,0xbd,0x05,0x0a,0x77,0x87,0x1f,0x00,0x01, +0xff,0xf4,0x07,0xf8,0x00,0xff,0xf4,0xef,0xf5,0x1f,0xe0,0x8b,0x18,0xb0,0xf8,0xaf, +0x50,0x02,0xff,0xf1,0x8f,0xfe,0xfb,0x00,0x08,0x56,0x18,0x10,0xf2,0x5c,0x02,0x90, +0x07,0xff,0xfe,0xbc,0xff,0xfc,0x00,0x01,0xff,0x9f,0x24,0x40,0x00,0x09,0xf8,0x9d, +0xb4,0x00,0x22,0x2f,0xd0,0x7a,0x00,0x21,0x36,0x64,0x72,0x09,0x02,0x80,0x0c,0x12, +0x02,0x63,0x09,0x13,0x04,0x7e,0x0c,0x01,0x76,0x16,0x0f,0x0a,0x19,0x26,0x02,0x0d, +0x00,0x12,0x3b,0x0d,0x00,0x11,0xaf,0xee,0x1f,0xf2,0x00,0x26,0xff,0xf3,0x00,0x0a, +0xff,0xe0,0x0e,0xff,0xfb,0xad,0xff,0xf6,0x00,0x3e,0xe8,0x19,0x41,0x18,0xcf,0xfe, +0xa4,0x6c,0x00,0x00,0xc2,0x15,0x04,0x7e,0x24,0x31,0x05,0xff,0x80,0x97,0x00,0x1f, +0xa0,0x89,0x00,0x60,0x22,0x07,0x82,0xdf,0x08,0x11,0xe1,0xcf,0x0e,0x21,0xaf,0xd1, +0x30,0x04,0x2f,0x9f,0xc0,0x89,0x00,0x5e,0x00,0xbb,0x06,0x00,0x00,0x10,0x00,0xda, +0x0e,0x10,0x00,0xbf,0x06,0x04,0x0c,0x01,0x0f,0xa5,0x1a,0x55,0x06,0x1c,0x1b,0x22, +0x8f,0xf8,0x1f,0x02,0x23,0xa0,0x00,0x67,0x09,0x1f,0x00,0x41,0x19,0x5d,0x11,0x9f, +0x82,0x00,0x09,0x06,0x00,0x42,0xff,0xff,0xfd,0x81,0x14,0x09,0x90,0x40,0x9f,0xfc, +0x88,0xae,0xff,0xe1,0x9f,0xf8,0x4d,0x10,0x20,0x9f,0xf8,0xd5,0x28,0x01,0x06,0x00, +0x10,0xfa,0x12,0x00,0x60,0xdf,0xf7,0x9f,0xfc,0x88,0x9e,0x00,0x07,0x00,0x64,0x0b, +0x00,0xdd,0x13,0x1d,0x92,0x4e,0x00,0x00,0x3b,0x04,0x32,0xef,0xea,0x20,0xf0,0x0b, +0x70,0x30,0x00,0x1f,0xff,0xc9,0xef,0xfc,0xe7,0x18,0x30,0x03,0xff,0xf0,0x21,0x29, +0x20,0x0f,0xff,0x36,0x18,0x60,0x05,0xff,0xc0,0x00,0x8f,0xf9,0x2a,0x27,0x10,0x08, +0x37,0x18,0x00,0x66,0x00,0x10,0x01,0xa8,0x29,0x00,0x97,0x11,0x10,0xe2,0x1a,0x00, +0x30,0x2e,0xff,0xe2,0x5d,0x18,0x50,0x2e,0xff,0xc0,0x8f,0xf9,0xdd,0x01,0x10,0x18, +0x00,0x04,0xb0,0xff,0xf1,0x8f,0xf9,0x2a,0x65,0xbf,0xfd,0x08,0xff,0x95,0xaa,0x00, +0x64,0x8f,0xf9,0x6d,0xff,0xea,0x30,0x45,0x1e,0x12,0x0b,0xea,0x05,0x21,0xcf,0xd0, +0x00,0x03,0x15,0x62,0xc8,0x04,0x0f,0xbe,0x18,0x34,0x03,0x2c,0x02,0x00,0xde,0x09, +0x00,0xfd,0x06,0x01,0x5a,0x09,0x2f,0x26,0x50,0x66,0x00,0x3f,0x20,0x7f,0xf5,0x34, +0x00,0x01,0x6b,0x29,0x20,0x8f,0xe2,0x19,0x2c,0x4f,0x44,0x10,0x02,0x44,0x66,0x00, +0x3d,0x40,0x2c,0xfa,0x21,0xee,0x9b,0x0d,0x00,0x22,0x03,0x35,0xfc,0x14,0xbe,0x1a, +0x04,0x0f,0x66,0x00,0x3b,0xff,0x01,0xbf,0x60,0x08,0xf9,0x00,0x02,0xff,0xb0,0x0e, +0xff,0x00,0x00,0x7b,0x30,0x05,0xb5,0x2c,0x01,0x3e,0x20,0x7d,0xd5,0x62,0x05,0x90, +0xe3,0x4f,0x20,0x00,0x00,0x06,0xe0,0x1f,0x30,0x42,0x0d,0x2f,0xf9,0x00,0xcc,0x00, +0x43,0x71,0x08,0xdf,0xfd,0x80,0x5c,0xff,0xd7,0x7f,0x06,0x02,0x03,0x0f,0x51,0x0a, +0xff,0xfa,0x9f,0xff,0x43,0x1a,0x70,0xab,0xb3,0x00,0x6f,0xff,0x50,0x04,0x85,0x03, +0xb2,0x02,0x25,0xff,0xf2,0x22,0x3f,0xff,0x00,0x07,0xdf,0xff,0x03,0x2b,0x23,0x0b, +0xff,0x01,0x00,0x00,0x68,0x1c,0x01,0xdd,0x1b,0x00,0xaa,0x23,0x10,0x03,0x95,0x13, +0xb0,0x20,0x02,0xff,0xfc,0x8a,0xff,0xff,0xfc,0x99,0xcf,0x30,0x68,0x0c,0x11,0xea, +0xdf,0x0e,0x8f,0x06,0xce,0xfd,0x81,0x05,0xbe,0xfe,0xb5,0xd0,0x1a,0x08,0x18,0x99, +0xd0,0x1a,0x00,0xc7,0x15,0x50,0x32,0x0e,0xff,0x40,0x03,0xd0,0x1a,0x33,0x99,0xef, +0xf7,0xd0,0x1a,0x30,0x6d,0xff,0xd6,0xaa,0x09,0x11,0xf7,0x22,0x20,0x11,0xf7,0xdd, +0x0f,0x11,0x90,0x65,0x04,0x00,0xbc,0x02,0x15,0xc5,0x29,0x01,0x31,0x0c,0xff,0x30, +0x60,0x0e,0x02,0x34,0x03,0x16,0x61,0xcd,0x10,0x0f,0xa4,0x1a,0x34,0x03,0x57,0x0e, +0x02,0x23,0x2b,0x21,0x2f,0xfa,0x25,0x07,0x1f,0x50,0x66,0x00,0x3f,0x01,0x4f,0x0e, +0x11,0x09,0x34,0x03,0x40,0x9f,0xe2,0x5f,0xf3,0x34,0x03,0x2f,0x03,0x43,0x66,0x00, +0x3d,0x30,0xce,0x50,0x09,0x7c,0x26,0x9f,0xa0,0x0f,0xfe,0x00,0x00,0x8b,0x20,0x05, +0xb5,0x60,0x00,0x3c,0x10,0x8f,0x52,0x02,0x73,0x60,0x00,0xbf,0xe1,0x00,0x05,0x52, +0x4b,0x05,0x0f,0x03,0x00,0x0d,0x00,0x1c,0x06,0x94,0x5f,0xfa,0x00,0x0e,0xfc,0x00, +0x02,0x55,0x10,0x3a,0x0c,0x2f,0x9f,0xf8,0x07,0x00,0x11,0x00,0xc8,0x04,0x12,0x60, +0xf1,0x1f,0xb6,0x07,0xfe,0x33,0xef,0x60,0x04,0x42,0x00,0x14,0x40,0x00,0x7f,0x0c, +0x0f,0x05,0x00,0x23,0xff,0x00,0x0a,0xf7,0x00,0x6f,0xa0,0x0f,0xfd,0x00,0xcf,0xf1, +0x06,0xb4,0x00,0x4b,0x70,0x50,0x00,0x2e,0x32,0x00,0x06,0x50,0x60,0x11,0x20,0x80, +0x1a,0xba,0x0d,0x00,0xe1,0x01,0x21,0x01,0x8f,0x4d,0x12,0x10,0x7f,0xcc,0x0d,0x30, +0x01,0xea,0x2e,0x46,0x07,0x10,0x10,0x2b,0x07,0x51,0x07,0xdf,0xe9,0xef,0xf6,0xde, +0x2d,0x80,0xfa,0x06,0xff,0xfa,0x79,0xff,0xfc,0x0d,0x93,0x0b,0x10,0xfd,0xdc,0x2c, +0x40,0x3f,0xfd,0x1f,0xff,0xb6,0x0c,0x00,0x0c,0x00,0x00,0xe5,0x32,0x51,0x90,0x01, +0xef,0xf4,0x04,0xf9,0x2f,0x20,0x00,0x7f,0xb6,0x01,0x21,0x00,0x03,0x5b,0x32,0x41, +0xaf,0xc4,0x1c,0xf2,0xc7,0x01,0x58,0x00,0x0c,0xf2,0x29,0xec,0xd5,0x0c,0xc0,0x0e, +0xff,0x18,0xdf,0xd7,0x00,0xef,0xfd,0xff,0xff,0xf7,0x0e,0xe2,0x01,0x3f,0xe0,0xef, +0xf6,0xa6,0x1c,0x1d,0x00,0x74,0x18,0x05,0x09,0x03,0x01,0x85,0x08,0x05,0xfb,0x15, +0x01,0x0b,0x00,0x0f,0x2d,0x1b,0x33,0x10,0x00,0x01,0x24,0x01,0x16,0x04,0x10,0xd0, +0xdd,0x03,0x2a,0xfe,0x10,0x0a,0x07,0x0f,0x66,0x00,0x36,0x21,0x4f,0xf9,0xda,0x0a, +0xef,0xef,0x80,0x00,0x00,0x4f,0xf5,0x1d,0xf8,0x00,0x00,0x44,0x30,0x01,0x44,0x66, +0x00,0x3d,0x41,0x0a,0xfc,0x41,0xbf,0xc4,0x0b,0x00,0x3b,0x18,0x3a,0x22,0x9e,0xc2, +0xd8,0x05,0x0f,0x66,0x00,0x35,0x11,0x8f,0x0c,0x0a,0x53,0xdf,0xf0,0x0a,0xff,0x30, +0x25,0x0a,0x0f,0x2c,0x01,0x3c,0x21,0x2d,0xf6,0xd3,0x14,0x11,0xfe,0xfa,0x05,0x11, +0xfa,0xfb,0x09,0x98,0x30,0x00,0x00,0x28,0x88,0x88,0x88,0x88,0x85,0x56,0x30,0x04, +0x79,0x00,0x26,0x02,0x30,0x2a,0x00,0x02,0x36,0x00,0x22,0x2d,0xf7,0x1a,0x00,0x21, +0x18,0x40,0x14,0x00,0x10,0x30,0x9c,0x00,0x16,0xed,0x9c,0x00,0xf0,0x0a,0x9f,0xff, +0xc0,0x0d,0xff,0x70,0x5f,0xff,0xf4,0x2f,0xff,0x00,0xdd,0x9f,0xf8,0x4f,0xfd,0x05, +0xf6,0x6f,0xfa,0x3f,0xfd,0x0d,0xd0,0x9c,0x00,0x20,0x6f,0x60,0x9c,0x00,0x11,0xfd, +0x9c,0x00,0x20,0xfd,0x9e,0xa9,0x29,0x01,0x9c,0x00,0x20,0x4f,0xdf,0x9c,0x00,0x11, +0xbf,0x57,0x00,0x12,0x75,0xa8,0x16,0x11,0xd0,0x13,0x07,0x11,0x80,0xae,0x0b,0x18, +0x20,0x9e,0x02,0x1f,0x0e,0xe8,0x02,0x13,0x12,0xdf,0x18,0x1c,0x20,0x60,0x02,0x62, +0x26,0x41,0x99,0xef,0xff,0x22,0x66,0x26,0x63,0x03,0xcf,0xfc,0x4c,0xff,0x20,0xf1, +0x30,0x02,0x92,0x19,0x28,0xcf,0xd1,0x96,0x02,0x0f,0x5e,0x00,0x31,0x01,0xe1,0x0c, +0xff,0x00,0x05,0xff,0xef,0x90,0x00,0x06,0xff,0x31,0xdf,0x90,0x00,0x22,0x10,0x00, +0x22,0x5e,0x00,0x36,0xa0,0x08,0xf9,0x00,0x5e,0xc0,0x00,0xef,0xf0,0x0a,0xff,0xc2, +0x08,0x13,0x2b,0xe2,0x2f,0x0f,0x27,0x1d,0x2f,0x00,0xa6,0x03,0x15,0xf3,0xb7,0x0a, +0x11,0x5f,0x26,0x02,0x15,0x46,0xac,0x10,0x0f,0x5b,0x1c,0x53,0x01,0xba,0x21,0x11, +0x0c,0x2a,0x11,0x0e,0x0b,0x00,0x00,0x92,0x23,0x01,0xe4,0x21,0x11,0x0c,0x92,0x23, +0x10,0xcf,0x92,0x23,0x10,0x5c,0xe6,0x26,0xe1,0xf8,0xcf,0xf5,0x00,0x07,0xff,0xac, +0xff,0x50,0x00,0x7f,0xfa,0xcf,0xf5,0x51,0x35,0xa1,0x70,0x01,0xef,0xf5,0xcf,0xff, +0xa9,0xef,0xfe,0x0c,0x19,0x0c,0x5e,0xcf,0xf6,0x9e,0xfc,0x40,0x58,0x00,0x06,0x0b, +0x00,0x02,0x6c,0x10,0x55,0x07,0xff,0x60,0x3f,0xfa,0x87,0x10,0x0f,0xf7,0x00,0x57, +0x01,0x67,0x14,0x00,0x26,0x00,0x48,0x3d,0xdd,0xdd,0xdd,0xe9,0x05,0x0f,0x26,0x19, +0x64,0x11,0xcf,0x8f,0x12,0x4f,0x9d,0xdd,0xdd,0xd8,0xbc,0x0a,0x42,0x00,0x62,0x37, +0x21,0x3f,0xf1,0x6c,0x00,0x22,0xdf,0xfb,0xf5,0x20,0x2f,0xd8,0x00,0xba,0x1a,0x6f, +0x30,0xbf,0x70,0x0a,0x33,0x37,0x30,0xd1,0x2e,0xf5,0x06,0x15,0x00,0x6b,0x01,0x3f, +0x01,0x8c,0xb7,0x50,0x0d,0x3f,0x0f,0xde,0x00,0x0c,0x12,0xfc,0xde,0x00,0x22,0xff, +0x3f,0xde,0x00,0x11,0xa0,0x82,0x21,0x00,0xe4,0x24,0x11,0xa0,0x8c,0x27,0x21,0x3f, +0xff,0xb4,0x12,0x20,0x00,0xef,0xde,0x00,0x00,0x03,0x2c,0x07,0xde,0x00,0x02,0x5c, +0x1f,0x21,0xff,0xf6,0x81,0x1f,0x10,0x6f,0x3b,0x02,0x13,0x3f,0xde,0x00,0x22,0xef, +0xf8,0x29,0x15,0x02,0xe3,0x1d,0x00,0xd8,0x38,0x01,0x39,0x02,0x13,0x51,0x94,0x04, +0x11,0xe0,0x08,0x00,0x20,0x4d,0xfc,0x21,0x3b,0x21,0xfc,0x70,0xe6,0x00,0x12,0xfb, +0xe6,0x00,0x37,0x50,0x0e,0xff,0xe6,0x00,0x30,0x28,0xbc,0xde,0x2a,0x0f,0x00,0x46, +0x10,0x37,0x0f,0xff,0x61,0xe6,0x00,0x45,0x97,0xaf,0xff,0xa0,0xe6,0x00,0x11,0x84, +0x50,0x00,0x21,0x0b,0xfb,0xc1,0x02,0x11,0xf1,0xb1,0x02,0x21,0xf1,0x10,0x15,0x10, +0x10,0x90,0xd3,0x00,0x21,0xee,0x80,0xbb,0x15,0x23,0x61,0x00,0x55,0x00,0x00,0x85, +0x01,0x12,0xfb,0x6d,0x03,0x17,0xc0,0x05,0x02,0x0f,0xf2,0x32,0x5b,0x10,0x00,0x30, +0x2e,0x00,0x09,0x09,0x01,0xe7,0x1d,0x14,0xf8,0x09,0x11,0x02,0x01,0x00,0x10,0x6c, +0x67,0x0d,0x01,0xc7,0x0c,0x30,0x7f,0xff,0xaa,0x19,0x26,0xa2,0x50,0x05,0xff,0xc2, +0xff,0xf0,0x00,0x08,0x87,0x4f,0x1b,0x31,0x13,0xd0,0x53,0x37,0x80,0x44,0x30,0xef, +0xf4,0x00,0x4f,0xfc,0x07,0x89,0x0d,0x21,0x60,0x0b,0x0f,0x01,0x31,0x06,0xcf,0xfc, +0xe7,0x01,0x22,0x68,0x40,0x7b,0x0a,0x02,0xc5,0x2b,0x20,0xc4,0xef,0xb1,0x1d,0x4f, +0x87,0x00,0x17,0x71,0xf1,0x00,0x67,0x20,0xaf,0xe3,0x05,0x00,0x20,0xef,0xe2,0xe9, +0x35,0x8f,0x6f,0xe2,0x00,0x14,0x41,0x00,0x34,0x30,0xf1,0x00,0x38,0x22,0xbf,0x80, +0x56,0x12,0x02,0x5c,0x02,0x2f,0xbe,0x80,0xdb,0x01,0x68,0x25,0x6f,0xc0,0x66,0x25, +0x18,0x6e,0x63,0x02,0x0f,0xea,0x00,0x32,0x50,0x06,0xbb,0x20,0x4b,0xb4,0xf0,0x00, +0x31,0xe6,0xff,0x90,0x4f,0x06,0x11,0xfa,0x5c,0x03,0x2a,0xde,0xb0,0xf1,0x00,0x12, +0x60,0xf1,0x00,0x20,0xfd,0x10,0xf1,0x00,0x10,0xcf,0x06,0x2d,0x10,0xf5,0x38,0x34, +0x01,0xf1,0x00,0x23,0xaf,0xf9,0x8a,0x13,0x0f,0xf1,0x00,0x0e,0x22,0x59,0x96,0xf1, +0x00,0x10,0xf7,0xf1,0x00,0x14,0x06,0xf1,0x00,0x11,0xa0,0xf1,0x00,0x14,0xfb,0xf1, +0x00,0xa0,0x02,0xef,0xa0,0x3f,0xf9,0x00,0x02,0xef,0xbf,0xf9,0xa4,0x2f,0x10,0xf9, +0x86,0x01,0x1f,0x55,0xf1,0x00,0x37,0x30,0x2e,0xf9,0x04,0xb3,0x13,0x21,0x1d,0xfb, +0x38,0x07,0x17,0x1c,0xce,0x18,0x0f,0x36,0x36,0x55,0x02,0xc4,0x26,0x22,0x2f,0xf1, +0x08,0x00,0x22,0x3f,0xf0,0x08,0x00,0x22,0x6f,0xd0,0x08,0x00,0x22,0xcf,0x60,0x08, +0x00,0x22,0x39,0x00,0x21,0x2b,0x23,0x00,0x00,0x18,0x27,0x12,0x00,0x25,0x2b,0x22, +0x00,0x00,0x27,0x2b,0x02,0xe6,0x00,0x00,0x08,0x00,0x02,0x2b,0x2b,0x02,0xc0,0x10, +0x08,0x18,0x00,0x02,0x31,0x2b,0x22,0x00,0x00,0x33,0x2b,0x06,0x48,0x00,0x03,0x37, +0x2b,0x0f,0x24,0x1c,0x67,0x05,0xca,0x27,0x22,0x0f,0xff,0x6c,0x41,0x00,0x65,0x03, +0x00,0xe4,0x0b,0x03,0x1a,0x00,0x63,0x01,0x9e,0xfc,0x3f,0xff,0x30,0xaf,0x00,0x62, +0x9f,0xff,0xba,0xff,0xff,0x30,0xf4,0x00,0x30,0x02,0xff,0xf0,0x34,0x00,0x02,0xf1, +0x00,0x30,0x04,0xff,0xd0,0x0d,0x00,0x03,0xee,0x00,0x20,0xff,0xf4,0x70,0x02,0x03, +0xeb,0x00,0x11,0x1d,0x0d,0x3d,0x04,0xe8,0x00,0x10,0xdf,0x07,0x12,0x65,0x0b,0xdd, +0xdd,0xdd,0x70,0x00,0xd0,0x20,0x13,0xfd,0xaf,0x1e,0x01,0x6d,0x1e,0x0d,0x83,0x1e, +0x43,0xd8,0x88,0x88,0x70,0xa4,0x1e,0x01,0xaf,0x1e,0x0f,0x4b,0x35,0x03,0x02,0xe6, +0x1e,0x05,0xb0,0x37,0x31,0xe0,0x00,0xdf,0xff,0x13,0x4a,0xad,0xdd,0xdd,0xd7,0xa5, +0x03,0x0f,0x31,0x11,0x35,0x90,0xdf,0x70,0x0d,0xf7,0x00,0x07,0xff,0xde,0xff,0x0c, +0x0d,0x2f,0xea,0x20,0xe6,0x1f,0x4c,0xa1,0xdf,0x60,0x0b,0xf8,0x00,0x00,0x9f,0xc1, +0x3f,0xf4,0x4f,0x08,0x00,0x3c,0x2f,0x2f,0x9c,0xb7,0x6b,0x12,0x3f,0x21,0x5e,0xd1, +0x0b,0x0a,0x10,0x50,0x0b,0x00,0x2f,0xc1,0x00,0xd4,0x00,0x4c,0x02,0x6e,0x00,0x01, +0x7c,0x27,0x07,0x6f,0x00,0x0f,0xd4,0x00,0x3c,0x0f,0xbe,0x00,0x0f,0x0d,0xbe,0x39, +0x01,0x71,0x02,0x0f,0xbe,0x00,0x0f,0x33,0x01,0xdf,0x90,0xf5,0x41,0x03,0x9f,0x08, +0x11,0x8f,0xbf,0x04,0x20,0xaf,0xe4,0xbd,0x2e,0x25,0xfd,0x70,0x97,0x3e,0x20,0xfc, +0xaf,0x97,0x3e,0x21,0xa0,0x04,0xcd,0x40,0x40,0x00,0xdf,0xf2,0x2f,0xc2,0x00,0x03, +0xbc,0x00,0x11,0x2f,0x06,0x00,0x02,0x10,0x24,0x10,0x0b,0xc2,0x00,0x00,0x30,0x00, +0x20,0x89,0xef,0xfd,0x32,0x00,0x01,0x0c,0x40,0x03,0xae,0xff,0xd4,0xe6,0x08,0x11, +0xfd,0x02,0x18,0x12,0xfa,0xbe,0x0b,0x01,0x34,0x23,0x20,0xbf,0xd3,0x5d,0x22,0x10, +0x2e,0xbb,0x28,0x30,0xce,0xf7,0x00,0xe8,0x3e,0x0f,0xae,0x01,0x4c,0xb0,0x01,0xdf, +0xb0,0x2e,0xfa,0x00,0x00,0x1d,0xfc,0xef,0xa0,0xfb,0x00,0x01,0x8c,0x00,0x1f,0x15, +0xed,0x14,0x40,0x22,0x05,0x85,0xcb,0x09,0x10,0xf7,0xec,0x00,0xa5,0xfd,0x4d,0xf8, +0x00,0x00,0x03,0x87,0x10,0x17,0x82,0x69,0x00,0x10,0x4a,0x74,0x2f,0x00,0xe6,0x00, +0x00,0x49,0x19,0x50,0xff,0xda,0xbf,0xff,0xd0,0xb5,0x1d,0x31,0x3f,0xff,0x58,0x1c, +0x39,0x10,0xfa,0xc5,0x18,0x31,0x01,0x22,0x2e,0xe7,0x36,0x00,0x87,0x04,0x60,0x26, +0x66,0x66,0x4f,0xff,0x40,0x2e,0x3b,0x20,0xef,0xf5,0x55,0x01,0x30,0xcc,0xff,0x80, +0x2e,0x3b,0x20,0x8f,0xfd,0x0f,0x0b,0x20,0xc2,0xff,0xa3,0x0b,0x91,0xfc,0x07,0xff, +0xfe,0xaa,0xdf,0xff,0xb0,0x08,0x7a,0x05,0x00,0x35,0x37,0x33,0xda,0x50,0x00,0xaa, +0x18,0x20,0x07,0xfe,0x4a,0x00,0x87,0x7f,0xe3,0x4f,0xf5,0x00,0x00,0x44,0x20,0xaa, +0x18,0x0f,0x5a,0x30,0x51,0xc0,0x00,0x18,0x70,0x00,0x88,0x10,0x00,0x01,0xff,0x40, +0x5f,0xf0,0xf9,0x01,0x01,0x4b,0x43,0x4f,0x07,0xdf,0xd7,0x00,0x0d,0x01,0x5e,0x40, +0xbf,0x80,0x09,0xfa,0xeb,0x02,0x00,0xec,0x0b,0xaf,0x1e,0xfe,0xef,0xe0,0x00,0x00, +0x02,0xbf,0xfa,0x10,0x0d,0x01,0x5b,0x32,0x00,0x0a,0xf9,0x68,0x0c,0x11,0xf0,0x07, +0x03,0x06,0xca,0x22,0x0f,0x48,0x3d,0x54,0x00,0x76,0x28,0x11,0xd2,0x62,0x03,0x25, +0xf7,0x00,0x0c,0x00,0x08,0xcf,0x0e,0x0f,0x06,0x01,0x52,0x0f,0xec,0x00,0x56,0x03, +0x01,0x00,0x21,0x5f,0xf0,0x50,0x0e,0x12,0xfe,0x5c,0x04,0x11,0xa0,0x3c,0x0a,0x02, +0x81,0x2c,0x12,0x25,0x21,0x00,0x11,0x50,0x8e,0x01,0x11,0xfa,0x63,0x0a,0x11,0xf6, +0xa5,0x0d,0x11,0xf3,0x38,0x00,0x11,0xf1,0x10,0x42,0x2f,0x80,0x00,0x25,0x02,0x5d, +0x02,0xf3,0x19,0x11,0xcf,0xc7,0x0f,0x45,0x1d,0xfa,0x03,0xef,0xa3,0x04,0x0f,0x07, +0x3f,0x5d,0x30,0x00,0x0b,0xfe,0x06,0x37,0x00,0xa5,0x0b,0xaf,0x0a,0xfd,0x1a,0xfc, +0x00,0x02,0x87,0x10,0x07,0x84,0x2e,0x34,0x4c,0x31,0x07,0xff,0xc0,0x78,0x45,0x0c, +0x08,0x00,0x01,0x12,0x2a,0x00,0xc0,0x40,0x76,0xff,0xfe,0xee,0xee,0xef,0xff,0xe8, +0x20,0x00,0x40,0xea,0xaa,0xaa,0xaf,0x08,0x00,0x01,0x01,0x00,0x07,0x08,0x00,0x0e, +0x48,0x00,0x0f,0x08,0x00,0x11,0x03,0x22,0x1f,0x02,0xe3,0x25,0x00,0x39,0x01,0x02, +0x00,0x23,0x00,0xb6,0x0d,0x04,0x1a,0x00,0x70,0x85,0xcf,0xe9,0x10,0x00,0x9f,0xfe, +0x1b,0x07,0x40,0x09,0xff,0xfc,0x9c,0x54,0x0a,0x10,0xfb,0xad,0x0a,0x30,0x09,0xff, +0x80,0x8e,0x34,0x20,0x9f,0xf8,0x98,0x34,0x0f,0x0d,0x00,0x15,0x40,0xfc,0x40,0xbf, +0x27,0xc9,0x06,0x4f,0xcf,0x21,0x9f,0xd3,0x0c,0x28,0x3a,0x60,0x01,0xbf,0xb3,0x1d, +0xf0,0x0a,0x1c,0x24,0x45,0x0f,0xe0,0x3b,0xfb,0xea,0x04,0x0f,0xf0,0x19,0x2b,0x00, +0xb1,0x23,0x45,0x6d,0xdd,0xdd,0xdc,0xa9,0x00,0x0f,0x04,0x00,0x27,0x00,0xa1,0x0b, +0x56,0xfc,0x8d,0xdd,0xdd,0xd9,0x30,0x0d,0x1f,0xf8,0x04,0x00,0x1a,0xcf,0x7f,0xd0, +0x07,0xfd,0x1f,0xfe,0xdf,0xf7,0x02,0xae,0xfc,0x60,0x90,0x00,0x32,0xff,0x00,0x90, +0x08,0xfb,0x6f,0xe2,0x2e,0xf7,0x0d,0xff,0xff,0xd0,0x01,0x8c,0xc8,0x10,0x94,0x00, +0x20,0x00,0x79,0x01,0x2f,0x6f,0xfd,0x05,0x00,0x0e,0xf1,0x00,0x7f,0xfd,0x1d,0xf9, +0x08,0xfc,0x00,0xbf,0xb1,0x08,0xff,0xf4,0x1a,0xfd,0x40,0x8b,0x47,0x51,0x08,0xff, +0x50,0x03,0x20,0xf9,0x36,0x3f,0x0a,0xff,0x70,0x05,0x00,0x03,0xff,0x08,0x0c,0xff, +0x73,0xef,0x70,0xbf,0x90,0x0e,0xf7,0x10,0xcf,0xff,0x12,0xcf,0xd1,0x1d,0xf5,0x5f, +0xfb,0x1c,0xe5,0x00,0x00,0xad,0x42,0x0d,0x2f,0x9f,0xf8,0x02,0x00,0x03,0x22,0x6f, +0xfd,0x47,0x0f,0x32,0x56,0xff,0xd0,0xef,0x11,0x0f,0x11,0x00,0x3c,0xf0,0x0c,0x1b, +0xbb,0x10,0x00,0xff,0xf4,0x6f,0xfd,0x00,0xff,0xf5,0x00,0x3f,0xff,0x16,0xff,0xd0, +0x0a,0xff,0xe8,0x7e,0xff,0xa0,0x6f,0xfd,0x00,0x1e,0xc0,0x4d,0x30,0x06,0xff,0xd0, +0xd2,0x4a,0xf4,0x07,0x70,0x00,0x5e,0xd3,0x00,0x8f,0xc1,0xcf,0xf9,0x00,0xff,0xf6, +0x8f,0xf5,0x00,0xbf,0xf2,0x03,0x20,0x00,0x03,0x10,0x04,0x38,0x2f,0xcf,0xf5,0x05, +0x00,0x24,0x03,0xe5,0x49,0x00,0x69,0x05,0x60,0x02,0x9c,0xff,0xf1,0x00,0x03,0x8c, +0x0a,0x22,0x02,0xef,0x79,0x08,0x26,0x78,0x20,0xf4,0x24,0x31,0x00,0xaf,0xda,0xc9, +0x4b,0x48,0xfe,0x10,0xaf,0xc0,0x72,0x15,0x1f,0xe0,0x07,0x00,0x34,0x21,0x7e,0xea, +0x42,0x3c,0x01,0xf0,0x43,0x00,0x5a,0x40,0x52,0xea,0xdf,0xff,0x40,0x00,0xf3,0x43, +0x00,0x87,0x23,0x01,0xc2,0x27,0x11,0x07,0xa2,0x09,0x10,0xff,0xb5,0x17,0x83,0x34, +0xff,0x40,0x05,0x52,0x00,0x35,0x40,0xf0,0x59,0x2f,0xff,0xb0,0x05,0x00,0x2b,0x00, +0x26,0x15,0x80,0x07,0x9f,0xff,0x60,0x00,0x0d,0xff,0xfd,0x70,0x1c,0x2f,0x91,0x00, +0x64,0x44,0x5e,0x32,0x00,0x00,0x08,0x93,0x48,0x22,0x1f,0xf2,0xc3,0x17,0x17,0xf0, +0x89,0x07,0x27,0x00,0x7e,0xde,0x17,0x0f,0xba,0x39,0x4b,0x02,0x87,0x00,0x11,0x01, +0x2a,0x18,0x01,0x24,0x11,0x29,0x08,0xfa,0x81,0x00,0x00,0xbf,0x03,0x30,0x0d,0xff, +0xf1,0x59,0x04,0x50,0xff,0x60,0x9f,0xf8,0x01,0x4a,0x43,0x80,0xf8,0x0a,0xff,0xf2, +0x00,0x9f,0xf8,0x4f,0x2b,0x42,0x01,0x42,0x13,0x11,0x9f,0xb8,0x01,0x11,0x9f,0x0e, +0x10,0x21,0x9f,0xf8,0x3a,0x01,0x20,0xf8,0x03,0x2a,0x00,0x00,0x36,0x00,0x20,0x70, +0x9f,0xb0,0x4c,0x12,0xf3,0x7e,0x0c,0x30,0x3f,0xfb,0x00,0x85,0x4d,0x00,0x73,0x00, +0x10,0x66,0xcf,0x02,0x0f,0x6b,0x45,0x45,0x80,0x00,0xcf,0xf7,0x06,0xff,0x90,0x1e, +0xfb,0xeb,0x24,0x2f,0xaf,0xf7,0x03,0x00,0x1e,0x0f,0x97,0x00,0x46,0x12,0x00,0x37, +0x31,0x15,0xf9,0xfb,0x14,0x22,0x0e,0xf4,0x34,0x4b,0x00,0x06,0x00,0x01,0x76,0x3f, +0x0f,0xe6,0x04,0x04,0x0e,0x05,0x00,0x01,0x82,0x50,0x81,0x4f,0xf0,0x07,0xfb,0x00, +0xdf,0x40,0x01,0xb5,0x43,0x70,0x8f,0xb0,0x09,0xff,0xa0,0x09,0xfa,0x0b,0x00,0x70, +0xcf,0x60,0x09,0xff,0xa0,0x2f,0xe0,0x0b,0x00,0x1f,0x44,0xb3,0x00,0x2b,0xf0,0x05, +0xaf,0xf7,0x0d,0xf6,0xaf,0xf7,0x0e,0xf5,0xaf,0xf7,0x1f,0xf1,0xaf,0xf7,0x8f,0xa0, +0xaf,0xf7,0x07,0x10,0x64,0x3f,0x0f,0x04,0x00,0x19,0x0f,0x7b,0x00,0x0b,0x20,0x3d, +0xd2,0x04,0x4b,0x00,0x02,0x08,0x3f,0xa0,0x4e,0xe2,0x9c,0x00,0x1c,0x0f,0x78,0x00, +0x09,0x62,0x2d,0xe4,0xaf,0xf7,0x7f,0xfa,0x08,0x00,0x0f,0x28,0x00,0x07,0x01,0x5b, +0x13,0x0f,0x06,0x00,0x09,0x11,0x42,0xbb,0x13,0x10,0xf4,0x9c,0x24,0x01,0x7d,0x1e, +0x01,0x18,0x00,0x1f,0x34,0x30,0x00,0x06,0x52,0xfa,0xaa,0xaa,0xa8,0x04,0x12,0x55, +0x03,0x06,0x00,0x10,0xd0,0x33,0x14,0x0c,0x07,0x00,0xde,0xd4,0x30,0x4f,0xff,0xf6, +0x6e,0xff,0xf8,0x1a,0xff,0xfd,0x00,0x24,0x23,0x00,0x02,0x07,0x00,0x04,0x53,0x41, +0x03,0xb4,0x52,0x00,0xb2,0x50,0x05,0x7d,0x29,0x0f,0xc5,0x47,0x5f,0x01,0x0c,0x1f, +0x12,0x02,0x0c,0x1f,0x1a,0xe1,0x0c,0x1f,0x0f,0x68,0x22,0x2e,0x0f,0xce,0x00,0x5f, +0x04,0x30,0x21,0x12,0xfe,0x53,0x06,0x12,0xfd,0x04,0x0a,0x02,0x87,0x27,0x22,0x0f, +0xf2,0xd3,0x20,0x00,0x7b,0x01,0x0f,0x53,0x3e,0x30,0x12,0x00,0x55,0x00,0x11,0xf4, +0xad,0x0f,0x14,0x30,0x69,0x05,0x02,0xd2,0x33,0x20,0x06,0x00,0x1f,0x17,0x40,0xfb, +0x03,0xef,0x90,0x57,0x01,0x35,0xbe,0xf7,0x00,0xa7,0x13,0x0f,0xce,0x31,0x63,0xa0, +0x09,0xfe,0x20,0xbf,0xe2,0x00,0x09,0xfe,0xcf,0xe2,0x8d,0x04,0x10,0xe2,0x22,0x01, +0x1f,0x51,0xe7,0x01,0x37,0x0e,0x6e,0x01,0x06,0x77,0x0e,0x28,0x05,0x80,0x67,0x00, +0x12,0x00,0x73,0x01,0x12,0x00,0x6a,0x00,0x12,0x00,0x76,0x01,0x03,0x18,0x21,0x0f, +0x07,0x00,0x1e,0x30,0xaf,0xfd,0x00,0x53,0x18,0x32,0xaf,0xff,0x70,0x07,0x00,0x12, +0xf1,0x07,0x00,0x12,0xfa,0x07,0x00,0x20,0xff,0x30,0x07,0x00,0x30,0xfd,0xff,0xc0, +0x07,0x00,0x31,0xf9,0xaf,0xf6,0x07,0x00,0x21,0x1f,0xfe,0x07,0x00,0x30,0x07,0xff, +0x82,0x07,0x00,0x31,0x00,0xdf,0xf4,0x07,0x00,0x21,0x5f,0xfd,0x07,0x00,0x21,0x0b, +0xff,0x07,0x00,0x12,0x02,0x07,0x00,0x22,0x00,0x9f,0x07,0x00,0x12,0x1e,0x07,0x00, +0x03,0x5e,0x02,0x12,0x02,0x07,0x00,0x11,0x05,0x17,0x04,0x10,0x06,0x81,0x1d,0x01, +0xde,0x0f,0x11,0x30,0x04,0x13,0xe0,0xb3,0x00,0xdf,0xf1,0x6d,0xfd,0x70,0x0d,0xff, +0xaf,0xff,0xff,0x70,0xdf,0x57,0x02,0x11,0x0d,0xc6,0x21,0x60,0xdf,0xf4,0x00,0x0e, +0xff,0x3d,0xf2,0x47,0x11,0xf4,0x0b,0x00,0x1f,0x4d,0x0b,0x00,0x08,0x05,0x64,0x0e, +0x00,0x62,0x02,0x30,0x29,0xcf,0xfe,0xa7,0x04,0x00,0x20,0x1a,0x31,0x4e,0xfc,0x50, +0xfb,0x54,0x01,0x1b,0x47,0x4f,0x1d,0xdd,0xdd,0xdd,0x49,0x32,0x70,0x11,0x8f,0x58, +0x15,0x4f,0x6d,0xdd,0xdd,0xdb,0x0e,0x25,0x42,0x00,0x4a,0x13,0x21,0x1f,0xf3,0xbd, +0x0a,0x01,0x9c,0x09,0x00,0x56,0x27,0x1f,0x10,0x13,0x32,0x6f,0x40,0x7f,0xb0,0x06, +0xfe,0x37,0x11,0x20,0x1c,0xfa,0xd4,0x03,0x01,0x4d,0x03,0x3f,0x6b,0xc9,0x20,0x3c, +0x27,0x3f,0x50,0x34,0x40,0x24,0x40,0x00,0xa3,0x59,0x20,0x2f,0xf9,0x5b,0x1c,0x31, +0xfb,0x0c,0xfb,0xda,0x11,0x2f,0x18,0xfd,0xe1,0x34,0x71,0xd0,0x6f,0xf4,0x4f,0xf7, +0x00,0x01,0xef,0x81,0xef,0x90,0x00,0x0a,0xfc,0x4f,0x17,0x4f,0x04,0x41,0x04,0x40, +0x04,0x01,0x3d,0x32,0x05,0xbe,0xff,0xcd,0x11,0x33,0x01,0xbf,0xff,0x0a,0x00,0xd3, +0x0b,0xff,0xfb,0x99,0xcf,0xff,0xdd,0xdd,0xdd,0xd1,0x5f,0xff,0x30,0xc7,0x28,0x20, +0xbf,0xf8,0x48,0x53,0x04,0x55,0x0b,0x12,0x5f,0x09,0x1b,0x10,0xf2,0xf9,0x0b,0x33, +0x88,0x88,0x88,0x0a,0x00,0x00,0x24,0x21,0x0b,0x0a,0x00,0x13,0xfe,0x3a,0x25,0x04, +0x46,0x00,0x14,0xf6,0x0a,0x00,0x33,0x5f,0xfe,0x10,0x0a,0x00,0x50,0x0b,0xff,0xe7, +0x55,0x9f,0x8b,0x49,0x16,0xa1,0x82,0x00,0x06,0x96,0x00,0x00,0xc7,0x50,0x51,0x91, +0x04,0xbf,0xfd,0x70,0xff,0x23,0x23,0xfe,0xaf,0x3f,0x18,0x22,0x9d,0xff,0xda,0x56, +0x00,0xbf,0x5c,0x70,0xff,0x80,0x04,0xff,0xc0,0x0f,0xff,0xbf,0x55,0x40,0x42,0x23, +0xff,0xf0,0xfa,0x29,0x01,0xb1,0x21,0x07,0x0a,0x00,0x00,0x8f,0x29,0x12,0x6f,0xd3, +0x23,0x00,0xb8,0x22,0x00,0x27,0x1d,0x20,0x00,0x04,0x48,0x13,0x00,0x8b,0x2d,0x11, +0x40,0x85,0x10,0x11,0x9f,0x55,0x1d,0x86,0x04,0xbe,0xfe,0x92,0x04,0xbe,0xfe,0xb6, +0xbd,0x3f,0x26,0xdf,0xf2,0xbb,0x3f,0x01,0x21,0x27,0x0f,0x24,0x4e,0x56,0x70,0x04, +0xff,0xd1,0x00,0x0d,0xfe,0x20,0x59,0x3a,0x33,0x00,0x56,0x30,0xd1,0x0c,0xd1,0xbf, +0xc0,0xdf,0xfe,0xff,0xb0,0xdf,0xff,0xfe,0xa0,0xdf,0xfb,0x10,0x8c,0x01,0x0f,0x04, +0x00,0x09,0x0f,0xac,0x00,0x56,0x04,0xd1,0x14,0x17,0xfb,0x8b,0x0d,0x21,0x0d,0xf6, +0xcd,0x05,0x12,0xfe,0x45,0x03,0x04,0xfa,0x20,0x00,0x17,0x45,0xb1,0x0d,0xff,0xef, +0xfb,0x0d,0xff,0xff,0xea,0x0d,0xff,0xb1,0x94,0x0d,0x0f,0x04,0x00,0x09,0x02,0x0a, +0x06,0x02,0xf9,0x06,0x00,0xf6,0x06,0x21,0x0e,0xf2,0x5e,0x08,0x00,0xb9,0x40,0x20, +0x8f,0xf4,0xc9,0x0b,0x21,0xbf,0xe3,0xce,0x40,0x18,0xd1,0x26,0x1f,0x0f,0xf5,0x00, +0x52,0x70,0x5f,0xf5,0x08,0xff,0x40,0x5f,0xfb,0x23,0x03,0x00,0xae,0x4f,0x35,0x23, +0x10,0x00,0xa4,0x01,0x00,0xe1,0x00,0x10,0x00,0xa5,0x01,0x00,0xe2,0x00,0x01,0x8a, +0x01,0x01,0xcb,0x00,0x0f,0x09,0x00,0x08,0x00,0xc4,0x00,0x26,0x66,0x40,0x4c,0x36, +0x21,0x9f,0xf5,0xe6,0x33,0x16,0xf7,0x87,0x04,0x11,0x29,0xc1,0x29,0x00,0xab,0x02, +0x00,0x73,0x5b,0xb0,0xea,0xae,0xff,0xf1,0x0a,0xff,0xc0,0x00,0x1e,0xff,0x80,0x9b, +0x03,0x41,0x7d,0xd8,0x09,0xff,0x9b,0x40,0x11,0x2e,0x6d,0x3e,0x00,0x0b,0x35,0x31, +0xf9,0x10,0x00,0x94,0x30,0x00,0x55,0x00,0x60,0x39,0xff,0xff,0x20,0x22,0x20,0x60, +0x50,0x30,0x2f,0xff,0x10,0x8e,0x0a,0x20,0xef,0xf8,0xe3,0x44,0x20,0x07,0xff,0x44, +0x20,0x21,0x40,0x08,0x51,0x20,0x00,0x94,0x50,0x12,0xea,0x82,0x00,0x01,0xfb,0x5b, +0x20,0xf5,0x00,0xfa,0x5b,0x06,0x46,0x43,0x24,0x00,0x00,0x6b,0x46,0x00,0x45,0x1e, +0x50,0xdf,0xf9,0x47,0xff,0xf3,0xd9,0x33,0x51,0xcc,0x50,0xdf,0xfb,0x40,0x41,0x07, +0x61,0xfc,0x60,0x00,0x02,0x9e,0xff,0xf6,0x29,0xe0,0x7f,0xff,0x44,0xee,0x90,0x00, +0x9f,0xf7,0x1f,0xff,0x84,0x5e,0xff,0x40,0x10,0x04,0x11,0xa0,0xe4,0x46,0x00,0x5e, +0x00,0x21,0x77,0x00,0x80,0x30,0x11,0xfc,0x93,0x16,0x21,0xbc,0xfb,0x96,0x24,0x2f, +0x1c,0xf9,0xe7,0x00,0x5f,0x20,0xbf,0xe2,0x05,0x00,0x00,0x9e,0x23,0x40,0xbf,0xc1, +0x7f,0xe2,0x0c,0x2f,0x2f,0x34,0x30,0xe7,0x00,0x36,0x0f,0xe0,0x51,0x50,0x11,0xef, +0xe6,0x36,0x12,0x04,0x5f,0x2e,0x12,0x28,0xec,0x35,0x21,0x1f,0xf9,0xa7,0x3b,0x11, +0xff,0xc7,0x01,0x29,0xec,0x50,0x5a,0x48,0x1f,0x0c,0x5a,0x48,0x03,0x12,0x2a,0x78, +0x07,0x15,0x38,0x5a,0x48,0x25,0xf7,0x35,0x5a,0x48,0x11,0xaf,0x9f,0x00,0x20,0x9f, +0xe3,0x83,0x03,0x24,0xcf,0xf2,0x2b,0x53,0x11,0x05,0x19,0x05,0x20,0x6e,0xa3,0x4e, +0x05,0xa1,0xfc,0x11,0xdf,0xb0,0x00,0x00,0x0b,0xfd,0xdf,0xa0,0x43,0x08,0x11,0xa0, +0x3f,0x01,0x2e,0x20,0x00,0x01,0x01,0x13,0xff,0x01,0x01,0x40,0xf7,0x0b,0xff,0x80, +0x45,0x12,0x0f,0x01,0x01,0x0d,0x2f,0x01,0x11,0xe1,0x52,0x12,0x50,0x02,0xef,0x90, +0x4f,0xf8,0x8a,0x23,0x00,0x14,0x1d,0x02,0x0d,0x2a,0x1f,0x54,0xae,0x02,0x37,0x0f, +0x3f,0x53,0x58,0x12,0x0e,0x07,0x00,0x31,0x08,0xfe,0x40,0xf1,0x04,0x22,0xbf,0xf3, +0xdb,0x12,0x12,0xf6,0xf6,0x13,0x11,0xf2,0x15,0x00,0x7f,0xeb,0x30,0x00,0x00,0x01, +0x88,0x70,0xe9,0x49,0x23,0xa0,0x1c,0xff,0xd0,0x00,0x0a,0xfe,0x50,0x00,0x04,0xbf, +0x98,0x07,0x00,0xdc,0x24,0x50,0xe1,0x00,0x06,0xea,0x20,0x10,0x1a,0x20,0xff,0x80, +0x8b,0x03,0x2d,0xbf,0xf6,0x41,0x0d,0x0f,0x3e,0x54,0x5c,0x00,0xf1,0x2e,0x00,0x96, +0x09,0x01,0x79,0x24,0x10,0x4f,0x21,0x19,0x00,0xfc,0x5c,0x30,0xe0,0x8e,0x10,0xcd, +0x00,0x01,0xd2,0x00,0x01,0xf3,0x00,0x02,0x05,0x00,0x00,0xf5,0x00,0x02,0x14,0x00, +0x0e,0x05,0x00,0x02,0xf5,0x4f,0x02,0xfc,0x00,0x01,0x76,0x10,0x00,0xe7,0x4a,0x0f, +0xcf,0x00,0x19,0x12,0x2f,0x9b,0x14,0x03,0x07,0x00,0x0f,0xcf,0x00,0x25,0x23,0x3f, +0xfe,0x8e,0x00,0x22,0x3f,0xfe,0xba,0x00,0x10,0x0e,0xcc,0x0b,0x00,0xb9,0x00,0x00, +0x12,0x00,0x10,0x05,0x3d,0x24,0x10,0x5f,0x1d,0x2e,0x05,0x24,0x00,0x01,0xb6,0x00, +0x31,0x0f,0xff,0xba,0xb5,0x00,0x00,0xff,0x64,0x00,0x13,0x31,0x20,0x40,0xbf,0x62, +0x49,0x01,0xe7,0x58,0x4f,0xcf,0x21,0x9f,0xc2,0xc6,0x3a,0x5e,0x60,0xaf,0xb4,0x1c, +0xf1,0x00,0x8f,0xad,0x14,0x3b,0x0c,0xf2,0x2a,0x25,0x33,0x0f,0xc9,0x2f,0x2f,0x11, +0x7f,0xdf,0x0c,0x5f,0x06,0xdd,0xdd,0xdd,0xb0,0x22,0x3c,0x5d,0x02,0x86,0x1b,0x1b, +0x7d,0x5a,0x0d,0x0f,0xe7,0x2f,0x30,0x00,0x48,0x1a,0x00,0x07,0x0c,0x10,0xed,0x89, +0x00,0x05,0x4d,0x1a,0x0f,0xb4,0x01,0x57,0x00,0x87,0x09,0x20,0x6f,0xd0,0x3e,0x0d, +0x00,0x0b,0x23,0x01,0xda,0x55,0x3f,0x7b,0xc9,0x10,0xdb,0x31,0x38,0x21,0x4c,0xd8, +0x96,0x11,0x20,0x62,0xd7,0x67,0x06,0x31,0xf3,0x0c,0x80,0x72,0x18,0x1f,0xc1,0x6c, +0x3e,0x5f,0x20,0x04,0xcd,0xba,0x04,0x80,0xf5,0x3e,0x60,0x00,0x00,0x2f,0x20,0xd7, +0x37,0x0e,0x05,0x54,0x33,0x0f,0xb3,0x31,0x36,0x40,0x04,0x42,0x04,0x43,0x2c,0x02, +0x70,0x27,0xff,0x40,0x00,0x02,0xff,0x53,0x10,0x04,0x4f,0xcf,0x90,0xdf,0x70,0xec, +0x00,0x5d,0x00,0xca,0x19,0x00,0x8a,0x50,0xdf,0x71,0xef,0x80,0x00,0xaf,0xb0,0xcf, +0xa0,0x00,0x04,0x41,0x14,0x40,0xd3,0x01,0x36,0x0f,0x99,0x02,0x47,0x11,0x80,0x99, +0x02,0x10,0xc0,0x99,0x02,0x02,0x82,0x15,0x21,0xef,0x80,0xa9,0x08,0x12,0xf5,0xbe, +0x68,0x11,0xfe,0xf9,0x0a,0x2f,0xce,0xb0,0xab,0x01,0x2d,0x11,0xb3,0xa7,0x0d,0x33, +0x8f,0xe4,0x00,0x2d,0x68,0x31,0x01,0xff,0x41,0x1a,0x01,0x10,0xd0,0x76,0x2f,0x02, +0x15,0x02,0x01,0x28,0x0c,0x06,0x08,0x21,0x00,0x09,0x4d,0x38,0x90,0x4f,0xf5,0x2f, +0x02,0x0f,0xde,0x59,0x85,0x00,0x0b,0x10,0x22,0xf7,0x00,0x4d,0x38,0x21,0xef,0x70, +0xaa,0x00,0x21,0xe3,0x2d,0x03,0x15,0x06,0xf7,0x34,0x01,0xb0,0x07,0x0f,0x45,0x51, +0x4b,0x00,0x63,0x00,0x26,0x11,0x00,0x25,0x08,0x12,0x01,0x74,0x15,0x45,0x1c,0xe9, +0x02,0xce,0xe2,0x04,0x0f,0xd8,0x40,0x5c,0x00,0x85,0x00,0x10,0xd2,0xac,0x13,0xff, +0x00,0xfd,0xfe,0x20,0x00,0x01,0xdf,0xa0,0x7f,0xe2,0x00,0x01,0x22,0x00,0x02,0x21, +0x5c,0x34,0x5a,0x00,0xcc,0x34,0x33,0x6b,0x40,0x00,0x70,0x4a,0x6f,0x00,0x0c,0xe4, +0x00,0x9f,0x80,0x10,0x01,0x66,0x02,0xc7,0x2e,0x00,0x63,0x13,0x16,0x70,0x9f,0x66, +0x2f,0x36,0x50,0x43,0x5b,0x57,0x00,0x7c,0x03,0x10,0xf3,0xc0,0x00,0x14,0xf4,0xe4, +0x36,0x24,0x04,0x64,0x0e,0x01,0x01,0xf3,0x28,0x02,0xdd,0x52,0x20,0x88,0x88,0x4e, +0x03,0x02,0x73,0x00,0x02,0x41,0x10,0x21,0xdf,0xfa,0x89,0x29,0x01,0x36,0x4e,0x10, +0x30,0xfd,0x0b,0x10,0x70,0x73,0x00,0x41,0xf8,0x88,0x88,0x33,0xb1,0x1a,0x22,0x3f, +0xff,0xb1,0x49,0x35,0x06,0xfc,0x10,0x71,0x69,0x25,0x00,0x06,0xd5,0x43,0x0f,0xe0, +0x00,0x58,0x12,0x8f,0x2e,0x5e,0x00,0x39,0x00,0x1a,0x8e,0x47,0x41,0x0f,0xe0,0x00, +0x30,0x03,0x8f,0x0b,0x23,0x1c,0xfb,0xb8,0x00,0x1f,0x50,0xe0,0x00,0x5d,0xa0,0x03, +0xef,0x80,0x5f,0xf6,0x00,0x03,0xef,0xbf,0xf6,0x9f,0x0d,0x01,0x4c,0x05,0x1f,0x32, +0xe0,0x00,0x37,0xa0,0x01,0x9e,0xfe,0x21,0xef,0xff,0xf1,0x7f,0xff,0xa9,0x08,0x0e, +0x21,0xbf,0xf5,0x3b,0x37,0x1f,0xcf,0x07,0x00,0x12,0xf1,0x05,0x00,0x00,0x55,0x00, +0x1e,0xff,0xd1,0x7f,0xff,0xf7,0x8f,0xff,0xf8,0x5f,0xff,0xf5,0x08,0xee,0x80,0x72, +0x44,0x06,0x10,0xc6,0xd5,0x5e,0x00,0x41,0x6a,0x20,0x27,0xcf,0x67,0x1c,0xf0,0x05, +0x01,0x6b,0xff,0xf6,0x00,0x02,0x7c,0xff,0xf6,0x27,0xdf,0xff,0xfd,0x71,0xef,0xff, +0xf9,0x30,0x00,0xef,0x65,0x0e,0x11,0x71,0x2d,0x00,0x00,0xdd,0x17,0x01,0x05,0x00, +0x22,0x89,0x99,0x8f,0x50,0x06,0x01,0x00,0x2f,0xf6,0x00,0x01,0x00,0x06,0x13,0xfa, +0x08,0x00,0x17,0xeb,0x14,0x00,0x70,0xf7,0xf6,0x00,0xfd,0xf0,0x00,0xf0,0x4d,0x01, +0x0f,0x35,0x00,0x03,0x4f,0x03,0x07,0x00,0x04,0x19,0x00,0x02,0x2f,0xcf,0x00,0x01, 0x00,0x18,0x1f,0xd5,0x21,0x00,0x0d,0x03,0x94,0x00,0xb1,0xf2,0x00,0xfc,0x00,0x00, 0xeb,0xfd,0xf3,0xf9,0x00,0xe6,0x10,0x00,0x8f,0xf8,0xfe,0x00,0x00,0xfd,0xfe,0xf7, -0xfa,0x9e,0x00,0x01,0x10,0xfb,0x2c,0x00,0x1f,0xf7,0x50,0x00,0x04,0x06,0x36,0x7d, -0x03,0x75,0x16,0x19,0xfe,0x1f,0x00,0x19,0xfd,0x79,0x00,0x00,0x2d,0x00,0x7e,0xf1, +0xfa,0x9e,0x00,0x01,0x10,0xfb,0x2c,0x00,0x1f,0xf7,0x50,0x00,0x04,0x06,0x7b,0x4c, +0x03,0x4d,0x09,0x19,0xfe,0x1f,0x00,0x19,0xfd,0x79,0x00,0x00,0x2d,0x00,0x7e,0xf1, 0x00,0xfc,0x00,0xfc,0xf9,0xfc,0x33,0x01,0x0b,0x0f,0x01,0x05,0x42,0x00,0x11,0xfd, -0x45,0x00,0x29,0xfd,0xfc,0x33,0x00,0x10,0xd1,0xda,0x12,0x25,0x00,0xdc,0x27,0x00, -0x53,0xfa,0xfc,0x00,0x00,0xfc,0x04,0x00,0x0e,0x4a,0x00,0x01,0x9c,0x00,0x04,0x7e, -0x8e,0x0f,0xc9,0x00,0x0e,0x0f,0x01,0x00,0x07,0x16,0xe4,0xe7,0x00,0x04,0x34,0x00, +0x45,0x00,0x29,0xfd,0xfc,0x33,0x00,0x10,0xd1,0x43,0x02,0x25,0x00,0xdc,0x27,0x00, +0x53,0xfa,0xfc,0x00,0x00,0xfc,0x04,0x00,0x1e,0x00,0x4a,0x00,0x01,0x2c,0x18,0x0a, +0xee,0x09,0x0e,0xc9,0x00,0x0f,0x01,0x00,0x0f,0x16,0xe4,0xe7,0x00,0x04,0x34,0x00, 0x10,0xfb,0x07,0x00,0x2c,0xf9,0xf5,0xad,0x01,0xa6,0x03,0xf5,0x00,0x00,0xdd,0xfc, 0xdd,0xf0,0x00,0xd0,0x2e,0x00,0x29,0xfe,0xeb,0x45,0x01,0x72,0xbb,0x00,0x00,0x00, 0xe1,0x00,0xe0,0x1e,0x02,0x51,0x00,0xfa,0x00,0xfe,0xfe,0x3d,0x01,0x12,0x02,0xd4, 0x00,0x1e,0xcd,0x55,0x02,0x2e,0xfb,0xfd,0x27,0x01,0x0d,0x01,0x00,0x10,0xf7,0x2e, -0x01,0x1f,0xf8,0xb1,0x02,0x06,0xc0,0xd4,0xd1,0x00,0x00,0xeb,0xfb,0xdb,0xfd,0x03, -0x00,0x03,0x03,0x69,0x00,0xf2,0x02,0xe3,0xf1,0x00,0xf1,0xdc,0xf5,0xf3,0x00,0xf5, -0xf2,0xf8,0xf3,0xf6,0x00,0xe0,0xf2,0xf0,0x32,0x01,0x66,0xdb,0xe5,0x00,0x00,0xf3, -0xfe,0x43,0x01,0xa7,0xf8,0xf8,0x00,0x00,0xf8,0xfb,0x00,0x00,0xfb,0xfe,0x9b,0x01, -0x76,0x03,0x00,0xe7,0xf6,0x00,0x00,0xf9,0xd3,0x02,0x20,0x02,0xfa,0x23,0x00,0x13, -0xfc,0xf6,0x01,0x07,0x4a,0x02,0x14,0xe5,0x60,0x01,0x15,0x02,0x38,0x01,0x10,0xfc, -0x07,0x00,0x17,0xfb,0x65,0x02,0xf6,0x14,0x03,0xf8,0xd8,0xe6,0x00,0x00,0xe6,0xfb, -0xf0,0xfd,0x03,0xf0,0x03,0x03,0x02,0x03,0x00,0x03,0xf5,0xf5,0xfc,0xf9,0xf5,0xf9, -0xf6,0xfc,0xf9,0xfd,0x00,0xfc,0xfb,0x03,0xf0,0xf5,0xf5,0xd7,0x00,0x03,0x26,0x89, -0x09,0x4e,0x00,0x2e,0xfd,0xfb,0xe1,0x01,0x00,0x8a,0x00,0x1e,0xfd,0x2c,0x01,0x0d, -0x9d,0x02,0x0f,0x1d,0x00,0x0a,0x0f,0x38,0x02,0x0a,0x10,0xfe,0xa1,0x02,0x0e,0xf9, -0x02,0x0f,0x31,0x00,0x09,0x0f,0x1d,0x00,0x12,0x01,0x9e,0x01,0x0c,0xc9,0x02,0x1d, -0xfc,0x21,0x03,0x2f,0xf2,0x00,0x01,0x00,0x27,0x0e,0xff,0x00,0x1f,0xf1,0x2f,0x00, -0x0b,0x26,0xfc,0xfd,0x7b,0x00,0x1c,0xe2,0x25,0x04,0x30,0xfd,0x03,0x00,0x0e,0xa5, -0x2d,0x00,0x03,0xb8,0x00,0x0e,0x50,0x04,0x0d,0xa0,0x03,0x1c,0xe3,0x6c,0x00,0x2f, -0xfe,0x02,0x9e,0x01,0x01,0x1f,0xeb,0xea,0x00,0x27,0x1f,0xf9,0x27,0x00,0x13,0x1f, -0xfd,0x1c,0x00,0x21,0x00,0x2a,0x31,0x01,0x96,0x02,0x11,0x03,0x82,0x0b,0x2d,0x04, -0x05,0x21,0x00,0xf0,0x00,0x06,0x07,0x08,0x09,0x0a,0x0b,0x00,0x0c,0x0c,0x0d,0x0e, -0x0f,0x0c,0x0c,0x09,0x0e,0xb8,0x81,0x13,0x0d,0x14,0x15,0x16,0x17,0x18,0x19,0x20, -0x00,0x80,0x1a,0x1b,0x1c,0x00,0x1d,0x1e,0x00,0x1f,0xa9,0x1a,0xff,0x00,0x1f,0x1f, -0x21,0x1b,0x00,0x22,0x00,0x23,0x00,0x24,0x25,0x26,0x24,0x27,0x28,0x73,0x00,0x04, -0x11,0x06,0x01,0x00,0xd0,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0c,0x0c,0x0c,0x0c,0x09, -0x0c,0x09,0x01,0x00,0xa1,0x00,0x00,0x0d,0x0d,0x0d,0x0d,0x17,0x00,0x00,0x1a,0x01, -0x00,0x62,0x00,0x1c,0x1d,0x1d,0x1d,0x1d,0x52,0x0c,0x10,0x21,0x01,0x00,0x03,0x52, -0xae,0x40,0x1b,0x24,0x06,0x1a,0x02,0x00,0x22,0x08,0x1c,0x02,0x00,0x64,0x09,0x00, -0x09,0x00,0x0a,0x1d,0x02,0x00,0x05,0xc0,0x1b,0x44,0x1f,0x00,0x00,0x0c,0x02,0x00, -0x00,0x41,0x11,0x53,0x00,0x0e,0x00,0x00,0x0f,0x02,0x00,0x00,0x1f,0x00,0x00,0x02, -0x00,0x50,0x1f,0x00,0x00,0x09,0x21,0x02,0x00,0x01,0xda,0x97,0x16,0x22,0x1d,0x3d, -0x11,0x13,0x02,0x00,0x17,0x0d,0x02,0x00,0x70,0x15,0x00,0x17,0x24,0x17,0x18,0x27, -0x02,0x00,0x0f,0xb7,0x02,0x28,0x07,0x72,0x01,0x20,0x03,0x02,0x6d,0x01,0x4a,0x06, -0x07,0x06,0x08,0x1f,0x00,0x00,0xce,0x00,0x20,0x00,0x0b,0x0f,0x12,0x00,0xc1,0x00, -0x01,0x08,0x00,0x80,0x0b,0x00,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x58,0xba,0x11,0x15, -0xde,0x35,0x52,0x17,0x17,0x17,0x18,0x17,0xba,0x9d,0xe1,0x19,0x1a,0x19,0x17,0x1b, -0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1f,0x22,0x00,0xce,0xb4,0x0e,0x01,0x00,0x11,0x0a, -0x01,0x00,0x27,0x24,0x0b,0x6d,0x12,0x10,0x0b,0x8f,0xbf,0x31,0x0b,0x0f,0x0f,0xee, -0xbb,0x11,0x16,0x01,0x00,0x20,0x25,0x17,0x01,0x00,0x02,0x57,0x00,0x02,0x83,0x01, +0x01,0x1e,0xf8,0x1a,0x00,0x03,0xb1,0x02,0xc0,0xd4,0xd1,0x00,0x00,0xeb,0xfb,0xdb, +0xfd,0x03,0x00,0x03,0x03,0x69,0x00,0xf2,0x02,0xe3,0xf1,0x00,0xf1,0xdc,0xf5,0xf3, +0x00,0xf5,0xf2,0xf8,0xf3,0xf6,0x00,0xe0,0xf2,0xf0,0x32,0x01,0x66,0xdb,0xe5,0x00, +0x00,0xf3,0xfe,0x43,0x01,0xa7,0xf8,0xf8,0x00,0x00,0xf8,0xfb,0x00,0x00,0xfb,0xfe, +0x9b,0x01,0x76,0x03,0x00,0xe7,0xf6,0x00,0x00,0xf9,0xd3,0x02,0x20,0x02,0xfa,0x23, +0x00,0x13,0xfc,0xf6,0x01,0x07,0x4a,0x02,0x14,0xe5,0x60,0x01,0x15,0x02,0x38,0x01, +0x10,0xfc,0x07,0x00,0x17,0xfb,0x65,0x02,0xf6,0x14,0x03,0xf8,0xd8,0xe6,0x00,0x00, +0xe6,0xfb,0xf0,0xfd,0x03,0xf0,0x03,0x03,0x02,0x03,0x00,0x03,0xf5,0xf5,0xfc,0xf9, +0xf5,0xf9,0xf6,0xfc,0xf9,0xfd,0x00,0xfc,0xfb,0x03,0xf0,0xf5,0xf5,0xd7,0x00,0x18, +0x02,0xae,0x01,0x03,0x4e,0x00,0x2e,0xfd,0xfb,0xe1,0x01,0x00,0x8a,0x00,0x1e,0xfd, +0x2c,0x01,0x0d,0x9d,0x02,0x0f,0x1d,0x00,0x0a,0x0f,0x38,0x02,0x0a,0x10,0xfe,0xa1, +0x02,0x0e,0xf9,0x02,0x0f,0x31,0x00,0x09,0x0f,0x1d,0x00,0x12,0x01,0x9e,0x01,0x0c, +0xc9,0x02,0x1d,0xfc,0x21,0x03,0x2f,0xf2,0x00,0x01,0x00,0x27,0x0e,0xff,0x00,0x1f, +0xf1,0x2f,0x00,0x0b,0x26,0xfc,0xfd,0x7b,0x00,0x1c,0xe2,0x25,0x04,0x30,0xfd,0x03, +0x00,0x38,0x67,0x2d,0x00,0x03,0xb8,0x00,0x0e,0x50,0x04,0x0d,0xa0,0x03,0x1c,0xe3, +0x6c,0x00,0x2f,0xfe,0x02,0x9e,0x01,0x01,0x1f,0xeb,0xea,0x00,0x27,0x1f,0xf9,0x27, +0x00,0x13,0x1f,0xfd,0x1c,0x00,0x21,0x22,0x00,0x01,0xd9,0x02,0x20,0x02,0x03,0xc0, +0x08,0x3d,0x00,0x04,0x05,0x21,0x00,0xf1,0x0c,0x06,0x07,0x08,0x09,0x0a,0x0b,0x00, +0x0c,0x0c,0x0d,0x0e,0x0f,0x0c,0x0c,0x09,0x10,0x11,0x12,0x00,0x13,0x0d,0x14,0x15, +0x16,0x17,0x18,0x19,0x20,0x00,0xf1,0x0c,0x1a,0x1b,0x1c,0x00,0x1d,0x1e,0x00,0x1f, +0x00,0x00,0x20,0x00,0x1f,0x1f,0x21,0x1b,0x00,0x22,0x00,0x23,0x00,0x24,0x25,0x26, +0x24,0x27,0x28,0x3f,0x00,0x01,0x01,0x00,0xd0,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0c, +0x0c,0x0c,0x0c,0x09,0x0c,0x09,0x01,0x00,0xa1,0x00,0x00,0x0d,0x0d,0x0d,0x0d,0x17, +0x00,0x00,0x1a,0x01,0x00,0x62,0x00,0x1c,0x1d,0x1d,0x1d,0x1d,0xec,0x26,0x10,0x21, +0x01,0x00,0x03,0x69,0x70,0x40,0x1b,0x24,0x06,0x1a,0x02,0x00,0x22,0x08,0x1c,0x02, +0x00,0x64,0x09,0x00,0x09,0x00,0x0a,0x1d,0x02,0x00,0x05,0x88,0x0f,0x44,0x1f,0x00, +0x00,0x0c,0x02,0x00,0x00,0x21,0x0a,0x53,0x00,0x0e,0x00,0x00,0x0f,0x02,0x00,0x00, +0x1f,0x00,0x00,0x02,0x00,0x50,0x1f,0x00,0x00,0x09,0x21,0x02,0x00,0x00,0x4e,0x0c, +0x26,0x00,0x22,0x4f,0x0c,0x11,0x13,0x02,0x00,0x17,0x0d,0x02,0x00,0x70,0x15,0x00, +0x17,0x24,0x17,0x18,0x27,0x02,0x00,0x06,0x23,0x01,0x20,0x03,0x02,0x1e,0x01,0x4a, +0x06,0x07,0x06,0x08,0x21,0x01,0x00,0x92,0x00,0x20,0x00,0x0b,0x9b,0x08,0x00,0x85, +0x00,0x01,0x08,0x00,0x80,0x0b,0x00,0x0d,0x0e,0x0f,0x10,0x11,0x12,0xdb,0x79,0x10, +0x15,0x05,0x23,0x62,0x00,0x17,0x17,0x17,0x18,0x17,0x95,0x5f,0xe0,0x19,0x1a,0x19, +0x17,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1f,0x22,0x00,0xa9,0x76,0x11,0x0a,0x01, +0x00,0x26,0x24,0x0b,0x53,0x00,0x20,0x0b,0x0b,0xff,0x7e,0x31,0x0b,0x0f,0x0f,0x5e, +0x7b,0x11,0x16,0x01,0x00,0x20,0x25,0x17,0x01,0x00,0x02,0x44,0x00,0x02,0x34,0x01, 0xa0,0x26,0x1e,0x1e,0x1e,0x1e,0x1f,0x00,0x1f,0x0a,0x16,0x02,0x00,0x22,0x0b,0x17, -0x02,0x00,0x20,0x00,0x17,0xf2,0x2b,0x04,0x02,0x00,0x05,0x16,0x00,0x0b,0x01,0x00, +0x02,0x00,0x20,0x00,0x17,0x12,0x75,0x04,0x02,0x00,0x05,0x16,0x00,0x0b,0x01,0x00, 0x1b,0x0c,0x10,0x00,0x10,0x19,0x02,0x00,0x51,0x19,0x00,0x00,0x0b,0x1a,0x02,0x00, -0x13,0x17,0xd9,0x12,0x12,0x1c,0x02,0x00,0x30,0x0e,0x00,0x0e,0x11,0x0e,0x16,0x1e, -0x02,0x00,0x70,0x11,0x00,0x13,0x1f,0x13,0x14,0x22,0x02,0x00,0x1f,0x00,0x74,0x01, -0x26,0x50,0x00,0x00,0x00,0x00,0x00, +0x13,0x17,0xc3,0x1a,0x12,0x1c,0x02,0x00,0x30,0x0e,0x00,0x0e,0x0a,0x0a,0x16,0x1e, +0x02,0x00,0xe0,0x11,0x00,0x13,0x1f,0x13,0x14,0x22,0x14,0x22,0x14,0x22,0x00,0x27, +0x00, }; static const etxFontCmap cmaps[] __FLASH = { { .range_start = 32, .range_length = 95, .glyph_id_start = 1, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 128, .range_length = 4, .glyph_id_start = 96, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 136, .range_length = 15, .glyph_id_start = 100, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 176, .range_length = 1, .glyph_id_start = 115, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 192, .range_length = 192, .glyph_id_start = 116, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 8226, .range_length = 55425, .glyph_id_start = 308, .list_length = 62, .type = 3, .unicode_list = 2960, .glyph_id_ofs_list = 0 }, +{ .range_start = 176, .range_length = 1, .glyph_id_start = 96, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, +{ .range_start = 192, .range_length = 192, .glyph_id_start = 97, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, +{ .range_start = 8226, .range_length = 580, .glyph_id_start = 289, .list_length = 2, .type = 3, .unicode_list = 2328, .glyph_id_ofs_list = 0 }, }; const etxLz4Font lv_font_en_bold_STD __FLASH = { -.uncomp_size = 50388, -.comp_size = 22807, +.uncomp_size = 33648, +.comp_size = 14401, .line_height = 27, .base_line = 6, .subpx = 0, .underline_position = -2, .underline_thickness = 1, .kern_scale = 16, -.cmap_num = 6, +.cmap_num = 4, .bpp = 4, .kern_classes = 1, .bitmap_format = 0, .left_class_cnt = 40, .right_class_cnt = 39, -.glyph_bitmap = 3084, -.class_pair_values = 48088, -.left_class_mapping = 49648, -.right_class_mapping = 50018, +.glyph_bitmap = 2332, +.class_pair_values = 31506, +.left_class_mapping = 33066, +.right_class_mapping = 33357, .cmaps = cmaps, .compressed = lz4FontData, -.lvglFontBufSize = 50724, +.lvglFontBufSize = 33920, }; diff --git a/radio/src/fonts/lvgl/make_fonts.sh b/radio/src/fonts/lvgl/make_fonts.sh index 9100451d3b7..f1f65cc064e 100755 --- a/radio/src/fonts/lvgl/make_fonts.sh +++ b/radio/src/fonts/lvgl/make_fonts.sh @@ -107,6 +107,8 @@ function make_font_no_sym_no_trans() { local sfx=$4 local dir=$5 + # Used for LXL and XXL sized fonts - use 2 bpp to reduce memory size if needed + echo "Creating basic font: ${name}_${sfx} (size: ${size})" lv_font_conv --no-prefilter --bpp 4 --size "${size}" \ @@ -133,6 +135,23 @@ function make_en_font() { --format lvgl -o "${dir}/lv_font_${name}_${sfx}.c" --force-fast-kern-format --no-compress } +function make_en_bold_font_lz4() { + local name=$1 + local latin_ttf=$2 + local size=$3 + local sfx=$4 + local dir=$5 + + # Same base char set as STD font; but without extra symbols (use LVGL fallback to STD for missing chars) + echo "Creating EN compressed bold font: ${name}_${sfx} (size: ${size})" + + # Use relative paths for lv_font_conv + lv_font_conv --no-prefilter --bpp 4 --size "${size}" \ + --font "../${latin_ttf}" -r "${ASCII},${DEGREE},${BULLET},${COMPARE},${LATIN1}" \ + --format lvgl -o "lv_font.inc" --force-fast-kern-format --no-compress + compress_font "${dir}/lv_font_${name}_${sfx}" "" +} + function make_en_font_lz4() { local name=$1 local latin_ttf=$2 @@ -185,12 +204,11 @@ function make_en_font_no_sym() { function make_font() { local name=$1 - local latin_ttf=$2 - local ttf=$3 - local size=$4 - local sfx=$5 - local dir=$6 - local chars=$7 + local ttf=$2 + local size=$3 + local sfx=$4 + local dir=$5 + local chars=$6 echo "Creating font: ${name}_${sfx} (size: ${size})" @@ -202,13 +220,12 @@ function make_font() { function make_font_lz4() { local name=$1 - local latin_ttf=$2 - local ttf=$3 - local size=$4 - local sfx=$5 - local dir=$6 - local chars=$7 - local no_kern=$8 + local ttf=$2 + local size=$3 + local sfx=$4 + local dir=$5 + local chars=$6 + local no_kern=$7 echo "Creating compressed font: ${name}_${sfx} (size: ${size})" @@ -228,7 +245,7 @@ function make_en_font_set() { make_en_font_lz4 "${name}" "${LATIN_FONT}" 9 "XXS" "std" make_en_font_lz4 "${name}" "${LATIN_FONT}" 13 "XS" "std" make_en_font "${name}" "${LATIN_FONT}" 16 "STD" "std" - make_en_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" 16 "STD" "std" + make_en_bold_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" 16 "STD" "std" make_en_font_w_extra_sym "${name}" "${LATIN_FONT}" 24 "L" "std" make_en_font_no_sym "${name}_bold" "${LATIN_FONT_BOLD}" 32 "XL" "std" @@ -236,7 +253,7 @@ function make_en_font_set() { make_en_font_lz4 "${name}" "${LATIN_FONT}" 8 "XXS" "sml" make_en_font_lz4 "${name}" "${LATIN_FONT}" 10 "XS" "sml" make_en_font "${name}" "${LATIN_FONT}" 13 "STD" "sml" - make_en_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" 13 "STD" "sml" + make_en_bold_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" 13 "STD" "sml" make_en_font_w_extra_sym "${name}" "${LATIN_FONT}" 19 "L" "sml" make_en_font_no_sym "${name}_bold" "${LATIN_FONT_BOLD}" 25 "XL" "sml" @@ -244,7 +261,7 @@ function make_en_font_set() { make_en_font_lz4 "${name}" "${LATIN_FONT}" 12 "XXS" "lrg" make_en_font_lz4 "${name}" "${LATIN_FONT}" 18 "XS" "lrg" make_en_font "${name}" "${LATIN_FONT}" 22 "STD" "lrg" - make_en_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" 22 "STD" "lrg" + make_en_bold_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" 22 "STD" "lrg" make_en_font_w_extra_sym "${name}" "${LATIN_FONT}" 33 "L" "lrg" make_en_font_no_sym "${name}_bold" "${LATIN_FONT_BOLD}" 44 "XL" "lrg" } @@ -264,28 +281,28 @@ function make_font_set() { echo "Creating font set for: ${name}" # Standard LCD fonts (480x272, 480x320, 320x480) - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 9 "XXS" "std" "${chars}" "${no_kern}" - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 13 "XS" "std" "${chars}" "${no_kern}" - make_font "${name}" "${LATIN_FONT}" "${ttf_normal}" 16 "STD" "std" "${chars}" - make_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" "${ttf_bold}" 16 "STD" "std" "${chars}" "${no_kern}" - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 24 "L" "std" "${chars}" "${no_kern}" - make_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" "${ttf_bold}" 32 "XL" "std" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 9 "XXS" "std" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 13 "XS" "std" "${chars}" "${no_kern}" + make_font "${name}" "${ttf_normal}" 16 "STD" "std" "${chars}" + make_font_lz4 "${name}_bold" "${ttf_bold}" 16 "STD" "std" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 24 "L" "std" "${chars}" "${no_kern}" + make_font_lz4 "${name}_bold" "${ttf_bold}" 32 "XL" "std" "${chars}" "${no_kern}" # Small LCD fonts (320x240) - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 8 "XXS" "sml" "${chars}" "${no_kern}" - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 10 "XS" "sml" "${chars}" "${no_kern}" - make_font "${name}" "${LATIN_FONT}" "${ttf_normal}" 13 "STD" "sml" "${chars}" - make_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" "${ttf_bold}" 13 "STD" "sml" "${chars}" "${no_kern}" - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 19 "L" "sml" "${chars}" "${no_kern}" - make_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" "${ttf_bold}" 25 "XL" "sml" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 8 "XXS" "sml" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 10 "XS" "sml" "${chars}" "${no_kern}" + make_font "${name}" "${ttf_normal}" 13 "STD" "sml" "${chars}" + make_font_lz4 "${name}_bold" "${ttf_bold}" 13 "STD" "sml" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 19 "L" "sml" "${chars}" "${no_kern}" + make_font_lz4 "${name}_bold" "${ttf_bold}" 25 "XL" "sml" "${chars}" "${no_kern}" # Large LCD fonts (800x480) - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 12 "XXS" "lrg" "${chars}" "${no_kern}" - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 18 "XS" "lrg" "${chars}" "${no_kern}" - make_font "${name}" "${LATIN_FONT}" "${ttf_normal}" 22 "STD" "lrg" "${chars}" - make_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" "${ttf_bold}" 22 "STD" "lrg" "${chars}" "${no_kern}" - make_font_lz4 "${name}" "${LATIN_FONT}" "${ttf_normal}" 33 "L" "lrg" "${chars}" "${no_kern}" - make_font_lz4 "${name}_bold" "${LATIN_FONT_BOLD}" "${ttf_bold}" 44 "XL" "lrg" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 12 "XXS" "lrg" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 18 "XS" "lrg" "${chars}" "${no_kern}" + make_font "${name}" "${ttf_normal}" 22 "STD" "lrg" "${chars}" + make_font_lz4 "${name}_bold" "${ttf_bold}" 22 "STD" "lrg" "${chars}" "${no_kern}" + make_font_lz4 "${name}" "${ttf_normal}" 33 "L" "lrg" "${chars}" "${no_kern}" + make_font_lz4 "${name}_bold" "${ttf_bold}" 44 "XL" "lrg" "${chars}" "${no_kern}" } # Main execution starts here diff --git a/radio/src/fonts/lvgl/sml/lv_font_en_bold_STD.c b/radio/src/fonts/lvgl/sml/lv_font_en_bold_STD.c index acd8080f0bf..ee76741180e 100644 --- a/radio/src/fonts/lvgl/sml/lv_font_en_bold_STD.c +++ b/radio/src/fonts/lvgl/sml/lv_font_en_bold_STD.c @@ -40,850 +40,540 @@ static const uint8_t lz4FontData[] __FLASH = { 0x05,0x08,0x00,0x00,0xa8,0x09,0xa8,0x01,0x93,0xc1,0x09,0x60,0x04,0x05,0x09,0x00, 0x00,0xd8,0x38,0x00,0x31,0xf1,0x09,0x90,0x18,0x00,0xb1,0x0a,0x0a,0x90,0x09,0x0a, 0x07,0x00,0x00,0x2d,0x0a,0xa0,0x10,0x00,0x40,0x46,0x0a,0x80,0x06,0x40,0x00,0x13, -0x69,0x10,0x00,0xf2,0x1b,0x82,0x0a,0x50,0x04,0x05,0x0d,0x00,0xfe,0xa3,0x0a,0x50, +0x69,0x10,0x00,0xf2,0x23,0x82,0x0a,0x50,0x04,0x05,0x0d,0x00,0xfe,0xa3,0x0a,0x50, 0x03,0x02,0x0b,0x01,0xfe,0xae,0x0a,0x50,0x04,0x04,0x0d,0x00,0xfe,0xc8,0x0a,0x70, -0x08,0x08,0x03,0x00,0x02,0xd4,0x0a,0x00,0x0d,0x0b,0x0b,0x01,0x00,0x11,0x0b,0x08, -0x00,0x13,0x4e,0x08,0x00,0x13,0x8b,0x08,0x00,0x13,0xc8,0x08,0x00,0x93,0x05,0x0c, -0x00,0x0d,0x0b,0x0c,0x01,0xff,0x47,0x08,0x00,0x93,0x89,0x0c,0x00,0x0d,0x0c,0x0c, -0x00,0xff,0xd1,0x10,0x00,0xa2,0x13,0x0d,0x00,0x0d,0x09,0x0c,0x02,0xff,0x49,0x0d, -0x10,0x00,0x13,0x8b,0x10,0x00,0x13,0xc1,0x10,0x00,0x22,0x03,0x0e,0x08,0x00,0x13, -0x45,0x08,0x00,0x22,0x87,0x0e,0x58,0x00,0x22,0xc4,0x0e,0x28,0x00,0xa2,0xfa,0x0e, -0x00,0x0d,0x0c,0x0b,0x01,0x00,0x3c,0x0f,0x20,0x00,0xf3,0x02,0x7e,0x0f,0x10,0x05, -0x05,0x04,0x00,0x06,0x88,0x0f,0xc0,0x08,0x09,0x0c,0x00,0x00,0xbe,0x08,0x00,0x13, -0xf4,0x08,0x00,0x22,0x2a,0x10,0x08,0x00,0x13,0x60,0x08,0x00,0x13,0x96,0x08,0x00, -0x40,0xcc,0x10,0x40,0x0c,0x10,0x02,0x30,0x02,0x11,0x80,0x10,0x00,0xa3,0xfd,0x38, -0x11,0x50,0x07,0x08,0x0c,0x00,0x00,0x68,0x08,0x00,0x13,0x98,0x08,0x00,0x13,0xc8, -0x08,0x00,0xf3,0x0a,0xf8,0x11,0xd0,0x03,0x04,0x0c,0xff,0x00,0x10,0x12,0xd0,0x03, -0x05,0x0c,0x00,0x00,0x2e,0x12,0xd0,0x03,0x06,0x0c,0xff,0x00,0x52,0x08,0x00,0xc0, -0x76,0x12,0xa0,0x08,0x0a,0x09,0xff,0x00,0xa3,0x12,0x30,0x09,0x60,0x00,0x31,0xd9, -0x12,0x00,0x08,0x00,0x22,0x0f,0x13,0x08,0x00,0x13,0x45,0x08,0x00,0x13,0x7b,0x08, -0x00,0x13,0xb1,0x08,0x00,0x40,0xe7,0x13,0xf0,0x06,0xf8,0x03,0xc0,0x00,0x14,0xf0, -0x08,0x09,0x0b,0x00,0xff,0x32,0x14,0x90,0x08,0x70,0x00,0x13,0x62,0x08,0x00,0x13, -0x92,0x08,0x00,0x13,0xc2,0x08,0x00,0x31,0xf2,0x14,0x10,0xc0,0x00,0x31,0x28,0x15, -0xf0,0xb8,0x02,0x40,0x4c,0x15,0x30,0x08,0x38,0x02,0x31,0x74,0x15,0x00,0x58,0x02, -0x13,0x97,0x08,0x00,0x13,0xba,0x08,0x00,0x13,0xdd,0x08,0x00,0x31,0x00,0x16,0x00, -0x58,0x03,0x10,0x20,0x08,0x00,0x61,0x0b,0x00,0x00,0x47,0x16,0x00,0x60,0x02,0x31, -0x6e,0x16,0xc0,0x08,0x02,0x22,0x91,0x16,0x28,0x00,0x13,0xb4,0x08,0x00,0x13,0xd7, -0x08,0x00,0x13,0xfa,0x38,0x00,0xc0,0x1a,0x17,0x90,0x03,0x04,0x0a,0xff,0x00,0x2e, -0x17,0x90,0x03,0xd0,0x02,0x90,0x47,0x17,0x90,0x03,0x06,0x0a,0xff,0x00,0x65,0x08, -0x00,0x70,0x09,0xff,0x00,0x80,0x17,0x80,0x07,0x88,0x00,0x22,0xa8,0x17,0xe0,0x02, -0x31,0xcb,0x17,0x60,0x08,0x00,0x13,0xee,0x08,0x00,0x22,0x11,0x18,0x08,0x00,0x13, -0x34,0x08,0x00,0x32,0x57,0x18,0x60,0xc8,0x04,0x21,0x18,0x70,0xf8,0x04,0x30,0x90, -0x18,0x50,0x10,0x00,0x32,0xff,0xb0,0x18,0x40,0x00,0x13,0xd3,0x08,0x00,0x13,0xf6, -0x08,0x00,0x22,0x19,0x19,0x28,0x04,0xc0,0x39,0x19,0x80,0x06,0x07,0x0d,0x00,0xfd, -0x67,0x19,0x60,0x07,0x08,0x00,0x10,0x95,0x10,0x00,0x60,0x0c,0x00,0xfd,0xbf,0x19, -0xc0,0x40,0x01,0x32,0x00,0xf1,0x19,0xb0,0x00,0x22,0x11,0x1a,0xe8,0x01,0x22,0x47, -0x1a,0xc8,0x00,0x12,0x6a,0x10,0x00,0x22,0xfd,0xa0,0x10,0x00,0x41,0xfd,0xc3,0x1a, -0x80,0x20,0x00,0x21,0xf9,0x1a,0x00,0x01,0x32,0x00,0x1c,0x1b,0x10,0x00,0x22,0x52, -0x1b,0x10,0x00,0x13,0x75,0x10,0x00,0x13,0xab,0x10,0x00,0x13,0xce,0x10,0x00,0x22, -0x04,0x1c,0x10,0x00,0x31,0x27,0x1c,0x70,0x90,0x01,0xa2,0x57,0x1c,0x40,0x08,0x09, -0x0a,0x00,0x00,0x84,0x1c,0x00,0x02,0x22,0xb1,0x1c,0x90,0x01,0xa2,0xd9,0x1c,0x50, -0x07,0x08,0x0b,0x00,0x00,0x05,0x1d,0x90,0x00,0x22,0x25,0x1d,0x48,0x02,0x22,0x55, -0x1d,0x90,0x00,0x13,0x78,0x10,0x00,0x13,0xa8,0x10,0x00,0x12,0xcb,0x10,0x00,0x32, -0xfd,0xfb,0x1d,0xa0,0x00,0x22,0x1e,0x1e,0x20,0x00,0x22,0x4e,0x1e,0x20,0x00,0x31, -0x71,0x1e,0xe0,0x80,0x00,0x31,0xa7,0x1e,0x70,0xf8,0x00,0x13,0xd5,0x10,0x00,0x22, -0x0b,0x1f,0x10,0x00,0x22,0x39,0x1f,0x10,0x00,0x13,0x6f,0x10,0x00,0x10,0x9d,0x10, -0x00,0x40,0x0d,0x00,0xfc,0xd8,0x10,0x00,0x52,0x0e,0x00,0xfd,0x09,0x20,0x98,0x02, -0x30,0x3f,0x20,0x40,0xa0,0x06,0x41,0x00,0x69,0x20,0x60,0xa0,0x06,0xa2,0x96,0x20, -0x70,0x07,0x08,0x0a,0xff,0x00,0xbe,0x20,0xc8,0x02,0x22,0xe2,0x20,0xd8,0x01,0xf2, -0x03,0x00,0x21,0xd0,0x03,0x06,0x0b,0xff,0x00,0x21,0x21,0x90,0x03,0x05,0x09,0xff, -0x00,0x38,0x21,0x20,0x00,0x20,0x5c,0x21,0x00,0x02,0xf2,0x04,0xff,0x00,0x75,0x21, -0xd0,0x03,0x03,0x0c,0x00,0xfd,0x87,0x21,0x70,0x03,0x03,0x0d,0x00,0xfd,0x9b,0x10, -0x00,0x41,0x00,0xad,0x21,0x90,0x50,0x06,0x31,0xb8,0x21,0x10,0xc0,0x05,0x31,0xea, -0x21,0xd0,0xb0,0x01,0x31,0x18,0x22,0x40,0xd0,0x00,0xb1,0x48,0x22,0xb0,0x03,0x06, -0x0d,0xff,0xfd,0x6f,0x22,0x40,0x90,0x01,0xf1,0x04,0xa5,0x22,0xf0,0x06,0x08,0x0e, -0x00,0xfc,0xdd,0x22,0xb0,0x07,0x08,0x07,0x00,0x00,0xf9,0x22,0x10,0xa0,0x00,0x31, -0x23,0x23,0x70,0x68,0x03,0x30,0x41,0x23,0x10,0xd0,0x00,0xb2,0xfc,0x6f,0x23,0x70, -0x03,0x03,0x0e,0x00,0xfc,0x84,0x23,0x20,0x06,0x31,0xa4,0x23,0x60,0x58,0x05,0x13, -0xbd,0x10,0x00,0xa2,0xdd,0x23,0xd0,0x04,0x06,0x0a,0x00,0x00,0xfb,0x23,0x28,0x02, -0xa2,0x1b,0x24,0x00,0x04,0x04,0x0a,0x00,0x00,0x2f,0x24,0xf8,0x00,0x22,0x65,0x24, -0x48,0x02,0x40,0x88,0x24,0x30,0x09,0x18,0x01,0x30,0xc3,0x24,0x40,0x08,0x03,0x23, -0xfc,0xea,0x20,0x00,0x22,0x20,0x25,0x20,0x00,0x31,0x43,0x25,0x40,0x10,0x01,0x40, -0x6b,0x25,0x20,0x09,0xa0,0x00,0x22,0xa1,0x25,0x70,0x05,0x21,0xc4,0x25,0x70,0x06, -0x32,0x00,0xf6,0x25,0xb8,0x02,0x22,0x16,0x26,0xc0,0x03,0x22,0x4c,0x26,0xd0,0x02, -0x13,0x6f,0x10,0x00,0x31,0xa5,0x26,0x60,0x08,0x03,0x31,0xcd,0x26,0x90,0x60,0x04, -0x50,0x03,0x27,0xc0,0x0b,0x0c,0x78,0x05,0x21,0x27,0x50,0xa0,0x01,0x31,0x63,0x27, -0xc0,0xb8,0x00,0x31,0x7c,0x27,0x50,0xa0,0x01,0x10,0xb7,0x10,0x00,0x43,0x0c,0x00, -0xfc,0xd5,0x20,0x00,0x31,0x0b,0x28,0xc0,0xc8,0x00,0x31,0x29,0x28,0x00,0x60,0x02, -0x31,0x59,0x28,0xb0,0x70,0x02,0x13,0x7c,0x10,0x00,0x13,0xac,0x10,0x00,0x12,0xcf, -0x10,0x00,0x22,0xfd,0xff,0x10,0x00,0x32,0xfd,0x22,0x29,0x20,0x00,0x32,0x52,0x29, -0xb0,0xc0,0x02,0x21,0x29,0x10,0x20,0x00,0x30,0xa5,0x29,0x60,0x60,0x00,0x22,0xfd, -0xc3,0x10,0x00,0xb2,0x00,0xf3,0x29,0xa0,0x04,0x06,0x0b,0x00,0x00,0x14,0x2a,0x28, -0x07,0x40,0x38,0x2a,0x60,0x04,0xc0,0x03,0x22,0x53,0x2a,0x60,0x04,0x22,0x83,0x2a, -0x08,0x01,0x40,0xa6,0x2a,0x90,0x08,0xc0,0x02,0x32,0xd2,0x2a,0x40,0x90,0x07,0x03, -0x20,0x00,0x22,0x22,0x2b,0x20,0x00,0xb1,0x45,0x2b,0x90,0x08,0x08,0x0d,0x00,0x00, -0x79,0x2b,0x40,0x50,0x04,0x22,0xa0,0x2b,0x20,0x00,0x13,0xd0,0x20,0x00,0x12,0xf3, -0x10,0x00,0x41,0xfd,0x23,0x2c,0x40,0x40,0x01,0x30,0x46,0x2c,0x60,0x38,0x08,0xb2, -0x00,0x8e,0x2c,0x90,0x09,0x0a,0x0a,0x00,0x00,0xc0,0x2c,0xc8,0x04,0x22,0xf6,0x2c, -0xd0,0x03,0x22,0x24,0x2d,0x10,0x00,0x31,0x5a,0x2d,0xe0,0x28,0x02,0x31,0x8a,0x2d, -0xa0,0xc8,0x00,0x13,0xad,0x10,0x00,0x13,0xdd,0x10,0x00,0x22,0x00,0x2e,0x10,0x00, -0x22,0x30,0x2e,0x10,0x00,0x31,0x53,0x2e,0x60,0x90,0x04,0x30,0x6c,0x2e,0xb0,0x88, -0x09,0xf2,0x14,0x03,0x74,0x2e,0xb0,0x06,0x07,0x08,0x00,0x00,0x90,0x2e,0x00,0x0d, -0x0e,0x0e,0x00,0xfe,0xf2,0x2e,0x00,0x0d,0x0d,0x0a,0x00,0x00,0x33,0x2f,0x00,0x0d, -0x0d,0x0c,0x00,0xff,0x81,0x2f,0x10,0x00,0x31,0xc2,0x2f,0xf0,0xb8,0x03,0x10,0xef, -0x10,0x00,0x52,0x0e,0x00,0xfe,0x4a,0x30,0x08,0x00,0xa2,0xa5,0x30,0xa0,0x0e,0x0f, -0x0c,0x00,0xff,0xff,0x30,0x40,0x00,0xa2,0x61,0x31,0xa0,0x0e,0x0f,0x0a,0x00,0x00, -0xac,0x31,0x20,0x00,0xf2,0x0b,0x07,0x32,0x80,0x06,0x07,0x0b,0x00,0xff,0x2e,0x32, -0xc0,0x09,0x0a,0x0b,0x00,0xff,0x65,0x32,0xa0,0x0e,0x0f,0x0e,0x00,0xfe,0xce,0x32, -0x58,0x00,0xf1,0x0b,0x0f,0x33,0xf0,0x08,0x09,0x0e,0x00,0xfe,0x4e,0x33,0x60,0x0b, -0x09,0x0d,0x01,0xfe,0x89,0x33,0x60,0x0b,0x0c,0x0e,0x00,0xfe,0xdd,0x33,0x00,0x01, -0x32,0xff,0x25,0x34,0x08,0x00,0x22,0x6d,0x34,0x20,0x00,0xb0,0xa8,0x34,0x60,0x0b, -0x0d,0x0c,0xff,0xff,0xf6,0x34,0x20,0x30,0x01,0x32,0xff,0x26,0x35,0x08,0x00,0x22, -0x56,0x35,0x28,0x00,0x10,0x9e,0x08,0x00,0x52,0x04,0x00,0x03,0xb6,0x35,0x88,0x00, -0xf2,0x03,0x01,0x36,0x40,0x10,0x11,0x0e,0x00,0xfe,0x78,0x36,0xa0,0x0e,0x10,0x0e, -0xff,0xfe,0xe8,0x36,0xd8,0x00,0x93,0x36,0x37,0x60,0x0b,0x0c,0x08,0x00,0x01,0x66, -0x08,0x00,0xa2,0x96,0x37,0x40,0x10,0x11,0x0b,0x00,0xff,0xf4,0x37,0x98,0x00,0x22, -0x35,0x38,0xd0,0x00,0x11,0x97,0x08,0x00,0x42,0xff,0xfe,0xf9,0x38,0x60,0x00,0x22, -0x41,0x39,0xa0,0x00,0x22,0x95,0x39,0x10,0x00,0x10,0xdd,0x08,0x00,0x52,0x0b,0x00, -0xff,0x1f,0x3a,0x38,0x00,0xa2,0x60,0x3a,0x20,0x08,0x0a,0x0e,0xff,0xfe,0xa6,0x3a, -0x28,0x00,0x13,0xfa,0x08,0x00,0x22,0x4e,0x3b,0x90,0x00,0xf0,0x0a,0x99,0x3b,0x00, -0x0d,0x0f,0x0e,0xff,0xfe,0x02,0x3c,0xc0,0x09,0x0a,0x0e,0x00,0xfe,0x48,0x3c,0x40, -0x10,0x11,0x0c,0x00,0xff,0xae,0x08,0x00,0x43,0x09,0x00,0x00,0xfb,0x08,0x00,0x22, -0x48,0x3d,0x08,0x00,0x13,0x95,0x08,0x00,0x13,0xe2,0x08,0x00,0x22,0x2f,0x3e,0xa8, -0x00,0xa2,0x8d,0x3e,0x60,0x0b,0x0b,0x0e,0x00,0xfe,0xda,0x3e,0x60,0x00,0x22,0x2e, -0x3f,0xa8,0x00,0xa2,0x90,0x3f,0x40,0x10,0x11,0x0a,0x00,0x00,0xe5,0x3f,0x60,0x00, -0x60,0x2b,0x40,0x10,0x0d,0x0e,0x09,0x80,0x0b,0xf2,0xff,0x8d,0x43,0x02,0xdf,0xcf, -0xe6,0xcf,0xe9,0xcf,0xea,0xcf,0xeb,0xcf,0xef,0xcf,0xf1,0xcf,0xf3,0xcf,0xf7,0xcf, -0xfa,0xcf,0xff,0xcf,0x04,0xd0,0x05,0xd0,0x06,0xd0,0x1c,0xd0,0x21,0xd0,0x26,0xd0, -0x29,0xd0,0x2a,0xd0,0x2b,0xd0,0x2f,0xd0,0x30,0xd0,0x31,0xd0,0x32,0xd0,0x45,0xd0, -0x46,0xd0,0x4c,0xd0,0x4e,0xd0,0x4f,0xd0,0x52,0xd0,0x55,0xd0,0x56,0xd0,0x57,0xd0, -0x59,0xd0,0x71,0xd0,0x73,0xd0,0xa2,0xd0,0xa3,0xd0,0xa5,0xd0,0xa7,0xd0,0xbe,0xd0, -0xc5,0xd0,0xc8,0xd0,0xd1,0xd0,0xfa,0xd0,0x02,0xd1,0x39,0xd1,0xc9,0xd1,0x1e,0xd2, -0x1f,0xd2,0x20,0xd2,0x21,0xd2,0x22,0xd2,0x65,0xd2,0x71,0xd2,0xcb,0xd2,0xe2,0xd2, -0x38,0xd5,0xa0,0xd7,0x80,0xd8,0x2f,0xc1,0xfb,0x1f,0xb0,0xfa,0x0f,0xa0,0xf9,0x06, -0x31,0xd9,0x1e,0xa0,0x9a,0x8b,0x9a,0x8b,0x98,0x89,0x43,0x44,0x00,0x1f,0x0b,0x70, -0x00,0x5d,0x0f,0x30,0x2f,0xff,0xff,0xf7,0x01,0xb8,0x6d,0x10,0x00,0xe4,0x7a,0x00, -0x8f,0xff,0xff,0xf0,0x15,0xf2,0xd6,0x20,0x06,0xc0,0xf2,0x00,0x08,0xa2,0xf0,0x00, -0x00,0x09,0x70,0x00,0x05,0xdb,0x30,0x09,0xfe,0xff,0x40,0xfd,0x02,0xfb,0x0f,0xe1, -0x04,0x40,0x7f,0xf8,0x10,0x00,0x4b,0xfe,0x31,0x41,0x04,0xfb,0x4f,0x90,0x1f,0xc0, -0xdf,0xce,0xf7,0x01,0x8e,0xc5,0x00,0x00,0xb5,0x00,0x0a,0xfc,0x10,0x00,0x00,0x5e, -0x2c,0x80,0xb3,0x00,0x5e,0x0b,0x96,0xc0,0x00,0x0c,0xfe,0x4e,0x20,0x00,0x00,0x10, -0xb7,0x00,0x00,0x00,0x06,0xc5,0xdd,0x50,0x00,0x2e,0x2e,0x77,0xf0,0x00,0xa7,0x0e, -0x65,0xf0,0x00,0x00,0x06,0xee,0x70,0x01,0xbf,0xd5,0x00,0x00,0x9f,0x9d,0xf0,0x00, -0x0a,0xf0,0x9f,0x00,0x00,0x4f,0xdf,0x50,0x00,0x05,0xff,0x90,0x66,0x04,0xfb,0xbf, -0x6e,0xb0,0x8f,0x50,0xdf,0xf6,0x04,0xfd,0x6a,0xff,0x30,0x06,0xdf,0xe9,0xfd,0x10, -0x9b,0x9b,0x9a,0x44,0x00,0x01,0x00,0x02,0xe2,0x00,0xd9,0x00,0x7f,0x10,0x0d,0xb0, -0x00,0xf7,0x00,0x2f,0x60,0x03,0xf5,0x00,0x2f,0x60,0x00,0xf8,0x00,0x0b,0xc0,0x00, -0x4f,0x30,0x00,0xad,0x10,0x00,0x91,0x10,0x00,0x9a,0x00,0x2e,0x70,0x07,0xf1,0x02, -0xf6,0x00,0xea,0x00,0xdc,0x00,0xcd,0x00,0xdc,0x00,0xf9,0x03,0xf4,0x0a,0xd0,0x5f, -0x30,0x74,0x00,0x00,0x99,0x00,0x43,0x88,0x23,0x8e,0xfe,0xf8,0x02,0xff,0x20,0x0d, -0x79,0xc0,0x05,0x01,0x50,0x00,0x4b,0x40,0x00,0x05,0xf6,0x00,0x00,0x5f,0x60,0x0a, -0xff,0xff,0xfb,0x6a,0xcf,0xca,0x70,0x0e,0x00,0xf0,0x17,0x00,0x1f,0x72,0xf6,0x5f, -0x26,0x70,0x02,0x22,0x04,0xff,0xf4,0x15,0x55,0x10,0x1d,0x91,0xea,0x00,0x00,0xd8, -0x00,0x03,0xf2,0x00,0x08,0xd0,0x00,0x0d,0x70,0x00,0x3f,0x20,0x00,0x8c,0x00,0x00, -0xe7,0x11,0x00,0xf8,0x22,0x09,0xc0,0x00,0x0e,0x70,0x00,0x02,0xbf,0xd6,0x00,0xdf, -0x8c,0xf5,0x3f,0x90,0x1f,0xa5,0xf7,0x00,0xfd,0x6f,0x70,0x0f,0xd5,0xf7,0x00,0xfc, -0x3f,0x90,0x2f,0xa0,0xdf,0x8c,0xf5,0x02,0xbf,0xd7,0x00,0x02,0x8d,0x1c,0xff,0xf1, -0x95,0xcf,0x10,0x0c,0xf1,0x00,0x05,0x00,0xf0,0xb5,0x04,0xcf,0xe8,0x02,0xfe,0x8c, -0xf6,0x7f,0x50,0x3f,0xa0,0x00,0x06,0xf7,0x00,0x03,0xfd,0x00,0x03,0xee,0x10,0x03, -0xee,0x20,0x02,0xef,0x97,0x77,0x6f,0xff,0xff,0xf0,0x05,0xdf,0xd7,0x03,0xfe,0x8c, -0xf6,0x38,0x30,0x3f,0x90,0x01,0x29,0xf6,0x00,0x8f,0xfa,0x00,0x02,0x59,0xf7,0x5a, -0x30,0x1f,0xc4,0xfe,0x8b,0xf8,0x05,0xdf,0xe8,0x00,0x00,0x02,0xff,0x10,0x00,0x0b, -0xff,0x10,0x00,0x5f,0xff,0x10,0x01,0xea,0xcf,0x10,0x09,0xe1,0xcf,0x10,0x3f,0x82, -0xcf,0x30,0x9f,0xff,0xff,0xf1,0x35,0x55,0xdf,0x50,0x00,0x00,0xcf,0x10,0x0a,0xff, -0xff,0x90,0xbf,0x88,0x85,0x0d,0xc0,0x00,0x00,0xff,0xff,0xb1,0x09,0x95,0x9f,0x90, -0x00,0x00,0xfd,0x2a,0x60,0x0f,0xd0,0xef,0x8b,0xf8,0x03,0xcf,0xe8,0x00,0x00,0x2a, -0xe9,0x00,0x3f,0xfa,0x50,0x0d,0xe2,0x10,0x03,0xfd,0xef,0xd2,0x5f,0xe6,0x9f,0xb5, -0xf7,0x00,0xee,0x3f,0x90,0x0e,0xe0,0xcf,0x9b,0xf9,0x01,0xae,0xe9,0x00,0x9f,0xff, -0xff,0xe4,0x88,0x89,0xfb,0x00,0x00,0x7f,0x30,0x00,0x0e,0xc0,0x00,0x07,0xf5,0x00, -0x00,0xee,0x00,0x00,0x6f,0x70,0x00,0x0d,0xf1,0x00,0x05,0xf9,0x00,0x00,0x44,0x00, -0xf0,0x30,0xef,0x8c,0xf6,0x2f,0xa0,0x3f,0x90,0xee,0x38,0xf6,0x04,0xff,0xfc,0x01, -0xed,0x69,0xf7,0x5f,0x70,0x0f,0xc2,0xfe,0x8b,0xf9,0x05,0xcf,0xe9,0x00,0x02,0xcf, -0xd5,0x01,0xef,0x8d,0xf3,0x5f,0x80,0x3f,0x96,0xf6,0x01,0xfc,0x3f,0xc2,0x7f,0xc0, -0x9f,0xfe,0xfa,0x00,0x23,0x7f,0x50,0x09,0xbf,0xc0,0x01,0xfd,0x80,0x00,0x1e,0xa1, -0xd9,0x13,0x03,0x71,0x01,0xd9,0x1e,0xa0,0x2e,0x82,0xe8,0x9f,0x0e,0xf2,0x2e,0x85, -0x0f,0x91,0xf6,0x6d,0x00,0x10,0x00,0x01,0x7a,0x02,0x9f,0xfb,0x8f,0xe9,0x40,0x9f, -0xd7,0x10,0x04,0xbf,0xfa,0x00,0x02,0x9c,0x00,0x00,0x00,0x2f,0xff,0xff,0x81,0x88, -0x88,0x84,0x18,0x88,0x88,0x42,0xff,0xff,0xf8,0x3b,0x40,0x00,0x03,0xff,0xd6,0x00, -0x00,0x6b,0xff,0x30,0x04,0x9f,0xf4,0x2e,0xff,0x92,0x03,0xd6,0xe2,0x0e,0xf0,0x44, -0x08,0xef,0xb2,0x7f,0xca,0xfc,0x69,0x10,0xee,0x00,0x06,0xf9,0x00,0x5f,0xb0,0x00, -0xbf,0x00,0x00,0x12,0x00,0x00,0xbc,0x00,0x00,0xcd,0x00,0x00,0x04,0xbe,0xfd,0x70, -0x00,0x00,0x8e,0x61,0x13,0xbc,0x00,0x05,0xe2,0x00,0x00,0x0b,0x70,0x0d,0x60,0x3c, -0xea,0x14,0xd0,0x3f,0x11,0xf8,0x4f,0x21,0xf0,0x5e,0x07,0xe0,0x3f,0x00,0xf1,0x6c, -0x0a,0xb0,0x5f,0x03,0xf0,0x6d,0x09,0xd1,0xbf,0x2a,0x90,0x2f,0x12,0xde,0x6b,0xfa, -0x00,0x0d,0x90,0x57,0x00,0xf0,0x60,0x03,0xea,0x42,0x36,0x00,0x00,0x00,0x29,0xdf, -0xea,0x00,0x00,0x00,0x0b,0xf7,0x00,0x00,0x01,0xff,0xd0,0x00,0x00,0x7f,0xcf,0x30, -0x00,0x0d,0xe2,0xf9,0x00,0x03,0xf8,0x0c,0xf0,0x00,0x9f,0xa8,0xcf,0x50,0x0f,0xff, -0xff,0xfb,0x06,0xf8,0x00,0x0c,0xf2,0xcf,0x30,0x00,0x7f,0x80,0x2f,0xff,0xfc,0x50, -0x2f,0xe8,0x9f,0xf3,0x2f,0xb0,0x07,0xf7,0x2f,0xc1,0x2b,0xf3,0x2f,0xff,0xff,0xa0, -0x2f,0xc4,0x4a,0xf6,0x2f,0xb0,0x04,0xfa,0x2f,0xe8,0x8d,0xf6,0x2f,0xff,0xfd,0x80, -0x00,0x8e,0xfd,0x60,0x00,0xaf,0xc9,0xdf,0x70,0x2f,0xd0,0x00,0xfe,0x06,0xf8,0x00, -0x01,0x20,0x7f,0x70,0x00,0x00,0x09,0x00,0xf1,0x14,0x10,0x2f,0xc0,0x00,0xfe,0x00, -0xbf,0xc9,0xdf,0x70,0x00,0x9e,0xfd,0x60,0x00,0x2f,0xff,0xe9,0x10,0x2f,0xe8,0xbf, -0xd0,0x2f,0xb0,0x08,0xf8,0x2f,0xb0,0x02,0xfc,0x2f,0xb0,0x00,0xfe,0x08,0x00,0x00, -0x10,0x00,0x31,0xe8,0xbf,0xd1,0x20,0x00,0xe0,0xff,0xff,0xf0,0x2f,0xe8,0x88,0x80, -0x2f,0xb0,0x00,0x00,0x2f,0xd8,0x88,0xd7,0x03,0x11,0x60,0x0c,0x00,0x00,0x04,0x00, -0x00,0x18,0x00,0x00,0x20,0x00,0xf1,0x03,0xff,0xff,0xd2,0xfe,0x88,0x87,0x2f,0xb0, -0x00,0x02,0xfe,0x88,0x83,0x2f,0xff,0xff,0x62,0xfb,0x21,0x00,0x22,0x02,0xfb,0x28, -0x00,0xf0,0x19,0x00,0x7d,0xfd,0x80,0x00,0x9f,0xd9,0xcf,0xa0,0x1f,0xe0,0x00,0xab, -0x05,0xf9,0x00,0x11,0x10,0x6f,0x80,0x8f,0xff,0x25,0xf9,0x02,0x4d,0xf2,0x1f,0xe0, -0x00,0xcf,0x20,0x9f,0xd9,0xaf,0xf1,0x00,0x7d,0xfe,0xb3,0x2d,0x00,0x61,0x9f,0x52, -0xfb,0x00,0x09,0xf5,0x09,0x00,0x86,0xfe,0x88,0x8c,0xf5,0x2f,0xff,0xff,0xff,0x12, -0x00,0x04,0x09,0x00,0x46,0x50,0x0f,0xd0,0xfd,0x03,0x00,0x00,0x36,0x01,0x4a,0x70, -0x00,0x07,0xf7,0x07,0x00,0xf0,0x0c,0x8c,0x20,0x8f,0x66,0xfd,0x9f,0xf2,0x08,0xef, -0xc4,0x00,0x2f,0xb0,0x07,0xfc,0x02,0xfb,0x04,0xfe,0x10,0x2f,0xb2,0xef,0x30,0x02, -0xfc,0xcf,0xfa,0x00,0xf6,0x06,0xf5,0x00,0x02,0xff,0xbf,0xe1,0x00,0x2f,0xc0,0x8f, -0xa0,0x02,0xfb,0x00,0xdf,0x50,0x2f,0xb0,0x03,0xfe,0x10,0xb4,0x00,0x0b,0x07,0x00, -0xf0,0x48,0xfe,0x88,0x86,0x2f,0xff,0xff,0xc0,0x2f,0xf7,0x00,0x02,0xff,0x82,0xff, -0xd0,0x00,0x7f,0xf8,0x2f,0xef,0x30,0x0d,0xef,0x82,0xfa,0xf9,0x03,0xf9,0xf8,0x2f, -0xaa,0xe0,0x9f,0x5f,0x82,0xfa,0x4f,0x5e,0xa5,0xf8,0x2f,0xb0,0xee,0xf4,0x5f,0x82, -0xfb,0x08,0xfe,0x05,0xf8,0x2f,0xb0,0x2f,0x80,0x5f,0x80,0x2f,0xf1,0x00,0x9f,0x52, -0xff,0xa0,0x09,0xf5,0x2f,0xff,0x40,0x9f,0x52,0xfc,0xed,0x09,0xf5,0x2f,0xb6,0xf8, -0x9f,0x52,0xfb,0x0c,0xfb,0xf5,0x2f,0xb0,0x2f,0xdb,0x00,0x10,0x8f,0xd2,0x00,0xf0, -0x0b,0xdf,0x50,0x00,0x7d,0xfd,0x70,0x00,0x9f,0xda,0xdf,0x80,0x2f,0xe0,0x00,0xef, -0x15,0xf9,0x00,0x09,0xf5,0x7f,0x70,0x00,0x8f,0x66,0xf8,0xf2,0x00,0x81,0xd0,0x00, -0xef,0x10,0x9f,0xd9,0xdf,0x90,0x24,0x00,0xf5,0x09,0x2f,0xff,0xfd,0x70,0x2f,0xe9, -0x9d,0xf8,0x2f,0xb0,0x01,0xfd,0x2f,0xb0,0x05,0xfc,0x2f,0xff,0xff,0xf4,0x2f,0xe8, -0x86,0x10,0x95,0x01,0x02,0x71,0x01,0x12,0x60,0x4d,0x00,0x5f,0xd0,0x01,0xef,0x16, -0xf8,0x4d,0x00,0x01,0xe0,0x80,0x00,0x7d,0xff,0xf3,0x00,0x00,0x00,0x3e,0xf1,0x00, -0x00,0x00,0x13,0x56,0x00,0xe0,0x60,0x02,0xfe,0x89,0xef,0x50,0x2f,0xb0,0x05,0xf9, -0x02,0xfb,0x00,0x8f,0xd9,0x01,0xff,0x35,0xc1,0x02,0xfe,0x8d,0xf4,0x00,0x2f,0xb0, -0x4f,0xc0,0x02,0xfb,0x00,0xcf,0x40,0x2f,0xb0,0x04,0xfc,0x00,0x03,0xbf,0xfc,0x40, -0x1e,0xf9,0x9f,0xf2,0x3f,0xb0,0x05,0xc5,0x0e,0xf9,0x30,0x00,0x01,0xaf,0xfd,0x40, -0x00,0x01,0x6e,0xf3,0x7e,0x60,0x06,0xf7,0x2f,0xf9,0x8e,0xf4,0x03,0xbe,0xfd,0x50, -0xcf,0xff,0xff,0xfc,0x68,0x8f,0xf8,0x86,0x00,0x0f,0xf0,0x00,0x04,0x00,0x05,0x4f, -0x4f,0xa0,0x01,0xfd,0x04,0x00,0x01,0xf0,0x49,0x2f,0xc0,0x03,0xfb,0x0c,0xfb,0x9e, -0xf5,0x01,0x9e,0xfd,0x50,0xcf,0x40,0x00,0xdf,0x46,0xf9,0x00,0x2f,0xe0,0x1f,0xe0, -0x06,0xf8,0x00,0xbf,0x30,0xbf,0x30,0x05,0xf8,0x0f,0xd0,0x00,0x0f,0xc5,0xf7,0x00, -0x00,0xaf,0xbf,0x20,0x00,0x04,0xff,0xc0,0x00,0x00,0x0e,0xf6,0x00,0x00,0xaf,0x30, -0x3f,0x90,0x0d,0xf1,0x7f,0x60,0x7f,0xd0,0x0f,0xd0,0x3f,0x90,0xbf,0xf1,0x3f,0x90, -0x0f,0xc0,0xeb,0xf5,0x6f,0x50,0x0c,0xf3,0xf5,0xe8,0x9f,0x20,0x08,0xf9,0xf1,0xac, -0xce,0x2d,0x00,0xf0,0x25,0x6f,0xfa,0x00,0x01,0xff,0x80,0x2f,0xf7,0x00,0x00,0xdf, -0x40,0x0e,0xf3,0x00,0x7f,0xa0,0x06,0xfc,0x00,0xdf,0x30,0xef,0x20,0x04,0xfc,0x8f, -0x80,0x00,0x0a,0xff,0xe0,0x00,0x00,0x3f,0xf8,0x00,0x00,0x0b,0xff,0xe1,0x00,0x05, -0xfc,0x8f,0x90,0x00,0xef,0x30,0xef,0x30,0x8f,0x24,0x00,0xf0,0x06,0xbf,0x50,0x04, -0xfc,0x03,0xfc,0x00,0xcf,0x30,0x0a,0xf3,0x3f,0xb0,0x00,0x2f,0xba,0xf2,0x00,0x00, -0x9f,0xfa,0xb0,0x03,0x12,0x20,0xcf,0x00,0x31,0x00,0xff,0x00,0x09,0x00,0x00,0xe8, -0x06,0xfd,0x1a,0xf6,0x48,0x88,0x9f,0xf2,0x00,0x00,0xaf,0x60,0x00,0x06,0xfa,0x00, -0x00,0x2f,0xe1,0x00,0x00,0xcf,0x40,0x00,0x08,0xf8,0x00,0x00,0x4f,0xf8,0x88,0x84, -0x8f,0xff,0xff,0xf8,0x01,0x10,0x3f,0xf8,0x3f,0xb2,0x3f,0x90,0x02,0x00,0x70,0xa1, -0x3f,0xf8,0x14,0x42,0xcf,0x10,0x0f,0x05,0xf9,0x0d,0x1f,0xd0,0x00,0x0a,0xf3,0x00, -0x04,0xf9,0x00,0x00,0xdf,0x00,0x00,0x7f,0x60,0x00,0x1f,0xc0,0x00,0x0b,0xf2,0x00, -0x05,0xf8,0x11,0x1e,0xfd,0x4f,0xfa,0x02,0xf0,0x33,0xfd,0x2f,0xde,0xfd,0x44,0x30, -0x00,0x74,0x00,0x04,0xfe,0x00,0x0a,0xbf,0x50,0x1f,0x49,0xc0,0x8e,0x03,0xf3,0x22, -0x22,0x21,0xff,0xff,0xfc,0x55,0x55,0x53,0x4f,0x90,0x05,0xf4,0x05,0xdf,0xd4,0x03, -0xfc,0x6e,0xf1,0x25,0x20,0xaf,0x30,0x7d,0xef,0xf4,0x6f,0x92,0xaf,0x47,0xfb,0x7e, -0xf4,0x0a,0xfd,0xaf,0x60,0x4f,0x80,0x00,0x04,0xf8,0x00,0x00,0x07,0x00,0xf0,0x15, -0xfb,0xde,0x90,0x4f,0xf9,0xcf,0x74,0xf9,0x01,0xfc,0x4f,0x80,0x0f,0xd4,0xf8,0x01, -0xfc,0x4f,0xf8,0xcf,0x74,0xf9,0xde,0x90,0x03,0xcf,0xd5,0x01,0xfe,0x8e,0xf2,0x7f, -0x60,0x3b,0x48,0xf4,0x88,0x00,0xf0,0x01,0x27,0x31,0xfe,0x8d,0xf3,0x03,0xcf,0xd5, -0x00,0x00,0x00,0x3f,0x90,0x00,0x03,0xf9,0x07,0x00,0xf0,0x0a,0x5d,0xea,0xf9,0x2f, -0xe9,0xdf,0x97,0xf6,0x04,0xf9,0x8f,0x40,0x3f,0x97,0xf5,0x03,0xf9,0x2f,0xd6,0xcf, -0x90,0x5d,0xe9,0xf9,0x03,0xab,0x05,0xf3,0x17,0x8c,0xf3,0x6f,0x70,0x3f,0x88,0xff, -0xff,0xfa,0x6f,0x93,0x33,0x21,0xef,0x99,0xe4,0x02,0xbf,0xe9,0x00,0x01,0xbf,0x90, -0x9f,0xb5,0x0c,0xf1,0x0d,0xff,0xf6,0x4d,0xf6,0x20,0xcf,0x00,0x0c,0xf0,0x00,0x05, -0x00,0xf0,0x1b,0x04,0xde,0x9f,0xb1,0xff,0x9c,0xfb,0x6f,0x70,0x2f,0xb8,0xf4,0x02, -0xfb,0x6f,0x60,0x2f,0xb1,0xff,0x8c,0xfb,0x04,0xde,0xaf,0xb0,0x20,0x04,0xfa,0x0d, -0xb7,0xdf,0x40,0x7d,0xfd,0x60,0x5f,0x80,0x00,0x05,0xf8,0x00,0x00,0x07,0x00,0xf4, -0x01,0xfa,0xcf,0xa0,0x5f,0xe8,0xcf,0x65,0xf8,0x04,0xf9,0x5f,0x80,0x3f,0x95,0xf8, -0x03,0x07,0x00,0x83,0x2e,0x82,0xd7,0x00,0x03,0xfa,0x3f,0xa3,0x03,0x00,0x89,0x02, -0xf8,0x02,0xd7,0x00,0x00,0x03,0xfa,0x02,0x00,0x96,0xf9,0x5c,0xf7,0x9f,0xa0,0x4f, -0x80,0x00,0x00,0x04,0x00,0xf5,0x0b,0xbf,0x60,0x4f,0x89,0xf9,0x00,0x4f,0xef,0xb0, -0x00,0x4f,0xff,0xc0,0x00,0x4f,0xda,0xf6,0x00,0x4f,0x81,0xef,0x20,0x4f,0x80,0x5f, -0xb0,0x4b,0x00,0x02,0x03,0x00,0xf7,0x0c,0x4f,0x9c,0xfb,0x4d,0xfa,0x04,0xff,0x8d, -0xff,0x9c,0xf5,0x4f,0x80,0x5f,0x80,0x5f,0x84,0xf8,0x04,0xf8,0x04,0xf8,0x4f,0x80, -0x4f,0x80,0x4f,0x0b,0x00,0xb6,0x80,0x5f,0x9c,0xfb,0x05,0xff,0x8c,0xf6,0x5f,0x80, -0x4f,0x9c,0x00,0x00,0x07,0x00,0x50,0x90,0x03,0xcf,0xd6,0x01,0xa7,0x07,0xf0,0x10, -0x60,0x1f,0xc8,0xf4,0x00,0xee,0x6f,0x60,0x1f,0xc1,0xfe,0x8c,0xf5,0x03,0xcf,0xd6, -0x00,0x4f,0xbd,0xe9,0x04,0xfe,0x7b,0xf7,0x4f,0x80,0x1f,0xc4,0xf8,0x00,0xfd,0x07, -0x00,0x30,0xff,0x8c,0xf7,0x15,0x00,0x02,0xa5,0x01,0x00,0x07,0x00,0xd0,0x05,0xde, -0x8f,0x92,0xfe,0x8d,0xf9,0x7f,0x60,0x3f,0x98,0xf4,0x03,0x07,0x00,0x00,0x0e,0x00, -0x34,0x05,0xde,0xaf,0x8c,0x01,0x01,0x07,0x00,0xc2,0x04,0xfa,0xd9,0x4f,0xfc,0x64, -0xf9,0x00,0x4f,0x80,0x04,0xf8,0x05,0x00,0xf0,0x06,0x07,0xef,0xc4,0x04,0xfb,0x5e, -0xf0,0x5f,0xa2,0x23,0x00,0x8f,0xfe,0x60,0x24,0x04,0xdf,0x16,0xfa,0x5d,0xf1,0x18, -0x05,0xf1,0x08,0x07,0x70,0x00,0xfe,0x00,0xff,0xff,0x15,0xff,0x50,0x0f,0xe0,0x00, -0xfe,0x00,0x0f,0xe0,0x00,0xdf,0x81,0x05,0xee,0x10,0xb5,0x00,0x26,0x04,0xf9,0x07, -0x00,0x00,0x67,0x00,0xf2,0x5d,0x08,0xee,0x9f,0x90,0xcf,0x20,0x9f,0x46,0xf6,0x0d, -0xf0,0x1f,0xb2,0xfa,0x00,0xcf,0x6f,0x40,0x06,0xfe,0xf0,0x00,0x1f,0xfa,0x00,0x00, -0xcf,0x50,0x00,0xbf,0x00,0xf9,0x08,0xf3,0x7f,0x45,0xfd,0x0b,0xf0,0x3f,0x79,0xff, -0x2e,0xb0,0x0e,0xae,0x8f,0x9f,0x70,0x0b,0xff,0x3a,0xff,0x30,0x07,0xfe,0x06,0xff, -0x00,0x03,0xf9,0x01,0xfb,0x00,0x7f,0x70,0xcf,0x20,0xee,0x7f,0x90,0x05,0xff,0xe1, -0x00,0x0f,0xfa,0x00,0x07,0xff,0xf2,0x01,0xee,0x5f,0xa0,0x9f,0x60,0xbf,0x30,0xdf, -0x20,0x9f,0x57,0xf7,0x0e,0xf0,0x2f,0xb3,0xfa,0x00,0xdf,0x8f,0x50,0x07,0xff,0xf0, -0x00,0x2f,0x55,0x00,0xf0,0x08,0x0b,0xf0,0x00,0x29,0xf9,0x00,0x03,0xfc,0x10,0x00, -0x7f,0xff,0xff,0x13,0x77,0xbf,0xb0,0x00,0x1e,0xe1,0x00,0x0c,0xf4,0x4d,0x03,0xf6, -0x1b,0x04,0xff,0x87,0x71,0x8f,0xff,0xff,0x20,0x00,0x16,0x00,0x1e,0xc0,0x07,0xf3, -0x00,0x8f,0x10,0x09,0xf1,0x01,0xce,0x00,0xbf,0x40,0x03,0xec,0x00,0x09,0xf0,0x00, -0x8f,0x10,0x07,0xf2,0x00,0x2f,0xa0,0x00,0x39,0x00,0xe3,0x01,0x00,0xf0,0x16,0x43, -0x00,0x8f,0x40,0x0e,0xb0,0x0c,0xd0,0x0c,0xd0,0x09,0xf3,0x01,0xef,0x08,0xf6,0x0c, -0xe0,0x0c,0xd0,0x0d,0xc0,0x6f,0x60,0x65,0x00,0x07,0xec,0x30,0xba,0x2f,0xbc,0xf9, -0xf7,0x2a,0x10,0x9e,0x3c,0x05,0x10,0x30,0x9d,0x07,0xf0,0x15,0x4f,0x50,0x00,0x00, -0x00,0x04,0xee,0x40,0x0c,0xff,0xff,0xfc,0x3e,0x40,0xe4,0x22,0x22,0x00,0x4e,0x3e, -0x20,0x00,0x00,0x00,0x8d,0xe3,0x11,0x11,0x00,0x3e,0x4d,0xff,0xff,0xfb,0x3e,0x40, -0x21,0x00,0x10,0x50,0x2c,0x00,0x10,0x60,0x74,0x08,0x24,0x40,0x00,0x3c,0x00,0x10, -0x5f,0x0b,0x00,0x20,0x4e,0xe4,0x05,0x00,0x11,0x3c,0x3f,0x00,0x50,0x02,0x22,0x24, -0xed,0x80,0xb4,0x0d,0xe0,0x4e,0x30,0x01,0x11,0x13,0xe0,0x4e,0x3b,0xff,0xff,0xfd, -0x00,0x5e,0xe4,0x2c,0x00,0x21,0x6f,0x40,0x4c,0x17,0x01,0x68,0x08,0x20,0x2b,0x20, -0x24,0x00,0xf3,0x15,0xee,0x20,0x00,0x00,0x2e,0xa0,0xae,0x20,0x00,0x1d,0xa0,0x00, -0xad,0x10,0x1d,0xd4,0x00,0x04,0xdd,0x13,0xcc,0xf2,0x02,0xfc,0xc3,0x00,0x0f,0x20, -0x2f,0x00,0x00,0x00,0xf2,0x02,0xf0,0x00,0x0b,0x00,0xe0,0xf3,0x13,0xf0,0x00,0x00, -0x0d,0xff,0xfd,0x00,0x00,0x00,0x0c,0xff,0xfc,0x11,0x00,0x3d,0x23,0xf0,0x00,0x27, -0x00,0xf0,0x0a,0x33,0xf2,0x02,0xf3,0x30,0x3f,0xfd,0x10,0x1d,0xff,0x30,0x6e,0x30, -0x00,0x3e,0x60,0x00,0x5e,0x40,0x4e,0x50,0x00,0x00,0x4e,0x8e,0x76,0x00,0x26,0x3c, -0x30,0xd2,0x17,0x11,0xa0,0x91,0x00,0x00,0xd2,0x00,0x20,0x0e,0xfe,0x61,0x0b,0xf0, -0x15,0xf4,0xf6,0x00,0x00,0x00,0xe9,0x09,0xe0,0x00,0x00,0x7f,0x10,0x1f,0x70,0x00, -0x1f,0x80,0x00,0x8f,0x10,0x08,0xe0,0x00,0x00,0xe8,0x01,0xfc,0x88,0x88,0x8c,0xf1, -0x9f,0xff,0xff,0xff,0xff,0xca,0x08,0xf0,0x2e,0x3b,0xc5,0x00,0x00,0x02,0x1e,0x86, -0xf2,0x00,0x4d,0xf7,0xf0,0x0d,0x50,0x4f,0x60,0x7f,0xb9,0xf1,0x0e,0x60,0x09,0xff, -0xe6,0x04,0xe0,0x00,0xcf,0xa1,0xd4,0x5c,0x00,0x0e,0x60,0x0c,0x63,0xe0,0x01,0x20, -0x00,0xe4,0x0e,0x60,0x00,0x00,0x6e,0x00,0x4f,0x70,0x00,0x7f,0x50,0x00,0x4d,0xfe, -0xfd,0x40,0x00,0x00,0x02,0x42,0x3b,0x01,0xf0,0x0b,0x11,0x10,0x00,0x00,0x00,0xbf, -0xff,0x72,0x00,0x08,0xc1,0xdf,0xc3,0xf5,0x04,0x98,0x02,0xe2,0x07,0xb4,0x5d,0x00, -0x01,0x00,0x1b,0x4d,0x5f,0x00,0xf0,0x3e,0xbe,0x68,0x00,0x00,0x00,0x09,0x6a,0xd0, -0x00,0x00,0x00,0xb9,0x1a,0xa0,0x00,0x00,0x9d,0x00,0x88,0xc4,0x25,0xb9,0x60,0x00, -0x69,0xe9,0xf6,0x70,0x00,0x00,0x05,0x25,0x00,0x00,0x00,0x28,0x01,0x32,0x00,0x00, -0x01,0xee,0xef,0xef,0xd5,0x00,0x0d,0x90,0xbc,0x10,0x5f,0x70,0x0b,0xc1,0x0b,0xd0, -0x03,0xf3,0x07,0xfd,0x1a,0xc0,0x00,0x99,0x0b,0x7a,0xfc,0x10,0x00,0x5c,0x0b,0x60, -0x61,0x00,0x00,0x5c,0x08,0xe4,0x00,0xf3,0x04,0x89,0x01,0xf4,0x00,0x00,0x02,0xf3, -0x00,0x6f,0x60,0x00,0x5e,0x70,0x00,0x04,0xdf,0xef,0xd5,0x00,0x8a,0x00,0xf0,0x20, -0x0c,0xee,0xee,0xee,0x10,0x01,0xfa,0x66,0x6b,0xb0,0x00,0x6f,0x10,0x00,0xd5,0x00, -0x0b,0xb0,0x00,0x5e,0x00,0x00,0x7e,0x00,0x6d,0x40,0x00,0x2d,0xf3,0x7b,0x10,0x00, -0x0d,0x8b,0x3d,0xd0,0x00,0x03,0xf0,0xd4,0x8e,0x30,0x00,0x3f,0x15,0x10,0xf3,0xc8, -0x0b,0x60,0x8d,0x00,0x00,0x02,0xdf,0xfd,0xba,0x01,0x20,0x33,0x00,0xa8,0x00,0xc0, -0xaa,0x60,0x00,0x00,0xef,0xfa,0x10,0xcb,0xbb,0xba,0xaa,0xbc,0xd8,0x09,0xf0,0x03, -0xc0,0x5f,0xff,0xd0,0xbc,0x00,0x22,0x21,0x0c,0xc0,0x13,0x33,0x20,0xcc,0x05,0xee, -0xec,0x0c,0x64,0x02,0xd0,0xc9,0xcb,0xde,0xed,0xb9,0x00,0x0e,0xff,0xa0,0x00,0x00, -0x56,0x63,0x38,0x00,0xf0,0x2a,0x57,0x62,0x04,0x00,0x06,0xef,0xff,0xf1,0xad,0x47, -0xfb,0x30,0x24,0x0a,0x39,0xfa,0x00,0x00,0x00,0xa2,0x03,0xc5,0x00,0x00,0x0a,0x20, -0x00,0xc8,0x00,0x00,0xa2,0x00,0x98,0x00,0x00,0x0a,0x22,0xc6,0x00,0x00,0x00,0xa7, -0xcf,0xb0,0x00,0x00,0x0a,0xa0,0x5f,0xc5,0x23,0x50,0x20,0x00,0x4d,0xff,0xff,0x49, -0x0a,0xf0,0x19,0x54,0x00,0x89,0x99,0x99,0x99,0x8c,0x2f,0xd1,0x11,0x2b,0xb0,0x65, -0x06,0xef,0xfb,0x0b,0x93,0xdf,0xff,0xb0,0xfd,0x00,0x69,0xdb,0x02,0x20,0x00,0x0b, -0xb0,0xeb,0x00,0x00,0xbb,0x0f,0xd0,0x00,0x0b,0xb0,0x76,0x09,0x00,0x81,0xe0,0x00, -0x0b,0xea,0xff,0xaa,0xaa,0xe0,0xf2,0x01,0xf0,0x2b,0x18,0xde,0xd8,0x10,0x00,0x3e, -0xad,0x6a,0xbe,0x30,0x1e,0x70,0xc5,0x70,0x7e,0x18,0xb0,0x0c,0x57,0x00,0xb8,0xc5, -0x00,0xbd,0x60,0x05,0xce,0x30,0x24,0x06,0x90,0x2e,0xd4,0x4b,0xe3,0xe7,0xc7,0xd9, -0xcb,0x8b,0x04,0xc6,0xd9,0x2f,0xa9,0x00,0x00,0xbf,0x20,0x5f,0x71,0x01,0x7e,0x50, -0x00,0x3b,0xff,0xfb,0x37,0x02,0xf2,0x32,0x20,0x00,0x00,0x03,0xbd,0x80,0x00,0x00, -0x03,0xe6,0x4b,0xb0,0x00,0x00,0xa7,0x00,0x0f,0x12,0x62,0x0a,0x60,0x00,0xe7,0xff, -0xf4,0x6d,0x10,0x6d,0xbf,0xff,0xb0,0x9f,0xef,0x7a,0xff,0xfa,0x07,0xe9,0xcf,0xff, -0xfe,0x23,0xe1,0x4f,0xff,0xff,0xe1,0x96,0x1e,0xff,0xff,0xff,0x8c,0x38,0xff,0xff, -0xff,0xfb,0xcf,0xfd,0xdd,0xdd,0xdd,0x90,0x11,0x77,0x02,0x20,0x61,0x00,0x6b,0x03, -0x11,0xd2,0x06,0x00,0xf1,0x05,0xe3,0x00,0x02,0x43,0x33,0x37,0xe3,0x00,0xaf,0xff, -0xff,0xff,0xf4,0x03,0x66,0x66,0x66,0x66,0x60,0x09,0x67,0x02,0x90,0x08,0xf9,0x88, -0x88,0x95,0x00,0x07,0xd1,0x00,0x99,0x02,0x01,0x06,0x00,0x25,0x05,0x90,0xb9,0x02, -0x20,0x68,0x50,0xc1,0x01,0xf0,0x24,0x48,0xc9,0x10,0x00,0x00,0x8c,0xa4,0x4c,0x30, -0x00,0x03,0x22,0x8b,0x20,0x00,0x00,0x5a,0xc5,0x10,0x00,0x06,0x86,0x97,0x30,0x00, -0x1c,0xb0,0x10,0xab,0x00,0x0a,0xf2,0x7f,0x82,0xf9,0x00,0xaf,0x29,0xfa,0x1f,0x90, -0x01,0xda,0x04,0x09,0xd1,0x00,0x01,0x8b,0x9a,0x81,0x76,0x02,0xfa,0x0a,0xfd,0x10, -0x0d,0x63,0x36,0x9d,0x10,0xd3,0x00,0xb0,0xbd,0x0d,0x30,0x0a,0xc9,0xe3,0xd3,0x00, -0x00,0x0d,0x3d,0x30,0x00,0x00,0xd3,0x09,0x00,0x60,0x40,0x00,0x00,0xd3,0xcf,0xff, -0x74,0x04,0x01,0xbc,0x0b,0x10,0x53,0x06,0x00,0xf0,0x2b,0xa9,0x6a,0x90,0x00,0x00, -0x06,0x70,0x00,0x8d,0xc7,0x00,0x0a,0x10,0x00,0x00,0x09,0x40,0x1d,0x10,0x00,0x47, -0x33,0x90,0xa3,0x38,0xcf,0xda,0x33,0x80,0xc0,0x68,0x58,0x00,0x04,0xb0,0xb0,0x00, -0x4f,0x90,0x00,0xa2,0xa1,0x00,0xdf,0xf3,0x00,0x83,0x2c,0x20,0x00,0x00,0x01,0xc0, -0x02,0xbb,0xbb,0xbb,0xbb,0x3f,0x01,0x11,0x4d,0xf2,0x00,0xf0,0x1b,0xf0,0x87,0x00, -0x00,0x00,0x7f,0x2f,0x40,0x19,0xd8,0x6e,0xae,0x30,0x0a,0xb3,0x7b,0x60,0xd4,0x01, -0xf1,0x00,0x9b,0x4f,0x20,0x5b,0x00,0x01,0xbf,0x60,0x08,0x70,0x00,0x04,0xf0,0x00, -0xa5,0x00,0x00,0x4f,0x00,0x0c,0x30,0x0b,0x00,0x10,0xe2,0x0b,0x00,0x02,0x01,0x00, -0xc0,0x07,0xe8,0x01,0xe0,0xd2,0x1e,0x0d,0x20,0x8e,0x80,0x00,0x8f,0x00,0x01,0x23, -0xae,0x10,0x19,0x00,0xf1,0x19,0xbf,0x70,0x00,0x00,0x1f,0xfd,0x00,0x00,0x07,0xfc, +0x08,0x08,0x03,0x00,0x02,0xd4,0x0a,0x10,0x05,0x05,0x04,0x00,0x06,0xde,0x0a,0xc0, +0x08,0x09,0x0c,0x00,0x00,0x14,0x0b,0x08,0x00,0x13,0x4a,0x08,0x00,0x13,0x80,0x08, +0x00,0x13,0xb6,0x08,0x00,0x13,0xec,0x08,0x00,0x40,0x22,0x0c,0x40,0x0c,0x78,0x01, +0x30,0x58,0x0c,0x80,0x10,0x00,0xa3,0xfd,0x8e,0x0c,0x50,0x07,0x08,0x0c,0x00,0x00, +0xbe,0x08,0x00,0x13,0xee,0x08,0x00,0x22,0x1e,0x0d,0x08,0x00,0xf3,0x0a,0x4e,0x0d, +0xd0,0x03,0x04,0x0c,0xff,0x00,0x66,0x0d,0xd0,0x03,0x05,0x0c,0x00,0x00,0x84,0x0d, +0xd0,0x03,0x06,0x0c,0xff,0x00,0xa8,0x08,0x00,0xc0,0xcc,0x0d,0xa0,0x08,0x0a,0x09, +0xff,0x00,0xf9,0x0d,0x30,0x09,0x60,0x00,0x31,0x2f,0x0e,0x00,0x08,0x00,0x13,0x65, +0x08,0x00,0x13,0x9b,0x08,0x00,0x13,0xd1,0x08,0x00,0x22,0x07,0x0f,0x08,0x00,0x40, +0x3d,0x0f,0xf0,0x06,0x60,0x03,0xc0,0x56,0x0f,0xf0,0x08,0x09,0x0b,0x00,0xff,0x88, +0x0f,0x90,0x08,0x70,0x00,0x13,0xb8,0x08,0x00,0x13,0xe8,0x08,0x00,0x22,0x18,0x10, +0x08,0x00,0x31,0x48,0x10,0x10,0xc0,0x00,0x31,0x7e,0x10,0xf0,0x20,0x02,0x40,0xa2, +0x10,0x30,0x08,0xa0,0x01,0x31,0xca,0x10,0x00,0xc0,0x01,0x13,0xed,0x08,0x00,0x22, +0x10,0x11,0x08,0x00,0x13,0x33,0x08,0x00,0x10,0x56,0x08,0x00,0x00,0xa8,0x02,0x00, +0x08,0x00,0x61,0x0b,0x00,0x00,0x9d,0x11,0x00,0xc8,0x01,0x31,0xc4,0x11,0xc0,0x70, +0x01,0x13,0xe7,0x28,0x00,0x22,0x0a,0x12,0x08,0x00,0x13,0x2d,0x08,0x00,0x22,0x50, +0x12,0x38,0x00,0xc0,0x70,0x12,0x90,0x03,0x04,0x0a,0xff,0x00,0x84,0x12,0x90,0x03, +0x38,0x02,0x90,0x9d,0x12,0x90,0x03,0x06,0x0a,0xff,0x00,0xbb,0x08,0x00,0x70,0x09, +0xff,0x00,0xd6,0x12,0x80,0x07,0x88,0x00,0x22,0xfe,0x12,0x48,0x02,0x31,0x21,0x13, +0x60,0x08,0x00,0x13,0x44,0x08,0x00,0x13,0x67,0x08,0x00,0x13,0x8a,0x08,0x00,0x31, +0xad,0x13,0x60,0x58,0x00,0x31,0xcd,0x13,0x70,0x60,0x04,0x30,0xe6,0x13,0x50,0x10, +0x00,0x32,0xff,0x06,0x14,0x40,0x00,0x13,0x29,0x08,0x00,0x13,0x4c,0x08,0x00,0x22, +0x6f,0x14,0x90,0x03,0xc0,0x8f,0x14,0x80,0x06,0x07,0x0d,0x00,0xfd,0xbd,0x14,0x60, +0x07,0x08,0x00,0x10,0xeb,0x10,0x00,0x60,0x0c,0x00,0xfd,0x15,0x15,0xc0,0x40,0x01, +0x32,0x00,0x47,0x15,0xb0,0x00,0x22,0x67,0x15,0xe8,0x01,0x22,0x9d,0x15,0xc8,0x00, +0x12,0xc0,0x10,0x00,0x22,0xfd,0xf6,0x10,0x00,0x41,0xfd,0x19,0x16,0x80,0x20,0x00, +0x21,0x4f,0x16,0x00,0x01,0x23,0x00,0x72,0x10,0x00,0x13,0xa8,0x10,0x00,0x13,0xcb, +0x10,0x00,0x22,0x01,0x17,0x10,0x00,0x22,0x24,0x17,0x10,0x00,0x13,0x5a,0x10,0x00, +0x31,0x7d,0x17,0x70,0x90,0x01,0xa2,0xad,0x17,0x40,0x08,0x09,0x0a,0x00,0x00,0xda, +0x17,0x00,0x02,0x22,0x07,0x18,0x90,0x01,0xa2,0x2f,0x18,0x50,0x07,0x08,0x0b,0x00, +0x00,0x5b,0x18,0x90,0x00,0x22,0x7b,0x18,0x48,0x02,0x22,0xab,0x18,0x90,0x00,0x13, +0xce,0x10,0x00,0x13,0xfe,0x10,0x00,0x21,0x21,0x19,0x10,0x00,0x32,0xfd,0x51,0x19, +0xa0,0x00,0x22,0x74,0x19,0x20,0x00,0x22,0xa4,0x19,0x20,0x00,0x31,0xc7,0x19,0xe0, +0x80,0x00,0x31,0xfd,0x19,0x70,0xf8,0x00,0x22,0x2b,0x1a,0x10,0x00,0x22,0x61,0x1a, +0x10,0x00,0x13,0x8f,0x10,0x00,0x13,0xc5,0x10,0x00,0x10,0xf3,0x10,0x00,0xd2,0x0d, +0x00,0xfc,0x2e,0x1b,0x70,0x07,0x07,0x0e,0x00,0xfd,0x5f,0x1b,0x98,0x02,0x30,0x95, +0x1b,0x40,0x08,0x06,0x41,0x00,0xbf,0x1b,0x60,0x08,0x06,0xa2,0xec,0x1b,0x70,0x07, +0x08,0x0a,0xff,0x00,0x14,0x1c,0xc8,0x02,0x22,0x38,0x1c,0xd8,0x01,0x10,0x56,0x10, +0x00,0xc3,0x0b,0xff,0x00,0x77,0x1c,0x90,0x03,0x05,0x09,0xff,0x00,0x8e,0x20,0x00, +0x20,0xb2,0x1c,0x00,0x02,0xf2,0x04,0xff,0x00,0xcb,0x1c,0xd0,0x03,0x03,0x0c,0x00, +0xfd,0xdd,0x1c,0x70,0x03,0x03,0x0d,0x00,0xfd,0xf1,0x10,0x00,0x41,0x00,0x03,0x1d, +0x90,0xb8,0x05,0x31,0x0e,0x1d,0x10,0x28,0x05,0x31,0x40,0x1d,0xd0,0xb0,0x01,0x31, +0x6e,0x1d,0x40,0xd0,0x00,0xb1,0x9e,0x1d,0xb0,0x03,0x06,0x0d,0xff,0xfd,0xc5,0x1d, +0x40,0x90,0x01,0xf1,0x04,0xfb,0x1d,0xf0,0x06,0x08,0x0e,0x00,0xfc,0x33,0x1e,0xb0, +0x07,0x08,0x07,0x00,0x00,0x4f,0x1e,0x10,0xa0,0x00,0x31,0x79,0x1e,0x70,0x68,0x03, +0x30,0x97,0x1e,0x10,0xd0,0x00,0xb2,0xfc,0xc5,0x1e,0x70,0x03,0x03,0x0e,0x00,0xfc, +0xda,0x1e,0x88,0x05,0x31,0xfa,0x1e,0x60,0xc0,0x04,0x22,0x13,0x1f,0x10,0x00,0xa2, +0x33,0x1f,0xd0,0x04,0x06,0x0a,0x00,0x00,0x51,0x1f,0x28,0x02,0xa2,0x71,0x1f,0x00, +0x04,0x04,0x0a,0x00,0x00,0x85,0x1f,0xf8,0x00,0x22,0xbb,0x1f,0x48,0x02,0x40,0xde, +0x1f,0x30,0x09,0x18,0x01,0x30,0x19,0x20,0x40,0x08,0x03,0x32,0xfc,0x40,0x20,0x20, +0x00,0x22,0x76,0x20,0x20,0x00,0x31,0x99,0x20,0x40,0x10,0x01,0x40,0xc1,0x20,0x20, +0x09,0xa0,0x00,0x22,0xf7,0x20,0xd8,0x04,0x21,0x1a,0x21,0xd8,0x05,0x32,0x00,0x4c, +0x21,0xb8,0x02,0x22,0x6c,0x21,0xc0,0x03,0x22,0xa2,0x21,0xd0,0x02,0x13,0xc5,0x10, +0x00,0x31,0xfb,0x21,0x60,0x08,0x03,0x31,0x23,0x22,0x90,0x60,0x04,0xb1,0x59,0x22, +0xc0,0x0b,0x0c,0x07,0x00,0x00,0x83,0x22,0x50,0xa0,0x01,0x31,0xb9,0x22,0xc0,0xb8, +0x00,0x31,0xd2,0x22,0x50,0xa0,0x01,0xb2,0x0d,0x23,0xc0,0x04,0x05,0x0c,0x00,0xfc, +0x2b,0x23,0x50,0xd0,0x01,0x21,0x23,0xc0,0xc8,0x00,0x31,0x7f,0x23,0x00,0x60,0x02, +0x31,0xaf,0x23,0xb0,0x70,0x02,0x13,0xd2,0x10,0x00,0x22,0x02,0x24,0x10,0x00,0x21, +0x25,0x24,0x10,0x00,0x22,0xfd,0x55,0x10,0x00,0x32,0xfd,0x78,0x24,0x20,0x00,0x13, +0xa8,0x20,0x00,0x31,0xcb,0x24,0x10,0x20,0x00,0x30,0xfb,0x24,0x60,0x60,0x00,0x41, +0xfd,0x19,0x25,0x10,0x20,0x00,0xa2,0x49,0x25,0xa0,0x04,0x06,0x0b,0x00,0x00,0x6a, +0x25,0x90,0x06,0x40,0x8e,0x25,0x60,0x04,0xc0,0x03,0x22,0xa9,0x25,0x60,0x04,0x22, +0xd9,0x25,0x08,0x01,0x40,0xfc,0x25,0x90,0x08,0xc0,0x02,0x22,0x28,0x26,0x50,0x01, +0x22,0x48,0x26,0x20,0x00,0x22,0x78,0x26,0x20,0x00,0x10,0x9b,0x10,0x00,0x61,0x0d, +0x00,0x00,0xcf,0x26,0x40,0x50,0x04,0x13,0xf6,0x20,0x00,0x22,0x26,0x27,0x20,0x00, +0x31,0x49,0x27,0x90,0x80,0x00,0x12,0x79,0x10,0x00,0x40,0xfd,0x9c,0x27,0x60,0xa0, +0x07,0xb2,0x00,0xe4,0x27,0x90,0x09,0x0a,0x0a,0x00,0x00,0x16,0x28,0xc8,0x04,0x22, +0x4c,0x28,0xd0,0x03,0x13,0x7a,0x10,0x00,0x31,0xb0,0x28,0xe0,0x28,0x02,0x31,0xe0, +0x28,0xa0,0xc8,0x00,0x22,0x03,0x29,0x10,0x00,0x22,0x33,0x29,0x10,0x00,0x13,0x56, +0x10,0x00,0x13,0x86,0x10,0x00,0x31,0xa9,0x29,0x60,0x90,0x04,0x30,0xc2,0x29,0xb0, +0xf0,0x08,0x70,0x03,0xca,0x29,0xb0,0x06,0x07,0x08,0x08,0x09,0xf2,0xff,0x15,0x43, +0x02,0x2f,0xc1,0xfb,0x1f,0xb0,0xfa,0x0f,0xa0,0xf9,0x06,0x31,0xd9,0x1e,0xa0,0x9a, +0x8b,0x9a,0x8b,0x98,0x89,0x43,0x44,0x00,0x1f,0x0b,0x70,0x00,0x5d,0x0f,0x30,0x2f, +0xff,0xff,0xf7,0x01,0xb8,0x6d,0x10,0x00,0xe4,0x7a,0x00,0x8f,0xff,0xff,0xf0,0x15, +0xf2,0xd6,0x20,0x06,0xc0,0xf2,0x00,0x08,0xa2,0xf0,0x00,0x00,0x09,0x70,0x00,0x05, +0xdb,0x30,0x09,0xfe,0xff,0x40,0xfd,0x02,0xfb,0x0f,0xe1,0x04,0x40,0x7f,0xf8,0x10, +0x00,0x4b,0xfe,0x31,0x41,0x04,0xfb,0x4f,0x90,0x1f,0xc0,0xdf,0xce,0xf7,0x01,0x8e, +0xc5,0x00,0x00,0xb5,0x00,0x0a,0xfc,0x10,0x00,0x00,0x5e,0x2c,0x80,0xb3,0x00,0x5e, +0x0b,0x96,0xc0,0x00,0x0c,0xfe,0x4e,0x20,0x00,0x00,0x10,0xb7,0x00,0x00,0x00,0x06, +0xc5,0xdd,0x50,0x00,0x2e,0x2e,0x77,0xf0,0x00,0xa7,0x0e,0x65,0xf0,0x00,0x00,0x06, +0xee,0x70,0x01,0xbf,0xd5,0x00,0x00,0x9f,0x9d,0xf0,0x00,0x0a,0xf0,0x9f,0x00,0x00, +0x4f,0xdf,0x50,0x00,0x05,0xff,0x90,0x66,0x04,0xfb,0xbf,0x6e,0xb0,0x8f,0x50,0xdf, +0xf6,0x04,0xfd,0x6a,0xff,0x30,0x06,0xdf,0xe9,0xfd,0x10,0x9b,0x9b,0x9a,0x44,0x00, +0x01,0x00,0x02,0xe2,0x00,0xd9,0x00,0x7f,0x10,0x0d,0xb0,0x00,0xf7,0x00,0x2f,0x60, +0x03,0xf5,0x00,0x2f,0x60,0x00,0xf8,0x00,0x0b,0xc0,0x00,0x4f,0x30,0x00,0xad,0x10, +0x00,0x91,0x10,0x00,0x9a,0x00,0x2e,0x70,0x07,0xf1,0x02,0xf6,0x00,0xea,0x00,0xdc, +0x00,0xcd,0x00,0xdc,0x00,0xf9,0x03,0xf4,0x0a,0xd0,0x5f,0x30,0x74,0x00,0x00,0x99, +0x00,0x43,0x88,0x23,0x8e,0xfe,0xf8,0x02,0xff,0x20,0x0d,0x79,0xc0,0x05,0x01,0x50, +0x00,0x4b,0x40,0x00,0x05,0xf6,0x00,0x00,0x5f,0x60,0x0a,0xff,0xff,0xfb,0x6a,0xcf, +0xca,0x70,0x0e,0x00,0xf0,0x17,0x00,0x1f,0x72,0xf6,0x5f,0x26,0x70,0x02,0x22,0x04, +0xff,0xf4,0x15,0x55,0x10,0x1d,0x91,0xea,0x00,0x00,0xd8,0x00,0x03,0xf2,0x00,0x08, +0xd0,0x00,0x0d,0x70,0x00,0x3f,0x20,0x00,0x8c,0x00,0x00,0xe7,0x11,0x00,0xf8,0x22, +0x09,0xc0,0x00,0x0e,0x70,0x00,0x02,0xbf,0xd6,0x00,0xdf,0x8c,0xf5,0x3f,0x90,0x1f, +0xa5,0xf7,0x00,0xfd,0x6f,0x70,0x0f,0xd5,0xf7,0x00,0xfc,0x3f,0x90,0x2f,0xa0,0xdf, +0x8c,0xf5,0x02,0xbf,0xd7,0x00,0x02,0x8d,0x1c,0xff,0xf1,0x95,0xcf,0x10,0x0c,0xf1, +0x00,0x05,0x00,0xf0,0xb5,0x04,0xcf,0xe8,0x02,0xfe,0x8c,0xf6,0x7f,0x50,0x3f,0xa0, +0x00,0x06,0xf7,0x00,0x03,0xfd,0x00,0x03,0xee,0x10,0x03,0xee,0x20,0x02,0xef,0x97, +0x77,0x6f,0xff,0xff,0xf0,0x05,0xdf,0xd7,0x03,0xfe,0x8c,0xf6,0x38,0x30,0x3f,0x90, +0x01,0x29,0xf6,0x00,0x8f,0xfa,0x00,0x02,0x59,0xf7,0x5a,0x30,0x1f,0xc4,0xfe,0x8b, +0xf8,0x05,0xdf,0xe8,0x00,0x00,0x02,0xff,0x10,0x00,0x0b,0xff,0x10,0x00,0x5f,0xff, +0x10,0x01,0xea,0xcf,0x10,0x09,0xe1,0xcf,0x10,0x3f,0x82,0xcf,0x30,0x9f,0xff,0xff, +0xf1,0x35,0x55,0xdf,0x50,0x00,0x00,0xcf,0x10,0x0a,0xff,0xff,0x90,0xbf,0x88,0x85, +0x0d,0xc0,0x00,0x00,0xff,0xff,0xb1,0x09,0x95,0x9f,0x90,0x00,0x00,0xfd,0x2a,0x60, +0x0f,0xd0,0xef,0x8b,0xf8,0x03,0xcf,0xe8,0x00,0x00,0x2a,0xe9,0x00,0x3f,0xfa,0x50, +0x0d,0xe2,0x10,0x03,0xfd,0xef,0xd2,0x5f,0xe6,0x9f,0xb5,0xf7,0x00,0xee,0x3f,0x90, +0x0e,0xe0,0xcf,0x9b,0xf9,0x01,0xae,0xe9,0x00,0x9f,0xff,0xff,0xe4,0x88,0x89,0xfb, +0x00,0x00,0x7f,0x30,0x00,0x0e,0xc0,0x00,0x07,0xf5,0x00,0x00,0xee,0x00,0x00,0x6f, +0x70,0x00,0x0d,0xf1,0x00,0x05,0xf9,0x00,0x00,0x44,0x00,0xf0,0x30,0xef,0x8c,0xf6, +0x2f,0xa0,0x3f,0x90,0xee,0x38,0xf6,0x04,0xff,0xfc,0x01,0xed,0x69,0xf7,0x5f,0x70, +0x0f,0xc2,0xfe,0x8b,0xf9,0x05,0xcf,0xe9,0x00,0x02,0xcf,0xd5,0x01,0xef,0x8d,0xf3, +0x5f,0x80,0x3f,0x96,0xf6,0x01,0xfc,0x3f,0xc2,0x7f,0xc0,0x9f,0xfe,0xfa,0x00,0x23, +0x7f,0x50,0x09,0xbf,0xc0,0x01,0xfd,0x80,0x00,0x1e,0xa1,0xd9,0x9b,0x02,0x71,0x01, +0xd9,0x1e,0xa0,0x2e,0x82,0xe8,0xaf,0x0b,0xf2,0x2e,0x85,0x0f,0x91,0xf6,0x6d,0x00, +0x10,0x00,0x01,0x7a,0x02,0x9f,0xfb,0x8f,0xe9,0x40,0x9f,0xd7,0x10,0x04,0xbf,0xfa, +0x00,0x02,0x9c,0x00,0x00,0x00,0x2f,0xff,0xff,0x81,0x88,0x88,0x84,0x18,0x88,0x88, +0x42,0xff,0xff,0xf8,0x3b,0x40,0x00,0x03,0xff,0xd6,0x00,0x00,0x6b,0xff,0x30,0x04, +0x9f,0xf4,0x2e,0xff,0x92,0x03,0xd6,0xf2,0x0b,0xf0,0x44,0x08,0xef,0xb2,0x7f,0xca, +0xfc,0x69,0x10,0xee,0x00,0x06,0xf9,0x00,0x5f,0xb0,0x00,0xbf,0x00,0x00,0x12,0x00, +0x00,0xbc,0x00,0x00,0xcd,0x00,0x00,0x04,0xbe,0xfd,0x70,0x00,0x00,0x8e,0x61,0x13, +0xbc,0x00,0x05,0xe2,0x00,0x00,0x0b,0x70,0x0d,0x60,0x3c,0xea,0x14,0xd0,0x3f,0x11, +0xf8,0x4f,0x21,0xf0,0x5e,0x07,0xe0,0x3f,0x00,0xf1,0x6c,0x0a,0xb0,0x5f,0x03,0xf0, +0x6d,0x09,0xd1,0xbf,0x2a,0x90,0x2f,0x12,0xde,0x6b,0xfa,0x00,0x0d,0x90,0x57,0x00, +0xf0,0x60,0x03,0xea,0x42,0x36,0x00,0x00,0x00,0x29,0xdf,0xea,0x00,0x00,0x00,0x0b, +0xf7,0x00,0x00,0x01,0xff,0xd0,0x00,0x00,0x7f,0xcf,0x30,0x00,0x0d,0xe2,0xf9,0x00, +0x03,0xf8,0x0c,0xf0,0x00,0x9f,0xa8,0xcf,0x50,0x0f,0xff,0xff,0xfb,0x06,0xf8,0x00, +0x0c,0xf2,0xcf,0x30,0x00,0x7f,0x80,0x2f,0xff,0xfc,0x50,0x2f,0xe8,0x9f,0xf3,0x2f, +0xb0,0x07,0xf7,0x2f,0xc1,0x2b,0xf3,0x2f,0xff,0xff,0xa0,0x2f,0xc4,0x4a,0xf6,0x2f, +0xb0,0x04,0xfa,0x2f,0xe8,0x8d,0xf6,0x2f,0xff,0xfd,0x80,0x00,0x8e,0xfd,0x60,0x00, +0xaf,0xc9,0xdf,0x70,0x2f,0xd0,0x00,0xfe,0x06,0xf8,0x00,0x01,0x20,0x7f,0x70,0x00, +0x00,0x09,0x00,0xf1,0x14,0x10,0x2f,0xc0,0x00,0xfe,0x00,0xbf,0xc9,0xdf,0x70,0x00, +0x9e,0xfd,0x60,0x00,0x2f,0xff,0xe9,0x10,0x2f,0xe8,0xbf,0xd0,0x2f,0xb0,0x08,0xf8, +0x2f,0xb0,0x02,0xfc,0x2f,0xb0,0x00,0xfe,0x08,0x00,0x00,0x10,0x00,0x31,0xe8,0xbf, +0xd1,0x20,0x00,0xe0,0xff,0xff,0xf0,0x2f,0xe8,0x88,0x80,0x2f,0xb0,0x00,0x00,0x2f, +0xd8,0x88,0xd7,0x03,0x11,0x60,0x0c,0x00,0x00,0x04,0x00,0x00,0x18,0x00,0x00,0x20, +0x00,0xf1,0x03,0xff,0xff,0xd2,0xfe,0x88,0x87,0x2f,0xb0,0x00,0x02,0xfe,0x88,0x83, +0x2f,0xff,0xff,0x62,0xfb,0x21,0x00,0x22,0x02,0xfb,0x28,0x00,0xf0,0x19,0x00,0x7d, +0xfd,0x80,0x00,0x9f,0xd9,0xcf,0xa0,0x1f,0xe0,0x00,0xab,0x05,0xf9,0x00,0x11,0x10, +0x6f,0x80,0x8f,0xff,0x25,0xf9,0x02,0x4d,0xf2,0x1f,0xe0,0x00,0xcf,0x20,0x9f,0xd9, +0xaf,0xf1,0x00,0x7d,0xfe,0xb3,0x2d,0x00,0x61,0x9f,0x52,0xfb,0x00,0x09,0xf5,0x09, +0x00,0x86,0xfe,0x88,0x8c,0xf5,0x2f,0xff,0xff,0xff,0x12,0x00,0x04,0x09,0x00,0x46, +0x50,0x0f,0xd0,0xfd,0x03,0x00,0x00,0x36,0x01,0x4a,0x70,0x00,0x07,0xf7,0x07,0x00, +0xf0,0x0c,0x8c,0x20,0x8f,0x66,0xfd,0x9f,0xf2,0x08,0xef,0xc4,0x00,0x2f,0xb0,0x07, +0xfc,0x02,0xfb,0x04,0xfe,0x10,0x2f,0xb2,0xef,0x30,0x02,0xfc,0xcf,0xfa,0x00,0xf6, +0x06,0xf5,0x00,0x02,0xff,0xbf,0xe1,0x00,0x2f,0xc0,0x8f,0xa0,0x02,0xfb,0x00,0xdf, +0x50,0x2f,0xb0,0x03,0xfe,0x10,0xb4,0x00,0x0b,0x07,0x00,0xf0,0x48,0xfe,0x88,0x86, +0x2f,0xff,0xff,0xc0,0x2f,0xf7,0x00,0x02,0xff,0x82,0xff,0xd0,0x00,0x7f,0xf8,0x2f, +0xef,0x30,0x0d,0xef,0x82,0xfa,0xf9,0x03,0xf9,0xf8,0x2f,0xaa,0xe0,0x9f,0x5f,0x82, +0xfa,0x4f,0x5e,0xa5,0xf8,0x2f,0xb0,0xee,0xf4,0x5f,0x82,0xfb,0x08,0xfe,0x05,0xf8, +0x2f,0xb0,0x2f,0x80,0x5f,0x80,0x2f,0xf1,0x00,0x9f,0x52,0xff,0xa0,0x09,0xf5,0x2f, +0xff,0x40,0x9f,0x52,0xfc,0xed,0x09,0xf5,0x2f,0xb6,0xf8,0x9f,0x52,0xfb,0x0c,0xfb, +0xf5,0x2f,0xb0,0x2f,0xdb,0x00,0x10,0x8f,0xd2,0x00,0xf0,0x0b,0xdf,0x50,0x00,0x7d, +0xfd,0x70,0x00,0x9f,0xda,0xdf,0x80,0x2f,0xe0,0x00,0xef,0x15,0xf9,0x00,0x09,0xf5, +0x7f,0x70,0x00,0x8f,0x66,0xf8,0xf2,0x00,0x81,0xd0,0x00,0xef,0x10,0x9f,0xd9,0xdf, +0x90,0x24,0x00,0xf5,0x09,0x2f,0xff,0xfd,0x70,0x2f,0xe9,0x9d,0xf8,0x2f,0xb0,0x01, +0xfd,0x2f,0xb0,0x05,0xfc,0x2f,0xff,0xff,0xf4,0x2f,0xe8,0x86,0x10,0x95,0x01,0x02, +0x71,0x01,0x12,0x60,0x4d,0x00,0x5f,0xd0,0x01,0xef,0x16,0xf8,0x4d,0x00,0x01,0xe0, +0x80,0x00,0x7d,0xff,0xf3,0x00,0x00,0x00,0x3e,0xf1,0x00,0x00,0x00,0x13,0x56,0x00, +0xe0,0x60,0x02,0xfe,0x89,0xef,0x50,0x2f,0xb0,0x05,0xf9,0x02,0xfb,0x00,0x8f,0xd9, +0x01,0xff,0x35,0xc1,0x02,0xfe,0x8d,0xf4,0x00,0x2f,0xb0,0x4f,0xc0,0x02,0xfb,0x00, +0xcf,0x40,0x2f,0xb0,0x04,0xfc,0x00,0x03,0xbf,0xfc,0x40,0x1e,0xf9,0x9f,0xf2,0x3f, +0xb0,0x05,0xc5,0x0e,0xf9,0x30,0x00,0x01,0xaf,0xfd,0x40,0x00,0x01,0x6e,0xf3,0x7e, +0x60,0x06,0xf7,0x2f,0xf9,0x8e,0xf4,0x03,0xbe,0xfd,0x50,0xcf,0xff,0xff,0xfc,0x68, +0x8f,0xf8,0x86,0x00,0x0f,0xf0,0x00,0x04,0x00,0x05,0x4f,0x4f,0xa0,0x01,0xfd,0x04, +0x00,0x01,0xf0,0x49,0x2f,0xc0,0x03,0xfb,0x0c,0xfb,0x9e,0xf5,0x01,0x9e,0xfd,0x50, +0xcf,0x40,0x00,0xdf,0x46,0xf9,0x00,0x2f,0xe0,0x1f,0xe0,0x06,0xf8,0x00,0xbf,0x30, +0xbf,0x30,0x05,0xf8,0x0f,0xd0,0x00,0x0f,0xc5,0xf7,0x00,0x00,0xaf,0xbf,0x20,0x00, +0x04,0xff,0xc0,0x00,0x00,0x0e,0xf6,0x00,0x00,0xaf,0x30,0x3f,0x90,0x0d,0xf1,0x7f, +0x60,0x7f,0xd0,0x0f,0xd0,0x3f,0x90,0xbf,0xf1,0x3f,0x90,0x0f,0xc0,0xeb,0xf5,0x6f, +0x50,0x0c,0xf3,0xf5,0xe8,0x9f,0x20,0x08,0xf9,0xf1,0xac,0xce,0x2d,0x00,0xf0,0x25, +0x6f,0xfa,0x00,0x01,0xff,0x80,0x2f,0xf7,0x00,0x00,0xdf,0x40,0x0e,0xf3,0x00,0x7f, +0xa0,0x06,0xfc,0x00,0xdf,0x30,0xef,0x20,0x04,0xfc,0x8f,0x80,0x00,0x0a,0xff,0xe0, +0x00,0x00,0x3f,0xf8,0x00,0x00,0x0b,0xff,0xe1,0x00,0x05,0xfc,0x8f,0x90,0x00,0xef, +0x30,0xef,0x30,0x8f,0x24,0x00,0xf0,0x06,0xbf,0x50,0x04,0xfc,0x03,0xfc,0x00,0xcf, +0x30,0x0a,0xf3,0x3f,0xb0,0x00,0x2f,0xba,0xf2,0x00,0x00,0x9f,0xfa,0xb0,0x03,0x12, +0x20,0xcf,0x00,0x31,0x00,0xff,0x00,0x09,0x00,0x00,0xe8,0x06,0xfd,0x1a,0xf6,0x48, +0x88,0x9f,0xf2,0x00,0x00,0xaf,0x60,0x00,0x06,0xfa,0x00,0x00,0x2f,0xe1,0x00,0x00, +0xcf,0x40,0x00,0x08,0xf8,0x00,0x00,0x4f,0xf8,0x88,0x84,0x8f,0xff,0xff,0xf8,0x01, +0x10,0x3f,0xf8,0x3f,0xb2,0x3f,0x90,0x02,0x00,0x70,0xa1,0x3f,0xf8,0x14,0x42,0xcf, +0x10,0x0f,0x05,0xf9,0x0d,0x1f,0xd0,0x00,0x0a,0xf3,0x00,0x04,0xf9,0x00,0x00,0xdf, +0x00,0x00,0x7f,0x60,0x00,0x1f,0xc0,0x00,0x0b,0xf2,0x00,0x05,0xf8,0x11,0x1e,0xfd, +0x4f,0xfa,0x02,0xf0,0x33,0xfd,0x2f,0xde,0xfd,0x44,0x30,0x00,0x74,0x00,0x04,0xfe, +0x00,0x0a,0xbf,0x50,0x1f,0x49,0xc0,0x8e,0x03,0xf3,0x22,0x22,0x21,0xff,0xff,0xfc, +0x55,0x55,0x53,0x4f,0x90,0x05,0xf4,0x05,0xdf,0xd4,0x03,0xfc,0x6e,0xf1,0x25,0x20, +0xaf,0x30,0x7d,0xef,0xf4,0x6f,0x92,0xaf,0x47,0xfb,0x7e,0xf4,0x0a,0xfd,0xaf,0x60, +0x4f,0x80,0x00,0x04,0xf8,0x00,0x00,0x07,0x00,0xf0,0x15,0xfb,0xde,0x90,0x4f,0xf9, +0xcf,0x74,0xf9,0x01,0xfc,0x4f,0x80,0x0f,0xd4,0xf8,0x01,0xfc,0x4f,0xf8,0xcf,0x74, +0xf9,0xde,0x90,0x03,0xcf,0xd5,0x01,0xfe,0x8e,0xf2,0x7f,0x60,0x3b,0x48,0xf4,0x88, +0x00,0xf0,0x01,0x27,0x31,0xfe,0x8d,0xf3,0x03,0xcf,0xd5,0x00,0x00,0x00,0x3f,0x90, +0x00,0x03,0xf9,0x07,0x00,0xf0,0x0a,0x5d,0xea,0xf9,0x2f,0xe9,0xdf,0x97,0xf6,0x04, +0xf9,0x8f,0x40,0x3f,0x97,0xf5,0x03,0xf9,0x2f,0xd6,0xcf,0x90,0x5d,0xe9,0xf9,0x03, +0xab,0x05,0xf3,0x17,0x8c,0xf3,0x6f,0x70,0x3f,0x88,0xff,0xff,0xfa,0x6f,0x93,0x33, +0x21,0xef,0x99,0xe4,0x02,0xbf,0xe9,0x00,0x01,0xbf,0x90,0x9f,0xb5,0x0c,0xf1,0x0d, +0xff,0xf6,0x4d,0xf6,0x20,0xcf,0x00,0x0c,0xf0,0x00,0x05,0x00,0xf0,0x1b,0x04,0xde, +0x9f,0xb1,0xff,0x9c,0xfb,0x6f,0x70,0x2f,0xb8,0xf4,0x02,0xfb,0x6f,0x60,0x2f,0xb1, +0xff,0x8c,0xfb,0x04,0xde,0xaf,0xb0,0x20,0x04,0xfa,0x0d,0xb7,0xdf,0x40,0x7d,0xfd, +0x60,0x5f,0x80,0x00,0x05,0xf8,0x00,0x00,0x07,0x00,0xf4,0x01,0xfa,0xcf,0xa0,0x5f, +0xe8,0xcf,0x65,0xf8,0x04,0xf9,0x5f,0x80,0x3f,0x95,0xf8,0x03,0x07,0x00,0x83,0x2e, +0x82,0xd7,0x00,0x03,0xfa,0x3f,0xa3,0x03,0x00,0x89,0x02,0xf8,0x02,0xd7,0x00,0x00, +0x03,0xfa,0x02,0x00,0x96,0xf9,0x5c,0xf7,0x9f,0xa0,0x4f,0x80,0x00,0x00,0x04,0x00, +0xf5,0x0b,0xbf,0x60,0x4f,0x89,0xf9,0x00,0x4f,0xef,0xb0,0x00,0x4f,0xff,0xc0,0x00, +0x4f,0xda,0xf6,0x00,0x4f,0x81,0xef,0x20,0x4f,0x80,0x5f,0xb0,0x4b,0x00,0x02,0x03, +0x00,0xf7,0x0c,0x4f,0x9c,0xfb,0x4d,0xfa,0x04,0xff,0x8d,0xff,0x9c,0xf5,0x4f,0x80, +0x5f,0x80,0x5f,0x84,0xf8,0x04,0xf8,0x04,0xf8,0x4f,0x80,0x4f,0x80,0x4f,0x0b,0x00, +0xb6,0x80,0x5f,0x9c,0xfb,0x05,0xff,0x8c,0xf6,0x5f,0x80,0x4f,0x9c,0x00,0x00,0x07, +0x00,0x50,0x90,0x03,0xcf,0xd6,0x01,0xa7,0x07,0xf0,0x10,0x60,0x1f,0xc8,0xf4,0x00, +0xee,0x6f,0x60,0x1f,0xc1,0xfe,0x8c,0xf5,0x03,0xcf,0xd6,0x00,0x4f,0xbd,0xe9,0x04, +0xfe,0x7b,0xf7,0x4f,0x80,0x1f,0xc4,0xf8,0x00,0xfd,0x07,0x00,0x30,0xff,0x8c,0xf7, +0x15,0x00,0x02,0xa5,0x01,0x00,0x07,0x00,0xd0,0x05,0xde,0x8f,0x92,0xfe,0x8d,0xf9, +0x7f,0x60,0x3f,0x98,0xf4,0x03,0x07,0x00,0x00,0x0e,0x00,0x34,0x05,0xde,0xaf,0x8c, +0x01,0x01,0x07,0x00,0xc2,0x04,0xfa,0xd9,0x4f,0xfc,0x64,0xf9,0x00,0x4f,0x80,0x04, +0xf8,0x05,0x00,0xf0,0x06,0x07,0xef,0xc4,0x04,0xfb,0x5e,0xf0,0x5f,0xa2,0x23,0x00, +0x8f,0xfe,0x60,0x24,0x04,0xdf,0x16,0xfa,0x5d,0xf1,0x18,0x05,0xf1,0x08,0x07,0x70, +0x00,0xfe,0x00,0xff,0xff,0x15,0xff,0x50,0x0f,0xe0,0x00,0xfe,0x00,0x0f,0xe0,0x00, +0xdf,0x81,0x05,0xee,0x10,0xb5,0x00,0x26,0x04,0xf9,0x07,0x00,0x00,0x67,0x00,0xf2, +0x5d,0x08,0xee,0x9f,0x90,0xcf,0x20,0x9f,0x46,0xf6,0x0d,0xf0,0x1f,0xb2,0xfa,0x00, +0xcf,0x6f,0x40,0x06,0xfe,0xf0,0x00,0x1f,0xfa,0x00,0x00,0xcf,0x50,0x00,0xbf,0x00, +0xf9,0x08,0xf3,0x7f,0x45,0xfd,0x0b,0xf0,0x3f,0x79,0xff,0x2e,0xb0,0x0e,0xae,0x8f, +0x9f,0x70,0x0b,0xff,0x3a,0xff,0x30,0x07,0xfe,0x06,0xff,0x00,0x03,0xf9,0x01,0xfb, +0x00,0x7f,0x70,0xcf,0x20,0xee,0x7f,0x90,0x05,0xff,0xe1,0x00,0x0f,0xfa,0x00,0x07, +0xff,0xf2,0x01,0xee,0x5f,0xa0,0x9f,0x60,0xbf,0x30,0xdf,0x20,0x9f,0x57,0xf7,0x0e, +0xf0,0x2f,0xb3,0xfa,0x00,0xdf,0x8f,0x50,0x07,0xff,0xf0,0x00,0x2f,0x55,0x00,0xf0, +0x08,0x0b,0xf0,0x00,0x29,0xf9,0x00,0x03,0xfc,0x10,0x00,0x7f,0xff,0xff,0x13,0x77, +0xbf,0xb0,0x00,0x1e,0xe1,0x00,0x0c,0xf4,0x4d,0x03,0xf6,0x1b,0x04,0xff,0x87,0x71, +0x8f,0xff,0xff,0x20,0x00,0x16,0x00,0x1e,0xc0,0x07,0xf3,0x00,0x8f,0x10,0x09,0xf1, +0x01,0xce,0x00,0xbf,0x40,0x03,0xec,0x00,0x09,0xf0,0x00,0x8f,0x10,0x07,0xf2,0x00, +0x2f,0xa0,0x00,0x39,0x00,0xe3,0x01,0x00,0xf3,0x29,0x43,0x00,0x8f,0x40,0x0e,0xb0, +0x0c,0xd0,0x0c,0xd0,0x09,0xf3,0x01,0xef,0x08,0xf6,0x0c,0xe0,0x0c,0xd0,0x0d,0xc0, +0x6f,0x60,0x65,0x00,0x07,0xec,0x30,0xba,0x2f,0xbc,0xf9,0xf7,0x2a,0x10,0x9e,0xb0, +0x07,0xe8,0x01,0xe0,0xd2,0x1e,0x0d,0x20,0x8e,0x80,0x00,0x8f,0x50,0x00,0x00,0x00, +0xae,0x10,0xff,0x13,0xf1,0x19,0xbf,0x70,0x00,0x00,0x1f,0xfd,0x00,0x00,0x07,0xfc, 0xf3,0x00,0x00,0xde,0x2f,0x90,0x00,0x3f,0x80,0xcf,0x00,0x09,0xfa,0x8c,0xf5,0x00, 0xff,0xff,0xff,0xb0,0x6f,0x80,0x00,0xcf,0x2c,0xf3,0x00,0x07,0xf8,0x00,0x37,0x00, 0x2f,0x2f,0x70,0x36,0x00,0x1c,0x7f,0x03,0x71,0x00,0x00,0x07,0xd7,0xd4,0x36,0x00, 0x1c,0xbf,0x6e,0x56,0xb0,0x00,0x0e,0x6b,0xf5,0x00,0x00,0x20,0x01,0x36,0x00,0x18, -0x7f,0x63,0x06,0x40,0x00,0x0d,0x80,0xb9,0x6c,0x00,0x1c,0x20,0x08,0x96,0xe4,0x03, -0x1f,0x60,0x0e,0x01,0x1d,0x30,0x4f,0xff,0xff,0x19,0x0a,0x70,0xfd,0x88,0x83,0x00, -0x06,0xfb,0xfb,0x05,0x05,0xf0,0x03,0xf2,0xfc,0x22,0x20,0x00,0x7f,0x80,0xff,0xff, -0xf0,0x01,0xff,0xa9,0xfe,0x55,0x40,0x09,0xff,0x6b,0x05,0x00,0xa0,0x0b,0x8f,0x77, -0x76,0xbf,0x60,0x00,0xef,0xff,0xfd,0x6a,0x0d,0x12,0x81,0x9f,0xfd,0x60,0x00,0x00, -0x5f,0x70,0x00,0x30,0x0e,0x10,0x00,0x7b,0x05,0x52,0xce,0x10,0x00,0x00,0x1e,0xbf, -0x02,0x0f,0x5f,0x0d,0x11,0x7f,0x00,0x00,0xdd,0x10,0x00,0x08,0xe2,0x30,0x00,0x17, -0x7f,0x06,0x60,0x00,0x01,0xba,0x9b,0x10,0x30,0x00,0x15,0x8f,0x01,0x71,0x07,0x10, -0x03,0xe3,0x2e,0x40,0x30,0x00,0x15,0x8c,0x1d,0xd0,0x03,0xf7,0x00,0x00,0x00,0xfd, -0x02,0x00,0x20,0x01,0xec,0x36,0x11,0x00,0x19,0x00,0x2e,0x0f,0xd0,0x05,0x00,0x51, -0x00,0x75,0x00,0x2c,0x9b,0x63,0x06,0x1f,0xfd,0x03,0x00,0x06,0x6f,0x27,0x01,0x70, -0x5e,0x14,0xe2,0x24,0x00,0x0b,0xc0,0x00,0xff,0xfe,0xa2,0x00,0x00,0xff,0x8a,0xff, -0x20,0x00,0xfe,0x8e,0x0f,0xe2,0xfe,0x00,0x0f,0xf0,0x1f,0xff,0xf4,0x0d,0xf1,0x02, -0xfe,0x20,0x0f,0xf0,0x14,0x00,0x01,0x1e,0x00,0x01,0x28,0x00,0x70,0x3e,0x83,0xe0, -0x00,0x0a,0x88,0xf8,0x79,0x02,0x00,0xe1,0x10,0x40,0x09,0xf5,0x2f,0xfa,0x91,0x0d, -0xf0,0x09,0xf4,0x09,0xf5,0x2f,0xce,0xd0,0x9f,0x52,0xfb,0x6f,0x89,0xf5,0x2f,0xb0, -0xcf,0xbf,0x52,0xfb,0x02,0xff,0xf5,0x2f,0xb0,0x08,0x91,0x0d,0x40,0x0d,0xf5,0x00, -0x6f,0x3e,0x02,0x23,0x8f,0x10,0x69,0x03,0xf1,0x13,0xdf,0xd7,0x00,0x09,0xfd,0xad, -0xf8,0x02,0xfe,0x00,0x0e,0xf1,0x5f,0x90,0x00,0x9f,0x57,0xf7,0x00,0x08,0xf6,0x6f, -0x80,0x00,0x9f,0x52,0xfd,0x00,0x0e,0xf1,0x09,0xfd,0x9d,0xf9,0x24,0x00,0x01,0xaa, -0x0b,0x3f,0x00,0x2f,0x80,0x36,0x00,0x1c,0x7f,0x08,0xf7,0x00,0x00,0x08,0xe4,0xe7, -0x36,0x00,0x1c,0x72,0x5e,0x65,0xc0,0x00,0x0c,0x7a,0xf6,0x51,0x03,0x0f,0x36,0x00, -0x16,0x7f,0x64,0x05,0x50,0x00,0x0b,0x90,0xab,0x6c,0x00,0x1b,0xf1,0x09,0x02,0x00, -0x02,0x05,0xf6,0x08,0xf2,0x0b,0xfb,0xf9,0x00,0x0d,0xfb,0x00,0x07,0xfe,0xf5,0x05, -0xfa,0x1c,0xf3,0x07,0x00,0x06,0x2f,0x02,0xf1,0x1b,0x00,0x07,0xdf,0xdb,0x90,0x08, -0xfd,0x9d,0xf9,0x01,0xfe,0x00,0xbf,0xf2,0x5f,0x90,0x5d,0x9f,0x66,0xf8,0x1e,0x37, -0xf7,0x5f,0x99,0x90,0x8f,0x61,0xff,0xd0,0x0d,0xf2,0x08,0xfe,0x9d,0xf9,0x00,0x7d, -0xdf,0xd7,0x00,0x07,0x39,0x05,0x61,0xaf,0x30,0x00,0x00,0x0c,0xd0,0x7f,0x00,0x0f, -0x01,0x0e,0x11,0x7f,0x00,0x00,0xae,0x30,0x00,0x04,0xf5,0x30,0x00,0x17,0x7f,0x0b, -0xf4,0x00,0x00,0xbb,0x5e,0x30,0x30,0x00,0x16,0x7f,0x72,0x07,0x30,0x00,0xe6,0x0d, -0x70,0x90,0x00,0x16,0x00,0x8a,0x03,0x22,0x00,0x8e,0x04,0x06,0xf0,0x05,0x0b,0xf5, -0x00,0x4f,0xc0,0x3f,0xc0,0x0c,0xf3,0x00,0xaf,0x33,0xfb,0x00,0x02,0xfb,0xaf,0x20, -0x00,0x09,0xd1,0x07,0x26,0x1f,0xf2,0x12,0x0e,0x00,0x09,0x00,0x00,0x8a,0x0a,0xf1, -0x0d,0x00,0x2f,0xb2,0x10,0x00,0x2f,0xff,0xfe,0x60,0x2f,0xc5,0x6d,0xf3,0x2f,0xa0, -0x06,0xf7,0x2f,0xb2,0x3c,0xf4,0x2f,0xff,0xff,0x90,0x2f,0xc5,0x41,0x20,0x00,0xf4, -0x1c,0x02,0xbf,0xe8,0x00,0x0c,0xf8,0xcf,0x50,0x1f,0xb0,0x4f,0x80,0x2f,0xb0,0x9f, -0x30,0x2f,0xb0,0xee,0x00,0x2f,0xb0,0xbf,0x70,0x2f,0xb0,0x1d,0xf5,0x2f,0xb0,0x03, -0xfb,0x2f,0xb5,0x69,0xf9,0x2f,0xba,0xfe,0xa1,0x06,0xf7,0x00,0x0b,0x04,0xff,0x0f, -0x5d,0xfd,0x40,0x3f,0xc6,0xef,0x12,0x52,0x0a,0xf3,0x07,0xde,0xff,0x46,0xf9,0x2a, -0xf4,0x7f,0xb7,0xef,0x40,0xaf,0xda,0xf6,0x00,0x07,0xf6,0x00,0x01,0xe8,0x23,0x00, -0x0b,0x6f,0x8f,0x80,0x00,0x8d,0x4e,0x70,0x23,0x00,0x09,0xaf,0x05,0xe6,0x5d,0x00, -0xc6,0xaf,0x60,0x02,0x00,0x10,0x23,0x00,0x06,0x7f,0x0b,0x90,0x9b,0x00,0x54,0x05, -0x50,0x62,0x0e,0x06,0x50,0x00,0x5a,0x50,0x00,0x0c,0xcc,0x18,0x11,0x50,0xb0,0x07, -0x0f,0x27,0x00,0x05,0xfb,0x18,0x05,0xdf,0xd7,0xbf,0xd6,0x02,0xfe,0x8d,0xff,0x8c, -0xf3,0x13,0x10,0x6f,0x90,0x3f,0x80,0x9e,0xff,0xff,0xff,0xfa,0x7f,0x94,0x8f,0xa3, -0x33,0x27,0xfb,0x7c,0xff,0x98,0xb2,0x0a,0xfe,0xa3,0xbe,0xeb,0x20,0x8d,0x0e,0x90, -0x50,0x27,0x21,0xfe,0x7d,0xf3,0x03,0xdf,0xe5,0xf5,0x0c,0x00,0xf5,0x0b,0x20,0x02, -0xe7,0xf9,0x00,0x31,0x00,0x08,0xe1,0xfa,0x00,0xf0,0x09,0x3c,0xfd,0x50,0x1e,0xf8, -0xcf,0x36,0xf7,0x03,0xf8,0x8f,0xff,0xff,0xa6,0xf9,0x33,0x32,0x1e,0xf9,0x9e,0x40, -0x2b,0xfe,0x90,0x24,0x00,0x2f,0x02,0xf7,0x23,0x00,0x0b,0x6f,0x9f,0x70,0x00,0x8d, -0x4e,0x60,0x23,0x00,0x09,0x30,0x0c,0x90,0xaa,0x4c,0x03,0x0f,0xe4,0x0e,0x06,0x88, -0x2f,0xc0,0x04,0xf6,0x00,0x00,0x02,0xfb,0x02,0x00,0x60,0x03,0xfa,0x00,0xcc,0x00, -0x00,0x52,0x12,0x29,0x2f,0xb0,0x05,0x00,0x62,0x04,0xfc,0x00,0x4e,0x5a,0xb0,0x1b, -0x00,0x0e,0x03,0x00,0x6f,0x7d,0x05,0xe1,0x37,0x02,0x80,0x1b,0x00,0x02,0xf0,0x15, -0x02,0xd8,0x04,0x00,0x03,0xdf,0xfc,0x00,0x00,0x6e,0xfe,0x10,0x00,0x31,0x8f,0x80, -0x05,0xef,0xef,0xd0,0x2f,0xe5,0x6f,0xf0,0x6f,0x70,0x0d,0xf0,0x6f,0x70,0x0f,0xd0, -0x1f,0xf8,0xcf,0x60,0x5a,0x0e,0xfe,0x02,0x03,0xe8,0x2f,0x00,0xa8,0x8f,0x90,0x01, -0x00,0x10,0x05,0xf9,0xcf,0xb0,0x5f,0xf8,0xcf,0x36,0x0f,0x63,0x04,0xfa,0x00,0x00, -0x05,0xf4,0x17,0x01,0xf1,0x07,0x60,0x1f,0xe8,0xcf,0x67,0xf6,0x01,0xfc,0x8f,0x40, -0x0e,0xe6,0xf6,0x01,0xfc,0x1f,0xe8,0xcf,0x50,0x3c,0xfd,0x60,0x8f,0x10,0x1f,0xda, -0x23,0x00,0x0b,0x6f,0x6f,0xa0,0x00,0x5e,0x4c,0x90,0x23,0x00,0x09,0x06,0x8c,0x00, -0x0f,0x23,0x00,0x06,0x7f,0x08,0xc0,0x7d,0x00,0x46,0x03,0x70,0x29,0x0f,0x06,0xf0, -0x09,0x00,0x3f,0x70,0x00,0x02,0xd7,0x00,0x12,0x22,0x22,0x19,0xff,0xff,0xfe,0x25, -0x55,0x55,0x40,0x02,0xd6,0x00,0x00,0x3e,0x70,0xb3,0x07,0xf1,0x0d,0x10,0x3c,0xfe, -0xc0,0x1f,0xe8,0xff,0x67,0xf6,0x4c,0xfc,0x8f,0x4c,0x3f,0xe7,0xfb,0xb1,0xfc,0x1f, -0xfa,0xcf,0x50,0x6e,0xfd,0x60,0x0b,0x40,0x00,0xc1,0x00,0x21,0x06,0xf3,0x8c,0x02, -0x09,0xdf,0x0e,0x00,0x07,0x00,0x71,0x2f,0xe8,0xdf,0x90,0x8e,0xe9,0xf9,0x5f,0x10, -0x1f,0xda,0x23,0x00,0x0a,0x00,0xe5,0x00,0x3f,0x5d,0x3b,0x80,0x23,0x00,0x09,0x12, -0x09,0xc2,0x00,0x0f,0x48,0x0f,0x06,0x33,0x00,0x0a,0xf4,0xd6,0x04,0x20,0x0d,0xf2, -0x9b,0x13,0xf0,0x0e,0xef,0x02,0xfb,0x3f,0xa0,0x0d,0xf8,0xf5,0x00,0x7f,0xff,0x00, -0x02,0xff,0xa0,0x00,0x0c,0xf5,0x00,0x00,0xbf,0x00,0x02,0x9f,0x90,0x00,0x3f,0xc1, -0x00,0x41,0x0a,0x22,0x04,0xf9,0x07,0x00,0x16,0xfc,0xa9,0x11,0x42,0x90,0x0f,0xe4, -0xf9,0xa9,0x11,0x00,0x15,0x00,0x05,0x23,0x00,0x8f,0x00,0x0d,0x70,0xd8,0x00,0x73, -0x06,0x40,0x56,0x0f,0x0f,0x00,0xfc,0x0a,0x5f,0x80,0x00,0x01,0x22,0x21,0x7d,0x16, -0x17,0x7f,0x0a,0xff,0xfb,0x00,0x01,0x11,0x00,0xf1,0x03,0x07,0x60,0x88,0x0a,0x60, -0x00,0x04,0xef,0xcb,0x0b,0x1f,0x10,0x7b,0x09,0x17,0x9f,0x09,0xc0,0xc9,0x00,0x2d, -0xfd,0x20,0x00,0x01,0xb0,0x04,0x08,0x06,0xa2,0x00,0xf2,0x00,0xef,0x30,0x00,0x0d, -0xf5,0xf9,0x00,0x03,0xfb,0x0e,0xf0,0x00,0x9f,0x60,0xaf,0xa2,0x00,0x60,0xfd,0x88, -0x8e,0xf2,0xcf,0x40,0xd6,0x04,0x70,0x00,0x0c,0xa0,0x00,0x00,0x01,0xf6,0x9f,0x05, -0x16,0xf3,0xa8,0x00,0x1a,0x40,0xa8,0x00,0x00,0x25,0x00,0x20,0x01,0xf7,0x23,0x00, -0x84,0x00,0x00,0x8f,0x40,0x00,0x00,0x3f,0x60,0xe9,0x17,0xf0,0x02,0xd6,0x00,0x0a, -0xfc,0x9d,0xf7,0x02,0xfd,0x00,0x0f,0xe0,0x6f,0x80,0x00,0x12,0x07,0xf7,0x12,0x0f, -0xf4,0x08,0x80,0x00,0x11,0x02,0xfc,0x00,0x0f,0xe0,0x0b,0xfc,0x9d,0xf7,0x00,0x09, -0xef,0xd6,0x00,0x00,0x08,0xf5,0x00,0x03,0xf6,0x45,0x04,0xff,0x0e,0x1f,0xe8,0xef, -0x27,0xf6,0x03,0xb4,0x8f,0x40,0x00,0x07,0xf6,0x02,0x73,0x1f,0xe8,0xdf,0x30,0x3c, -0xfd,0x50,0x00,0x0a,0xf6,0x00,0x00,0x0a,0xd4,0xe5,0x59,0x00,0x1b,0x00,0x37,0x14, -0x3f,0x9c,0x4e,0x50,0x59,0x00,0x0a,0x7f,0x03,0xa1,0x00,0x00,0x00,0x6e,0x20,0x59, -0x00,0x1c,0x22,0x5e,0x20,0x39,0x00,0x0f,0x59,0x00,0x08,0x72,0xbd,0x5f,0x80,0x00, -0x00,0xdf,0xa0,0xcb,0x10,0xf4,0x02,0x08,0xef,0xd8,0x00,0x0a,0xfc,0x9c,0xfa,0x02, -0xfd,0x00,0x09,0xa0,0x6f,0x80,0x00,0x00,0x59,0x00,0x56,0x33,0x02,0xfc,0x00,0x1f, -0x59,0x00,0x6f,0x0a,0xd5,0xf7,0x00,0x0a,0xf7,0x59,0x00,0x0a,0x62,0x0a,0xd5,0xf6, -0x00,0x00,0xbf,0x63,0x01,0x0f,0x72,0x18,0x11,0xf0,0x15,0x00,0x00,0x3f,0x96,0xe0, -0x00,0x03,0xf9,0x9c,0x00,0x00,0x3f,0x98,0x40,0x5d,0xea,0xf9,0x00,0x2f,0xe9,0xdf, -0x90,0x07,0xf6,0x04,0xf9,0x00,0x8f,0x40,0x3f,0x90,0x07,0xf5,0x03,0xf9,0x00,0x65, -0x14,0x4f,0x00,0x5d,0xe9,0xf9,0x0e,0x0a,0x1c,0x00,0x24,0x13,0x70,0x0d,0xff,0xf9, -0x00,0x02,0x5f,0xa1,0x37,0x13,0x00,0x58,0x00,0x40,0x7f,0x60,0x4f,0x90,0x57,0x00, -0x40,0x7f,0x50,0x3f,0x90,0x56,0x00,0x50,0x05,0xde,0x9f,0x90,0x02,0xf7,0x1e,0x2f, -0x22,0x22,0x0d,0x0b,0x12,0x30,0x0b,0xff,0xfa,0x14,0x03,0x0f,0xef,0x14,0x07,0x6f, -0xc3,0x3c,0x10,0x00,0x9f,0xf9,0xbd,0x0b,0x16,0x9f,0x0a,0xb0,0xd8,0x00,0x2e,0xfd, -0x10,0x00,0x01,0xc4,0x06,0x09,0x20,0x70,0x00,0x9b,0x10,0x0f,0x10,0x0c,0x16,0x5f, -0x4e,0x30,0x00,0x02,0xa1,0xf4,0x06,0x0a,0x09,0x47,0x00,0x11,0xb0,0x57,0x00,0x11, -0x60,0x4f,0x00,0x09,0x87,0x0c,0x40,0xe8,0x00,0x00,0x03,0xb7,0x04,0xa2,0xde,0x10, -0x02,0xcf,0xd5,0x00,0xef,0x8c,0xf3,0x5f,0xef,0x00,0xff,0x0c,0x7f,0x83,0x33,0x23, -0xfd,0x44,0xb1,0x08,0xff,0xff,0x30,0x03,0xcd,0x20,0x00,0x0e,0x91,0x00,0x00,0x8f, -0x60,0x01,0xe9,0x8e,0x20,0x00,0x2e,0xb6,0x0c,0x17,0x6f,0x09,0xe5,0xe8,0x00,0x09, -0xf8,0x9a,0x07,0x0b,0x74,0x09,0xf6,0x00,0x00,0x09,0xd4,0xe5,0xc0,0x0a,0xf0,0x17, -0xd8,0x00,0x09,0xfd,0x9c,0xfa,0x01,0xfe,0x00,0x0a,0xb0,0x5f,0x90,0x01,0x11,0x06, -0xf8,0x08,0xff,0xf2,0x5f,0x90,0x24,0xdf,0x21,0xfe,0x00,0x0c,0xf2,0x09,0xfd,0x9a, -0xff,0x10,0x07,0xdf,0xeb,0x30,0x17,0x04,0x21,0x7e,0x4d,0xed,0x08,0xfa,0x14,0x4d, -0xe9,0xfb,0x1f,0xf9,0xcf,0xb6,0xf7,0x02,0xfb,0x8f,0x40,0x2f,0xb6,0xf6,0x02,0xfb, -0x1f,0xf8,0xcf,0xb0,0x4d,0xea,0xfb,0x02,0x00,0x4f,0xa0,0xdb,0x7d,0xf4,0x07,0xdf, -0xd6,0x00,0xc4,0x04,0x0f,0x64,0x00,0x15,0x07,0xc4,0x04,0x0f,0x64,0x00,0x11,0x01, -0x8b,0x03,0x2f,0x5e,0x20,0xc8,0x00,0x1c,0x6f,0x3e,0x40,0x00,0x02,0xa2,0x00,0xc8, -0x00,0x15,0x0f,0x74,0x1b,0x15,0x20,0x00,0x08,0x97,0x10,0x00,0x17,0x07,0x14,0x5c, -0x50,0x11,0x20,0x03,0x10,0x91,0x1e,0x6f,0x00,0x2f,0x30,0x00,0x01,0x81,0x97,0x17, -0x11,0x72,0x00,0x02,0x73,0x00,0x00,0x05,0xe7,0x2f,0x1d,0x1a,0x02,0xae,0x1b,0x7a, -0xe8,0x88,0xcf,0x52,0xff,0xff,0xff,0xc0,0x1b,0x01,0x09,0x00,0x7f,0x01,0xce,0x70, -0x00,0x65,0x07,0x30,0xd4,0x17,0x10,0x50,0x1f,0xd0,0x00,0x7f,0x70,0x7d,0x11,0xf1, -0x01,0xf3,0x2f,0xd2,0x22,0x8f,0x80,0x1f,0xe8,0x88,0xbf,0x70,0x1f,0xff,0xff,0xff, -0x70,0x19,0x00,0x0b,0x05,0x00,0x00,0xb3,0x1b,0xf9,0x08,0x5f,0xff,0xf1,0x00,0x04, -0xfb,0x20,0x00,0x02,0xfc,0xbf,0xc1,0x02,0xff,0x9b,0xf9,0x02,0xfb,0x01,0xfc,0x02, -0xfb,0x00,0x04,0x00,0x8f,0x0c,0xb1,0xe3,0x6c,0x5f,0xd0,0x11,0x01,0x6c,0x0e,0x09, -0x8f,0x1d,0xa1,0xf1,0x8a,0x6f,0xb0,0x11,0x01,0x9b,0x09,0x03,0x6f,0x4f,0xff,0xf1, -0x02,0x22,0x20,0x3f,0x00,0x08,0x5e,0x6f,0xff,0xf0,0x11,0x10,0xf1,0x09,0x6f,0x2c, -0x24,0xc0,0x0a,0xff,0x70,0xe6,0x0e,0x0b,0x60,0x5f,0x17,0xe0,0xbf,0xf5,0x00,0x22, -0x03,0x0b,0x40,0x00,0x09,0xfa,0x1c,0x5b,0xe7,0xe2,0xda,0x17,0xf7,0xf2,0x18,0xaa, -0x9c,0x1f,0x81,0x9f,0x50,0x08,0x60,0xd9,0x00,0x00,0x29,0x1a,0x23,0xb2,0xfb,0x03, -0x00,0x10,0xb0,0x31,0x1d,0x7f,0xaf,0x40,0xfd,0x00,0x00,0x0a,0xf4,0x0b,0x00,0x05, -0xf0,0x08,0x9a,0x00,0xbf,0x30,0xfd,0x0a,0xf9,0x8f,0xd0,0x0f,0xd0,0x1a,0xef,0xb2, -0x00,0x2e,0x80,0xbe,0x02,0xd7,0x09,0xc0,0x00,0x4a,0x19,0x6d,0x0c,0xf1,0x3f,0xa0, -0xcf,0x13,0x07,0x00,0x00,0x1f,0x20,0x50,0x01,0x9f,0xe0,0x00,0x2f,0x1b,0x12,0x62, -0x9f,0x60,0x00,0x09,0xd4,0xe6,0x4d,0x02,0x00,0x12,0x11,0x0e,0x04,0x00,0x80,0x8c, -0x20,0x8f,0x60,0x6f,0xd9,0xff,0x20,0x87,0x18,0x51,0x04,0xfb,0x00,0x4f,0x5c,0x1a, -0x10,0x2e,0xfc,0x00,0x03,0x00,0x8f,0x01,0xfc,0x00,0x4a,0xf8,0x00,0x7f,0xb1,0xc6, -0x1d,0x17,0x20,0x00,0x8c,0xff,0x07,0x00,0x87,0x0a,0x3f,0x71,0x00,0x00,0xe7,0x19, -0x15,0x01,0x07,0x03,0x25,0x2f,0x20,0x06,0x03,0xf0,0x09,0x2f,0xa0,0x4f,0xe1,0x2f, -0xa0,0xdf,0x50,0x2f,0xa7,0xfb,0x00,0x2f,0xff,0xf1,0x00,0x2f,0xee,0xf8,0x00,0x2f, -0xa1,0xef,0x40,0x18,0x00,0x00,0x63,0x02,0x14,0xbd,0xed,0x02,0x1f,0x00,0x35,0x1e, -0x03,0xff,0x00,0xe8,0x88,0x62,0xff,0xff,0xfc,0x03,0xfa,0x00,0xcb,0x00,0x3f,0xa0, -0x03,0xfa,0x05,0x00,0x02,0x0f,0x6f,0x1e,0x0d,0x82,0x00,0x63,0x00,0x00,0x0e,0x60, -0x00,0x02,0xd3,0x0c,0x0b,0x89,0x1a,0x40,0x07,0x30,0xf5,0x3e,0x2e,0x00,0x8f,0x9b, -0x02,0xfb,0x0c,0x80,0x2f,0xb0,0x60,0x43,0x00,0x03,0x8f,0x3f,0xa6,0xf3,0xfa,0x8c, -0x3f,0xa6,0x33,0x7c,0x00,0x0a,0x5c,0x1e,0x60,0x2f,0xb0,0x94,0x39,0x00,0x26,0xa0, -0x00,0x03,0x00,0x58,0xa5,0x90,0x3f,0xa8,0xd0,0x12,0x00,0x21,0x0f,0xf0,0xda,0x0e, -0x01,0x07,0x00,0x64,0xb4,0x00,0xbf,0xf5,0x00,0x01,0x0e,0x00,0x81,0x88,0x88,0x0f, -0xff,0xff,0xf0,0x0f,0xd0,0x02,0x00,0x53,0xd1,0x1f,0xfb,0xbf,0xe0,0x0c,0x00,0x11, -0xd0,0xe4,0x03,0x21,0x00,0x0e,0xe9,0x01,0x0f,0x8c,0x11,0x18,0x05,0x77,0x0c,0x0f, -0xbd,0x0c,0x06,0x0f,0x64,0x1f,0x17,0x0d,0xeb,0x04,0x0f,0xa7,0x1b,0x06,0x92,0x00, -0x82,0x00,0x00,0x1f,0x30,0x00,0x05,0xd0,0x28,0x00,0x7f,0x47,0x05,0x60,0x00,0x00, -0x9d,0xc1,0xbb,0x00,0x1b,0x6f,0x06,0xf5,0xdb,0x00,0x06,0xfb,0xbb,0x00,0x0a,0x30, -0x3f,0x10,0x00,0x62,0x18,0x23,0x00,0x67,0x25,0x00,0x00,0x8d,0x00,0x00,0x57,0x0c, -0x39,0x05,0xf8,0x03,0x04,0x00,0x50,0x3f,0xe1,0x00,0x9f,0x53,0xe3,0x00,0x50,0x3f, -0xff,0x40,0x9f,0x53,0xe3,0x00,0xf1,0x04,0x3f,0xb5,0xf7,0x9f,0x53,0xfb,0x0b,0xfb, -0xf5,0x3f,0xb0,0x2f,0xff,0x53,0xfb,0x00,0x7f,0xf5,0x3f,0xe3,0x00,0xf2,0x04,0x00, -0x09,0xf4,0x00,0x00,0x09,0xff,0x10,0x00,0x00,0xfe,0x60,0x5f,0x8c,0xfb,0x05,0xfe, -0x8c,0xf6,0x6c,0x00,0x52,0xfa,0x5f,0x80,0x3f,0xa5,0x07,0x00,0x10,0xa0,0x34,0x0f, -0xa2,0x05,0xbf,0x60,0x00,0x9f,0xa0,0x00,0xaf,0xff,0xa0,0x05,0x0c,0x0f,0x80,0x20, -0x15,0x32,0x08,0xff,0xfd,0xf1,0x08,0x0f,0x9f,0x0d,0x05,0x74,0x79,0x09,0x70,0x00, -0x03,0xef,0xe2,0x41,0x07,0x0f,0x65,0x12,0x13,0x9f,0x07,0xe0,0x9c,0x00,0x1c,0xfe, -0x30,0x00,0x01,0x5e,0x0e,0x08,0x7f,0x08,0xd3,0xe6,0x00,0x02,0xf4,0xd9,0x2a,0x13, -0x1c,0x61,0x6f,0x4e,0x90,0x01,0xd6,0xaa,0xd8,0x06,0x00,0x9f,0x00,0xf0,0x01,0x1f, -0xe8,0xcf,0x60,0x7f,0x60,0x1f,0xc0,0x8f,0x40,0x0e,0xe0,0x6f,0x60,0x1f,0xc0,0x5d, -0x00,0x01,0xb7,0x00,0xd0,0x8e,0xff,0xff,0xff,0xfe,0x0b,0xfd,0xab,0xfe,0xaa,0xa9, -0x3f,0xc0,0x10,0x0f,0xe0,0x5f,0x70,0x04,0xfd,0x88,0x82,0x6f,0x70,0x04,0xff,0xff, -0xf4,0x5f,0x70,0x12,0x00,0x20,0x3f,0xb0,0x06,0x00,0x62,0x0b,0xfc,0x89,0xfd,0x88, -0x87,0x30,0x00,0xf0,0x15,0x02,0xbf,0xd7,0x5d,0xfb,0x20,0x0e,0xf8,0xcf,0xfd,0x8f, -0xd0,0x5f,0x80,0x0f,0xf4,0x0a,0xf2,0x7f,0x60,0x0d,0xff,0xff,0xf3,0x5f,0x80,0x0f, -0xf6,0x33,0x30,0x0e,0xf8,0xbf,0xfd,0x89,0xa0,0x24,0x00,0x21,0xfd,0x80,0x6e,0x03, -0x01,0x02,0x10,0x01,0x43,0x02,0xc0,0xff,0xd6,0x00,0x2f,0xe8,0x9e,0xf5,0x02,0xfb, -0x00,0x5f,0x90,0xfd,0x0a,0xf0,0x03,0x02,0xff,0xff,0xfc,0x10,0x2f,0xe8,0xdf,0x40, -0x02,0xfb,0x04,0xfc,0x00,0x2f,0xb0,0x0c,0xf4,0x61,0x06,0x40,0xc0,0x00,0x5f,0x80, -0x31,0x03,0x0e,0xd4,0x1d,0x0f,0xb0,0x21,0x16,0x50,0x00,0x64,0x00,0x00,0x00,0xe2, -0x12,0x25,0x01,0xe2,0x30,0x19,0x0e,0x4f,0x00,0x42,0x08,0x20,0x01,0xf4,0x91,0x18, -0x8f,0x03,0x71,0x47,0x00,0x00,0x07,0xdd,0x20,0xa8,0x00,0x1b,0x51,0x6f,0x5d,0xa0, -0x06,0xe9,0x46,0x13,0x70,0xad,0x90,0x4f,0xfc,0x60,0x4f,0x90,0x70,0x05,0x05,0x03, -0x00,0x61,0x00,0x00,0xce,0x20,0x00,0x07,0x7a,0x0f,0x0f,0x40,0x22,0x12,0x00,0xc4, -0x02,0x03,0x60,0x0d,0xff,0x11,0x7e,0xfc,0x40,0x4f,0xb5,0xef,0x05,0xfa,0x22,0x30, -0x08,0xff,0xe6,0x02,0x40,0x4d,0xf1,0x6f,0xa5,0xdf,0x10,0x8e,0xfc,0x40,0x00,0x1d, -0xe2,0x00,0x01,0xda,0x6e,0x20,0x53,0x00,0x16,0x6f,0xaf,0x50,0x00,0xac,0x4e,0x50, -0x53,0x00,0x09,0x0f,0x47,0x00,0x0e,0xef,0xbf,0xfd,0x50,0x00,0x08,0xf4,0x00,0x00, -0x01,0xea,0x00,0x00,0x08,0xd3,0x57,0x1f,0x05,0x11,0xd4,0x05,0x28,0xf4,0x0f,0x0b, -0xe0,0x00,0x04,0xe6,0x00,0x01,0xea,0x7f,0x40,0x00,0x3f,0xf6,0x00,0x00,0x03,0x40, -0x00,0x03,0xbf,0xfd,0x60,0x1e,0xf9,0x8d,0xf5,0x3f,0xb0,0x01,0x31,0x5f,0x00,0xe2, -0x01,0x01,0x6e,0xf3,0x7f,0x70,0x06,0xf7,0x1f,0xf9,0x8e,0xf4,0x02,0xae,0x2b,0x0d, -0x2f,0x0b,0xf7,0xf9,0x00,0x0a,0x0f,0x5c,0x23,0x11,0xbf,0x00,0x0b,0xd2,0x00,0x00, -0x02,0xf8,0x00,0x00,0x0a,0xc2,0xe4,0x1f,0x03,0xf2,0x00,0xff,0x10,0x0d,0xc1,0x00, -0x6f,0x40,0x0d,0xa0,0x01,0x72,0x27,0x10,0x00,0x4d,0xce,0x19,0x0f,0x5a,0x00,0x12, -0xf0,0x01,0x00,0x73,0x00,0x00,0xf4,0x07,0x73,0xd0,0x0f,0xe0,0x00,0xff,0xff,0x10, -0x5f,0xf5,0x51,0x00,0x02,0x03,0x00,0x68,0x0d,0xf8,0x10,0x05,0xee,0x10,0x45,0x00, -0x7e,0x04,0xff,0xff,0x10,0x00,0x2f,0xf2,0x45,0x00,0x20,0x77,0x00,0x8a,0x00,0xb0, -0xff,0xf1,0x05,0xff,0x50,0x2f,0xff,0xf3,0x02,0xfe,0x20,0x06,0x28,0xd0,0xdf,0x91, -0x00,0x5e,0xe1,0x00,0x8e,0x38,0x90,0x00,0xf4,0xcf,0x30,0xd7,0x16,0x0f,0x91,0x15, -0x11,0x70,0x03,0xe8,0x3f,0x00,0xa8,0x8f,0x80,0xdb,0x12,0x0f,0xb0,0x11,0x06,0x6f, -0xdf,0xff,0x60,0x00,0x12,0x22,0x4f,0x00,0x12,0x03,0xdc,0x04,0x0f,0xb9,0x11,0x07, -0x61,0xa6,0x0b,0x40,0x00,0x5f,0xfc,0xdb,0x04,0x0f,0x50,0x00,0x11,0x33,0x07,0xe0, -0xab,0xd6,0x04,0x0f,0x9f,0x00,0x07,0x71,0x08,0xa3,0x00,0x00,0x1a,0x29,0x00,0x08, -0x00,0x0f,0x87,0x16,0x15,0x81,0x4a,0x70,0x00,0x0b,0x0c,0x00,0x00,0x4a,0x45,0x0a, -0x0f,0xae,0x00,0x07,0x7f,0x0b,0xb5,0xe3,0x00,0x6e,0x3f,0x60,0x57,0x00,0x16,0x6f, -0x7f,0x4e,0x80,0x1d,0x5a,0xa0,0xda,0x12,0x09,0x0f,0x47,0x00,0x08,0x70,0xfc,0x0c, -0xfb,0x9e,0xf6,0x01,0x9e,0xd9,0x0a,0x10,0xd8,0xea,0x17,0x00,0x73,0x04,0x1f,0x00, -0x03,0x13,0x08,0xc0,0xc1,0x00,0x00,0xe9,0x10,0x00,0x08,0xf6,0x00,0x00,0x17,0x40, -0xc5,0x03,0x24,0xd7,0xc8,0x9f,0x04,0x0f,0xce,0x25,0x23,0x30,0x00,0x05,0xfb,0x1a, -0x0d,0x12,0x4a,0x60,0x08,0x0f,0x93,0x22,0x11,0xdf,0x00,0x09,0x90,0x00,0x00,0x0b, -0xcb,0xb0,0x00,0x01,0x40,0x04,0x10,0xce,0x17,0x16,0x7f,0x00,0xbf,0x50,0x00,0xaa, -0x3d,0x40,0xbd,0x13,0x14,0x8f,0x01,0x81,0x08,0x10,0x00,0x3e,0x32,0xe4,0x32,0x18, -0x1b,0x01,0x68,0x18,0x12,0x09,0xb1,0x05,0x0f,0x54,0x26,0x11,0x00,0x51,0x14,0x21, -0x03,0xf5,0x17,0x07,0xb2,0xff,0xff,0xf1,0x37,0x7b,0xfb,0x00,0x01,0xee,0x10,0x00, -0x12,0x13,0x78,0x4f,0xf8,0x77,0x18,0xff,0xff,0xf2,0x35,0x10,0x0f,0x53,0x00,0x12, -0x5f,0x6e,0x10,0x00,0x04,0xa0,0x53,0x00,0x0a,0x08,0x3d,0x04,0x0f,0x53,0x00,0x11, -0x6f,0x0a,0xc5,0xf5,0x00,0x0a,0xe5,0x53,0x00,0x0a,0xba,0x05,0xdf,0x31,0xfe,0x81, -0x3f,0x90,0x04,0xf9,0x00,0x4f,0x05,0x00,0xf2,0x15,0x00,0x10,0x0d,0xf9,0x1f,0xfd, -0x0b,0xf7,0x01,0x00,0x00,0x01,0xfb,0x50,0x00,0x07,0xcf,0xe8,0x20,0x00,0x4e,0xf7, -0x08,0xdf,0xd8,0x11,0xfa,0x40,0x00,0x09,0x88,0x88,0x31,0xff,0xff,0xf6,0xf9,0x01, -0x01,0xb6,0x1b,0x71,0x16,0xaf,0xf0,0x00,0x00,0x03,0x7c,0x0d,0x1d,0x20,0xef,0xff, -0x07,0x00,0x50,0x0b,0xff,0xff,0xfe,0xac,0x07,0x00,0x71,0xd8,0x30,0x09,0xf0,0x00, -0x0b,0xf1,0x34,0x18,0x2b,0x0b,0xe0,0x07,0x00,0xf0,0x03,0x3d,0xff,0xf0,0x03,0x6c, -0xe0,0x00,0xcf,0xff,0xf0,0xaf,0xff,0xe0,0x00,0x5f,0xff,0x80,0xdf,0x75,0x14,0x41, -0x21,0x00,0x2a,0xda,0x6a,0x06,0xf0,0x3c,0x80,0x9c,0xcc,0xcc,0xcc,0x40,0x8f,0xdf, -0xb7,0x77,0x77,0xfe,0xdf,0xd0,0xc7,0x00,0x00,0x0d,0x50,0xde,0x8e,0x70,0x00,0x00, -0xdb,0x8e,0xe5,0xdb,0x77,0x77,0x7f,0x95,0xed,0x1c,0xeb,0xbb,0xbb,0xf6,0x1d,0xfc, -0xf7,0x00,0x00,0x0d,0xdc,0xfd,0x0c,0x70,0x00,0x00,0xd5,0x0d,0xfa,0xe9,0x33,0x33, -0x3e,0xca,0xfc,0x3d,0xff,0xff,0xff,0xf8,0x3c,0x35,0x52,0x05,0x55,0x55,0x55,0x3f, -0xff,0xc6,0xff,0x01,0x00,0x20,0xfc,0x6f,0x05,0x00,0xcf,0xee,0x94,0xee,0xee,0xee, -0xec,0x34,0x42,0x04,0x44,0x44,0x44,0x1a,0x00,0x14,0x41,0xfd,0xff,0xa4,0xff,0x8d, -0x1e,0x00,0x40,0x2c,0x01,0xf1,0x00,0x21,0x2e,0xfc,0x06,0x00,0x31,0xff,0x90,0x50, -0x06,0x00,0x20,0xaf,0xc0,0x06,0x00,0xa0,0x0c,0xff,0xc0,0x2e,0xff,0x90,0x00,0x1c, -0xff,0xce,0xa8,0x23,0x12,0x1c,0xae,0x23,0x11,0x1c,0x06,0x00,0x02,0x20,0x0d,0x01, -0xb2,0x22,0xf1,0x1c,0xf5,0x00,0x06,0xf8,0xdf,0xf5,0x06,0xff,0xc2,0xef,0xf9,0xff, -0xd1,0x02,0xef,0xff,0xd1,0x00,0x08,0xff,0xf7,0x00,0x06,0xff,0xff,0xf5,0x06,0xff, -0xe4,0xef,0xf5,0xef,0xe1,0x02,0xef,0xd4,0xa1,0x00,0x02,0xb4,0x00,0x00,0x02,0x40, -0x07,0xf0,0x1f,0x20,0xbf,0x40,0x30,0x00,0x01,0xcf,0x1b,0xf4,0x7f,0x80,0x00,0xbf, -0xd0,0xbf,0x45,0xff,0x40,0x4f,0xe1,0x0b,0xf4,0x07,0xfd,0x09,0xf8,0x00,0xbf,0x40, -0x0e,0xf2,0xcf,0x40,0x0b,0xf4,0x00,0xbf,0x4b,0xf4,0x00,0x9e,0x30,0x0b,0xf4,0x9f, -0x80,0xd1,0x02,0x10,0x23,0x36,0x21,0xc0,0x8f,0xc0,0x0a,0xfe,0x40,0x01,0x8f,0xf4, -0x00,0x0c,0xff,0xed,0xac,0x01,0x40,0x07,0xef,0xff,0xc3,0x4f,0x00,0x12,0x12,0x67, -0x1d,0x11,0x21,0x06,0x00,0x01,0x93,0x2a,0xd1,0x10,0x3f,0xff,0x70,0x11,0x00,0x7f, -0xbf,0xff,0xff,0xce,0xb0,0x1f,0xf5,0x00,0xf1,0x14,0x53,0xff,0xff,0x82,0x5f,0xff, -0xf7,0x03,0xff,0xc0,0x00,0x7f,0xf8,0x00,0x3f,0xfa,0x00,0x06,0xff,0x70,0x2c,0xff, -0xf4,0x01,0xdf,0xfe,0x42,0xff,0xff,0xfe,0xff,0xff,0xf6,0x0a,0xff,0x10,0x01,0x50, -0x05,0x07,0xff,0xfa,0x13,0x95,0x29,0x11,0xff,0xcd,0x1e,0x21,0x46,0x50,0x55,0x00, -0x40,0x25,0x00,0x36,0x20,0x03,0x05,0x30,0xfc,0x1a,0xf6,0x90,0x0e,0xf0,0x15,0xe9, -0xfe,0xcf,0x60,0x00,0x00,0xaf,0xc3,0x64,0xff,0xf6,0x00,0x01,0xcf,0xa3,0xef,0xa3, -0xdf,0x90,0x03,0xef,0x75,0xff,0xff,0xc3,0xcf,0xb0,0xdf,0x48,0xff,0xff,0xff,0xe3, -0x9f,0x72,0x27,0x4f,0x00,0xe0,0xf2,0x50,0x00,0x9f,0xff,0xcb,0xef,0xff,0x30,0x00, -0x09,0xff,0xf1,0x07,0x9a,0x00,0xd0,0x9f,0xff,0x10,0x7f,0xff,0x30,0x00,0x07,0xff, -0xe0,0x06,0xff,0xf2,0x48,0x09,0x11,0x54,0x60,0x00,0x23,0x1f,0xff,0x6b,0x1f,0x1d, -0x20,0x07,0x00,0x50,0x47,0x8f,0xff,0x87,0x40,0x39,0x00,0x01,0x7c,0x01,0x41,0x0a, -0xff,0xff,0xfa,0xe1,0x04,0x00,0xf5,0x03,0xf2,0x03,0x46,0x66,0x3a,0xfa,0x36,0x66, -0x50,0xff,0xff,0xf4,0x54,0xff,0xff,0xf2,0xff,0xff,0xff,0xcf,0x07,0x00,0x60,0xff, -0xf3,0xb8,0xf2,0x9b,0xbb,0x01,0x00,0xa1,0xa0,0x00,0x08,0xaa,0xaa,0xaa,0xa4,0x00, -0x00,0x08,0x8f,0x00,0x30,0x00,0x03,0xfb,0x58,0x00,0x41,0xd0,0x00,0xdf,0x10,0x8b, -0x15,0x21,0x8f,0x60,0xe8,0x04,0xf0,0x00,0x3f,0xfe,0xee,0x40,0x00,0x9e,0xee,0xf9, -0xff,0xff,0xfc,0x44,0x5f,0xff,0xff,0x3a,0x23,0x00,0x40,0x1b,0x12,0xff,0x01,0x00, -0x12,0x9a,0x07,0x00,0x11,0xf5,0x19,0x03,0xf0,0x0f,0x07,0x90,0x00,0x6d,0xff,0xfb, -0x40,0xcf,0x00,0xbf,0xfd,0xbd,0xff,0xac,0xf0,0xbf,0xd3,0x00,0x03,0xcf,0xff,0x4f, -0xd1,0x00,0x07,0xaa,0xff,0xf9,0xf5,0x00,0x75,0x23,0x00,0x9e,0x21,0x23,0x11,0x11, -0xf9,0x1e,0x01,0xae,0x00,0xf0,0x0b,0x4f,0x9f,0xff,0xab,0x70,0x00,0x0d,0xf4,0xff, -0xfb,0x20,0x00,0x3c,0xfb,0x0f,0xcb,0xff,0xca,0xcf,0xfc,0x10,0xfc,0x05,0xcf,0xff, -0xd7,0xc5,0x31,0x02,0xbd,0x01,0x80,0x05,0x20,0x00,0x06,0xf7,0x01,0x16,0xff,0xe5, -0x03,0x24,0xff,0xff,0x07,0x00,0x80,0x8a,0xcc,0xef,0xf8,0x00,0x02,0xef,0x80,0x9a, -0x1b,0x20,0x00,0x01,0x2f,0x01,0x21,0x20,0x00,0xed,0x2f,0xf0,0x00,0x01,0x16,0xff, -0x80,0x00,0xef,0xff,0xff,0x82,0xb1,0xff,0xff,0xff,0x80,0xc9,0x05,0x00,0xe0,0x9b, -0xff,0xff,0xff,0x82,0xf3,0xbd,0xdf,0xff,0x80,0x10,0x00,0x03,0xef,0x35,0x02,0x01, -0xd0,0x19,0x29,0x01,0x00,0x01,0x00,0x22,0x04,0xc2,0x6d,0x00,0x30,0x0b,0xe1,0x00, -0xe3,0x30,0x30,0xb7,0x0c,0xb0,0x4b,0x00,0xb0,0x05,0xf5,0x2f,0x3f,0xff,0xff,0xf8, -0x2c,0x17,0xd0,0xb8,0x4b,0x00,0xb1,0xba,0x2f,0x18,0xbf,0xff,0xff,0xf8,0x09,0xb1, -0xf2,0x7b,0x55,0x00,0x30,0x5e,0x0a,0x9a,0x89,0x00,0x30,0x2e,0x80,0xe4,0x8d,0x00, -0x40,0x0c,0xa0,0x8d,0x00,0x91,0x00,0x31,0x10,0x7f,0x30,0x5f,0x00,0x24,0x4f,0x40, -0x36,0x04,0x11,0x9f,0x29,0x01,0x50,0x9f,0xf9,0xbf,0xff,0xff,0xff,0x04,0x20,0xdf, -0xff,0x4d,0x00,0x90,0x0d,0xff,0xf8,0xaf,0xff,0xff,0x9b,0xff,0xf8,0x1d,0x01,0x20, -0x6d,0xf8,0x25,0x09,0x20,0x40,0x17,0xc9,0x01,0x11,0xa0,0xc8,0x01,0x72,0xfd,0xaa, -0xaa,0xaa,0xaa,0xad,0xfa,0x72,0x01,0x02,0xc7,0x27,0x00,0x40,0x27,0x50,0x0c,0xfb, -0x00,0x00,0x03,0x31,0x02,0x30,0xdf,0xff,0xc0,0x1a,0x05,0x10,0x70,0xc6,0x2e,0xf0, -0x09,0x2a,0xff,0xff,0xff,0xf9,0xef,0xef,0xff,0xff,0xdf,0xb7,0xff,0xff,0xfe,0xce, -0x2d,0xff,0xff,0xb5,0xfc,0x36,0xff,0xf3,0x07,0xb9,0x04,0xf0,0x11,0x02,0x89,0x72, -0x00,0x06,0x40,0x00,0x02,0x42,0xfa,0x00,0x03,0xef,0x2f,0xa0,0x04,0xff,0xf2,0xfa, -0x05,0xff,0xff,0x2f,0xa6,0xff,0xff,0xf2,0xfe,0xff,0xff,0xff,0x2f,0xff,0x01,0xf1, -0x07,0xfc,0xdf,0xff,0xff,0x2f,0xa1,0xdf,0xff,0xf2,0xfa,0x01,0xcf,0xff,0x2f,0xa0, -0x00,0xbf,0xf2,0xf9,0x00,0x00,0x9c,0xbd,0x00,0x11,0x24,0x06,0x00,0x22,0xef,0xc3, -0xb5,0x01,0x11,0x91,0x06,0x00,0x00,0x88,0x07,0x00,0x14,0x03,0x21,0x40,0x00,0x9d, -0x00,0x21,0x10,0xff,0x44,0x02,0x11,0xff,0x61,0x02,0x10,0xff,0xbb,0x0c,0x11,0x50, -0xe1,0x00,0x00,0x1e,0x00,0x10,0xb2,0x2a,0x00,0x10,0xd4,0x36,0x00,0x01,0x7b,0x0a, -0x11,0x48,0xd4,0x01,0xff,0x03,0x26,0x66,0x10,0x16,0x66,0x30,0xef,0xff,0xc0,0xaf, -0xff,0xf1,0xff,0xff,0xe0,0xbf,0xff,0xf2,0x06,0x00,0x19,0xb0,0xd0,0xbf,0xff,0xf2, -0xaf,0xff,0x80,0x6e,0xff,0xc0,0x26,0xc5,0x25,0x30,0x50,0xef,0xff,0xd1,0x25,0x01, -0x7e,0x00,0x1f,0xf6,0x06,0x00,0x1c,0x11,0xf5,0xd2,0x02,0xf3,0x09,0xd1,0x05,0x00, -0x00,0x06,0x45,0xfb,0x00,0x01,0xfc,0x6f,0xfc,0x10,0x1f,0xc6,0xff,0xfd,0x11,0xfc, -0x6f,0xff,0xfd,0x3f,0xc6,0x12,0x05,0x00,0x1d,0x05,0xf4,0x05,0xfa,0xfc,0x6f,0xff, -0xf7,0x1f,0xc6,0xff,0xf6,0x01,0xfc,0x6f,0xf5,0x00,0x1f,0xc3,0xe4,0x00,0x00,0xfb, -0x3a,0x02,0x12,0x52,0x59,0x08,0x01,0x52,0x07,0x31,0x9f,0xff,0xd1,0xb1,0x06,0x00, -0x07,0x00,0x20,0x6f,0xff,0x67,0x11,0x20,0x5f,0xff,0x91,0x1a,0x11,0x0e,0x6f,0x00, -0x90,0x40,0x8e,0xee,0xee,0xee,0xee,0xc1,0x02,0x44,0x01,0x00,0x12,0x00,0x82,0x00, -0x11,0x0f,0x07,0x00,0x30,0x60,0xcf,0xff,0x1e,0x04,0x01,0x63,0x06,0x00,0x8f,0x2d, -0xa1,0x00,0xbf,0xf2,0x00,0x0b,0xff,0x30,0x00,0xbf,0xf3,0x07,0x00,0x10,0x2f,0x5e, -0x1c,0x64,0xff,0x80,0x00,0x00,0x6f,0xf8,0x09,0x00,0x50,0xf4,0x00,0x00,0x05,0xb0, -0xc4,0x02,0xb2,0x1e,0xc0,0x00,0x00,0x1e,0xfc,0x00,0x00,0x02,0xef,0xc0,0xab,0x05, -0x01,0x09,0x00,0x20,0x7f,0xf4,0xc8,0x04,0x31,0x00,0x6f,0xf7,0x07,0x00,0x00,0xc9, -0x08,0x11,0x0a,0xd1,0x09,0x21,0x17,0x40,0x52,0x07,0x1f,0xe0,0x06,0x00,0x01,0x15, -0xdf,0xc1,0x01,0x8f,0xff,0xf5,0x36,0x66,0xbf,0xf6,0x66,0x50,0x2a,0x00,0x01,0x20, -0x4d,0x90,0x56,0x29,0x39,0x11,0x11,0x11,0x30,0x00,0xc0,0x35,0x55,0x55,0x55,0x55, -0x40,0x00,0x00,0x5a,0xcd,0xc8,0x20,0xb6,0x28,0xf0,0x29,0xd7,0x69,0xff,0x90,0x00, -0x04,0xff,0xa0,0x01,0x02,0xef,0xc1,0x02,0xff,0xf1,0x02,0xfc,0x16,0xff,0xb0,0xcf, -0xfb,0x05,0xaf,0xf9,0x1f,0xff,0x6d,0xff,0xb1,0xff,0xff,0xb1,0xff,0xf7,0x4f,0xfe, -0x0b,0xff,0xf5,0x5f,0xfc,0x00,0x6f,0xf9,0x08,0xa5,0x1d,0xfd,0x20,0x00,0x5e,0xfb, -0x53,0x6e,0xfb,0xd7,0x0f,0x63,0xce,0xfe,0xa4,0x00,0x00,0x32,0x5e,0x01,0x23,0x0e, -0xf5,0x09,0x00,0xe0,0x3e,0xf9,0x05,0xac,0xdb,0x71,0x00,0x00,0x00,0x1b,0xff,0xfd, -0x76,0xaf,0x4e,0x02,0xf0,0x22,0x08,0xff,0x31,0x30,0x4f,0xfa,0x00,0x00,0x32,0x04, -0xef,0xbf,0xc0,0x9f,0xf8,0x00,0x0e,0xf5,0x02,0xcf,0xff,0x64,0xff,0xf3,0x01,0xff, -0xf6,0x00,0x9f,0xf8,0x4f,0xff,0x40,0x06,0xff,0xc0,0x00,0x6f,0xeb,0xff,0xa0,0x00, -0x09,0xff,0x60,0x00,0x3e,0xff,0xc0,0x1d,0x08,0x30,0xa4,0x30,0x1b,0x65,0x00,0x73, -0x02,0x8d,0xff,0x80,0x08,0xfe,0x30,0xfc,0x03,0x23,0xef,0x20,0x3c,0x0f,0x14,0x70, -0x6e,0x2b,0x00,0x83,0x09,0x13,0xf8,0x65,0x14,0x02,0x75,0x05,0x21,0x01,0xff,0x99, -0x03,0x00,0x69,0x05,0x11,0xf4,0x33,0x13,0x31,0xf5,0x1a,0xfd,0xdb,0x0c,0xf0,0x05, -0xf4,0x0a,0xff,0x60,0x00,0x00,0x05,0xff,0xf5,0x0a,0xff,0xe1,0x00,0x00,0x0e,0xff, -0xf6,0x0b,0xff,0xf9,0x04,0x02,0x10,0xfd,0x46,0x2c,0xf2,0x02,0x02,0xff,0xff,0xf3, -0x09,0xff,0xff,0xb0,0x0a,0xff,0xff,0xf7,0x1c,0xff,0xff,0xf4,0x0e,0x34,0x05,0x40, -0xf8,0x04,0x9a,0xaa,0x01,0x00,0x11,0x91,0x5a,0x00,0x12,0x70,0x84,0x13,0x50,0xa0, -0xef,0xfa,0x00,0x05,0x66,0x05,0xf0,0x02,0xf9,0x04,0xff,0xff,0xfb,0x11,0x3f,0xa4, -0xff,0x84,0xfc,0x00,0x00,0x33,0xff,0x90,0x19,0xd5,0x01,0xd0,0xa2,0x01,0x70,0x00, -0x02,0xef,0xa4,0xf6,0x3f,0xa0,0xef,0xff,0xb0,0x8d,0x05,0x00,0xdd,0x00,0x20,0xff, -0xfb,0x51,0x05,0x21,0x14,0xfc,0x41,0x00,0x15,0x19,0xd6,0x04,0x11,0x5f,0x69,0x0b, -0x01,0x11,0x06,0x40,0x5f,0xfa,0xff,0xa0,0xab,0x36,0xf0,0x01,0x3f,0xfa,0x00,0x4f, -0xf9,0x00,0x03,0xff,0xa0,0xbf,0x90,0x00,0x00,0x3f,0xf1,0x15,0x17,0x0b,0x21,0x30, -0x01,0x9f,0x04,0xf0,0x09,0x9f,0x50,0x00,0x00,0x1d,0xe1,0x8f,0xf5,0x00,0x01,0xdf, -0xd0,0x08,0xff,0x50,0x1d,0xfd,0x10,0x00,0x8f,0xf6,0xdf,0xd1,0x00,0x8f,0x11,0x10, -0x10,0xf8,0x01,0x02,0x14,0x29,0x10,0x10,0xfc,0x31,0x13,0x10,0x14,0x01,0x21,0xfd, -0x18,0xe2,0x03,0xf0,0x04,0x6f,0xff,0xfd,0x4a,0xaa,0xaa,0xfb,0x00,0x0c,0xda,0xf7, -0xf4,0x00,0x00,0x0e,0xb0,0x00,0x00,0x9f,0x7a,0x29,0x63,0xeb,0x00,0x00,0x09,0xf1, -0x00,0x11,0x00,0xc0,0x10,0x00,0x02,0xe6,0xeb,0x9d,0x00,0x09,0xf9,0x99,0x99,0x4d, -0x44,0x01,0x63,0x7f,0xff,0xff,0xfb,0x1d,0xff,0x4b,0x0b,0x26,0x1d,0xa0,0x83,0x05, -0x40,0x6b,0xcc,0xc7,0x00,0x60,0x07,0x42,0xff,0xf8,0x22,0x22,0x54,0x04,0x00,0xb8, -0x06,0x0f,0x01,0x00,0x11,0x05,0x26,0x05,0x02,0x25,0x2d,0x01,0x1a,0x0a,0x01,0x88, -0x03,0x21,0x80,0x00,0xe2,0x06,0x11,0xf8,0xc7,0x01,0x01,0xb8,0x04,0x5f,0x69,0x9f, -0xff,0x99,0x60,0x52,0x07,0x03,0x50,0x46,0x66,0x2f,0xff,0x26,0x36,0x07,0x30,0x46, -0x76,0x4f,0x69,0x04,0x2e,0xfc,0xbc,0x36,0x07,0x13,0x00,0x8d,0x2b,0x00,0x10,0x02, -0x13,0xfa,0x6f,0x0a,0x01,0xa7,0x02,0x02,0x32,0x09,0x32,0x0c,0xff,0xfa,0x22,0x0c, -0x12,0xf6,0x07,0x00,0x11,0xf1,0x54,0x2a,0x00,0x0c,0x1f,0xf0,0x03,0x50,0x00,0x4f, -0xfd,0x00,0x03,0xaf,0xf8,0x07,0xff,0xf2,0x00,0x0e,0xff,0xff,0xef,0xfe,0x30,0x37, -0x0a,0x21,0xff,0xc2,0xa0,0x00,0x01,0x25,0x2c,0x21,0x98,0x62,0x67,0x01,0x10,0x84, -0xc5,0x01,0xf1,0x05,0x8f,0xff,0x60,0x00,0xaf,0xf3,0xec,0x2e,0xc0,0x1c,0xff,0xa0, -0xde,0x9f,0xd1,0xdf,0xfa,0x00,0x3e,0xff,0x80,0x02,0x11,0x2d,0x61,0x00,0x10,0x1c, -0x4e,0x05,0x10,0x2d,0x38,0x04,0xf0,0x10,0x00,0xcf,0xaf,0xd2,0xef,0xf6,0x00,0xfb, -0x0d,0xd0,0x2e,0xff,0x60,0xbf,0xef,0x80,0x02,0xef,0xf3,0x19,0xc8,0x00,0x00,0x16, -0x40,0x00,0x02,0x66,0x66,0x12,0x00,0x64,0x00,0xf1,0x01,0x3f,0x40,0x00,0x0c,0xff, -0xff,0x3f,0xf2,0xdf,0x6c,0xff,0xff,0x53,0x31,0xff,0x7c,0xfe,0x04,0x0f,0x06,0x00, -0x0b,0x10,0x7b,0xd3,0x03,0x71,0xff,0xc2,0x33,0x33,0x33,0x20,0xff,0x98,0x2a,0xc2, -0x8a,0xaa,0xaa,0xa9,0x00,0x00,0x49,0x99,0x99,0x99,0x60,0x00,0xc4,0x06,0x01,0xa4, -0x32,0x20,0x80,0xfa,0x1c,0x06,0x11,0xf3,0x06,0x00,0x72,0xf5,0xfe,0xaa,0xaa,0xaa, -0xff,0xf5,0x0f,0x04,0x40,0xff,0xff,0x80,0x4f,0x06,0x00,0x20,0x10,0x0c,0x06,0x00, -0x20,0x50,0x1e,0x06,0x00,0x51,0xfb,0xef,0xff,0xf5,0x9f,0x70,0x05,0x74,0xcd,0xdd, -0xdd,0xdd,0xdd,0xd4,0xef,0x3d,0x08,0x05,0x01,0x00,0x7f,0xbc,0xcc,0xcc,0xcc,0xcc, -0xc3,0xff,0x18,0x00,0x10,0x10,0x6b,0x12,0x00,0x22,0xcb,0x6f,0xfe,0x01,0x02,0x5e, -0x07,0x11,0x95,0x0e,0x00,0x70,0x65,0xf9,0x3d,0xff,0xff,0xfd,0x39,0x03,0x00,0x20, -0xf9,0x3d,0x10,0x00,0x11,0xa4,0x17,0x00,0x2c,0xb7,0xbf,0x2b,0x02,0x80,0x55,0x55, -0x20,0x00,0x03,0xff,0xff,0x90,0x72,0x03,0x10,0x40,0x84,0x01,0x00,0xda,0x03,0x40, -0xfc,0x44,0x40,0x0c,0xd2,0x0b,0x12,0x0e,0xa0,0x07,0x20,0xff,0xfe,0x45,0x02,0x10, -0xf6,0xc9,0x01,0x10,0xc0,0xc3,0x06,0x10,0x30,0xa4,0x18,0x00,0xf4,0x01,0x10,0xf1, -0x3e,0x03,0x14,0x50,0x9f,0x00,0xb0,0x35,0x6e,0xf7,0x54,0x00,0x00,0xff,0xf9,0x8f, -0xff,0x10,0x1d,0x01,0x00,0x06,0x00,0xb0,0xfa,0x24,0x44,0x01,0x00,0xff,0xf4,0xef, -0xff,0x3e,0x20,0x9b,0x06,0x20,0x3f,0xe2,0x06,0x00,0x21,0x43,0x31,0xa7,0x06,0x18, -0xf6,0x06,0x00,0x31,0x23,0x30,0xff,0x5e,0x0c,0x02,0x06,0x00,0x72,0x7a,0xaa,0xaa, -0xa2,0x00,0x00,0x03,0xfa,0x09,0x20,0x70,0x00,0xc9,0x0a,0x21,0xfa,0x10,0x50,0x06, -0x40,0xd0,0x00,0x01,0xff,0x45,0x2a,0x10,0x04,0xe3,0x2c,0x21,0x00,0x07,0x92,0x0a, -0x01,0xbe,0x2c,0x20,0x00,0x0d,0x06,0x00,0x20,0x30,0x7f,0x06,0x00,0x12,0xd0,0x0b, -0x07,0x20,0x13,0x33,0xb9,0x01,0x41,0x00,0x00,0xcf,0xf2,0xc4,0x0b,0x51,0x50,0x00, -0x00,0x5a,0xaa,0x01,0x00,0x12,0x2f,0x03,0x01,0xf0,0x1a,0xf9,0xfa,0x0d,0x01,0xb0, -0xd0,0xa2,0x0f,0xaf,0xeb,0xfb,0xcf,0xbf,0xbe,0xcb,0xfa,0xff,0xe1,0x98,0x1c,0x1c, -0x15,0xff,0xaf,0xfd,0x08,0x70,0xb0,0xb0,0x3f,0xfa,0xff,0xdf,0xdd,0xdd,0xdd,0xfd, -0xdf,0xaf,0xa0,0xd0,0x23,0x2e,0xa8,0xfa,0xfe,0xaf,0xaa,0xaa,0xaa,0xeb,0xaf,0x9a, -0xff,0x80,0x01,0x12,0x41,0x28,0x15,0x20,0xef,0xd0,0x09,0x03,0x11,0x8f,0x20,0x30, -0x70,0x29,0xff,0xff,0xff,0x50,0x00,0x03,0x69,0x01,0x41,0xe0,0x00,0x3c,0xff,0xae, -0x00,0x00,0xdd,0x06,0x00,0x45,0x01,0x12,0x9e,0x10,0x08,0x12,0x00,0x3e,0x1b,0x01, -0x9c,0x04,0x12,0xf9,0xa9,0x04,0x02,0x7f,0x03,0x13,0x05,0x0f,0x04,0x22,0x4f,0xf3, -0x5f,0x00,0x70,0x76,0x00,0x00,0x00,0x34,0x44,0x43,0x4f,0x01,0x20,0xfb,0x8a,0x05, -0x00,0xc1,0x8f,0xa0,0xff,0xff,0xfb,0x7f,0xf8,0xff,0xff,0xfc,0x11,0x11,0xaa,0x0c, -0x0f,0x05,0x00,0x10,0x50,0xbd,0xdd,0xdd,0xdd,0xd8,0x9f,0x01,0x11,0x54,0xb5,0x04, -0xf0,0x19,0x6c,0xff,0xff,0xff,0xd8,0x10,0x00,0x04,0xef,0xff,0xdb,0xbc,0xff,0xff, -0x70,0x08,0xff,0xd6,0x10,0x00,0x00,0x4b,0xff,0xb0,0xbf,0x70,0x00,0x13,0x32,0x00, -0x05,0xed,0x10,0x30,0x06,0xdf,0xff,0xfe,0x80,0x01,0xa9,0x3a,0x40,0xfc,0xce,0xff, -0xd2,0x1e,0x30,0x50,0x60,0x00,0x04,0xde,0x10,0x23,0x05,0x22,0x03,0x40,0xfc,0x0d, -0x23,0x04,0xff,0x83,0x29,0x32,0x6f,0xfa,0x00,0x06,0x04,0x10,0xac,0x72,0x04,0x03, -0x19,0x0b,0x31,0xd2,0x0f,0xea,0x68,0x01,0xc1,0xcf,0x90,0xfa,0x48,0x88,0x88,0x88, -0x88,0x65,0xff,0x1f,0xa9,0x3d,0x0c,0x32,0x1a,0xf1,0xfa,0xfa,0x02,0xc0,0xaf,0x1f, -0xa5,0x99,0x99,0x99,0x99,0x98,0x5f,0xf1,0xfd,0x99,0x01,0x00,0x33,0x9b,0xfa,0x0b, -0x98,0x02,0x06,0x2c,0x31,0x0f,0x4d,0x00,0x03,0x22,0x30,0x05,0x4d,0x00,0x23,0xf7, -0x00,0x4d,0x00,0x22,0x70,0x01,0x4d,0x00,0x2f,0x94,0x00,0x4d,0x00,0x1e,0x22,0x00, -0x00,0x4d,0x00,0x23,0xf0,0x00,0x4d,0x00,0x22,0x00,0x00,0x4d,0x00,0x2f,0x90,0x00, -0x4d,0x00,0x1d,0x23,0x85,0x00,0x4d,0x00,0x22,0xa0,0x00,0x4d,0x00,0x23,0xfa,0x00, -0x4d,0x00,0x2f,0x60,0x00,0x4d,0x00,0x1d,0x22,0x00,0x00,0x4d,0x00,0x01,0x0c,0x02, -0x00,0x4d,0x00,0x02,0x62,0x01,0x13,0xaf,0x11,0x00,0x0f,0x4d,0x00,0x09,0x10,0x00, -0x78,0x19,0x13,0x50,0x95,0x02,0x12,0xfc,0x0d,0x16,0x11,0xd0,0x11,0x00,0x31,0x64, -0x00,0xa5,0x56,0x09,0xf0,0x0a,0xbf,0xf6,0x4e,0x21,0x11,0x11,0x17,0xd3,0x0f,0xff, -0xec,0xce,0xec,0xcc,0xcc,0xef,0xe1,0x7f,0xe3,0x00,0x2d,0x00,0x00,0x06,0x80,0xd9, -0x01,0x32,0x97,0x0a,0xa6,0x44,0x00,0x14,0xcc,0x98,0x06,0x29,0x2f,0xfa,0x5c,0x00, -0x20,0x01,0x10,0x89,0x00,0xf0,0x38,0xff,0xe8,0x00,0x00,0xdf,0xf8,0xcf,0xf8,0x00, -0x7f,0xff,0x81,0xdf,0xf1,0x0c,0xfa,0xf8,0x52,0xdf,0x60,0xff,0x64,0x78,0x3a,0xf8, -0x0f,0xff,0x50,0x08,0xff,0xa1,0xff,0xff,0x12,0xff,0xfa,0x0f,0xff,0x41,0x15,0xff, -0xa0,0xef,0x46,0x88,0x48,0xf8,0x0b,0xfc,0xf8,0x42,0xef,0x50,0x5f,0xff,0x82,0xef, -0xf1,0x00,0xaf,0xfa,0xef,0xf6,0x00,0x00,0x5a,0xdc,0xa4,0x00,0x00,0x01,0x96,0x31, -0x62,0x78,0x8b,0xff,0xfe,0x88,0x82,0x53,0x03,0x71,0x12,0x22,0x22,0x22,0x22,0x20, -0x3f,0x8c,0x30,0xbf,0x3f,0xfc,0xfc,0xfe,0xdf,0x90,0x3f,0xd5,0xf4,0xeb,0x7f,0x06, -0x00,0x07,0x61,0xe6,0xf5,0xec,0x8f,0x90,0x2f,0x54,0x03,0x52,0x07,0x9a,0xaa,0xaa, -0xa9,0x95,0x07,0x12,0x14,0xf7,0x00,0x22,0xef,0xa0,0x89,0x06,0x10,0xf9,0x0d,0x00, -0x30,0xc3,0xdf,0xff,0x3b,0x09,0x30,0xfd,0x3d,0xf5,0x1a,0x00,0x40,0xff,0xd3,0x50, -0x00,0x49,0x06,0x02,0x0d,0x00,0x21,0xff,0x60,0x0d,0x00,0x15,0xf6,0x0d,0x00,0x12, -0x0b,0xe8,0x10,0x11,0x0d,0x0d,0x00,0x22,0x00,0x0f,0xf5,0x10,0x23,0x08,0x86,0x66, -0x01,0x10,0x8b,0x73,0x05,0x14,0xb6,0xb8,0x01,0xf0,0x0d,0xf2,0x00,0xbf,0xff,0xf8, -0xbf,0xf6,0xef,0xff,0x40,0xbf,0xff,0xff,0x10,0xa4,0x09,0xff,0xf4,0xaf,0xff,0xff, -0xfd,0x10,0x07,0xff,0xff,0x4d,0xff,0x21,0x09,0xf3,0x07,0xbf,0xff,0xf4,0x1d,0xff, -0xff,0xf4,0x06,0x10,0xbf,0xff,0x40,0x1d,0xff,0xff,0x47,0xfd,0x2b,0xff,0xf4,0x00, -0x1d,0xb7,0x01,0x00,0x2f,0x10,0x01,0xcf,0x06,0x60,0x08,0x99,0x99,0x70,0x00,0xbf, -0xbf,0x11,0x50,0xd0,0xd0,0xd0,0xeb,0x9f,0x05,0x00,0x60,0xff,0xd1,0xd1,0xd1,0xeb, -0xff,0xe6,0x04,0x0f,0x05,0x00,0x0b,0x10,0xef,0xc6,0x05,0x52,0x5c,0xdd,0xdd,0xdd, -0xb2,0x9f,0x00,0x10,0xb0,0x37,0x05,0x00,0x82,0x26,0x20,0x9f,0x10,0xec,0x12,0x72, -0x0a,0xff,0x21,0x11,0x11,0x1f,0xf0,0xad,0x00,0x12,0xf0,0x22,0x06,0x21,0xd0,0x08, -0x4d,0x0f,0x00,0x73,0x34,0x02,0xd5,0x01,0x1d,0x00,0x01,0x00,0x0a,0xf6,0x01,0x09, -0x01,0x00,0x13,0xfc,0x08,0x00,0x17,0xf4,0x14,0x00,0x7f,0xfb,0xfa,0x00,0xfe,0xf7, -0x00,0xf7,0x4c,0x00,0x03,0x01,0x51,0x0a,0x3f,0x04,0x00,0x02,0x19,0x00,0x02,0x2f, -0xe3,0x00,0x01,0x00,0x18,0x1f,0xe7,0x21,0x00,0x0d,0x03,0x94,0x00,0xb2,0xf8,0x00, -0xfe,0x00,0x00,0xf4,0xfe,0xf8,0xfc,0x00,0xf1,0x9f,0x00,0x7e,0xff,0x00,0x00,0xfe, -0xff,0xfb,0xfd,0x9e,0x00,0x00,0x07,0x20,0x1f,0xfe,0xef,0x00,0x07,0x1c,0xfd,0x0a, -0x00,0x19,0xff,0x1f,0x00,0x19,0xfe,0x79,0x00,0x00,0x0e,0x00,0x7e,0xf7,0x00,0xfe, -0x00,0xfe,0xfc,0xfe,0x47,0x00,0x0b,0x0f,0x01,0x05,0x42,0x00,0x11,0xfe,0x37,0x00, -0x29,0xfe,0xfd,0x33,0x00,0x00,0xca,0x14,0x35,0xed,0x00,0xeb,0x27,0x00,0x20,0xfd, -0xfe,0x23,0x00,0x01,0x2e,0x00,0x0e,0x4a,0x00,0x02,0x5f,0x00,0x1d,0x02,0x64,0x00, -0x0e,0xaa,0x00,0x0f,0x01,0x00,0x0c,0x1b,0xef,0xaa,0x00,0x12,0xfd,0x0f,0x00,0x3c, -0xfe,0xfc,0xfa,0xad,0x01,0xa6,0x02,0xfa,0x00,0x00,0xeb,0xfe,0xeb,0xf7,0x00,0xe4, -0x2e,0x00,0x38,0xff,0xf4,0xfb,0x4d,0x00,0x20,0xd7,0x00,0x77,0x40,0x12,0xed,0x7f, -0x01,0x30,0x00,0xfc,0x00,0x5c,0x05,0x00,0x5f,0x05,0x02,0xd4,0x00,0x1d,0xe2,0x69, -0x01,0x00,0xe4,0x00,0x1f,0xfc,0xa3,0x00,0x0e,0x37,0xfb,0x00,0xfe,0x71,0x0e,0x0d, -0xb1,0x02,0xc0,0xe6,0xe4,0x00,0x00,0xf4,0xfd,0xea,0xfe,0x02,0x00,0x02,0x02,0x69, -0x00,0xf2,0x02,0xef,0xf7,0x00,0xf7,0xeb,0xf9,0xf8,0x00,0xf9,0xf8,0xfb,0xf8,0xfa, -0x00,0xed,0xf7,0xf6,0x32,0x01,0x66,0xea,0xf0,0x00,0x00,0xf8,0xff,0x43,0x01,0x50, -0xfb,0xfc,0x00,0x00,0xfb,0xee,0x00,0x17,0xff,0x9b,0x01,0x20,0x02,0x00,0x78,0x05, -0x16,0xfc,0xd3,0x02,0x33,0x01,0xfd,0xfd,0x8a,0x01,0x0b,0x34,0x03,0x14,0xf0,0x38, -0x01,0x15,0x01,0x38,0x01,0x02,0xd4,0x01,0x07,0xdf,0x00,0xf0,0x0a,0x02,0xfb,0xe9, -0xf1,0x00,0x00,0xf1,0xfd,0xf6,0xfe,0x02,0xf6,0x02,0x02,0x01,0x02,0x00,0x02,0xfa, -0xf9,0xfe,0xfc,0xf9,0xfc,0xfa,0x2d,0x02,0x76,0xfe,0xfd,0x02,0xf6,0xfa,0xfa,0xfb, -0x65,0x05,0x1a,0xfd,0xba,0x01,0x02,0x4e,0x00,0x0e,0xe1,0x01,0x04,0x1c,0x00,0x0f, -0xf3,0x01,0x20,0x06,0x1d,0x00,0x0f,0x38,0x02,0x0a,0x15,0xff,0x73,0x02,0x1f,0xff, -0xa2,0x03,0x13,0x1f,0xff,0x1d,0x00,0x13,0x1e,0x02,0x0e,0x04,0x19,0x02,0xb1,0x00, -0x13,0x02,0xc8,0x03,0x0f,0x01,0x00,0x27,0x0e,0xff,0x00,0x1f,0xf7,0x2f,0x00,0x0b, -0x26,0xfe,0xfe,0x7b,0x00,0x1c,0xee,0x9f,0x02,0x20,0xfe,0x02,0x0b,0x02,0x3e,0x05, -0x00,0x02,0xc6,0x04,0x0e,0xec,0x03,0x0c,0xa0,0x03,0x1c,0xef,0x6c,0x00,0x2f,0xff, -0x01,0x9e,0x01,0x01,0x1f,0xf3,0xea,0x00,0x27,0x1f,0xfc,0x27,0x00,0x13,0x1f,0xfe, -0x1c,0x00,0x21,0x04,0xb4,0x03,0x20,0x02,0x03,0xf8,0x09,0x3d,0x00,0x04,0x05,0x21, -0x00,0x30,0x06,0x07,0x08,0xa0,0x48,0xf2,0x05,0x0c,0x0c,0x0d,0x0e,0x0f,0x0c,0x0c, -0x09,0x10,0x11,0x12,0x00,0x13,0x0d,0x14,0x15,0x16,0x17,0x18,0x19,0xc2,0x08,0x70, -0x1b,0x1c,0x00,0x1d,0x1e,0x00,0x1f,0xce,0x38,0xff,0x00,0x1f,0x1f,0x21,0x1b,0x00, -0x22,0x00,0x23,0x00,0x24,0x25,0x26,0x24,0x27,0x28,0x73,0x00,0x04,0x11,0x06,0x01, -0x00,0xe1,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0c,0x0c,0x0c,0x0c,0x09,0x0c,0x09,0x09, -0x93,0x51,0x81,0x0d,0x0d,0x0d,0x0d,0x17,0x00,0x00,0x1a,0x01,0x00,0x62,0x00,0x1c, -0x1d,0x1d,0x1d,0x1d,0x25,0x0c,0x10,0x21,0x01,0x00,0x12,0x00,0xaa,0x13,0x40,0x1b, -0x24,0x06,0x1a,0x02,0x00,0x22,0x08,0x1c,0x02,0x00,0x64,0x09,0x00,0x09,0x00,0x0a, -0x1d,0x02,0x00,0x04,0x64,0x00,0x54,0x0c,0x1f,0x00,0x00,0x0c,0x02,0x00,0x00,0xef, -0x07,0x53,0x00,0x0e,0x00,0x00,0x0f,0x02,0x00,0x00,0x1f,0x00,0x00,0x02,0x00,0x80, -0x1f,0x00,0x00,0x09,0x21,0x09,0x21,0x09,0x5b,0x00,0x11,0x22,0x02,0x00,0x03,0x01, -0x00,0x11,0x13,0x02,0x00,0x17,0x0d,0x02,0x00,0x70,0x15,0x00,0x17,0x24,0x17,0x18, -0x27,0x02,0x00,0x0f,0xb7,0x02,0x28,0x07,0x72,0x01,0x20,0x03,0x02,0x6d,0x01,0x4a, -0x06,0x07,0x06,0x08,0x1f,0x00,0x00,0xce,0x00,0x20,0x00,0x0b,0xe5,0x07,0x00,0xc1, -0x00,0x01,0x08,0x00,0xd1,0x0b,0x00,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x00, -0x00,0x15,0x81,0x4f,0x52,0x17,0x17,0x17,0x18,0x17,0x0e,0x11,0xff,0x01,0x19,0x1a, -0x19,0x17,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1f,0x22,0x00,0x00,0x23,0x73,0x00, -0x02,0x11,0x0a,0x01,0x00,0x26,0x24,0x0b,0x12,0x00,0x10,0x0b,0x01,0x00,0xa1,0x00, -0x0b,0x0f,0x0f,0x0f,0x0f,0x13,0x00,0x00,0x16,0x01,0x00,0x20,0x25,0x17,0x01,0x00, -0x02,0x57,0x00,0x02,0x83,0x01,0xa0,0x26,0x1e,0x1e,0x1e,0x1e,0x1f,0x00,0x1f,0x0a, -0x16,0x02,0x00,0x22,0x0b,0x17,0x02,0x00,0x20,0x00,0x17,0x63,0x13,0x04,0x02,0x00, -0x05,0x16,0x00,0x0b,0x01,0x00,0x1b,0x0c,0x10,0x00,0x10,0x19,0x02,0x00,0x51,0x19, -0x00,0x00,0x0b,0x1a,0x02,0x00,0x13,0x17,0x7f,0x12,0x12,0x1c,0x02,0x00,0x30,0x0e, -0x00,0x0e,0x8e,0x09,0x16,0x1e,0x02,0x00,0x70,0x11,0x00,0x13,0x1f,0x13,0x14,0x22, -0x02,0x00,0x1f,0x00,0x74,0x01,0x26,0x50,0x00,0x00,0x00,0x00,0x00, +0x7f,0x63,0x06,0x40,0x00,0x0d,0x80,0xb9,0x6c,0x00,0x1c,0x7f,0x08,0x96,0x00,0x00, +0x00,0x89,0x60,0x0e,0x01,0x1d,0x30,0x4f,0xff,0xff,0x6f,0x05,0xf0,0x12,0xfd,0x88, +0x83,0x00,0x06,0xfb,0xfb,0x00,0x00,0x00,0x0e,0xf2,0xfc,0x22,0x20,0x00,0x7f,0x80, +0xff,0xff,0xf0,0x01,0xff,0xa9,0xfe,0x55,0x40,0x09,0xff,0xff,0xfd,0x00,0x00,0xf6, +0x06,0x8f,0x77,0x76,0xbf,0x60,0x00,0xef,0xff,0xfd,0xc0,0x08,0x12,0x81,0x9f,0xfd, +0x60,0x00,0x00,0x5f,0x70,0x00,0x86,0x09,0xb1,0x00,0x4e,0x50,0x00,0x00,0xce,0x10, +0x00,0x00,0x1e,0x90,0x9f,0x00,0x0f,0xb5,0x08,0x11,0x7f,0x00,0x00,0xdd,0x10,0x00, +0x08,0xe2,0x30,0x00,0x17,0x7f,0x06,0x60,0x00,0x01,0xba,0x9b,0x10,0x30,0x00,0x15, +0x8f,0x01,0x71,0x07,0x10,0x03,0xe3,0x2e,0x40,0x30,0x00,0x15,0x8c,0x1d,0xd0,0x03, +0xf7,0x00,0x00,0x00,0xfd,0x02,0x00,0x20,0x01,0xec,0x8c,0x0c,0x00,0x19,0x00,0x2e, +0x0f,0xd0,0x05,0x00,0x71,0x00,0x75,0x00,0x2c,0x9b,0xa0,0x00,0x20,0x00,0x0f,0x03, +0x00,0x05,0x6f,0x27,0x01,0x70,0x5e,0x14,0xe2,0x24,0x00,0x0b,0xc0,0x00,0xff,0xfe, +0xa2,0x00,0x00,0xff,0x8a,0xff,0x20,0x00,0xfe,0xe4,0x0a,0xe2,0xfe,0x00,0x0f,0xf0, +0x1f,0xff,0xf4,0x0d,0xf1,0x02,0xfe,0x20,0x0f,0xf0,0x14,0x00,0x01,0x1e,0x00,0x01, +0x28,0x00,0x70,0x3e,0x83,0xe0,0x00,0x0a,0x88,0xf8,0x79,0x02,0x00,0x37,0x0c,0x40, +0x09,0xf5,0x2f,0xfa,0xe7,0x08,0xf0,0x09,0xf4,0x09,0xf5,0x2f,0xce,0xd0,0x9f,0x52, +0xfb,0x6f,0x89,0xf5,0x2f,0xb0,0xcf,0xbf,0x52,0xfb,0x02,0xff,0xf5,0x2f,0xb0,0x08, +0xe7,0x08,0x40,0x0d,0xf5,0x00,0x6f,0x3e,0x02,0x13,0x8f,0x51,0x03,0xf1,0x14,0x07, +0xdf,0xd7,0x00,0x09,0xfd,0xad,0xf8,0x02,0xfe,0x00,0x0e,0xf1,0x5f,0x90,0x00,0x9f, +0x57,0xf7,0x00,0x08,0xf6,0x6f,0x80,0x00,0x9f,0x52,0xfd,0x00,0x0e,0xf1,0x09,0xfd, +0x9d,0xf9,0x24,0x00,0x01,0x00,0x07,0x3f,0x00,0x2f,0x80,0x36,0x00,0x1c,0x7f,0x08, +0xf7,0x00,0x00,0x08,0xe4,0xe7,0x36,0x00,0x1c,0x72,0x5e,0x65,0xc0,0x00,0x0c,0x7a, +0xf6,0x51,0x03,0x0f,0x36,0x00,0x16,0x7f,0x64,0x05,0x50,0x00,0x0b,0x90,0xab,0x6c, +0x00,0x1b,0xf1,0x09,0x02,0x00,0x02,0x05,0xf6,0x08,0xf2,0x0b,0xfb,0xf9,0x00,0x0d, +0xfb,0x00,0x07,0xfe,0xf5,0x05,0xfa,0x1c,0xf3,0x07,0x00,0x06,0x2f,0x02,0xf0,0x1e, +0x00,0x07,0xdf,0xdb,0x90,0x08,0xfd,0x9d,0xf9,0x01,0xfe,0x00,0xbf,0xf2,0x5f,0x90, +0x5d,0x9f,0x66,0xf8,0x1e,0x37,0xf7,0x5f,0x99,0x90,0x8f,0x61,0xff,0xd0,0x0d,0xf2, +0x08,0xfe,0x9d,0xf9,0x00,0x7d,0xdf,0xd7,0x00,0x07,0x20,0x00,0x00,0xff,0x08,0x41, +0x00,0x00,0x0c,0xd0,0x7f,0x00,0x0f,0x57,0x09,0x11,0x7f,0x00,0x00,0xae,0x30,0x00, +0x04,0xf5,0x30,0x00,0x17,0x7f,0x0b,0xf4,0x00,0x00,0xbb,0x5e,0x30,0x30,0x00,0x16, +0x7f,0x72,0x07,0x30,0x00,0xe6,0x0d,0x70,0x90,0x00,0x16,0x00,0x8a,0x03,0x31,0x00, +0x8e,0x20,0x91,0x00,0xf6,0x0b,0x0b,0xf5,0x00,0x4f,0xc0,0x3f,0xc0,0x0c,0xf3,0x00, +0xaf,0x33,0xfb,0x00,0x02,0xfb,0xaf,0x20,0x00,0x09,0xff,0xa0,0x00,0x00,0x1f,0xf2, +0x68,0x09,0x00,0x09,0x00,0x00,0xe0,0x05,0xf1,0x0d,0x00,0x2f,0xb2,0x10,0x00,0x2f, +0xff,0xfe,0x60,0x2f,0xc5,0x6d,0xf3,0x2f,0xa0,0x06,0xf7,0x2f,0xb2,0x3c,0xf4,0x2f, +0xff,0xff,0x90,0x2f,0xc5,0x41,0x20,0x00,0xf4,0x1c,0x02,0xbf,0xe8,0x00,0x0c,0xf8, +0xcf,0x50,0x1f,0xb0,0x4f,0x80,0x2f,0xb0,0x9f,0x30,0x2f,0xb0,0xee,0x00,0x2f,0xb0, +0xbf,0x70,0x2f,0xb0,0x1d,0xf5,0x2f,0xb0,0x03,0xfb,0x2f,0xb5,0x69,0xf9,0x2f,0xba, +0xfe,0xa1,0x06,0xf7,0x00,0x0b,0x04,0xff,0x0f,0x5d,0xfd,0x40,0x3f,0xc6,0xef,0x12, +0x52,0x0a,0xf3,0x07,0xde,0xff,0x46,0xf9,0x2a,0xf4,0x7f,0xb7,0xef,0x40,0xaf,0xda, +0xf6,0x00,0x07,0xf6,0x00,0x01,0xe8,0x23,0x00,0x0b,0x6f,0x8f,0x80,0x00,0x8d,0x4e, +0x70,0x23,0x00,0x09,0xaf,0x05,0xe6,0x5d,0x00,0xc6,0xaf,0x60,0x02,0x00,0x10,0x23, +0x00,0x06,0x7f,0x0b,0x90,0x9b,0x00,0x54,0x05,0x50,0xb8,0x09,0x06,0x50,0x00,0x5a, +0x50,0x00,0x0c,0x2a,0x15,0x10,0x50,0x69,0x00,0x0f,0x27,0x00,0x06,0xfb,0x18,0x05, +0xdf,0xd7,0xbf,0xd6,0x02,0xfe,0x8d,0xff,0x8c,0xf3,0x13,0x10,0x6f,0x90,0x3f,0x80, +0x9e,0xff,0xff,0xff,0xfa,0x7f,0x94,0x8f,0xa3,0x33,0x27,0xfb,0x7c,0xff,0x98,0xb2, +0x0a,0xfe,0xa3,0xbe,0xeb,0x20,0xe3,0x09,0x90,0x50,0x27,0x21,0xfe,0x7d,0xf3,0x03, +0xdf,0xe5,0x4b,0x08,0x00,0x4b,0x07,0x20,0x02,0xe7,0xf9,0x00,0x31,0x00,0x08,0xe1, +0xfa,0x00,0xf0,0x09,0x3c,0xfd,0x50,0x1e,0xf8,0xcf,0x36,0xf7,0x03,0xf8,0x8f,0xff, +0xff,0xa6,0xf9,0x33,0x32,0x1e,0xf9,0x9e,0x40,0x2b,0xfe,0x90,0x24,0x00,0x2f,0x02, +0xf7,0x23,0x00,0x0b,0x6f,0x9f,0x70,0x00,0x8d,0x4e,0x60,0x23,0x00,0x09,0x30,0x0c, +0x90,0xaa,0x4c,0x03,0x0f,0x3a,0x0a,0x06,0x88,0x2f,0xc0,0x04,0xf6,0x00,0x00,0x02, +0xfb,0x02,0x00,0x60,0x03,0xfa,0x00,0xcc,0x00,0x00,0xa8,0x0d,0x29,0x2f,0xb0,0x05, +0x00,0x62,0x04,0xfc,0x00,0x4e,0x5a,0xb0,0x1b,0x00,0x0e,0x03,0x00,0x6f,0x7d,0x05, +0xe1,0x37,0x02,0x80,0x1b,0x00,0x02,0xf0,0x15,0x02,0xd8,0x04,0x00,0x03,0xdf,0xfc, +0x00,0x00,0x6e,0xfe,0x10,0x00,0x31,0x8f,0x80,0x05,0xef,0xef,0xd0,0x2f,0xe5,0x6f, +0xf0,0x6f,0x70,0x0d,0xf0,0x6f,0x70,0x0f,0xd0,0x1f,0xf8,0xcf,0x60,0xb0,0x09,0xfe, +0x02,0x03,0xe8,0x2f,0x00,0xa8,0x8f,0x90,0x01,0x00,0x10,0x05,0xf9,0xcf,0xb0,0x5f, +0xf8,0xcf,0x8c,0x0a,0x63,0x04,0xfa,0x00,0x00,0x05,0xf4,0x17,0x01,0xf1,0x07,0x60, +0x1f,0xe8,0xcf,0x67,0xf6,0x01,0xfc,0x8f,0x40,0x0e,0xe6,0xf6,0x01,0xfc,0x1f,0xe8, +0xcf,0x50,0x3c,0xfd,0x60,0xe5,0x0b,0x1f,0xda,0x23,0x00,0x0b,0x6f,0x6f,0xa0,0x00, +0x5e,0x4c,0x90,0x23,0x00,0x09,0x06,0x8c,0x00,0x0f,0x23,0x00,0x06,0x7f,0x08,0xc0, +0x7d,0x00,0x46,0x03,0x70,0x7f,0x0a,0x06,0xf0,0x09,0x00,0x3f,0x70,0x00,0x02,0xd7, +0x00,0x12,0x22,0x22,0x19,0xff,0xff,0xfe,0x25,0x55,0x55,0x40,0x02,0xd6,0x00,0x00, +0x3e,0x70,0xb3,0x07,0xf1,0x0d,0x10,0x3c,0xfe,0xc0,0x1f,0xe8,0xff,0x67,0xf6,0x4c, +0xfc,0x8f,0x4c,0x3f,0xe7,0xfb,0xb1,0xfc,0x1f,0xfa,0xcf,0x50,0x6e,0xfd,0x60,0x0b, +0x40,0x00,0xc1,0x00,0x21,0x06,0xf3,0x8c,0x02,0x09,0x35,0x0a,0x00,0x07,0x00,0x71, +0x2f,0xe8,0xdf,0x90,0x8e,0xe9,0xf9,0xb5,0x0b,0x1f,0xda,0x23,0x00,0x0a,0x00,0xe5, +0x00,0x3f,0x5d,0x3b,0x80,0x23,0x00,0x09,0x12,0x09,0xc2,0x00,0x0f,0x9e,0x0a,0x06, +0x33,0x00,0x0a,0xf4,0xd6,0x04,0x20,0x0d,0xf2,0xf1,0x0e,0xf1,0x11,0xef,0x02,0xfb, +0x3f,0xa0,0x0d,0xf8,0xf5,0x00,0x7f,0xff,0x00,0x02,0xff,0xa0,0x00,0x0c,0xf5,0x00, +0x00,0xbf,0x00,0x02,0x9f,0x90,0x00,0x3f,0xc1,0x00,0x00,0x4f,0x90,0xba,0x00,0x00, +0x07,0x00,0x16,0xfc,0xff,0x0c,0x42,0x90,0x0f,0xe4,0xf9,0xff,0x0c,0x00,0x15,0x00, +0x05,0x23,0x00,0x8f,0x00,0x0d,0x70,0xd8,0x00,0x73,0x06,0x40,0xac,0x0a,0x10,0x8f, +0x00,0xbf,0xff,0x80,0x00,0x01,0x22,0x21,0xd3,0x11,0x17,0x7f,0x0a,0xff,0xfb,0x00, +0x01,0x11,0x00,0xf1,0x03,0x07,0xbf,0x88,0x0a,0x60,0x00,0x04,0xef,0xd2,0x00,0x00, +0x00,0x10,0x7b,0x09,0x17,0x9f,0x09,0xc0,0xc9,0x00,0x2d,0xfd,0x20,0x00,0x01,0xb0, +0x04,0x08,0x06,0xa2,0x00,0xf2,0x00,0xef,0x30,0x00,0x0d,0xf5,0xf9,0x00,0x03,0xfb, +0x0e,0xf0,0x00,0x9f,0x60,0xaf,0xa2,0x00,0x60,0xfd,0x88,0x8e,0xf2,0xcf,0x40,0xd6, +0x04,0x70,0x00,0x0c,0xa0,0x00,0x00,0x01,0xf6,0x9f,0x05,0x16,0xf3,0xa8,0x00,0x1a, +0x40,0xa8,0x00,0x00,0x25,0x00,0x20,0x01,0xf7,0x23,0x00,0x84,0x00,0x00,0x8f,0x40, +0x00,0x00,0x3f,0x60,0x3f,0x13,0xf0,0x01,0xd6,0x00,0x0a,0xfc,0x9d,0xf7,0x02,0xfd, +0x00,0x0f,0xe0,0x6f,0x80,0x00,0x12,0x07,0x2a,0x04,0xf4,0x09,0x6f,0x80,0x00,0x11, +0x02,0xfc,0x00,0x0f,0xe0,0x0b,0xfc,0x9d,0xf7,0x00,0x09,0xef,0xd6,0x00,0x00,0x08, +0xf5,0x00,0x03,0xf6,0x45,0x04,0xff,0x0e,0x1f,0xe8,0xef,0x27,0xf6,0x03,0xb4,0x8f, +0x40,0x00,0x07,0xf6,0x02,0x73,0x1f,0xe8,0xdf,0x30,0x3c,0xfd,0x50,0x00,0x0a,0xf6, +0x00,0x00,0x0a,0xd4,0xe5,0x59,0x00,0x1b,0x00,0x8d,0x0f,0x3f,0x9c,0x4e,0x50,0x59, +0x00,0x0a,0x7f,0x03,0xa1,0x00,0x00,0x00,0x6e,0x20,0x59,0x00,0x1c,0x22,0x5e,0x20, +0x39,0x00,0x0f,0x59,0x00,0x08,0x60,0xbd,0x5f,0x80,0x00,0x00,0xdf,0x3f,0x01,0x10, +0x40,0x59,0x00,0xf4,0x00,0xd8,0x00,0x0a,0xfc,0x9c,0xfa,0x02,0xfd,0x00,0x09,0xa0, +0x6f,0x80,0x00,0x00,0x59,0x00,0x56,0x33,0x02,0xfc,0x00,0x1f,0x59,0x00,0x6f,0x0a, +0xd5,0xf7,0x00,0x0a,0xf7,0x59,0x00,0x0a,0x62,0x0a,0xd5,0xf6,0x00,0x00,0xbf,0x63, +0x01,0x0f,0xc8,0x13,0x11,0xf0,0x15,0x00,0x00,0x3f,0x96,0xe0,0x00,0x03,0xf9,0x9c, +0x00,0x00,0x3f,0x98,0x40,0x5d,0xea,0xf9,0x00,0x2f,0xe9,0xdf,0x90,0x07,0xf6,0x04, +0xf9,0x00,0x8f,0x40,0x3f,0x90,0x07,0xf5,0x03,0xf9,0x00,0xbb,0x0f,0x4f,0x00,0x5d, +0xe9,0xf9,0x0e,0x0a,0x1c,0x00,0x7a,0x0e,0x70,0x0d,0xff,0xf9,0x00,0x02,0x5f,0xa1, +0x8d,0x0e,0x00,0x58,0x00,0x40,0x7f,0x60,0x4f,0x90,0x57,0x00,0x40,0x7f,0x50,0x3f, +0x90,0x56,0x00,0xbf,0x05,0xde,0x9f,0x90,0x02,0xff,0xff,0x30,0x00,0x22,0x22,0x0d, +0x0b,0x12,0x30,0x0b,0xff,0xfa,0x14,0x03,0x0f,0x45,0x10,0x07,0x6f,0xc3,0x3c,0x10, +0x00,0x9f,0xf9,0xbd,0x0b,0x16,0x9f,0x0a,0xb0,0xd8,0x00,0x2e,0xfd,0x10,0x00,0x01, +0xc4,0x06,0x09,0x5f,0x70,0x00,0x00,0x0b,0xb0,0x10,0x0c,0x17,0x5f,0x4e,0x30,0x00, +0x02,0xa1,0xf4,0x06,0x0a,0x09,0x47,0x00,0x11,0xb0,0x57,0x00,0x11,0x60,0x4f,0x00, +0x09,0x87,0x0c,0x40,0xe8,0x00,0x00,0x03,0xb7,0x04,0xa2,0xde,0x10,0x02,0xcf,0xd5, +0x00,0xef,0x8c,0xf3,0x5f,0xef,0x00,0xff,0x0c,0x7f,0x83,0x33,0x23,0xfd,0x44,0xb1, +0x08,0xff,0xff,0x30,0x03,0xcd,0x20,0x00,0x0e,0x91,0x00,0x00,0x8f,0x60,0x01,0xe9, +0x8e,0x20,0x00,0x2e,0xb6,0x0c,0x17,0x6f,0x09,0xe5,0xe8,0x00,0x09,0xf8,0x9a,0x07, +0x0b,0x74,0x09,0xf6,0x00,0x00,0x09,0xd4,0xe5,0xc0,0x0a,0xf0,0x17,0xd8,0x00,0x09, +0xfd,0x9c,0xfa,0x01,0xfe,0x00,0x0a,0xb0,0x5f,0x90,0x01,0x11,0x06,0xf8,0x08,0xff, +0xf2,0x5f,0x90,0x24,0xdf,0x21,0xfe,0x00,0x0c,0xf2,0x09,0xfd,0x9a,0xff,0x10,0x07, +0xdf,0xeb,0x30,0x17,0x04,0x21,0x7e,0x4d,0xed,0x08,0xfa,0x14,0x4d,0xe9,0xfb,0x1f, +0xf9,0xcf,0xb6,0xf7,0x02,0xfb,0x8f,0x40,0x2f,0xb6,0xf6,0x02,0xfb,0x1f,0xf8,0xcf, +0xb0,0x4d,0xea,0xfb,0x02,0x00,0x4f,0xa0,0xdb,0x7d,0xf4,0x07,0xdf,0xd6,0x00,0xc4, +0x04,0x0f,0x64,0x00,0x15,0x07,0xc4,0x04,0x0f,0x64,0x00,0x11,0x01,0x8b,0x03,0x2f, +0x5e,0x20,0xc8,0x00,0x1c,0x6f,0x3e,0x40,0x00,0x02,0xa2,0x00,0xc8,0x00,0x15,0x0f, +0xca,0x16,0x15,0x60,0x00,0x08,0x20,0x00,0x00,0x01,0x17,0x07,0x14,0x5c,0x41,0x24, +0x20,0x03,0x10,0xe7,0x19,0x6f,0x00,0x2f,0x30,0x00,0x01,0x81,0xed,0x12,0x11,0x72, +0x00,0x02,0x73,0x00,0x00,0x05,0xe7,0x85,0x18,0x1a,0x02,0x04,0x17,0x7a,0xe8,0x88, +0xcf,0x52,0xff,0xff,0xff,0x16,0x17,0x01,0x09,0x00,0x7f,0x01,0xce,0x70,0x00,0x65, +0x07,0x30,0x2a,0x13,0x10,0x20,0x1f,0xd0,0x95,0x11,0xf1,0x04,0xff,0xff,0xff,0xf3, +0x2f,0xd2,0x22,0x8f,0x80,0x1f,0xe8,0x88,0xbf,0x70,0x1f,0xff,0xff,0xff,0x70,0x19, +0x00,0x0b,0x05,0x00,0x00,0x09,0x17,0xf9,0x08,0x5f,0xff,0xf1,0x00,0x04,0xfb,0x20, +0x00,0x02,0xfc,0xbf,0xc1,0x02,0xff,0x9b,0xf9,0x02,0xfb,0x01,0xfc,0x02,0xfb,0x00, +0x04,0x00,0x8f,0x0c,0xb1,0xe3,0x6c,0x5f,0xd0,0x11,0x01,0x6c,0x0e,0x09,0x8f,0x1d, +0xa1,0xf1,0x8a,0x6f,0xb0,0x11,0x01,0x9b,0x09,0x03,0x6f,0x4f,0xff,0xf1,0x02,0x22, +0x20,0x3f,0x00,0x08,0x5e,0x6f,0xff,0xf0,0x11,0x10,0xf1,0x09,0x6f,0x2c,0x24,0xc0, +0x0a,0xff,0x70,0xe6,0x0e,0x0b,0x60,0x5f,0x17,0xe0,0xbf,0xf5,0x00,0x22,0x03,0x0b, +0x40,0x00,0x09,0x50,0x18,0x5b,0xe7,0xe2,0xda,0x17,0xf7,0x48,0x14,0xaa,0x9c,0x1f, +0x81,0x9f,0x50,0x08,0x60,0xd9,0x00,0x00,0x7f,0x15,0x23,0xb2,0xfb,0x03,0x00,0x10, +0xb0,0x87,0x18,0x7f,0xaf,0x40,0xfd,0x00,0x00,0x0a,0xf4,0x0b,0x00,0x05,0xf0,0x08, +0x9a,0x00,0xbf,0x30,0xfd,0x0a,0xf9,0x8f,0xd0,0x0f,0xd0,0x1a,0xef,0xb2,0x00,0x2e, +0x80,0xbe,0x02,0xd7,0x09,0xc0,0x00,0xa0,0x14,0x6d,0x0c,0xf1,0x3f,0xa0,0xcf,0x13, +0x07,0x00,0x00,0x75,0x1b,0x50,0x01,0x9f,0xe0,0x00,0x2f,0x1b,0x12,0x62,0x9f,0x60, +0x00,0x09,0xd4,0xe6,0x4d,0x02,0x00,0x12,0x11,0x0e,0x04,0x00,0x80,0x8c,0x20,0x8f, +0x60,0x6f,0xd9,0xff,0x20,0xdd,0x13,0x51,0x04,0xfb,0x00,0x4f,0x5c,0x1a,0x10,0x2e, +0xfc,0x00,0x03,0x00,0x8f,0x01,0xfc,0x00,0x4a,0xf8,0x00,0x7f,0xb1,0x1c,0x19,0x17, +0x20,0x00,0x8c,0xff,0x07,0x00,0x87,0x0a,0x3f,0x71,0x00,0x00,0x3d,0x15,0x15,0x01, +0x07,0x03,0x25,0x2f,0x20,0x06,0x03,0xf0,0x09,0x2f,0xa0,0x4f,0xe1,0x2f,0xa0,0xdf, +0x50,0x2f,0xa7,0xfb,0x00,0x2f,0xff,0xf1,0x00,0x2f,0xee,0xf8,0x00,0x2f,0xa1,0xef, +0x40,0x18,0x00,0x00,0x63,0x02,0x14,0xbd,0xed,0x02,0x1f,0x00,0x8b,0x19,0x03,0xff, +0x00,0xe8,0x88,0x62,0xff,0xff,0xfc,0x03,0xfa,0x00,0xcb,0x00,0x3f,0xa0,0x03,0xfa, +0x05,0x00,0x02,0x0f,0xc5,0x19,0x0d,0x82,0x00,0x63,0x00,0x00,0x0e,0x60,0x00,0x02, +0xd3,0x0c,0x0b,0xdf,0x15,0x40,0x07,0x30,0xf5,0x3e,0x2e,0x00,0x8f,0x9b,0x02,0xfb, +0x0c,0x80,0x2f,0xb0,0x60,0x43,0x00,0x03,0x8f,0x3f,0xa6,0xf3,0xfa,0x8c,0x3f,0xa6, +0x33,0x7c,0x00,0x0a,0x5c,0x1e,0x60,0x2f,0xb0,0x94,0x39,0x00,0x26,0xa0,0x00,0x03, +0x00,0x58,0xa5,0x90,0x3f,0xa8,0xd0,0x12,0x00,0x21,0x0f,0xf0,0xda,0x0e,0x01,0x07, +0x00,0x64,0xb4,0x00,0xbf,0xf5,0x00,0x01,0x0e,0x00,0x81,0x88,0x88,0x0f,0xff,0xff, +0xf0,0x0f,0xd0,0x02,0x00,0x53,0xd1,0x1f,0xfb,0xbf,0xe0,0x0c,0x00,0x11,0xd0,0xe4, +0x03,0x21,0x00,0x0e,0xe9,0x01,0x0f,0x8c,0x11,0x18,0x05,0x77,0x0c,0x0f,0xbd,0x0c, +0x06,0x0f,0xba,0x1a,0x17,0x0d,0xeb,0x04,0x0f,0xfd,0x16,0x06,0x92,0x00,0x82,0x00, +0x00,0x1f,0x30,0x00,0x05,0xd0,0x28,0x00,0x7f,0x47,0x05,0x60,0x00,0x00,0x9d,0xc1, +0xbb,0x00,0x1b,0x6f,0x06,0xf5,0xdb,0x00,0x06,0xfb,0xbb,0x00,0x0a,0x10,0x3f,0x34, +0x20,0x43,0x00,0x00,0x00,0x67,0x25,0x00,0x00,0x8d,0x00,0x00,0x57,0x0c,0x39,0x05, +0xf8,0x03,0x04,0x00,0x50,0x3f,0xe1,0x00,0x9f,0x53,0xe3,0x00,0x50,0x3f,0xff,0x40, +0x9f,0x53,0xe3,0x00,0xf1,0x04,0x3f,0xb5,0xf7,0x9f,0x53,0xfb,0x0b,0xfb,0xf5,0x3f, +0xb0,0x2f,0xff,0x53,0xfb,0x00,0x7f,0xf5,0x3f,0xe3,0x00,0xf2,0x04,0x00,0x09,0xf4, +0x00,0x00,0x09,0xff,0x10,0x00,0x00,0xfe,0x60,0x5f,0x8c,0xfb,0x05,0xfe,0x8c,0xf6, +0x6c,0x00,0x52,0xfa,0x5f,0x80,0x3f,0xa5,0x07,0x00,0x10,0xa0,0x34,0x0f,0xa2,0x05, +0xbf,0x60,0x00,0x9f,0xa0,0x00,0xaf,0xff,0xa0,0x05,0x0c,0x0f,0xd6,0x1b,0x15,0x32, +0x08,0xff,0xfd,0xf1,0x08,0x0f,0x9f,0x0d,0x05,0x74,0x79,0x09,0x70,0x00,0x03,0xef, +0xe2,0x41,0x07,0x0f,0x65,0x12,0x13,0x9f,0x07,0xe0,0x9c,0x00,0x1c,0xfe,0x30,0x00, +0x01,0x5e,0x0e,0x08,0x7f,0x08,0xd3,0xe6,0x00,0x02,0xf4,0xd9,0x2a,0x13,0x1c,0x61, +0x6f,0x4e,0x90,0x01,0xd6,0xaa,0xd8,0x06,0x00,0x9f,0x00,0xf0,0x01,0x1f,0xe8,0xcf, +0x60,0x7f,0x60,0x1f,0xc0,0x8f,0x40,0x0e,0xe0,0x6f,0x60,0x1f,0xc0,0x5d,0x00,0x01, +0xb7,0x00,0xd0,0x8e,0xff,0xff,0xff,0xfe,0x0b,0xfd,0xab,0xfe,0xaa,0xa9,0x3f,0xc0, +0x10,0x0f,0xe0,0x5f,0x70,0x04,0xfd,0x88,0x82,0x6f,0x70,0x04,0xff,0xff,0xf4,0x5f, +0x70,0x12,0x00,0x20,0x3f,0xb0,0x06,0x00,0x62,0x0b,0xfc,0x89,0xfd,0x88,0x87,0x30, +0x00,0xf0,0x15,0x02,0xbf,0xd7,0x5d,0xfb,0x20,0x0e,0xf8,0xcf,0xfd,0x8f,0xd0,0x5f, +0x80,0x0f,0xf4,0x0a,0xf2,0x7f,0x60,0x0d,0xff,0xff,0xf3,0x5f,0x80,0x0f,0xf6,0x33, +0x30,0x0e,0xf8,0xbf,0xfd,0x89,0xa0,0x24,0x00,0x21,0xfd,0x80,0x6e,0x03,0x01,0x02, +0x10,0x01,0x43,0x02,0xc0,0xff,0xd6,0x00,0x2f,0xe8,0x9e,0xf5,0x02,0xfb,0x00,0x5f, +0x90,0xfd,0x0a,0xf0,0x03,0x02,0xff,0xff,0xfc,0x10,0x2f,0xe8,0xdf,0x40,0x02,0xfb, +0x04,0xfc,0x00,0x2f,0xb0,0x0c,0xf4,0x61,0x06,0x40,0xc0,0x00,0x5f,0x80,0x31,0x03, +0x0e,0x2a,0x19,0x0f,0x06,0x1d,0x16,0x50,0x00,0x64,0x00,0x00,0x00,0xe2,0x12,0x25, +0x01,0xe2,0x21,0x2c,0x0e,0x4f,0x00,0x61,0x08,0x20,0x01,0xf4,0x00,0x4d,0x24,0x01, +0x7f,0x71,0x47,0x00,0x00,0x07,0xdd,0x20,0xa8,0x00,0x1b,0x51,0x6f,0x5d,0xa0,0x06, +0xe9,0x46,0x13,0x70,0xad,0x90,0x4f,0xfc,0x60,0x4f,0x90,0x70,0x05,0x05,0x03,0x00, +0x61,0x00,0x00,0xce,0x20,0x00,0x07,0x7a,0x0f,0x0f,0x96,0x1d,0x12,0x00,0xc4,0x02, +0x03,0x60,0x0d,0xff,0x11,0x7e,0xfc,0x40,0x4f,0xb5,0xef,0x05,0xfa,0x22,0x30,0x08, +0xff,0xe6,0x02,0x40,0x4d,0xf1,0x6f,0xa5,0xdf,0x10,0x8e,0xfc,0x40,0x00,0x1d,0xe2, +0x00,0x01,0xda,0x6e,0x20,0x53,0x00,0x16,0x6f,0xaf,0x50,0x00,0xac,0x4e,0x50,0x53, +0x00,0x09,0x0f,0x47,0x00,0x0e,0xef,0xbf,0xfd,0x50,0x00,0x08,0xf4,0x00,0x00,0x01, +0xea,0x00,0x00,0x08,0xd3,0xad,0x1a,0x05,0x11,0xd4,0x5b,0x23,0xf4,0x0f,0x0b,0xe0, +0x00,0x04,0xe6,0x00,0x01,0xea,0x7f,0x40,0x00,0x3f,0xf6,0x00,0x00,0x03,0x40,0x00, +0x03,0xbf,0xfd,0x60,0x1e,0xf9,0x8d,0xf5,0x3f,0xb0,0x01,0x31,0x5f,0x00,0xe2,0x01, +0x01,0x6e,0xf3,0x7f,0x70,0x06,0xf7,0x1f,0xf9,0x8e,0xf4,0x02,0xae,0x2b,0x0d,0x2f, +0x0b,0xf7,0xf9,0x00,0x0a,0x0f,0xb2,0x1e,0x11,0xbf,0x00,0x0b,0xd2,0x00,0x00,0x02, +0xf8,0x00,0x00,0x0a,0xc2,0x3a,0x1b,0x03,0xf2,0x00,0xff,0x10,0x0d,0xc1,0x00,0x6f, +0x40,0x0d,0xa0,0x01,0x72,0x27,0x10,0x00,0x4d,0xce,0x19,0x0f,0x5a,0x00,0x12,0xf0, +0x01,0x00,0x73,0x00,0x00,0xf4,0x07,0x73,0xd0,0x0f,0xe0,0x00,0xff,0xff,0x10,0x5f, +0xf5,0x51,0x00,0x02,0x03,0x00,0x68,0x0d,0xf8,0x10,0x05,0xee,0x10,0x45,0x00,0x7e, +0x04,0xff,0xff,0x10,0x00,0x2f,0xf2,0x45,0x00,0x20,0x77,0x00,0x8a,0x00,0xb0,0xff, +0xf1,0x05,0xff,0x50,0x2f,0xff,0xf3,0x02,0xfe,0x20,0x5c,0x23,0xd0,0xdf,0x91,0x00, +0x5e,0xe1,0x00,0x8e,0x38,0x90,0x00,0xf4,0xcf,0x30,0xd7,0x16,0x0f,0x91,0x15,0x11, +0x70,0x03,0xe8,0x3f,0x00,0xa8,0x8f,0x80,0xdb,0x12,0x0f,0xb0,0x11,0x06,0x6f,0xdf, +0xff,0x60,0x00,0x12,0x22,0x4f,0x00,0x12,0x03,0xdc,0x04,0x0f,0xb9,0x11,0x07,0x61, +0xa6,0x0b,0x40,0x00,0x5f,0xfc,0xdb,0x04,0x0f,0x50,0x00,0x11,0x33,0x07,0xe0,0xab, +0xd6,0x04,0x0f,0x9f,0x00,0x07,0x71,0x08,0xa3,0x00,0x00,0x1a,0x29,0x00,0x08,0x00, +0x0f,0x87,0x16,0x15,0x40,0x4a,0x70,0x00,0x0b,0xdb,0x2c,0x01,0x45,0x0a,0x0f,0xae, +0x00,0x07,0x7f,0x0b,0xb5,0xe3,0x00,0x6e,0x3f,0x60,0x57,0x00,0x16,0x6f,0x7f,0x4e, +0x80,0x1d,0x5a,0xa0,0xda,0x12,0x09,0x0f,0x47,0x00,0x08,0x70,0xfc,0x0c,0xfb,0x9e, +0xf6,0x01,0x9e,0xd9,0x0a,0x10,0xd8,0xea,0x17,0x00,0x73,0x04,0x1f,0x00,0x03,0x13, +0x08,0xc0,0xc1,0x00,0x00,0xe9,0x10,0x00,0x08,0xf6,0x00,0x00,0x17,0x40,0xc5,0x03, +0x24,0xd7,0xc8,0x9f,0x04,0x0f,0x24,0x21,0x23,0x30,0x00,0x05,0xfb,0x1a,0x0d,0x12, +0x4a,0x60,0x08,0x0f,0xe9,0x1d,0x11,0xdf,0x00,0x09,0x90,0x00,0x00,0x0b,0xcb,0xb0, +0x00,0x01,0x40,0x04,0x10,0xce,0x17,0x16,0x7f,0x00,0xbf,0x50,0x00,0xaa,0x3d,0x40, +0xbd,0x13,0x14,0x8f,0x01,0x81,0x08,0x10,0x00,0x3e,0x32,0xe4,0x32,0x18,0x1b,0x01, +0x68,0x18,0x12,0x09,0xb1,0x05,0x0f,0xaa,0x21,0x11,0x00,0x51,0x14,0x21,0x03,0xf5, +0x17,0x07,0xb2,0xff,0xff,0xf1,0x37,0x7b,0xfb,0x00,0x01,0xee,0x10,0x00,0x12,0x13, +0x78,0x4f,0xf8,0x77,0x18,0xff,0xff,0xf2,0x35,0x10,0x0f,0x53,0x00,0x12,0x5f,0x6e, +0x10,0x00,0x04,0xa0,0x53,0x00,0x0a,0x08,0x3d,0x04,0x0f,0x53,0x00,0x11,0x6f,0x0a, +0xc5,0xf5,0x00,0x0a,0xe5,0x53,0x00,0x0a,0xba,0x05,0xdf,0x31,0xfe,0x81,0x3f,0x90, +0x04,0xf9,0x00,0x4f,0x05,0x00,0xf8,0x16,0x00,0x10,0x0d,0xf9,0x1f,0xfd,0x0b,0xf7, +0x01,0x00,0x00,0x01,0xfb,0x50,0x00,0x07,0xcf,0xe8,0x20,0x00,0x4e,0xf7,0x08,0xdf, +0xd8,0x11,0xfa,0x40,0x00,0x09,0x88,0x88,0x31,0xff,0xff,0xf6,0x00,0x01,0x00,0x2f, +0xfa,0x00,0x01,0x00,0x06,0x13,0xfc,0x08,0x00,0x17,0xf4,0x14,0x00,0x70,0xfb,0xfa, +0x00,0xfe,0xf7,0x00,0xf7,0x93,0x27,0x0f,0x35,0x00,0x03,0x4f,0x02,0x04,0x00,0x02, +0x19,0x00,0x02,0x2f,0xe3,0x00,0x01,0x00,0x18,0x1f,0xe7,0x21,0x00,0x0d,0x03,0x94, +0x00,0xb2,0xf8,0x00,0xfe,0x00,0x00,0xf4,0xfe,0xf8,0xfc,0x00,0xf1,0x9f,0x00,0x7e, +0xff,0x00,0x00,0xfe,0xff,0xfb,0xfd,0x9e,0x00,0x00,0x2d,0x0e,0x1f,0xfe,0xef,0x00, +0x07,0x1c,0xfd,0x0a,0x00,0x19,0xff,0x1f,0x00,0x19,0xfe,0x79,0x00,0x00,0x0e,0x00, +0x7e,0xf7,0x00,0xfe,0x00,0xfe,0xfc,0xfe,0x47,0x00,0x0b,0x0f,0x01,0x05,0x42,0x00, +0x11,0xfe,0x37,0x00,0x29,0xfe,0xfd,0x33,0x00,0x00,0xf0,0x02,0x35,0xed,0x00,0xeb, +0x27,0x00,0x20,0xfd,0xfe,0x23,0x00,0x01,0x2e,0x00,0x0e,0x4a,0x00,0x02,0x5f,0x00, +0x1d,0x02,0x64,0x00,0x0e,0xaa,0x00,0x0f,0x01,0x00,0x0c,0x1b,0xef,0xaa,0x00,0x12, +0xfd,0x0f,0x00,0x3c,0xfe,0xfc,0xfa,0xad,0x01,0xa6,0x02,0xfa,0x00,0x00,0xeb,0xfe, +0xeb,0xf7,0x00,0xe4,0x2e,0x00,0x38,0xff,0xf4,0xfb,0x4d,0x00,0x20,0xd7,0x00,0xf3, +0x29,0x12,0xed,0x7f,0x01,0x51,0x00,0xfc,0x00,0xff,0xff,0x3d,0x01,0x12,0x01,0xd4, +0x00,0x1d,0xe2,0x69,0x01,0x00,0xe4,0x00,0x1f,0xfc,0xa3,0x00,0x0e,0x10,0xfb,0xc9, +0x00,0x09,0x68,0x00,0x09,0xb1,0x02,0xc0,0xe6,0xe4,0x00,0x00,0xf4,0xfd,0xea,0xfe, +0x02,0x00,0x02,0x02,0x69,0x00,0xf2,0x02,0xef,0xf7,0x00,0xf7,0xeb,0xf9,0xf8,0x00, +0xf9,0xf8,0xfb,0xf8,0xfa,0x00,0xed,0xf7,0xf6,0x32,0x01,0x66,0xea,0xf0,0x00,0x00, +0xf8,0xff,0x43,0x01,0x50,0xfb,0xfc,0x00,0x00,0xfb,0xee,0x00,0x17,0xff,0x9b,0x01, +0x42,0x02,0x00,0xf1,0xfa,0xed,0x02,0x03,0x35,0x02,0x33,0x01,0xfd,0xfd,0x8a,0x01, +0x1a,0x00,0xe8,0x02,0x14,0xf0,0x38,0x01,0x15,0x01,0x38,0x01,0x02,0xd4,0x01,0x07, +0xdf,0x00,0xf0,0x0a,0x02,0xfb,0xe9,0xf1,0x00,0x00,0xf1,0xfd,0xf6,0xfe,0x02,0xf6, +0x02,0x02,0x01,0x02,0x00,0x02,0xfa,0xf9,0xfe,0xfc,0xf9,0xfc,0xfa,0x2d,0x02,0x66, +0xfe,0xfd,0x02,0xf6,0xfa,0xfa,0xd7,0x00,0x2a,0x01,0xfd,0xba,0x01,0x02,0x4e,0x00, +0x0e,0xe1,0x01,0x04,0x1c,0x00,0x0f,0xf3,0x01,0x20,0x06,0x1d,0x00,0x0f,0x38,0x02, +0x0a,0x15,0xff,0x73,0x02,0x1f,0xff,0xa2,0x03,0x13,0x1f,0xff,0x1d,0x00,0x13,0x1e, +0x02,0x0e,0x04,0x19,0x02,0xb1,0x00,0x13,0x02,0xc8,0x03,0x0f,0x01,0x00,0x27,0x0e, +0xff,0x00,0x1f,0xf7,0x2f,0x00,0x0b,0x26,0xfe,0xfe,0x7b,0x00,0x1c,0xee,0x9f,0x02, +0x20,0xfe,0x02,0x0b,0x02,0x3e,0x05,0x00,0x02,0xc6,0x04,0x0e,0xec,0x03,0x0c,0xa0, +0x03,0x1c,0xef,0x6c,0x00,0x2f,0xff,0x01,0x9e,0x01,0x01,0x1f,0xf3,0xea,0x00,0x27, +0x1f,0xfc,0x27,0x00,0x13,0x1f,0xfe,0x1c,0x00,0x21,0x04,0xb4,0x03,0x20,0x02,0x03, +0xfc,0x0c,0x3d,0x00,0x04,0x05,0x21,0x00,0xf1,0x0c,0x06,0x07,0x08,0x09,0x0a,0x0b, +0x00,0x0c,0x0c,0x0d,0x0e,0x0f,0x0c,0x0c,0x09,0x10,0x11,0x12,0x00,0x13,0x0d,0x14, +0x15,0x16,0x17,0x18,0x19,0x20,0x00,0xf1,0x0c,0x1a,0x1b,0x1c,0x00,0x1d,0x1e,0x00, +0x1f,0x00,0x00,0x20,0x00,0x1f,0x1f,0x21,0x1b,0x00,0x22,0x00,0x23,0x00,0x24,0x25, +0x26,0x24,0x27,0x28,0x3f,0x00,0x01,0x01,0x00,0xe1,0x00,0x08,0x0a,0x0a,0x0a,0x0a, +0x0c,0x0c,0x0c,0x0c,0x09,0x0c,0x09,0x09,0x0c,0x38,0x81,0x0d,0x0d,0x0d,0x0d,0x17, +0x00,0x00,0x1a,0x01,0x00,0x61,0x00,0x1c,0x1d,0x1d,0x1d,0x1d,0x50,0x00,0x20,0x1f, +0x21,0x01,0x00,0x02,0x7c,0x00,0x50,0x24,0x1b,0x24,0x06,0x1a,0x02,0x00,0x22,0x08, +0x1c,0x02,0x00,0x64,0x09,0x00,0x09,0x00,0x0a,0x1d,0x02,0x00,0x04,0xa3,0x00,0x54, +0x0c,0x1f,0x00,0x00,0x0c,0x02,0x00,0x00,0x7d,0x08,0x53,0x00,0x0e,0x00,0x00,0x0f, +0x02,0x00,0x00,0x1f,0x00,0x00,0x02,0x00,0x80,0x1f,0x00,0x00,0x09,0x21,0x09,0x21, +0x09,0x5b,0x00,0x11,0x22,0x02,0x00,0x03,0x01,0x00,0x11,0x13,0x02,0x00,0x17,0x0d, +0x02,0x00,0x70,0x15,0x00,0x17,0x24,0x17,0x18,0x27,0x02,0x00,0x06,0x23,0x01,0x20, +0x03,0x02,0x1e,0x01,0x4a,0x06,0x07,0x06,0x08,0x21,0x01,0x00,0x92,0x00,0x20,0x00, +0x0b,0xc2,0x08,0x00,0x85,0x00,0x01,0x08,0x00,0xf1,0x08,0x0b,0x00,0x0d,0x0e,0x0f, +0x10,0x11,0x12,0x13,0x14,0x00,0x00,0x15,0x00,0x00,0x00,0x16,0x00,0x17,0x17,0x17, +0x18,0x17,0x2e,0x00,0xf0,0x02,0x19,0x19,0x1a,0x19,0x17,0x1b,0x1c,0x1d,0x1e,0x1f, +0x20,0x21,0x1f,0x22,0x00,0x00,0x23,0xde,0x37,0x00,0x01,0x00,0x26,0x24,0x0b,0x53, +0x00,0x10,0x0b,0x01,0x00,0xa1,0x00,0x0b,0x0f,0x0f,0x0f,0x0f,0x13,0x00,0x00,0x16, +0x01,0x00,0x20,0x25,0x17,0x01,0x00,0x02,0x44,0x00,0x02,0x34,0x01,0xa0,0x26,0x1e, +0x1e,0x1e,0x1e,0x1f,0x00,0x1f,0x0a,0x16,0x02,0x00,0x22,0x0b,0x17,0x02,0x00,0x10, +0x00,0x24,0x00,0x14,0x17,0x02,0x00,0x05,0x16,0x00,0x0b,0x01,0x00,0x1b,0x0c,0x10, +0x00,0x10,0x19,0x02,0x00,0x51,0x19,0x00,0x00,0x0b,0x1a,0x02,0x00,0x03,0x30,0x00, +0x22,0x0d,0x1c,0x02,0x00,0x30,0x0e,0x00,0x0e,0x82,0x09,0x16,0x1e,0x02,0x00,0xe0, +0x11,0x00,0x13,0x1f,0x13,0x14,0x22,0x14,0x22,0x14,0x22,0x00,0x27,0x00, }; static const etxFontCmap cmaps[] __FLASH = { { .range_start = 32, .range_length = 95, .glyph_id_start = 1, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 128, .range_length = 4, .glyph_id_start = 96, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 136, .range_length = 15, .glyph_id_start = 100, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 176, .range_length = 1, .glyph_id_start = 115, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 192, .range_length = 192, .glyph_id_start = 116, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 8226, .range_length = 55425, .glyph_id_start = 308, .list_length = 62, .type = 3, .unicode_list = 2960, .glyph_id_ofs_list = 0 }, +{ .range_start = 176, .range_length = 1, .glyph_id_start = 96, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, +{ .range_start = 192, .range_length = 192, .glyph_id_start = 97, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, +{ .range_start = 8226, .range_length = 580, .glyph_id_start = 289, .list_length = 2, .type = 3, .unicode_list = 2328, .glyph_id_ofs_list = 0 }, }; const etxLz4Font lv_font_en_bold_STD __FLASH = { -.uncomp_size = 21874, -.comp_size = 13613, +.uncomp_size = 15200, +.comp_size = 8686, .line_height = 17, .base_line = 4, .subpx = 0, .underline_position = -1, .underline_thickness = 1, .kern_scale = 16, -.cmap_num = 6, +.cmap_num = 4, .bpp = 4, .kern_classes = 1, .bitmap_format = 0, .left_class_cnt = 40, .right_class_cnt = 39, -.glyph_bitmap = 3084, -.class_pair_values = 19574, -.left_class_mapping = 21134, -.right_class_mapping = 21504, +.glyph_bitmap = 2332, +.class_pair_values = 13058, +.left_class_mapping = 14618, +.right_class_mapping = 14909, .cmaps = cmaps, .compressed = lz4FontData, -.lvglFontBufSize = 22210, +.lvglFontBufSize = 15472, }; diff --git a/radio/src/fonts/lvgl/std/lv_font_en_bold_STD.c b/radio/src/fonts/lvgl/std/lv_font_en_bold_STD.c index fdf3896db17..4c09a38d832 100644 --- a/radio/src/fonts/lvgl/std/lv_font_en_bold_STD.c +++ b/radio/src/fonts/lvgl/std/lv_font_en_bold_STD.c @@ -40,676 +40,547 @@ static const uint8_t lz4FontData[] __FLASH = { 0x00,0xb1,0xe0,0x0e,0xd0,0x05,0x06,0x0a,0x00,0x00,0xfe,0x0e,0x40,0x80,0x00,0xa2, 0x22,0x0f,0x70,0x05,0x06,0x0b,0x00,0x00,0x43,0x0f,0x38,0x00,0x31,0x6c,0x0f,0x10, 0x18,0x00,0xb1,0x90,0x0f,0xc0,0x0b,0x0c,0x09,0x00,0x00,0xc6,0x0f,0x20,0x18,0x00, -0x41,0xef,0x0f,0x10,0x08,0x90,0x00,0x21,0x10,0x20,0x20,0x00,0xf2,0x1b,0x49,0x10, +0x41,0xef,0x0f,0x10,0x08,0x90,0x00,0x21,0x10,0x20,0x20,0x00,0xf2,0x23,0x49,0x10, 0x50,0x05,0x06,0x11,0x00,0xfc,0x7c,0x10,0x10,0x04,0x02,0x0f,0x01,0xfd,0x8b,0x10, 0x50,0x05,0x05,0x11,0x00,0xfc,0xb6,0x10,0x60,0x0a,0x0a,0x04,0x00,0x03,0xca,0x10, -0x00,0x10,0x0e,0x0d,0x01,0x00,0x25,0x11,0x08,0x00,0x90,0x80,0x11,0x00,0x10,0x0c, -0x0e,0x02,0x00,0xd4,0x08,0x00,0x52,0x0f,0x02,0xff,0x2e,0x12,0x18,0x00,0x10,0x89, -0x08,0x00,0x40,0x0f,0x01,0xff,0xf2,0x08,0x00,0x52,0x0e,0x01,0xff,0x54,0x13,0x10, -0x00,0x22,0xbd,0x13,0x28,0x00,0x21,0x17,0x14,0x38,0x00,0x32,0xff,0x6b,0x14,0x20, -0x00,0x13,0xcd,0x10,0x00,0x22,0x21,0x15,0x28,0x00,0x13,0x8a,0x08,0x00,0x13,0xf3, -0x08,0x00,0x21,0x5c,0x16,0x28,0x00,0x32,0x00,0xbe,0x16,0x40,0x00,0x22,0x18,0x17, -0x38,0x00,0x22,0x7a,0x17,0x20,0x00,0xf2,0x03,0xe3,0x17,0x30,0x06,0x06,0x05,0x00, -0x07,0xf2,0x17,0xc0,0x0a,0x0b,0x0f,0x00,0x00,0x45,0x18,0x08,0x00,0x13,0x98,0x08, -0x00,0x10,0xeb,0x08,0x00,0x52,0x10,0x00,0x00,0x43,0x19,0x10,0x00,0x22,0x96,0x19, -0x10,0x00,0x50,0xee,0x19,0x10,0x0f,0x0f,0xb8,0x01,0xf3,0x01,0x1a,0x80,0x0a,0x0a, -0x0f,0x00,0xfd,0x93,0x1a,0x00,0x09,0x08,0x0f,0x01,0x00,0xcf,0x08,0x00,0x22,0x0b, -0x1b,0x08,0x00,0x13,0x47,0x08,0x00,0x30,0x83,0x1b,0xb0,0xa8,0x01,0x20,0x00,0xa9, -0x08,0x00,0x00,0x28,0x00,0x92,0x1b,0xb0,0x04,0x07,0x0f,0xff,0x00,0x04,0x1c,0x08, -0x00,0xf0,0x05,0x39,0x1c,0xa0,0x0a,0x0b,0x0c,0xff,0x00,0x7b,0x1c,0x50,0x0b,0x0a, -0x10,0x01,0x00,0xcb,0x1c,0x10,0x0b,0x70,0x00,0x22,0x1e,0x1d,0x08,0x00,0x13,0x71, -0x08,0x00,0x40,0xc4,0x1d,0x10,0x0b,0x80,0x00,0x22,0x1c,0x1e,0x10,0x00,0x31,0x6f, -0x1e,0x80,0x70,0x03,0xb0,0x93,0x1e,0x00,0x0b,0x0b,0x0d,0x00,0xff,0xdb,0x1e,0x90, -0x90,0x00,0x32,0x00,0x26,0x1f,0x08,0x00,0x13,0x71,0x08,0x00,0x13,0xbc,0x08,0x00, -0x40,0x07,0x20,0xe0,0x09,0x08,0x00,0x40,0x52,0x20,0xc0,0x09,0xf8,0x02,0x31,0x88, -0x20,0x20,0x00,0x03,0x22,0xbe,0x20,0x40,0x02,0x13,0xf4,0x08,0x00,0x22,0x2a,0x21, -0x08,0x00,0x13,0x60,0x08,0x00,0x13,0x96,0x08,0x00,0x10,0xcc,0x08,0x00,0xe0,0x0e, -0x00,0x00,0x0b,0x22,0x80,0x0d,0x0e,0x09,0x00,0x00,0x4a,0x22,0x60,0x80,0x03,0x41, -0xfd,0x7a,0x22,0xa0,0x20,0x00,0x13,0xb0,0x08,0x00,0x13,0xe6,0x08,0x00,0x22,0x1c, -0x23,0x08,0x00,0x91,0x52,0x23,0x60,0x04,0x05,0x0c,0xff,0x00,0x70,0x08,0x00,0xb3, -0x01,0x00,0x8e,0x23,0x60,0x04,0x07,0x0c,0xff,0x00,0xb8,0x08,0x00,0xa2,0xe2,0x23, -0x30,0x09,0x09,0x0d,0x00,0x00,0x1d,0x24,0xe0,0x02,0x31,0x53,0x24,0x10,0x08,0x03, -0x13,0x89,0x08,0x00,0x13,0xbf,0x08,0x00,0x13,0xf5,0x08,0x00,0x22,0x2b,0x25,0x08, -0x00,0x40,0x61,0x25,0x20,0x09,0xf8,0x04,0x10,0x8a,0x10,0x00,0x52,0x0b,0x00,0xff, -0xbc,0x25,0x40,0x00,0x13,0xf2,0x08,0x00,0x22,0x28,0x26,0x08,0x00,0x13,0x5e,0x08, -0x00,0xc0,0x94,0x26,0x10,0x08,0x09,0x0f,0x00,0xfd,0xd8,0x26,0x10,0x09,0x08,0x00, -0x22,0x1c,0x27,0x10,0x00,0x22,0x60,0x27,0xe0,0x01,0x22,0xb3,0x27,0xe8,0x00,0x22, -0xe9,0x27,0xe8,0x01,0x22,0x41,0x28,0x10,0x00,0x21,0x77,0x28,0x20,0x00,0x22,0xfd, -0xca,0x10,0x00,0xc1,0xfd,0x00,0x29,0x80,0x0a,0x0a,0x10,0x00,0x00,0x50,0x29,0x60, -0x80,0x04,0x13,0x80,0x10,0x00,0x13,0xd0,0x10,0x00,0x23,0x00,0x2a,0x20,0x00,0x13, -0x2a,0x20,0x00,0x13,0x2a,0x20,0x00,0x13,0x2a,0x20,0x00,0xa1,0x2b,0x60,0x0a,0x09, -0x0f,0x01,0x00,0x44,0x2b,0x30,0x60,0x04,0x22,0x86,0x2b,0x00,0x02,0x32,0xc8,0x2b, -0x10,0x08,0x05,0x12,0x2c,0x38,0x02,0x22,0x40,0x2c,0x40,0x01,0x10,0x76,0x10,0x00, -0x43,0x10,0x01,0x00,0xb6,0x10,0x00,0x13,0xec,0x20,0x00,0x32,0x28,0x2d,0xa0,0xe0, -0x00,0x11,0x2d,0x10,0x00,0x22,0xfd,0x9a,0x10,0x00,0x32,0xfd,0xd0,0x2d,0x20,0x00, -0x22,0x0c,0x2e,0x20,0x00,0x31,0x42,0x2e,0xe0,0xd0,0x00,0x31,0x9a,0x2e,0x20,0xf8, -0x00,0x13,0xde,0x10,0x00,0x30,0x36,0x2f,0x20,0x70,0x06,0x32,0xfd,0x7e,0x2f,0x10, -0x00,0x22,0xd6,0x2f,0x20,0x00,0x21,0x1a,0x30,0x10,0x00,0xf1,0x0d,0xfc,0x72,0x30, -0x20,0x09,0x09,0x12,0x00,0xfd,0xc3,0x30,0x50,0x0b,0x0a,0x0f,0x01,0x00,0x0e,0x31, -0xf0,0x08,0x09,0x10,0x00,0x00,0x56,0x31,0x80,0xa0,0x06,0xf2,0x03,0x9e,0x31,0x30, -0x09,0x0a,0x0c,0xff,0x00,0xda,0x31,0xb0,0x04,0x07,0x10,0xff,0x00,0x12,0x32,0xd0, -0x01,0x22,0x3c,0x32,0xd8,0x02,0xa2,0x71,0x32,0x60,0x04,0x06,0x0c,0xff,0x00,0x95, -0x32,0x20,0x00,0x13,0xcd,0x10,0x00,0xb1,0xf1,0x32,0xb0,0x04,0x04,0x0f,0x00,0xfd, -0x0f,0x33,0x40,0x08,0x00,0x50,0x2d,0x33,0xb0,0x04,0x03,0x10,0x01,0xc0,0x33,0x60, -0x04,0x03,0x09,0x01,0x00,0x52,0x33,0xa0,0x0d,0x0c,0xf8,0x05,0xb0,0x33,0x60,0x08, -0x08,0x0f,0x00,0xfd,0xd6,0x33,0xf0,0x08,0xb8,0x02,0x30,0x21,0x34,0x80,0x58,0x00, -0xc0,0xfd,0x56,0x34,0x30,0x0a,0x0a,0x10,0x01,0xfc,0xa6,0x34,0x90,0x90,0x00,0xd0, -0xfc,0xee,0x34,0x70,0x09,0x09,0x09,0x01,0x00,0x17,0x35,0xb0,0x08,0xf8,0x00,0x90, -0x53,0x35,0x40,0x04,0x06,0x10,0x00,0x00,0x83,0x10,0x00,0xd2,0x10,0x01,0xfc,0xc3, -0x35,0x40,0x04,0x04,0x10,0x00,0xfc,0xe3,0x35,0x20,0x06,0xa2,0x13,0x36,0x70,0x05, -0x07,0x0c,0x00,0x00,0x3d,0x36,0x10,0x00,0x31,0x6d,0x36,0xf0,0x10,0x00,0x22,0x97, -0x36,0x28,0x02,0xa2,0xcd,0x36,0xe0,0x04,0x05,0x0c,0x00,0x00,0xeb,0x36,0xf8,0x00, -0x22,0x36,0x37,0x18,0x00,0x21,0x6c,0x37,0xa0,0x03,0x20,0xfc,0xbc,0x10,0x00,0x52, -0x0d,0x00,0xfc,0xf7,0x37,0x20,0x00,0x22,0x42,0x38,0x20,0x00,0x40,0x78,0x38,0xf0, -0x08,0x10,0x01,0x30,0xb4,0x38,0x40,0x18,0x00,0x32,0xfd,0xff,0x38,0x68,0x05,0x22, -0x35,0x39,0xb0,0x03,0x22,0x88,0x39,0xb8,0x02,0x22,0xbe,0x39,0xc8,0x03,0x22,0x16, -0x3a,0x10,0x00,0x22,0x4c,0x3a,0x20,0x00,0x13,0x9f,0x10,0x00,0x31,0xd5,0x3a,0x80, -0x60,0x04,0x40,0x2f,0x3b,0x70,0x0e,0x68,0x03,0x31,0x6e,0x3b,0x30,0x30,0x02,0x31, -0xb2,0x3b,0xd0,0xa8,0x00,0x10,0xdc,0x10,0x00,0xd2,0x10,0x01,0xfc,0x24,0x3c,0xd0, -0x05,0x06,0x0e,0x00,0xfc,0x4e,0x3c,0x20,0x00,0x22,0x92,0x3c,0x20,0x00,0x41,0xbc, -0x3c,0xd0,0x09,0xf0,0x03,0x21,0x3d,0x40,0x70,0x02,0x22,0x37,0x3d,0x10,0x00,0x13, -0x82,0x10,0x00,0x12,0xb2,0x10,0x00,0x22,0xfd,0xfd,0x10,0x00,0x32,0xfd,0x2d,0x3e, -0x20,0x00,0x22,0x78,0x3e,0x20,0x00,0x31,0xa8,0x3e,0xe0,0x20,0x00,0xa2,0xf3,0x3e, -0x70,0x05,0x06,0x0f,0x00,0xfd,0x20,0x3f,0x38,0x04,0xa2,0x6b,0x3f,0xc0,0x05,0x07, -0x0e,0x00,0x00,0x9c,0x3f,0x00,0x07,0xb1,0xd8,0x3f,0x70,0x05,0x07,0x0b,0xff,0x00, -0xff,0x3f,0x90,0xe0,0x02,0x22,0x4f,0x40,0x08,0x01,0x22,0x85,0x40,0x70,0x04,0x13, -0xd0,0x10,0x00,0x22,0x06,0x41,0x20,0x00,0x22,0x56,0x41,0x10,0x00,0x13,0x8c,0x10, -0x00,0x31,0xdc,0x41,0xf0,0x50,0x04,0x22,0x1b,0x42,0x30,0x00,0x22,0x66,0x42,0x20, -0x00,0x12,0x9c,0x10,0x00,0x22,0xfd,0xe7,0x10,0x00,0x40,0xfd,0x1d,0x43,0x00,0x38, -0x08,0x41,0x00,0x86,0x43,0xc0,0x78,0x02,0x40,0xce,0x43,0xe0,0x09,0x40,0x00,0x22, -0x1e,0x44,0xc0,0x03,0x22,0x62,0x44,0xa0,0x00,0x31,0xad,0x44,0xb0,0x08,0x00,0x31, -0xf8,0x44,0x20,0xc8,0x00,0x22,0x28,0x45,0x10,0x00,0x22,0x73,0x45,0x10,0x00,0x13, -0xa3,0x10,0x00,0x13,0xee,0x10,0x00,0x50,0x1e,0x46,0x20,0x04,0x06,0x20,0x03,0xf0, -0x09,0x46,0xc0,0x05,0x04,0x05,0x01,0x04,0x4c,0x46,0x40,0x08,0x08,0x0a,0x00,0x00, -0x74,0x46,0x00,0x10,0x10,0x11,0x00,0xfe,0xfc,0x08,0x00,0xd2,0x0c,0x00,0x00,0x5c, -0x47,0x00,0x10,0x10,0x0e,0x00,0xff,0xcc,0x47,0x10,0x00,0x31,0x2c,0x48,0x00,0x50, -0x08,0x93,0x6e,0x48,0x00,0x10,0x10,0x10,0x00,0xfe,0xee,0x08,0x00,0xa2,0x6e,0x49, -0x00,0x12,0x12,0x0e,0x00,0xff,0xec,0x49,0x10,0x00,0x50,0x6c,0x4a,0x00,0x12,0x12, -0x28,0x01,0x12,0x4a,0x10,0x00,0xf2,0x0b,0x58,0x4b,0x00,0x08,0x08,0x0e,0x00,0xff, -0x90,0x4b,0x00,0x0c,0x0c,0x0e,0x00,0xff,0xe4,0x4b,0x00,0x12,0x12,0x10,0x00,0xfe, -0x74,0x4c,0x58,0x00,0x30,0xd4,0x4c,0x00,0x18,0x02,0xf1,0x04,0xfe,0x2c,0x4d,0x00, -0x0e,0x0a,0x10,0x02,0xfe,0x7c,0x4d,0x00,0x0e,0x0e,0x12,0x00,0xfd,0xfa,0x4d,0x00, -0x01,0xb2,0xff,0x63,0x4e,0x00,0x0e,0x0e,0x0e,0x00,0xff,0xc5,0x4e,0x20,0x00,0xf3, -0x02,0x15,0x4f,0x00,0x0e,0x10,0x0e,0xff,0xff,0x85,0x4f,0x00,0x0a,0x0a,0x0e,0x00, -0xff,0xcb,0x08,0x00,0x22,0x11,0x50,0x28,0x00,0x10,0x73,0x08,0x00,0x52,0x04,0x00, -0x04,0x8f,0x50,0x88,0x00,0xf2,0x03,0xfb,0x50,0x00,0x14,0x14,0x10,0x00,0xfe,0x9b, -0x51,0x00,0x12,0x14,0x10,0xff,0xfe,0x3b,0x52,0x98,0x00,0xa2,0xbb,0x52,0x00,0x0e, -0x0e,0x0a,0x00,0x01,0x01,0x53,0x08,0x00,0xa2,0x47,0x53,0x00,0x14,0x14,0x0e,0x00, -0xff,0xd3,0x53,0x98,0x00,0x22,0x33,0x54,0x28,0x00,0xf2,0x0b,0xb3,0x54,0x00,0x10, -0x11,0x11,0xff,0xfe,0x44,0x55,0x00,0x0e,0x0f,0x0e,0x00,0xff,0xad,0x55,0x00,0x0e, -0x0e,0x10,0x00,0xfe,0x1d,0x56,0x70,0x00,0x13,0x7f,0x08,0x00,0x22,0xe1,0x56,0x38, -0x00,0xa2,0x41,0x57,0x00,0x0a,0x0c,0x10,0xff,0xfe,0xa1,0x57,0x28,0x00,0x22,0x11, -0x58,0x08,0x00,0x22,0x81,0x58,0x90,0x00,0xf3,0x12,0xed,0x58,0x00,0x10,0x12,0x12, -0xff,0xfd,0x8f,0x59,0x00,0x0c,0x0c,0x10,0x00,0xfe,0xef,0x59,0x00,0x14,0x14,0x0f, -0x00,0xff,0x85,0x5a,0x00,0x14,0x14,0x0a,0x00,0x01,0xe9,0x08,0x00,0x22,0x4d,0x5b, -0x08,0x00,0x13,0xb1,0x08,0x00,0x22,0x15,0x5c,0x08,0x00,0xf2,0x03,0x79,0x5c,0x00, -0x14,0x15,0x0e,0x00,0xff,0x0c,0x5d,0x00,0x0e,0x0c,0x10,0x01,0xfe,0x6c,0x5d,0x60, -0x00,0x21,0xdc,0x5d,0xa8,0x00,0xb2,0xfd,0x6d,0x5e,0x00,0x14,0x14,0x0c,0x00,0x00, -0xe5,0x5e,0x60,0x00,0xf0,0xff,0x42,0x45,0x5f,0x20,0x10,0x11,0x0b,0x00,0x01,0x00, -0x00,0x43,0x02,0xdf,0xcf,0xe6,0xcf,0xe9,0xcf,0xea,0xcf,0xeb,0xcf,0xef,0xcf,0xf1, -0xcf,0xf3,0xcf,0xf7,0xcf,0xfa,0xcf,0xff,0xcf,0x04,0xd0,0x05,0xd0,0x06,0xd0,0x1c, -0xd0,0x21,0xd0,0x26,0xd0,0x29,0xd0,0x2a,0xd0,0x2b,0xd0,0x2f,0xd0,0x30,0xd0,0x31, -0xd0,0x32,0xd0,0x45,0xd0,0x46,0xd0,0x4c,0xd0,0x4e,0xd0,0x4f,0xd0,0x52,0xd0,0x55, -0xd0,0x56,0xd0,0x57,0xd0,0x59,0xd0,0x71,0xd0,0x73,0xd0,0xa2,0xd0,0xa3,0xd0,0xa5, -0xd0,0xa7,0xd0,0xbe,0xd0,0xc5,0xd0,0xc8,0xd0,0xd1,0xd0,0xfa,0xd0,0x02,0xd1,0x39, -0xd1,0xc9,0xd1,0x1e,0xd2,0x1f,0xd2,0x20,0xd2,0x21,0xd2,0x22,0xd2,0x65,0xd2,0x71, -0xd2,0xcb,0xd2,0xe2,0xd2,0x38,0xd5,0xa0,0xd7,0x80,0xd8,0x0f,0xf6,0x0e,0xf6,0x0e, -0xf5,0x0d,0xf5,0x0d,0xf4,0x0c,0xf4,0x0c,0xf3,0x0b,0xf3,0x02,0x30,0x03,0x60,0x0f, -0xf6,0x0b,0xe3,0x8f,0x1f,0xa8,0xf0,0xf9,0x8f,0x0f,0x78,0xd0,0xf6,0x36,0x07,0x20, -0x00,0x06,0xf0,0x7f,0x00,0x00,0x09,0xd0,0xac,0x00,0x00,0x0c,0xa0,0xd9,0x00,0x0e, -0xff,0xff,0xff,0xf3,0x06,0x8f,0x98,0xf8,0x61,0x00,0x4f,0x25,0xf1,0x00,0x01,0x7f, -0x28,0xf1,0x10,0x8f,0xff,0xff,0xff,0xa0,0x24,0xdc,0x4e,0xb4,0x20,0x00,0xe8,0x0f, -0x70,0x00,0x00,0xf5,0x1f,0x40,0x00,0x03,0xf3,0x4f,0x20,0x00,0x00,0x00,0x74,0x00, -0x00,0x00,0x0c,0x70,0x00,0x00,0x3a,0xfe,0x70,0x00,0x3f,0xff,0xff,0xa0,0x0a,0xfb, -0x05,0xff,0x20,0xcf,0x70,0x0d,0xf5,0x0a,0xfc,0x10,0x00,0x00,0x3f,0xff,0x91,0x00, -0x00,0x3c,0xff,0xf4,0x00,0x00,0x03,0xcf,0xf1,0x18,0x70,0x00,0xef,0x52,0xff,0x30, -0x0e,0xf5,0x0c,0xfe,0x8b,0xff,0x20,0x2d,0xff,0xff,0x60,0x00,0x03,0xf8,0x10,0x00, -0x00,0x0e,0x50,0x00,0x05,0xdf,0xa0,0x00,0x00,0x00,0x1f,0xb7,0xf7,0x01,0x80,0x00, -0x3f,0x40,0xda,0x0a,0xc0,0x00,0x2f,0x82,0xf9,0x3f,0x30,0x00,0x09,0xff,0xe2,0xd9, -0x00,0x00,0x00,0x23,0x07,0xe1,0x00,0x20,0x00,0x10,0x60,0x06,0x00,0xf1,0x56,0xac, -0x2c,0xfe,0x50,0x00,0x04,0xf3,0xae,0x5b,0xf0,0x00,0x0d,0x90,0xcb,0x06,0xf1,0x00, -0x2c,0x10,0xae,0x6c,0xf0,0x00,0x00,0x00,0x1b,0xfd,0x40,0x00,0x3c,0xfd,0x50,0x00, -0x00,0x1e,0xff,0xff,0x30,0x00,0x05,0xfb,0x08,0xf7,0x00,0x00,0x6f,0xa0,0x8f,0x60, -0x00,0x02,0xff,0xaf,0xd0,0x00,0x00,0x09,0xff,0xb1,0x00,0x00,0x05,0xff,0xfc,0x04, -0xd8,0x02,0xff,0x6e,0xf9,0x7f,0x80,0x6f,0xe0,0x3f,0xff,0xf4,0x05,0xff,0x10,0x6f, -0xfd,0x00,0x0d,0xfe,0xcf,0xff,0xe2,0x00,0x19,0xef,0xd8,0xaf,0xd0,0x8f,0x28,0xf2, -0x8f,0x18,0xf0,0x47,0x39,0x0d,0xf1,0x07,0x03,0xe1,0x00,0x1e,0xd1,0x00,0xaf,0x20, -0x02,0xfa,0x00,0x08,0xf5,0x00,0x0b,0xf2,0x00,0x0e,0xf0,0x00,0x0f,0xe0,0x03,0x00, -0xf0,0x36,0xf0,0x00,0x0d,0xf0,0x00,0x0a,0xf3,0x00,0x05,0xf7,0x00,0x00,0xee,0x00, -0x00,0x6f,0x70,0x00,0x09,0xf2,0x00,0x00,0x70,0x00,0x00,0x07,0xb0,0x00,0x4f,0xa0, -0x00,0x8f,0x50,0x01,0xfd,0x00,0x0c,0xf3,0x00,0x8f,0x70,0x06,0xfa,0x00,0x5f,0xb0, -0x04,0xfc,0x00,0x5f,0xa0,0x06,0xf8,0x00,0x9f,0x50,0x0d,0xf0,0x04,0xf9,0x00,0xcf, -0x10,0x8f,0x40,0x04,0x30,0x00,0x00,0x4b,0x01,0xf1,0x08,0x0f,0x60,0x00,0x8d,0x6e, -0x89,0xd0,0x5b,0xff,0xfe,0x90,0x00,0xaf,0xe1,0x00,0x07,0xf4,0xeb,0x00,0x09,0x90, -0x6d,0x10,0x80,0x00,0xf0,0x02,0x07,0xa4,0x00,0x00,0x00,0xbf,0x60,0x00,0x00,0x0b, -0xf6,0x00,0x01,0x22,0xcf,0x72,0x20,0x88,0x01,0x50,0x48,0xff,0xff,0xff,0xf4,0x12, -0x00,0x05,0x1b,0x00,0xf9,0x1a,0x00,0x0e,0xf0,0xef,0x0f,0xd4,0xf8,0x5c,0x00,0x2e, -0xee,0xe3,0x2f,0xff,0xf4,0x03,0x70,0x0f,0xf7,0x0a,0xf4,0x00,0x00,0x1f,0x90,0x00, -0x06,0xf4,0x00,0x00,0xbe,0x00,0x00,0x0f,0xa0,0x00,0x05,0xf5,0x00,0x00,0xaf,0x0a, -0x00,0xff,0x41,0xb0,0x00,0x04,0xf6,0x00,0x00,0xaf,0x10,0x00,0x0e,0xb0,0x00,0x00, -0x00,0x6d,0xfe,0x80,0x00,0x6f,0xff,0xff,0x90,0x0e,0xf8,0x05,0xff,0x12,0xff,0x10, -0x0e,0xf4,0x3f,0xf0,0x00,0xdf,0x64,0xff,0x00,0x0d,0xf7,0x4f,0xf0,0x00,0xdf,0x73, -0xff,0x00,0x0d,0xf6,0x2f,0xf1,0x00,0xef,0x40,0xef,0x80,0x5f,0xf1,0x06,0xff,0xff, -0xf9,0x00,0x06,0xdf,0xe8,0x00,0x00,0x16,0xc4,0x3a,0xff,0xf4,0xbf,0xff,0xf4,0x65, -0x0f,0xf4,0x00,0x03,0x00,0x05,0xf1,0x35,0x7d,0xfd,0x80,0x00,0xaf,0xff,0xff,0xa0, -0x2f,0xf4,0x06,0xff,0x05,0xec,0x00,0x1f,0xf2,0x00,0x00,0x04,0xff,0x00,0x00,0x00, -0xdf,0x80,0x00,0x00,0xbf,0xd0,0x00,0x00,0xaf,0xe2,0x00,0x00,0x8f,0xf3,0x00,0x00, -0x6f,0xf4,0x00,0x00,0x2f,0xff,0xee,0xee,0x83,0xff,0xff,0xff,0xf9,0x01,0x9e,0xfd, -0x70,0x00,0xcf,0xfe,0xff,0xa0,0x3f,0xf3,0x05,0xff,0x11,0x33,0x36,0x00,0xf0,0x37, -0x08,0xfe,0x00,0x00,0xef,0xfd,0x20,0x00,0x0c,0xef,0xf7,0x00,0x00,0x00,0x3f,0xf2, -0x25,0x40,0x00,0xef,0x56,0xff,0x20,0x4f,0xf4,0x0d,0xff,0xef,0xfc,0x00,0x19,0xdf, -0xd8,0x00,0x00,0x00,0x2f,0xf7,0x00,0x00,0x0c,0xff,0x70,0x00,0x06,0xff,0xf7,0x00, -0x01,0xee,0xdf,0x70,0x00,0xaf,0x5c,0xf7,0x00,0x4f,0xb0,0xcf,0x70,0x0d,0xf1,0x0c, -0xf7,0x07,0xff,0xee,0xff,0xfa,0x43,0x01,0xa0,0xc0,0x00,0x00,0xcf,0x70,0x00,0x00, -0x0c,0xf7,0x00,0x09,0x00,0xf0,0x11,0x04,0xff,0xff,0xff,0x20,0x6f,0xff,0xff,0xf2, -0x08,0xf9,0x00,0x00,0x00,0x9f,0x70,0x00,0x00,0x0b,0xfc,0xef,0xb1,0x00,0xdf,0xfd, -0xff,0xd0,0x01,0x51,0x03,0xff,0x40,0x29,0x00,0xf0,0x31,0x17,0x70,0x00,0xcf,0x70, -0xff,0x70,0x3f,0xf4,0x07,0xff,0xff,0xfc,0x00,0x06,0xdf,0xe9,0x00,0x00,0x02,0x9d, -0xe0,0x00,0x05,0xff,0xfe,0x00,0x02,0xff,0x92,0x00,0x00,0xaf,0xa0,0x00,0x00,0x0f, -0xf8,0xdf,0xc3,0x02,0xff,0xff,0xff,0xe0,0x3f,0xf7,0x02,0xff,0x63,0xff,0x00,0x0b, -0xf8,0x1f,0xf2,0x00,0xbf,0x90,0xdf,0x90,0x2f,0xf5,0x04,0x36,0x00,0x31,0x04,0xcf, -0xe9,0x49,0x03,0xf0,0x07,0x87,0xee,0xee,0xef,0xf6,0x00,0x00,0x02,0xff,0x10,0x00, -0x00,0x8f,0x90,0x00,0x00,0x0f,0xf3,0x00,0x00,0x06,0xfc,0x12,0x01,0x90,0x60,0x00, -0x00,0x4f,0xe0,0x00,0x00,0x0b,0xf8,0x1e,0x00,0x90,0x20,0x00,0x00,0x9f,0xb0,0x00, -0x00,0x1f,0xf5,0x9e,0x01,0xf0,0x13,0xfd,0x80,0x00,0x7f,0xff,0xff,0xa0,0x0d,0xf8, -0x05,0xff,0x00,0xff,0x40,0x1f,0xf2,0x0c,0xf9,0x07,0xfe,0x00,0x2d,0xff,0xfe,0x30, -0x04,0xff,0xff,0xf6,0x00,0xef,0x60,0x3f,0xf2,0xb0,0x01,0xf0,0x03,0x62,0xff,0x50, -0x3f,0xf5,0x0b,0xff,0xef,0xfd,0x00,0x08,0xdf,0xe9,0x10,0x00,0x6d,0xfd,0x50,0x36, -0x00,0xf0,0x00,0x50,0x0f,0xf7,0x07,0xfe,0x04,0xff,0x00,0x0f,0xf3,0x4f,0xf0,0x00, -0xef,0x51,0x24,0x00,0xf2,0x12,0x0a,0xff,0xdf,0xff,0x40,0x0a,0xfe,0x8f,0xf2,0x00, -0x00,0x05,0xfe,0x00,0x00,0x15,0xef,0x70,0x00,0x9f,0xff,0xb0,0x00,0x09,0xfc,0x60, -0x00,0x0a,0xe3,0x0f,0xf7,0x03,0x70,0x39,0x10,0x01,0x4a,0x02,0x74,0xe3,0x0c,0xe2, -0x1f,0xf5,0x04,0x60,0x54,0x10,0xa5,0x0b,0xf2,0x0b,0xf2,0x0d,0xf0,0x2f,0xa0,0x3d, -0x20,0x66,0x10,0xf0,0x16,0xb2,0x00,0x06,0xdf,0xf2,0x18,0xef,0xfe,0x80,0x9f,0xfa, -0x40,0x00,0x9f,0xfc,0x60,0x00,0x06,0xdf,0xff,0xa1,0x00,0x04,0xbf,0xf2,0x00,0x00, -0x02,0x92,0xff,0xff,0xff,0xf0,0xde,0xee,0xee,0xe0,0x2a,0x00,0x00,0x08,0x00,0x00, -0x10,0x00,0xf0,0x3f,0x0c,0x50,0x00,0x00,0x1f,0xfd,0x70,0x00,0x07,0xdf,0xff,0x92, -0x00,0x03,0x9e,0xfc,0x00,0x05,0xbf,0xfb,0x09,0xef,0xfe,0x71,0x1f,0xfc,0x50,0x00, -0x0a,0x30,0x00,0x00,0x03,0xbf,0xeb,0x20,0x2f,0xff,0xff,0xe0,0x8f,0xd0,0x2f,0xf4, -0x24,0x20,0x0f,0xf5,0x00,0x00,0x6f,0xf1,0x00,0x05,0xff,0x50,0x00,0x0f,0xf6,0x00, -0x00,0x3f,0xd0,0x00,0x00,0x14,0x30,0x00,0x00,0x06,0x30,0x00,0x00,0x7f,0xf0,0x00, -0x00,0x3e,0xbf,0x02,0xf2,0x45,0x3a,0xdf,0xeb,0x40,0x00,0x00,0x08,0xfc,0x75,0x6b, -0xf9,0x00,0x00,0x8f,0x60,0x01,0x00,0x4f,0x70,0x03,0xf8,0x01,0xcf,0xfa,0x07,0xf1, -0x0a,0xe0,0x0c,0xf6,0xbf,0x01,0xf5,0x0f,0x90,0x5f,0x60,0x9f,0x00,0xd8,0x2f,0x50, -0xaf,0x10,0xae,0x00,0xb9,0x4f,0x30,0xde,0x00,0xbd,0x00,0xca,0x4f,0x30,0xed,0x00, -0xcc,0x00,0xd7,0x3f,0x50,0xde,0x00,0xfb,0x02,0xf4,0x0f,0x80,0x9f,0x8b,0xfe,0x6d, -0xc0,0x0b,0xe1,0x1c,0xfa,0x2d,0xfb,0x10,0x02,0xfc,0x84,0x03,0xb0,0x5f,0xfa,0x77, -0x99,0x00,0x00,0x00,0x02,0x8d,0xff,0xc6,0x0f,0x00,0x30,0xef,0xa0,0x00,0xd6,0x04, -0x10,0x00,0x4f,0x04,0x10,0xf5,0x10,0x00,0xf0,0x71,0xdf,0xb0,0x00,0x00,0x4f,0xf4, -0xff,0x10,0x00,0x0a,0xfb,0x0e,0xf6,0x00,0x00,0xff,0x60,0xaf,0xc0,0x00,0x5f,0xf1, -0x05,0xff,0x20,0x0b,0xff,0xff,0xff,0xf7,0x01,0xff,0xff,0xff,0xff,0xd0,0x6f,0xf2, -0x00,0x05,0xff,0x2c,0xfb,0x00,0x00,0x0e,0xf8,0xff,0xff,0xfd,0x80,0x0f,0xff,0xff, -0xff,0xb0,0xff,0x50,0x08,0xff,0x1f,0xf5,0x00,0x2f,0xf2,0xff,0x50,0x08,0xfe,0x0f, -0xff,0xff,0xfe,0x30,0xff,0xdc,0xcf,0xfa,0x0f,0xf5,0x00,0x2f,0xf4,0xff,0x50,0x00, -0xef,0x7f,0xf5,0x00,0x5f,0xf5,0xff,0xff,0xff,0xfd,0x0f,0xff,0xff,0xd9,0x10,0x00, -0x19,0xef,0xe9,0x10,0x01,0xdf,0xff,0xff,0xd1,0x0a,0xfe,0x30,0x3e,0xf8,0x0f,0xf6, -0x00,0x08,0xfd,0x3f,0xf2,0x00,0x00,0x21,0x4f,0xf0,0xa3,0x00,0x00,0x05,0x00,0x00, -0x0f,0x00,0xf1,0x01,0x11,0x0f,0xf5,0x00,0x08,0xfd,0x0a,0xfd,0x30,0x3e,0xf9,0x01, -0xef,0xff,0xff,0xd1,0x37,0x00,0x00,0x40,0x00,0x02,0x60,0x00,0x30,0x50,0x3c,0xfd, -0x60,0x00,0xf0,0x1a,0xf5,0xff,0x50,0x00,0xcf,0x9f,0xf5,0x00,0x0a,0xfb,0xff,0x50, -0x00,0xaf,0xbf,0xf5,0x00,0x0c,0xf9,0xff,0x50,0x02,0xff,0x5f,0xf5,0x03,0xcf,0xd0, -0xff,0xff,0xff,0xe3,0x0f,0xff,0xfe,0x92,0x00,0xff,0xff,0xff,0xfa,0x89,0x03,0x44, -0xff,0x50,0x00,0x00,0x04,0x00,0x00,0xcb,0x00,0x4b,0xff,0xfe,0xee,0xc0,0x14,0x00, -0x13,0xf9,0x2c,0x00,0x11,0xf6,0x04,0x00,0x0c,0x30,0x00,0x00,0x04,0x00,0x08,0x14, -0x00,0x03,0x04,0x00,0xf0,0x09,0x00,0x18,0xdf,0xea,0x20,0x00,0x1d,0xff,0xff,0xfe, -0x10,0x09,0xff,0x40,0x2e,0xf9,0x00,0xef,0x70,0x00,0x6f,0xe0,0x2f,0xf3,0x76,0x02, -0x10,0xff,0x5b,0x02,0xf0,0x09,0x4f,0xf2,0x07,0xff,0xff,0x02,0xff,0x30,0x5d,0xdf, -0xf0,0x0e,0xf8,0x00,0x05,0xff,0x00,0x8f,0xf5,0x00,0x8f,0xf0,0x00,0xdf,0x4a,0x03, -0x40,0x00,0x8d,0xfe,0xc6,0x46,0x00,0x2f,0x1f,0xf4,0x05,0x00,0x02,0x00,0x21,0x05, -0x02,0x05,0x00,0x0f,0x23,0x00,0x05,0x3b,0xdf,0x8d,0xf8,0x03,0x00,0x4f,0x00,0x00, -0x06,0xff,0x04,0x00,0x09,0xf0,0x01,0x6a,0x70,0x06,0xfe,0x8f,0xe1,0x1c,0xfb,0x1f, -0xff,0xff,0xf3,0x02,0xbe,0xfc,0x40,0x32,0x01,0xf0,0x09,0xc0,0xff,0x50,0x0c,0xfe, -0x10,0xff,0x50,0x8f,0xf4,0x00,0xff,0x54,0xff,0x80,0x00,0xff,0x7e,0xfc,0x00,0x00, -0xff,0xef,0xf5,0xfa,0x00,0xf0,0x08,0xfd,0x00,0x00,0xff,0xf8,0xff,0x70,0x00,0xff, -0x80,0xaf,0xf2,0x00,0xff,0x50,0x1e,0xfb,0x00,0xff,0x50,0x06,0xff,0x50,0x7b,0x01, -0x1e,0xe1,0x10,0x01,0x0e,0x04,0x00,0x03,0x40,0x01,0x11,0xf5,0x04,0x00,0x40,0xf3, -0x00,0x00,0x4f,0x74,0x05,0x40,0x00,0x9f,0xff,0xff,0x05,0x05,0xf0,0x1a,0xff,0xff, -0xdf,0x40,0x04,0xfd,0xff,0xff,0x9f,0x90,0x09,0xf9,0xff,0xff,0x4f,0xe0,0x0e,0xf4, -0xff,0xff,0x4b,0xf4,0x4f,0xb4,0xff,0xff,0x45,0xf9,0x9f,0x54,0xff,0xff,0x50,0xfe, -0xef,0x05,0xff,0xff,0x50,0xaf,0xfa,0x06,0x00,0x30,0x5f,0xf5,0x05,0x04,0x04,0x50, -0xf0,0x05,0xff,0xff,0xa0,0x00,0x01,0x10,0xf3,0x05,0x00,0x11,0xfc,0x28,0x01,0xf0, -0x0d,0x60,0x1f,0xf4,0xff,0xcf,0xe0,0x1f,0xf4,0xff,0x5d,0xf8,0x1f,0xf4,0xff,0x54, -0xff,0x3f,0xf4,0xff,0x50,0xaf,0xcf,0xf4,0xff,0x50,0x2f,0xff,0xf4,0xa0,0x02,0x01, -0x8a,0x02,0x00,0x05,0x00,0xf0,0x21,0x5f,0xf4,0x00,0x08,0xdf,0xd8,0x10,0x00,0x0d, -0xff,0xff,0xfd,0x10,0x09,0xff,0x51,0x4e,0xf9,0x00,0xff,0x70,0x00,0x7f,0xf0,0x3f, -0xf2,0x00,0x02,0xff,0x34,0xff,0x10,0x00,0x0f,0xf5,0x4f,0xf1,0x00,0x00,0xff,0x53, -0xff,0x20,0x00,0x2f,0xf3,0x0f,0xf7,0x35,0x01,0x70,0x9f,0xf5,0x04,0xef,0x90,0x00, -0xdf,0x87,0x02,0x53,0x00,0x8d,0xfd,0x81,0x00,0xfa,0x02,0x00,0x0f,0x02,0xf0,0x01, -0x05,0xff,0x6f,0xf5,0x00,0x0b,0xfa,0xff,0x50,0x00,0xbf,0xbf,0xf5,0x00,0x4f,0xf7, -0xe8,0x02,0x50,0x1f,0xff,0xff,0xe9,0x10,0xf6,0x00,0x10,0x0f,0x57,0x03,0x05,0x09, -0x00,0x20,0x00,0x08,0xd8,0x05,0x13,0x1d,0x78,0x00,0x18,0x5f,0x78,0x00,0x20,0x35, -0xff,0x24,0x00,0x28,0x5f,0xf0,0x78,0x00,0x57,0x07,0xff,0x00,0x9f,0xf4,0x78,0x00, -0x20,0xff,0xfd,0x4c,0x02,0x20,0x2d,0xfe,0xcc,0x03,0x90,0x0a,0x50,0xff,0xff,0xfd, -0x70,0x0f,0xff,0xff,0xb9,0x01,0x60,0x07,0xff,0x4f,0xf5,0x00,0x0f,0xaf,0x02,0x00, -0x8c,0x00,0x20,0x8f,0xf2,0xad,0x03,0x10,0x0f,0x64,0x01,0xc0,0xff,0x50,0x7f,0xf1, -0x0f,0xf5,0x00,0xef,0x80,0xff,0x50,0x06,0xa1,0x03,0xf0,0x11,0x0e,0xf9,0x00,0x5c, -0xff,0xc6,0x00,0x07,0xff,0xff,0xff,0x80,0x0f,0xf9,0x00,0x8f,0xf1,0x1f,0xf5,0x00, -0x1a,0xa2,0x0c,0xfe,0x60,0x00,0x00,0x02,0xdf,0xff,0xa2,0x00,0xc5,0x04,0x10,0x40, -0xdf,0x08,0xc0,0xe0,0x5d,0xc0,0x00,0x2f,0xf3,0x2f,0xf7,0x00,0x6f,0xf2,0x09,0xe1, -0x03,0x60,0x00,0x5c,0xff,0xd7,0x00,0xbf,0x20,0x03,0x20,0xaf,0xff,0x59,0x00,0x10, -0x04,0xf0,0x05,0x0f,0x05,0x00,0x19,0x5f,0x1f,0xf4,0x00,0x0b,0xfa,0x05,0x00,0x0f, -0xc1,0xf9,0x0f,0xf5,0x00,0x0d,0xf8,0x0c,0xfc,0x20,0x5f,0xf5,0x03,0x78,0x00,0xf2, -0x00,0x3b,0xff,0xd8,0x00,0xcf,0xc0,0x00,0x05,0xff,0x37,0xff,0x10,0x00,0xaf,0xe0, -0xc4,0x00,0xf0,0x0f,0xcf,0xa0,0x03,0xff,0x40,0x07,0xfe,0x00,0x8f,0xe0,0x00,0x2f, -0xf3,0x0c,0xf9,0x00,0x00,0xcf,0x81,0xff,0x40,0x00,0x07,0xfc,0x5f,0xe0,0x00,0x00, -0x2f,0xfc,0xf9,0x06,0x01,0xc7,0x00,0x30,0x07,0xff,0xe0,0x46,0x07,0x10,0xf9,0x7c, -0x06,0xf0,0x31,0x01,0xff,0x10,0x0b,0xfa,0x6f,0xe0,0x04,0xff,0x50,0x0d,0xf6,0x3f, -0xf1,0x08,0xff,0x90,0x0f,0xf3,0x0f,0xf3,0x0b,0xff,0xc0,0x3f,0xf0,0x0c,0xf6,0x0f, -0xed,0xf0,0x6f,0xc0,0x09,0xf9,0x2f,0xaa,0xf3,0x9f,0x90,0x05,0xfc,0x6f,0x66,0xf7, -0xcf,0x60,0x02,0xff,0xaf,0x32,0xfa,0xff,0x20,0x00,0xef,0xff,0x00,0xff,0xff,0x00, -0x00,0xbf,0xfb,0x03,0x00,0x60,0x00,0x8f,0xf8,0x00,0x7f,0xf8,0x22,0x05,0xf0,0x08, -0x00,0x4f,0xf5,0x00,0x7f,0xf3,0x00,0x1f,0xfa,0x0d,0xfb,0x00,0x8f,0xf1,0x05,0xff, -0x41,0xff,0x80,0x00,0xcf,0xc9,0xfe,0x4d,0x05,0xb0,0xf6,0x00,0x00,0x0a,0xff,0xd0, -0x00,0x00,0x0b,0xff,0xe0,0xe9,0x02,0xf0,0x1f,0xf7,0x00,0x00,0xdf,0xb8,0xff,0x10, -0x06,0xff,0x31,0xff,0x90,0x0e,0xfa,0x00,0x8f,0xf2,0x8f,0xf2,0x00,0x0e,0xfb,0xbf, -0xc0,0x00,0x0e,0xfa,0x4f,0xf3,0x00,0x5f,0xf2,0x0c,0xfa,0x00,0xcf,0xa0,0x04,0xff, -0x23,0xff,0x20,0x00,0xcf,0x8a,0xfa,0x32,0x00,0x10,0xf3,0xf5,0x07,0x10,0xb0,0xdd, -0x09,0x10,0x30,0x3b,0x01,0x1b,0x20,0x05,0x00,0x00,0xd9,0x08,0x30,0xff,0xf1,0x6f, -0x7a,0x06,0x00,0x59,0x07,0xa0,0x60,0x00,0x00,0x0c,0xfb,0x00,0x00,0x00,0x7f,0xf2, -0x0e,0x00,0x00,0x08,0x08,0x00,0x7d,0x07,0x60,0x6f,0xf2,0x00,0x00,0x01,0xff,0xfd, -0x07,0x10,0xfd,0x53,0x05,0x00,0x05,0x0b,0x10,0x6f,0x05,0x00,0xaf,0x0d,0xdd,0x41, -0xff,0xf5,0x1f,0xf3,0x01,0xff,0x30,0x05,0x00,0x0a,0xf2,0x03,0xd4,0x1f,0xff,0x50, -0xdf,0x70,0x00,0x00,0x7f,0xd0,0x00,0x00,0x1f,0xf3,0x00,0x00,0x0b,0xf9,0x5b,0x07, -0x01,0xca,0x02,0x00,0x1e,0x08,0x00,0x20,0x03,0x20,0x0e,0xf6,0xa4,0x06,0x03,0xdd, -0x07,0xbf,0xcf,0x80,0x00,0x00,0x6f,0xd0,0xbd,0xd6,0xef,0xf7,0x0c,0x02,0x00,0x06, -0xf0,0x25,0xbf,0xf7,0xef,0xf7,0x00,0x8f,0x80,0x00,0x0e,0xfe,0x00,0x04,0xfc,0xf4, -0x00,0xaf,0x2f,0xa0,0x1f,0xa0,0xaf,0x17,0xf5,0x04,0xf7,0xdd,0xdd,0xdd,0xd1,0xff, -0xff,0xff,0xf2,0x38,0x80,0x00,0xbf,0x80,0x00,0xdf,0x20,0x01,0x9e,0xfc,0x50,0x00, -0xcf,0xed,0xff,0x40,0x3f,0xf1,0x7a,0x00,0xf3,0x0d,0x01,0x9f,0xb0,0x04,0xcf,0xff, -0xfb,0x02,0xff,0x74,0xaf,0xb0,0x6f,0xd0,0x0a,0xfb,0x03,0xff,0xee,0xff,0xb0,0x05, -0xdf,0xb7,0xfe,0x00,0x2f,0xf2,0x7f,0x00,0x02,0x09,0x00,0xf0,0x08,0x7d,0xfb,0x10, -0x2f,0xff,0xff,0xfc,0x02,0xff,0x60,0x4f,0xf3,0x2f,0xf2,0x00,0xdf,0x52,0xff,0x20, -0x0c,0xf7,0x2f,0xf2,0x4b,0x08,0x32,0x60,0x3f,0xf3,0x1b,0x00,0xf0,0x06,0x6e,0xfb, -0x10,0x00,0x8e,0xfd,0x50,0x0a,0xff,0xff,0xf5,0x2f,0xf4,0x08,0xfc,0x6f,0xd0,0x01, -0x65,0x7f,0xc0,0xbc,0x00,0xe9,0x00,0x22,0x2f,0xf4,0x07,0xfc,0x0a,0xff,0xef,0xf6, -0x00,0x8e,0xfd,0x60,0x58,0x00,0x50,0x20,0x1a,0xfd,0x7f,0xf2,0x02,0x07,0xf0,0x0b, -0x22,0xff,0x50,0x7f,0xf2,0x5f,0xe0,0x02,0xff,0x27,0xfc,0x00,0x2f,0xf2,0x5f,0xd0, -0x02,0xff,0x22,0xff,0x30,0x5f,0xf2,0x0b,0xff,0xdf,0x24,0x00,0xf0,0x05,0x6f,0xf2, -0x00,0x6d,0xfd,0x70,0x00,0x8f,0xff,0xff,0x70,0x1f,0xf5,0x04,0xff,0x05,0xff,0x99, -0x9f,0xf2,0x76,0x01,0x20,0x35,0xff,0xee,0x0b,0x30,0xf9,0x00,0x85,0x1b,0x00,0xfe, -0x09,0xd0,0x00,0x6d,0xfe,0xa1,0x00,0x00,0x6d,0xfa,0x04,0xff,0xfa,0x07,0xfd,0x00, -0xcf,0xff,0xf7,0x8d,0xfe,0xb5,0x08,0xfc,0x00,0x03,0x00,0xf2,0x06,0x00,0xaf,0xe7, -0xdf,0x40,0xaf,0xff,0xff,0xf4,0x2f,0xf6,0x04,0xff,0x45,0xfe,0x00,0x0f,0xf4,0x6f, -0xd0,0x00,0x09,0x00,0x00,0x12,0x00,0x01,0x1b,0x00,0xf0,0x05,0x00,0x9f,0xe7,0xff, -0x30,0x15,0x00,0x6f,0xf1,0x0b,0xff,0xef,0xf9,0x00,0x1a,0xef,0xd7,0x00,0x3f,0xf1, -0x74,0x06,0x23,0x10,0x00,0x09,0x00,0xf0,0x06,0x5d,0xfb,0x20,0x3f,0xff,0xff,0xfb, -0x03,0xff,0x50,0x6f,0xf0,0x3f,0xf1,0x02,0xff,0x13,0xff,0x10,0x2f,0xf2,0x09,0x00, -0x19,0x23,0x09,0x00,0x8c,0x0c,0xe2,0x1f,0xf4,0x04,0x50,0x0f,0xf4,0x02,0x00,0x70, -0x00,0xde,0x20,0x1f,0xf4,0x00,0x45,0xfa,0x0a,0x2d,0xff,0x40,0x05,0x00,0x7c,0x02, -0xff,0x3b,0xff,0xe0,0xaf,0xc3,0x87,0x01,0xf0,0x02,0x20,0xaf,0xe1,0x2f,0xf2,0x7f, -0xf3,0x02,0xff,0x6f,0xf6,0x00,0x2f,0xff,0xfa,0x00,0x02,0xf6,0x00,0xfe,0x03,0x2f, -0xfc,0xef,0x70,0x02,0xff,0x26,0xff,0x20,0x2f,0xf2,0x0c,0xfc,0x02,0xff,0x20,0x3f, -0xf6,0x6e,0x00,0x02,0x02,0x00,0xff,0x12,0x2f,0xf4,0xdf,0xc2,0x6e,0xfb,0x12,0xff, -0xff,0xff,0xef,0xff,0xfa,0x2f,0xf6,0x06,0xff,0x50,0x8f,0xe2,0xff,0x20,0x3f,0xf0, -0x04,0xff,0x2f,0xf2,0x03,0xff,0x00,0x4f,0xf2,0x0d,0x00,0x06,0x10,0xf0,0x3b,0x00, -0x10,0x02,0x13,0x05,0x00,0x37,0x00,0xa0,0x02,0xff,0x10,0x2f,0xf1,0x2f,0xf1,0x02, -0xff,0x22,0xe2,0x00,0x09,0x09,0x00,0x50,0x20,0x00,0x7d,0xfd,0x70,0x80,0x06,0xf0, -0x0a,0x90,0x2f,0xf6,0x05,0xff,0x26,0xfe,0x00,0x0d,0xf6,0x7f,0xc0,0x00,0xcf,0x86, -0xfe,0x00,0x0d,0xf7,0x2f,0xf5,0x05,0xff,0x30,0x9f,0x5f,0x06,0xf0,0x10,0x7d,0xfe, -0x80,0x00,0x2f,0xf7,0xdf,0xb1,0x02,0xff,0xfd,0xff,0xb0,0x2f,0xf4,0x03,0xff,0x32, -0xff,0x20,0x0d,0xf5,0x2f,0xf2,0x00,0xcf,0x72,0xff,0x20,0x0e,0xf5,0x3b,0x00,0x10, -0x22,0xa4,0x04,0x48,0x2f,0xf7,0xdf,0xa1,0xff,0x00,0xf0,0x01,0x00,0x00,0x01,0xaf, -0xe6,0xef,0x20,0xbf,0xff,0xff,0xf2,0x3f,0xf5,0x06,0xff,0x25,0xa8,0x02,0x32,0x7f, -0xc0,0x02,0x09,0x00,0x41,0x2f,0xf5,0x06,0xff,0x1b,0x00,0x39,0x01,0xaf,0xd7,0x34, -0x00,0x21,0x2f,0xf2,0xf2,0x0b,0xab,0xea,0x2f,0xff,0xfa,0x2f,0xfa,0x31,0x2f,0xf2, -0x00,0x03,0x00,0xf0,0x17,0x02,0xae,0xfc,0x40,0x0d,0xfd,0xcf,0xf3,0x3f,0xf0,0x0a, -0xd7,0x1f,0xfa,0x51,0x00,0x05,0xef,0xff,0x90,0x00,0x04,0x8f,0xf7,0x7f,0xb0,0x0a, -0xf9,0x2f,0xfc,0xbf,0xf4,0x03,0xbf,0xfc,0x50,0x0b,0xf9,0xab,0x03,0x62,0xef,0xff, -0xf0,0xae,0xfe,0xb0,0x0c,0x00,0x02,0x03,0x00,0x9e,0x0a,0xfa,0x00,0x07,0xff,0xf1, -0x01,0xbf,0xe1,0xfa,0x01,0x14,0x3f,0x18,0x01,0xf0,0x01,0x1f,0xf4,0x06,0xff,0x20, -0xdf,0xff,0xff,0xf2,0x02,0xcf,0xd6,0xff,0x20,0xbf,0x90,0x1c,0x03,0xf0,0x36,0x0c, -0xf7,0x1f,0xf1,0x1f,0xf2,0x0c,0xf6,0x5f,0xd0,0x07,0xfa,0x9f,0x80,0x02,0xfe,0xdf, -0x30,0x00,0xdf,0xfe,0x00,0x00,0x8f,0xf9,0x00,0x00,0x3f,0xf4,0x00,0xaf,0x70,0x1f, -0xd0,0x0c,0xf6,0x6f,0xb0,0x5f,0xf1,0x0f,0xf2,0x2f,0xe0,0xaf,0xf5,0x2f,0xe0,0x0e, -0xf1,0xee,0xfa,0x5f,0xa0,0x0b,0xf6,0xf8,0xce,0x8f,0x60,0x07,0xfe,0xf3,0x8f,0xef, -0x30,0x03,0xff,0xf0,0x60,0x0a,0x40,0xff,0xa0,0x0f,0xfb,0xe2,0x0d,0xf0,0x3e,0x0a, -0xf7,0x00,0x7f,0xe0,0x0c,0xfa,0x00,0xef,0x74,0xff,0x20,0x05,0xff,0xdf,0x80,0x00, -0x0d,0xff,0xe1,0x00,0x00,0x7f,0xfa,0x00,0x00,0x0e,0xff,0xf2,0x00,0x07,0xfe,0xbf, -0xa0,0x01,0xff,0x63,0xff,0x30,0x8f,0xd0,0x0a,0xfc,0x00,0xcf,0x90,0x08,0xfd,0x07, -0xfe,0x00,0xdf,0x70,0x1f,0xf2,0x1f,0xf2,0x00,0xcf,0x76,0xfc,0x00,0x06,0xfb,0xaf, -0x70,0x00,0x1f,0xff,0xf2,0x00,0x00,0xbf,0xfc,0x00,0x00,0x06,0xfc,0x04,0xf1,0x00, -0x1f,0xf1,0x00,0x00,0x08,0xfb,0x00,0x00,0x1f,0xff,0x50,0x00,0x01,0xee,0x70,0x5b, -0x08,0x30,0xf7,0x4e,0xee,0xce,0x0a,0x60,0xdf,0xb0,0x00,0x08,0xfe,0x10,0xad,0x05, -0x60,0x01,0xef,0x90,0x00,0x0a,0xfd,0x1c,0x00,0x30,0xee,0xe8,0x6f,0xbe,0x06,0xd0, -0x05,0x80,0x00,0x7f,0xc0,0x00,0xff,0x10,0x02,0xfd,0x00,0x03,0xfc,0x03,0x00,0x20, -0x06,0xfa,0xcf,0x05,0x83,0xaf,0xc0,0x00,0x09,0xf8,0x00,0x04,0xfc,0x15,0x00,0xd9, -0x01,0xff,0x00,0x00,0xaf,0x90,0x00,0x0a,0xc0,0x00,0x00,0x00,0xab,0x01,0x00,0xf0, -0x03,0x01,0x57,0x00,0x07,0xfb,0x00,0x0c,0xf4,0x00,0x8f,0x70,0x08,0xf8,0x00,0x8f, -0x80,0x05,0xfb,0x85,0x05,0x50,0x8f,0xe0,0x4f,0xd1,0x07,0x0f,0x00,0x90,0x08,0xf7, -0x00,0xaf,0x50,0x4f,0xe0,0x08,0xc2,0xf3,0x07,0xf0,0x05,0x01,0xae,0xa0,0x01,0x94, -0x0a,0xff,0xfc,0x27,0xf6,0x0f,0xd1,0x8f,0xff,0xf1,0x1a,0x50,0x07,0xed,0x40,0x68, -0x0c,0x02,0x72,0x0c,0x22,0x0e,0xe2,0x07,0x00,0xf1,0x03,0xfe,0x30,0x00,0x16,0x77, -0x77,0x7f,0x7c,0xe3,0x00,0x6f,0xee,0xee,0xee,0x40,0xbf,0x30,0x7e,0x9f,0x0c,0x21, -0xf4,0x7e,0x43,0x00,0x11,0xfc,0x07,0x00,0x20,0x1c,0xe2,0x4e,0x04,0x92,0x41,0xce, -0x20,0x05,0x55,0x55,0x5f,0x8d,0xe2,0x38,0x00,0x11,0x20,0x07,0x00,0x12,0xd1,0xe2, -0x0c,0x01,0xe5,0x0b,0x21,0x05,0xb0,0x0d,0x00,0x21,0x4f,0xf0,0xcf,0x0c,0x11,0xfc, -0x07,0x00,0xe1,0x3f,0x95,0xfe,0xee,0xee,0xea,0x02,0xea,0x00,0x67,0x77,0x77,0xae, -0x1e,0x21,0x00,0x31,0x7e,0x4f,0x60,0x07,0x00,0x21,0x08,0xf4,0x07,0x00,0x40,0x00, -0x9f,0x33,0xff,0xe9,0x09,0xa2,0x0a,0xe8,0xf5,0x55,0x55,0x52,0x00,0x00,0xaf,0xf0, -0x21,0x0d,0x12,0xf0,0x17,0x0d,0x21,0x30,0x00,0x89,0x00,0x01,0x6e,0x00,0x20,0x3e, -0xe3,0x6c,0x00,0x30,0xeb,0xbe,0x30,0xaf,0x0c,0x40,0x0b,0xf3,0x00,0x03,0xdb,0x01, -0xff,0x0a,0x30,0x3f,0xb0,0x00,0x00,0x0b,0xf3,0xef,0xff,0x30,0x03,0xff,0xfe,0x35, -0x5f,0x50,0x05,0xf5,0x53,0x00,0x0f,0x50,0x05,0xf0,0x00,0x06,0x00,0x01,0x70,0x85, -0x58,0xf0,0x00,0x00,0x0d,0xff,0x27,0x07,0x30,0x03,0x55,0x55,0x3c,0x10,0x2e,0xff, -0xff,0x2a,0x00,0x0a,0x06,0x00,0xc0,0xce,0xef,0x50,0x05,0xfe,0xec,0xaf,0xb6,0x00, -0x00,0x6b,0xfa,0x11,0x10,0x70,0x4f,0xb0,0x00,0xbf,0x40,0x04,0xfb,0x75,0x00,0x00, -0x7b,0x00,0x00,0xa0,0x07,0x00,0xb0,0x00,0x17,0xb0,0x32,0x1e,0x12,0x11,0x07,0x00, -0x12,0x88,0xbc,0x00,0x00,0x15,0x05,0x00,0xe9,0x0c,0x20,0x90,0x00,0x69,0x03,0x20, -0xcc,0xf2,0x07,0x00,0x30,0xaf,0x44,0xfa,0x0f,0x0d,0x40,0xfb,0x00,0xbf,0x20,0x49, -0x00,0x10,0x00,0x4a,0x00,0x20,0x3f,0xa0,0x0b,0x11,0x30,0x00,0xbf,0x20,0x18,0x00, -0x11,0x04,0x46,0x0f,0xb0,0x40,0x0c,0xfe,0xdd,0xdd,0xdd,0xef,0xc0,0x5f,0xff,0xff, -0xc3,0x0a,0x01,0x4f,0x00,0x02,0x51,0x0d,0x10,0x9f,0x59,0x0d,0xf0,0x3c,0x02,0x26, -0xf7,0x4d,0xb0,0x00,0x04,0xdf,0xbb,0xd0,0x07,0xf0,0x00,0x6f,0xc4,0x0d,0xf5,0x2c, -0xd0,0x02,0xfa,0x00,0x0f,0xff,0xfe,0x30,0x0a,0xe0,0x00,0x3f,0xff,0xc6,0x60,0x0e, -0x80,0x00,0x6f,0xf8,0x08,0xe0,0x0f,0x60,0x00,0x9e,0x40,0x06,0xf0,0x0e,0x80,0x00, -0x71,0x00,0x08,0xe0,0x0a,0xd0,0x00,0x00,0x00,0x0d,0xa0,0x03,0xf8,0x00,0x00,0x00, -0x8f,0x30,0x00,0x7f,0xa3,0x00,0x3a,0xf7,0x00,0xd7,0x03,0x20,0xfe,0x50,0xb9,0x01, -0x20,0x66,0x40,0x66,0x00,0xf0,0x14,0x66,0x66,0x63,0x00,0x00,0x00,0x20,0xcf,0xff, -0xf2,0x50,0x00,0x03,0xf8,0x1e,0xff,0x65,0xf9,0x00,0x16,0xb8,0x03,0xfb,0x02,0xa7, -0x70,0x6f,0xa0,0x00,0x51,0x00,0x3f,0xb0,0x49,0x30,0x5b,0x11,0x30,0x93,0xef,0x20, -0x5e,0x0a,0x30,0xf6,0x49,0x10,0x0e,0x00,0x31,0x71,0xaf,0x60,0x3d,0x02,0xf0,0x0b, -0x36,0xa1,0x00,0x00,0x00,0x6b,0x30,0x0a,0xf8,0x20,0x00,0x06,0x8f,0x50,0x01,0x4c, -0xe7,0x68,0x8f,0xb1,0x00,0x00,0x0a,0x6e,0xac,0xc6,0x62,0x00,0x36,0x06,0x44,0x40, -0x2b,0x01,0xf0,0x1c,0x8e,0x34,0x78,0x61,0x00,0x00,0x07,0xfd,0xff,0xfe,0xff,0x91, -0x00,0x6f,0x70,0xbf,0x40,0x06,0xed,0x10,0x8f,0x50,0x0a,0xf5,0x00,0x2e,0xb0,0x0d, -0xf6,0x00,0xed,0x00,0x03,0xf4,0x1f,0xcf,0x7a,0xf4,0x00,0x00,0xd9,0x3f,0x37,0x5a, -0x09,0x40,0xab,0x3f,0x20,0x53,0x16,0x03,0x20,0x1f,0x50,0x3d,0x00,0x30,0xd8,0x0b, -0xc0,0xb2,0x00,0x20,0xf3,0x02,0xcb,0x00,0xf0,0x00,0x2e,0xa0,0x00,0x6f,0xb4,0x00, -0x17,0xfc,0x10,0x00,0x03,0xcf,0xff,0xff,0x80,0x5f,0x01,0x21,0x56,0x40,0x8e,0x01, -0x10,0x10,0xf0,0x00,0x00,0x5f,0x0d,0xf0,0x00,0x00,0x2f,0xe9,0x99,0x9b,0xf4,0x00, -0x7f,0x70,0x00,0x09,0xd0,0x00,0xcf,0x10,0x3a,0x12,0xf0,0x1f,0xfc,0x00,0x00,0x9f, -0x10,0x00,0x9f,0x10,0x1c,0xd3,0x00,0x06,0xff,0x70,0xe9,0x00,0x00,0x3f,0x8c,0x75, -0xf9,0x00,0x00,0xbc,0x0e,0x2c,0xaf,0x00,0x00,0xd9,0x2d,0x1a,0x3f,0x20,0x00,0xbc, -0x01,0x00,0x6f,0x00,0x00,0x4f,0x80,0x04,0xe9,0x00,0xc1,0x0a,0x00,0xe9,0x01,0x31, -0x27,0x74,0x00,0xc6,0x01,0x21,0xff,0xa0,0x06,0x00,0x90,0xb1,0x10,0x1f,0xee,0xed, -0xdd,0xdd,0xf2,0x1d,0x15,0x00,0xd1,0xb2,0x1d,0x01,0x77,0x77,0x60,0xb2,0x1d,0x03, -0xff,0xff,0xe0,0xb3,0x12,0x00,0x11,0xb3,0x12,0x00,0x12,0xb3,0x12,0x00,0x11,0x1e, -0x12,0x00,0xc4,0x0e,0x11,0x11,0x11,0x11,0xb3,0x0d,0xdd,0xff,0xff,0xec,0xc2,0x48, -0x00,0x31,0x7b,0xbb,0x70,0x47,0x03,0x40,0xbd,0xdb,0x50,0x07,0x16,0x0b,0xd0,0xff, -0xf0,0x0f,0xd3,0x2f,0xfa,0x30,0x03,0x20,0x0e,0x4d,0xef,0x80,0x6d,0x03,0x31,0x00, -0x8f,0x40,0x07,0x00,0x21,0x03,0xd9,0x07,0x00,0x30,0x00,0x1e,0x90,0x07,0x00,0x21, -0x02,0xd7,0x0e,0x00,0x11,0x5d,0x1c,0x00,0x20,0x08,0xfd,0x43,0x00,0x50,0x0f,0xca, -0xaf,0xa0,0x00,0x15,0x13,0x60,0x0d,0xfd,0x63,0x37,0x60,0x03,0x61,0x00,0x01,0x92, -0x0a,0xf1,0x1a,0x02,0x7a,0xa7,0x10,0xbd,0xef,0xfd,0xdd,0xdd,0xf1,0xc2,0x6f,0xe0, -0x00,0x11,0xc2,0xc2,0x39,0x80,0x1a,0xff,0xf2,0xc2,0x16,0x52,0xef,0xff,0xf2,0xc2, -0x6f,0xf0,0x19,0xff,0xf2,0xc2,0x5f,0xe0,0x00,0x11,0xb2,0xc2,0xc8,0x00,0x30,0xc2, -0x5f,0xe0,0x06,0x00,0x20,0x6f,0xf0,0x06,0x00,0x20,0x15,0x40,0x06,0x00,0x21,0x4f, -0xe0,0x18,0x00,0x00,0x12,0x00,0x70,0xcc,0xdf,0xfc,0xcc,0xcc,0xf1,0x01,0xc8,0x00, -0x00,0x60,0x01,0x11,0x22,0x08,0x04,0xf0,0x36,0xbf,0xff,0xfa,0x20,0x00,0x00,0x7f, -0xea,0xce,0x8d,0xf5,0x00,0x06,0xf9,0x03,0xbd,0x10,0xaf,0x30,0x1f,0xa0,0x04,0xbd, -0x10,0x0c,0xd0,0x7f,0x10,0x04,0xce,0x10,0x03,0xf3,0xab,0x00,0x02,0xcc,0x00,0x00, -0xe7,0xba,0x00,0x36,0x00,0xb9,0x00,0xc8,0xab,0x05,0xeb,0x76,0xc8,0xd3,0xe7,0x7f, -0x8e,0x5c,0x61,0xbb,0x5d,0xf4,0x1f,0xd4,0xd5,0x00,0x05,0xdc,0xd0,0x06,0x7f,0x0a, -0x81,0x9f,0x30,0x00,0x7f,0xc6,0x33,0x6d,0xf4,0x54,0x00,0x11,0xf9,0xfe,0x03,0x16, -0x22,0x09,0x04,0x40,0x01,0xaf,0xfe,0x60,0x31,0x15,0x30,0xd4,0x28,0xf5,0x64,0x04, -0xf0,0x16,0x20,0x00,0x9c,0x00,0x32,0x00,0x5f,0x00,0x00,0x6e,0x3e,0xff,0x90,0x3f, -0x30,0x00,0xac,0xdf,0xff,0xf4,0x0c,0xe5,0x28,0xf5,0xff,0xff,0xf8,0x00,0xaf,0xff, -0xd3,0xdf,0xff,0xf5,0x00,0xce,0xa9,0x31,0x07,0x40,0x0a,0xd1,0x1d,0xff,0x25,0x09, -0x20,0x40,0xbf,0xcb,0x0a,0x21,0x5e,0x05,0x55,0x03,0x30,0x7c,0x1b,0xff,0xb7,0x0c, -0xa9,0x6f,0xff,0xdd,0xdd,0xdd,0xdd,0xd6,0x02,0x22,0x00,0x01,0x00,0x22,0x06,0x90, -0xc5,0x03,0x12,0xda,0x0f,0x00,0x22,0x1c,0xb0,0x0f,0x00,0x90,0xcc,0x00,0x00,0x3c, -0xbb,0xbb,0xba,0xbf,0xc1,0xe4,0x0a,0x00,0x57,0x0d,0x20,0x14,0x44,0x01,0x00,0x10, -0x30,0x3c,0x0c,0x00,0x1f,0x09,0x92,0x3e,0xfd,0xde,0xee,0xef,0xf4,0x00,0x02,0xea, -0x37,0x00,0x22,0x1d,0xa0,0x37,0x00,0x13,0xdb,0x46,0x00,0x05,0x08,0x12,0x07,0x69, -0x00,0x22,0xee,0xb6,0x09,0x00,0x21,0x49,0xe8,0x0e,0x00,0x30,0xa4,0x19,0xd2,0x32, -0x00,0x30,0x5b,0xd3,0x30,0xd8,0x12,0x21,0x60,0x45,0x55,0x05,0x10,0xbc,0xf3,0x0f, -0x30,0xa8,0x9c,0x71,0x07,0x05,0xf0,0x10,0x00,0x01,0xcd,0x10,0x00,0x1e,0xf2,0x5f, -0xd0,0x3f,0xc0,0x00,0x5f,0xf0,0xbf,0xf3,0x1f,0xf1,0x00,0x0d,0xf3,0x4e,0xb0,0x4f, -0xa0,0x00,0x02,0xdd,0x10,0x02,0xdc,0x90,0x03,0x91,0xcb,0xab,0x60,0x00,0x00,0x01, -0x33,0x33,0x32,0xe9,0x04,0xf0,0x0d,0xff,0x70,0x00,0x1f,0x63,0x33,0xc8,0xf7,0x00, -0x1f,0x40,0x00,0xe0,0x6f,0x70,0x1f,0x40,0x00,0xed,0xd7,0xf1,0x1f,0x40,0x00,0x01, -0x13,0xf1,0x1f,0x7c,0x0d,0x0f,0x06,0x00,0x0d,0x72,0x74,0x44,0x44,0x47,0xf1,0x0e, -0xff,0x01,0x0c,0x02,0xf8,0x05,0x20,0xbd,0xb4,0x07,0x00,0xf0,0x38,0x4d,0x41,0x3c, -0x61,0x00,0x00,0x00,0xe2,0x00,0x01,0xed,0xe9,0x00,0x03,0xc0,0x00,0x00,0x10,0x0a, -0x70,0x05,0xc0,0x00,0x00,0x01,0x01,0xe0,0x1e,0x30,0x02,0x69,0xdf,0x40,0xe0,0x88, -0x09,0xef,0xfb,0x84,0x02,0xd0,0xc2,0x08,0x73,0x65,0x00,0x02,0xe2,0xc2,0x00,0x01, -0xee,0x10,0x00,0x5a,0x95,0x00,0x0a,0xff,0x90,0x00,0x2c,0x3d,0x00,0x17,0x88,0x70, -0x00,0x4a,0x08,0xd3,0xa1,0x02,0x87,0xd3,0x00,0x4c,0xed,0xde,0xee,0xed,0x40,0x19, -0x01,0x22,0x02,0x10,0x57,0x06,0x13,0x60,0x07,0x00,0x11,0xb4,0x07,0x00,0xf0,0x15, -0x64,0xf2,0x00,0x02,0x64,0x04,0xff,0xf6,0x80,0x00,0x6f,0xef,0x7e,0xa2,0x9e,0x00, -0x01,0xf8,0x01,0x3f,0x50,0x4f,0x10,0x06,0xe0,0x00,0x0c,0xd7,0xdd,0x00,0x0b,0x90, -0x00,0x01,0xcf,0xc2,0x13,0x17,0x00,0x38,0x00,0x21,0x1f,0x20,0x07,0x00,0x12,0x3f, -0x46,0x00,0x12,0x4f,0x07,0x00,0x16,0x6d,0x54,0x00,0x00,0xca,0x00,0xb0,0xde,0x60, -0x0e,0x85,0xf1,0x0e,0x52,0xf1,0x06,0xff,0x90,0xbf,0x05,0x21,0x2e,0xf4,0xbe,0x06, -0x10,0xd0,0x06,0x00,0x20,0x48,0x30,0x5a,0x03,0x11,0xfa,0x54,0x11,0x10,0xf0,0x7b, -0x05,0x00,0x8d,0x0c,0x30,0x0e,0xfd,0xfb,0x16,0x0d,0x00,0x90,0x0c,0xf1,0x02,0xaf, -0xb0,0xef,0x60,0x00,0x0f,0xf6,0x0a,0xfc,0x00,0x05,0xff,0x10,0x5f,0xf2,0x00,0xbf, -0x64,0x02,0x00,0x16,0x02,0xc0,0x06,0xff,0x20,0x00,0x5f,0xf2,0xcf,0xb0,0x00,0x00, -0xef,0x80,0xe5,0x04,0x00,0xd1,0x01,0x2f,0xfe,0x20,0x53,0x00,0x38,0x20,0xbf,0x80, -0x81,0x06,0x8f,0x8f,0x70,0x00,0x00,0x38,0x30,0x57,0x10,0x53,0x00,0x32,0x20,0x10, -0x02,0xc6,0x0e,0xcf,0x84,0xf4,0x00,0x00,0x6f,0x6d,0xfd,0x00,0x00,0x02,0x40,0x04, -0xb1,0x13,0x31,0xa4,0x00,0x5f,0x50,0x8e,0x30,0x00,0x06,0xf6,0x09,0xf3,0x72,0x01, -0x0f,0xab,0x00,0x30,0x10,0x8c,0xbf,0x01,0x80,0x3b,0x0d,0x10,0x00,0x00,0x03,0xb0, -0xd1,0x87,0x06,0x1f,0xc6,0xab,0x00,0x32,0x11,0x00,0x13,0x00,0x10,0x10,0x98,0x00, -0x30,0xfe,0xee,0xe1,0x4f,0x17,0x20,0xf7,0x00,0xf9,0x10,0x40,0xfb,0xcf,0x70,0x00, -0x34,0x0b,0x21,0x3b,0xf8,0xfc,0x05,0x20,0xb0,0xbf,0x52,0x03,0xa0,0x2f,0xf3,0x0a, -0xff,0xee,0xe6,0x00,0x0a,0xff,0xff,0xc4,0x05,0x10,0x03,0x66,0x06,0x00,0x93,0x01, -0x30,0xc0,0x00,0x8f,0xd2,0x07,0x90,0xf5,0x00,0x07,0xff,0xee,0xee,0x8b,0xfe,0x00, -0x42,0x16,0x1f,0xf9,0x80,0x14,0x26,0x20,0xff,0xe9,0x8e,0x00,0x10,0xa0,0x84,0x11, -0x00,0x40,0x01,0x22,0x6e,0x90,0x4c,0x02,0x10,0xaf,0x29,0x19,0x1f,0x70,0x65,0x14, -0x1e,0x7f,0x00,0x00,0xdf,0x70,0x00,0x07,0xf9,0x3c,0x00,0x23,0x00,0xc4,0x12,0x21, -0xf6,0x7f,0x38,0x03,0x0f,0x3c,0x00,0x1d,0x8f,0x0c,0xd0,0x1e,0xb0,0x0d,0xe0,0x1e, -0xc0,0x3c,0x00,0x21,0xdf,0x2f,0xf3,0x00,0x4f,0xd0,0x00,0x58,0x20,0x0d,0xf8,0x00, -0xdf,0x80,0x05,0x00,0x06,0x5f,0x08,0xfc,0x02,0xfd,0x10,0x25,0x00,0x0d,0x71,0x00, -0x01,0xcf,0x90,0x03,0xeb,0x4e,0xc9,0x05,0x21,0x0d,0xf8,0x42,0x19,0x0f,0x07,0x00, -0x10,0x7f,0x6f,0x40,0x9e,0x27,0xf5,0x0a,0xf2,0x35,0x00,0x1b,0x90,0x00,0xcf,0xff, -0xea,0x30,0x00,0x0c,0xff,0xff,0xb1,0x14,0xf0,0x1d,0x90,0x2a,0xff,0x20,0x0c,0xf9, -0x00,0x0d,0xf8,0x02,0xcf,0xa2,0x00,0x8f,0xd2,0xff,0xff,0xf5,0x07,0xfe,0x05,0xdf, -0xb5,0x10,0x7f,0xe0,0x0c,0xf9,0x00,0x09,0xfd,0x00,0xcf,0x90,0x00,0xef,0x90,0x0c, -0xf9,0x01,0xaf,0xf2,0x00,0xcf,0x8f,0x18,0x70,0x0c,0xff,0xfe,0xb3,0x00,0x00,0x01, -0x8e,0x04,0xef,0xaf,0xa3,0xe8,0x00,0x02,0xf8,0xaf,0xf2,0x00,0x01,0x50,0x03,0x20, -0x00,0x81,0x14,0x2a,0x30,0x1d,0xf6,0x00,0x2c,0x09,0x01,0x09,0x1c,0x32,0x38,0x40, -0x00,0x55,0x14,0x02,0xe8,0x13,0x51,0x9f,0xf5,0x14,0xef,0x90,0xfe,0x13,0x11,0x03, -0x09,0x14,0x01,0x8c,0x14,0x11,0x54,0x97,0x14,0x01,0x2a,0x14,0xb2,0x30,0xff,0x70, -0x00,0x6f,0xf0,0x09,0xff,0x50,0x4e,0xf9,0xc3,0x14,0x02,0xce,0x14,0x00,0xa2,0x11, -0x10,0x10,0x68,0x03,0x1f,0x30,0x53,0x00,0x38,0x72,0xbf,0xb0,0x00,0x00,0x02,0xdc, -0x3c,0x5f,0x0c,0x0f,0x53,0x00,0x33,0x20,0x10,0x01,0xa8,0x1a,0x71,0x93,0xf5,0x00, -0x00,0x4f,0x6c,0xfe,0xd9,0x04,0x2f,0x10,0x00,0x90,0x15,0x2f,0xaf,0x00,0x4f,0x70, -0x6f,0x40,0x00,0x04,0xf8,0x07,0xf5,0xab,0x00,0x36,0xe0,0x03,0x00,0x00,0x40,0x2f, -0xc0,0x05,0xf9,0x0c,0xfb,0x5f,0xf5,0x01,0xdf,0xb7,0x01,0x10,0xfc,0x59,0x04,0xf1, -0x03,0x90,0x2e,0xf8,0x3e,0xf7,0x1d,0x90,0x03,0xf6,0x01,0x00,0x00,0x10,0x00,0x07, -0xdf,0xe8,0xcb,0x5a,0x02,0xf0,0x1e,0x30,0x08,0xff,0x51,0x5f,0xfa,0x00,0xef,0x80, -0x09,0xff,0xf1,0x2f,0xf3,0x03,0xf5,0xff,0x43,0xff,0x20,0xcb,0x0f,0xf6,0x3f,0xf2, -0x5f,0x20,0xff,0x62,0xff,0x4e,0x80,0x1f,0xf4,0x0e,0xfe,0xe0,0x05,0xff,0x10,0x8f, -0xf9,0x03,0xef,0xa0,0xf5,0x16,0x82,0xe1,0x00,0x3f,0x9d,0xfe,0x91,0x00,0x05,0xfc, -0x06,0x20,0x3f,0xf2,0xc1,0x01,0x01,0xc3,0x0c,0x1f,0x68,0x2d,0x15,0x2a,0x00,0x70, -0x05,0x14,0xfb,0x34,0x07,0x1f,0x58,0x4b,0x00,0x2c,0x20,0x02,0xdf,0x52,0x0f,0x22, +0x30,0x06,0x06,0x05,0x00,0x07,0xd9,0x10,0xc0,0x0a,0x0b,0x0f,0x00,0x00,0x2c,0x11, +0x08,0x00,0x13,0x7f,0x08,0x00,0x10,0xd2,0x08,0x00,0x52,0x10,0x00,0x00,0x2a,0x12, +0x10,0x00,0x22,0x7d,0x12,0x10,0x00,0xf3,0x0a,0xd5,0x12,0x10,0x0f,0x0f,0x0c,0x00, +0x00,0x2f,0x13,0x80,0x0a,0x0a,0x0f,0x00,0xfd,0x7a,0x13,0x00,0x09,0x08,0x0f,0x01, +0x00,0xb6,0x08,0x00,0x13,0xf2,0x08,0x00,0x22,0x2e,0x14,0x08,0x00,0x30,0x6a,0x14, +0xb0,0x10,0x01,0x20,0x00,0x90,0x08,0x00,0x00,0x28,0x00,0x83,0x14,0xb0,0x04,0x07, +0x0f,0xff,0x00,0xeb,0x08,0x00,0xf0,0x05,0x20,0x15,0xa0,0x0a,0x0b,0x0c,0xff,0x00, +0x62,0x15,0x50,0x0b,0x0a,0x10,0x01,0x00,0xb2,0x15,0x10,0x0b,0x70,0x00,0x22,0x05, +0x16,0x08,0x00,0x13,0x58,0x08,0x00,0x40,0xab,0x16,0x10,0x0b,0x80,0x00,0x22,0x03, +0x17,0x10,0x00,0x31,0x56,0x17,0x80,0xd8,0x02,0xb0,0x7a,0x17,0x00,0x0b,0x0b,0x0d, +0x00,0xff,0xc2,0x17,0x90,0x90,0x00,0x32,0x00,0x0d,0x18,0x08,0x00,0x13,0x58,0x08, +0x00,0x13,0xa3,0x08,0x00,0x40,0xee,0x18,0xe0,0x09,0x08,0x00,0x40,0x39,0x19,0xc0, +0x09,0x60,0x02,0x31,0x6f,0x19,0x20,0x68,0x02,0x22,0xa5,0x19,0xa8,0x01,0x13,0xdb, +0x08,0x00,0x22,0x11,0x1a,0x08,0x00,0x13,0x47,0x08,0x00,0x13,0x7d,0x08,0x00,0x10, +0xb3,0x08,0x00,0xe0,0x0e,0x00,0x00,0xf2,0x1a,0x80,0x0d,0x0e,0x09,0x00,0x00,0x31, +0x1b,0x60,0xe8,0x02,0x41,0xfd,0x61,0x1b,0xa0,0x20,0x00,0x13,0x97,0x08,0x00,0x13, +0xcd,0x08,0x00,0x22,0x03,0x1c,0x08,0x00,0x91,0x39,0x1c,0x60,0x04,0x05,0x0c,0xff, +0x00,0x57,0x08,0x00,0xb3,0x01,0x00,0x75,0x1c,0x60,0x04,0x07,0x0c,0xff,0x00,0x9f, +0x08,0x00,0xa2,0xc9,0x1c,0x30,0x09,0x09,0x0d,0x00,0x00,0x04,0x1d,0x48,0x02,0x31, +0x3a,0x1d,0x10,0x70,0x02,0x13,0x70,0x08,0x00,0x13,0xa6,0x08,0x00,0x13,0xdc,0x08, +0x00,0x32,0x12,0x1e,0x10,0xa0,0x02,0x30,0x1e,0x20,0x09,0x60,0x04,0x10,0x71,0x10, +0x00,0x52,0x0b,0x00,0xff,0xa3,0x1e,0x40,0x00,0x13,0xd9,0x08,0x00,0x22,0x0f,0x1f, +0x08,0x00,0x13,0x45,0x08,0x00,0xc0,0x7b,0x1f,0x10,0x08,0x09,0x0f,0x00,0xfd,0xbf, +0x1f,0x10,0x09,0x08,0x00,0x22,0x03,0x20,0x10,0x00,0x22,0x47,0x20,0xe0,0x01,0x22, +0x9a,0x20,0xe8,0x00,0x22,0xd0,0x20,0xe8,0x01,0x22,0x28,0x21,0x10,0x00,0x21,0x5e, +0x21,0x20,0x00,0x22,0xfd,0xb1,0x10,0x00,0xc1,0xfd,0xe7,0x21,0x80,0x0a,0x0a,0x10, +0x00,0x00,0x37,0x22,0x60,0xe8,0x03,0x22,0x67,0x22,0x10,0x00,0x13,0xb7,0x10,0x00, +0x23,0xe7,0x22,0x20,0x00,0x13,0x23,0x20,0x00,0x13,0x23,0x20,0x00,0x13,0x23,0x20, +0x00,0xa1,0x23,0x60,0x0a,0x09,0x0f,0x01,0x00,0x2b,0x24,0x30,0xc8,0x03,0x22,0x6d, +0x24,0x00,0x02,0x31,0xaf,0x24,0x10,0xc8,0x03,0x22,0xeb,0x24,0x38,0x02,0x22,0x27, +0x25,0x40,0x01,0x93,0x5d,0x25,0x00,0x09,0x08,0x10,0x01,0x00,0x9d,0x10,0x00,0x22, +0xd3,0x25,0x20,0x00,0x32,0x0f,0x26,0xa0,0xe0,0x00,0x11,0x26,0x10,0x00,0x22,0xfd, +0x81,0x10,0x00,0x32,0xfd,0xb7,0x26,0x20,0x00,0x13,0xf3,0x20,0x00,0x31,0x29,0x27, +0xe0,0xd0,0x00,0x31,0x81,0x27,0x20,0xf8,0x00,0x13,0xc5,0x10,0x00,0x30,0x1d,0x28, +0x20,0xd8,0x05,0x32,0xfd,0x65,0x28,0x10,0x00,0x22,0xbd,0x28,0x20,0x00,0x21,0x01, +0x29,0x10,0x00,0xf1,0x0d,0xfc,0x59,0x29,0x20,0x09,0x09,0x12,0x00,0xfd,0xaa,0x29, +0x50,0x0b,0x0a,0x0f,0x01,0x00,0xf5,0x29,0xf0,0x08,0x09,0x10,0x00,0x00,0x3d,0x2a, +0x80,0x08,0x06,0xf2,0x03,0x85,0x2a,0x30,0x09,0x0a,0x0c,0xff,0x00,0xc1,0x2a,0xb0, +0x04,0x07,0x10,0xff,0x00,0xf9,0x2a,0xd0,0x01,0x22,0x23,0x2b,0xd8,0x02,0xa2,0x58, +0x2b,0x60,0x04,0x06,0x0c,0xff,0x00,0x7c,0x2b,0x20,0x00,0x13,0xb4,0x10,0x00,0xb1, +0xd8,0x2b,0xb0,0x04,0x04,0x0f,0x00,0xfd,0xf6,0x2b,0x40,0x08,0x00,0x50,0x14,0x2c, +0xb0,0x04,0x03,0x10,0x01,0xb0,0x2c,0x60,0x04,0x03,0x09,0x01,0x00,0x39,0x2c,0xa0, +0x0d,0x28,0x05,0xc0,0x81,0x2c,0x60,0x08,0x08,0x0f,0x00,0xfd,0xbd,0x2c,0xf0,0x08, +0xb8,0x02,0x30,0x08,0x2d,0x80,0x58,0x00,0xc0,0xfd,0x3d,0x2d,0x30,0x0a,0x0a,0x10, +0x01,0xfc,0x8d,0x2d,0x90,0x90,0x00,0xd0,0xfc,0xd5,0x2d,0x70,0x09,0x09,0x09,0x01, +0x00,0xfe,0x2d,0xb0,0x08,0xf8,0x00,0xf2,0x0b,0x3a,0x2e,0x40,0x04,0x06,0x10,0x00, +0x00,0x6a,0x2e,0xb0,0x08,0x08,0x10,0x01,0xfc,0xaa,0x2e,0x40,0x04,0x04,0x10,0x00, +0xfc,0xca,0x2e,0x88,0x05,0xa2,0xfa,0x2e,0x70,0x05,0x07,0x0c,0x00,0x00,0x24,0x2f, +0x10,0x00,0x31,0x54,0x2f,0xf0,0x10,0x00,0x22,0x7e,0x2f,0x28,0x02,0xa2,0xb4,0x2f, +0xe0,0x04,0x05,0x0c,0x00,0x00,0xd2,0x2f,0xf8,0x00,0x22,0x1d,0x30,0x18,0x00,0x21, +0x53,0x30,0xa0,0x03,0x20,0xfc,0xa3,0x10,0x00,0x52,0x0d,0x00,0xfc,0xde,0x30,0x20, +0x00,0x22,0x29,0x31,0x20,0x00,0x40,0x5f,0x31,0xf0,0x08,0x10,0x01,0x30,0x9b,0x31, +0x40,0x18,0x00,0x32,0xfd,0xe6,0x31,0xd0,0x04,0x22,0x1c,0x32,0xb0,0x03,0x22,0x6f, +0x32,0xb8,0x02,0x22,0xa5,0x32,0xc8,0x03,0x13,0xfd,0x10,0x00,0x22,0x33,0x33,0x20, +0x00,0x22,0x86,0x33,0x10,0x00,0x31,0xbc,0x33,0x80,0x60,0x04,0x40,0x16,0x34,0x70, +0x0e,0x68,0x03,0x31,0x55,0x34,0x30,0x30,0x02,0x31,0x99,0x34,0xd0,0xa8,0x00,0x10, +0xc3,0x10,0x00,0xd2,0x10,0x01,0xfc,0x0b,0x35,0xd0,0x05,0x06,0x0e,0x00,0xfc,0x35, +0x35,0x20,0x00,0x22,0x79,0x35,0x20,0x00,0x41,0xa3,0x35,0xd0,0x09,0xf0,0x03,0x21, +0x35,0x40,0x70,0x02,0x22,0x1e,0x36,0x10,0x00,0x22,0x69,0x36,0x10,0x00,0x12,0x99, +0x10,0x00,0x22,0xfd,0xe4,0x10,0x00,0x32,0xfd,0x14,0x37,0x20,0x00,0x22,0x5f,0x37, +0x20,0x00,0x31,0x8f,0x37,0xe0,0x20,0x00,0xa2,0xda,0x37,0x70,0x05,0x06,0x0f,0x00, +0xfd,0x07,0x38,0x38,0x04,0xa2,0x52,0x38,0xc0,0x05,0x07,0x0e,0x00,0x00,0x83,0x38, +0x68,0x06,0xb1,0xbf,0x38,0x70,0x05,0x07,0x0b,0xff,0x00,0xe6,0x38,0x90,0xe0,0x02, +0x22,0x36,0x39,0x08,0x01,0x22,0x6c,0x39,0x70,0x04,0x13,0xb7,0x10,0x00,0x22,0xed, +0x39,0x20,0x00,0x22,0x3d,0x3a,0x10,0x00,0x22,0x73,0x3a,0x10,0x00,0x31,0xc3,0x3a, +0xf0,0x50,0x04,0x22,0x02,0x3b,0x30,0x00,0x22,0x4d,0x3b,0x20,0x00,0x12,0x83,0x10, +0x00,0x22,0xfd,0xce,0x10,0x00,0x40,0xfd,0x04,0x3c,0x00,0xa0,0x07,0x41,0x00,0x6d, +0x3c,0xc0,0x78,0x02,0x40,0xb5,0x3c,0xe0,0x09,0x40,0x00,0x22,0x05,0x3d,0xc0,0x03, +0x22,0x49,0x3d,0xa0,0x00,0x31,0x94,0x3d,0xb0,0x08,0x00,0x31,0xdf,0x3d,0x20,0xc8, +0x00,0x22,0x0f,0x3e,0x10,0x00,0x22,0x5a,0x3e,0x10,0x00,0x13,0x8a,0x10,0x00,0x13, +0xd5,0x10,0x00,0x50,0x05,0x3f,0x20,0x04,0x06,0x20,0x03,0xd0,0x3f,0xc0,0x05,0x04, +0x05,0x01,0x04,0x33,0x3f,0x40,0x08,0x08,0x0a,0x08,0x09,0xf0,0xbf,0x43,0x02,0x0f, +0xf6,0x0e,0xf6,0x0e,0xf5,0x0d,0xf5,0x0d,0xf4,0x0c,0xf4,0x0c,0xf3,0x0b,0xf3,0x02, +0x30,0x03,0x60,0x0f,0xf6,0x0b,0xe3,0x8f,0x1f,0xa8,0xf0,0xf9,0x8f,0x0f,0x78,0xd0, +0xf6,0x36,0x07,0x20,0x00,0x06,0xf0,0x7f,0x00,0x00,0x09,0xd0,0xac,0x00,0x00,0x0c, +0xa0,0xd9,0x00,0x0e,0xff,0xff,0xff,0xf3,0x06,0x8f,0x98,0xf8,0x61,0x00,0x4f,0x25, +0xf1,0x00,0x01,0x7f,0x28,0xf1,0x10,0x8f,0xff,0xff,0xff,0xa0,0x24,0xdc,0x4e,0xb4, +0x20,0x00,0xe8,0x0f,0x70,0x00,0x00,0xf5,0x1f,0x40,0x00,0x03,0xf3,0x4f,0x20,0x00, +0x00,0x00,0x74,0x00,0x00,0x00,0x0c,0x70,0x00,0x00,0x3a,0xfe,0x70,0x00,0x3f,0xff, +0xff,0xa0,0x0a,0xfb,0x05,0xff,0x20,0xcf,0x70,0x0d,0xf5,0x0a,0xfc,0x10,0x00,0x00, +0x3f,0xff,0x91,0x00,0x00,0x3c,0xff,0xf4,0x00,0x00,0x03,0xcf,0xf1,0x18,0x70,0x00, +0xef,0x52,0xff,0x30,0x0e,0xf5,0x0c,0xfe,0x8b,0xff,0x20,0x2d,0xff,0xff,0x60,0x00, +0x03,0xf8,0x10,0x00,0x00,0x0e,0x50,0x00,0x05,0xdf,0xa0,0x00,0x00,0x00,0x1f,0xb7, +0xf7,0x01,0x80,0x00,0x3f,0x40,0xda,0x0a,0xc0,0x00,0x2f,0x82,0xf9,0x3f,0x30,0x00, +0x09,0xff,0xe2,0xd9,0x00,0x00,0x00,0x23,0x07,0xe1,0x00,0x20,0x00,0x10,0x60,0x06, +0x00,0xf1,0x56,0xac,0x2c,0xfe,0x50,0x00,0x04,0xf3,0xae,0x5b,0xf0,0x00,0x0d,0x90, +0xcb,0x06,0xf1,0x00,0x2c,0x10,0xae,0x6c,0xf0,0x00,0x00,0x00,0x1b,0xfd,0x40,0x00, +0x3c,0xfd,0x50,0x00,0x00,0x1e,0xff,0xff,0x30,0x00,0x05,0xfb,0x08,0xf7,0x00,0x00, +0x6f,0xa0,0x8f,0x60,0x00,0x02,0xff,0xaf,0xd0,0x00,0x00,0x09,0xff,0xb1,0x00,0x00, +0x05,0xff,0xfc,0x04,0xd8,0x02,0xff,0x6e,0xf9,0x7f,0x80,0x6f,0xe0,0x3f,0xff,0xf4, +0x05,0xff,0x10,0x6f,0xfd,0x00,0x0d,0xfe,0xcf,0xff,0xe2,0x00,0x19,0xef,0xd8,0xaf, +0xd0,0x8f,0x28,0xf2,0x8f,0x18,0xf0,0x47,0x49,0x0a,0xf1,0x07,0x03,0xe1,0x00,0x1e, +0xd1,0x00,0xaf,0x20,0x02,0xfa,0x00,0x08,0xf5,0x00,0x0b,0xf2,0x00,0x0e,0xf0,0x00, +0x0f,0xe0,0x03,0x00,0xf0,0x36,0xf0,0x00,0x0d,0xf0,0x00,0x0a,0xf3,0x00,0x05,0xf7, +0x00,0x00,0xee,0x00,0x00,0x6f,0x70,0x00,0x09,0xf2,0x00,0x00,0x70,0x00,0x00,0x07, +0xb0,0x00,0x4f,0xa0,0x00,0x8f,0x50,0x01,0xfd,0x00,0x0c,0xf3,0x00,0x8f,0x70,0x06, +0xfa,0x00,0x5f,0xb0,0x04,0xfc,0x00,0x5f,0xa0,0x06,0xf8,0x00,0x9f,0x50,0x0d,0xf0, +0x04,0xf9,0x00,0xcf,0x10,0x8f,0x40,0x04,0x30,0x00,0x00,0x4b,0x01,0xf1,0x08,0x0f, +0x60,0x00,0x8d,0x6e,0x89,0xd0,0x5b,0xff,0xfe,0x90,0x00,0xaf,0xe1,0x00,0x07,0xf4, +0xeb,0x00,0x09,0x90,0x6d,0x10,0x80,0x00,0xf0,0x02,0x07,0xa4,0x00,0x00,0x00,0xbf, +0x60,0x00,0x00,0x0b,0xf6,0x00,0x01,0x22,0xcf,0x72,0x20,0x88,0x01,0x50,0x48,0xff, +0xff,0xff,0xf4,0x12,0x00,0x05,0x1b,0x00,0xf9,0x1a,0x00,0x0e,0xf0,0xef,0x0f,0xd4, +0xf8,0x5c,0x00,0x2e,0xee,0xe3,0x2f,0xff,0xf4,0x03,0x70,0x0f,0xf7,0x0a,0xf4,0x00, +0x00,0x1f,0x90,0x00,0x06,0xf4,0x00,0x00,0xbe,0x00,0x00,0x0f,0xa0,0x00,0x05,0xf5, +0x00,0x00,0xaf,0x0a,0x00,0xff,0x41,0xb0,0x00,0x04,0xf6,0x00,0x00,0xaf,0x10,0x00, +0x0e,0xb0,0x00,0x00,0x00,0x6d,0xfe,0x80,0x00,0x6f,0xff,0xff,0x90,0x0e,0xf8,0x05, +0xff,0x12,0xff,0x10,0x0e,0xf4,0x3f,0xf0,0x00,0xdf,0x64,0xff,0x00,0x0d,0xf7,0x4f, +0xf0,0x00,0xdf,0x73,0xff,0x00,0x0d,0xf6,0x2f,0xf1,0x00,0xef,0x40,0xef,0x80,0x5f, +0xf1,0x06,0xff,0xff,0xf9,0x00,0x06,0xdf,0xe8,0x00,0x00,0x16,0xc4,0x3a,0xff,0xf4, +0xbf,0xff,0xf4,0x65,0x0f,0xf4,0x00,0x03,0x00,0x05,0xf1,0x35,0x7d,0xfd,0x80,0x00, +0xaf,0xff,0xff,0xa0,0x2f,0xf4,0x06,0xff,0x05,0xec,0x00,0x1f,0xf2,0x00,0x00,0x04, +0xff,0x00,0x00,0x00,0xdf,0x80,0x00,0x00,0xbf,0xd0,0x00,0x00,0xaf,0xe2,0x00,0x00, +0x8f,0xf3,0x00,0x00,0x6f,0xf4,0x00,0x00,0x2f,0xff,0xee,0xee,0x83,0xff,0xff,0xff, +0xf9,0x01,0x9e,0xfd,0x70,0x00,0xcf,0xfe,0xff,0xa0,0x3f,0xf3,0x05,0xff,0x11,0x33, +0x36,0x00,0xf0,0x37,0x08,0xfe,0x00,0x00,0xef,0xfd,0x20,0x00,0x0c,0xef,0xf7,0x00, +0x00,0x00,0x3f,0xf2,0x25,0x40,0x00,0xef,0x56,0xff,0x20,0x4f,0xf4,0x0d,0xff,0xef, +0xfc,0x00,0x19,0xdf,0xd8,0x00,0x00,0x00,0x2f,0xf7,0x00,0x00,0x0c,0xff,0x70,0x00, +0x06,0xff,0xf7,0x00,0x01,0xee,0xdf,0x70,0x00,0xaf,0x5c,0xf7,0x00,0x4f,0xb0,0xcf, +0x70,0x0d,0xf1,0x0c,0xf7,0x07,0xff,0xee,0xff,0xfa,0x43,0x01,0xa0,0xc0,0x00,0x00, +0xcf,0x70,0x00,0x00,0x0c,0xf7,0x00,0x09,0x00,0xf0,0x11,0x04,0xff,0xff,0xff,0x20, +0x6f,0xff,0xff,0xf2,0x08,0xf9,0x00,0x00,0x00,0x9f,0x70,0x00,0x00,0x0b,0xfc,0xef, +0xb1,0x00,0xdf,0xfd,0xff,0xd0,0x01,0x51,0x03,0xff,0x40,0x29,0x00,0xf0,0x31,0x17, +0x70,0x00,0xcf,0x70,0xff,0x70,0x3f,0xf4,0x07,0xff,0xff,0xfc,0x00,0x06,0xdf,0xe9, +0x00,0x00,0x02,0x9d,0xe0,0x00,0x05,0xff,0xfe,0x00,0x02,0xff,0x92,0x00,0x00,0xaf, +0xa0,0x00,0x00,0x0f,0xf8,0xdf,0xc3,0x02,0xff,0xff,0xff,0xe0,0x3f,0xf7,0x02,0xff, +0x63,0xff,0x00,0x0b,0xf8,0x1f,0xf2,0x00,0xbf,0x90,0xdf,0x90,0x2f,0xf5,0x04,0x36, +0x00,0x31,0x04,0xcf,0xe9,0x49,0x03,0xf0,0x07,0x87,0xee,0xee,0xef,0xf6,0x00,0x00, +0x02,0xff,0x10,0x00,0x00,0x8f,0x90,0x00,0x00,0x0f,0xf3,0x00,0x00,0x06,0xfc,0x12, +0x01,0x90,0x60,0x00,0x00,0x4f,0xe0,0x00,0x00,0x0b,0xf8,0x1e,0x00,0x90,0x20,0x00, +0x00,0x9f,0xb0,0x00,0x00,0x1f,0xf5,0x9e,0x01,0xf0,0x13,0xfd,0x80,0x00,0x7f,0xff, +0xff,0xa0,0x0d,0xf8,0x05,0xff,0x00,0xff,0x40,0x1f,0xf2,0x0c,0xf9,0x07,0xfe,0x00, +0x2d,0xff,0xfe,0x30,0x04,0xff,0xff,0xf6,0x00,0xef,0x60,0x3f,0xf2,0xb0,0x01,0xf0, +0x03,0x62,0xff,0x50,0x3f,0xf5,0x0b,0xff,0xef,0xfd,0x00,0x08,0xdf,0xe9,0x10,0x00, +0x6d,0xfd,0x50,0x36,0x00,0xf0,0x00,0x50,0x0f,0xf7,0x07,0xfe,0x04,0xff,0x00,0x0f, +0xf3,0x4f,0xf0,0x00,0xef,0x51,0x24,0x00,0xf2,0x12,0x0a,0xff,0xdf,0xff,0x40,0x0a, +0xfe,0x8f,0xf2,0x00,0x00,0x05,0xfe,0x00,0x00,0x15,0xef,0x70,0x00,0x9f,0xff,0xb0, +0x00,0x09,0xfc,0x60,0x00,0x0a,0xe3,0x0f,0xf7,0x03,0x70,0x49,0x0d,0x01,0x4a,0x02, +0x74,0xe3,0x0c,0xe2,0x1f,0xf5,0x04,0x60,0x64,0x0d,0xa5,0x0b,0xf2,0x0b,0xf2,0x0d, +0xf0,0x2f,0xa0,0x3d,0x20,0x76,0x0d,0xf0,0x16,0xb2,0x00,0x06,0xdf,0xf2,0x18,0xef, +0xfe,0x80,0x9f,0xfa,0x40,0x00,0x9f,0xfc,0x60,0x00,0x06,0xdf,0xff,0xa1,0x00,0x04, +0xbf,0xf2,0x00,0x00,0x02,0x92,0xff,0xff,0xff,0xf0,0xde,0xee,0xee,0xe0,0x2a,0x00, +0x00,0x08,0x00,0x00,0x10,0x00,0xf0,0x3f,0x0c,0x50,0x00,0x00,0x1f,0xfd,0x70,0x00, +0x07,0xdf,0xff,0x92,0x00,0x03,0x9e,0xfc,0x00,0x05,0xbf,0xfb,0x09,0xef,0xfe,0x71, +0x1f,0xfc,0x50,0x00,0x0a,0x30,0x00,0x00,0x03,0xbf,0xeb,0x20,0x2f,0xff,0xff,0xe0, +0x8f,0xd0,0x2f,0xf4,0x24,0x20,0x0f,0xf5,0x00,0x00,0x6f,0xf1,0x00,0x05,0xff,0x50, +0x00,0x0f,0xf6,0x00,0x00,0x3f,0xd0,0x00,0x00,0x14,0x30,0x00,0x00,0x06,0x30,0x00, +0x00,0x7f,0xf0,0x00,0x00,0x3e,0xbf,0x02,0xf2,0x45,0x3a,0xdf,0xeb,0x40,0x00,0x00, +0x08,0xfc,0x75,0x6b,0xf9,0x00,0x00,0x8f,0x60,0x01,0x00,0x4f,0x70,0x03,0xf8,0x01, +0xcf,0xfa,0x07,0xf1,0x0a,0xe0,0x0c,0xf6,0xbf,0x01,0xf5,0x0f,0x90,0x5f,0x60,0x9f, +0x00,0xd8,0x2f,0x50,0xaf,0x10,0xae,0x00,0xb9,0x4f,0x30,0xde,0x00,0xbd,0x00,0xca, +0x4f,0x30,0xed,0x00,0xcc,0x00,0xd7,0x3f,0x50,0xde,0x00,0xfb,0x02,0xf4,0x0f,0x80, +0x9f,0x8b,0xfe,0x6d,0xc0,0x0b,0xe1,0x1c,0xfa,0x2d,0xfb,0x10,0x02,0xfc,0x84,0x03, +0xb0,0x5f,0xfa,0x77,0x99,0x00,0x00,0x00,0x02,0x8d,0xff,0xc6,0x0f,0x00,0x30,0xef, +0xa0,0x00,0xd6,0x04,0x10,0x00,0x4f,0x04,0x10,0xf5,0x10,0x00,0xf0,0x71,0xdf,0xb0, +0x00,0x00,0x4f,0xf4,0xff,0x10,0x00,0x0a,0xfb,0x0e,0xf6,0x00,0x00,0xff,0x60,0xaf, +0xc0,0x00,0x5f,0xf1,0x05,0xff,0x20,0x0b,0xff,0xff,0xff,0xf7,0x01,0xff,0xff,0xff, +0xff,0xd0,0x6f,0xf2,0x00,0x05,0xff,0x2c,0xfb,0x00,0x00,0x0e,0xf8,0xff,0xff,0xfd, +0x80,0x0f,0xff,0xff,0xff,0xb0,0xff,0x50,0x08,0xff,0x1f,0xf5,0x00,0x2f,0xf2,0xff, +0x50,0x08,0xfe,0x0f,0xff,0xff,0xfe,0x30,0xff,0xdc,0xcf,0xfa,0x0f,0xf5,0x00,0x2f, +0xf4,0xff,0x50,0x00,0xef,0x7f,0xf5,0x00,0x5f,0xf5,0xff,0xff,0xff,0xfd,0x0f,0xff, +0xff,0xd9,0x10,0x00,0x19,0xef,0xe9,0x10,0x01,0xdf,0xff,0xff,0xd1,0x0a,0xfe,0x30, +0x3e,0xf8,0x0f,0xf6,0x00,0x08,0xfd,0x3f,0xf2,0x00,0x00,0x21,0x4f,0xf0,0xa3,0x00, +0x00,0x05,0x00,0x00,0x0f,0x00,0xf1,0x01,0x11,0x0f,0xf5,0x00,0x08,0xfd,0x0a,0xfd, +0x30,0x3e,0xf9,0x01,0xef,0xff,0xff,0xd1,0x37,0x00,0x00,0x40,0x00,0x02,0x60,0x00, +0x30,0x50,0x3c,0xfd,0x60,0x00,0xf0,0x1a,0xf5,0xff,0x50,0x00,0xcf,0x9f,0xf5,0x00, +0x0a,0xfb,0xff,0x50,0x00,0xaf,0xbf,0xf5,0x00,0x0c,0xf9,0xff,0x50,0x02,0xff,0x5f, +0xf5,0x03,0xcf,0xd0,0xff,0xff,0xff,0xe3,0x0f,0xff,0xfe,0x92,0x00,0xff,0xff,0xff, +0xfa,0x89,0x03,0x44,0xff,0x50,0x00,0x00,0x04,0x00,0x00,0xcb,0x00,0x4b,0xff,0xfe, +0xee,0xc0,0x14,0x00,0x13,0xf9,0x2c,0x00,0x11,0xf6,0x04,0x00,0x0c,0x30,0x00,0x00, +0x04,0x00,0x08,0x14,0x00,0x03,0x04,0x00,0xf0,0x09,0x00,0x18,0xdf,0xea,0x20,0x00, +0x1d,0xff,0xff,0xfe,0x10,0x09,0xff,0x40,0x2e,0xf9,0x00,0xef,0x70,0x00,0x6f,0xe0, +0x2f,0xf3,0x76,0x02,0x10,0xff,0x5b,0x02,0xf0,0x09,0x4f,0xf2,0x07,0xff,0xff,0x02, +0xff,0x30,0x5d,0xdf,0xf0,0x0e,0xf8,0x00,0x05,0xff,0x00,0x8f,0xf5,0x00,0x8f,0xf0, +0x00,0xdf,0x4a,0x03,0x40,0x00,0x8d,0xfe,0xc6,0x46,0x00,0x2f,0x1f,0xf4,0x05,0x00, +0x02,0x00,0x21,0x05,0x02,0x05,0x00,0x0f,0x23,0x00,0x05,0x3b,0xdf,0x8d,0xf8,0x03, +0x00,0x4f,0x00,0x00,0x06,0xff,0x04,0x00,0x09,0xf0,0x01,0x6a,0x70,0x06,0xfe,0x8f, +0xe1,0x1c,0xfb,0x1f,0xff,0xff,0xf3,0x02,0xbe,0xfc,0x40,0x32,0x01,0xf0,0x09,0xc0, +0xff,0x50,0x0c,0xfe,0x10,0xff,0x50,0x8f,0xf4,0x00,0xff,0x54,0xff,0x80,0x00,0xff, +0x7e,0xfc,0x00,0x00,0xff,0xef,0xf5,0xfa,0x00,0xf0,0x08,0xfd,0x00,0x00,0xff,0xf8, +0xff,0x70,0x00,0xff,0x80,0xaf,0xf2,0x00,0xff,0x50,0x1e,0xfb,0x00,0xff,0x50,0x06, +0xff,0x50,0x7b,0x01,0x1e,0xe1,0x10,0x01,0x0e,0x04,0x00,0x03,0x40,0x01,0x11,0xf5, +0x04,0x00,0x40,0xf3,0x00,0x00,0x4f,0x74,0x05,0x40,0x00,0x9f,0xff,0xff,0x05,0x05, +0xf0,0x1a,0xff,0xff,0xdf,0x40,0x04,0xfd,0xff,0xff,0x9f,0x90,0x09,0xf9,0xff,0xff, +0x4f,0xe0,0x0e,0xf4,0xff,0xff,0x4b,0xf4,0x4f,0xb4,0xff,0xff,0x45,0xf9,0x9f,0x54, +0xff,0xff,0x50,0xfe,0xef,0x05,0xff,0xff,0x50,0xaf,0xfa,0x06,0x00,0x30,0x5f,0xf5, +0x05,0x04,0x04,0x50,0xf0,0x05,0xff,0xff,0xa0,0x00,0x01,0x10,0xf3,0x05,0x00,0x11, +0xfc,0x28,0x01,0xf0,0x0d,0x60,0x1f,0xf4,0xff,0xcf,0xe0,0x1f,0xf4,0xff,0x5d,0xf8, +0x1f,0xf4,0xff,0x54,0xff,0x3f,0xf4,0xff,0x50,0xaf,0xcf,0xf4,0xff,0x50,0x2f,0xff, +0xf4,0xa0,0x02,0x01,0x8a,0x02,0x00,0x05,0x00,0xf0,0x21,0x5f,0xf4,0x00,0x08,0xdf, +0xd8,0x10,0x00,0x0d,0xff,0xff,0xfd,0x10,0x09,0xff,0x51,0x4e,0xf9,0x00,0xff,0x70, +0x00,0x7f,0xf0,0x3f,0xf2,0x00,0x02,0xff,0x34,0xff,0x10,0x00,0x0f,0xf5,0x4f,0xf1, +0x00,0x00,0xff,0x53,0xff,0x20,0x00,0x2f,0xf3,0x0f,0xf7,0x35,0x01,0x70,0x9f,0xf5, +0x04,0xef,0x90,0x00,0xdf,0x87,0x02,0x53,0x00,0x8d,0xfd,0x81,0x00,0xfa,0x02,0x00, +0x0f,0x02,0xf0,0x01,0x05,0xff,0x6f,0xf5,0x00,0x0b,0xfa,0xff,0x50,0x00,0xbf,0xbf, +0xf5,0x00,0x4f,0xf7,0xe8,0x02,0x50,0x1f,0xff,0xff,0xe9,0x10,0xf6,0x00,0x10,0x0f, +0x57,0x03,0x05,0x09,0x00,0x20,0x00,0x08,0xd8,0x05,0x13,0x1d,0x78,0x00,0x18,0x5f, +0x78,0x00,0x20,0x35,0xff,0x24,0x00,0x28,0x5f,0xf0,0x78,0x00,0x57,0x07,0xff,0x00, +0x9f,0xf4,0x78,0x00,0x20,0xff,0xfd,0x4c,0x02,0x20,0x2d,0xfe,0xcc,0x03,0x90,0x0a, +0x50,0xff,0xff,0xfd,0x70,0x0f,0xff,0xff,0xb9,0x01,0x60,0x07,0xff,0x4f,0xf5,0x00, +0x0f,0xaf,0x02,0x00,0x8c,0x00,0x20,0x8f,0xf2,0xad,0x03,0x10,0x0f,0x64,0x01,0xc0, +0xff,0x50,0x7f,0xf1,0x0f,0xf5,0x00,0xef,0x80,0xff,0x50,0x06,0xa1,0x03,0xf0,0x11, +0x0e,0xf9,0x00,0x5c,0xff,0xc6,0x00,0x07,0xff,0xff,0xff,0x80,0x0f,0xf9,0x00,0x8f, +0xf1,0x1f,0xf5,0x00,0x1a,0xa2,0x0c,0xfe,0x60,0x00,0x00,0x02,0xdf,0xff,0xa2,0x00, +0xc5,0x04,0x10,0x40,0xdf,0x08,0xc0,0xe0,0x5d,0xc0,0x00,0x2f,0xf3,0x2f,0xf7,0x00, +0x6f,0xf2,0x09,0xe1,0x03,0x60,0x00,0x5c,0xff,0xd7,0x00,0xbf,0x20,0x03,0x20,0xaf, +0xff,0x59,0x00,0x10,0x04,0xf0,0x05,0x0f,0x05,0x00,0x19,0x5f,0x1f,0xf4,0x00,0x0b, +0xfa,0x05,0x00,0x0f,0xc1,0xf9,0x0f,0xf5,0x00,0x0d,0xf8,0x0c,0xfc,0x20,0x5f,0xf5, +0x03,0x78,0x00,0xf2,0x00,0x3b,0xff,0xd8,0x00,0xcf,0xc0,0x00,0x05,0xff,0x37,0xff, +0x10,0x00,0xaf,0xe0,0xc4,0x00,0xf0,0x0f,0xcf,0xa0,0x03,0xff,0x40,0x07,0xfe,0x00, +0x8f,0xe0,0x00,0x2f,0xf3,0x0c,0xf9,0x00,0x00,0xcf,0x81,0xff,0x40,0x00,0x07,0xfc, +0x5f,0xe0,0x00,0x00,0x2f,0xfc,0xf9,0x06,0x01,0xc7,0x00,0x30,0x07,0xff,0xe0,0x46, +0x07,0x10,0xf9,0x7c,0x06,0xf0,0x31,0x01,0xff,0x10,0x0b,0xfa,0x6f,0xe0,0x04,0xff, +0x50,0x0d,0xf6,0x3f,0xf1,0x08,0xff,0x90,0x0f,0xf3,0x0f,0xf3,0x0b,0xff,0xc0,0x3f, +0xf0,0x0c,0xf6,0x0f,0xed,0xf0,0x6f,0xc0,0x09,0xf9,0x2f,0xaa,0xf3,0x9f,0x90,0x05, +0xfc,0x6f,0x66,0xf7,0xcf,0x60,0x02,0xff,0xaf,0x32,0xfa,0xff,0x20,0x00,0xef,0xff, +0x00,0xff,0xff,0x00,0x00,0xbf,0xfb,0x03,0x00,0x60,0x00,0x8f,0xf8,0x00,0x7f,0xf8, +0x22,0x05,0xf0,0x08,0x00,0x4f,0xf5,0x00,0x7f,0xf3,0x00,0x1f,0xfa,0x0d,0xfb,0x00, +0x8f,0xf1,0x05,0xff,0x41,0xff,0x80,0x00,0xcf,0xc9,0xfe,0x4d,0x05,0xb0,0xf6,0x00, +0x00,0x0a,0xff,0xd0,0x00,0x00,0x0b,0xff,0xe0,0xe9,0x02,0xf0,0x1f,0xf7,0x00,0x00, +0xdf,0xb8,0xff,0x10,0x06,0xff,0x31,0xff,0x90,0x0e,0xfa,0x00,0x8f,0xf2,0x8f,0xf2, +0x00,0x0e,0xfb,0xbf,0xc0,0x00,0x0e,0xfa,0x4f,0xf3,0x00,0x5f,0xf2,0x0c,0xfa,0x00, +0xcf,0xa0,0x04,0xff,0x23,0xff,0x20,0x00,0xcf,0x8a,0xfa,0x32,0x00,0x10,0xf3,0xf5, +0x07,0x10,0xb0,0xdd,0x09,0x10,0x30,0x3b,0x01,0x1b,0x20,0x05,0x00,0x00,0xd9,0x08, +0x30,0xff,0xf1,0x6f,0x7a,0x06,0x00,0x59,0x07,0xa0,0x60,0x00,0x00,0x0c,0xfb,0x00, +0x00,0x00,0x7f,0xf2,0x0e,0x00,0x00,0x08,0x08,0x00,0x7d,0x07,0x60,0x6f,0xf2,0x00, +0x00,0x01,0xff,0xfd,0x07,0x10,0xfd,0x53,0x05,0x00,0x05,0x0b,0x10,0x6f,0x05,0x00, +0xaf,0x0d,0xdd,0x41,0xff,0xf5,0x1f,0xf3,0x01,0xff,0x30,0x05,0x00,0x0a,0xf2,0x03, +0xd4,0x1f,0xff,0x50,0xdf,0x70,0x00,0x00,0x7f,0xd0,0x00,0x00,0x1f,0xf3,0x00,0x00, +0x0b,0xf9,0x5b,0x07,0x01,0xca,0x02,0x00,0x1e,0x08,0x00,0x20,0x03,0x20,0x0e,0xf6, +0xa4,0x06,0x03,0xdd,0x07,0xbf,0xcf,0x80,0x00,0x00,0x6f,0xd0,0xbd,0xd6,0xef,0xf7, +0x0c,0x02,0x00,0x06,0xf0,0x25,0xbf,0xf7,0xef,0xf7,0x00,0x8f,0x80,0x00,0x0e,0xfe, +0x00,0x04,0xfc,0xf4,0x00,0xaf,0x2f,0xa0,0x1f,0xa0,0xaf,0x17,0xf5,0x04,0xf7,0xdd, +0xdd,0xdd,0xd1,0xff,0xff,0xff,0xf2,0x38,0x80,0x00,0xbf,0x80,0x00,0xdf,0x20,0x01, +0x9e,0xfc,0x50,0x00,0xcf,0xed,0xff,0x40,0x3f,0xf1,0x7a,0x00,0xf3,0x0d,0x01,0x9f, +0xb0,0x04,0xcf,0xff,0xfb,0x02,0xff,0x74,0xaf,0xb0,0x6f,0xd0,0x0a,0xfb,0x03,0xff, +0xee,0xff,0xb0,0x05,0xdf,0xb7,0xfe,0x00,0x2f,0xf2,0x7f,0x00,0x02,0x09,0x00,0xf0, +0x08,0x7d,0xfb,0x10,0x2f,0xff,0xff,0xfc,0x02,0xff,0x60,0x4f,0xf3,0x2f,0xf2,0x00, +0xdf,0x52,0xff,0x20,0x0c,0xf7,0x2f,0xf2,0x4b,0x08,0x32,0x60,0x3f,0xf3,0x1b,0x00, +0xf0,0x06,0x6e,0xfb,0x10,0x00,0x8e,0xfd,0x50,0x0a,0xff,0xff,0xf5,0x2f,0xf4,0x08, +0xfc,0x6f,0xd0,0x01,0x65,0x7f,0xc0,0xbc,0x00,0xe9,0x00,0x22,0x2f,0xf4,0x07,0xfc, +0x0a,0xff,0xef,0xf6,0x00,0x8e,0xfd,0x60,0x58,0x00,0x50,0x20,0x1a,0xfd,0x7f,0xf2, +0x02,0x07,0xf0,0x0b,0x22,0xff,0x50,0x7f,0xf2,0x5f,0xe0,0x02,0xff,0x27,0xfc,0x00, +0x2f,0xf2,0x5f,0xd0,0x02,0xff,0x22,0xff,0x30,0x5f,0xf2,0x0b,0xff,0xdf,0x24,0x00, +0xf0,0x05,0x6f,0xf2,0x00,0x6d,0xfd,0x70,0x00,0x8f,0xff,0xff,0x70,0x1f,0xf5,0x04, +0xff,0x05,0xff,0x99,0x9f,0xf2,0x76,0x01,0x20,0x35,0xff,0xee,0x0b,0x30,0xf9,0x00, +0x85,0x1b,0x00,0xfe,0x09,0xd0,0x00,0x6d,0xfe,0xa1,0x00,0x00,0x6d,0xfa,0x04,0xff, +0xfa,0x07,0xfd,0x00,0xcf,0xff,0xf7,0x8d,0xfe,0xb5,0x08,0xfc,0x00,0x03,0x00,0xf2, +0x06,0x00,0xaf,0xe7,0xdf,0x40,0xaf,0xff,0xff,0xf4,0x2f,0xf6,0x04,0xff,0x45,0xfe, +0x00,0x0f,0xf4,0x6f,0xd0,0x00,0x09,0x00,0x00,0x12,0x00,0x01,0x1b,0x00,0xf0,0x05, +0x00,0x9f,0xe7,0xff,0x30,0x15,0x00,0x6f,0xf1,0x0b,0xff,0xef,0xf9,0x00,0x1a,0xef, +0xd7,0x00,0x3f,0xf1,0x74,0x06,0x23,0x10,0x00,0x09,0x00,0xf0,0x06,0x5d,0xfb,0x20, +0x3f,0xff,0xff,0xfb,0x03,0xff,0x50,0x6f,0xf0,0x3f,0xf1,0x02,0xff,0x13,0xff,0x10, +0x2f,0xf2,0x09,0x00,0x19,0x23,0x09,0x00,0x8c,0x0c,0xe2,0x1f,0xf4,0x04,0x50,0x0f, +0xf4,0x02,0x00,0x70,0x00,0xde,0x20,0x1f,0xf4,0x00,0x45,0xfa,0x0a,0x2d,0xff,0x40, +0x05,0x00,0x7c,0x02,0xff,0x3b,0xff,0xe0,0xaf,0xc3,0x87,0x01,0xf0,0x02,0x20,0xaf, +0xe1,0x2f,0xf2,0x7f,0xf3,0x02,0xff,0x6f,0xf6,0x00,0x2f,0xff,0xfa,0x00,0x02,0xf6, +0x00,0xfe,0x03,0x2f,0xfc,0xef,0x70,0x02,0xff,0x26,0xff,0x20,0x2f,0xf2,0x0c,0xfc, +0x02,0xff,0x20,0x3f,0xf6,0x6e,0x00,0x02,0x02,0x00,0xff,0x12,0x2f,0xf4,0xdf,0xc2, +0x6e,0xfb,0x12,0xff,0xff,0xff,0xef,0xff,0xfa,0x2f,0xf6,0x06,0xff,0x50,0x8f,0xe2, +0xff,0x20,0x3f,0xf0,0x04,0xff,0x2f,0xf2,0x03,0xff,0x00,0x4f,0xf2,0x0d,0x00,0x06, +0x10,0xf0,0x3b,0x00,0x10,0x02,0x13,0x05,0x00,0x37,0x00,0xa0,0x02,0xff,0x10,0x2f, +0xf1,0x2f,0xf1,0x02,0xff,0x22,0xe2,0x00,0x09,0x09,0x00,0x50,0x20,0x00,0x7d,0xfd, +0x70,0x80,0x06,0xf0,0x0a,0x90,0x2f,0xf6,0x05,0xff,0x26,0xfe,0x00,0x0d,0xf6,0x7f, +0xc0,0x00,0xcf,0x86,0xfe,0x00,0x0d,0xf7,0x2f,0xf5,0x05,0xff,0x30,0x9f,0x5f,0x06, +0xf0,0x10,0x7d,0xfe,0x80,0x00,0x2f,0xf7,0xdf,0xb1,0x02,0xff,0xfd,0xff,0xb0,0x2f, +0xf4,0x03,0xff,0x32,0xff,0x20,0x0d,0xf5,0x2f,0xf2,0x00,0xcf,0x72,0xff,0x20,0x0e, +0xf5,0x3b,0x00,0x10,0x22,0xa4,0x04,0x48,0x2f,0xf7,0xdf,0xa1,0xff,0x00,0xf0,0x01, +0x00,0x00,0x01,0xaf,0xe6,0xef,0x20,0xbf,0xff,0xff,0xf2,0x3f,0xf5,0x06,0xff,0x25, +0xa8,0x02,0x32,0x7f,0xc0,0x02,0x09,0x00,0x41,0x2f,0xf5,0x06,0xff,0x1b,0x00,0x39, +0x01,0xaf,0xd7,0x34,0x00,0x21,0x2f,0xf2,0xf2,0x0b,0xab,0xea,0x2f,0xff,0xfa,0x2f, +0xfa,0x31,0x2f,0xf2,0x00,0x03,0x00,0xf0,0x17,0x02,0xae,0xfc,0x40,0x0d,0xfd,0xcf, +0xf3,0x3f,0xf0,0x0a,0xd7,0x1f,0xfa,0x51,0x00,0x05,0xef,0xff,0x90,0x00,0x04,0x8f, +0xf7,0x7f,0xb0,0x0a,0xf9,0x2f,0xfc,0xbf,0xf4,0x03,0xbf,0xfc,0x50,0x0b,0xf9,0xab, +0x03,0x62,0xef,0xff,0xf0,0xae,0xfe,0xb0,0x0c,0x00,0x02,0x03,0x00,0x9e,0x0a,0xfa, +0x00,0x07,0xff,0xf1,0x01,0xbf,0xe1,0xfa,0x01,0x14,0x3f,0x18,0x01,0xf0,0x01,0x1f, +0xf4,0x06,0xff,0x20,0xdf,0xff,0xff,0xf2,0x02,0xcf,0xd6,0xff,0x20,0xbf,0x90,0x1c, +0x03,0xf0,0x36,0x0c,0xf7,0x1f,0xf1,0x1f,0xf2,0x0c,0xf6,0x5f,0xd0,0x07,0xfa,0x9f, +0x80,0x02,0xfe,0xdf,0x30,0x00,0xdf,0xfe,0x00,0x00,0x8f,0xf9,0x00,0x00,0x3f,0xf4, +0x00,0xaf,0x70,0x1f,0xd0,0x0c,0xf6,0x6f,0xb0,0x5f,0xf1,0x0f,0xf2,0x2f,0xe0,0xaf, +0xf5,0x2f,0xe0,0x0e,0xf1,0xee,0xfa,0x5f,0xa0,0x0b,0xf6,0xf8,0xce,0x8f,0x60,0x07, +0xfe,0xf3,0x8f,0xef,0x30,0x03,0xff,0xf0,0x60,0x0a,0x40,0xff,0xa0,0x0f,0xfb,0xe2, +0x0d,0xf0,0x3e,0x0a,0xf7,0x00,0x7f,0xe0,0x0c,0xfa,0x00,0xef,0x74,0xff,0x20,0x05, +0xff,0xdf,0x80,0x00,0x0d,0xff,0xe1,0x00,0x00,0x7f,0xfa,0x00,0x00,0x0e,0xff,0xf2, +0x00,0x07,0xfe,0xbf,0xa0,0x01,0xff,0x63,0xff,0x30,0x8f,0xd0,0x0a,0xfc,0x00,0xcf, +0x90,0x08,0xfd,0x07,0xfe,0x00,0xdf,0x70,0x1f,0xf2,0x1f,0xf2,0x00,0xcf,0x76,0xfc, +0x00,0x06,0xfb,0xaf,0x70,0x00,0x1f,0xff,0xf2,0x00,0x00,0xbf,0xfc,0x00,0x00,0x06, +0xfc,0x04,0xf1,0x00,0x1f,0xf1,0x00,0x00,0x08,0xfb,0x00,0x00,0x1f,0xff,0x50,0x00, +0x01,0xee,0x70,0x5b,0x08,0x30,0xf7,0x4e,0xee,0xce,0x0a,0x60,0xdf,0xb0,0x00,0x08, +0xfe,0x10,0xad,0x05,0x60,0x01,0xef,0x90,0x00,0x0a,0xfd,0x1c,0x00,0x30,0xee,0xe8, +0x6f,0xbe,0x06,0xd0,0x05,0x80,0x00,0x7f,0xc0,0x00,0xff,0x10,0x02,0xfd,0x00,0x03, +0xfc,0x03,0x00,0x20,0x06,0xfa,0xcf,0x05,0x83,0xaf,0xc0,0x00,0x09,0xf8,0x00,0x04, +0xfc,0x15,0x00,0xd9,0x01,0xff,0x00,0x00,0xaf,0x90,0x00,0x0a,0xc0,0x00,0x00,0x00, +0xab,0x01,0x00,0xf0,0x03,0x01,0x57,0x00,0x07,0xfb,0x00,0x0c,0xf4,0x00,0x8f,0x70, +0x08,0xf8,0x00,0x8f,0x80,0x05,0xfb,0x85,0x05,0x50,0x8f,0xe0,0x4f,0xd1,0x07,0x0f, +0x00,0x90,0x08,0xf7,0x00,0xaf,0x50,0x4f,0xe0,0x08,0xc2,0xf3,0x07,0xf2,0x19,0x01, +0xae,0xa0,0x01,0x94,0x0a,0xff,0xfc,0x27,0xf6,0x0f,0xd1,0x8f,0xff,0xf1,0x1a,0x50, +0x07,0xed,0x40,0x03,0xde,0x60,0x0e,0x85,0xf1,0x0e,0x52,0xf1,0x06,0xff,0x90,0x00, +0x11,0x00,0x00,0x2e,0xf4,0x00,0x00,0x0c,0x0c,0x91,0x00,0x00,0x48,0x30,0x00,0x00, +0x00,0x0e,0xfa,0x3b,0x0a,0x10,0xf0,0xc3,0x0d,0x00,0x74,0x05,0x30,0x0e,0xfd,0xfb, +0xfd,0x05,0x00,0x77,0x05,0xf1,0x00,0xaf,0xb0,0xef,0x60,0x00,0x0f,0xf6,0x0a,0xfc, +0x00,0x05,0xff,0x10,0x5f,0xf2,0x95,0x07,0x20,0x70,0x1f,0x75,0x08,0xf0,0x01,0x06, +0xff,0x20,0x00,0x5f,0xf2,0xcf,0xb0,0x00,0x00,0xef,0x80,0x00,0x00,0x07,0xfd,0x7d, +0x00,0x2f,0xfe,0x20,0x53,0x00,0x38,0x20,0xbf,0x80,0xa7,0x0f,0x8f,0x8f,0x70,0x00, +0x00,0x38,0x30,0x57,0x10,0x53,0x00,0x32,0x20,0x10,0x02,0xad,0x07,0xcf,0x84,0xf4, +0x00,0x00,0x6f,0x6d,0xfd,0x00,0x00,0x02,0x40,0x04,0x98,0x0c,0x31,0xa4,0x00,0x5f, +0x50,0x8e,0x30,0x00,0x06,0xf6,0x09,0xf3,0xd7,0x0d,0x0f,0xab,0x00,0x30,0x10,0x8c, +0x36,0x0e,0x20,0x3b,0x0d,0xed,0x17,0x20,0xb0,0xd1,0xcc,0x09,0x1f,0xc6,0xab,0x00, +0x32,0x11,0x00,0x13,0x00,0x10,0x10,0x98,0x00,0x30,0xfe,0xee,0xe1,0x36,0x10,0x20, +0xf7,0x00,0xe0,0x09,0x40,0xfb,0xcf,0x70,0x00,0x1b,0x04,0x40,0x3b,0xf8,0x00,0x00, +0xa5,0x00,0xe0,0xbf,0xff,0xff,0x70,0x00,0x2f,0xf3,0x0a,0xff,0xee,0xe6,0x00,0x0a, +0xff,0xa0,0x04,0x20,0x00,0x03,0xac,0x0c,0x00,0x93,0x01,0xf0,0x01,0xc0,0x00,0x8f, +0xb0,0x00,0x00,0x3f,0xf5,0x00,0x07,0xff,0xee,0xee,0x8b,0xfe,0x00,0x29,0x0f,0x1f, +0xf9,0x67,0x0d,0x26,0x20,0xff,0xe9,0x8e,0x00,0x10,0xa0,0x6b,0x0a,0x00,0x40,0x01, +0x22,0x6e,0x90,0x4c,0x02,0x10,0xaf,0x10,0x12,0x1f,0x70,0x4c,0x0d,0x1e,0x7f,0x00, +0x00,0xdf,0x70,0x00,0x07,0xf9,0x3c,0x00,0x23,0x00,0xab,0x0b,0x21,0xf6,0x7f,0xaf, +0x0f,0x0f,0x3c,0x00,0x1d,0x8f,0x0c,0xd0,0x1e,0xb0,0x0d,0xe0,0x1e,0xc0,0x3c,0x00, +0x21,0xdf,0x2f,0xf3,0x00,0x4f,0xd0,0x00,0x58,0x20,0x0d,0xf8,0x00,0xdf,0x80,0x05, +0x00,0x06,0x5f,0x08,0xfc,0x02,0xfd,0x10,0x25,0x00,0x0d,0x80,0x00,0x01,0xcf,0x90, +0x03,0xeb,0x4e,0xb0,0x87,0x00,0x21,0x0d,0xf8,0x29,0x12,0x0f,0x07,0x00,0x10,0x7f, +0x6f,0x40,0x9e,0x27,0xf5,0x0a,0xf2,0x35,0x00,0x1b,0x90,0x00,0xcf,0xff,0xea,0x30, +0x00,0x0c,0xff,0xff,0x98,0x0d,0xf0,0x1d,0x90,0x2a,0xff,0x20,0x0c,0xf9,0x00,0x0d, +0xf8,0x02,0xcf,0xa2,0x00,0x8f,0xd2,0xff,0xff,0xf5,0x07,0xfe,0x05,0xdf,0xb5,0x10, +0x7f,0xe0,0x0c,0xf9,0x00,0x09,0xfd,0x00,0xcf,0x90,0x00,0xef,0x90,0x0c,0xf9,0x01, +0xaf,0xf2,0x00,0xcf,0x76,0x11,0x70,0x0c,0xff,0xfe,0xb3,0x00,0x00,0x01,0x8e,0x04, +0xef,0xaf,0xa3,0xe8,0x00,0x02,0xf8,0xaf,0xf2,0x00,0x01,0x50,0x03,0x20,0x00,0x68, +0x0d,0x2a,0x20,0x1d,0xf6,0xc3,0x00,0x11,0x2e,0xf0,0x14,0x32,0x38,0x40,0x00,0x3c, +0x0d,0x02,0xcf,0x0c,0x51,0x9f,0xf5,0x14,0xef,0x90,0xe5,0x0c,0x11,0x03,0xf0,0x0c, +0x01,0x73,0x0d,0x11,0x54,0x7e,0x0d,0x01,0x11,0x0d,0xb2,0x30,0xff,0x70,0x00,0x6f, +0xf0,0x09,0xff,0x50,0x4e,0xf9,0xaa,0x0d,0x02,0xb5,0x0d,0x00,0x89,0x0a,0x10,0x10, +0x68,0x03,0x1f,0x30,0x53,0x00,0x38,0x84,0xbf,0xb0,0x00,0x00,0x02,0xdc,0x3c,0xd1, +0x2e,0x04,0x0f,0x53,0x00,0x30,0x20,0x10,0x01,0x8f,0x13,0x71,0x93,0xf5,0x00,0x00, +0x4f,0x6c,0xfe,0xd9,0x04,0x2f,0x10,0x00,0x77,0x0e,0x2f,0xaf,0x00,0x4f,0x70,0x6f, +0x40,0x00,0x04,0xf8,0x07,0xf5,0xab,0x00,0x36,0xe0,0x03,0x00,0x00,0x40,0x2f,0xc0, +0x05,0xf9,0x0c,0xfb,0x5f,0xf5,0x01,0xdf,0xb7,0x01,0x10,0xfc,0x59,0x04,0xf1,0x03, +0x90,0x2e,0xf8,0x3e,0xf7,0x1d,0x90,0x03,0xf6,0x01,0x00,0x00,0x10,0x00,0x07,0xdf, +0xe8,0xcb,0x5a,0x02,0xf0,0x1e,0x30,0x08,0xff,0x51,0x5f,0xfa,0x00,0xef,0x80,0x09, +0xff,0xf1,0x2f,0xf3,0x03,0xf5,0xff,0x43,0xff,0x20,0xcb,0x0f,0xf6,0x3f,0xf2,0x5f, +0x20,0xff,0x62,0xff,0x4e,0x80,0x1f,0xf4,0x0e,0xfe,0xe0,0x05,0xff,0x10,0x8f,0xf9, +0x03,0xef,0xa0,0xdc,0x0f,0x82,0xe1,0x00,0x3f,0x9d,0xfe,0x91,0x00,0x05,0x73,0x13, +0x20,0x3f,0xf2,0xc1,0x01,0x10,0xfb,0x0b,0x00,0x1f,0x68,0x14,0x0e,0x2a,0x00,0x70, +0x05,0x14,0xfb,0x34,0x07,0x1f,0x58,0x4b,0x00,0x2c,0x20,0x02,0xdf,0x39,0x08,0x22, 0x94,0xe9,0x52,0x01,0x0f,0x4b,0x00,0x2a,0x9f,0x8e,0x30,0xae,0x10,0x00,0x8f,0x30, -0xbe,0x10,0x4b,0x00,0x2f,0x30,0x00,0x0d,0xf7,0xf1,0x14,0x00,0x12,0x0a,0x3f,0x77, -0x00,0x00,0x4b,0x15,0x29,0x00,0xcb,0x0c,0x20,0x0f,0xf4,0x08,0x05,0x30,0xee,0xdb, -0x40,0x9b,0x09,0xf0,0x04,0x60,0xff,0x40,0x1a,0xfe,0x0f,0xf4,0x00,0x1f,0xf2,0xff, -0x40,0x01,0xff,0x3f,0xf4,0x01,0xaf,0xf0,0x08,0x1a,0x46,0x0f,0xfe,0xed,0xb4,0x2d, -0x00,0xf0,0x09,0x05,0xcf,0xe9,0x10,0x05,0xff,0xef,0xfa,0x00,0xcf,0x90,0x6f,0xf0, -0x0e,0xf5,0x04,0xff,0x00,0xff,0x50,0xbf,0x80,0x0f,0xf5,0x16,0x13,0xf1,0x0c,0x50, -0xdf,0xc0,0x0f,0xf5,0x03,0xef,0xc0,0xff,0x50,0x02,0xef,0x6f,0xf5,0x00,0x0c,0xf7, -0xff,0x5c,0xcd,0xff,0x3f,0xf5,0xdf,0xfc,0x40,0x03,0x84,0x00,0x10,0xfc,0x40,0x00, -0xf1,0x07,0x82,0x00,0x00,0x19,0xef,0xc5,0x00,0x0c,0xfe,0xdf,0xf4,0x03,0xff,0x10, -0xbf,0x90,0x00,0x00,0x19,0xfb,0x00,0x4c,0x4a,0x12,0xff,0x09,0x4a,0xfb,0x06,0xfd, -0x00,0xaf,0xb0,0x3f,0xfe,0xef,0xfb,0x00,0x5d,0xfb,0x7f,0xe0,0x00,0x00,0x8f,0xc0, -0x00,0x00,0x2f,0xd1,0x36,0x00,0x1c,0x63,0x2d,0xf8,0x00,0x00,0x3e,0xa3,0xf6,0x0a, -0x0f,0x36,0x00,0x15,0x8f,0x03,0xdf,0xff,0xf1,0x00,0x47,0x77,0x73,0x36,0x00,0x1b, -0x9f,0x06,0xf4,0x09,0xe1,0x00,0x7f,0x40,0xaf,0x20,0x36,0x00,0x1a,0xff,0x02,0x00, -0x09,0xc5,0x00,0x00,0x05,0xa0,0xe0,0x00,0x00,0x59,0x0e,0x00,0x00,0x00,0x9c,0x50, -0x75,0x00,0x1b,0x60,0x01,0x8d,0xfd,0x66,0xdf,0xe7,0x79,0x03,0x00,0x94,0x08,0xe2, -0x2d,0xd3,0x08,0xff,0x50,0x5f,0xe0,0x00,0x58,0x9b,0xff,0xaa,0xaf,0xf0,0x15,0x00, -0x50,0xf1,0x5f,0xf3,0x05,0xff,0x0a,0x17,0x71,0xe0,0x07,0xff,0x80,0x03,0x30,0x2f, -0x15,0x00,0x50,0xa0,0x04,0xcf,0xe9,0x16,0x5d,0x1d,0x0f,0x02,0x16,0x05,0x31,0xf3, -0x07,0xfd,0x02,0x16,0xe2,0x8f,0xfd,0x60,0x00,0x09,0xfa,0x00,0x00,0x03,0xdf,0x30, -0x00,0x07,0xe8,0xc5,0x1b,0x01,0x9e,0x03,0x91,0x05,0x81,0x00,0x00,0x06,0xdf,0xd7, -0x00,0x08,0xb3,0x08,0x80,0x50,0x4f,0xf0,0x5f,0xf9,0x99,0xff,0x26,0x5b,0x17,0x20, -0x5f,0xf0,0xb2,0x08,0x40,0x90,0x08,0x50,0x08,0x47,0x11,0x42,0x06,0xdf,0xea,0x10, -0xf3,0x1e,0x2f,0x3f,0xd0,0x36,0x00,0x1c,0x63,0x2d,0xf7,0x00,0x00,0x4e,0x94,0xbc, -0x01,0x0f,0x36,0x00,0x15,0x9f,0x07,0xf3,0x0a,0xe1,0x00,0x8f,0x40,0xbf,0x10,0x36, -0x00,0x1a,0xdd,0x4f,0xf2,0x00,0x6f,0xb0,0x00,0x68,0x10,0x0f,0xf5,0x00,0xff,0x50, -0x05,0x00,0x4f,0x0a,0xfa,0x04,0xfc,0x1d,0x00,0x06,0x81,0x00,0x03,0xef,0x70,0x05, -0xe8,0x4e,0x90,0xe8,0x0e,0x11,0xf5,0x26,0x08,0x0f,0x07,0x00,0x05,0x7f,0x8e,0x20, -0xbd,0x09,0xf3,0x0c,0xe1,0x2a,0x00,0x10,0xf0,0x22,0x00,0xaa,0x40,0x11,0x00,0x0f, -0xff,0xbe,0x70,0x00,0x19,0xff,0xd0,0x00,0x01,0xeb,0xff,0x80,0x00,0x03,0x06,0xff, -0x10,0x09,0xef,0xbf,0xf5,0x09,0xff,0xde,0xff,0x81,0xff,0x60,0x0b,0xfa,0x4f,0xf0, -0x00,0xaf,0x94,0xff,0x00,0x0c,0xf7,0x1f,0xf7,0x04,0xff,0x44,0x22,0x11,0x80,0x76, -0x17,0x82,0x01,0xcf,0xff,0xf4,0x00,0x37,0x77,0x74,0xac,0x0c,0x43,0xff,0x4d,0xfc, -0x20,0x0b,0x18,0x20,0x6f,0xf0,0xf2,0x15,0x1d,0x12,0x04,0x16,0x01,0x09,0x00,0x20, -0x01,0xdf,0xea,0x17,0x10,0xee,0xbb,0x0a,0x10,0x83,0xfd,0x1a,0xf0,0x05,0xd7,0x00, -0x09,0xff,0xff,0xf9,0x02,0xff,0x60,0x5f,0xf2,0x6f,0xe0,0x00,0xdf,0x67,0xfc,0x00, -0x0c,0xf8,0x09,0x00,0x90,0x72,0xff,0x50,0x5f,0xf3,0x09,0xff,0xff,0xfa,0xf1,0x05, -0x00,0x25,0x0a,0x9f,0xe1,0x00,0x00,0x0e,0xf2,0x00,0x00,0x03,0x84,0x36,0x00,0x18, -0x73,0x0b,0xfb,0x00,0x00,0x2d,0xc3,0xcc,0x0e,0x23,0x0f,0x36,0x00,0x14,0x01,0xd8, -0x00,0x13,0x27,0xd8,0x00,0x0f,0x36,0x00,0x16,0x9f,0x04,0xf7,0x06,0xf4,0x00,0x4f, -0x70,0x7f,0x40,0x36,0x00,0x1a,0x31,0x00,0x07,0xf7,0x52,0x0b,0xb0,0x00,0x00,0x01, -0x62,0x00,0x07,0xee,0xee,0xee,0xe7,0x8f,0x29,0x1c,0x02,0x34,0x0f,0x13,0x61,0x1b, -0x00,0x21,0x07,0xf7,0x10,0x00,0x62,0xb8,0x00,0x07,0xdf,0xdf,0x20,0x56,0x00,0xf3, -0x04,0x62,0xff,0xf2,0x6f,0xe0,0x9a,0xdf,0x67,0xfc,0x1f,0x3c,0xf8,0x6f,0xe8,0xb0, -0xdf,0x72,0xff,0xf3,0x56,0x00,0x60,0x0f,0xdf,0xe8,0x00,0x07,0xd0,0x3f,0x00,0x60, -0xef,0x50,0x00,0x00,0x02,0xfe,0x3d,0x0f,0x3e,0x83,0x00,0x03,0x85,0x18,0x04,0x96, -0x01,0x60,0x21,0xff,0x40,0x6f,0xf2,0x0d,0xc4,0x22,0x20,0x2c,0xfd,0xc5,0x1a,0x50, -0x6f,0xd1,0x00,0x00,0x1e,0x69,0x01,0x0f,0x36,0x00,0x19,0x71,0x1b,0xfa,0x00,0x00, -0x2c,0xb2,0xbb,0x69,0x01,0x0f,0x36,0x00,0x16,0x9f,0x04,0xf6,0x07,0xf3,0x00,0x5f, -0x70,0x8f,0x40,0x36,0x00,0x1a,0x03,0xfa,0x1a,0xf0,0x03,0xa0,0x00,0x00,0x07,0x80, -0x00,0x0c,0xf9,0x00,0x8f,0xd0,0x7f,0xe0,0x0d,0xf7,0x01,0xff,0x21,0x7b,0x1a,0x60, -0x6f,0xc0,0x00,0x6f,0xba,0xf7,0xc8,0x0c,0x40,0x20,0x00,0x0b,0xff,0x64,0x04,0x12, -0xf6,0x88,0x14,0x00,0x96,0x0c,0x10,0x01,0x16,0x0d,0x20,0x1e,0xe7,0x0d,0x07,0x01, -0xad,0x1b,0x13,0x20,0x09,0x00,0x00,0xc6,0x1a,0xe0,0x1f,0xff,0xff,0xfc,0x01,0xff, -0x60,0x5f,0xf3,0x1f,0xf2,0x00,0xef,0x61,0x4b,0x00,0x01,0x09,0x00,0x00,0xd8,0x1a, -0x42,0x1f,0xff,0xff,0xfb,0x24,0x00,0x08,0x36,0x00,0x91,0x00,0x0a,0xe1,0x0d,0xc0, -0x00,0xbf,0x10,0xed,0x9c,0x01,0x0f,0x88,0x00,0x24,0x40,0x00,0x01,0x11,0x11,0x18, -0x07,0x00,0x61,0x17,0x3f,0x14,0x44,0x44,0x1d,0x0e,0x31,0x10,0x06,0xa5,0x10,0x4f, -0x25,0x55,0x55,0x00,0x1d,0x06,0x1b,0xe0,0x02,0x00,0x12,0x00,0x00,0x02,0xf9,0x1b, -0xf0,0x00,0x00,0x08,0xff,0xf6,0x9a,0x00,0x1f,0x31,0x53,0x0e,0x31,0x60,0x04,0xf7, -0x2c,0xe0,0x00,0x0a,0x3b,0x00,0x2f,0x02,0x31,0x83,0x07,0x19,0x0d,0x78,0x00,0x10, -0x8f,0x78,0x00,0x10,0xd1,0x78,0x00,0x20,0xf7,0x0b,0x78,0x00,0x31,0x20,0x5f,0xc0, -0x81,0x12,0x04,0x78,0x00,0xb2,0x30,0x00,0x6f,0xd0,0x6f,0xe0,0x00,0x02,0xff,0x2c, -0xfa,0xcb,0x0e,0x21,0x00,0x06,0x98,0x0a,0x21,0xcf,0x80,0x54,0x12,0xf0,0x19,0x10, -0x02,0xae,0xfc,0x50,0x01,0xef,0xec,0xff,0x40,0x16,0x60,0x1a,0xf9,0x00,0x3b,0xff, -0xff,0xb0,0x1e,0xf9,0x4a,0xfb,0x05,0xfd,0x00,0x8f,0xb0,0x6f,0xe0,0x0c,0xfb,0x02, -0xff,0xee,0xff,0xc0,0x04,0xdf,0xb8,0x5d,0x0e,0x10,0xdb,0xad,0x16,0x22,0xc5,0x00, -0x77,0x1d,0x20,0x02,0x88,0xde,0x01,0x10,0xf6,0xd7,0x06,0x13,0x80,0xe7,0x0a,0x0f, -0x4c,0x23,0x28,0x01,0x54,0x00,0x10,0x04,0x4a,0x19,0x2f,0x81,0x00,0x14,0x1d,0x13, -0x10,0x48,0x38,0x09,0x00,0x73,0x0b,0x4f,0x4f,0xa1,0xdd,0x10,0x80,0x00,0x2f,0x52, -0x3e,0xf6,0x00,0x05,0xf8,0x43,0x06,0x0f,0x94,0x1d,0x14,0x01,0xf2,0x0f,0x10,0x60, -0x31,0x17,0x1f,0x40,0x00,0x01,0x30,0x62,0x0b,0xe2,0x00,0x00,0x0d,0xf3,0xce,0x14, -0x0f,0x80,0x00,0x11,0xc0,0x24,0x10,0x24,0x10,0x00,0x1d,0xe6,0xfb,0x00,0x00,0x02, -0xef,0x3f,0x0f,0x1c,0x13,0x80,0x00,0x61,0xf9,0x0f,0xf6,0x00,0x07,0xfe,0xcc,0x0b, -0x0a,0x80,0x00,0x14,0x21,0x80,0x00,0x26,0x4e,0xf8,0x80,0x00,0x8f,0x05,0xf8,0x3f, -0xa0,0x00,0x3e,0xf8,0x00,0x00,0x01,0x15,0x20,0x7f,0x74,0x83,0x20,0x00,0x42,0x0a, -0x10,0x67,0x49,0x14,0x31,0xfd,0x91,0x00,0xe1,0x24,0x01,0xea,0x24,0x01,0xf3,0x24, -0x01,0xfc,0x24,0x01,0x05,0x25,0x23,0x0a,0xfb,0x17,0x25,0x21,0x2f,0xf5,0x29,0x25, -0x01,0x32,0x25,0x31,0xff,0xe9,0x20,0x1c,0x07,0x20,0x2a,0xf0,0x6e,0x1c,0x10,0xdc, -0x0b,0x00,0x20,0x3c,0x30,0xdb,0x1e,0x20,0x00,0x0b,0xbc,0x02,0x10,0x02,0xdd,0x1e, -0x10,0x00,0xde,0x1e,0x30,0x20,0x07,0xfc,0x72,0x1c,0x00,0xe0,0x1e,0x20,0x20,0x02, -0xe1,0x1e,0x11,0x00,0xe2,0x1e,0x11,0x00,0xe3,0x1e,0x0f,0x4d,0x0f,0x30,0x70,0x00, -0x23,0xff,0x40,0x00,0x01,0xff,0xda,0x03,0x31,0x56,0xff,0x61,0x09,0x1d,0x01,0x82, -0x00,0x51,0x2f,0xf5,0x07,0xff,0x20,0x81,0x00,0x00,0x2f,0x1d,0x11,0x20,0x80,0x00, -0x20,0x2f,0xf3,0xcf,0x03,0x00,0x7f,0x00,0xff,0x02,0x01,0xaf,0xd6,0xff,0x20,0x01, -0x11,0x11,0x10,0x0b,0xff,0xff,0xa0,0x03,0x44,0x44,0x30,0xbd,0x10,0x1d,0x0a,0x8d, -0x04,0x0f,0x24,0x09,0x15,0xd0,0x01,0x20,0x02,0x10,0x09,0xf3,0x4f,0x80,0x02,0xdf, -0xfd,0x10,0x00,0xf7,0x0f,0x0f,0x76,0x00,0x1c,0x60,0x05,0xf7,0x2d,0xd0,0x00,0x0b, -0x35,0x2c,0x2f,0x02,0x30,0x06,0x0a,0x18,0x10,0x1d,0x7b,0x21,0x11,0xf0,0x68,0x1a, -0x0f,0x1d,0x12,0x1e,0x20,0x0a,0xe3,0x6c,0x04,0x10,0x40,0x39,0x1a,0x0f,0x72,0x00, -0x17,0x0d,0x66,0x00,0x00,0x5e,0x00,0x0e,0xf0,0x26,0x06,0x66,0x00,0xbf,0x01,0xea, -0x00,0x00,0x06,0xfa,0x40,0x00,0x01,0xdf,0x70,0xf8,0x20,0x09,0x50,0xfa,0x11,0x96, -0x00,0x7f,0xa6,0x2a,0x60,0x4b,0xff,0xa1,0x00,0x00,0x1f,0xc6,0x04,0x30,0xfc,0x60, -0x00,0x93,0x1e,0x7f,0x0a,0xf5,0x6f,0xa0,0x00,0xaf,0xfa,0x01,0x13,0x22,0x72,0x04, -0xf9,0x2e,0xb1,0x00,0x02,0xef,0x3c,0x04,0x0f,0x92,0x0b,0x18,0x20,0x38,0x20,0x92, -0x03,0x00,0xfd,0x15,0x33,0x3f,0xb1,0xcd,0xc3,0x04,0x0f,0xbe,0x27,0x2f,0x03,0x70, -0x0d,0x03,0x57,0x18,0x40,0x0a,0xfe,0x7d,0xf4,0x89,0x14,0xd1,0x42,0xff,0x60,0x4f, -0xf4,0x5f,0xe0,0x00,0xff,0x46,0xfd,0x00,0x0f,0x09,0x00,0x01,0x12,0x00,0x00,0x1b, -0x00,0xff,0x04,0x40,0x09,0xfe,0x7f,0xf3,0x01,0x50,0x06,0xff,0x10,0xbf,0xfe,0xff, -0x90,0x01,0xae,0xfd,0x70,0x00,0xf5,0x06,0x04,0x0f,0x9c,0x00,0x2e,0x00,0xa6,0x10, -0x83,0x00,0x2e,0xff,0xfb,0x00,0x00,0x03,0x32,0xf0,0x00,0x0f,0x59,0x22,0x21,0x00, -0x71,0x00,0x01,0x40,0x1d,0x01,0xff,0x09,0x3f,0x7f,0x50,0x00,0x3c,0x01,0x36,0x20, -0x08,0xf3,0x69,0x12,0x12,0x50,0xae,0x02,0x0f,0x3c,0x01,0x24,0x0f,0x26,0x01,0x30, -0x20,0x18,0x40,0x1d,0x05,0x11,0xf7,0x26,0x2b,0x10,0x30,0xea,0x0d,0x01,0x2c,0x1a, -0x10,0x83,0x0f,0x00,0x13,0x70,0xa5,0x00,0x15,0x9f,0x26,0x2c,0x0f,0x45,0x01,0x26, -0x72,0x09,0xfc,0x10,0x00,0x01,0xcd,0x4b,0xf6,0x1f,0x0f,0xf6,0x29,0x2a,0xc3,0x00, -0x06,0x70,0x00,0x00,0x1b,0xed,0xc1,0x00,0x05,0x71,0x07,0x44,0x12,0x0f,0xfb,0x23, -0x22,0x20,0x0d,0xf7,0x39,0x09,0x71,0x1d,0xf8,0x11,0x11,0xff,0x70,0xcf,0x8a,0x1b, -0x62,0x3e,0xfa,0x44,0x44,0xff,0x91,0x18,0x00,0x00,0xe9,0x0a,0x05,0x06,0x00,0x02, -0x12,0x00,0x0f,0x06,0x00,0x04,0x60,0x02,0xff,0x62,0x00,0x00,0x6f,0x2d,0x27,0x30, -0x25,0xff,0x85,0xdc,0x00,0x50,0x7c,0xfd,0x40,0x00,0xff,0xf1,0x1c,0x9f,0xff,0x90, -0x2f,0xf3,0x00,0xff,0x50,0x0e,0xf5,0x05,0x00,0x07,0xcf,0x00,0x02,0x01,0xdf,0x75, -0xf3,0x7e,0x6d,0xfc,0x03,0x30,0x04,0xd6,0x15,0x14,0x00,0x07,0x00,0x7f,0x4e,0xff, -0xfe,0x05,0x77,0x77,0x20,0x5a,0x0e,0x0f,0x00,0xdb,0x0a,0x40,0x05,0xff,0xff,0xf0, -0xd7,0x0a,0x0f,0x38,0x16,0x17,0x33,0x7f,0xff,0xfe,0x2f,0x06,0x2f,0xff,0x50,0x03, -0x00,0x05,0x70,0x02,0x00,0x12,0x03,0xf8,0x2c,0xe0,0x19,0x0a,0x2f,0x02,0x31,0xbb, -0x00,0x18,0x8f,0x6f,0x62,0xdc,0x0c,0xff,0xe4,0x00,0x23,0x5c,0x00,0x09,0x2f,0x0d, -0xf8,0x02,0x00,0x01,0x8f,0x0f,0xf8,0x7f,0x40,0xcf,0x80,0x5e,0xe2,0xb4,0x25,0x05, -0xcc,0x9e,0x20,0xee,0x70,0x7f,0xd0,0x9f,0x4b,0xf5,0x02,0x0d,0xf8,0x1b,0x2c,0x46, -0x80,0xff,0x5f,0xf5,0x03,0x00,0x30,0x50,0xdf,0x80,0xdc,0x27,0x0f,0x06,0x00,0x19, -0xff,0x17,0x88,0x30,0x0c,0xf9,0xdf,0x80,0xdf,0x90,0x1f,0xf6,0xdf,0x80,0x6f,0xfd, -0xff,0xd0,0xdf,0x80,0x06,0xcf,0xea,0x10,0x0c,0xe2,0x0a,0xf4,0x1f,0xf4,0x0d,0xf8, -0x04,0x50,0x02,0x60,0x0f,0xf4,0x0c,0xf8,0x04,0x00,0x0d,0x01,0x3d,0x28,0x10,0x07, -0xf2,0x23,0x23,0xfd,0x50,0x14,0x03,0x34,0xce,0x4b,0xe3,0x82,0x1d,0x1f,0xff,0x05, -0x00,0x11,0x00,0xc3,0x2c,0x10,0x00,0xc4,0x2c,0x10,0x00,0xc5,0x2c,0x10,0x00,0xc6, -0x2c,0x93,0x00,0x03,0xef,0x60,0x05,0xf9,0x5f,0x80,0x00,0x23,0x14,0x2f,0xdf,0x70, -0x07,0x00,0x04,0x30,0xf6,0x00,0x00,0x90,0x17,0x6f,0xf1,0x00,0x9f,0xc4,0x00,0x00, -0xfc,0x2c,0x29,0x30,0x00,0x0b,0xe0,0x6c,0x00,0x10,0xc0,0xa4,0x0b,0x13,0x60,0x22, -0x05,0x0f,0x0d,0x27,0x23,0x30,0x00,0x03,0x82,0x57,0x05,0x40,0x30,0x00,0x00,0x0a, -0x53,0x00,0xf0,0x06,0x97,0x00,0x00,0xff,0x40,0x2f,0xfb,0x0f,0xf4,0x0b,0xff,0x10, -0xff,0x45,0xff,0x60,0x0f,0xf7,0xdf,0xc0,0x00,0xe8,0x00,0x10,0x0f,0xe0,0x1a,0xd1, -0xff,0x47,0xff,0x50,0x0f,0xf4,0x0c,0xff,0x20,0xff,0x40,0x2f,0xfc,0xef,0x15,0x21, -0x3f,0xd0,0xed,0x15,0x1f,0x00,0x8d,0x2d,0x1d,0x71,0x00,0x48,0x60,0x01,0xff,0x30, -0x0a,0x66,0x1d,0x0e,0xf6,0x32,0x0e,0x03,0x00,0x0f,0x60,0x00,0x1e,0xd0,0x08,0x40, -0x00,0x00,0x2f,0x70,0x00,0x00,0x5f,0x40,0x00,0x00,0x5a,0x64,0x00,0x0f,0x02,0x00, -0x03,0xf0,0x03,0x05,0x70,0x0b,0xe0,0x0e,0xa0,0x1b,0x30,0xff,0x50,0x9f,0x10,0xff, -0x50,0xaf,0x00,0xff,0x50,0xbc,0x2c,0x1f,0x31,0x60,0x00,0x0e,0xd1,0x0f,0xf4,0x8f, -0x10,0xff,0x4a,0xf0,0x0f,0xf4,0xe8,0x00,0xff,0x41,0x9e,0x15,0x2f,0xff,0x40,0x07, -0x00,0x03,0x0d,0x42,0x00,0xaf,0x52,0xea,0x00,0xff,0x54,0xfd,0x00,0xff,0x50,0x21, -0x5a,0x00,0x04,0x0a,0x45,0x00,0x9d,0x12,0x00,0xff,0x4d,0xf3,0x0f,0xf4,0xbe,0x20, -0x5a,0x00,0x11,0x0b,0x6a,0x1c,0x27,0xa0,0x00,0x09,0x00,0x9d,0xfc,0xa3,0x00,0x05, -0xef,0xfb,0x20,0x00,0xbe,0x1b,0x00,0x00,0xe8,0x0a,0xa2,0x90,0xbf,0xff,0xff,0xf9, -0x0b,0xf8,0x00,0xbf,0x80,0x05,0x00,0x74,0xf9,0x31,0xdf,0xf9,0xcf,0xf9,0x01,0x0f, -0x00,0x11,0xf8,0x4f,0x1e,0x20,0x3f,0xf3,0xc4,0x09,0x00,0x35,0x11,0x2f,0x85,0x00, -0x6b,0x1a,0x2b,0x08,0xad,0x12,0x0f,0x19,0x13,0x16,0x0f,0x72,0x00,0x2a,0x20,0x01, -0x84,0x0c,0x03,0x10,0xf7,0xa9,0x03,0x10,0xf3,0x05,0x00,0x3f,0xa0,0x00,0x00,0x9a, -0x29,0x17,0x10,0x28,0xb4,0x0a,0x10,0xf4,0x6e,0x07,0x00,0x4b,0x1e,0x70,0x70,0x00, -0x00,0x01,0xde,0x2a,0xf5,0x06,0x37,0x0f,0x0c,0x01,0x30,0x8f,0x02,0xdc,0x1c,0xd2, -0x00,0x01,0xcf,0xb1,0x25,0x14,0x1b,0x20,0x4f,0x50,0x9b,0x03,0x00,0x66,0x06,0x15, -0x89,0x38,0x00,0x01,0xcc,0x00,0x01,0x39,0x00,0x01,0xcd,0x00,0x10,0x02,0x28,0x00, -0x0f,0x05,0x00,0x01,0x0d,0xae,0x00,0xf0,0x02,0x50,0x1f,0xf4,0xff,0xaf,0xd0,0x1f, -0xf4,0xff,0x5c,0xf7,0x1f,0xf4,0xff,0x53,0xff,0x2f,0xae,0x00,0x5b,0xaf,0xf4,0xff, -0x50,0x1f,0xae,0x00,0x21,0x6f,0xf3,0xb8,0x08,0x30,0x00,0x00,0x0d,0x27,0x27,0xe1, -0x0d,0xfb,0x20,0x2f,0xf3,0xcf,0xc2,0x02,0xff,0xef,0xff,0xc0,0x2f,0xf5,0xd6,0x36, -0xb9,0x1f,0xf2,0x2f,0xf1,0x01,0xff,0x32,0xff,0x10,0x1f,0xf3,0x09,0x00,0x12,0x20, -0x9f,0x2d,0x20,0xcf,0xfc,0x1a,0x2e,0x12,0x20,0xd5,0x11,0x20,0x02,0xff,0x0c,0x19, -0x3f,0x04,0x44,0x44,0x19,0x1b,0x31,0x01,0x4d,0x00,0x3f,0x05,0x55,0x55,0xc9,0x14, -0x1a,0x00,0x41,0x22,0x70,0x12,0x00,0x00,0x00,0xfa,0x1a,0xf1,0xbf,0x25,0x14,0xf7, -0xe0,0x0a,0x0f,0xfa,0x1b,0x2e,0x82,0x01,0xfa,0x2a,0xf1,0x00,0x08,0xff,0xf8,0x50, -0x00,0x0f,0xc3,0x15,0x17,0x20,0xbf,0x3b,0x45,0x28,0x7f,0x76,0xf6,0x00,0x00,0x05, +0xbe,0x10,0x4b,0x00,0x2f,0x30,0x00,0x0d,0xf7,0xd8,0x0d,0x7f,0x90,0x00,0x00,0x00, +0x77,0x00,0x00,0x32,0x0e,0x29,0x00,0x0c,0x0f,0x20,0x0f,0xf4,0x08,0x05,0x30,0xee, +0xdb,0x40,0x33,0x10,0xf0,0x04,0x60,0xff,0x40,0x1a,0xfe,0x0f,0xf4,0x00,0x1f,0xf2, +0xff,0x40,0x01,0xff,0x3f,0xf4,0x01,0xaf,0xf0,0xef,0x12,0x46,0x0f,0xfe,0xed,0xb4, +0x2d,0x00,0xf0,0x09,0x05,0xcf,0xe9,0x10,0x05,0xff,0xef,0xfa,0x00,0xcf,0x90,0x6f, +0xf0,0x0e,0xf5,0x04,0xff,0x00,0xff,0x50,0xbf,0x80,0x0f,0xf5,0xfd,0x0b,0xf1,0x0c, +0x50,0xdf,0xc0,0x0f,0xf5,0x03,0xef,0xc0,0xff,0x50,0x02,0xef,0x6f,0xf5,0x00,0x0c, +0xf7,0xff,0x5c,0xcd,0xff,0x3f,0xf5,0xdf,0xfc,0x40,0x03,0x84,0x00,0x10,0xfc,0x40, +0x00,0xf1,0x07,0x82,0x00,0x00,0x19,0xef,0xc5,0x00,0x0c,0xfe,0xdf,0xf4,0x03,0xff, +0x10,0xbf,0x90,0x00,0x00,0x19,0xfb,0x00,0x4c,0x31,0x0b,0xff,0x09,0x4a,0xfb,0x06, +0xfd,0x00,0xaf,0xb0,0x3f,0xfe,0xef,0xfb,0x00,0x5d,0xfb,0x7f,0xe0,0x00,0x00,0x8f, +0xc0,0x00,0x00,0x2f,0xd1,0x36,0x00,0x1c,0x72,0x2d,0xf8,0x00,0x00,0x3e,0xa3,0xea, +0xb8,0x01,0x0f,0x36,0x00,0x15,0x8f,0x03,0xdf,0xff,0xf1,0x00,0x47,0x77,0x73,0x36, +0x00,0x1b,0x9f,0x06,0xf4,0x09,0xe1,0x00,0x7f,0x40,0xaf,0x20,0x36,0x00,0x1a,0xff, +0x02,0x00,0x09,0xc5,0x00,0x00,0x05,0xa0,0xe0,0x00,0x00,0x59,0x0e,0x00,0x00,0x00, +0x9c,0x50,0x75,0x00,0x1b,0x60,0x01,0x8d,0xfd,0x66,0xdf,0xe7,0x79,0x03,0x00,0x94, +0x08,0xe2,0x2d,0xd3,0x08,0xff,0x50,0x5f,0xe0,0x00,0x58,0x9b,0xff,0xaa,0xaf,0xf0, +0x15,0x00,0x50,0xf1,0x5f,0xf3,0x05,0xff,0xf1,0x0f,0x71,0xe0,0x07,0xff,0x80,0x03, +0x30,0x2f,0x15,0x00,0x50,0xa0,0x04,0xcf,0xe9,0x16,0x44,0x16,0x0f,0xe9,0x0e,0x05, +0x31,0xf3,0x07,0xfd,0xe9,0x0e,0xe2,0x8f,0xfd,0x60,0x00,0x09,0xfa,0x00,0x00,0x03, +0xdf,0x30,0x00,0x07,0xe8,0xac,0x14,0x01,0x9e,0x03,0x91,0x05,0x81,0x00,0x00,0x06, +0xdf,0xd7,0x00,0x08,0xb3,0x08,0x80,0x50,0x4f,0xf0,0x5f,0xf9,0x99,0xff,0x26,0x42, +0x10,0x20,0x5f,0xf0,0xb2,0x08,0x40,0x90,0x08,0x50,0x08,0x17,0x14,0x42,0x06,0xdf, +0xea,0x10,0xda,0x17,0x2f,0x3f,0xd0,0x36,0x00,0x1c,0x63,0x2d,0xf7,0x00,0x00,0x4e, +0x94,0xbc,0x01,0x0f,0x36,0x00,0x15,0x9f,0x07,0xf3,0x0a,0xe1,0x00,0x8f,0x40,0xbf, +0x10,0x36,0x00,0x1a,0xdd,0x4f,0xf2,0x00,0x6f,0xb0,0x00,0x68,0x10,0x0f,0xf5,0x00, +0xff,0x50,0x05,0x00,0x4f,0x0a,0xfa,0x04,0xfc,0x1d,0x00,0x06,0x70,0x00,0x03,0xef, +0x70,0x05,0xe8,0x4e,0x85,0x03,0x01,0xc3,0x13,0x2f,0xff,0x50,0x07,0x00,0x06,0x7f, +0x8e,0x20,0xbd,0x09,0xf3,0x0c,0xe1,0x2a,0x00,0x10,0xf0,0x22,0x00,0xaa,0x40,0x11, +0x00,0x0f,0xff,0xbe,0x70,0x00,0x19,0xff,0xd0,0x00,0x01,0xeb,0xff,0x80,0x00,0x03, +0x06,0xff,0x10,0x09,0xef,0xbf,0xf5,0x09,0xff,0xde,0xff,0x81,0xff,0x60,0x0b,0xfa, +0x4f,0xf0,0x00,0xaf,0x94,0xff,0x00,0x0c,0xf7,0x1f,0xf7,0x04,0xff,0x2b,0x1b,0x11, +0x80,0x5d,0x10,0x70,0x01,0xcf,0xff,0xf4,0x00,0x37,0x77,0xa8,0x1c,0x00,0x1d,0x0a, +0x33,0x4d,0xfc,0x20,0xf2,0x10,0x20,0x6f,0xf0,0xd9,0x0e,0x1d,0x12,0xeb,0x0e,0x01, +0x09,0x00,0x20,0x01,0xdf,0xd1,0x10,0x10,0xee,0xbb,0x0a,0x10,0x83,0xe4,0x13,0xf0, +0x05,0xd7,0x00,0x09,0xff,0xff,0xf9,0x02,0xff,0x60,0x5f,0xf2,0x6f,0xe0,0x00,0xdf, +0x67,0xfc,0x00,0x0c,0xf8,0x09,0x00,0x90,0x72,0xff,0x50,0x5f,0xf3,0x09,0xff,0xff, +0xfa,0xf1,0x05,0x00,0x25,0x0a,0x9f,0xe1,0x00,0x00,0x0e,0xf2,0x00,0x00,0x03,0x84, +0x36,0x00,0x18,0x73,0x0b,0xfb,0x00,0x00,0x2d,0xc3,0xcc,0xf5,0x1b,0x0f,0x36,0x00, +0x14,0x01,0xd8,0x00,0x13,0x27,0xd8,0x00,0x0f,0x36,0x00,0x16,0x9f,0x04,0xf7,0x06, +0xf4,0x00,0x4f,0x70,0x7f,0x40,0x36,0x00,0x1a,0x31,0x00,0x07,0xf7,0x52,0x0b,0xc0, +0x00,0x00,0x01,0x62,0x00,0x07,0xee,0xee,0xee,0xe7,0x8f,0xff,0x60,0x01,0x01,0xae, +0x0d,0x13,0x61,0x1b,0x00,0x21,0x07,0xf7,0x10,0x00,0x62,0xb8,0x00,0x07,0xdf,0xdf, +0x20,0x56,0x00,0xf3,0x04,0x62,0xff,0xf2,0x6f,0xe0,0x9a,0xdf,0x67,0xfc,0x1f,0x3c, +0xf8,0x6f,0xe8,0xb0,0xdf,0x72,0xff,0xf3,0x56,0x00,0x60,0x0f,0xdf,0xe8,0x00,0x07, +0xd0,0x3f,0x00,0x60,0xef,0x50,0x00,0x00,0x02,0xfe,0x48,0x1a,0x3e,0x83,0x00,0x03, +0x6c,0x11,0x04,0x96,0x01,0x60,0x21,0xff,0x40,0x6f,0xf2,0x0d,0xab,0x1b,0x20,0x2c, +0xfd,0xac,0x13,0x50,0x6f,0xd1,0x00,0x00,0x1e,0x69,0x01,0x0f,0x36,0x00,0x19,0x71, +0x1b,0xfa,0x00,0x00,0x2c,0xb2,0xbb,0x69,0x01,0x0f,0x36,0x00,0x16,0x9f,0x04,0xf6, +0x07,0xf3,0x00,0x5f,0x70,0x8f,0x40,0x36,0x00,0x1a,0x03,0xe1,0x13,0xf0,0x03,0xa0, +0x00,0x00,0x07,0x80,0x00,0x0c,0xf9,0x00,0x8f,0xd0,0x7f,0xe0,0x0d,0xf7,0x01,0xff, +0x21,0x62,0x13,0x60,0x6f,0xc0,0x00,0x6f,0xba,0xf7,0xc8,0x0c,0x40,0x20,0x00,0x0b, +0xff,0x64,0x04,0x10,0xf6,0x82,0x03,0x20,0x10,0x00,0x96,0x0c,0x10,0x01,0x16,0x0d, +0x20,0x1e,0xe7,0x0d,0x07,0x01,0x94,0x14,0x13,0x20,0x09,0x00,0x00,0xad,0x13,0xe0, +0x1f,0xff,0xff,0xfc,0x01,0xff,0x60,0x5f,0xf3,0x1f,0xf2,0x00,0xef,0x61,0x4b,0x00, +0x01,0x09,0x00,0x00,0xbf,0x13,0x42,0x1f,0xff,0xff,0xfb,0x24,0x00,0x08,0x36,0x00, +0x91,0x00,0x0a,0xe1,0x0d,0xc0,0x00,0xbf,0x10,0xed,0x9c,0x01,0x0f,0x88,0x00,0x24, +0x40,0x00,0x01,0x11,0x11,0x18,0x07,0x00,0x48,0x10,0x3f,0x14,0x44,0x44,0x1d,0x0e, +0x31,0x10,0x06,0x8d,0x15,0x4f,0x25,0x55,0x55,0x00,0x1d,0x06,0x1b,0xe0,0x02,0x00, +0x12,0x00,0x00,0x02,0xf9,0x1b,0xf0,0x00,0x00,0x08,0xff,0xf6,0x9a,0x00,0x1f,0x31, +0x53,0x0e,0x31,0x60,0x04,0xf7,0x2c,0xe0,0x00,0x0a,0x3b,0x00,0x2f,0x02,0x31,0x83, +0x07,0x19,0x0d,0x78,0x00,0x10,0x8f,0x78,0x00,0x10,0xd1,0x78,0x00,0x20,0xf7,0x0b, +0x78,0x00,0x31,0x20,0x5f,0xc0,0x4c,0x16,0x04,0x78,0x00,0xb2,0x30,0x00,0x6f,0xd0, +0x6f,0xe0,0x00,0x02,0xff,0x2c,0xfa,0xcb,0x0e,0x21,0x00,0x06,0x98,0x0a,0x20,0xcf, +0x80,0x0b,0x00,0xf0,0x1a,0xee,0x10,0x02,0xae,0xfc,0x50,0x01,0xef,0xec,0xff,0x40, +0x16,0x60,0x1a,0xf9,0x00,0x3b,0xff,0xff,0xb0,0x1e,0xf9,0x4a,0xfb,0x05,0xfd,0x00, +0x8f,0xb0,0x6f,0xe0,0x0c,0xfb,0x02,0xff,0xee,0xff,0xc0,0x04,0xdf,0xb8,0x5d,0x0e, +0x10,0xdb,0xfd,0x12,0x22,0xc5,0x00,0x5e,0x16,0x20,0x02,0x88,0xde,0x01,0x10,0xf6, +0xd7,0x06,0x13,0x80,0xe7,0x0a,0x0f,0x33,0x1c,0x28,0x01,0x54,0x00,0x10,0x04,0x31, +0x12,0x2f,0x81,0x00,0xfb,0x15,0x13,0x10,0x48,0x38,0x09,0x00,0x73,0x0b,0x4f,0x4f, +0xa1,0xdd,0x10,0x80,0x00,0x2f,0x52,0x3e,0xf6,0x00,0x05,0xf8,0x43,0x06,0x0f,0x7b, +0x16,0x14,0x01,0xf2,0x0f,0x00,0x32,0x0b,0x2f,0x8f,0x40,0x00,0x01,0x30,0xaf,0x0b, +0xe2,0x00,0x00,0x0d,0xf3,0x00,0x00,0x01,0x20,0x80,0x00,0x13,0xc0,0x24,0x10,0x24, +0x10,0x00,0x1d,0xe6,0xfb,0x00,0x00,0x02,0xef,0x3f,0x0f,0x1c,0x13,0x80,0x00,0x61, +0xf9,0x0f,0xf6,0x00,0x07,0xfe,0xcc,0x0b,0x0a,0x80,0x00,0x14,0x21,0x80,0x00,0x26, +0x4e,0xf8,0x80,0x00,0x8f,0x05,0xf8,0x3f,0xa0,0x00,0x3e,0xf8,0x00,0x00,0x01,0x15, +0x20,0x7f,0x74,0x6a,0x19,0x00,0x42,0x0a,0x81,0x67,0x00,0x00,0x0f,0xff,0xfd,0x91, +0x00,0xc8,0x1d,0x01,0xd1,0x1d,0x01,0xda,0x1d,0x01,0xe3,0x1d,0x01,0xec,0x1d,0x23, +0x0a,0xfb,0xfe,0x1d,0x21,0x2f,0xf5,0x10,0x1e,0x01,0x19,0x1e,0x31,0xff,0xe9,0x20, +0x1c,0x07,0x20,0x2a,0xf0,0x55,0x15,0x10,0xdc,0x0b,0x00,0x20,0x3c,0x30,0xc2,0x17, +0x20,0x00,0x0b,0xbc,0x02,0x10,0x02,0xc4,0x17,0x10,0x00,0xc5,0x17,0x30,0x20,0x07, +0xfc,0x59,0x15,0x00,0xc7,0x17,0x20,0x20,0x02,0xc8,0x17,0x11,0x00,0xc9,0x17,0x11, +0x00,0xca,0x17,0x0f,0x4d,0x0f,0x30,0x70,0x00,0x23,0xff,0x40,0x00,0x01,0xff,0xda, +0x03,0x31,0x56,0xff,0x61,0xf0,0x15,0x01,0x82,0x00,0x51,0x2f,0xf5,0x07,0xff,0x20, +0x81,0x00,0x00,0x16,0x16,0x11,0x20,0x80,0x00,0x20,0x2f,0xf3,0xcf,0x03,0x00,0x7f, +0x00,0xff,0x02,0x01,0xaf,0xd6,0xff,0x20,0x01,0x11,0x11,0x10,0x0b,0xff,0xff,0xa0, +0x03,0x44,0x44,0x30,0xbd,0x10,0x1d,0x0a,0x8d,0x04,0x0f,0x24,0x09,0x15,0xd0,0x01, +0x20,0x02,0x10,0x09,0xf3,0x4f,0x80,0x02,0xdf,0xfd,0x10,0x00,0xf7,0x0f,0x0f,0x76, +0x00,0x1c,0x60,0x05,0xf7,0x2d,0xd0,0x00,0x0b,0x1c,0x25,0x2f,0x02,0x30,0x06,0x0a, +0x18,0x10,0x1d,0x62,0x1a,0x00,0x17,0x00,0x1f,0x10,0x1d,0x12,0x1f,0x20,0x0a,0xe3, +0x6c,0x04,0x00,0x22,0x03,0x1f,0x20,0x72,0x00,0x17,0x0d,0x66,0x00,0x00,0x5e,0x00, +0x0e,0xd7,0x1f,0x06,0x66,0x00,0xbf,0x01,0xea,0x00,0x00,0x06,0xfa,0x40,0x00,0x01, +0xdf,0x70,0xdf,0x19,0x09,0x50,0xfa,0x11,0x96,0x00,0x7f,0x8d,0x23,0x60,0x4b,0xff, +0xa1,0x00,0x00,0x1f,0xc6,0x04,0x30,0xfc,0x60,0x00,0x7a,0x17,0x7f,0x0a,0xf5,0x6f, +0xa0,0x00,0xaf,0xfa,0x01,0x13,0x22,0x72,0x04,0xf9,0x2e,0xb1,0x00,0x02,0xef,0x3c, +0x04,0x0f,0x92,0x0b,0x18,0x20,0x38,0x20,0x92,0x03,0x00,0xfd,0x15,0x33,0x3f,0xb1, +0xcd,0xc3,0x04,0x0f,0xa5,0x20,0x2f,0x03,0x70,0x0d,0x12,0xdb,0x4f,0x00,0x40,0x0a, +0xfe,0x7d,0xf4,0x89,0x14,0xd1,0x42,0xff,0x60,0x4f,0xf4,0x5f,0xe0,0x00,0xff,0x46, +0xfd,0x00,0x0f,0x09,0x00,0x01,0x12,0x00,0x00,0x1b,0x00,0xff,0x04,0x40,0x09,0xfe, +0x7f,0xf3,0x01,0x50,0x06,0xff,0x10,0xbf,0xfe,0xff,0x90,0x01,0xae,0xfd,0x70,0x00, +0xf5,0x06,0x04,0x0f,0x9c,0x00,0x2e,0x00,0xa6,0x10,0x83,0x00,0x2e,0xff,0xfb,0x00, +0x00,0x03,0x32,0xf0,0x00,0x0f,0x40,0x1b,0x21,0x00,0x71,0x00,0x10,0x00,0x02,0x07, +0x01,0xff,0x09,0x3f,0x7f,0x50,0x00,0x3c,0x01,0x36,0x20,0x08,0xf3,0x69,0x12,0x12, +0x50,0xae,0x02,0x0f,0x3c,0x01,0x24,0x0f,0x26,0x01,0x30,0x20,0x18,0x40,0x1d,0x05, +0x11,0xf7,0x0d,0x24,0x20,0x30,0x00,0x9d,0x0e,0x00,0x0b,0x00,0x10,0x83,0x0f,0x00, +0x13,0x70,0xa5,0x00,0x15,0x9f,0x0d,0x25,0x0f,0x45,0x01,0x26,0x82,0x09,0xfc,0x10, +0x00,0x01,0xcd,0x4b,0xe2,0x44,0x00,0x0f,0xdd,0x22,0x29,0xc3,0x00,0x06,0x70,0x00, +0x00,0x1b,0xed,0xc1,0x00,0x05,0x71,0x07,0x44,0x12,0x0f,0xe2,0x1c,0x22,0x20,0x0d, +0xf7,0x39,0x09,0x80,0x1d,0xf8,0x11,0x11,0xff,0x70,0xcf,0xff,0x89,0x22,0x62,0x3e, +0xfa,0x44,0x44,0xff,0x91,0x18,0x00,0x00,0xe9,0x0a,0x05,0x06,0x00,0x02,0x12,0x00, +0x0f,0x06,0x00,0x04,0x60,0x02,0xff,0x62,0x00,0x00,0x6f,0x14,0x20,0x30,0x25,0xff, +0x85,0xdc,0x00,0x40,0x7c,0xfd,0x40,0x00,0x28,0x27,0xaf,0x00,0xff,0x90,0x2f,0xf3, +0x00,0xff,0x50,0x0e,0xf5,0x05,0x00,0x07,0xcf,0x00,0x02,0x01,0xdf,0x75,0xf3,0x7e, +0x6d,0xfc,0x03,0x30,0x04,0xd6,0x15,0x14,0x00,0x07,0x00,0x7f,0x4e,0xff,0xfe,0x05, +0x77,0x77,0x20,0x5a,0x0e,0x0f,0x00,0xdb,0x0a,0x40,0x05,0xff,0xff,0xf0,0xd7,0x0a, +0x0f,0x38,0x16,0x17,0x33,0x7f,0xff,0xfe,0x2f,0x06,0x2f,0xff,0x50,0x03,0x00,0x05, +0x70,0x02,0x00,0x12,0x03,0xf8,0x2c,0xe0,0x19,0x0a,0x2f,0x02,0x31,0xbb,0x00,0x18, +0x8f,0x6f,0x62,0xdc,0x0c,0xff,0xe4,0x00,0x23,0x5c,0x00,0x09,0x2f,0x0d,0xf8,0x02, +0x00,0x01,0x8f,0x0f,0xf8,0x7f,0x40,0xcf,0x80,0x5e,0xe2,0x9b,0x1e,0x05,0xcc,0x9e, +0x20,0xee,0x70,0x7f,0xd0,0x9f,0x4b,0xf5,0x02,0x0d,0xf8,0x02,0x25,0x46,0x80,0xff, +0x5f,0xf5,0x03,0x00,0x30,0x50,0xdf,0x80,0xc3,0x20,0x0f,0x06,0x00,0x19,0xff,0x17, +0x88,0x30,0x0c,0xf9,0xdf,0x80,0xdf,0x90,0x1f,0xf6,0xdf,0x80,0x6f,0xfd,0xff,0xd0, +0xdf,0x80,0x06,0xcf,0xea,0x10,0x0c,0xe2,0x0a,0xf4,0x1f,0xf4,0x0d,0xf8,0x04,0x50, +0x02,0x60,0x0f,0xf4,0x0c,0xf8,0x04,0x00,0x0d,0x01,0x24,0x21,0x10,0x07,0xd9,0x1c, +0x23,0xfd,0x50,0x14,0x03,0x43,0xce,0x4b,0xe3,0x00,0xcd,0x05,0x1f,0xff,0x05,0x00, +0x11,0x00,0xaa,0x25,0x10,0x00,0xab,0x25,0x10,0x00,0xac,0x25,0x10,0x00,0xad,0x25, +0x93,0x00,0x03,0xef,0x60,0x05,0xf9,0x5f,0x80,0x00,0x23,0x14,0x2f,0xdf,0x70,0x07, +0x00,0x04,0x30,0xf6,0x00,0x00,0x90,0x17,0x6f,0xf1,0x00,0x9f,0xc4,0x00,0x00,0xe3, +0x25,0x29,0x30,0x00,0x0b,0xe0,0x6c,0x00,0x10,0xc0,0xa4,0x0b,0x13,0x60,0x22,0x05, +0x0f,0xf4,0x1f,0x23,0x30,0x00,0x03,0x82,0x57,0x05,0x40,0x30,0x00,0x00,0x0a,0x53, +0x00,0xf0,0x06,0x97,0x00,0x00,0xff,0x40,0x2f,0xfb,0x0f,0xf4,0x0b,0xff,0x10,0xff, +0x45,0xff,0x60,0x0f,0xf7,0xdf,0xc0,0x00,0xe8,0x00,0x10,0x0f,0xe0,0x1a,0xd1,0xff, +0x47,0xff,0x50,0x0f,0xf4,0x0c,0xff,0x20,0xff,0x40,0x2f,0xfc,0xef,0x15,0x21,0x3f, +0xd0,0xed,0x15,0x1f,0x00,0x74,0x26,0x1d,0x71,0x00,0x48,0x60,0x01,0xff,0x30,0x0a, +0x66,0x1d,0x0e,0xdd,0x2b,0x0e,0x03,0x00,0x0f,0x60,0x00,0x1e,0xd0,0x08,0x40,0x00, +0x00,0x2f,0x70,0x00,0x00,0x5f,0x40,0x00,0x00,0x5a,0x64,0x00,0x0f,0x02,0x00,0x03, +0xf0,0x03,0x05,0x70,0x0b,0xe0,0x0e,0xa0,0x1b,0x30,0xff,0x50,0x9f,0x10,0xff,0x50, +0xaf,0x00,0xff,0x50,0xa3,0x25,0x1f,0x31,0x60,0x00,0x0e,0xd1,0x0f,0xf4,0x8f,0x10, +0xff,0x4a,0xf0,0x0f,0xf4,0xe8,0x00,0xff,0x41,0x9e,0x15,0x2f,0xff,0x40,0x07,0x00, +0x03,0x0d,0x42,0x00,0xaf,0x52,0xea,0x00,0xff,0x54,0xfd,0x00,0xff,0x50,0x21,0x5a, +0x00,0x04,0x0a,0x45,0x00,0x9d,0x12,0x00,0xff,0x4d,0xf3,0x0f,0xf4,0xbe,0x20,0x5a, +0x00,0x11,0x0b,0x6a,0x1c,0x27,0xa0,0x00,0x09,0x00,0x9d,0xfc,0xa3,0x00,0x05,0xef, +0xfb,0x20,0x00,0xbe,0x1b,0x00,0x00,0xe8,0x0a,0xa2,0x90,0xbf,0xff,0xff,0xf9,0x0b, +0xf8,0x00,0xbf,0x80,0x05,0x00,0x74,0xf9,0x31,0xdf,0xf9,0xcf,0xf9,0x01,0x0f,0x00, +0x11,0xf8,0x4f,0x1e,0x20,0x3f,0xf3,0xc4,0x09,0x00,0x35,0x11,0x2f,0x85,0x00,0x6b, +0x1a,0x2b,0x08,0xad,0x12,0x0f,0x19,0x13,0x16,0x0f,0x72,0x00,0x2a,0x20,0x01,0x84, +0x0c,0x03,0x10,0xf7,0xa9,0x03,0x10,0xf3,0x05,0x00,0x3f,0xa0,0x00,0x00,0x81,0x22, +0x17,0x10,0x28,0xb4,0x0a,0x10,0xf4,0x6e,0x07,0x00,0x4b,0x1e,0x70,0x70,0x00,0x00, +0x01,0xde,0x2a,0xf5,0xed,0x2f,0x0f,0x0c,0x01,0x30,0x8f,0x02,0xdc,0x1c,0xd2,0x00, +0x01,0xcf,0xb1,0x25,0x14,0x1b,0x20,0x4f,0x50,0x9b,0x03,0x00,0x66,0x06,0x15,0x89, +0x38,0x00,0x01,0xcc,0x00,0x01,0x39,0x00,0x01,0xcd,0x00,0x10,0x02,0x28,0x00,0x0f, +0x05,0x00,0x01,0x0d,0xae,0x00,0xf0,0x02,0x50,0x1f,0xf4,0xff,0xaf,0xd0,0x1f,0xf4, +0xff,0x5c,0xf7,0x1f,0xf4,0xff,0x53,0xff,0x2f,0xae,0x00,0x5b,0xaf,0xf4,0xff,0x50, +0x1f,0xae,0x00,0x21,0x6f,0xf3,0xb8,0x08,0x30,0x00,0x00,0x0d,0x35,0x27,0xe1,0x0d, +0xfb,0x20,0x2f,0xf3,0xcf,0xc2,0x02,0xff,0xef,0xff,0xc0,0x2f,0xf5,0xbd,0x2f,0xb9, +0x1f,0xf2,0x2f,0xf1,0x01,0xff,0x32,0xff,0x10,0x1f,0xf3,0x09,0x00,0x12,0x20,0x86, +0x26,0x20,0xcf,0xfc,0x01,0x27,0x12,0x20,0xd5,0x11,0x20,0x02,0xff,0x0c,0x19,0x3f, +0x04,0x44,0x44,0x19,0x1b,0x31,0x01,0x4d,0x00,0x4f,0x05,0x55,0x55,0x10,0x5d,0x14, +0x1b,0x90,0x02,0x10,0x12,0x00,0x00,0x00,0xfa,0x1a,0xf1,0x80,0x28,0x14,0xf7,0xe0, +0x0a,0x0f,0xfa,0x1b,0x2e,0x82,0x01,0xfa,0x2a,0xf1,0x00,0x08,0xff,0xf8,0x50,0x00, +0x0f,0xc3,0x15,0x17,0xdf,0xbf,0x3b,0xf4,0x00,0x00,0x4f,0x76,0xf6,0x00,0x00,0x05, 0x60,0x65,0xdb,0x1c,0x32,0xcf,0x0b,0xf3,0xbf,0x40,0x05,0xf7,0x7f,0x60,0x00,0x56, 0x06,0x50,0x89,0x00,0x17,0x21,0x19,0xef,0x9a,0x18,0x11,0x2e,0xa1,0x18,0x90,0xfa, 0x0b,0xfe,0x52,0x0f,0xf7,0x22,0x22,0x11,0xb2,0x04,0x11,0x60,0xca,0x09,0x22,0x0f, -0xf6,0x63,0x38,0x00,0x4b,0x09,0x90,0x4f,0xf0,0x00,0x0f,0xff,0xee,0xec,0x03,0xff, -0x71,0x09,0x01,0x9b,0x2f,0x11,0x0f,0x3a,0x39,0x11,0xd3,0x0f,0x00,0x40,0x02,0xef, +0xf6,0x4a,0x31,0x00,0x4b,0x09,0x90,0x4f,0xf0,0x00,0x0f,0xff,0xee,0xec,0x03,0xff, +0x71,0x09,0x01,0x82,0x28,0x11,0x0f,0x21,0x32,0x11,0xd3,0x0f,0x00,0x40,0x02,0xef, 0xff,0xef,0x4b,0x00,0x31,0x01,0x9e,0xff,0xa1,0x0d,0x71,0x5d,0xfe,0x81,0x8e,0xfc, 0x40,0x07,0x59,0x00,0x70,0xf3,0x0f,0xf7,0x03,0xff,0xf3,0x0a,0x3e,0x17,0x60,0xcf, -0xe9,0x9c,0xfc,0x5f,0xe0,0x8c,0x26,0x10,0xfd,0x0e,0x00,0x30,0xd0,0x00,0x00,0x1c, +0xe9,0x9c,0xfc,0x5f,0xe0,0xad,0x31,0x10,0xfd,0x0e,0x00,0x30,0xd0,0x00,0x00,0x1c, 0x00,0x32,0xf6,0x00,0x41,0x2a,0x00,0x91,0xf7,0x00,0x6d,0xfe,0x81,0x8e,0xfe,0x92, 0x00,0xb1,0x1a,0x00,0x82,0x04,0x20,0x28,0x50,0x77,0x06,0x10,0xd7,0x82,0x00,0x63, -0xfc,0x0f,0xf5,0x00,0x7f,0xf4,0x68,0x32,0x20,0x0f,0xf6,0xb1,0x02,0x10,0x2f,0xf9, +0xfc,0x0f,0xf5,0x00,0x7f,0xf4,0x4f,0x2b,0x20,0x0f,0xf6,0xb1,0x02,0x10,0x2f,0xf9, 0x13,0x00,0xd6,0x04,0xe0,0x0f,0xf5,0x07,0xff,0x10,0xff,0x50,0x0e,0xf8,0x0f,0xf5, 0x00,0x6f,0xf1,0xc7,0x02,0x10,0x90,0xe6,0x0d,0x20,0x04,0xfc,0xd3,0x1c,0xd1,0x02, 0xff,0x7e,0xa0,0x2f,0xff,0xfa,0x02,0xff,0xa3,0x10,0x2f,0xf2,0x20,0x07,0x0a,0x07, -0x00,0x0f,0xcd,0x32,0x24,0x50,0x08,0x50,0x00,0x00,0x01,0xa3,0x29,0x00,0xa4,0x03, -0x12,0x04,0x15,0x26,0x0f,0x44,0x2d,0x07,0x00,0x33,0x0b,0xd2,0x0d,0xd0,0x00,0x0f, +0x00,0x0f,0xb4,0x2b,0x24,0x50,0x08,0x50,0x00,0x00,0x01,0xd7,0x2a,0x00,0xa4,0x03, +0x11,0x04,0x4c,0x20,0x0f,0x2b,0x26,0x08,0x00,0x33,0x0b,0xd2,0x0d,0xd0,0x00,0x0f, 0x90,0x00,0x2c,0x20,0x00,0x1d,0xe2,0xaf,0x50,0x56,0x04,0x0f,0xe0,0x00,0x27,0x51, 0x4f,0x83,0xea,0x00,0x2d,0x3b,0x15,0x0f,0xe0,0x00,0x0d,0x20,0x00,0x00,0xf6,0x08, -0x01,0x29,0x16,0x4f,0x00,0x78,0x00,0x00,0x86,0x33,0x28,0x00,0xf0,0x01,0x11,0x90, -0x8d,0x1a,0x2f,0x06,0x81,0x15,0x2e,0x12,0x20,0x00,0x04,0x7c,0x17,0x22,0x7f,0x76, +0x01,0x29,0x16,0x4f,0x00,0x78,0x00,0x00,0x6d,0x2c,0x28,0x00,0xf0,0x01,0x11,0x90, +0x8d,0x1a,0x2f,0x06,0x81,0xfc,0x26,0x12,0x20,0x00,0x04,0x7c,0x17,0x22,0x7f,0x76, 0xb8,0x17,0x0f,0x7b,0x00,0x2b,0x01,0xb2,0x13,0x11,0x5e,0x62,0x09,0x0f,0x7b,0x00, 0x12,0x0f,0xe7,0x00,0x2a,0x24,0xef,0x70,0x43,0x13,0x2f,0xbd,0x60,0x6f,0x00,0x04, -0x56,0x9f,0xf7,0x7e,0xa0,0x09,0x6f,0x00,0x00,0x04,0x3b,0x00,0xf6,0x1b,0x70,0x0a, +0x56,0x9f,0xf7,0x7e,0xa0,0x09,0x6f,0x00,0x00,0xeb,0x33,0x00,0xf6,0x1b,0x70,0x0a, 0xd6,0x00,0x00,0x8f,0x64,0xfa,0x49,0x0f,0x00,0x71,0x01,0x11,0x45,0xf6,0x00,0x11, 0xc5,0x8a,0x00,0x50,0x70,0x0f,0xf9,0x00,0x9f,0x8a,0x00,0x2f,0x1b,0xb2,0x8a,0x00, -0x15,0x8f,0x06,0xf7,0x4f,0xa0,0x00,0x4e,0xf7,0x00,0xf6,0x00,0x15,0x0f,0x27,0x35, -0x29,0x40,0x00,0x00,0xfe,0x40,0xdf,0x14,0x00,0x34,0x19,0x26,0xdd,0x40,0xc2,0x2f, -0x0f,0xd4,0x2f,0x06,0x80,0xcf,0xf1,0x00,0x9f,0xa1,0x00,0x2d,0xf4,0x8e,0x24,0x30, -0xaf,0x47,0xf9,0x62,0x08,0x00,0x15,0x11,0x2f,0x76,0x00,0xae,0x35,0x2a,0x01,0x5c, -0x3d,0x20,0x01,0xf8,0xb8,0x09,0x50,0xbf,0x93,0x90,0x0b,0xf9,0x48,0x3f,0x40,0x00, -0xae,0xfe,0xb0,0x7b,0x02,0x00,0x93,0x33,0x03,0x07,0x00,0x20,0xaf,0xa0,0x84,0x00, -0x4f,0x00,0x1b,0xfe,0x10,0x6d,0x00,0x02,0x30,0x7a,0xff,0x84,0xe0,0x37,0x1f,0xf8, +0x15,0x8f,0x06,0xf7,0x4f,0xa0,0x00,0x4e,0xf7,0x00,0xf6,0x00,0x15,0x0f,0x0e,0x2e, +0x29,0x40,0x00,0x00,0xfe,0x40,0xdf,0x14,0x00,0x34,0x19,0x26,0xdd,0x40,0xa9,0x28, +0x0f,0xbb,0x28,0x06,0x80,0xcf,0xf1,0x00,0x9f,0xa1,0x00,0x2d,0xf4,0x8e,0x24,0x30, +0xaf,0x47,0xf9,0x62,0x08,0x00,0x15,0x11,0x2f,0x76,0x00,0x95,0x2e,0x2a,0x01,0x43, +0x36,0x20,0x01,0xf8,0xb8,0x09,0x50,0xbf,0x93,0x90,0x0b,0xf9,0x2f,0x38,0x40,0x00, +0xae,0xfe,0xb0,0x7b,0x02,0x00,0x7a,0x2c,0x03,0x07,0x00,0x20,0xaf,0xa0,0x84,0x00, +0x4f,0x00,0x1b,0xfe,0x10,0x6d,0x00,0x02,0x30,0x7a,0xff,0x84,0xc7,0x30,0x1f,0xf8, 0x6d,0x00,0x0d,0x02,0x4e,0x00,0x06,0x63,0x00,0x8a,0x03,0xff,0xff,0xf3,0x18,0xdf, 0xc8,0x10,0x63,0x00,0x11,0x00,0x00,0x16,0x80,0x2e,0xf6,0x6f,0x10,0x00,0x9e,0x6e, -0xfa,0xdb,0x4b,0x1f,0x40,0x48,0x20,0x29,0x00,0x5a,0x1b,0x15,0xf3,0x32,0x1c,0x0f, +0xfa,0xd2,0x41,0x1f,0x40,0x48,0x20,0x29,0x00,0x5a,0x1b,0x15,0xf3,0x32,0x1c,0x0f, 0xf1,0x19,0x17,0x00,0x50,0x07,0x00,0xd1,0x12,0x02,0x24,0x19,0x0f,0x81,0x00,0x29, 0x10,0x03,0x48,0x07,0x13,0x15,0x48,0x07,0x0f,0x81,0x00,0x17,0x10,0x12,0x28,0x12, 0x30,0x5f,0x72,0xdd,0xeb,0x01,0x10,0xe4,0x4d,0x15,0x1f,0x00,0x07,0x01,0x2b,0x11, @@ -718,312 +589,106 @@ static const uint8_t lz4FontData[] __FLASH = { 0xc0,0xd1,0x00,0x00,0x2c,0x49,0x28,0x2f,0x7c,0x70,0x96,0x01,0x1d,0xcf,0xed,0x2e, 0xe1,0x00,0x09,0xf3,0xbf,0x20,0x00,0x07,0x41,0x73,0x8a,0x00,0x2b,0x80,0x0b,0xf3, 0xcf,0x30,0x05,0xf7,0x7f,0x50,0xc7,0x07,0x0f,0x81,0x00,0x16,0x0f,0x72,0x00,0x1e, -0x21,0xf3,0x04,0x0a,0x2c,0x30,0x3b,0xff,0xf4,0x68,0x1b,0x20,0xd2,0x00,0xaa,0x22, -0x00,0xf3,0x00,0x2f,0x43,0x00,0xa4,0x33,0x16,0x30,0x00,0x00,0xae,0x3b,0x31,0x13, +0x30,0xf3,0x04,0xff,0xb8,0x28,0x30,0x3b,0xff,0xf4,0x68,0x1b,0x20,0xd2,0x00,0xaa, +0x22,0x01,0xce,0x3b,0x1f,0x00,0x8b,0x2c,0x16,0x30,0x00,0x00,0xae,0x5e,0x3a,0x13, 0xe7,0x30,0x04,0x31,0x02,0xef,0x30,0x54,0x26,0x11,0xcb,0x5d,0x12,0x3f,0x67,0x10, -0x76,0xf7,0x38,0x42,0x00,0x0b,0x0b,0x10,0xe3,0x08,0x14,0x24,0xd4,0x7e,0x83,0x19, -0x0f,0x08,0x34,0x23,0x02,0x01,0x00,0x10,0x05,0x78,0x05,0x30,0x6f,0x89,0xf4,0x58, -0x2e,0x1f,0x22,0xcc,0x23,0x2a,0x8f,0x00,0x4e,0xf5,0x00,0x00,0x6e,0x65,0xe7,0x02, -0x1d,0x2a,0x82,0xcd,0x01,0xeb,0x00,0x00,0xde,0x01,0xec,0x9d,0x00,0x0f,0x8f,0x00, -0x2a,0x01,0x20,0x39,0x20,0x00,0x8f,0x2c,0x07,0x2f,0x87,0x00,0xb5,0x39,0x2a,0x10, -0x00,0x47,0x19,0x21,0x06,0xfb,0x63,0x1e,0x0f,0xdf,0x34,0x12,0x01,0xc0,0x00,0x01, -0x6d,0x1f,0x2f,0x00,0x21,0x7b,0x00,0x2c,0x22,0x0c,0xd1,0x3c,0x0e,0x2f,0x01,0x20, -0x7b,0x00,0x13,0x28,0xaf,0x46,0x83,0x06,0x0f,0x7b,0x00,0x29,0x72,0x06,0xf6,0x4f, -0x90,0x00,0x3d,0xe5,0x6e,0x2e,0x0f,0x7b,0x00,0x10,0x80,0x01,0xae,0xe3,0x0b,0xff, -0xf2,0x0f,0xf5,0x10,0x1f,0x0f,0x03,0x00,0x04,0x00,0x6e,0x00,0x70,0xe4,0xef,0xfb, -0xdf,0xfb,0x5e,0xd3,0x56,0x00,0x50,0x1e,0x82,0x00,0x00,0x0f,0x09,0x41,0xf1,0x02, -0x5a,0xef,0xf8,0x00,0x01,0x7e,0xfc,0x07,0xcf,0xfe,0x92,0x1f,0xfb,0x50,0x00,0x08, -0x20,0xa8,0x2f,0x5a,0xfb,0x0c,0xcc,0xcc,0xc8,0x1d,0x30,0x20,0x49,0xdc,0x06,0x00, -0x20,0x16,0xbf,0x1c,0x03,0x20,0x03,0x8d,0x2e,0x0b,0x00,0x0f,0x1b,0x02,0x08,0x00, -0x00,0x06,0x00,0x11,0xc7,0x08,0x00,0x30,0xfa,0x51,0x00,0x08,0x00,0x10,0x84,0x38, -0x14,0x01,0x03,0x00,0x0f,0x08,0x00,0x05,0x21,0x2b,0xee,0x08,0x00,0x00,0x76,0x0c, -0x21,0x2b,0xee,0x08,0x00,0x30,0xfd,0xdf,0xff,0x18,0x00,0x41,0xff,0xb2,0xdf,0xff, -0x42,0x32,0x00,0x0b,0x00,0x01,0x08,0x00,0x21,0xd0,0x0f,0xf1,0x2f,0x70,0x0d,0xff, -0xff,0xc8,0x88,0x88,0x8c,0x94,0x32,0x64,0x80,0x00,0x00,0x08,0xf0,0x0f,0x08,0x00, -0x01,0xa7,0x21,0x10,0x08,0x18,0x00,0x64,0xec,0xcc,0xcc,0xce,0xf0,0x0f,0x08,0x00, -0x06,0x18,0x00,0x0c,0x30,0x00,0x02,0x48,0x00,0x04,0x58,0x00,0x31,0xdf,0xff,0x73, -0x41,0x31,0x31,0xff,0xff,0xa5,0xd0,0x00,0x04,0x08,0x00,0x04,0x18,0x00,0x04,0x02, -0x01,0x0f,0x28,0x00,0x3b,0x23,0x0a,0xb1,0x69,0x03,0x12,0xfc,0x6d,0x36,0x22,0xff, -0xfb,0x0f,0x00,0x31,0xff,0xc0,0x1b,0x2c,0x11,0x41,0xfc,0x00,0xcf,0xfb,0x0f,0x00, -0x70,0x00,0xbf,0xff,0xb0,0x0b,0xff,0xfc,0x74,0x03,0x10,0xfb,0x0f,0x00,0x01,0x77, -0x01,0x11,0xfb,0xea,0x03,0x02,0x0a,0x34,0x04,0x00,0x36,0x04,0x02,0x36,0x10,0x03, -0x04,0x00,0xf1,0x03,0x08,0xfc,0x10,0x00,0x1c,0xf8,0xff,0xfc,0x10,0x1c,0xff,0xf5, -0xff,0xfc,0x2c,0xff,0xf5,0x05,0x94,0x12,0x11,0x05,0xc3,0x35,0x10,0x1d,0xb9,0x0d, -0x21,0x1c,0xff,0x1e,0x00,0x40,0xf9,0xff,0xfc,0x1c,0x1e,0x00,0x20,0xfc,0xdf,0x1e, -0x00,0x72,0xd1,0xa4,0x00,0x00,0x04,0xa1,0x00,0xbf,0x44,0x00,0xb8,0x0e,0x20,0x6f, -0xf1,0x5a,0x37,0xf0,0x0a,0x5f,0xd0,0x6f,0xf1,0x3f,0xd1,0x00,0x03,0xff,0xf1,0x6f, -0xf1,0x5f,0xfd,0x00,0x0d,0xff,0x40,0x6f,0xf1,0x09,0xff,0x70,0x4f,0xf7,0xd0,0x43, -0x40,0xcf,0xe0,0x9f,0xf0,0x08,0x00,0x40,0x5f,0xf3,0xbf,0xc0,0x08,0x00,0x40,0x2f, -0xf5,0xbf,0xc0,0x40,0x00,0x41,0x1f,0xf6,0xaf,0xe0,0xc2,0x02,0x10,0xf4,0x12,0x46, -0x00,0x57,0x37,0x30,0x0f,0xfe,0x10,0x36,0x04,0x40,0xa0,0x06,0xff,0xd3,0x48,0x08, -0x60,0x20,0x00,0x9f,0xff,0xda,0xbe,0x06,0x06,0x10,0x06,0x18,0x01,0x00,0xc3,0x05, -0x32,0x17,0xbd,0xca,0x5f,0x19,0x23,0x8b,0xb8,0x27,0x18,0x11,0xff,0x83,0x37,0x70, -0x06,0xff,0xff,0x60,0x03,0x00,0x04,0x24,0x02,0x42,0xfd,0xef,0x40,0x0d,0x57,0x01, -0x10,0xd0,0x4c,0x41,0x51,0x9f,0xff,0xff,0xf4,0x08,0xc3,0x1d,0x00,0xbd,0x14,0x01, -0x5b,0x41,0x14,0x00,0x08,0x00,0x04,0x18,0x00,0x04,0x28,0x00,0x04,0x38,0x00,0x20, -0x04,0xfe,0x48,0x00,0x24,0xdf,0x40,0x58,0x00,0x05,0x68,0x00,0x06,0x78,0x00,0x30, -0x03,0xdd,0x30,0x87,0x12,0x00,0xc8,0x03,0x31,0xf5,0x4f,0xf4,0xff,0x20,0xd0,0x99, -0xff,0xbf,0xf4,0x00,0x00,0x01,0xbf,0xf6,0x22,0x6f,0xff,0xf4,0x8c,0x40,0xf0,0x0c, -0x35,0xff,0x53,0xef,0xf4,0x00,0x04,0xff,0xc1,0x8f,0xff,0xf8,0x1c,0xfe,0x40,0x7f, -0xfa,0x1a,0xff,0xff,0xff,0xa1,0xaf,0xf7,0xcf,0x82,0xdf,0xd0,0x00,0x41,0x28,0xfc, -0x14,0x0e,0x70,0x00,0x21,0xe0,0x41,0xfc,0x32,0x02,0xe8,0x37,0x42,0xff,0xf9,0x00, -0x8f,0x09,0x00,0x1b,0xf8,0x09,0x00,0x71,0x0e,0xff,0xf6,0x00,0x6f,0xff,0xe0,0x43, -0x02,0x18,0xfd,0xfe,0x00,0x0f,0x08,0x00,0x0d,0x12,0x4f,0xf1,0x33,0x01,0x61,0x13, -0x11,0xff,0x10,0x38,0x03,0x21,0x02,0x19,0x0b,0x21,0x02,0x60,0xdf,0xff,0xfc,0x1b, -0xb1,0xcf,0x98,0x02,0x4b,0xff,0xc2,0x2c,0xff,0x01,0x00,0x30,0xf0,0xe0,0xff,0xb5, -0x00,0x01,0xa0,0x02,0x10,0x04,0x4b,0x0f,0x00,0x8c,0x0b,0x11,0x1e,0x11,0x00,0x11, -0xe1,0xfd,0x24,0x00,0xc9,0x13,0x00,0xf0,0x22,0x01,0x4f,0x38,0x41,0x50,0x1e,0xf6, -0x00,0x1d,0x01,0x11,0xe1,0x1a,0x00,0x00,0x1c,0x00,0x01,0xd3,0x07,0x22,0x08,0xff, -0xf1,0x00,0x03,0xf0,0x00,0x0f,0x01,0x00,0x06,0x13,0x8f,0x08,0x00,0x00,0xae,0x43, -0x50,0xbd,0xda,0x50,0x02,0xff,0x4d,0x0c,0xf0,0x06,0xff,0xfe,0x42,0xff,0x00,0x7f, -0xff,0xa7,0x7b,0xff,0xf9,0xff,0x05,0xff,0xc1,0x00,0x00,0x2c,0xff,0xff,0x0e,0x65, -0x3f,0x52,0x22,0xdf,0xff,0x5f,0xf2,0x40,0x34,0x22,0x8f,0xb0,0x08,0x00,0x0c,0xbb, -0x34,0x02,0x5d,0x01,0x21,0x0b,0xf8,0x08,0x00,0x00,0x7a,0x45,0x20,0xfd,0x22,0x9a, -0x3f,0x40,0xe0,0xff,0xff,0xc2,0x48,0x00,0xd0,0x40,0xff,0x9f,0xff,0xb7,0x6a,0xff, -0xf7,0x00,0xff,0x24,0xdf,0xff,0x65,0x38,0x56,0xff,0x20,0x05,0xac,0xdb,0x03,0x35, -0x10,0x8d,0x29,0x04,0x5e,0x00,0x00,0x8f,0xff,0xdf,0xad,0x00,0x01,0x14,0x00,0x02, -0x57,0x02,0x22,0x09,0xff,0x2c,0x00,0x28,0x00,0x00,0x3a,0x00,0x02,0x3c,0x00,0x00, -0x3e,0x00,0x02,0x12,0x05,0x20,0x01,0x50,0x36,0x00,0x21,0x06,0xf7,0x1c,0x05,0x11, -0xbe,0x06,0x00,0x10,0xae,0x06,0x00,0x20,0x05,0xf8,0x4a,0x00,0x22,0x02,0x60,0x4c, -0x00,0x03,0x4e,0x00,0x3b,0x00,0x00,0x9e,0x85,0x35,0x04,0x9a,0x1d,0x23,0x1f,0xd2, -0x60,0x00,0x31,0x03,0xee,0x10,0x63,0x00,0x41,0x0a,0xb1,0x2f,0xb0,0x66,0x00,0x41, -0x05,0xfc,0x07,0xf4,0x4b,0x00,0x42,0x50,0x5f,0x60,0xf9,0x6c,0x00,0x32,0x0d,0xc0, -0xbd,0x69,0x00,0x33,0x09,0xf0,0x9f,0x09,0x00,0x24,0xe0,0x8f,0x1b,0x00,0x14,0xad, -0x2d,0x00,0x11,0xe9,0x7b,0x00,0x20,0x05,0xfc,0x64,0x14,0x14,0x09,0x51,0x00,0x23, -0x00,0x8d,0x07,0x28,0x06,0x75,0x00,0x02,0x87,0x00,0x13,0x8f,0xa4,0x01,0x23,0xff, -0xfc,0x09,0x01,0x12,0x20,0x4a,0x2a,0x10,0xfc,0x79,0x04,0x12,0xee,0x10,0x00,0x60, -0xfe,0x12,0xef,0xff,0xff,0xfc,0x24,0x02,0x61,0x2e,0xff,0xff,0xfe,0x4e,0xfe,0x22, -0x13,0x31,0xe1,0x02,0xc1,0x93,0x01,0x1b,0x10,0xac,0x02,0x09,0xfd,0x01,0x00,0xfc, -0x01,0x31,0x4e,0x40,0x00,0x1b,0x28,0x00,0x53,0x02,0x11,0xf1,0x69,0x25,0x10,0x90, -0xec,0x32,0x11,0xff,0x64,0x21,0x11,0xfc,0xb4,0x0e,0x30,0xf8,0x02,0xff,0x1f,0x41, -0x01,0xd5,0x00,0x01,0xdc,0x11,0x11,0xfe,0x96,0x10,0xf1,0x03,0xfe,0xf2,0xbf,0xff, -0xff,0xfe,0x9f,0xa1,0xbf,0xff,0xff,0x92,0xff,0xa2,0x2f,0xff,0xf2,0x04,0x03,0x03, -0x43,0x02,0x9e,0xfe,0x92,0x6e,0x00,0xf0,0x06,0x30,0x00,0x01,0xcc,0xff,0x40,0x00, -0x2d,0xff,0xff,0x40,0x03,0xef,0xff,0xff,0x40,0x3f,0xff,0xff,0xff,0x44,0x41,0x00, -0x1a,0x9f,0xde,0x01,0x10,0xaf,0x05,0x00,0x20,0x45,0xff,0x5d,0x1d,0x24,0x4f,0xff, -0x2d,0x00,0x00,0x37,0x00,0x00,0x41,0x00,0x08,0x99,0x01,0x23,0x8f,0x91,0xc7,0x00, -0x12,0x70,0x07,0x00,0x23,0xfd,0x40,0x45,0x32,0x12,0x10,0xdc,0x00,0x13,0xf7,0xe3, -0x00,0x13,0xd5,0xea,0x00,0x13,0xb2,0x4f,0x03,0x09,0x07,0x00,0x17,0xb2,0x23,0x00, -0x12,0xf7,0x3f,0x00,0x17,0x20,0x4d,0x00,0x11,0x70,0x0f,0x23,0x2e,0xa1,0x00,0x01, -0x00,0x11,0x8f,0x26,0x04,0x00,0xe0,0x02,0x03,0x5f,0x00,0x0f,0x07,0x00,0x37,0x83, -0x7f,0xff,0xf7,0x00,0x7f,0xff,0xf7,0x8f,0xee,0x01,0x0f,0x01,0x00,0x40,0x03,0x5b, -0x00,0x01,0xc9,0x00,0x20,0xcc,0x10,0xfd,0x0d,0x30,0xd2,0x00,0x04,0x98,0x23,0x01, -0xb6,0x01,0x10,0x04,0x1d,0x00,0x11,0x54,0xb8,0x13,0x0a,0x37,0x00,0x23,0xf9,0xff, -0xb4,0x01,0x14,0xf3,0x2d,0x00,0x00,0x37,0x00,0x01,0x41,0x00,0x04,0x17,0x01,0x22, -0x2d,0xd2,0xa2,0x29,0x11,0xef,0x24,0x0f,0x00,0x07,0x1f,0x11,0xd1,0x6d,0x26,0x01, -0xdd,0x1e,0x05,0x11,0x05,0x12,0xaf,0x15,0x14,0x00,0xd7,0x10,0x01,0xce,0x12,0x03, -0xf3,0x04,0x03,0xae,0x04,0x04,0x4f,0x26,0x03,0x53,0x2d,0x24,0xff,0xc0,0x20,0x00, -0x04,0x08,0x00,0x03,0x18,0x00,0x00,0x7b,0x07,0x70,0x1a,0x40,0x00,0x00,0x01,0xdf, -0xf0,0x6a,0x00,0x57,0xa0,0x00,0x01,0xdf,0xfa,0x09,0x00,0x30,0x0c,0xff,0xa0,0xb1, -0x16,0x10,0x80,0x21,0x00,0x11,0xf8,0x8c,0x00,0x0c,0x0b,0x00,0x01,0xdb,0x4e,0x11, -0x50,0x5f,0x07,0x30,0x0f,0xfc,0x10,0x2c,0x45,0x10,0xc1,0x17,0x07,0x0c,0x0b,0x00, -0x00,0x69,0x00,0x10,0x08,0xf9,0x16,0x10,0x8f,0x5f,0x15,0x27,0xff,0xd1,0x09,0x00, -0x20,0x0f,0xfd,0x41,0x07,0x12,0xb1,0xae,0x4b,0x22,0xff,0x40,0x7c,0x04,0x1f,0x80, -0x07,0x00,0x04,0x7a,0x48,0x88,0x8c,0xff,0xc8,0x88,0x84,0x54,0x01,0x03,0x15,0x00, -0x0f,0x38,0x00,0x09,0x03,0x5b,0x00,0x02,0x4f,0x3a,0x32,0x41,0xef,0xff,0x76,0x03, -0x02,0x01,0x00,0x20,0x7b,0xbb,0x01,0x00,0x71,0xb7,0x00,0x00,0x05,0xad,0xff,0xda, -0xac,0x3d,0x40,0xdf,0xfc,0x88,0xcf,0xbe,0x02,0x60,0x7f,0xfe,0x40,0x00,0x04,0xef, -0x3a,0x16,0xf0,0x08,0xf4,0x00,0x9e,0x80,0x4f,0xff,0x70,0x4f,0xff,0xc0,0x00,0xaf, -0xf8,0x0c,0xff,0xf4,0xdf,0xff,0x80,0x9a,0xff,0xfe,0x08,0xe1,0x09,0x21,0x80,0xef, -0x09,0x00,0x50,0x4f,0xff,0xc0,0x8f,0xff,0x1b,0x00,0x50,0x07,0xff,0xf4,0x08,0xee, -0x2d,0x00,0x03,0x3f,0x00,0x17,0xf8,0x51,0x00,0x04,0x63,0x00,0x25,0x8c,0x20,0x59, -0x09,0x14,0xe4,0x0a,0x00,0x91,0x1b,0xff,0x80,0x49,0xdf,0xfd,0xa5,0x00,0x00,0x8f, -0x10,0x62,0xd8,0x8c,0xff,0xd4,0x00,0x00,0x3f,0x00,0x11,0x4e,0x44,0x03,0xf0,0x07, -0x1c,0xff,0x69,0xe8,0x04,0xff,0xf7,0x00,0x04,0xe3,0x00,0x9f,0xfe,0xff,0x80,0xcf, -0xff,0x40,0x0d,0xff,0x70,0x05,0x89,0x4c,0x71,0xff,0xd0,0x0d,0xff,0xf7,0x00,0x2d, -0x0a,0x00,0x20,0x04,0xff,0x6a,0x44,0xa1,0xf8,0xcf,0xff,0x30,0x00,0x7f,0xff,0x40, -0x00,0x06,0x93,0x03,0x10,0x08,0x4a,0x07,0x11,0x3e,0x3c,0x13,0x61,0x4d,0xff,0xc8, -0x82,0x01,0xbf,0xaf,0x0d,0x65,0x5a,0xdf,0xfc,0x10,0x08,0xff,0x61,0x3f,0x25,0x4e, -0xfd,0x1b,0x3a,0x17,0xc8,0x87,0x02,0x07,0x8b,0x09,0x00,0x6a,0x09,0x03,0x29,0x22, -0x02,0xed,0x3f,0x03,0xac,0x00,0x13,0xf7,0x91,0x3f,0x22,0xd8,0x8d,0x1f,0x05,0x61, -0x0a,0xff,0xa0,0x0a,0xff,0xa0,0xc3,0x20,0x00,0xe7,0x09,0x12,0xf3,0xbe,0x02,0x41, -0xc0,0x0c,0xff,0xfc,0x44,0x00,0x00,0xaf,0x00,0x01,0x7e,0x2a,0x02,0xc2,0x08,0x20, -0xe0,0x00,0x96,0x05,0x20,0xe2,0x2e,0x4d,0x03,0x10,0x02,0xcb,0x02,0x10,0x09,0x27, -0x38,0x10,0x0a,0x0c,0x27,0x10,0x3e,0xff,0x16,0x05,0x77,0x07,0x04,0xdc,0x02,0x07, -0xde,0x02,0x02,0x01,0x00,0x14,0xd8,0x31,0x07,0x10,0x80,0x6e,0x04,0x11,0x07,0xf1, -0x03,0x10,0xf6,0xad,0x0c,0xf0,0x00,0xfd,0x78,0x8e,0xff,0x15,0xff,0xe8,0xff,0xe2, -0x00,0x02,0xe5,0x4f,0xfe,0x20,0x27,0x24,0x51,0x13,0xff,0xf3,0x00,0x52,0x9a,0x00, -0x30,0x31,0x00,0x52,0x65,0x0f,0x90,0xf4,0x5e,0x20,0xfe,0x20,0x78,0x8e,0xff,0x51, -0x28,0x00,0x04,0x38,0x00,0x04,0x48,0x00,0x04,0x58,0x00,0x0a,0x68,0x00,0x07,0x01, -0x00,0x23,0x01,0xdd,0xa4,0x03,0x20,0xd1,0x00,0x0e,0x03,0x30,0xff,0xfd,0x10,0x0d, -0x00,0xf1,0x04,0x99,0xff,0xd1,0x00,0x01,0xdf,0xf9,0x00,0x9f,0xfd,0x10,0x1d,0xff, -0x90,0x00,0x09,0xff,0xd1,0xbf,0x78,0x40,0x30,0xfb,0x5f,0x90,0x24,0x07,0x1a,0xf5, -0x44,0x00,0x03,0x15,0x00,0x03,0x23,0x00,0x03,0x31,0x00,0x03,0x3f,0x00,0x03,0x4d, -0x00,0x04,0x5b,0x00,0x03,0x69,0x00,0x04,0x77,0x00,0x0c,0x01,0x00,0x24,0x1d,0xd1, -0x97,0x00,0x40,0xdf,0xfd,0x10,0xef,0x16,0x0a,0x01,0x3e,0x04,0x11,0xaf,0x42,0x08, -0x60,0xcf,0xcf,0xfc,0xfc,0x00,0x00,0x1d,0x52,0x42,0x6b,0x1f,0xf1,0xb6,0x0a,0x00, -0x01,0x04,0x00,0x0f,0x0a,0x00,0x02,0x01,0x24,0x00,0x01,0x0a,0x00,0x01,0x38,0x00, -0x10,0x0f,0x6d,0x04,0x01,0x8a,0x04,0x10,0x0d,0x3a,0x03,0x00,0x60,0x00,0x0c,0x74, -0x00,0x02,0xd2,0x05,0x02,0xa0,0x00,0x01,0xbc,0x3d,0x06,0x20,0x07,0x0f,0x81,0x05, -0x2e,0x06,0x5f,0x07,0x05,0x12,0x42,0x03,0x95,0x02,0x04,0x0f,0x0a,0x03,0x1f,0x0a, -0x04,0x1e,0x05,0x04,0x3f,0x0a,0x0f,0x6f,0x0a,0x14,0x84,0xdf,0xff,0xf0,0xdf,0xfd, -0x0f,0xff,0xfd,0xc8,0x4c,0x0f,0x47,0x0a,0x06,0x09,0x01,0x00,0x33,0x0a,0xea,0x62, -0x7a,0x1c,0x03,0xbb,0x3d,0x13,0x9f,0x55,0x00,0x13,0x0f,0x1e,0x03,0x23,0x02,0xff, -0x02,0x0d,0x43,0x03,0xef,0xff,0x70,0xe1,0x04,0x1a,0xf2,0x54,0x03,0x10,0x6f,0x70, -0x10,0x10,0x02,0xb1,0x00,0x90,0x90,0x00,0x02,0x8f,0xf3,0x00,0x6f,0xff,0xd0,0xf6, -0x3a,0x41,0xe4,0xbf,0xff,0xd1,0x4c,0x4d,0x01,0x51,0x01,0x11,0x0a,0xe3,0x05,0x11, -0x00,0x81,0x0f,0x21,0xfb,0x30,0x59,0x00,0x31,0xdb,0x72,0x00,0xdd,0x04,0x70,0xee, -0x80,0x00,0x00,0x06,0x61,0x08,0x14,0x03,0xf0,0x02,0x2d,0xff,0xd0,0xef,0x33,0xfe, -0x00,0x2e,0xff,0xf3,0x0e,0xf3,0x3f,0xe0,0x2e,0xff,0xf3,0x8f,0x01,0x10,0x6e,0x7f, -0x03,0x12,0x8e,0x77,0x10,0x00,0x52,0x1a,0x11,0xf3,0x54,0x12,0x10,0xff,0x76,0x00, -0x20,0x08,0xef,0xe8,0x36,0x00,0xe0,0x0a,0xc0,0xf6,0xef,0xff,0x30,0x00,0xef,0x33, -0xfe,0x02,0xef,0xff,0x30,0x3c,0x00,0x00,0x08,0x00,0x10,0x8f,0x8f,0x03,0x40,0xdf, -0xfd,0x00,0x8e,0x5d,0x1b,0x21,0x66,0x10,0xd6,0x0e,0x12,0x0d,0x17,0x08,0x22,0x0f, -0xd1,0x07,0x00,0x50,0xfd,0xdf,0xf0,0xff,0xff,0xed,0x19,0x13,0xf0,0x29,0x01,0x0f, -0x07,0x00,0x1e,0x11,0xdf,0x46,0x08,0x16,0xf9,0x4c,0x09,0x01,0x67,0x00,0x00,0x68, -0x01,0x01,0xf2,0x01,0x32,0xc1,0x00,0xff,0x07,0x40,0x11,0xff,0x60,0x04,0x12,0xd1, -0x6c,0x0f,0x12,0xfc,0x07,0x00,0x02,0x6c,0x01,0x0e,0x2c,0x02,0x31,0xfb,0x11,0xbf, -0x31,0x34,0x27,0x00,0x1f,0x07,0x00,0x03,0x15,0x00,0x08,0xba,0x07,0x20,0x12,0x22, -0x01,0x00,0x1a,0x21,0x3d,0x00,0x03,0x15,0x00,0x03,0xe1,0x01,0x0f,0x23,0x00,0x2c, -0x1b,0x8f,0xfe,0x02,0x22,0xcf,0xff,0x6c,0x0a,0x04,0xb4,0x07,0x21,0xd2,0x5f,0xa0, -0x25,0x30,0x2d,0xff,0x62,0xdc,0x07,0x90,0x26,0xff,0xff,0xfa,0x18,0xff,0xff,0x81, -0xaf,0xfa,0x04,0x31,0x4d,0xd4,0x3e,0x24,0x00,0x2f,0x81,0x18,0x0e,0x03,0x09,0x01, -0x56,0x10,0x11,0x01,0x18,0x08,0x11,0x03,0x87,0x05,0x11,0x06,0xed,0x2f,0x11,0x08, -0x7f,0x02,0x11,0x0a,0x17,0x0e,0x11,0x0c,0x8e,0x1c,0x11,0x0e,0xeb,0x0a,0x13,0x0d, -0x43,0x03,0x11,0x0a,0x91,0x0d,0x11,0x0e,0xcc,0x05,0x21,0x2f,0xfc,0x83,0x04,0x11, -0xf3,0xbf,0x02,0x11,0xa0,0x92,0x06,0x01,0xda,0x03,0x11,0xd7,0xae,0x02,0x21,0xde, -0x40,0x1d,0x03,0x11,0x99,0x36,0x23,0x24,0xff,0x99,0x18,0x11,0x01,0x07,0x00,0x12, -0x90,0x7f,0x01,0x10,0x0d,0x17,0x02,0x30,0xff,0xff,0x0f,0x17,0x02,0x02,0x07,0x00, -0x11,0xfd,0x07,0x00,0x00,0x04,0x1c,0x03,0xbb,0x05,0x08,0x07,0x00,0x32,0xdf,0xff, -0x0f,0x41,0x00,0x0a,0x07,0x00,0x13,0x0d,0x5e,0x03,0x13,0xcc,0x51,0x03,0x20,0x30, -0x00,0x96,0x0e,0x32,0xff,0xfc,0x20,0xb1,0x0d,0x12,0xe1,0x96,0x03,0x12,0xf8,0x13, -0x03,0x14,0xfd,0x86,0x00,0x12,0x01,0x07,0x00,0x02,0x1e,0x42,0x22,0x30,0x08,0x1c, -0x06,0x03,0xe1,0x0d,0x12,0xcf,0x6c,0x01,0x13,0xcf,0xdf,0x0b,0x05,0x20,0x3f,0x02, -0x8d,0x0e,0x33,0x04,0xee,0x40,0x64,0x02,0x0a,0x9f,0x04,0x30,0x00,0xf0,0x0f,0x03, -0x00,0x07,0x09,0x00,0x05,0x01,0x00,0x77,0xf8,0x08,0x80,0x88,0x08,0x80,0x8f,0x09, -0x00,0x07,0x36,0x00,0x00,0xf5,0x03,0x17,0x00,0x09,0x00,0x0e,0x15,0x0e,0x0a,0x01, -0x00,0x23,0x03,0xaf,0x10,0x04,0x11,0xcf,0x3b,0x04,0x00,0x95,0x54,0x01,0x32,0x07, -0x12,0x17,0x94,0x03,0x23,0x00,0x18,0xb6,0x00,0x13,0x2a,0xf9,0x42,0x13,0x08,0xe6, -0x0f,0x04,0x85,0x0e,0x13,0x60,0x12,0x00,0x14,0xfe,0xc5,0x04,0x14,0xf7,0x09,0x00, -0x14,0xf1,0x09,0x00,0x14,0x80,0x09,0x00,0x13,0x10,0x09,0x00,0x14,0xfa,0x27,0x07, -0x14,0xf2,0xae,0x05,0x09,0x48,0x07,0x00,0x1a,0x45,0x11,0xd1,0x75,0x0e,0x21,0xfd, -0x10,0xa3,0x03,0x11,0xd1,0x06,0x00,0x21,0xfd,0xff,0x54,0x02,0x0f,0xbe,0x05,0x29, -0x1d,0xdf,0x3c,0x05,0x60,0x04,0x9c,0xef,0xfe,0xc9,0x40,0x6e,0x20,0x11,0xef,0xc6, -0x00,0xf0,0x00,0x70,0x00,0x04,0xdf,0xff,0xfc,0xa8,0x8a,0xcf,0xff,0xfd,0x40,0x6f, -0xff,0xd5,0x23,0x00,0x53,0x5d,0xff,0xf6,0xcf,0xf6,0x24,0x05,0x50,0xfc,0x1a,0x30, -0x00,0x5a,0x1c,0x09,0x20,0x03,0xa1,0xc2,0x08,0x20,0xff,0xff,0x1c,0x09,0x00,0xe0, -0x56,0x50,0xa8,0x8a,0xef,0xff,0x50,0xef,0x06,0x00,0xb3,0x3f,0x01,0x72,0x06,0x13, -0x12,0x26,0x15,0x01,0xd2,0x08,0x05,0x5c,0x09,0x2e,0xef,0xfe,0x0a,0x00,0x02,0x1e, -0x00,0x15,0x8f,0x54,0x08,0x06,0xf0,0x05,0x04,0x8a,0x0b,0x27,0x0f,0xfd,0xbb,0x02, -0x03,0x0a,0x00,0x06,0xd6,0x02,0x09,0xe0,0x02,0x06,0x32,0x00,0x05,0x46,0x00,0x06, -0x5a,0x00,0x0f,0x64,0x00,0x11,0x24,0xf0,0x00,0x64,0x00,0x00,0x33,0x52,0x0e,0x0a, -0x00,0x0f,0x64,0x00,0x30,0x02,0x99,0x06,0x04,0x6a,0x10,0x0e,0x0a,0x00,0x0f,0x64, -0x00,0x2f,0x24,0xf0,0x00,0x64,0x00,0x02,0x10,0x07,0x0e,0x0a,0x00,0x0f,0x64,0x00, -0x2d,0x04,0x0a,0x00,0x06,0x2e,0x11,0x0e,0x0a,0x00,0x0f,0x64,0x00,0x0e,0x02,0x23, -0x09,0x05,0x8d,0x02,0x13,0x07,0xcc,0x08,0x00,0x42,0x1c,0x04,0x9b,0x09,0x33,0xb9, -0x29,0xfe,0x15,0x00,0x10,0x3f,0xba,0x43,0x00,0x3a,0x3a,0x31,0x80,0x0a,0x90,0x76, -0x58,0xf0,0x0c,0x00,0xdf,0xff,0x77,0xf7,0x55,0x55,0x55,0x55,0x8f,0xd3,0x0f,0xff, -0xfd,0xcc,0xdf,0xdc,0xcc,0xcc,0xcd,0xff,0xb0,0x8f,0xfe,0x10,0x00,0xaa,0x60,0x0b, -0x93,0x40,0x00,0x46,0x10,0x00,0x01,0xf2,0x02,0x33,0x40,0x00,0x44,0x09,0xb1,0xcf, -0xf9,0x30,0x08,0x03,0x35,0x05,0x01,0x00,0x08,0x15,0xf9,0x43,0x0a,0x12,0x22,0x78, -0x2d,0x70,0xfd,0x92,0x00,0x02,0xef,0xfb,0xef,0xd7,0x0b,0xf1,0x11,0xfa,0x2e,0xff, -0xe0,0x4f,0xff,0xfa,0x03,0xff,0xf5,0x9f,0xfa,0xfa,0x35,0x4f,0xfa,0xcf,0xc0,0x8a, -0x3d,0x0b,0xfd,0xef,0xfb,0x03,0x11,0x8f,0xfe,0xff,0xff,0xb0,0x06,0x17,0x08,0xf0, -0x0d,0x08,0xff,0xff,0xef,0xfd,0x11,0x10,0x9f,0xff,0xdf,0xd1,0x59,0x3b,0x0b,0xfd, -0xaf,0xd6,0xfa,0x37,0x1d,0xfb,0x5f,0xff,0xfa,0x01,0xdf,0xf7,0x0d,0xac,0x09,0x40, -0xf1,0x03,0xef,0xfc,0xe7,0x3e,0x40,0x18,0xdf,0xfe,0xa3,0xa8,0x0b,0x00,0x23,0x04, -0x03,0xf9,0x0c,0x18,0xef,0x3c,0x04,0x04,0xc8,0x13,0x04,0x07,0x00,0xcf,0xf9,0x9f, -0x99,0xf9,0x9f,0xf0,0x0f,0xf8,0x8f,0x88,0xf8,0x8f,0x07,0x00,0x12,0x03,0x31,0x00, -0x08,0xa4,0x0b,0x13,0x80,0x1c,0x0c,0x14,0xa0,0x24,0x0c,0x14,0xb0,0x36,0x0c,0x01, -0x12,0x00,0x22,0x7a,0x1d,0xa2,0x01,0x51,0x7f,0xfa,0x1d,0xff,0x70,0x20,0x00,0x22, -0xfa,0x1d,0x08,0x00,0x02,0xa5,0x04,0x11,0x7f,0x79,0x13,0x0f,0x08,0x00,0x07,0x13, -0x6f,0x08,0x00,0x13,0x0b,0x08,0x00,0x00,0xbc,0x04,0x12,0x70,0xde,0x05,0x03,0x68, -0x09,0x2d,0xde,0xdb,0x0c,0x48,0x12,0x1b,0xfe,0x01,0x10,0xe4,0x4c,0x0b,0x02,0x00, -0x01,0x00,0x1d,0x0b,0x80,0xfa,0xef,0xfe,0xaf,0xff,0xff,0x01,0xdf,0xb3,0x23,0x40, -0xe2,0x0a,0xff,0xff,0xca,0x48,0x42,0xe2,0x02,0x20,0x2e,0xae,0x07,0x48,0xfe,0x20, -0x02,0xef,0x0a,0x00,0x06,0x1e,0x00,0x06,0x32,0x00,0x06,0x46,0x00,0x07,0x5a,0x00, -0x06,0x6e,0x00,0x11,0x07,0x06,0x00,0x10,0x7f,0x16,0x00,0x71,0x07,0xf8,0x0f,0x0b, -0x40,0xff,0x7f,0x06,0x00,0x12,0xff,0x06,0x00,0x0f,0x01,0x00,0x22,0x02,0x34,0x05, -0x12,0x4e,0x60,0x00,0x19,0x00,0xce,0x02,0x20,0x03,0xe0,0x20,0x30,0x00,0xea,0x09, -0x31,0x10,0x00,0xbf,0x4b,0x01,0x50,0xf1,0x00,0xcf,0xf1,0x00,0xa3,0x25,0xa3,0x11, -0xcf,0xff,0x77,0x77,0x77,0x77,0xbf,0xf1,0xcf,0x47,0x00,0x23,0x17,0xff,0xda,0x14, -0x14,0x07,0x35,0x06,0x14,0x06,0x2c,0x06,0x02,0x2d,0x2f,0x0b,0x01,0x00,0x05,0xb2, -0x02,0x0e,0x01,0x00,0x04,0x21,0x0e,0x17,0xf1,0x14,0x00,0x79,0xfa,0xf9,0x00,0xfe, -0xf5,0x00,0xf5,0x6b,0x03,0x0a,0x04,0x07,0x12,0x05,0x83,0x30,0x0d,0x01,0x00,0x2f, -0xdc,0x00,0x01,0x00,0x18,0x1f,0xe1,0x21,0x00,0x0d,0x03,0x94,0x00,0xb2,0xf6,0x00, -0xfd,0x00,0x00,0xf1,0xfe,0xf6,0xfb,0x00,0xed,0x9f,0x00,0x9e,0xff,0x00,0x00,0xfe, -0xff,0xfa,0xfc,0x00,0x02,0x33,0x00,0x3f,0xfd,0x00,0xfd,0xef,0x00,0x07,0x06,0xc9, -0x06,0x03,0x56,0x08,0x0a,0xb9,0x15,0x19,0xfe,0x79,0x00,0x00,0x2d,0x00,0x10,0xf5, -0x50,0x00,0x2b,0xfb,0xfd,0x47,0x00,0x1d,0xfc,0x0f,0x01,0x05,0x42,0x00,0x11,0xfe, -0x45,0x00,0x29,0xfe,0xfd,0x33,0x00,0x75,0xde,0x00,0x00,0x00,0xe8,0x00,0xe6,0x27, -0x00,0x53,0xfc,0xfd,0x00,0x00,0xfd,0x04,0x00,0x0b,0x01,0x00,0x13,0x02,0x5f,0x00, -0x1e,0x02,0x1b,0x00,0x0e,0xc9,0x00,0x0f,0x01,0x00,0x0b,0x1b,0xec,0xaa,0x00,0x12, -0xfd,0x37,0x00,0x3c,0xfd,0xfb,0xf8,0xad,0x01,0x00,0x2d,0x4e,0x67,0xe6,0xfd,0xe6, -0xf4,0x00,0xdd,0x0c,0x01,0x28,0xf1,0xfa,0x4d,0x00,0x72,0xce,0x00,0x00,0x00,0xea, -0x00,0xe9,0x7f,0x01,0x30,0x00,0xfc,0x00,0x28,0x03,0x00,0x33,0x44,0x02,0x83,0x01, -0x2d,0xdb,0x00,0x22,0x01,0x2e,0xfd,0xfe,0x27,0x01,0x0d,0x01,0x00,0x10,0xfa,0x44, -0x00,0x09,0x68,0x00,0x09,0xb1,0x02,0xb1,0xe0,0xde,0x00,0x00,0xf1,0xfd,0xe5,0xfe, -0x02,0x00,0x02,0x69,0x00,0xf2,0x02,0xeb,0xf5,0x00,0xf5,0xe6,0xf8,0xf7,0x00,0xf8, -0xf6,0xfa,0xf6,0xf9,0x00,0xe8,0xf6,0xf4,0x7c,0x01,0x66,0xe5,0xec,0x00,0x00,0xf7, -0xfe,0x43,0x01,0x81,0xfa,0xfb,0x00,0x00,0xfa,0xfc,0x00,0x00,0x73,0x06,0x15,0x02, -0x59,0x01,0x22,0xee,0xf9,0xed,0x02,0x13,0x02,0x11,0x00,0x22,0xfc,0xfc,0x8a,0x01, -0x01,0x3a,0x00,0x07,0x4a,0x02,0x14,0xed,0x60,0x01,0x1a,0x02,0x38,0x01,0x17,0xfc, -0xdf,0x00,0xe0,0x03,0xfa,0xe3,0xed,0x00,0x00,0xed,0xfc,0xf4,0xfe,0x02,0xf4,0x02, -0x02,0x9e,0x00,0xf6,0x03,0xf8,0xf8,0xfd,0xfb,0xf8,0xfb,0xf9,0xfd,0xfb,0xfe,0x00, -0xfd,0xfc,0x02,0xf4,0xf8,0xf8,0xfa,0x91,0x00,0x1e,0xfd,0x86,0x01,0x0b,0x22,0x02, -0x05,0x80,0x02,0x1e,0xfe,0x2c,0x01,0x0d,0x9d,0x02,0x0f,0x1d,0x00,0x0a,0x0f,0x75, -0x01,0x0a,0x10,0xff,0xa1,0x02,0x1e,0x00,0xf9,0x02,0x0f,0x75,0x00,0x2d,0x1e,0x02, -0x0e,0x04,0x19,0x02,0xa4,0x02,0x13,0x02,0xc8,0x03,0x0f,0x01,0x00,0x27,0x0e,0x8a, -0x00,0x1f,0xf5,0x2f,0x00,0x0b,0x26,0xfd,0xfe,0x7b,0x00,0x1c,0xea,0x9f,0x02,0x30, -0xfe,0x03,0x00,0x6d,0x3b,0x2e,0x00,0x02,0x42,0x04,0x0e,0xec,0x03,0x0c,0xa0,0x03, -0x1c,0xeb,0x6c,0x00,0x2f,0xfe,0x02,0x29,0x01,0x01,0x1f,0xf1,0xea,0x00,0x27,0x1f, -0xfb,0x27,0x00,0x13,0x1f,0xfe,0x1c,0x00,0x21,0x22,0x00,0x01,0x8e,0x01,0x21,0x02, -0x03,0xc9,0x71,0x2e,0x04,0x05,0x78,0x4f,0xf1,0x0b,0x07,0x08,0x09,0x0a,0x0b,0x00, -0x0c,0x0c,0x0d,0x0e,0x0f,0x0c,0x0c,0x09,0x10,0x11,0x12,0x00,0x13,0x0d,0x14,0x15, -0x16,0x17,0x18,0x19,0x20,0x00,0x80,0x1a,0x1b,0x1c,0x00,0x1d,0x1e,0x00,0x1f,0x26, -0x36,0xff,0x00,0x1f,0x1f,0x21,0x1b,0x00,0x22,0x00,0x23,0x00,0x24,0x25,0x26,0x24, -0x27,0x28,0x73,0x00,0x04,0x11,0x06,0x01,0x00,0xe1,0x00,0x08,0x0a,0x0a,0x0a,0x0a, -0x0c,0x0c,0x0c,0x0c,0x09,0x0c,0x09,0x09,0xcc,0x6f,0x81,0x0d,0x0d,0x0d,0x0d,0x17, -0x00,0x00,0x1a,0x01,0x00,0x62,0x00,0x1c,0x1d,0x1d,0x1d,0x1d,0xf8,0x19,0x10,0x21, -0x01,0x00,0x02,0x3d,0x00,0x50,0x24,0x1b,0x24,0x06,0x1a,0x02,0x00,0x22,0x08,0x1c, -0x02,0x00,0x64,0x09,0x00,0x09,0x00,0x0a,0x1d,0x02,0x00,0x05,0x2e,0x17,0x44,0x1f, -0x00,0x00,0x0c,0x02,0x00,0x00,0xb1,0x08,0x00,0x10,0x52,0x13,0x0f,0x02,0x00,0x00, -0x1f,0x00,0x00,0x02,0x00,0x50,0x1f,0x00,0x00,0x09,0x21,0x02,0x00,0x12,0x00,0xe6, -0x22,0x05,0xdb,0x50,0x11,0x13,0x02,0x00,0x17,0x0d,0x02,0x00,0x70,0x15,0x00,0x17, -0x24,0x17,0x18,0x27,0x02,0x00,0x0f,0xb7,0x02,0x28,0x07,0x72,0x01,0x20,0x03,0x02, -0x6d,0x01,0x4a,0x06,0x07,0x06,0x08,0x1f,0x00,0x00,0xce,0x00,0x20,0x00,0x0b,0x13, -0x09,0x00,0xc1,0x00,0x01,0x08,0x00,0xd0,0x0b,0x00,0x0d,0x0e,0x0f,0x10,0x11,0x12, -0x13,0x14,0x00,0x00,0x15,0xe7,0x20,0x62,0x00,0x17,0x17,0x17,0x18,0x17,0x66,0x3d, -0xd1,0x19,0x1a,0x19,0x17,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1f,0x22,0x74,0x26, -0x1e,0x00,0x01,0x00,0x11,0x0a,0x01,0x00,0x26,0x24,0x0b,0x12,0x00,0x10,0x0b,0x01, -0x00,0xa1,0x00,0x0b,0x0f,0x0f,0x0f,0x0f,0x13,0x00,0x00,0x16,0x01,0x00,0x20,0x25, -0x17,0x01,0x00,0x02,0x57,0x00,0x02,0x83,0x01,0xa0,0x26,0x1e,0x1e,0x1e,0x1e,0x1f, -0x00,0x1f,0x0a,0x16,0x02,0x00,0x22,0x0b,0x17,0x02,0x00,0x20,0x00,0x17,0xe0,0x0e, -0x04,0x02,0x00,0x05,0x16,0x00,0x0b,0x01,0x00,0x1b,0x0c,0x10,0x00,0x10,0x19,0x02, -0x00,0x51,0x19,0x00,0x00,0x0b,0x1a,0x02,0x00,0x13,0x17,0x7f,0x16,0x12,0x1c,0x02, -0x00,0x30,0x0e,0x00,0x0e,0xc1,0x0a,0x16,0x1e,0x02,0x00,0x70,0x11,0x00,0x13,0x1f, -0x13,0x14,0x22,0x02,0x00,0x1f,0x00,0x74,0x01,0x26,0x50,0x00,0x00,0x00,0x00,0x00, +0x76,0xde,0x31,0x42,0x00,0x0b,0x0b,0x10,0xe3,0x08,0x14,0x24,0xd4,0x7e,0x83,0x19, +0x0f,0xef,0x2c,0x23,0x02,0x01,0x00,0x10,0x05,0x78,0x05,0x8f,0x6f,0x89,0xf4,0x00, +0x00,0x22,0x00,0x22,0xcc,0x23,0x2a,0x8f,0x00,0x4e,0xf5,0x00,0x00,0x6e,0x65,0xe7, +0x02,0x1d,0x2a,0x82,0xcd,0x01,0xeb,0x00,0x00,0xde,0x01,0xec,0x9d,0x00,0x0f,0x8f, +0x00,0x2a,0x01,0x07,0x32,0x20,0x00,0x8f,0x2c,0x07,0x2f,0x87,0x00,0x9c,0x32,0x2a, +0x10,0x00,0x47,0x19,0x21,0x06,0xfb,0x63,0x1e,0x0f,0xc6,0x2d,0x12,0x01,0xc0,0x00, +0x01,0x6d,0x1f,0x2f,0x00,0x21,0x7b,0x00,0x2c,0x22,0x0c,0xd1,0x3c,0x0e,0x2f,0x01, +0x20,0x7b,0x00,0x13,0x28,0xaf,0x46,0x83,0x06,0x0f,0x7b,0x00,0x29,0x71,0x06,0xf6, +0x4f,0x90,0x00,0x3d,0xe5,0x89,0x01,0x0f,0x7b,0x00,0x11,0x80,0x01,0xae,0xe3,0x0b, +0xff,0xf2,0x0f,0xf5,0x10,0x1f,0x0f,0x03,0x00,0x04,0x00,0x6e,0x00,0x70,0xe4,0xef, +0xfb,0xdf,0xfb,0x5e,0xd3,0x56,0x00,0x50,0x1e,0x82,0x00,0x00,0x0f,0xf0,0x39,0xf0, +0x03,0x5a,0xef,0xf8,0x00,0x01,0x7e,0xfc,0x07,0xcf,0xfe,0x92,0x1f,0xfb,0x50,0x00, +0x08,0x20,0x00,0x11,0x0a,0x68,0xfb,0x0c,0xcc,0xcc,0xc8,0x00,0x01,0x00,0x2f,0xf9, +0x00,0x01,0x00,0x06,0x13,0xfb,0x08,0x00,0x17,0xf1,0x14,0x00,0x70,0xfa,0xf9,0x00, +0xfe,0xf5,0x00,0xf5,0xea,0x0c,0x0f,0x35,0x00,0x03,0x22,0x03,0x05,0x54,0x17,0x0d, +0x01,0x00,0x2f,0xdc,0x00,0x01,0x00,0x18,0x1f,0xe1,0x21,0x00,0x0d,0x03,0x94,0x00, +0xb2,0xf6,0x00,0xfd,0x00,0x00,0xf1,0xfe,0xf6,0xfb,0x00,0xed,0x9f,0x00,0x9e,0xff, +0x00,0x00,0xfe,0xff,0xfa,0xfc,0x00,0x02,0x33,0x00,0x3f,0xfd,0x00,0xfd,0xef,0x00, +0x07,0x15,0xfd,0x0a,0x00,0x13,0xfc,0xc7,0x16,0x09,0x1f,0x00,0x19,0xfe,0x79,0x00, +0x00,0x2d,0x00,0x10,0xf5,0x50,0x00,0x2b,0xfb,0xfd,0x47,0x00,0x1d,0xfc,0x0f,0x01, +0x05,0x42,0x00,0x11,0xfe,0x45,0x00,0x29,0xfe,0xfd,0x33,0x00,0x75,0xde,0x00,0x00, +0x00,0xe8,0x00,0xe6,0x27,0x00,0x53,0xfc,0xfd,0x00,0x00,0xfd,0x04,0x00,0x0b,0x01, +0x00,0x13,0x02,0x5f,0x00,0x1e,0x02,0x1b,0x00,0x0e,0xc9,0x00,0x0f,0x01,0x00,0x0b, +0x1b,0xec,0xaa,0x00,0x12,0xfd,0x37,0x00,0x3c,0xfd,0xfb,0xf8,0xad,0x01,0xa7,0x02, +0xf8,0x00,0x00,0xe6,0xfd,0xe6,0xf4,0x00,0xdd,0x0c,0x01,0x28,0xf1,0xfa,0x4d,0x00, +0x72,0xce,0x00,0x00,0x00,0xea,0x00,0xe9,0x7f,0x01,0x30,0x00,0xfc,0x00,0xe7,0x39, +0x00,0x04,0x2b,0x02,0x83,0x01,0x2d,0xdb,0x00,0x22,0x01,0x2e,0xfd,0xfe,0x27,0x01, +0x0d,0x01,0x00,0x10,0xfa,0x44,0x00,0x09,0x68,0x00,0x09,0xb1,0x02,0xb1,0xe0,0xde, +0x00,0x00,0xf1,0xfd,0xe5,0xfe,0x02,0x00,0x02,0x69,0x00,0xf2,0x02,0xeb,0xf5,0x00, +0xf5,0xe6,0xf8,0xf7,0x00,0xf8,0xf6,0xfa,0xf6,0xf9,0x00,0xe8,0xf6,0xf4,0x7c,0x01, +0x66,0xe5,0xec,0x00,0x00,0xf7,0xfe,0x43,0x01,0xa3,0xfa,0xfb,0x00,0x00,0xfa,0xfc, +0x00,0x00,0xfd,0xff,0x51,0x01,0x02,0x59,0x01,0x22,0xee,0xf9,0xed,0x02,0x13,0x02, +0x11,0x00,0x22,0xfc,0xfc,0x8a,0x01,0x01,0x3a,0x00,0x07,0x4a,0x02,0x14,0xed,0x60, +0x01,0x1a,0x02,0x38,0x01,0x17,0xfc,0xdf,0x00,0xe0,0x03,0xfa,0xe3,0xed,0x00,0x00, +0xed,0xfc,0xf4,0xfe,0x02,0xf4,0x02,0x02,0x9e,0x00,0xf6,0x03,0xf8,0xf8,0xfd,0xfb, +0xf8,0xfb,0xf9,0xfd,0xfb,0xfe,0x00,0xfd,0xfc,0x02,0xf4,0xf8,0xf8,0xfa,0x91,0x00, +0x1e,0xfd,0x86,0x01,0x0b,0x22,0x02,0x05,0x80,0x02,0x1e,0xfe,0x2c,0x01,0x0d,0x9d, +0x02,0x0f,0x1d,0x00,0x0a,0x0f,0x75,0x01,0x0a,0x10,0xff,0xa1,0x02,0x1e,0x00,0xf9, +0x02,0x0f,0x75,0x00,0x2d,0x1e,0x02,0x0e,0x04,0x19,0x02,0xa4,0x02,0x13,0x02,0xc8, +0x03,0x0f,0x01,0x00,0x27,0x0e,0x8a,0x00,0x1f,0xf5,0x2f,0x00,0x0b,0x26,0xfd,0xfe, +0x7b,0x00,0x1c,0xea,0x9f,0x02,0x30,0xfe,0x03,0x00,0x3e,0x22,0x2e,0x00,0x02,0x42, +0x04,0x0e,0xec,0x03,0x0c,0xa0,0x03,0x1c,0xeb,0x6c,0x00,0x2f,0xfe,0x02,0x29,0x01, +0x01,0x1f,0xf1,0xea,0x00,0x27,0x1f,0xfb,0x27,0x00,0x13,0x1f,0xfe,0x1c,0x00,0x21, +0x22,0x00,0x01,0x8e,0x01,0x21,0x02,0x03,0x91,0x4e,0x2d,0x04,0x05,0x21,0x00,0xf1, +0x0c,0x06,0x07,0x08,0x09,0x0a,0x0b,0x00,0x0c,0x0c,0x0d,0x0e,0x0f,0x0c,0x0c,0x09, +0x10,0x11,0x12,0x00,0x13,0x0d,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x00,0x80,0x1a, +0x1b,0x1c,0x00,0x1d,0x1e,0x00,0x1f,0xf7,0x1c,0xf1,0x00,0x1f,0x1f,0x21,0x1b,0x00, +0x22,0x00,0x23,0x00,0x24,0x25,0x26,0x24,0x27,0x28,0x3f,0x00,0x01,0x01,0x00,0xe1, +0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0c,0x0c,0x0c,0x0c,0x09,0x0c,0x09,0x09,0x81,0x4c, +0x81,0x0d,0x0d,0x0d,0x0d,0x17,0x00,0x00,0x1a,0x01,0x00,0x62,0x00,0x1c,0x1d,0x1d, +0x1d,0x1d,0x7e,0x0b,0x10,0x21,0x01,0x00,0x02,0x7c,0x00,0x50,0x24,0x1b,0x24,0x06, +0x1a,0x02,0x00,0x22,0x08,0x1c,0x02,0x00,0x64,0x09,0x00,0x09,0x00,0x0a,0x1d,0x02, +0x00,0x04,0xa3,0x00,0x54,0x0c,0x1f,0x00,0x00,0x0c,0x02,0x00,0x00,0xc9,0x18,0x53, +0x00,0x0e,0x00,0x00,0x0f,0x02,0x00,0x00,0x1f,0x00,0x00,0x02,0x00,0x50,0x1f,0x00, +0x00,0x09,0x21,0x02,0x00,0x12,0x00,0xa4,0x09,0x14,0x22,0x3e,0x00,0x11,0x13,0x02, +0x00,0x17,0x0d,0x02,0x00,0x70,0x15,0x00,0x17,0x24,0x17,0x18,0x27,0x02,0x00,0x06, +0x23,0x01,0x20,0x03,0x02,0x1e,0x01,0x4a,0x06,0x07,0x06,0x08,0x21,0x01,0x00,0x92, +0x00,0x20,0x00,0x0b,0x6b,0x42,0x00,0x85,0x00,0x01,0x08,0x00,0xf2,0x08,0x0b,0x00, +0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x00,0x00,0x15,0x00,0x00,0x00,0x16,0x00, +0x17,0x17,0x17,0x18,0x17,0xe8,0x23,0xd1,0x19,0x1a,0x19,0x17,0x1b,0x1c,0x1d,0x1e, +0x1f,0x20,0x21,0x1f,0x22,0xf6,0x0c,0x11,0x0a,0x01,0x00,0x26,0x24,0x0b,0x53,0x00, +0x10,0x0b,0x01,0x00,0xa1,0x00,0x0b,0x0f,0x0f,0x0f,0x0f,0x13,0x00,0x00,0x16,0x01, +0x00,0x20,0x25,0x17,0x01,0x00,0x02,0x44,0x00,0x02,0x34,0x01,0xa0,0x26,0x1e,0x1e, +0x1e,0x1e,0x1f,0x00,0x1f,0x0a,0x16,0x02,0x00,0x22,0x0b,0x17,0x02,0x00,0x10,0x00, +0x24,0x00,0x14,0x17,0x02,0x00,0x05,0x16,0x00,0x0b,0x01,0x00,0x1b,0x0c,0x10,0x00, +0x10,0x19,0x02,0x00,0x51,0x19,0x00,0x00,0x0b,0x1a,0x02,0x00,0x03,0x30,0x00,0x22, +0x0d,0x1c,0x02,0x00,0x30,0x0e,0x00,0x0e,0x4b,0x0f,0x16,0x1e,0x02,0x00,0xe0,0x11, +0x00,0x13,0x1f,0x13,0x14,0x22,0x14,0x22,0x14,0x22,0x00,0x27,0x00, }; static const etxFontCmap cmaps[] __FLASH = { { .range_start = 32, .range_length = 95, .glyph_id_start = 1, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 128, .range_length = 4, .glyph_id_start = 96, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 136, .range_length = 15, .glyph_id_start = 100, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 176, .range_length = 1, .glyph_id_start = 115, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 192, .range_length = 192, .glyph_id_start = 116, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, -{ .range_start = 8226, .range_length = 55425, .glyph_id_start = 308, .list_length = 62, .type = 3, .unicode_list = 2960, .glyph_id_ofs_list = 0 }, +{ .range_start = 176, .range_length = 1, .glyph_id_start = 96, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, +{ .range_start = 192, .range_length = 192, .glyph_id_start = 97, .list_length = 0, .type = 2, .unicode_list = 0, .glyph_id_ofs_list = 0 }, +{ .range_start = 8226, .range_length = 580, .glyph_id_start = 289, .list_length = 2, .type = 3, .unicode_list = 2328, .glyph_id_ofs_list = 0 }, }; const etxLz4Font lv_font_en_bold_STD __FLASH = { -.uncomp_size = 29867, -.comp_size = 15856, +.uncomp_size = 20693, +.comp_size = 10525, .line_height = 20, .base_line = 4, .subpx = 0, .underline_position = -1, .underline_thickness = 1, .kern_scale = 16, -.cmap_num = 6, +.cmap_num = 4, .bpp = 4, .kern_classes = 1, .bitmap_format = 0, .left_class_cnt = 40, .right_class_cnt = 39, -.glyph_bitmap = 3084, -.class_pair_values = 27567, -.left_class_mapping = 29127, -.right_class_mapping = 29497, +.glyph_bitmap = 2332, +.class_pair_values = 18551, +.left_class_mapping = 20111, +.right_class_mapping = 20402, .cmaps = cmaps, .compressed = lz4FontData, -.lvglFontBufSize = 30203, +.lvglFontBufSize = 20965, }; diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index 9c71270169d..b98185b299d 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -152,8 +152,12 @@ uint8_t viewOptCheckBox(coord_t y, const char* title, uint8_t value, uint8_t att void menuRadioSetup(event_t event) { #if defined(RTCLOCK) - struct gtm t; - gettime(&t); + static struct gtm t; + struct gtm ct; + gettime(&ct); + + if (event == EVT_ENTRY) + t = ct; if ((menuVerticalPosition == ITEM_RADIO_SETUP_DATE + HEADER_LINE || menuVerticalPosition == ITEM_RADIO_SETUP_TIME + HEADER_LINE) && @@ -296,11 +300,13 @@ void menuRadioSetup(event_t event) lcdDrawNumber(RADIO_SETUP_2ND_COLUMN-2, y, t.tm_year+TM_YEAR_BASE, rowattr); lcdDrawChar(lcdNextPos, y, '-'); if (rowattr && s_editMode > 0) t.tm_year = checkIncDec(event, t.tm_year, 123, 137, 0); + else t.tm_year = ct.tm_year; break; case 1: lcdDrawNumber(lcdNextPos, y, t.tm_mon+1, rowattr|LEADING0, 2); lcdDrawChar(lcdNextPos, y, '-'); if (rowattr && s_editMode > 0) t.tm_mon = checkIncDec(event, t.tm_mon, 0, 11, 0); + else t.tm_mon = ct.tm_mon; break; case 2: { @@ -310,6 +316,7 @@ void menuRadioSetup(event_t event) dlim += dmon[t.tm_mon]; lcdDrawNumber(lcdNextPos, y, t.tm_mday, rowattr|LEADING0, 2); if (rowattr && s_editMode > 0) t.tm_mday = checkIncDec(event, t.tm_mday, 1, dlim, 0); + else t.tm_mday = ct.tm_mday; break; } } @@ -328,15 +335,18 @@ void menuRadioSetup(event_t event) lcdDrawNumber(LCD_W-6*FW-5, y, t.tm_hour, rowattr|LEADING0, 2); lcdDrawChar(lcdNextPos + 1, y, ':'); if (rowattr && s_editMode > 0) t.tm_hour = checkIncDec(event, t.tm_hour, 0, 23, 0); + else t.tm_hour = ct.tm_hour; break; case 1: lcdDrawNumber(lcdNextPos + 1, y, t.tm_min, rowattr|LEADING0, 2); lcdDrawChar(lcdNextPos + 1, y, ':'); if (rowattr && s_editMode > 0) t.tm_min = checkIncDec(event, t.tm_min, 0, 59, 0); + else t.tm_min = ct.tm_min; break; case 2: lcdDrawNumber(lcdNextPos + 1, y, t.tm_sec, rowattr|LEADING0, 2); if (rowattr && s_editMode > 0) t.tm_sec = checkIncDec(event, t.tm_sec, 0, 59, 0); + else t.tm_sec = ct.tm_sec; break; } } diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp index b7640ef19b7..fe1ee3b818f 100644 --- a/radio/src/gui/212x64/radio_setup.cpp +++ b/radio/src/gui/212x64/radio_setup.cpp @@ -154,8 +154,12 @@ uint8_t viewOptCheckBox(coord_t y, const char* title, uint8_t value, uint8_t att void menuRadioSetup(event_t event) { #if defined(RTCLOCK) - struct gtm t; - gettime(&t); + static struct gtm t; + struct gtm ct; + gettime(&ct); + + if (event == EVT_ENTRY) + t = ct; if ((menuVerticalPosition==ITEM_RADIO_SETUP_DATE || menuVerticalPosition==ITEM_RADIO_SETUP_TIME) && (s_editMode>0) && @@ -297,10 +301,12 @@ void menuRadioSetup(event_t event) case 0: lcdDrawNumber(RADIO_SETUP_DATE_COLUMN, y, t.tm_year+TM_YEAR_BASE, rowattr|RIGHT); if (rowattr && s_editMode>0) t.tm_year = checkIncDec(event, t.tm_year, 123, 137, 0); + else t.tm_year = ct.tm_year; break; case 1: lcdDrawNumber(RADIO_SETUP_DATE_COLUMN+3*FW-2, y, t.tm_mon+1, rowattr|LEADING0|RIGHT, 2); if (rowattr && s_editMode>0) t.tm_mon = checkIncDec(event, t.tm_mon, 0, 11, 0); + else t.tm_mon = ct.tm_mon; break; case 2: { @@ -310,6 +316,7 @@ void menuRadioSetup(event_t event) dlim += dmon[t.tm_mon]; lcdDrawNumber(RADIO_SETUP_DATE_COLUMN+6*FW-4, y, t.tm_mday, rowattr|LEADING0|RIGHT, 2); if (rowattr && s_editMode>0) t.tm_mday = checkIncDec(event, t.tm_mday, 1, dlim, 0); + else t.tm_mday = ct.tm_mday; break; } } @@ -329,14 +336,17 @@ void menuRadioSetup(event_t event) case 0: lcdDrawNumber(RADIO_SETUP_TIME_COLUMN, y, t.tm_hour, rowattr|LEADING0|RIGHT, 2); if (rowattr && s_editMode>0) t.tm_hour = checkIncDec(event, t.tm_hour, 0, 23, 0); + else t.tm_hour = ct.tm_hour; break; case 1: lcdDrawNumber(RADIO_SETUP_TIME_COLUMN+3*FWNUM, y, t.tm_min, rowattr|LEADING0|RIGHT, 2); if (rowattr && s_editMode>0) t.tm_min = checkIncDec(event, t.tm_min, 0, 59, 0); + else t.tm_min = ct.tm_min; break; case 2: lcdDrawNumber(RADIO_SETUP_TIME_COLUMN+6*FWNUM, y, t.tm_sec, rowattr|LEADING0|RIGHT, 2); if (rowattr && s_editMode>0) t.tm_sec = checkIncDec(event, t.tm_sec, 0, 59, 0); + else t.tm_sec = ct.tm_sec; break; } } diff --git a/radio/src/gui/colorlcd/boot_menu.cpp b/radio/src/gui/colorlcd/boot_menu.cpp index 4086d8b62b9..00ba0b53017 100644 --- a/radio/src/gui/colorlcd/boot_menu.cpp +++ b/radio/src/gui/colorlcd/boot_menu.cpp @@ -341,16 +341,20 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) lcd.drawText(USB_TXT_X, y + USB_PLG_TXT_YO, TR_BL_USB_CONNECTED, USB_TXT_ALIGN | BL_FOREGROUND); } else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || st == ST_FLASH_CHECK || - st == ST_FLASHING || st == ST_FLASH_DONE) { + st == ST_FLASHING || st == ST_FLASH_DONE || st == ST_FLASH_ERROR) { bootloaderDrawTitle(LV_SYMBOL_SD_CARD " /FIRMWARE"); - if (st == ST_FLASHING || st == ST_FLASH_DONE) { + if (st == ST_FLASHING || st == ST_FLASH_DONE || st == ST_FLASH_ERROR) { LcdFlags color = BL_RED; if (st == ST_FLASH_DONE) { color = BL_GREEN; opt = 100; // Completed > 100% + } else if (st == ST_FLASH_ERROR) { + // the bar stays where the write gave up + lcd.drawText(LCD_W / 2, (LCD_H - PROGRESS_H) / 2 - EdgeTxStyles::STD_FONT_HEIGHT, + LV_SYMBOL_CLOSE " " TR_BL_WRITING_FAILED, CENTERED | BL_FOREGROUND); } lcd.drawRect(PROGRESS_X, (LCD_H - PROGRESS_H) / 2, PROGRESS_W, PROGRESS_H, LINE_H, SOLID, BL_SELECTED); @@ -405,6 +409,9 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) else if (st == ST_FLASH_DONE) { pos = lcd.drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE " " TR_BL_WRITING_COMPL, FOOTER_ALIGN1 | BL_FOREGROUND); } + else if (st == ST_FLASH_ERROR) { + pos = lcd.drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE " " TR_BL_RETRY_OR_DFU, FOOTER_ALIGN1 | BL_FOREGROUND); + } } #if LANDSCAPE pos = 0; diff --git a/radio/src/gui/colorlcd/controls/color_editor.cpp b/radio/src/gui/colorlcd/controls/color_editor.cpp index 384dcbe6a5a..8021c995d76 100644 --- a/radio/src/gui/colorlcd/controls/color_editor.cpp +++ b/radio/src/gui/colorlcd/controls/color_editor.cpp @@ -36,8 +36,6 @@ class ColorBar : public FormField uint32_t maxValue = 0) : FormField(parent, r) { - lv_obj_add_flag(lvobj, LV_OBJ_FLAG_ENCODER_ACCEL); - lv_group_add_obj((lv_group_t*)lv_group_get_default(), lvobj); lv_obj_add_event_cb(lvobj, ColorBar::pressing, LV_EVENT_PRESSING, nullptr); diff --git a/radio/src/gui/colorlcd/controls/sourcechoice.cpp b/radio/src/gui/colorlcd/controls/sourcechoice.cpp index 24b11c3d5b6..a20782a5e4a 100644 --- a/radio/src/gui/colorlcd/controls/sourcechoice.cpp +++ b/radio/src/gui/colorlcd/controls/sourcechoice.cpp @@ -185,7 +185,7 @@ void SourceChoice::openMenu() #if defined(AUTOSOURCE) menu->setWaitHandler([=]() { int16_t val = getMovedSource(vmin); - if (val) { + if (val && (!isValueAvailable || isValueAvailable(val))) { tb->resetFilter(); menu->select(getIndexFromValue(val)); } @@ -194,7 +194,7 @@ void SourceChoice::openMenu() swsrc_t swtch = abs(getMovedSwitch()); if (swtch && !IS_SWITCH_MULTIPOS(swtch)) { val = switchToMix(swtch); - if (val && (val >= vmin) && (val <= vmax)) { + if (val && (val >= vmin) && (val <= vmax) && (!isValueAvailable || isValueAvailable(val))) { tb->resetFilter(); menu->select(getIndexFromValue(val)); } diff --git a/radio/src/gui/colorlcd/fonts.cpp b/radio/src/gui/colorlcd/fonts.cpp index 54002ef3200..46e0133c8bb 100644 --- a/radio/src/gui/colorlcd/fonts.cpp +++ b/radio/src/gui/colorlcd/fonts.cpp @@ -441,6 +441,11 @@ void decompressFont(int idx, etxLvglFont* fonts) } #endif + if (idx == FONT_BOLD_INDEX && fonts[idx].lz4Font == &lv_font_en_bold_STD) { + // EN BOLD font falls back to EN STD for missing chars + lvglFont->fallback = fonts[FONT_STD_INDEX].lvglFont; + } + // Set LVGL font loaded flag fonts[idx].loaded = true; } diff --git a/radio/src/gui/colorlcd/lcd.cpp b/radio/src/gui/colorlcd/lcd.cpp index 4fc15b849c4..ce38927756f 100644 --- a/radio/src/gui/colorlcd/lcd.cpp +++ b/radio/src/gui/colorlcd/lcd.cpp @@ -98,6 +98,52 @@ static void flushLcd(lv_disp_drv_t* disp_drv, const lv_area_t* area, } } +// Same accounting as LVGL's LV_USE_PERF_MONITOR, without the overlay +#define PERF_WINDOW_MS 300 + +static uint32_t perf_elaps_sum = 0; +static uint32_t perf_frame_cnt = 0; +static uint32_t perf_last_time = 0; +static uint32_t perf_fps = 0; + +static void perfUpdate() +{ + if (lv_tick_elaps(perf_last_time) >= PERF_WINDOW_MS) { + perf_last_time = lv_tick_get(); + + uint32_t period = LV_DISP_DEF_REFR_PERIOD; + lv_disp_t* disp = lv_disp_get_default(); + if (disp && disp->refr_timer) period = disp->refr_timer->period; + uint32_t fps_limit = 1000 / period; + + if (perf_frame_cnt == 0) { + perf_fps = fps_limit; + } else { + if (perf_elaps_sum == 0) perf_elaps_sum = 1; + perf_fps = (1000 * perf_frame_cnt) / perf_elaps_sum; + if (perf_fps > fps_limit) perf_fps = fps_limit; + } + perf_elaps_sum = 0; + perf_frame_cnt = 0; + } +} + +static void perfMonitorCb(lv_disp_drv_t* disp_drv, uint32_t time, uint32_t px) +{ + perfUpdate(); + if (px > 5000) { + perf_elaps_sum += time; + perf_frame_cnt++; + } +} + +void lcdGetPerfStats(uint32_t& fps, uint32_t& taskload) +{ + perfUpdate(); + fps = perf_fps; + taskload = 100 - lv_timer_get_idle(); +} + static void clear_frame_buffers() { memset(LCD_FIRST_FRAME_BUFFER, 0, sizeof(LCD_FIRST_FRAME_BUFFER)); @@ -123,6 +169,7 @@ static void init_lvgl_disp_drv() disp_drv.draw_buf = &disp_buf; /*Set an initialized buffer*/ disp_drv.flush_cb = flushLcd; /*Set a flush callback to draw to the display*/ + disp_drv.monitor_cb = perfMonitorCb; #if defined(SIMU) disp_drv.wait_cb = lcd_wait_cb; /*Set a wait callback*/ #endif diff --git a/radio/src/gui/colorlcd/lcd.h b/radio/src/gui/colorlcd/lcd.h index caef6dd19a1..c5d64e4ba34 100644 --- a/radio/src/gui/colorlcd/lcd.h +++ b/radio/src/gui/colorlcd/lcd.h @@ -52,3 +52,6 @@ void lcdClear(); void lcdRefresh(); extern "C" void lcdFlushed(); + +// LVGL render rate (capped at refresh rate) and UI task load in % +void lcdGetPerfStats(uint32_t& fps, uint32_t& taskload); diff --git a/radio/src/gui/colorlcd/libui/file_browser.cpp b/radio/src/gui/colorlcd/libui/file_browser.cpp index 07f9c61cc3f..65f1a753c28 100644 --- a/radio/src/gui/colorlcd/libui/file_browser.cpp +++ b/radio/src/gui/colorlcd/libui/file_browser.cpp @@ -89,26 +89,37 @@ static bool natural_compare_nocase(const std::string & first, const std::string return strnatcasecmp(first.c_str(), second.c_str()) < 0; } -static int scan_files(std::list& files, +int FileBrowser::scan_files(std::list& files, std::list& directories) { FILINFO fno; DIR dir; - FRESULT res = f_opendir(&dir, "."); // Open the directory + // A Lua script can chdir() behind the browser's back: point FatFs back at + // the tracked folder and list that, so the list and file actions agree. + if (etxChdir(currentPath.c_str()) != FR_OK) { + currentPath = ROOT_PATH; + etxChdir(currentPath.c_str()); + } + + FRESULT res = f_opendir(&dir, currentPath.c_str()); // Open the directory if (res != FR_OK) return -1; // read all entries bool firstTime = true; for (;;) { - res = sdReadDir(&dir, &fno, firstTime); + if (firstTime && currentPath != ROOT_PATH) { + strcpy(fno.fname, ".."); + fno.fattrib = AM_DIR; + } else { + res = f_readdir(&dir, &fno); - if (res != FR_OK || fno.fname[0] == 0) - break; // Break on error or end of dir - // if (strlen((const char*)fno.fname) > SD_SCREEN_FILE_LENGTH) - // continue; - if (fno.fattrib & (AM_HID|AM_SYS)) continue; /* Ignore hidden and system files */ - if (fno.fname[0] == '.' && fno.fname[1] != '.') continue; // Ignore hidden files under UNIX, but not .. + if (res != FR_OK || fno.fname[0] == 0) + break; // Break on error or end of dir + if (fno.fattrib & (AM_HID|AM_SYS)) continue; /* Ignore hidden and system files */ + if (fno.fname[0] == '.') continue; // Ignore hidden files under UNIX + } + firstTime = false; if (fno.fattrib & AM_DIR) { directories.push_back((char*)fno.fname); @@ -123,10 +134,25 @@ static int scan_files(std::list& files, return 0; } +void FileBrowser::setFullPath(const char* name) +{ + if (currentPath.back() == '/') + fullPathBuf = currentPath + name; + else + fullPathBuf = currentPath + "/" + name; +} + FileBrowser::FileBrowser(Window* parent, const rect_t& rect, const char* dir) : - TableField(parent, rect) + TableField(parent, rect), currentPath((dir && dir[0]) ? dir : "/") { - f_chdir(dir); + // Normalize once: drop any trailing slash (except root) so the join/parent + // logic never has to deal with it later. + while (currentPath.size() > 1 && currentPath.back() == '/') currentPath.pop_back(); + + if (etxChdir(currentPath.c_str()) != FR_OK) { + currentPath = ROOT_PATH; // keep currentPath in sync with the FatFs CWD + etxChdir(currentPath.c_str()); + } setAutoEdit(); @@ -137,35 +163,6 @@ FileBrowser::FileBrowser(Window* parent, const rect_t& rect, const char* dir) : }); } -const char* FileBrowser::getCurrentPath() -{ - static char path[FF_MAX_LFN + 1]; - f_getcwd((TCHAR*)path, FF_MAX_LFN); - return path; -} - -const char* FileBrowser::getFullPath(const char* filename) -{ - static char full_path[FF_MAX_LFN + 1]; - f_getcwd((TCHAR*)full_path, FF_MAX_LFN); - - if (strcmp(filename, "..") == 0) { - for (int i = strlen(full_path) - 1; i >= 0; i -= 1) - if (full_path[i] == '/') { - full_path[i] = 0; - break; - } - if (full_path[0] == 0) - strcpy(full_path, ROOT_PATH); - } else { - if (full_path[strlen(full_path) - 1] != '/') - strcat(full_path, "/"); - strcat(full_path, filename); - } - - return full_path; -} - void FileBrowser::setFileAction(FileAction fct) { fileAction = std::move(fct); } void FileBrowser::setFileSelected(FileAction fct) { fileSelected = std::move(fct); } @@ -258,16 +255,25 @@ void FileBrowser::onSelected(const char* name, bool is_dir) return; } - const char* fullpath = getFullPath(name); - if (fileSelected) fileSelected(getCurrentPath(), name, fullpath, is_dir); + setFullPath(name); + if (fileSelected) fileSelected(currentPath.c_str(), name, fullPathBuf.c_str(), is_dir); selected = name; } void FileBrowser::onPress(const char* name, bool is_dir) { - const char* fullpath = getFullPath(name); if (is_dir) { - f_chdir(fullpath); + std::string nextPath = currentPath; + if (strcmp(name, "..") == 0) { + // Go up: trim last segment (f_chdir("..") / f_getcwd are no-ops on exFAT). + auto pos = nextPath.find_last_of('/'); + nextPath = (pos == 0 || pos == std::string::npos) ? "/" : nextPath.substr(0, pos); + } else { + setFullPath(name); + nextPath = fullPathBuf; + } + // Only commit the tracked path if the CWD actually changed. + if (etxChdir(nextPath.c_str()) == FR_OK) currentPath = nextPath; if (fileSelected) fileSelected(nullptr, nullptr, nullptr, is_dir); selected = nullptr; refresh(); @@ -280,19 +286,22 @@ void FileBrowser::onPress(const char* name, bool is_dir) } if (fileAction){ - fileAction(getCurrentPath(), name, fullpath, is_dir); + setFullPath(name); + fileAction(currentPath.c_str(), name, fullPathBuf.c_str(), is_dir); } } void FileBrowser::onPressLong(const char* name, bool is_dir) { - const char* fullpath = getFullPath(name); + // the synthetic parent-directory row is navigation-only + if (strcmp(name, "..") == 0) return; if (!selected || (selected != name)) { onSelected(name, is_dir); } if (fileAction){ - fileAction(getCurrentPath(), name, fullpath, is_dir); + setFullPath(name); + fileAction(currentPath.c_str(), name, fullPathBuf.c_str(), is_dir); } } diff --git a/radio/src/gui/colorlcd/libui/file_browser.h b/radio/src/gui/colorlcd/libui/file_browser.h index 4397aeffd9c..6ca4fec5866 100644 --- a/radio/src/gui/colorlcd/libui/file_browser.h +++ b/radio/src/gui/colorlcd/libui/file_browser.h @@ -21,6 +21,8 @@ #pragma once +#include + #include "table.h" class FileBrowser : public TableField @@ -51,10 +53,16 @@ class FileBrowser : public TableField void onPress(const char* name, bool is_dir); void onPressLong(const char* name, bool is_dir); - const char* getCurrentPath(); - const char* getFullPath(const char* filename); - private: + // Current dir, tracked explicitly because f_getcwd() is broken on exFAT. + std::string currentPath; + // Outlives the file-action call: callbacks capture the pointer for later use. + std::string fullPathBuf; + void setFullPath(const char* name); + + int scan_files(std::list& files, + std::list& directories); + const char* selected = nullptr; FileAction fileAction; FileAction fileSelected; diff --git a/radio/src/gui/colorlcd/libui/filechoice.cpp b/radio/src/gui/colorlcd/libui/filechoice.cpp index ed42a583f04..41dfd6cb089 100644 --- a/radio/src/gui/colorlcd/libui/filechoice.cpp +++ b/radio/src/gui/colorlcd/libui/filechoice.cpp @@ -126,15 +126,14 @@ void FileChoice::loadFiles() FRESULT res = f_opendir(&dir, folder.c_str()); // Open the directory if (res == FR_OK) { - bool firstTime = true; for (;;) { - res = sdReadDir(&dir, &fno, firstTime); + res = f_readdir(&dir, &fno); if (res != FR_OK || fno.fname[0] == 0) break; // break on error or end of dir if (fno.fattrib & (AM_HID | AM_SYS | AM_DIR)) continue; // Ignore subfolders, hidden files and system files - if (fno.fname[0] == '.' && fno.fname[1] != '.') - continue; // Ignore hidden files under UNIX, but not .. + if (fno.fname[0] == '.') + continue; // Ignore hidden files under UNIX fnExt = getFileExtension(fno.fname, 0, 0, &fnLen, &extLen); diff --git a/radio/src/gui/colorlcd/libui/libopenui_defines.h b/radio/src/gui/colorlcd/libui/libopenui_defines.h index fd58f169a84..3149a90e89f 100644 --- a/radio/src/gui/colorlcd/libui/libopenui_defines.h +++ b/radio/src/gui/colorlcd/libui/libopenui_defines.h @@ -46,5 +46,3 @@ /* telemetry flags */ #define NO_UNIT 0x40u - -#define LV_OBJ_FLAG_ENCODER_ACCEL LV_OBJ_FLAG_USER_1 diff --git a/radio/src/gui/colorlcd/libui/listbox.cpp b/radio/src/gui/colorlcd/libui/listbox.cpp index 6375697a948..2d01743317d 100644 --- a/radio/src/gui/colorlcd/libui/listbox.cpp +++ b/radio/src/gui/colorlcd/libui/listbox.cpp @@ -151,21 +151,20 @@ void ListBox::onDrawEnd(uint16_t row, uint16_t col, lv_obj_draw_part_dsc_t* dsc) const char* sym = LV_SYMBOL_OK; if (getSelectedSymbol) sym = getSelectedSymbol(row); - lv_coord_t w = 30; - lv_coord_t h = 12; - lv_coord_t xo = 1; - lv_coord_t yo = 1; + LAYOUT_VAL_SCALED(w, 30) + lv_coord_t h = LAYOUT_SCALE(12); + lv_coord_t xo = PAD_TINY; + lv_coord_t yo = PAD_TINY; if (smallSelectMarker) { // Check for non-LVGL symbol if (sym[0] != (char)0xEF) { - yo = -2; + yo = -PAD_TINY; xo = 0; } label_dsc.font = getFont(FONT(XS)); } else { h = getFontHeight(FONT(STD)); - xo = 2; yo = (lv_area_get_height(dsc->draw_area) - h) / 2; } diff --git a/radio/src/gui/colorlcd/libui/menu.cpp b/radio/src/gui/colorlcd/libui/menu.cpp index fbe79cce8b5..80b56dbe697 100644 --- a/radio/src/gui/colorlcd/libui/menu.cpp +++ b/radio/src/gui/colorlcd/libui/menu.cpp @@ -68,9 +68,6 @@ class MenuBody : public TableField MenuBody(Window* parent, const rect_t& rect) : TableField(parent, rect) { - // Allow encoder acceleration - lv_obj_add_flag(lvobj, LV_OBJ_FLAG_ENCODER_ACCEL); - setColumnWidth(0, rect.w); setAutoEdit(); @@ -217,7 +214,7 @@ class MenuBody : public TableField void onDrawBegin(uint16_t row, uint16_t col, lv_obj_draw_part_dsc_t* dsc) override { - if (lines.size() == 0) return; + if (row >= lines.size()) return; lv_canvas_t* icon = (lv_canvas_t*)lines[row]->getIcon(); if (!icon) return; @@ -377,7 +374,7 @@ void Menu::updatePosition() coord_t cw = lv_obj_get_width(content->getLvObj()); coord_t ch = lv_obj_get_height(content->getLvObj()); coord_t tw = lv_obj_get_width(toolbar->getLvObj()); - coord_t th = lv_obj_get_height(toolbar->getLvObj()); + coord_t th = max((coord_t)lv_obj_get_height(toolbar->getLvObj()), toolbar->height()); lv_obj_align(toolbar->getLvObj(), LV_ALIGN_CENTER, -cw / 2, 0); lv_obj_align(content->getLvObj(), LV_ALIGN_CENTER, tw / 2, 0); diff --git a/radio/src/gui/colorlcd/libui/menu.h b/radio/src/gui/colorlcd/libui/menu.h index 2ecd36e0aeb..8052c6c2272 100644 --- a/radio/src/gui/colorlcd/libui/menu.h +++ b/radio/src/gui/colorlcd/libui/menu.h @@ -20,7 +20,6 @@ #include "modal_window.h" -class Menu; class MenuWindowContent; class MenuToolbar; diff --git a/radio/src/gui/colorlcd/libui/menutoolbar.cpp b/radio/src/gui/colorlcd/libui/menutoolbar.cpp index 83099b3b240..8e1be049116 100644 --- a/radio/src/gui/colorlcd/libui/menutoolbar.cpp +++ b/radio/src/gui/colorlcd/libui/menutoolbar.cpp @@ -86,11 +86,9 @@ MenuToolbar::~MenuToolbar() { lv_group_del(group); } void MenuToolbar::resetFilter() { - if (lv_group_get_focused(group) != lvobj) { - lv_group_focus_obj(lvobj); - choice->fillMenu(menu); - menu->setTitle(choice->getTitle()); - } + // Nothing to do if no filter is active + if (allBtn && !allBtn->checked()) + lv_event_send(allBtn->getLvObj(), LV_EVENT_CLICKED, nullptr); } void MenuToolbar::onEvent(event_t event) @@ -174,6 +172,8 @@ void MenuToolbar::addButton(const char* picto, int16_t filtermin, rect_t r = getButtonRect(wideButton); auto button = new MenuToolbarButton(this, r, picto); + setHeight(r.y + r.h + PAD_LARGE); + button->setPressHandler(std::bind(&MenuToolbar::filterMenu, this, button, filtermin, filtermax, filterFunc, title)); diff --git a/radio/src/gui/colorlcd/libui/numberedit.cpp b/radio/src/gui/colorlcd/libui/numberedit.cpp index 53e229261e3..a23cc47460d 100644 --- a/radio/src/gui/colorlcd/libui/numberedit.cpp +++ b/radio/src/gui/colorlcd/libui/numberedit.cpp @@ -32,9 +32,6 @@ class NumberArea : public FormField { lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_CLICK_FOCUSABLE); - // Allow encoder acceleration - lv_obj_add_flag(lvobj, LV_OBJ_FLAG_ENCODER_ACCEL); - lv_obj_add_event_cb(lvobj, NumberArea::numberedit_cb, LV_EVENT_KEY, this); setFocusHandler([=](bool focus) { @@ -228,6 +225,7 @@ NumberEdit::NumberEdit(Window* parent, const rect_t& rect, int vmin, int vmax, void NumberEdit::openEdit() { + if (onEditStart) onEditStart(); if (edit == nullptr) { edit = new NumberArea( this, diff --git a/radio/src/gui/colorlcd/libui/numberedit.h b/radio/src/gui/colorlcd/libui/numberedit.h index b138b6a1bff..6a879366080 100644 --- a/radio/src/gui/colorlcd/libui/numberedit.h +++ b/radio/src/gui/colorlcd/libui/numberedit.h @@ -94,6 +94,11 @@ class NumberEdit : public TextButton onEdited = std::move(handler); } + void setOnEditStartHandler(std::function handler) + { + onEditStart = std::move(handler); + } + int32_t getValue() const { return _getValue != nullptr ? _getValue() : 0; } protected: @@ -103,6 +108,7 @@ class NumberEdit : public TextButton std::function _getValue; std::function _setValue; std::function onEdited; + std::function onEditStart; int vdefault = 0; int vmin; int vmax; diff --git a/radio/src/gui/colorlcd/libui/table.cpp b/radio/src/gui/colorlcd/libui/table.cpp index c8e28c536f4..c2a3f379d11 100644 --- a/radio/src/gui/colorlcd/libui/table.cpp +++ b/radio/src/gui/colorlcd/libui/table.cpp @@ -195,7 +195,7 @@ void TableField::setColumnWidth(uint16_t col, coord_t w) void TableField::select(uint16_t row, uint16_t col, bool force) { lv_table_t* table = (lv_table_t*)lvobj; - if (!force && table->row_act == row && table->col_act == row) return; + if (!force && table->row_act == row && table->col_act == col) return; if (row >= table->row_cnt || col >= table->col_cnt) { table->col_act = LV_TABLE_CELL_NONE; @@ -213,6 +213,8 @@ void TableField::adjustScroll() { lv_table_t* table = (lv_table_t*)lvobj; + if (table->row_act >= table->row_cnt) return; + // only vertical scroll for now lv_coord_t h_before = 0; for (uint16_t i = 0; i < table->row_act; i++) h_before += table->row_h[i]; diff --git a/radio/src/gui/colorlcd/mainview/screen_setup.cpp b/radio/src/gui/colorlcd/mainview/screen_setup.cpp index 80b4024b27f..dc942a30a36 100644 --- a/radio/src/gui/colorlcd/mainview/screen_setup.cpp +++ b/radio/src/gui/colorlcd/mainview/screen_setup.cpp @@ -176,6 +176,8 @@ void ScreenSetupPage::build(Window* window) } buildLayoutOptions(); + + SET_DIRTY(); }; Window* btn = new LayoutChoice(line, getFactory, setLayout); diff --git a/radio/src/gui/colorlcd/mainview/topbar.cpp b/radio/src/gui/colorlcd/mainview/topbar.cpp index 4212e11c086..06a31f3a52e 100644 --- a/radio/src/gui/colorlcd/mainview/topbar.cpp +++ b/radio/src/gui/colorlcd/mainview/topbar.cpp @@ -102,17 +102,11 @@ void SetupTopBarWidgetsPage::onClicked() // block event forwarding (window is transparent) } -void SetupTopBarWidgetsPage::onCancel() { deleteLater(); } - -void SetupTopBarWidgetsPage::deleteLater(bool detach, bool trash) +void SetupTopBarWidgetsPage::onCancel() { - // and continue async deletion... - Window::deleteLater(detach, trash); - + deleteLater(); // restore screen setting tab on top QuickMenu::openPage(QM_UI_SETUP); - - storageDirty(EE_MODEL); } void SetupTopBarWidgetsPage::onEvent(event_t event) @@ -234,6 +228,8 @@ void TopBar::removeWidget(unsigned int index) g_model.getTopbarData()->clearZone(index); WidgetsContainer::removeWidget(index); + + storageDirty(EE_MODEL); } void TopBar::load() diff --git a/radio/src/gui/colorlcd/mainview/topbar.h b/radio/src/gui/colorlcd/mainview/topbar.h index b04d638d6f2..626346f8219 100644 --- a/radio/src/gui/colorlcd/mainview/topbar.h +++ b/radio/src/gui/colorlcd/mainview/topbar.h @@ -39,7 +39,6 @@ class SetupTopBarWidgetsPage : public Window void onClicked() override; void onCancel() override; void onEvent(event_t event) override; - void deleteLater(bool detach = true, bool trash = true) override; }; //----------------------------------------------------------------------------- diff --git a/radio/src/gui/colorlcd/mainview/widgets_setup.cpp b/radio/src/gui/colorlcd/mainview/widgets_setup.cpp index 282820e1a86..4b39e9218b3 100644 --- a/radio/src/gui/colorlcd/mainview/widgets_setup.cpp +++ b/radio/src/gui/colorlcd/mainview/widgets_setup.cpp @@ -46,7 +46,10 @@ SetupWidgetsPageSlot::SetupWidgetsPageSlot(Window* parent, const rect_t& rect, menu->addLine(STR_WIDGET_SETTINGS, [=]() { new WidgetSettings(widget); }); menu->addLine(STR_REMOVE_WIDGET, - [=]() { container->removeWidget(slotIndex); }); + [=]() { + container->removeWidget(slotIndex); + storageDirty(EE_MODEL); + }); } else { addNewWidget(container, slotIndex); } @@ -106,6 +109,7 @@ void SetupWidgetsPageSlot::addNewWidget(WidgetsContainer* container, auto widget = container->getWidget(slotIndex); if (widget->hasOptions()) new WidgetSettings(widget); + storageDirty(EE_MODEL); }); if (cur && strcmp(cur, factory->getDisplayName()) == 0) selected = index; @@ -155,12 +159,8 @@ void SetupWidgetsPage::onClicked() void SetupWidgetsPage::onCancel() { deleteLater(); - QuickMenu::openPage((QMPage)(QM_UI_SCREEN1 + customScreenIdx)); -} -void SetupWidgetsPage::deleteLater(bool detach, bool trash) -{ - Window::deleteLater(detach, trash); + QuickMenu::openPage((QMPage)(QM_UI_SCREEN1 + customScreenIdx)); // and continue async deletion... auto screen = customScreens[customScreenIdx]; @@ -169,8 +169,6 @@ void SetupWidgetsPage::deleteLater(bool detach, bool trash) viewMain->setCurrentMainView(savedView); viewMain->showTopBarEdgeTxButton(); } - - storageDirty(EE_MODEL); } void SetupWidgetsPage::onEvent(event_t event) diff --git a/radio/src/gui/colorlcd/mainview/widgets_setup.h b/radio/src/gui/colorlcd/mainview/widgets_setup.h index f9e37db733d..56f6f226c3b 100644 --- a/radio/src/gui/colorlcd/mainview/widgets_setup.h +++ b/radio/src/gui/colorlcd/mainview/widgets_setup.h @@ -46,7 +46,6 @@ class SetupWidgetsPage : public Window unsigned savedView = 0; void onEvent(event_t event) override; - void deleteLater(bool detach = true, bool trash = true) override; }; class SetupWidgetsPageSlot : public ButtonBase diff --git a/radio/src/gui/colorlcd/module/custom_failsafe.cpp b/radio/src/gui/colorlcd/module/custom_failsafe.cpp index 1c8586c415b..242a1cc73d7 100644 --- a/radio/src/gui/colorlcd/module/custom_failsafe.cpp +++ b/radio/src/gui/colorlcd/module/custom_failsafe.cpp @@ -36,35 +36,27 @@ class ChannelFailsafeBargraph : public Window etx_obj_add_style(lvobj, styles->border_thin, LV_PART_MAIN); etx_obj_add_style(lvobj, styles->border_color[COLOR_BLACK_INDEX], LV_PART_MAIN); - outputsBar = new OutputChannelBar(this, {0, 1, width() - PAD_TABLE_H, ChannelBar::BAR_HEIGHT}, - channel, false, false); - outputsBar->hide(); + new OutputChannelBar(this, {0, 1, width() - 2, ChannelBar::BAR_HEIGHT}, + channel, false, false); - failsafeBar = new ChannelBar( - this, {0, ChannelBar::BAR_HEIGHT + PAD_THREE, width() - PAD_TABLE_H, ChannelBar::BAR_HEIGHT}, channel, + new ChannelBar( + this, {0, ChannelBar::BAR_HEIGHT + PAD_THREE, width() - 2, ChannelBar::BAR_HEIGHT}, channel, [=] { return g_model.failsafeChannels[channel]; }, COLOR_THEME_WARNING_INDEX); - failsafeBar->hide(); + + hide(); } + protected: + uint8_t channel; + void checkEvents() override { Window::checkEvents(); - outputsBar->show( - g_model.failsafeChannels[channel] != FAILSAFE_CHANNEL_HOLD && - g_model.failsafeChannels[channel] != FAILSAFE_CHANNEL_NOPULSE); - - failsafeBar->show( - g_model.failsafeChannels[channel] != FAILSAFE_CHANNEL_HOLD && - g_model.failsafeChannels[channel] != FAILSAFE_CHANNEL_NOPULSE); + show(g_model.failsafeChannels[channel] != FAILSAFE_CHANNEL_HOLD && + g_model.failsafeChannels[channel] != FAILSAFE_CHANNEL_NOPULSE); } - - protected: - uint8_t channel; - - OutputChannelBar* outputsBar = nullptr; - ChannelBar* failsafeBar = nullptr; }; class ChannelFailsafeEdit : public NumberEdit @@ -94,10 +86,19 @@ class ChannelFailsafeEdit : public NumberEdit public: ChannelFailsafeEdit(Window* parent, uint8_t ch, int vmin, int vmax) : - NumberEdit(parent, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, vmin, vmax, nullptr), channel(ch) + NumberEdit(parent, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, vmin, vmax, + [=]() { + return calcRESXto1000(g_model.failsafeChannels[ch]); + }, + [=](int newValue) { + auto value = g_model.failsafeChannels[channel]; + if (value != FAILSAFE_CHANNEL_HOLD && value != FAILSAFE_CHANNEL_NOPULSE) { + g_model.failsafeChannels[channel] = calc1000toRESX(newValue); + SET_DIRTY(); + } + }), + channel(ch) { - setGetValueHandler( - [=]() { return calcRESXto1000(g_model.failsafeChannels[ch]); }); setDisplayHandler([=](int) -> std::string { return getString(); }); update(); } @@ -105,49 +106,32 @@ class ChannelFailsafeEdit : public NumberEdit void update() override { auto value = g_model.failsafeChannels[channel]; - if (value != FAILSAFE_CHANNEL_HOLD && value != FAILSAFE_CHANNEL_NOPULSE) { - setSetValueHandler([=](int value) { - g_model.failsafeChannels[channel] = calc1000toRESX(value); - SET_DIRTY(); - }); - enable(); - } else { - // disable setter to avoid overwritting the value limited by vmin/vmax - setSetValueHandler(nullptr); + if (value == FAILSAFE_CHANNEL_HOLD || value == FAILSAFE_CHANNEL_NOPULSE) disable(); - } - SET_DIRTY(); + else + enable(); NumberEdit::update(); } - void setHold() - { - g_model.failsafeChannels[channel] = FAILSAFE_CHANNEL_HOLD; - update(); - } - - void setNoPulse() - { - g_model.failsafeChannels[channel] = FAILSAFE_CHANNEL_NOPULSE; - update(); - } - void toggle() { - auto value = &(g_model.failsafeChannels[channel]); - if (*value == FAILSAFE_CHANNEL_HOLD) { - *value = FAILSAFE_CHANNEL_NOPULSE; - } else if (*value == FAILSAFE_CHANNEL_NOPULSE) { - *value = 0; + int16_t value = g_model.failsafeChannels[channel]; + if (value == FAILSAFE_CHANNEL_HOLD) { + value = FAILSAFE_CHANNEL_NOPULSE; + } else if (value == FAILSAFE_CHANNEL_NOPULSE) { + value = 0; } else { - *value = FAILSAFE_CHANNEL_HOLD; + value = FAILSAFE_CHANNEL_HOLD; } + g_model.failsafeChannels[channel] = value; + SET_DIRTY(); update(); } void copyChannel() { g_model.failsafeChannels[channel] = channelOutputs[channel]; + SET_DIRTY(); update(); } }; @@ -187,12 +171,6 @@ static const lv_coord_t line_col_dsc[] = {LV_GRID_FR(2), LV_GRID_FR(5), static const lv_coord_t line_row_dsc[] = {LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST}; -static void set_failsafe(lv_event_t* e) -{ - auto combo = (ChannelFSCombo*)lv_event_get_user_data(e); - if (combo) combo->update(); -} - FailSafePage::FailSafePage(uint8_t moduleIdx) : Page(ICON_STATS_ANALOGS) { header->setTitle(STR_FAILSAFESET); @@ -201,14 +179,13 @@ FailSafePage::FailSafePage(uint8_t moduleIdx) : Page(ICON_STATS_ANALOGS) FlexGridLayout grid(line_col_dsc, line_row_dsc, PAD_ZERO); - auto btn = new TextButton(body, rect_t{0, 0, LV_PCT(100), 0}, STR_CHANNELS2FAILSAFE); - - btn->setPressHandler([=]() { - setCustomFailsafe(moduleIdx); - AUDIO_WARNING1(); - SET_DIRTY(); - return 0; - }); + new TextButton(body, rect_t{0, 0, LV_PCT(100), 0}, STR_CHANNELS2FAILSAFE, + [=]() { + setCustomFailsafe(moduleIdx); + AUDIO_WARNING1(); + SET_DIRTY(); + return 0; + }); ModuleData* md = &g_model.moduleData[moduleIdx]; auto start_ch = md->channelsStart; @@ -225,8 +202,7 @@ FailSafePage::FailSafePage(uint8_t moduleIdx) : Page(ICON_STATS_ANALOGS) new StaticText(line, rect_t{}, ch_label); // Channel value - auto combo = new ChannelFSCombo(line, ch, -lim, lim); - lv_obj_add_event_cb(btn->getLvObj(), set_failsafe, LV_EVENT_CLICKED, combo); + new ChannelFSCombo(line, ch, -lim, lim); // Channel bargraph auto bar = new ChannelFailsafeBargraph( diff --git a/radio/src/gui/colorlcd/module/custom_failsafe.h b/radio/src/gui/colorlcd/module/custom_failsafe.h index 2d4c80af71b..2538bdab8f9 100644 --- a/radio/src/gui/colorlcd/module/custom_failsafe.h +++ b/radio/src/gui/colorlcd/module/custom_failsafe.h @@ -28,5 +28,5 @@ class FailSafePage : public Page public: explicit FailSafePage(uint8_t moduleIdx); - static LAYOUT_SIZE_SCALED(FS_BARGRAPH_WIDTH, 130, 90) + static LAYOUT_SIZE_SCALED_ODD(FS_BARGRAPH_WIDTH, 131, 91) }; diff --git a/radio/src/gui/colorlcd/radio/radio_calibration.cpp b/radio/src/gui/colorlcd/radio/radio_calibration.cpp index 5d2daf3b161..862ce1fa2b6 100644 --- a/radio/src/gui/colorlcd/radio/radio_calibration.cpp +++ b/radio/src/gui/colorlcd/radio/radio_calibration.cpp @@ -26,18 +26,12 @@ #include "sliders.h" #include "view_main_decoration.h" #include "hw_inputs.h" +#include #include uint8_t menuCalibrationState; -static const uint8_t stick_pointer[] __FLASH = { -#include "alpha_stick_pointer.lbm" -}; -static const uint8_t stick_background[] __FLASH = { -#include "alpha_stick_background.lbm" -}; - class StickCalibrationWindow : public Window { public: @@ -45,26 +39,89 @@ class StickCalibrationWindow : public Window uint8_t stickY) : Window(parent, rect), stickX(stickX), stickY(stickY) { - new StaticLZ4Image(this, 0, 0, (LZ4Bitmap *)stick_background); - calibStick = new StaticLZ4Image(this, 0, 0, (LZ4Bitmap *)stick_pointer); + lv_obj_t* bg = lv_obj_create(lvobj); + etx_obj_add_style(bg, styles->rounded, LV_PART_MAIN); + etx_obj_add_style(bg, styles->border, LV_PART_MAIN); + etx_obj_add_style(bg, styles->border_color[COLOR_BLACK_INDEX], LV_PART_MAIN); + lv_obj_set_size(bg, CAL_SIZ + PAD_BORDER * 2, CAL_SIZ + PAD_BORDER * 2); + lv_obj_add_flag(bg, LV_OBJ_FLAG_OVERFLOW_VISIBLE); + + axis[0] = {PAD_SMALL, CAL_SIZ / 2}; + axis[1] = {CAL_SIZ - PAD_SMALL, CAL_SIZ / 2}; + addLine(bg, COLOR_GREY_INDEX, &axis[0]); + + axis[2] = {CAL_SIZ / 2, PAD_SMALL}; + axis[3] = {CAL_SIZ / 2, CAL_SIZ - PAD_SMALL}; + addLine(bg, COLOR_GREY_INDEX, &axis[2]); + + lv_obj_t* bgCircle = lv_obj_create(bg); + etx_obj_add_style(bgCircle, styles->circle, LV_PART_MAIN); + etx_obj_add_style(bgCircle, styles->border, LV_PART_MAIN); + etx_obj_add_style(bgCircle, styles->border_color[COLOR_GREY_INDEX], LV_PART_MAIN); + lv_obj_set_style_border_width(bgCircle, CIRC_W, LV_PART_MAIN); + lv_obj_set_size(bgCircle, CAL_SIZ - PAD_TINY * 2, CAL_SIZ - PAD_TINY * 2); + lv_obj_set_pos(bgCircle, PAD_TINY, PAD_TINY); + + for (int i = 0; i < MKR_CNT; i += 1) { + float angle = (i * 360.0f / MKR_CNT) / 180.0f * M_PI; + float x = cos(angle); + float y = sin(angle); + float r1 = (CAL_SIZ - PAD_SMALL) / 2; + float r2 = r1 - CIRC_W; + mkr[i * 2] = {(lv_coord_t)(x * r1) + CAL_SIZ / 2, (lv_coord_t)(y * r1) + CAL_SIZ / 2}; + mkr[i * 2 + 1] = {(lv_coord_t)(x * r2) + CAL_SIZ / 2, (lv_coord_t)(y * r2) + CAL_SIZ / 2}; + addLine(bg, COLOR_WHITE_INDEX, &mkr[i * 2]); + } + + calibShadow = lv_obj_create(bg); + etx_solid_bg(calibShadow, COLOR_BLACK_INDEX); + etx_obj_add_style(calibShadow, styles->circle, LV_PART_MAIN); + lv_obj_set_style_bg_opa(calibShadow, LV_OPA_50, LV_PART_MAIN); + lv_obj_set_size(calibShadow, CAL_PTR_W, CAL_PTR_W); + + calibStick = lv_obj_create(bg); + etx_solid_bg(calibStick, COLOR_WHITE_INDEX); + etx_obj_add_style(calibStick, styles->circle, LV_PART_MAIN); + etx_obj_add_style(calibStick, styles->border, LV_PART_MAIN); + etx_obj_add_style(calibStick, styles->border_color[COLOR_RED_INDEX], LV_PART_MAIN); + lv_obj_set_style_border_width(calibStick, PAD_SMALL, LV_PART_MAIN); + lv_obj_set_size(calibStick, CAL_PTR_W, CAL_PTR_W); + checkEvents(); } + void addLine(lv_obj_t* parent, LcdColorIndex color, lv_point_t* points) + { + lv_obj_t* lin = lv_line_create(parent); + etx_obj_add_style(lin, styles->line_color[color], LV_PART_MAIN); + lv_obj_set_style_line_opa(lin, LV_OPA_COVER, LV_PART_MAIN); + lv_obj_set_style_line_width(lin, 2, LV_PART_MAIN); + lv_line_set_points(lin, points, 2); + } + void checkEvents() override { int32_t x = calibratedAnalogs[stickX]; int32_t y = calibratedAnalogs[stickY]; - coord_t dx = width() / 2 - CAL_CTR + (CAL_SIZ / 2 * x) / RESX; - coord_t dy = height() / 2 - CAL_CTR - (CAL_SIZ / 2 * y) / RESX; - lv_obj_set_pos(calibStick->getLvObj(), dx, dy); + coord_t w = (CAL_SIZ - CAL_PTR_W) / 2; + coord_t h = (CAL_SIZ - CAL_PTR_W) / 2; + coord_t dx = w + (w * x) / RESX; + coord_t dy = h - (h * y) / RESX; + lv_obj_set_pos(calibStick, dx, dy); + lv_obj_set_pos(calibShadow, dx + 1, dy + 1); } - static LAYOUT_VAL_SCALED(CAL_CTR, 9) - static LAYOUT_VAL_SCALED(CAL_SIZ, 68) + static LAYOUT_VAL_SCALED_EVEN(CAL_PTR_W, 18); + static LAYOUT_VAL_SCALED_EVEN(CAL_SIZ, 120) + static LAYOUT_VAL_SCALED_EVEN(CIRC_W, 10) + static constexpr int MKR_CNT = 24; protected: uint8_t stickX, stickY; - StaticLZ4Image *calibStick = nullptr; + lv_obj_t* calibStick = nullptr; + lv_obj_t* calibShadow = nullptr; + lv_point_t axis[4]; + lv_point_t mkr[MKR_CNT * 2]; }; RadioCalibrationPage::RadioCalibrationPage() : @@ -89,21 +146,15 @@ void RadioCalibrationPage::buildBody(Window *window) // The two sticks - LZ4Bitmap *bg = (LZ4Bitmap *)stick_background; + coord_t w = StickCalibrationWindow::CAL_SIZ + PAD_BORDER * 2; + coord_t x = (window->width() - w * 2) / 3; + coord_t y = (window->height() - w) / 2; - new StickCalibrationWindow( - window, - {window->width() / 3 - bg->width / 2, - window->height() / 2 - bg->height / 2, bg->width, bg->height}, - 0, 1); + new StickCalibrationWindow(window, {x, y, w, w}, 0, 1); auto max_sticks = adcGetMaxInputs(ADC_INPUT_MAIN); if (max_sticks > 2) { - new StickCalibrationWindow( - window, - {window->width() * 2 / 3 - bg->width / 2, - window->height() / 2 - bg->height / 2, bg->width, bg->height}, - 3, 2); + new StickCalibrationWindow(window, {x * 2 + w, y, w, w}, 3, 2); } std::unique_ptr deco(new ViewMainDecoration(window, false, true, false)); diff --git a/radio/src/gui/colorlcd/radio/radio_mic_recorder.cpp b/radio/src/gui/colorlcd/radio/radio_mic_recorder.cpp index cf6fac9d53e..c800ab3d892 100644 --- a/radio/src/gui/colorlcd/radio/radio_mic_recorder.cpp +++ b/radio/src/gui/colorlcd/radio/radio_mic_recorder.cpp @@ -69,7 +69,6 @@ class WaveformView : public FormField // No click focus either: LVGL clears the group's edit mode on every focus // call, so a touch would otherwise leave the encoder stuck in navigation. lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_CLICK_FOCUSABLE); - lv_obj_add_flag(lvobj, LV_OBJ_FLAG_ENCODER_ACCEL); lv_obj_add_event_cb(lvobj, WaveformView::on_pressing, LV_EVENT_PRESSING, this); lv_obj_add_event_cb(lvobj, WaveformView::on_released, LV_EVENT_RELEASED, this); lv_obj_add_event_cb(lvobj, WaveformView::on_key, LV_EVENT_KEY, this); diff --git a/radio/src/gui/colorlcd/radio/radio_sdmanager.cpp b/radio/src/gui/colorlcd/radio/radio_sdmanager.cpp index 9f830fc8685..7f525c87584 100644 --- a/radio/src/gui/colorlcd/radio/radio_sdmanager.cpp +++ b/radio/src/gui/colorlcd/radio/radio_sdmanager.cpp @@ -294,9 +294,14 @@ void RadioSdManagerPage::dirAction(const char* path, const char* name, std::string extension(""); if (ext) extension = ext; + // full paths, so the rename doesn't depend on FatFs's working folder + std::string from(fullpath); + std::string dir(path); + if (dir.back() != '/') dir += '/'; + new LabelDialog(fname.c_str(), maxNameLength, STR_RENAME_FILE, [=](std::string label) { - label += extension; - f_rename((const TCHAR *)name, (const TCHAR *)label.c_str()); + std::string to = dir + label + extension; + f_rename((const TCHAR *)from.c_str(), (const TCHAR *)to.c_str()); browser->refresh(); }); }); @@ -476,14 +481,19 @@ void RadioSdManagerPage::fileAction(const char* path, const char* name, } menu->addLine(STR_COPY_FILE, [=]() { clipboard.type = CLIPBOARD_TYPE_SD_FILE; - f_getcwd(clipboard.data.sd.directory, CLIPBOARD_PATH_LEN); + // f_getcwd() is a no-op on exFAT; use the tracked path. + strncpy(clipboard.data.sd.directory, path, CLIPBOARD_PATH_LEN - 1); + clipboard.data.sd.directory[CLIPBOARD_PATH_LEN - 1] = '\0'; strncpy(clipboard.data.sd.filename, name, CLIPBOARD_PATH_LEN - 1); + clipboard.data.sd.filename[CLIPBOARD_PATH_LEN - 1] = '\0'; }); if (clipboard.type == CLIPBOARD_TYPE_SD_FILE) { menu->addLine(STR_PASTE, [=]() { static char lfn[FF_MAX_LFN + 1]; // TODO optimize that! char destFileName[2 * CLIPBOARD_PATH_LEN + 1]; - f_getcwd((TCHAR*)lfn, FF_MAX_LFN); + // f_getcwd() is a no-op on exFAT; use the tracked path. + strncpy(lfn, path, FF_MAX_LFN); + lfn[FF_MAX_LFN] = '\0'; // prevent copying to the same directory with the same name char* destNamePtr = clipboard.data.sd.filename; if (!strcmp(clipboard.data.sd.directory, lfn)) { @@ -513,9 +523,14 @@ void RadioSdManagerPage::fileAction(const char* path, const char* name, std::string extension(""); if (ext) extension = ext; + // full paths, so the rename doesn't depend on FatFs's working folder + std::string from(fullpath); + std::string dir(path); + if (dir.back() != '/') dir += '/'; + new LabelDialog(fname.c_str(), maxNameLength, STR_RENAME_FILE, [=](std::string label) { - label += extension; - f_rename((const TCHAR *)name, (const TCHAR *)label.c_str()); + std::string to = dir + label + extension; + f_rename((const TCHAR *)from.c_str(), (const TCHAR *)to.c_str()); browser->refresh(); }); }); diff --git a/radio/src/gui/colorlcd/radio/radio_setup.cpp b/radio/src/gui/colorlcd/radio/radio_setup.cpp index bfadd2ff0be..13fb4726e34 100644 --- a/radio/src/gui/colorlcd/radio/radio_setup.cpp +++ b/radio/src/gui/colorlcd/radio/radio_setup.cpp @@ -42,6 +42,45 @@ static const lv_coord_t col_two_dsc[] = {LV_GRID_FR(19), LV_GRID_FR(21), LV_GRID_TEMPLATE_LAST}; static const lv_coord_t row_dsc[] = {LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST}; +// Number edit that stops refreshing from the RTC while being edited, and +// only writes the new value back once editing is finished. +class DateNumberEdit : public NumberEdit +{ + public: + DateNumberEdit(Window* parent, const rect_t& rect, int vmin, int vmax, + std::function getValue, + std::function setValue) : + NumberEdit(parent, rect, vmin, vmax, + [=]() { + if (isEditing) return editValue; + return getValue(); + }, + [=](int newValue) { + if (isEditing) + editValue = newValue; + }) + { + setOnEditStartHandler([=]() { + isEditing = true; + editValue = getValue(); + }); + setOnEditedHandler([=](int newValue) { + isEditing = false; + setValue(newValue); + }); + } + + protected: + int editValue; + bool isEditing = false; + + void checkEvents() override + { + if (!isEditing) + NumberEdit::checkEvents(); + } +}; + class DateTimeWindow : public Window { public: @@ -125,7 +164,7 @@ class DateTimeWindow : public Window // Date new StaticText(this, rect_t{PAD_TINY, PAD_TINY + PAD_MEDIUM, SubPage::EDT_X - PAD_TINY - PAD_SMALL, EdgeTxStyles::STD_FONT_HEIGHT}, STR_DATE); - year = new NumberEdit( + year = new DateNumberEdit( this, rect_t{SubPage::EDT_X, PAD_TINY, DT_EDT_W, 0}, 2023, 2037, [=]() -> int32_t { return TM_YEAR_BASE + m_tm.tm_year; }, [=](int32_t newValue) { @@ -134,7 +173,7 @@ class DateTimeWindow : public Window SET_LOAD_DATETIME(&m_tm); }); - month = new NumberEdit( + month = new DateNumberEdit( this, rect_t{SubPage::EDT_X + DT_EDT_W + PAD_TINY, PAD_TINY, DT_EDT_W, 0}, 1, 12, [=]() -> int32_t { return 1 + m_tm.tm_mon; }, [=](int32_t newValue) { @@ -145,7 +184,7 @@ class DateTimeWindow : public Window month->setDisplayHandler( [](int32_t value) { return formatNumberAsString(value, LEADING0); }); - day = new NumberEdit( + day = new DateNumberEdit( this, rect_t{SubPage::EDT_X + 2 * DT_EDT_W + PAD_SMALL, PAD_TINY, DT_EDT_W, 0}, 1, daysInMonth(), [=]() -> int32_t { return m_tm.tm_mday; }, [=](int32_t newValue) { @@ -157,7 +196,7 @@ class DateTimeWindow : public Window // Time new StaticText(this, rect_t{PAD_TINY, DT_Y2 + PAD_MEDIUM, SubPage::EDT_X - PAD_TINY - PAD_SMALL, EdgeTxStyles::STD_FONT_HEIGHT}, STR_TIME); - hour = new NumberEdit( + hour = new DateNumberEdit( this, rect_t{SubPage::EDT_X, DT_Y2, DT_EDT_W, 0}, 0, 23, [=]() -> int32_t { return m_tm.tm_hour; }, [=](int32_t newValue) { @@ -167,7 +206,7 @@ class DateTimeWindow : public Window hour->setDisplayHandler( [](int32_t value) { return formatNumberAsString(value, LEADING0, 2); }); - minutes = new NumberEdit( + minutes = new DateNumberEdit( this, rect_t{SubPage::EDT_X + DT_EDT_W + PAD_TINY, DT_Y2, DT_EDT_W, 0}, 0, 59, [=]() -> int32_t { return m_tm.tm_min; }, [=](int32_t newValue) { @@ -177,7 +216,7 @@ class DateTimeWindow : public Window minutes->setDisplayHandler( [](int32_t value) { return formatNumberAsString(value, LEADING0, 2); }); - seconds = new NumberEdit( + seconds = new DateNumberEdit( this, rect_t{SubPage::EDT_X + DT_EDT_W * 2 + PAD_SMALL, DT_Y2, DT_EDT_W, 0}, 0, 59, [=]() -> int32_t { return m_tm.tm_sec; }, [=](int32_t newValue) { diff --git a/radio/src/gui/colorlcd/radio/radio_tools.cpp b/radio/src/gui/colorlcd/radio/radio_tools.cpp index b21b9127ea5..d80c4717737 100644 --- a/radio/src/gui/colorlcd/radio/radio_tools.cpp +++ b/radio/src/gui/colorlcd/radio/radio_tools.cpp @@ -101,7 +101,7 @@ static void run_lua_tool(Window* parent, const std::string& path) char toolPath[FF_MAX_LFN + 1]; strncpy(toolPath, path.c_str(), sizeof(toolPath) - 1); *((char*)getBasename(toolPath) - 1) = '\0'; - f_chdir(toolPath); + etxChdir(toolPath); luaExecStandalone(path.c_str()); } diff --git a/radio/src/gui/colorlcd/radio/radio_version.cpp b/radio/src/gui/colorlcd/radio/radio_version.cpp index 868d22f72c6..03b75d1d3fb 100644 --- a/radio/src/gui/colorlcd/radio/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio/radio_version.cpp @@ -345,9 +345,15 @@ RadioVersionPage::RadioVersionPage(PageDef& pageDef) : } #if defined(PCBPL18) +#if defined(SIMU) +// placeholders so the simulator shows the same lines as the radio +static const char* boardLcdType = "Simulator"; +static const char* boardTouchType = "Simulator"; +#else extern const char* boardLcdType; extern const char* boardTouchType; #endif +#endif void RadioVersionPage::build(Window* window) { @@ -382,10 +388,21 @@ void RadioVersionPage::build(Window* window) new QRCode(qrBox, (qw - QR_SZ) / 2, qh - QR_SZ - PAD_MEDIUM, QR_SZ, edgetx_url); + // Version text in its own scrolling area above a fixed button, so the + // button can't cover the text when it doesn't fit (e.g. PL18 family on + // portrait LCD) and stays visible when the text is scrolled. auto infoBox = new Window(window, {ix, iy, iw, ih}); infoBox->padAll(PAD_SMALL); infoBox->padLeft(PAD_LARGE); infoBox->padRight(PAD_LARGE); + infoBox->padBottom(PAD_LARGE); + infoBox->setFlexLayout(LV_FLEX_FLOW_COLUMN, PAD_SMALL, iw, ih); + lv_obj_clear_flag(infoBox->getLvObj(), LV_OBJ_FLAG_SCROLLABLE); + + auto textBox = new Window(infoBox, {0, 0, LV_PCT(100), 0}); + textBox->padAll(PAD_ZERO); + lv_obj_set_flex_grow(textBox->getLvObj(), 1); + etx_scrollbar(textBox->getLvObj()); std::string nl("\n"); std::string version; @@ -407,7 +424,7 @@ void RadioVersionPage::build(Window* window) version += '0' + hardwareOptions.pcbrev; #endif -#if defined(PCBPL18) && !defined(SIMU) +#if defined(PCBPL18) version += nl; version += "LCD: "; version += boardLcdType; @@ -416,10 +433,10 @@ void RadioVersionPage::build(Window* window) version += boardTouchType; #endif - new StaticText(infoBox, {0, 0, LV_PCT(100), LV_SIZE_CONTENT}, version); + new StaticText(textBox, {0, 0, LV_PCT(100), LV_SIZE_CONTENT}, version); // Module and receivers versions - new TextButton(infoBox, {0, ih - EdgeTxStyles::UI_ELEMENT_HEIGHT - PAD_LARGE - PAD_SMALL, LV_PCT(100), 0}, + new TextButton(infoBox, {0, 0, LV_PCT(100), 0}, STR_MODULES_RX_VERSION, [=]() { new VersionDialog(); return 0; diff --git a/radio/src/gui/colorlcd/standalone_lua.cpp b/radio/src/gui/colorlcd/standalone_lua.cpp index bb14cb30ebd..903f9dd5e0e 100644 --- a/radio/src/gui/colorlcd/standalone_lua.cpp +++ b/radio/src/gui/colorlcd/standalone_lua.cpp @@ -37,7 +37,7 @@ LuaMemTracer lsStandaloneTrace; static void luaStandaloneHook(lua_State * L, lua_Debug *ar) { - else if (ar->event == LUA_HOOKLINE) { + if (ar->event == LUA_HOOKLINE) { lua_getinfo(L, "nSl", ar); LuaMemTracer * tracer = &lsStandaloneTrace; if (tracer->alloc || tracer->free) { diff --git a/radio/src/gui/colorlcd/themes/theme_manager.cpp b/radio/src/gui/colorlcd/themes/theme_manager.cpp index 6af58f8a2c1..5a482e4c3b1 100644 --- a/radio/src/gui/colorlcd/themes/theme_manager.cpp +++ b/radio/src/gui/colorlcd/themes/theme_manager.cpp @@ -316,16 +316,19 @@ void ThemePersistance::scanForThemes() if (res == FR_OK) { TRACE("scanForThemes: open successful"); // read all entries - bool firstTime = true; for (;;) { - res = sdReadDir(&dir, &fno, firstTime); + res = f_readdir(&dir, &fno); if (res != FR_OK || fno.fname[0] == 0) break; // Break on error or end of dir - if (strlen((const char*)fno.fname) > SD_SCREEN_FILE_LENGTH) continue; - if (fno.fattrib & AM_DIR) - scanThemeFolder(fno.fname); + if (fno.fattrib & (AM_HID | AM_SYS)) continue; // skip hidden/system + if (fno.fname[0] == '.') continue; // skip dot entries + + if (fno.fattrib & AM_DIR) { + if (strlen((const char*)fno.fname) <= SD_SCREEN_FILE_LENGTH) + scanThemeFolder(fno.fname); + } } f_closedir(&dir); @@ -393,7 +396,8 @@ void ThemePersistance::loadDefaultTheme() } for (auto theme : themes) { - if (theme->getName().compare(0, SELECTED_THEME_NAME_LEN, g_eeGeneral.selectedTheme) == 0) { + if (theme->getName().compare(0, SELECTED_THEME_NAME_LEN, + stringFromNtString(g_eeGeneral.selectedTheme)) == 0) { found = true; break; } @@ -466,8 +470,7 @@ bool ThemePersistance::createNewTheme(const std::string& name, ThemeFile& theme) void ThemePersistance::setDefaultTheme(int index) { if (index >= 0 && index < (int)themes.size()) { - strAppend(g_eeGeneral.selectedTheme, themes[index]->getName().c_str(), - SELECTED_THEME_NAME_LEN); + copyToUnTerminated(g_eeGeneral.selectedTheme, themes[index]->getName()); SET_DIRTY(); currentTheme = index; } diff --git a/radio/src/gui/colorlcd/widgets/value.cpp b/radio/src/gui/colorlcd/widgets/value.cpp index b8ef48dbf88..c5ff9e36820 100644 --- a/radio/src/gui/colorlcd/widgets/value.cpp +++ b/radio/src/gui/colorlcd/widgets/value.cpp @@ -24,7 +24,8 @@ #define ETX_STATE_TIMER_ELAPSED LV_STATE_USER_1 #define ETX_STATE_TELEM_STALE LV_STATE_USER_2 -#define ETX_STATE_LARGE_FONT LV_STATE_USER_3 +#define ETX_STATE_L_FONT LV_STATE_USER_3 +#define ETX_STATE_XL_FONT LV_STATE_USER_4 class ValueWidget : public Widget { @@ -57,23 +58,54 @@ class ValueWidget : public Widget etx_txt_color(label, COLOR_THEME_DISABLED_INDEX, ETX_STATE_TELEM_STALE); lv_label_set_text(label, ""); - valueShadow = etx_label_create(lvobj, FONT_L_INDEX); + valueShadow = etx_label_create(lvobj); lv_obj_add_style(valueShadow, &valueStyle, LV_PART_MAIN); lv_obj_set_style_text_color(valueShadow, lv_color_black(), LV_PART_MAIN); - etx_font(valueShadow, FONT_XL_INDEX, ETX_STATE_LARGE_FONT); + etx_font(valueShadow, FONT_L_INDEX, ETX_STATE_L_FONT); + etx_font(valueShadow, FONT_XL_INDEX, ETX_STATE_XL_FONT); lv_label_set_text(valueShadow, ""); - value = etx_label_create(lvobj, FONT_L_INDEX); + value = etx_label_create(lvobj); lv_obj_add_style(value, &valueStyle, LV_PART_MAIN); etx_txt_color(value, COLOR_THEME_WARNING_INDEX, ETX_STATE_TIMER_ELAPSED); etx_txt_color(value, COLOR_THEME_DISABLED_INDEX, ETX_STATE_TELEM_STALE); - etx_font(value, FONT_XL_INDEX, ETX_STATE_LARGE_FONT); + etx_font(value, FONT_L_INDEX, ETX_STATE_L_FONT); + etx_font(value, FONT_XL_INDEX, ETX_STATE_XL_FONT); lv_label_set_text(value, ""); update(); checkEvents(); } + void setValueText(std::string& text) + { + // Calculate font size and text position based on text width and window size + int fontSize = 0; + int w = getTextWidth(text.c_str(), 0, FONT(XL)); + if ((height() >= H_CHK) && (w + valueX + 1 <= width())) { + fontSize = ETX_STATE_XL_FONT; + } else { + w = getTextWidth(text.c_str(), 0, FONT(L)); + if (w + valueX + 1 <= width()) { + fontSize = ETX_STATE_L_FONT; + } + } + if (fontSize) { + lv_obj_add_state(value, fontSize); + lv_obj_add_state(valueShadow, fontSize); + lv_obj_set_pos(valueShadow, valueX + 1, valueY + 1); + lv_obj_set_pos(value, valueX, valueY); + } else { + lv_obj_clear_state(value, ETX_STATE_L_FONT | ETX_STATE_XL_FONT); + lv_obj_clear_state(valueShadow, ETX_STATE_L_FONT | ETX_STATE_XL_FONT); + lv_obj_set_pos(valueShadow, valueX + 1, valueY + 1 + PAD_SMALL); + lv_obj_set_pos(value, valueX, valueY + PAD_SMALL); + } + + lv_label_set_text(value, text.c_str()); + lv_label_set_text(valueShadow, text.c_str()); + } + void checkEvents() override { if (!loaded) return; @@ -163,8 +195,7 @@ class ValueWidget : public Widget getSourceCustomValueString(field, getValue(field), valueFlags); } - lv_label_set_text(value, valueTxt.c_str()); - lv_label_set_text(valueShadow, valueTxt.c_str()); + setValueText(valueTxt); } } @@ -180,6 +211,8 @@ class ValueWidget : public Widget lv_obj_t* value; lv_obj_t* valueShadow; LcdFlags valueFlags = 0; + lv_coord_t valueX = 0; + lv_coord_t valueY = VAL_Y1; static LAYOUT_VAL_SCALED(VAL_Y1, 14) static LAYOUT_VAL_SCALED(VAL_Y2, 18) @@ -207,49 +240,19 @@ class ValueWidget : public Widget lv_coord_t labelX = 0; lv_coord_t labelY = 0; - lv_coord_t valueX = 0; - lv_coord_t valueY = VAL_Y1; - - // Set font to L - lv_obj_clear_state(value, ETX_STATE_LARGE_FONT); - lv_obj_clear_state(valueShadow, ETX_STATE_LARGE_FONT); + valueX = 0; + valueY = VAL_Y1; // Get positions, alignment and value font size. - if (height() < H_CHK) { - if (width() >= W_CHK) { - lblAlign = ALIGN_LEFT; - valAlign = ALIGN_RIGHT; - labelX = PAD_SMALL; - labelY = PAD_TINY; - valueX = -PAD_SMALL; - valueY = -PAD_TINY; - } - } else { + if (height() >= H_CHK) { labelX = (lblAlign == ALIGN_LEFT) ? PAD_SMALL : (lblAlign == ALIGN_CENTER) ? -PAD_THREE : -PAD_SMALL; - labelY = 2; + labelY = PAD_TINY; valueX = (valAlign == ALIGN_LEFT) ? PAD_SMALL : (valAlign == ALIGN_CENTER) ? 1 : -PAD_SMALL; valueY = VAL_Y2; - if (field >= MIXSRC_FIRST_TELEM) { - int8_t sensor = 1 + (field - MIXSRC_FIRST_TELEM) / 3; - if (!isGPSSensor(sensor) && !isSensorUnit(sensor, UNIT_DATETIME) && !isSensorUnit(sensor, UNIT_TEXT)) { - // Set font to XL - lv_obj_add_state(value, ETX_STATE_LARGE_FONT); - lv_obj_add_state(valueShadow, ETX_STATE_LARGE_FONT); - } - } -#if defined(INTERNAL_GPS) - else if (field == MIXSRC_TX_GPS) { - } -#endif - else { - // Set font to XL - lv_obj_add_state(value, ETX_STATE_LARGE_FONT); - lv_obj_add_state(valueShadow, ETX_STATE_LARGE_FONT); - } } // Set text alignment diff --git a/radio/src/gui/common/stdlcd/boot_menu.cpp b/radio/src/gui/common/stdlcd/boot_menu.cpp index dedd6093862..853c1357a9b 100644 --- a/radio/src/gui/common/stdlcd/boot_menu.cpp +++ b/radio/src/gui/common/stdlcd/boot_menu.cpp @@ -130,6 +130,10 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char *str) else if (st == ST_FLASH_DONE) { lcdDrawCenteredText(4 * FH, TR_BL_WRITING_COMPL); } + else if (st == ST_FLASH_ERROR) { + lcdDrawCenteredText(4 * FH, TR_BL_WRITING_FAILED); + lcdDrawCenteredText(6 * FH, TR_BL_RETRY_OR_DFU); + } } uint32_t bootloaderGetMenuItemCount(int baseCount) diff --git a/radio/src/gui/common/stdlcd/draw_functions.cpp b/radio/src/gui/common/stdlcd/draw_functions.cpp index 9521c09f3a7..fab955ab9f9 100644 --- a/radio/src/gui/common/stdlcd/draw_functions.cpp +++ b/radio/src/gui/common/stdlcd/draw_functions.cpp @@ -391,7 +391,8 @@ void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags att) break; case CURVE_REF_FUNC: - lcdDrawTextAtIndex(x, y, STR_VCURVEFUNC, curve.value, att); + if (curve.value < CURVE_BASE) + lcdDrawTextAtIndex(x, y, STR_VCURVEFUNC, curve.value, att); break; case CURVE_REF_CUSTOM: diff --git a/radio/src/gui/common/stdlcd/model_curves.cpp b/radio/src/gui/common/stdlcd/model_curves.cpp index cefb9c5b5cf..7bff357c8c3 100644 --- a/radio/src/gui/common/stdlcd/model_curves.cpp +++ b/radio/src/gui/common/stdlcd/model_curves.cpp @@ -118,7 +118,8 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlag flags1 = 0; } - lcdDrawTextAtIndex(x1, y, STR_VCURVETYPE, curve.type, flags1); + if (curve.type <= CURVE_REF_CUSTOM) + lcdDrawTextAtIndex(x1, y, STR_VCURVETYPE, curve.type, flags1); if (active && menuHorizontalPosition==0) { CHECK_INCDEC_MODELVAR_ZERO(event, curve.type, modelCurvesEnabled() ? CURVE_REF_CUSTOM : CURVE_REF_FUNC); @@ -133,7 +134,8 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlag { SourceNumVal v; v.rawValue = curve.value; - lcdDrawTextAtIndex(x, y, STR_VCURVEFUNC, v.value, flags); + if (v.value >= 0 && v.value < CURVE_BASE) + lcdDrawTextAtIndex(x, y, STR_VCURVEFUNC, v.value, flags); if (active && menuHorizontalPosition==1) { CHECK_INCDEC_MODELVAR_ZERO(event, v.value, CURVE_BASE-1); curve.value = v.rawValue; diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 8371fd40ec4..0fcf48355f5 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -366,7 +366,14 @@ static void _init_menu_tab_array(uint8_t* tab, size_t len) } tab[ITEM_RADIO_HARDWARE_SERIAL_PORT_LABEL] = has_serial ? READONLY_ROW : HIDDEN_ROW; tab[ITEM_RADIO_HARDWARE_JITTER_FILTER] = 0; +#if defined(HARDWARE_INTERNAL_RAS) tab[ITEM_RADIO_HARDWARE_RAS] = READONLY_ROW; +#else + bool has_ras = isModulePXX1(EXTERNAL_MODULE) || + isModulePXX2(EXTERNAL_MODULE) || + telemetryData.swrExternal.isFresh(); + tab[ITEM_RADIO_HARDWARE_RAS] = has_ras ? READONLY_ROW : HIDDEN_ROW; +#endif auto mod_desc = modulePortGetModuleDescription(SPORT_MODULE); if (mod_desc && mod_desc->set_pwr) { diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index cf7ff6090a1..3d05b99a270 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -61,11 +61,31 @@ inline bool isFilenameLower(bool isfile, const char * fn, const char * line) return (!isfile && IS_FILE(line)) || (isfile==IS_FILE(line) && strcasecmp(fn, line) < 0); } +// Current dir, tracked explicitly: on exFAT f_getcwd() and f_chdir("..") are no-ops. +static char sdManagerPath[FF_MAX_LFN + 1] = "/"; + +static void sdManagerChdir(const char* name) +{ + if (!strcmp(name, "..")) { + // go up: drop the last path segment + char* sep = strrchr(sdManagerPath, '/'); + if (sep == sdManagerPath) sep[1] = '\0'; // parent is the root + else if (sep) *sep = '\0'; + } else { + // descend into 'name' (bounded, no duplicate slash at the root) + size_t len = strlen(sdManagerPath); + if (strcmp(sdManagerPath, ROOT_PATH) != 0 && len + 1 < sizeof(sdManagerPath)) + sdManagerPath[len++] = '/'; + strncpy(sdManagerPath + len, name, sizeof(sdManagerPath) - len - 1); + sdManagerPath[sizeof(sdManagerPath) - 1] = '\0'; + } + etxChdir(sdManagerPath); // absolute path: resolves on FAT and exFAT alike +} + void getSelectionFullPath(char * lfn) { - f_getcwd(lfn, FF_MAX_LFN); - strcat(lfn, "/"); - strcat(lfn, reusableBuffer.sdManager.lines[menuVerticalPosition - HEADER_LINE - menuVerticalOffset]); + snprintf(lfn, FF_MAX_LFN + 1, "%s/%s", sdManagerPath, + reusableBuffer.sdManager.lines[menuVerticalPosition - HEADER_LINE - menuVerticalOffset]); } #if defined(PXX2) @@ -121,12 +141,14 @@ void onSdManagerMenu(const char * result) } else if (result == STR_COPY_FILE) { clipboard.type = CLIPBOARD_TYPE_SD_FILE; - f_getcwd(clipboard.data.sd.directory, CLIPBOARD_PATH_LEN); + strncpy(clipboard.data.sd.directory, sdManagerPath, CLIPBOARD_PATH_LEN - 1); + clipboard.data.sd.directory[CLIPBOARD_PATH_LEN - 1] = '\0'; strncpy(clipboard.data.sd.filename, line, CLIPBOARD_PATH_LEN-1); + clipboard.data.sd.filename[CLIPBOARD_PATH_LEN - 1] = '\0'; } else if (result == STR_PASTE) { char destFileName[2 * CLIPBOARD_PATH_LEN + 1]; - f_getcwd(lfn, FF_MAX_LFN); + strcpy(lfn, sdManagerPath); // if destination is dir, copy into that dir if (IS_DIRECTORY(line)) { strcat(lfn, "/"); @@ -278,7 +300,8 @@ void menuRadioSdManager(event_t _event) #endif if (_event == EVT_ENTRY) { - f_chdir(ROOT_PATH); + etxChdir(ROOT_PATH); + strcpy(sdManagerPath, ROOT_PATH); #if LCD_DEPTH > 1 lastPos = -1; #endif @@ -327,7 +350,7 @@ void menuRadioSdManager(event_t _event) else { int index = menuVerticalPosition - HEADER_LINE - menuVerticalOffset; if (IS_DIRECTORY(reusableBuffer.sdManager.lines[index])) { - f_chdir(reusableBuffer.sdManager.lines[index]); + sdManagerChdir(reusableBuffer.sdManager.lines[index]); menuVerticalOffset = 0; menuVerticalPosition = HEADER_LINE; REFRESH_FILES(); @@ -481,15 +504,29 @@ void menuRadioSdManager(event_t _event) reusableBuffer.sdManager.count = 0; - FRESULT res = f_opendir(&dir, "."); // Open the directory + // A Lua script can chdir() behind the SD manager's back: point FatFs + // back at the tracked folder and list that, so the list and file + // actions agree. + if (etxChdir(sdManagerPath) != FR_OK) { + strcpy(sdManagerPath, ROOT_PATH); + etxChdir(sdManagerPath); + } + + FRESULT res = f_opendir(&dir, sdManagerPath); // Open the directory if (res == FR_OK) { bool firstTime = true; for (;;) { - res = sdReadDir(&dir, &fno, firstTime); - if (res != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - if (strlen(fno.fname) > SD_SCREEN_FILE_LENGTH) continue; - if (fno.fattrib & (AM_HID|AM_SYS)) continue; /* Ignore hidden and system files */ - if (fno.fname[0] == '.' && fno.fname[1] != '.') continue; /* Ignore UNIX hidden files, but not .. */ + if (firstTime && (strcmp(sdManagerPath, ROOT_PATH) != 0)) { + strcpy(fno.fname, ".."); + fno.fattrib = AM_DIR; + } else { + res = f_readdir(&dir, &fno); + if (res != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ + if (strlen(fno.fname) > SD_SCREEN_FILE_LENGTH) continue; + if (fno.fattrib & (AM_HID|AM_SYS)) continue; /* Ignore hidden and system files */ + if (fno.fname[0] == '.') continue; /* Ignore UNIX hidden files */ + } + firstTime = false; reusableBuffer.sdManager.count++; diff --git a/radio/src/gui/common/stdlcd/radio_tools.cpp b/radio/src/gui/common/stdlcd/radio_tools.cpp index 9ffbc85dc08..dec3cd325d2 100644 --- a/radio/src/gui/common/stdlcd/radio_tools.cpp +++ b/radio/src/gui/common/stdlcd/radio_tools.cpp @@ -58,7 +58,7 @@ static void displayRadioTool(uint8_t index) pushMenu(reusableBuffer.radioTools.script[index - menuVerticalOffset].tool); } else if (reusableBuffer.radioTools.script[index - menuVerticalOffset].filename[0]) { - f_chdir(SCRIPTS_TOOLS_PATH); + etxChdir(SCRIPTS_TOOLS_PATH); char path[FF_MAX_LFN + 1] = SCRIPTS_TOOLS_PATH "/"; strcat(path, reusableBuffer.radioTools.script[index - menuVerticalOffset].filename); luaExec(path); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index c524929fedd..91c16889eb2 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -1108,15 +1108,10 @@ bool isExternalModuleAvailable(int moduleType) return false; #endif -#if !defined(AFHDS2) + // AFHDS2A is the NV14 internal RF chip protocol: no external module + // speaks it and the driver only supports the internal module if (moduleType == MODULE_TYPE_FLYSKY_AFHDS2A) return false; -#endif - -#if !defined(AFHDS3) - if (moduleType == MODULE_TYPE_FLYSKY_AFHDS3) - return false; -#endif return true; } diff --git a/radio/src/io/bootloader_flash.cpp b/radio/src/io/bootloader_flash.cpp index 18340e00dbc..1064d6edc0d 100644 --- a/radio/src/io/bootloader_flash.cpp +++ b/radio/src/io/bootloader_flash.cpp @@ -64,6 +64,7 @@ void BootloaderFirmwareUpdate::flashFirmware(const char * filename, ProgressHand FIL file; uint8_t buffer[1024]; UINT count; + bool success = true; pulsesStop(); @@ -81,22 +82,29 @@ void BootloaderFirmwareUpdate::flashFirmware(const char * filename, ProgressHand if (f_read(&file, buffer, sizeof(buffer), &count) != FR_OK) { POPUP_WARNING(STR_SDCARD_ERROR); + success = false; break; } if (count != sizeof(buffer) && !f_eof(&file)) { POPUP_WARNING(STR_SDCARD_ERROR); + success = false; break; } if (i == 0 && !isBootloaderStart(buffer)) { POPUP_WARNING(STR_INCOMPATIBLE); + success = false; break; } - for (UINT j = 0; j < count; j += FLASH_PAGESIZE) { + for (UINT j = 0; j < count && success; j += FLASH_PAGESIZE) { WDG_ENABLE(3000); - flashWrite(CONVERT_UINT_PTR(BOOTLOADER_ADDRESS + i + j), CONVERT_UINT_PTR(buffer + j)); + success = flashWrite(CONVERT_UINT_PTR(BOOTLOADER_ADDRESS + i + j), CONVERT_UINT_PTR(buffer + j)); WDG_ENABLE(WDG_DURATION); } + if (!success) { + POPUP_WARNING(STR_FIRMWARE_UPDATE_ERROR); + break; + } progressHandler("Bootloader", STR_WRITING, i, flash_size); // Reached end-of-file @@ -107,7 +115,7 @@ void BootloaderFirmwareUpdate::flashFirmware(const char * filename, ProgressHand #endif } - POPUP_INFORMATION(STR_FIRMWARE_UPDATE_SUCCESS); + if (success) POPUP_INFORMATION(STR_FIRMWARE_UPDATE_SUCCESS); watchdogSuspend(0); WDG_RESET(); diff --git a/radio/src/lib_file.cpp b/radio/src/lib_file.cpp index ec13d6b58b4..965ac6a6a26 100644 --- a/radio/src/lib_file.cpp +++ b/radio/src/lib_file.cpp @@ -83,38 +83,73 @@ bool isExtensionMatching(const char * extension, const char * pattern, char * ma return false; } -// returns true if current working dir is at the root level -bool isCwdAtRoot() +#if !defined(BOOT) + +// CWD tracker + path normalizer (see lib_file.h). + +static char s_currentDir[FF_MAX_LFN + 1] = "/"; + +void etxNormalizePath(const char* in, char* out, size_t outLen) { - char path[10]; - if (f_getcwd(path, sizeof(path)-1) == FR_OK) { - return (strcasecmp("/", path) == 0); + if (outLen == 0) return; + out[0] = '\0'; + if (outLen < 2) return; + if (!in) in = ""; + + // absolute input replaces the CWD; relative input is appended + char work[FF_MAX_LFN + 1]; + if (in[0] == '/') { + strncpy(work, in, sizeof(work) - 1); + work[sizeof(work) - 1] = '\0'; + } else { + snprintf(work, sizeof(work), "%s/%s", s_currentDir, in); + } + + size_t len = 0; + bool truncated = false; + + char* p = work; + while (*p) { + while (*p == '/') p++; + if (!*p) break; + char* seg = p; + while (*p && *p != '/') p++; + size_t seglen = (size_t)(p - seg); + + if (seglen == 1 && seg[0] == '.') continue; + if (seglen == 2 && seg[0] == '.' && seg[1] == '.') { // pop, clamp at root + while (len > 0 && out[len - 1] != '/') len--; + if (len > 0) len--; + out[len] = '\0'; + continue; + } + if (len + 1 + seglen >= outLen) { truncated = true; break; } + out[len++] = '/'; + memcpy(out + len, seg, seglen); + len += seglen; + out[len] = '\0'; + } + + // genuine collapse to root -> "/"; don't fabricate it on truncation + if (len == 0 && !truncated) { + out[0] = '/'; + out[1] = '\0'; } - return false; } -/* - Wrapper around the f_readdir() function which - also returns ".." entry for sub-dirs. (FatFS 0.12 does - not return ".", ".." dirs anymore) -*/ -FRESULT sdReadDir(DIR * dir, FILINFO * fno, bool & firstTime) +FRESULT etxChdir(const char* path) { - FRESULT res; - if (firstTime && !isCwdAtRoot()) { - // fake parent directory entry - strcpy(fno->fname, ".."); - fno->fattrib = AM_DIR; - res = FR_OK; + char abs[FF_MAX_LFN + 1]; + etxNormalizePath(path, abs, sizeof(abs)); + FRESULT res = f_chdir(abs); + if (res == FR_OK) { + strncpy(s_currentDir, abs, sizeof(s_currentDir) - 1); + s_currentDir[sizeof(s_currentDir) - 1] = '\0'; } - else { - res = f_readdir(dir, fno); /* Read a directory item */ - } - firstTime = false; return res; } -#if !defined(BOOT) +const char* etxGetcwd() { return s_currentDir; } // Replace FatFS implementation of f_puts and f_printf @@ -126,7 +161,7 @@ int f_puts(const char* s, FIL* fp) return (len == written && result == FR_OK) ? 0 : EOF; } -#define MAX_FPRINTF_LEN 100 +#define MAX_FPRINTF_LEN 128 int f_printf (FIL* fp, const TCHAR* str, ...) { diff --git a/radio/src/lib_file.h b/radio/src/lib_file.h index 20718fbdba7..0e53a91a902 100644 --- a/radio/src/lib_file.h +++ b/radio/src/lib_file.h @@ -26,7 +26,19 @@ constexpr uint8_t LEN_FILE_EXTENSION_MAX = 5; // longest used, including the do const char * getFileExtension(const char * filename, uint8_t size = 0, uint8_t extMaxLen = 0, uint8_t * fnlen = nullptr, uint8_t * extlen = nullptr); bool isExtensionMatching(const char * extension, const char * pattern, char * match = nullptr); -FRESULT sdReadDir(DIR * dir, FILINFO * fno, bool & firstTime); + +// CWD tracker + path normalizer. FatFS can't resolve "."/".." or report the CWD +// on exFAT, so we track a normalized absolute CWD and resolve paths to absolute +// before they reach FatFS, matching FAT12/16/32 behavior. + +// Resolve 'in' (absolute or relative to the tracked CWD) to a normalized +// absolute path in 'out' (bounds-checked against outLen). C linkage so the +// Lua C library (io.open, loadfile) can use it too. +extern "C" void etxNormalizePath(const char * in, char * out, size_t outLen); +// f_chdir() to a normalized absolute path; updates the tracked CWD on success. +FRESULT etxChdir(const char * path); +// Tracked absolute CWD (replacement for the exFAT-broken f_getcwd()). +const char * etxGetcwd(); // comparison, not case sensitive. static inline bool compare_nocase(const std::string& first, const std::string& second) { diff --git a/radio/src/lua/api_colorlcd.cpp b/radio/src/lua/api_colorlcd.cpp index 0b90fc3339b..2c6451c029e 100644 --- a/radio/src/lua/api_colorlcd.cpp +++ b/radio/src/lua/api_colorlcd.cpp @@ -31,6 +31,7 @@ #include "lua_api.h" #include "lua_widget.h" #include "api_colorlcd.h" +#include "lib_file.h" #define BITMAP_METATABLE "BITMAP*" @@ -507,7 +508,9 @@ Bitmap loading can fail if: */ static int luaOpenBitmap(lua_State *L) { - const char *filename = luaL_checkstring(L, 1); + const char *path = luaL_checkstring(L, 1); + char filename[FF_MAX_LFN + 1]; + etxNormalizePath(path, filename, sizeof(filename)); BitmapBuffer **b = (BitmapBuffer **)lua_newuserdata(L, sizeof(BitmapBuffer *)); diff --git a/radio/src/lua/api_colorlcd_lvgl.cpp b/radio/src/lua/api_colorlcd_lvgl.cpp index cce961c6353..4b5b8510a08 100644 --- a/radio/src/lua/api_colorlcd_lvgl.cpp +++ b/radio/src/lua/api_colorlcd_lvgl.cpp @@ -595,6 +595,26 @@ static int luaLvglGetScrollPos(lua_State *L) return 0; } +/*luadoc +@function lvgl.getPerf() + +Get the UI rendering rate and load, the same figures as the `UI_PERF_MONITOR` overlay, without drawing anything on screen. + +@retval fps,taskload (integers) `fps` is the LVGL render rate averaged over 300 ms, capped at the display refresh rate (about 33); frames that redraw 5000 pixels or fewer are not counted, so a static screen reports the cap. `taskload` is the percentage of time spent in LVGL's timer handler (rendering, including `lcd` drawing), averaged over 500 ms. + +@notice `taskload` does not include time spent in a widget's `refresh()`, the mixer or other tasks, so it is not the total CPU load. + +@status current Introduced in 3.0.0 +*/ +static int luaLvglGetPerf(lua_State *L) +{ + uint32_t fps, taskload; + lcdGetPerfStats(fps, taskload); + lua_pushinteger(L, fps); + lua_pushinteger(L, taskload); + return 2; +} + extern "C" { // lvgl functions LROT_BEGIN(lvgllib, NULL, 0) @@ -604,6 +624,7 @@ LROT_BEGIN(lvgllib, NULL, 0) LROT_FUNCENTRY(isFullScreen, luaLvglIsFullscreen) LROT_FUNCENTRY(exitFullScreen, luaLvglExitFullscreen) LROT_FUNCENTRY(getContext, luaLvglGetContext) + LROT_FUNCENTRY(getPerf, luaLvglGetPerf) /*luadoc @common lvgl_object diff --git a/radio/src/lua/api_filesystem.cpp b/radio/src/lua/api_filesystem.cpp index ddedaa1f405..805e132da74 100644 --- a/radio/src/lua/api_filesystem.cpp +++ b/radio/src/lua/api_filesystem.cpp @@ -24,6 +24,7 @@ #include "edgetx.h" #include "lua_api.h" #include "api_filesystem.h" +#include "lib_file.h" // garbage collector for luaDir static int dir_gc(lua_State* L) @@ -67,12 +68,15 @@ static int dir_iter(lua_State* L) int luaDir(lua_State* L) { const char* path = luaL_optstring(L, 1, nullptr); + char fullPath[FF_MAX_LFN + 1]; + etxNormalizePath(path, fullPath, sizeof(fullPath)); + DIR* dir = (DIR*)lua_newuserdata(L, sizeof(DIR)); luaL_getmetatable(L, DIR_METATABLE); lua_setmetatable(L, -2); - FRESULT res = f_opendir(dir, path); + FRESULT res = f_opendir(dir, fullPath); if (res != FR_OK) { TRACE("luaDir cannot open %s", path); return 0; @@ -126,11 +130,13 @@ void luaPushDateTime(lua_State * L, uint32_t year, uint32_t mon, uint32_t day, int luaFstat(lua_State* L) { const char * path = luaL_optstring(L, 1, nullptr); + char fullPath[FF_MAX_LFN + 1]; + etxNormalizePath(path, fullPath, sizeof(fullPath)); FRESULT res; FILINFO info; - res = f_stat(path, &info); + res = f_stat(fullPath, &info); if (res != FR_OK) { TRACE("luaFstat cannot open %s", path); return 0; @@ -174,8 +180,10 @@ int luaFstat(lua_State* L) int luaDelete(lua_State* L) { const char* filename = luaL_optstring(L, 1, nullptr); + char fullPath[FF_MAX_LFN + 1]; + etxNormalizePath(filename, fullPath, sizeof(fullPath)); - FRESULT res = f_unlink(filename); + FRESULT res = f_unlink(fullPath); if (res != FR_OK) { TRACE("luaDelete cannot delete file/folder %s", filename); } @@ -198,7 +206,7 @@ int luaDelete(lua_State* L) static int luaChdir(lua_State * L) { const char * directory = luaL_optstring(L, 1, nullptr); - f_chdir(directory); + etxChdir(directory); return 0; } @@ -218,7 +226,9 @@ static int luaChdir(lua_State * L) static int luaMkdir(lua_State * L) { const char * directory = luaL_checkstring(L, 1); - FRESULT res = f_mkdir(directory); + char fullPath[FF_MAX_LFN + 1]; + etxNormalizePath(directory, fullPath, sizeof(fullPath)); + FRESULT res = f_mkdir(fullPath); lua_pushunsigned(L, res); return 1; } @@ -243,7 +253,11 @@ static int luaRename(lua_State * L) { const char * from_path = luaL_checkstring(L, 1); const char * to_path = luaL_checkstring(L, 2); - FRESULT res = f_rename(from_path, to_path); + char fullFrom[FF_MAX_LFN + 1]; + char fullTo[FF_MAX_LFN + 1]; + etxNormalizePath(from_path, fullFrom, sizeof(fullFrom)); + etxNormalizePath(to_path, fullTo, sizeof(fullTo)); + FRESULT res = f_rename(fullFrom, fullTo); lua_pushunsigned(L, res); return 1; } diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 23ffd0df0ef..0c739076076 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -27,11 +27,13 @@ #include "stamp.h" #include "lua_api.h" #include "api_filesystem.h" +#include "lib_file.h" #include "hal/module_port.h" #include "hal/adc_driver.h" #include "hal/rotary_encoder.h" #include "switches.h" #include "input_mapping.h" +#include "os/task.h" #if defined(LED_STRIP_GPIO) #include "boards/generic_stm32/rgb_leds.h" #include "hal/rgbleds.h" @@ -453,8 +455,9 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags) if (_searchSingleFieldsByName(name, field, flags, luaSingleFields, DIM(luaSingleFields))) return true; + // Switches by hardware name ('SA', 'SW1', ...) are found in _lua_inputs. + // check switches from 'sa' to 'sz' - // TODO: does not work with function switches! if (len == 2 && name[0] == 's' && name[1] >= 'a' && name[1] <= 'z') { auto c = name[1] - 'a' + 'A'; auto sw_idx = switchLookupIdx(c); @@ -469,7 +472,7 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags) return true; } } - + // search in multiples for (unsigned int n=0; n= 0) { + field.id = MIXSRC_FIRST_SWITCH + sw_idx; + if (flags & FIND_FIELD_DESC) { + snprintf(field.desc, sizeof(field.desc), "Switch %s", swName); + } else { + field.desc[0] = '\0'; + } + return true; + } + } + return false; // not found } @@ -567,6 +589,18 @@ bool luaFindFieldById(int id, LuaField & field, unsigned int flags) if (_searchSingleFieldsById(id, field, flags, luaSingleFields, DIM(luaSingleFields))) return true; + // switches that are not in _lua_inputs, e.g. flex switches + if (id >= MIXSRC_FIRST_SWITCH && + id < MIXSRC_FIRST_SWITCH + switchGetMaxAllSwitches()) { + const char* swName = switchGetDefaultName(id - MIXSRC_FIRST_SWITCH); + if (swName) { + strAppend(field.name, swName, sizeof(field.name) - 1); + if (flags & FIND_FIELD_DESC) + snprintf(field.desc, sizeof(field.desc), "Switch %s", swName); + return true; + } + } + // search in telemetry for configured sensor if (id >= MIXSRC_FIRST_TELEM && id <= MIXSRC_LAST_TELEM) { int i = (id - MIXSRC_FIRST_TELEM) / 3; @@ -629,7 +663,7 @@ The list of valid sources is available: @retval nil the requested field was not found -@status current Introduced in 2.0.8, 'unit' field added in 2.2.0, and argument also can be an index number as of 2.6.0 +@status current Introduced in 2.0.8, 'unit' field added in 2.2.0, and argument also can be an index number as of 2.6.0, lower case switch names and flex/voice switches added in 3.0 */ static int luaGetFieldInfo(lua_State * L) { @@ -1206,13 +1240,19 @@ static int luaCrossfireTelemetryPush(lua_State* L) if (lua_gettop(L) == 0) { lua_pushboolean(L, outputTelemetryBuffer.isAvailable()); - } else if (lua_gettop(L) > TELEMETRY_OUTPUT_BUFFER_SIZE) { - lua_pushboolean(L, false); - return 1; } else if (outputTelemetryBuffer.isAvailable()) { uint8_t command = luaL_checkinteger(L, 1); luaL_checktype(L, 2, LUA_TTABLE); - uint8_t length = luaL_len(L, 2); + lua_Integer payloadLen = luaL_len(L, 2); + + // ADDRESS + LENGTH + COMMAND + payload + CRC (2 bytes for COMMAND_ID) + lua_Integer frameLen = 3 + payloadLen + (command == COMMAND_ID ? 2 : 1); + if (payloadLen < 0 || frameLen > TELEMETRY_OUTPUT_BUFFER_SIZE) { + lua_pushboolean(L, false); + return 1; + } + + uint8_t length = (uint8_t)payloadLen; outputTelemetryBuffer.pushByte(MODULE_ADDRESS); @@ -1232,6 +1272,7 @@ static int luaCrossfireTelemetryPush(lua_State* L) for (int i = 0; i < length; i++) { lua_rawgeti(L, 2, i + 1); outputTelemetryBuffer.pushByte(luaL_checkinteger(L, -1)); + lua_pop(L, 1); } // CRC @@ -1324,20 +1365,18 @@ static int luaGhostTelemetryPush(lua_State * L) if (lua_gettop(L) == 0) { lua_pushboolean(L, outputTelemetryBuffer.isAvailable()); } - else if (lua_gettop(L) > TELEMETRY_OUTPUT_BUFFER_SIZE ) { - lua_pushboolean(L, false); - return 1; - } else if (outputTelemetryBuffer.isAvailable()) { uint8_t type = luaL_checkinteger(L, 1); luaL_checktype(L, 2, LUA_TTABLE); - uint8_t length = luaL_len(L, 2); // payload length + lua_Integer payloadLen = luaL_len(L, 2); // payload length - if( length > 10 ) { // max 10B payload + if (payloadLen < 0 || payloadLen > 10) { // max 10B payload lua_pushboolean(L, false); return 1; } + uint8_t length = (uint8_t)payloadLen; + // Ghost frames are fixed 14B: // address(1B) + len (1B) + type(1B) + payload(10B) + crc(1B) // -> address + len up-front are inserted later @@ -1346,6 +1385,7 @@ static int luaGhostTelemetryPush(lua_State * L) for (; i < length; i++) { // data, max 10B lua_rawgeti(L, 2, i + 1); outputTelemetryBuffer.pushByte(luaL_checkinteger(L, -1)); + lua_pop(L, 1); } for (; i < 10; i++) { // fill zeroes to frame size outputTelemetryBuffer.pushByte(0); @@ -1484,17 +1524,21 @@ static int luaPlayFile(lua_State * L) if(volume != USE_SETTINGS_VOLUME) volume = limit(-2, volume-3, 2); // (rescale 1..5) to internal format and limit to (-2..2) + char file[AUDIO_FILENAME_MAXLEN+1]; if (filename[0] != '/') { // relative sound file path - use current language dir for absolute path - char file[AUDIO_FILENAME_MAXLEN+1]; char * str = getAudioPath(file); strncpy(str, filename, AUDIO_FILENAME_MAXLEN - (str-file)); file[AUDIO_FILENAME_MAXLEN] = 0; - audioQueue.playFile(file, 0, 0, volume); } else { - audioQueue.playFile(filename, 0, 0, volume); + strncpy(file, filename, AUDIO_FILENAME_MAXLEN); + file[AUDIO_FILENAME_MAXLEN] = 0; } + // resolve to an absolute path (works on exFAT) + char norm[AUDIO_FILENAME_MAXLEN+1]; + etxNormalizePath(file, norm, sizeof(norm)); + audioQueue.playFile(norm, 0, 0, volume); return 0; } @@ -2223,6 +2267,27 @@ static int luaGetAvailableMemory(lua_State * L) return 1; } +/*luadoc +@function getCpuLoad() + +Get the CPU load: the share of time the processor was not running the idle task. + +@retval load (number) a value from 0 to 100 (percent), averaged over the last 500 ms or more (since the previous update); nil in the simulator + +@notice Interrupts are counted against the task they interrupt, so interrupts that occur while the CPU is idle count as idle time. + +@status current Introduced in 3.0.0 +*/ +static int luaGetCpuLoad(lua_State * L) +{ + int load = task_get_cpu_load(); + if (load < 0) + lua_pushnil(L); + else + lua_pushinteger(L, load); + return 1; +} + /*luadoc @function resetGlobalTimer([type]) @@ -2587,7 +2652,9 @@ static int luaGetLogicalSwitchValue(lua_State * L) /*luadoc @function getSwitchInfo(sourceIndex) -@param sourceIndex: integer identifying a value source as returned by `getSourceIndex(sourceName)` or the `id` field in the table returned by `getFieldInfo`. +@param sourceIndex: integer identifying a switch source, e.g. `MIXSRC_SA`, `getSourceIndex("SA")` or the `id` field in the table returned by `getFieldInfo("sa")`. This is not a switch position index as returned by `getSwitchIndex()`. + +@retval nil sourceIndex is not a switch source @retval table information about requested field, table elements: * `type` (number) field identifier @@ -2599,17 +2666,19 @@ static int luaGetLogicalSwitchValue(lua_State * L) * `isCustomisableSwitch` (boolean) field identifier return true if switch is a customisable switch -* `name` (string) switch name +* `name` (string) switch name as shown on the radio, including a custom name. Use `getFieldInfo(sourceIndex).name` for the default name. -@status current Introduced in 2.12 +@status current Introduced in 2.12, name fixed and retval nil added in 3.0 */ static int luaGetSwitchInfo(lua_State * L) { - swsrc_t idx = luaL_checkinteger(L, 1) - MIXSRC_FIRST_SWITCH; - if (idx < SWSRC_COUNT && isSwitchAvailable(idx, ModelCustomFunctionsContext)) { + // idx is a physical switch number, not a switch position (SWSRC_xxx) + lua_Integer idx = luaL_checkinteger(L, 1) - MIXSRC_FIRST_SWITCH; + if (idx >= 0 && idx < switchGetMaxAllSwitches()) { lua_newtable(L); - char* name = getSwitchPositionName(idx); + char name[LEN_SWITCH_NAME + 1]; + getSwitchName(name, idx); lua_pushtableinteger(L, "type", g_model.getSwitchType(idx)); lua_pushtableboolean(L, "isCustomisableSwitch", switchIsCustomSwitch(idx)); lua_pushtablestring(L, "name", name); @@ -3143,6 +3212,7 @@ LROT_BEGIN(etxlib, NULL, 0) LROT_FUNCENTRY( loadScript, luaLoadScript ) LROT_FUNCENTRY( getUsage, luaGetUsage ) LROT_FUNCENTRY( getAvailableMemory, luaGetAvailableMemory ) + LROT_FUNCENTRY( getCpuLoad, luaGetCpuLoad ) LROT_FUNCENTRY( resetGlobalTimer, luaResetGlobalTimer ) #if LCD_DEPTH > 1 && !defined(COLORLCD) LROT_FUNCENTRY( GREY, luaGrey ) diff --git a/radio/src/lua/api_stdlcd.cpp b/radio/src/lua/api_stdlcd.cpp index 7b3d2000825..8717bdab5a9 100644 --- a/radio/src/lua/api_stdlcd.cpp +++ b/radio/src/lua/api_stdlcd.cpp @@ -595,6 +595,7 @@ static int luaLcdDrawCombobox(lua_State *L) lua_rawgeti(L, 4, i+1); const char * item = luaL_checkstring(L, -1); lcdDrawText(x+2, y+2+9*i, item, 0); + lua_pop(L, 1); } lcdDrawFilledRect(x+1, y+1+9*idx, w-11, 9); lcdDrawFilledRect(x+w-10, y, 10, 11, SOLID, ERASE); @@ -606,6 +607,7 @@ static int luaLcdDrawCombobox(lua_State *L) lua_rawgeti(L, 4, idx+1); const char * item = luaL_checkstring(L, -1); lcdDrawText(x+2, y+2, item, INVERS); + lua_pop(L, 1); } else { lcdDrawFilledRect(x, y, w, 11, SOLID, ERASE); @@ -614,6 +616,7 @@ static int luaLcdDrawCombobox(lua_State *L) lua_rawgeti(L, 4, idx+1); const char * item = luaL_checkstring(L, -1); lcdDrawText(x+2, y+2, item, 0); + lua_pop(L, 1); } lcdDrawSolidHorizontalLine(x+w-8, y+3, 6); diff --git a/radio/src/lua/interface.cpp b/radio/src/lua/interface.cpp index 5440f910a2d..23d0d2d4d27 100644 --- a/radio/src/lua/interface.cpp +++ b/radio/src/lua/interface.cpp @@ -467,15 +467,19 @@ int luaLoadScriptFileToState(lua_State * L, const char * filename, const char * memclear(&fnoLuaS, sizeof(FILINFO)); memclear(&fnoLuaC, sizeof(FILINFO)); - fnamelen = strlen(filename); + // resolve to an absolute path (works on exFAT) + char normPath[FF_MAX_LFN + 1]; + etxNormalizePath(filename, normPath, sizeof(normPath)); + + fnamelen = strlen(normPath); // check if file extension is already in the file name and strip it - getFileExtension(filename, fnamelen, 0, nullptr, &extlen); + getFileExtension(normPath, fnamelen, 0, nullptr, &extlen); fnamelen -= extlen; if (fnamelen > sizeof(filenameFull) - sizeof(SCRIPT_BIN_EXT)) { TRACE_ERROR("luaLoadScriptFileToState(%s, %s): Error loading script: filename buffer overflow.\n", filename, lmode); return ret; } - strncat(filenameFull, filename, fnamelen); + strncat(filenameFull, normPath, fnamelen); // check if binary version exists strcpy(filenameFull + fnamelen, SCRIPT_BIN_EXT); @@ -536,8 +540,9 @@ int luaLoadScriptFileToState(lua_State * L, const char * filename, const char * #else // !defined(LUA_COMPILER) - // use passed file name as-is - const char *filenameFull = filename; + // resolve to an absolute path (works on exFAT) + char filenameFull[FF_MAX_LFN + 1]; + etxNormalizePath(filename, filenameFull, sizeof(filenameFull)); #endif @@ -1405,7 +1410,10 @@ bool readToolName(char * toolName, const char * filename) char buffer[1024]; UINT count; - if (f_open(&file, filename, FA_READ) != FR_OK) { + char fullPath[FF_MAX_LFN + 1]; + etxNormalizePath(filename, fullPath, sizeof(fullPath)); + + if (f_open(&file, fullPath, FA_READ) != FR_OK) { return false; } diff --git a/radio/src/lua/lua_widget.cpp b/radio/src/lua/lua_widget.cpp index ce7710d190b..43d62e4d5cb 100644 --- a/radio/src/lua/lua_widget.cpp +++ b/radio/src/lua/lua_widget.cpp @@ -617,8 +617,7 @@ LuaScriptManager::~LuaScriptManager() { luaL_unref(lsWidgets, LUA_REGISTRYINDEX, luaScriptContextRef); if (luaInputTelemetryFifo != nullptr) { - deregisterTelemetryQueue(luaInputTelemetryFifo); - delete luaInputTelemetryFifo; + destroyTelemetryQueue(luaInputTelemetryFifo); luaInputTelemetryFifo = nullptr; } } diff --git a/radio/src/lua/widgets.cpp b/radio/src/lua/widgets.cpp index a577bbecf98..56b289cb47f 100644 --- a/radio/src/lua/widgets.cpp +++ b/radio/src/lua/widgets.cpp @@ -188,7 +188,7 @@ static void luaLoadFiles(const char * directory) FILINFO fno; DIR dir; - strcpy(path, directory); + etxNormalizePath(directory, path, sizeof(path)); TRACE("luaLoadFiles() %s", path); FRESULT res = f_opendir(&dir, path); /* Open the directory */ diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 022dd72f283..e9fc9f1af32 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -716,13 +716,13 @@ int getSourceTrimOrigin(int source) int getSourceTrimValue(int source, int stickValue=0) { - auto origin = getSourceTrimOrigin(source); + int rv = 0; + auto origin = getSourceTrimOrigin(abs(source)); if (origin >= 0) { - return getStickTrimValue(origin, stickValue); - } - else { - return 0; + rv = getStickTrimValue(origin, stickValue); + if (source < 0) rv = -rv; } + return rv; } constexpr bitfield_channels_t all_channels_dirty = (bitfield_channels_t)-1; @@ -978,7 +978,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if (applyOffsetAndCurve) { bool applyTrims = !(mode & e_perout_mode_notrims); if (!applyTrims && g_model.thrTrim) { - auto origin = getSourceTrimOrigin(srcRaw); + auto origin = getSourceTrimOrigin(srcRawAbs); if (origin == g_model.getThrottleStickTrimSource() - MIXSRC_FIRST_TRIM) { applyTrims = true; } diff --git a/radio/src/model_init.cpp b/radio/src/model_init.cpp index 74f0992be84..21ce168a68f 100644 --- a/radio/src/model_init.cpp +++ b/radio/src/model_init.cpp @@ -22,6 +22,7 @@ #include "edgetx.h" #include "hal/adc_driver.h" #include "input_mapping.h" +#include "lib_file.h" #include "mixes.h" void clearInputs() @@ -188,7 +189,7 @@ void setModelDefaults(uint8_t id) #if defined(LUA) && defined(PCBTARANIS) if (isFileAvailable(WIZARD_PATH "/" WIZARD_NAME)) { - f_chdir(WIZARD_PATH); + etxChdir(WIZARD_PATH); luaExec(WIZARD_NAME); } #endif diff --git a/radio/src/options.h b/radio/src/options.h index 1c01e8abd26..4fa56f6fe0c 100644 --- a/radio/src/options.h +++ b/radio/src/options.h @@ -34,6 +34,9 @@ static const char * const options[] = { #if defined(GHOST) "ghost", #endif +#if FF_FS_EXFAT + "exfat", +#endif #if !defined(MODULE_PROTOCOL_D8) "eu", #endif diff --git a/radio/src/os/task.h b/radio/src/os/task.h index e1a62ed931a..2f41bfbbf5b 100644 --- a/radio/src/os/task.h +++ b/radio/src/os/task.h @@ -38,6 +38,9 @@ void task_create(task_handle_t* h, task_func_t func, const char* name, unsigned task_get_stack_usage(task_handle_t* h); unsigned task_get_stack_size(task_handle_t* h); +// CPU load in % over the last >= 500 ms, -1 if not supported +int task_get_cpu_load(); + bool scheduler_is_running(); void mutex_create(mutex_handle_t* h); diff --git a/radio/src/os/task_freertos.cpp b/radio/src/os/task_freertos.cpp index d6745e5c992..1d2a8dbaf0d 100644 --- a/radio/src/os/task_freertos.cpp +++ b/radio/src/os/task_freertos.cpp @@ -38,7 +38,7 @@ void task_create(task_handle_t* h, task_func_t func, const char* name, unsigned task_get_stack_usage(task_handle_t* h) { - return (h->_stack_size - uxTaskGetStackHighWaterMark(h->_rtos_handle)) * + return (uxTaskGetStackHighWaterMark(h->_rtos_handle)) * sizeof(StackType_t); } @@ -47,6 +47,25 @@ unsigned task_get_stack_size(task_handle_t* h) return h->_stack_size * sizeof(StackType_t); } +#define CPU_LOAD_WINDOW_US 500000 + +int task_get_cpu_load() +{ + static uint32_t last_time = 0; + static uint32_t last_idle = 0; + static int load = -1; + + uint32_t now = portGET_RUN_TIME_COUNTER_VALUE(); + uint32_t elapsed = now - last_time; + if (load < 0 || elapsed >= CPU_LOAD_WINDOW_US) { + uint32_t idle = ulTaskGetIdleRunTimeCounter() - last_idle; + load = idle >= elapsed ? 0 : 100 - (int)((uint64_t)idle * 100 / elapsed); + last_time = now; + last_idle += idle; + } + return load; +} + bool scheduler_is_running() { if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) diff --git a/radio/src/os/task_native.cpp b/radio/src/os/task_native.cpp index 290c5914c64..58ec8ab94b0 100644 --- a/radio/src/os/task_native.cpp +++ b/radio/src/os/task_native.cpp @@ -130,6 +130,11 @@ unsigned task_get_stack_size(task_handle_t* h) return h->_stack_size * 4; } +int task_get_cpu_load() +{ + return -1; +} + bool scheduler_is_running() { return true; diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index e6b627a7ae9..bccdd4d5903 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -50,13 +50,17 @@ extern uint32_t NV14internalModuleFwVersion; (moduleState[module].protocol == PROTOCOL_CHANNELS_PXX2)) #if defined (MULTIMODULE) + // Check the module type as well: 'multi.rfProtocol' shares its storage + // with other modules' data (e.g. AFHDS2A 'flysky.rx_id[0]') #define IS_D16_MULTI(module) \ - ((g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_FRSKYX) || \ - (g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_FRSKYX2)) - - #define IS_R9_MULTI(module) \ - (g_model.moduleData[module].multi.rfProtocol == \ - MODULE_SUBTYPE_MULTI_FRSKY_R9) + (isModuleMultimodule(module) && \ + ((g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_FRSKYX) || \ + (g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_FRSKYX2))) + + #define IS_R9_MULTI(module) \ + (isModuleMultimodule(module) && \ + (g_model.moduleData[module].multi.rfProtocol == \ + MODULE_SUBTYPE_MULTI_FRSKY_R9)) #define IS_HOTT_MULTI(module) \ (g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_HOTT) diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 0e00393f096..e59290de8bf 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -620,7 +620,8 @@ bool w_widget_name(void* user, uint8_t* data, uint32_t bitoffs, { auto zoneData = get_zoneData(user); - return wf(opaque, zoneData->widgetName.c_str(), zoneData->widgetName.size()); + return yaml_output_string(zoneData->widgetName.c_str(), + zoneData->widgetName.size(), wf, opaque); } static WidgetPersistentData* get_widgetData(void* user, uint16_t& option) @@ -789,7 +790,8 @@ bool w_wov_string(void* user, uint8_t* data, uint32_t bitoffs, uint16_t option; auto widgetData = get_widgetData(user, option); - return wf(opaque, widgetData->getString(option).c_str(), widgetData->getString(option).size()); + return yaml_output_string(widgetData->getString(option).c_str(), + widgetData->getString(option).size(), wf, opaque, true); } void r_wov_unsigned(void* user, uint8_t* data, uint32_t bitoffs, @@ -1064,9 +1066,7 @@ static bool _write_analog_name(uint8_t type, void* user, uint8_t* data, uint16_t idx = tw->getElmts(1); const char* name = analogGetCustomLabel(type, idx); - if (!wf(opaque, "\"", 1)) return false; - if (!wf(opaque, name, strlen(name))) return false; - return wf(opaque, "\"", 1); + return yaml_output_string(name, strlen(name), wf, opaque); } static void r_stick_name(void* user, uint8_t* data, uint32_t bitoffs, @@ -2657,7 +2657,7 @@ static void r_cfs_name(void* user, uint8_t* data, uint32_t bitoffs, const char* val, uint8_t val_len) { uint16_t idx = getIdx(user); - strAppend(g_model.customSwitches[idx].name, val, LEN_SWITCH_NAME); + copyToUnTerminated(g_model.customSwitches[idx].name, val); } static const struct YamlNode struct_cfsNameConfig[] = { diff --git a/radio/src/storage/yaml/yaml_parser.cpp b/radio/src/storage/yaml/yaml_parser.cpp index c7ea842e99e..567a6a45406 100644 --- a/radio/src/storage/yaml/yaml_parser.cpp +++ b/radio/src/storage/yaml/yaml_parser.cpp @@ -222,6 +222,12 @@ YamlParser::parse(const char* buffer, unsigned int size) break; case ps_ValEsc1: + // Match encodings generated by Companion YAML parser + if (*c == 'b') { scratch_buf += '\b'; state = ps_ValQuo; break; } + if (*c == 't') { scratch_buf += '\t'; state = ps_ValQuo; break; } + if (*c == 'n') { scratch_buf += '\n'; state = ps_ValQuo; break; } + if (*c == 'f') { scratch_buf += '\f'; state = ps_ValQuo; break; } + if (*c == 'r') { scratch_buf += '\r'; state = ps_ValQuo; break; } if (*c == 'x') { state = ps_ValEsc2; break; @@ -236,10 +242,13 @@ YamlParser::parse(const char* buffer, unsigned int size) state = ps_ValEsc3; break; } - else if (*c >= 'A' && *c <= 'F') { - escHexVal = (*c - 'A' + 10) << 4; + else { + char ch = toupper((uint8_t)*c); + if (ch >= 'A' && ch <= 'F') { + escHexVal = (ch - 'A' + 10) << 4; state = ps_ValEsc3; break; + } } TRACE_YAML("wrong hex digit '%c'",*c); return DONE_PARSING; @@ -251,11 +260,14 @@ YamlParser::parse(const char* buffer, unsigned int size) state = ps_ValQuo; break; } - else if (*c >= 'A' && *c <= 'F') { - escHexVal |= (*c - 'A' + 10); + else { + char ch = toupper((uint8_t)*c); + if (ch >= 'A' && ch <= 'F') { + escHexVal |= (ch - 'A' + 10); scratch_buf += escHexVal; state = ps_ValQuo; break; + } } TRACE_YAML("wrong hex digit '%c'",*c); return DONE_PARSING; @@ -298,7 +310,7 @@ YamlParser::parse(const char* buffer, unsigned int size) if ((state == ps_Val) && eof && node_found) { calls->set_attr(ctx, scratch_buf.c_str(), scratch_buf.size()); } - + return CONTINUE_PARSING; } diff --git a/radio/src/storage/yaml/yaml_tree_walker.cpp b/radio/src/storage/yaml/yaml_tree_walker.cpp index 7b468dd76fd..0fb49c6c429 100644 --- a/radio/src/storage/yaml/yaml_tree_walker.cpp +++ b/radio/src/storage/yaml/yaml_tree_walker.cpp @@ -112,14 +112,14 @@ static const char hex_digits[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; -static bool yaml_output_string(const char* str, uint32_t max_len, - yaml_writer_func wf, void* opaque) +bool yaml_output_string(const char* str, uint32_t max_len, + yaml_writer_func wf, void* opaque, bool exact) { if (!wf(opaque, "\"", 1)) return false; - while(max_len > 0 && *str) { - if (*str >= 0x20 && *str <= 0x7E && *str != '"') { + while(max_len > 0 && (exact || *str)) { + if (*str >= 0x20 && *str <= 0x7E && *str != '"' && *str != '\\') { if (!wf(opaque, str++, 1)) return false; max_len--; } diff --git a/radio/src/storage/yaml/yaml_tree_walker.h b/radio/src/storage/yaml/yaml_tree_walker.h index 1c18db49827..e8b0f3260f3 100644 --- a/radio/src/storage/yaml/yaml_tree_walker.h +++ b/radio/src/storage/yaml/yaml_tree_walker.h @@ -167,3 +167,11 @@ class YamlTreeWalker // utils uint32_t yaml_parse_enum(const struct YamlIdStr* choices, const char* val, uint8_t val_len); const char* yaml_output_enum(int32_t i, const struct YamlIdStr* choices); +// exact=false (default) stops at the first NUL, matching the semantics +// needed for a fixed-capacity char[] field whose content is shorter than +// its declared max_len - the field is not necessarily NUL-padded so +// anything past the terminator has no meaning. exact=true writes the full +// max_len regardless of embedded NULs - use it when max_len already IS +// the true content length (e.g. a std::string's size()). +bool yaml_output_string(const char* str, uint32_t max_len, yaml_writer_func wf, + void* opaque, bool exact = false); diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index ec16dcb34f5..8a91bd29f52 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -337,7 +337,7 @@ char *getCurveString(char *dest, int idx) idx = -idx; } - if (g_model.curves[idx - 1].name[0]) + if (idx <= MAX_CURVES && g_model.curves[idx - 1].name[0]) strAppend(s, g_model.curves[idx - 1].name, LEN_CURVE_NAME); else strAppendStringWithIndex(s, STR_CV, idx); @@ -475,6 +475,9 @@ char *getSwitchPositionName(char *dest, swsrc_t idx, bool defaultOnly) return strcpy(dest, STR_EMPTY); } else if (idx == SWSRC_OFF) { return getStringAtIndex(dest, STR_OFFON, 0); + } else if (idx < SWSRC_FIRST || idx > SWSRC_LAST) { + *dest = '\0'; + return dest; } char *s = dest; @@ -1183,6 +1186,7 @@ char *strAppendSigned(char *dest, int32_t value, uint8_t digits, uint8_t radix) return strAppendUnsigned(dest, (uint32_t)value, digits, radix); } +// NOTE: 'dest' buffer must be at least 'len + 1' bytes long to allow for nul terminator char *strAppend(char *dest, const char *source, int len) { if (source == nullptr) { *dest = '\0'; return dest; } diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index 33f530bbb5a..ca3dd5165c8 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -727,7 +727,9 @@ bool getSwitch(swsrc_t swtch, uint8_t flags) result = isTrainerConnected(); } else if (cs_idx >= SWSRC_FIRST_SENSOR) { - result = !telemetryItems[cs_idx-SWSRC_FIRST_SENSOR].isOld(); + // Out of range switches behave like a switch that doesn't exist + result = cs_idx <= SWSRC_LAST_SENSOR && + !telemetryItems[cs_idx - SWSRC_FIRST_SENSOR].isOld(); } else if (cs_idx == SWSRC_TELEMETRY_STREAMING) { result = TELEMETRY_STREAMING(); diff --git a/radio/src/targets/c14/board.h b/radio/src/targets/c14/board.h index f9193a0dcaf..133a52277fc 100644 --- a/radio/src/targets/c14/board.h +++ b/radio/src/targets/c14/board.h @@ -60,7 +60,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/targets/common/arm/stm32/flash_driver.cpp b/radio/src/targets/common/arm/stm32/flash_driver.cpp index cc41ad11ed9..776ff2e86f6 100644 --- a/radio/src/targets/common/arm/stm32/flash_driver.cpp +++ b/radio/src/targets/common/arm/stm32/flash_driver.cpp @@ -85,6 +85,82 @@ static uint32_t stm32_flash_get_sector_size(uint32_t sector) return 128 * 1024; } +// twice the datasheet maximum for a 128 KB sector erase at x32 parallelism +// (2 s, DS9405 Table 48); the driver never issues a bank or mass erase +#define FLASH_TIMEOUT_MS 4000 + +#if defined(FLASH_FLAG_RDERR) + #define _FLASH_FLAG_RDERR FLASH_FLAG_RDERR +#else + #define _FLASH_FLAG_RDERR 0U +#endif + +// Error flags are sticky until written with 1, so one left over by an earlier +// access since reset (e.g. a stray write to flash, which sets PGSERR) would +// abort the very next erase/program. Clear them before starting an operation. +static void flash_drv_clear_errors() +{ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | + FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | + FLASH_FLAG_PGSERR | _FLASH_FLAG_RDERR); +} + +static bool flash_drv_wait_last_op() +{ + CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; + DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; + + uint32_t start = DWT->CYCCNT; + uint32_t timeout_cycles = + (uint32_t)(FLASH_TIMEOUT_MS * (SystemCoreClock / 1000UL)); + + while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) { + if ((DWT->CYCCNT - start) > timeout_cycles) { + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | + FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | + FLASH_FLAG_PGSERR); + return false; + } + } + + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + + if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | + FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) { + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | + FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | + FLASH_FLAG_EOP); + return false; + } + + return true; +} + +// ES0206 2.2.15: on dual bank devices the data cache may be corrupted by a +// read-while-write, so it must be disabled while flash is erased/programmed +// and reset before being enabled again. +static bool flash_drv_disable_dcache() +{ + bool enabled = (FLASH->ACR & FLASH_ACR_DCEN) != 0; + if (enabled) FLASH->ACR &= ~FLASH_ACR_DCEN; + return enabled; +} + +static void flash_drv_flush_caches(bool dcache_enabled) +{ + if (FLASH->ACR & FLASH_ACR_ICEN) { + FLASH->ACR &= ~FLASH_ACR_ICEN; + FLASH->ACR |= FLASH_ACR_ICRST; + FLASH->ACR &= ~FLASH_ACR_ICRST; + FLASH->ACR |= FLASH_ACR_ICEN; + } + if (dcache_enabled) { + FLASH->ACR |= FLASH_ACR_DCRST; + FLASH->ACR &= ~FLASH_ACR_DCRST; + FLASH->ACR |= FLASH_ACR_DCEN; + } +} + #elif defined(STM32H7) || defined(STM32H7RS) static uint32_t stm32_flash_get_sector(uint32_t address) @@ -129,6 +205,43 @@ static inline void stm32_flash_lock() { HAL_FLASH_Lock(); } static int stm32_flash_erase_sector(uint32_t address) { + int ret = 0; + +#if defined(STM32F2) || defined(STM32F4) + + uint32_t sector = stm32_flash_get_sector(address); + + __disable_irq(); + __DSB(); + + stm32_flash_unlock(); + flash_drv_clear_errors(); + + bool dcache = flash_drv_disable_dcache(); + + if (sector > 11) sector += 4; + + CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); + FLASH->CR |= FLASH_PSIZE_WORD; + CLEAR_BIT(FLASH->CR, FLASH_CR_SNB); + FLASH->CR |= FLASH_CR_SER | (sector << FLASH_CR_SNB_Pos); + FLASH->CR |= FLASH_CR_STRT; + + if (!flash_drv_wait_last_op()) { + ret = -1; + } + + CLEAR_BIT(FLASH->CR, FLASH_CR_SER | FLASH_CR_SNB); + + __DSB(); + __enable_irq(); + + flash_drv_flush_caches(dcache); + + stm32_flash_lock(); + +#else + FLASH_EraseInitTypeDef eraseInit; eraseInit.TypeErase = FLASH_TYPEERASE_SECTORS; eraseInit.Sector = stm32_flash_get_sector(address); @@ -142,15 +255,20 @@ static int stm32_flash_erase_sector(uint32_t address) eraseInit.VoltageRange = FLASH_VOLTAGE_RANGE_3; #endif - int ret = 0; uint32_t sector_errors = 0; + // Interrupts must stay enabled here: the HAL timeout counts HAL_GetTick(), + // which only advances in the ms timer interrupt. Nothing needs masking, as + // code and vectors run from TCM/SDRAM, never from the bank being erased. stm32_flash_unlock(); if (HAL_FLASHEx_Erase(&eraseInit, §or_errors) != HAL_OK) { ret = -1; } stm32_flash_lock(); + +#endif + return ret; } @@ -162,18 +280,57 @@ static int stm32_flash_erase_sector(uint32_t address) #define FLASH_PROG_WORDS 4UL #define _FLASH_PROGRAM(address, p_data) \ HAL_FLASH_Program(FLASH_TYPEPROGRAM_QUADWORD, address, (uintptr_t)p_data) -#else - #define FLASH_PROG_WORDS 1UL - #define _FLASH_PROGRAM(address, p_data) \ - HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, *p_data) #endif static int stm32_flash_program(uint32_t address, void* data, uint32_t len) { + int ret = 0; + +#if defined(STM32F2) || defined(STM32F4) + uint32_t* p_data = (uint32_t*)data; uint32_t end_addr = address + len; - int ret = 0; + __disable_irq(); + __DSB(); + stm32_flash_unlock(); + flash_drv_clear_errors(); + + bool dcache = flash_drv_disable_dcache(); + + while (address < end_addr) { + CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); + FLASH->CR |= FLASH_PSIZE_WORD; + FLASH->CR |= FLASH_CR_PG; + + *(__IO uint32_t*)address = *p_data; + + // PG must be cleared even on failure, or the next erase sees PG+SER + bool ok = flash_drv_wait_last_op(); + CLEAR_BIT(FLASH->CR, FLASH_CR_PG); + + if (!ok) { + ret = -1; + break; + } + + address += sizeof(uint32_t); + p_data++; + } + + __DSB(); + __enable_irq(); + + flash_drv_flush_caches(dcache); + + stm32_flash_lock(); + +#else + + uint32_t* p_data = (uint32_t*)data; + uint32_t end_addr = address + len; + + // interrupts stay enabled, see stm32_flash_erase_sector() stm32_flash_unlock(); while (address < end_addr) { if (_FLASH_PROGRAM(address, p_data) != HAL_OK) { @@ -186,6 +343,9 @@ static int stm32_flash_program(uint32_t address, void* data, uint32_t len) } stm32_flash_lock(); + +#endif + return ret; } @@ -211,17 +371,29 @@ const etx_flash_driver_t stm32_flash_driver = { void unlockFlash() { stm32_flash_unlock(); } void lockFlash() { stm32_flash_lock(); } -void flashWrite(uint32_t* address, const uint32_t* buffer) +bool flashWrite(uint32_t* address, const uint32_t* buffer) { // check first if the address is on a sector boundary uint32_t sector = stm32_flash_get_sector((uintptr_t)address); uint32_t bank = stm32_flash_get_bank((uintptr_t)address); if ((uintptr_t)address == _flash_sector_address(sector, bank)) { - if (stm32_flash_erase_sector((uintptr_t)address) < 0) return; + if (stm32_flash_erase_sector((uintptr_t)address) < 0) return false; } - stm32_flash_program((uintptr_t)address, (uint8_t*)buffer, FLASH_PAGESIZE); + if (stm32_flash_program((uintptr_t)address, (uint8_t*)buffer, + FLASH_PAGESIZE) < 0) + return false; + +#if defined(__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + // drop any lines cached before the erase/program so the read back + // below comes from flash + SCB_InvalidateDCache_by_Addr(address, FLASH_PAGESIZE); +#endif + + // verify the page was actually written, independently of what the + // flash controller reported + return memcmp(address, buffer, FLASH_PAGESIZE) == 0; } // TODO: move this somewhere else, as it depends on firmware layout diff --git a/radio/src/targets/common/arm/stm32/flash_driver.h b/radio/src/targets/common/arm/stm32/flash_driver.h index 86dc0b40107..3f107cf9fc3 100644 --- a/radio/src/targets/common/arm/stm32/flash_driver.h +++ b/radio/src/targets/common/arm/stm32/flash_driver.h @@ -44,5 +44,5 @@ extern const void* stm32_flash_dfu_media; uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); -void flashWrite(uint32_t* address, const uint32_t* buffer); +bool flashWrite(uint32_t* address, const uint32_t* buffer); diff --git a/radio/src/targets/common/arm/stm32/stm32_gpio.cpp b/radio/src/targets/common/arm/stm32/stm32_gpio.cpp index 8bd0f1eccf0..33865f47d16 100644 --- a/radio/src/targets/common/arm/stm32/stm32_gpio.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_gpio.cpp @@ -77,7 +77,7 @@ void gpio_init(gpio_t pin, gpio_mode_t mode, gpio_speed_t speed) int pin_num = _pin_num(pin); _enable_clock(port); - _set_mode(port, pin, mode); + _set_mode(port, pin_num, mode); // pull up/down port->PUPDR &= ~(0x3 << (2 * pin_num)); diff --git a/radio/src/targets/common/arm/stm32/timers_driver.cpp b/radio/src/targets/common/arm/stm32/timers_driver.cpp index b3138bb7d0f..592b8860a52 100644 --- a/radio/src/targets/common/arm/stm32/timers_driver.cpp +++ b/radio/src/targets/common/arm/stm32/timers_driver.cpp @@ -71,6 +71,9 @@ uint32_t timersGetUsTick() return ms * 1000 + us; } +// FreeRTOS run-time stats clock +extern "C" uint32_t timersGetRunTimeCounter() { return timersGetUsTick(); } + static volatile uint32_t watchdogTimeout = 0; void watchdogSuspend(uint32_t timeout) diff --git a/radio/src/targets/gx15/CMakeLists.txt b/radio/src/targets/gx15/CMakeLists.txt index 28f17e8f084..0d56883c0f1 100644 --- a/radio/src/targets/gx15/CMakeLists.txt +++ b/radio/src/targets/gx15/CMakeLists.txt @@ -7,6 +7,7 @@ option(GHOST "Ghost TX Module" ON) option(MODULE_SIZE_STD "Standard size TX Module" ON) option(LUA_MIXER "Enable LUA mixer/model scripts support" ON) option(DISK_CACHE "Enable SD card disk cache" ON) +option(INTERNAL_GPS "Support for internal GPS" ON) option(STICK_DEAD_ZONE "Enable sticks dead zone" OFF) set(FIRMWARE_QSPI YES) @@ -27,6 +28,7 @@ set(HARDWARE_EXTERNAL_MODULE YES) set(INTERNAL_MODULE_AFHDS3 NO) set(ROTARY_ENCODER YES) set(FUNCTION_SWITCHES_WITH_RGB YES) +set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS") # IMU support set(IMU ON) @@ -80,7 +82,6 @@ set(SDRAM ON) add_definitions(-DRTCLOCK) add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) -add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE}) if(STICK_DEAD_ZONE) add_definitions(-DSTICK_DEAD_ZONE) @@ -95,6 +96,13 @@ if(DISK_CACHE) add_definitions(-DDISK_CACHE) endif() +if(INTERNAL_GPS) + message("-- Internal GPS enabled") + add_definitions(-DINTERNAL_GPS) + set(SRC ${SRC} gps.cpp gps_nmea.cpp gps_ubx.cpp) + add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE}) +endif() + if(FUNCTION_SWITCHES_WITH_RGB) set(FUNCTION_SWITCHES YES) add_definitions(-DFUNCTION_SWITCHES) diff --git a/radio/src/targets/gx15/hal.h b/radio/src/targets/gx15/hal.h index 8052910ca22..d60c86d318a 100644 --- a/radio/src/targets/gx15/hal.h +++ b/radio/src/targets/gx15/hal.h @@ -393,11 +393,11 @@ TIM17: ROTARY_ENCODER_TIMER #define I2S_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler #if !defined(FLYSKY_GIMBAL) - #define PDM_CLOCK GPIO_PIN(GPIOE, 5) - #define PDM_CLOCK_GPIO_AF LL_GPIO_AF_6 - #define PDM_SAI_BLOCK SAI1_Block_A - #define PDM_SAI_KER_FREQ 48000000 // PLL1Q (see system_clock.c) - #define PDM_CLOCK_FREQ 1600000 // 1.6 MHz → MCKDIV=30, R=100 → 16 kHz PCM direct + #define PDM_CLOCK GPIO_PIN(GPIOD, 3) // V1.5+ board, DFSDM1_CKOUT + #define PDM_CLOCK_GPIO_AF LL_GPIO_AF_3 + #define PDM_CLOCK_DFSDM + #define PDM_SAI_KER_FREQ 48000000 // PLL1Q, DFSDM1 audio clock (see system_clock.c) + #define PDM_CLOCK_FREQ 1600000 // 1.6 MHz → ÷30, R=100 → 16 kHz PCM direct #define PDM_DATA GPIO_PIN(GPIOE, 4) #define PDM_DATA_GPIO_PORT GPIOE #define PDM_DATA_GPIO_PIN 4 diff --git a/radio/src/targets/pa01/CMakeLists.txt b/radio/src/targets/pa01/CMakeLists.txt index 71728df1000..c05c9bd9570 100644 --- a/radio/src/targets/pa01/CMakeLists.txt +++ b/radio/src/targets/pa01/CMakeLists.txt @@ -1,10 +1,11 @@ option(UNEXPECTED_SHUTDOWN "Enable the Unexpected Shutdown screen" ON) option(PXX1 "PXX1 protocol support" ON) -option(PXX2 "PXX2 protocol support" OFF) +option(PXX2 "PXX2 protocol support" ON) option(AFHDS3 "AFHDS3 TX Module" ON) option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" ON) option(GHOST "Ghost TX Module" ON) -option(MODULE_SIZE_STD "Standard size TX Module" ON) +option(MODULE_SIZE_STD "Standard size TX Module" OFF) +option(MODULE_SIZE_SML "Small size TX Module" ON) option(LUA_MIXER "Enable LUA mixer/model scripts support" ON) option(DISK_CACHE "Enable SD card disk cache" ON) option(STICK_DEAD_ZONE "Enable sticks dead zone" YES) diff --git a/radio/src/targets/pa01/board.h b/radio/src/targets/pa01/board.h index 42a2b5bc765..4ced440aa65 100644 --- a/radio/src/targets/pa01/board.h +++ b/radio/src/targets/pa01/board.h @@ -61,7 +61,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/targets/pa01/hal.h b/radio/src/targets/pa01/hal.h index ebe5a719e63..3ddf314a380 100644 --- a/radio/src/targets/pa01/hal.h +++ b/radio/src/targets/pa01/hal.h @@ -319,7 +319,7 @@ #define AUDIO_DMA_Stream_IRQHandler DMA1_Stream1_IRQHandler #define AUDIO_TIMER TIM6 #define AUDIO_DMA DMA1 -#define AUDIO_UNMUTE_DELAY 100 // ms +#define AUDIO_UNMUTE_DELAY 160 // ms #define AUDIO_MUTE_DELAY 100 // ms #define INVERTED_MUTE_PIN diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 30e342f33e6..86b65f35bc1 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -312,9 +312,10 @@ void setSelectedUsbMode(int mode) {} void delay_ms(uint32_t ms) { } void delay_us(uint16_t us) { } -void flashWrite(uint32_t *address, const uint32_t *buffer) +bool flashWrite(uint32_t *address, const uint32_t *buffer) { sleep_ms(10); + return true; } uint32_t isBootloaderStart(const uint8_t * block) diff --git a/radio/src/targets/st16/board.h b/radio/src/targets/st16/board.h index cc95deef494..1055bda249c 100644 --- a/radio/src/targets/st16/board.h +++ b/radio/src/targets/st16/board.h @@ -60,7 +60,7 @@ void getCPUUniqueID(char * s); #define FLASH_PAGESIZE 256 void unlockFlash(); void lockFlash(); -void flashWrite(uint32_t * address, const uint32_t * buffer); +bool flashWrite(uint32_t * address, const uint32_t * buffer); uint32_t isFirmwareStart(const uint8_t * buffer); uint32_t isBootloaderStart(const uint8_t * buffer); diff --git a/radio/src/targets/tx16smk3/hal.h b/radio/src/targets/tx16smk3/hal.h index 050a4dd0803..97080435a30 100644 --- a/radio/src/targets/tx16smk3/hal.h +++ b/radio/src/targets/tx16smk3/hal.h @@ -584,6 +584,7 @@ USART6: INTMODULE_USART #define BT_TX_GPIO GPIO_PIN(GPIOB, 10) // PB.10 #define BT_RX_GPIO GPIO_PIN(GPIOB, 11) // PB.11 #define BT_EN_GPIO GPIO_PIN(GPIOE, 6) // PE.06 +#define BT_PWR_GPIO GPIO_PIN(GPIOC, 13) // PC.13 #endif // Touch diff --git a/radio/src/tasks.cpp b/radio/src/tasks.cpp index 3915ce20fb7..fc10b5e82e2 100644 --- a/radio/src/tasks.cpp +++ b/radio/src/tasks.cpp @@ -149,6 +149,10 @@ void tasksStart() { mutex_create(&audioMutex); +#if defined(LUA) + telemetryQueuesInit(); +#endif + #if defined(CLI) && !defined(SIMU) cliStart(); #endif diff --git a/radio/src/tasks.h b/radio/src/tasks.h index 129abf7c78b..24058d147d7 100644 --- a/radio/src/tasks.h +++ b/radio/src/tasks.h @@ -32,7 +32,11 @@ #if !defined(DEBUG) #define MIXER_STACK_SIZE 400 +#if FF_FS_EXFAT +#define AUDIO_STACK_SIZE 512 +#else #define AUDIO_STACK_SIZE 400 +#endif #else #define MIXER_STACK_SIZE 512 #define AUDIO_STACK_SIZE 512 diff --git a/radio/src/telemetry/crossfire.cpp b/radio/src/telemetry/crossfire.cpp index 31e26d6fdb5..baf50a6228b 100644 --- a/radio/src/telemetry/crossfire.cpp +++ b/radio/src/telemetry/crossfire.cpp @@ -130,21 +130,16 @@ void processCrossfireTelemetryValue(uint8_t index, int32_t value) value, sensor.unit, sensor.precision); } -template -bool getCrossfireTelemetryValue(uint8_t index, int32_t& value, - uint8_t* rxBuffer) +int32_t getCrossfireTelemetryValue(uint8_t index, uint8_t* rxBuffer, uint8_t size, bool isSigned) { - bool result = false; - uint8_t * byte = &rxBuffer[index]; - value = (*byte & 0x80) ? -1 : 0; - for (uint8_t i=0; i(3, value, rxBuffer)) - processCrossfireTelemetryValue(VERTICAL_SPEED_INDEX, value); + processCrossfireTelemetryValue(VERTICAL_SPEED_INDEX, + getCrossfireTelemetryValue(3, rxBuffer, 2, true)); break; case GPS_ID: - if (getCrossfireTelemetryValue<4>(3, value, rxBuffer)) - processCrossfireTelemetryValue(GPS_LATITUDE_INDEX, value/10); - if (getCrossfireTelemetryValue<4>(7, value, rxBuffer)) - processCrossfireTelemetryValue(GPS_LONGITUDE_INDEX, value/10); - if (getCrossfireTelemetryValue<2>(11, value, rxBuffer)) - processCrossfireTelemetryValue(GPS_GROUND_SPEED_INDEX, value); - if (getCrossfireTelemetryValue<2>(13, value, rxBuffer)) - processCrossfireTelemetryValue(GPS_HEADING_INDEX, value); - if (getCrossfireTelemetryValue<2>(15, value, rxBuffer)) - processCrossfireTelemetryValue(GPS_ALTITUDE_INDEX, value - 1000); - if (getCrossfireTelemetryValue<1>(17, value, rxBuffer)) - processCrossfireTelemetryValue(GPS_SATELLITES_INDEX, value); + processCrossfireTelemetryValue(GPS_LATITUDE_INDEX, + getCrossfireTelemetryValue(3, rxBuffer, 4, true)/10); + processCrossfireTelemetryValue(GPS_LONGITUDE_INDEX, + getCrossfireTelemetryValue(7, rxBuffer, 4, true)/10); + processCrossfireTelemetryValue(GPS_GROUND_SPEED_INDEX, + getCrossfireTelemetryValue(11, rxBuffer, 2, false)); + processCrossfireTelemetryValue(GPS_HEADING_INDEX, + getCrossfireTelemetryValue(13, rxBuffer, 2, false)); + processCrossfireTelemetryValue(GPS_ALTITUDE_INDEX, + getCrossfireTelemetryValue(15, rxBuffer, 2, false) - 1000); + processCrossfireTelemetryValue(GPS_SATELLITES_INDEX, + getCrossfireTelemetryValue(17, rxBuffer, 1, false)); break; case GPS_TIME_ID: { // Payload: year (2B BE), month, day, hour, min, sec, millisecond (2B BE) const CrossfireSensor & sensor = crossfireSensors[GPS_TIME_INDEX]; - if (!getCrossfireTelemetryValue<2>(3, value, rxBuffer)) - break; + value = getCrossfireTelemetryValue(3, rxBuffer, 2, false); uint8_t year = (uint8_t)((uint16_t)value - 2000); uint8_t month = rxBuffer[5]; uint8_t day = rxBuffer[6]; @@ -205,52 +199,49 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, } case BARO_ALT_ID: - if (getCrossfireTelemetryValue<2>(3, value, rxBuffer)) { - if (value & 0x8000) { - // Altitude in meters - value &= ~(0x8000); - value *= 100; // cm - } else { - // Altitude in decimeters + 10000dm - value -= 10000; - value *= 10; - } - processCrossfireTelemetryValue(BARO_ALTITUDE_INDEX, value); + value = getCrossfireTelemetryValue(3, rxBuffer, 2, false); + if (value & 0x8000) { + // Altitude in meters + value &= ~(0x8000); + value *= 100; // cm + } else { + // Altitude in decimeters + 10000dm + value -= 10000; + value *= 10; } + processCrossfireTelemetryValue(BARO_ALTITUDE_INDEX, value); // Length of TBS BARO_ALT has 4 payload bytes with just 2 bytes of altitude // but support including TBS VARIO if the declared payload length is 5 bytes - if (crsfPayloadLen == 5 && - getCrossfireTelemetryValue<1>(5, value, rxBuffer)) { - constexpr int Kl = 100; // linearity constant; - constexpr float Kr = .026; // range constant; - - int8_t sign = value < 0 ? -1 : 1; - value =((expf(value * sign * Kr) - 1) * Kl) * sign; - processCrossfireTelemetryValue(VERTICAL_SPEED_INDEX, value); + if (crsfPayloadLen == 5) { + constexpr int Kl = 100; // linearity constant; + constexpr float Kr = .026; // range constant; + + value = getCrossfireTelemetryValue(5, rxBuffer, 1, true); + int8_t sign = value < 0 ? -1 : 1; + value =((expf(value * sign * Kr) - 1) * Kl) * sign; + processCrossfireTelemetryValue(VERTICAL_SPEED_INDEX, value); } // Length of TBS BARO_ALT has 4 payload bytes with just 2 bytes of altitude // but support including ELRS VARIO if the declared payload length is 6 bytes or more - if (crsfPayloadLen > 5 && - getCrossfireTelemetryValue<2>(5, value, rxBuffer)) - processCrossfireTelemetryValue(VERTICAL_SPEED_INDEX, value); + if (crsfPayloadLen > 5) + processCrossfireTelemetryValue(VERTICAL_SPEED_INDEX, + getCrossfireTelemetryValue(5, rxBuffer, 2, true)); break; case AIRSPEED_ID: - if (getCrossfireTelemetryValue<2>(3, value, rxBuffer)) { // Airspeed in 0.1 * km/h (hectometers/h) // Converstion to KMH is done through PREC1 - processCrossfireTelemetryValue(AIRSPEED_INDEX, value); - } + processCrossfireTelemetryValue(AIRSPEED_INDEX, + getCrossfireTelemetryValue(3, rxBuffer, 2, false)); break; case CF_RPM_ID: { - getCrossfireTelemetryValue<1>(3, value, rxBuffer); - uint8_t sensorID = value; + uint8_t sensorID = getCrossfireTelemetryValue(3, rxBuffer, 1, false); for(uint8_t i = 0; i * 3 < (crsfPayloadLen - 4); i++) { - getCrossfireTelemetryValue<3>(4 + i * 3, value, rxBuffer); + value = getCrossfireTelemetryValue(4 + i * 3, rxBuffer, 3, true); const CrossfireSensor & sensor = crossfireSensors[CF_RPM_INDEX]; setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id + (sensorID << 8), 0, i, value, sensor.unit, sensor.precision); @@ -260,10 +251,9 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, case TEMP_ID: { - getCrossfireTelemetryValue<1>(3, value, rxBuffer); - uint8_t sensorID = value; + uint8_t sensorID = getCrossfireTelemetryValue(3, rxBuffer, 1, false); for(uint8_t i = 0; i * 2 < (crsfPayloadLen - 4); i++) { - getCrossfireTelemetryValue<2>(4 + i * 2, value, rxBuffer); + value = getCrossfireTelemetryValue(4 + i * 2, rxBuffer, 2, true); const CrossfireSensor & sensor = crossfireSensors[TEMP_INDEX]; setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id + (sensorID << 8), 0, i, value, sensor.unit, sensor.precision); @@ -273,14 +263,13 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, case CELLS_ID: { - getCrossfireTelemetryValue<1>(3, value, rxBuffer); - uint8_t sensorID = value; + uint8_t sensorID = getCrossfireTelemetryValue(3, rxBuffer, 1, false); if (sensorID < 128) { // Treating frame as Cells sensor // We can handle only up to 8 cells for(uint8_t i = 0; i * 2 < min(16, crsfPayloadLen - 4); i++) { - getCrossfireTelemetryValue<2>(4 + i * 2, value, rxBuffer); + value = getCrossfireTelemetryValue(4 + i * 2, rxBuffer, 2, false); const CrossfireSensor & sensor = crossfireSensors[CELLS_INDEX]; setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id + (sensorID << 8), 0, 0, i << 16 | value / 10, sensor.unit, sensor.precision); @@ -288,7 +277,7 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, } else { // Treating frame as Voltage sensor array for(uint8_t i = 0; i * 2 < (crsfPayloadLen - 4); i++) { - value = (rxBuffer[4 + i * 2] << 8) + rxBuffer[4 + i * 2 + 1]; + value = getCrossfireTelemetryValue(4 + i * 2, rxBuffer, 2, false); const CrossfireSensor & sensor = crossfireSensors[VOLT_ARRAY_INDEX]; setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id + (sensorID << 8), 0, i, value / 10, sensor.unit, sensor.precision); @@ -299,30 +288,29 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, case LINK_ID: for (unsigned int i=0; i<=TX_SNR_INDEX; i++) { - if (getCrossfireTelemetryValue<1>(3+i, value, rxBuffer)) { - if (i == TX_POWER_INDEX) { - static const int32_t power_values[] = {0, 10, 25, 100, 500, - 1000, 2000, 250, 50}; - value = - ((unsigned)value < DIM(power_values) ? power_values[value] : 0); - } else if (i == RX_ANTENNA_INDEX && - crossfireModuleStatus[module].isELRS) { - value += 1; // 0 = Antenna 1, 1 = Antenna 2 + value = getCrossfireTelemetryValue(3+i, rxBuffer, 1, true); + if (i == TX_POWER_INDEX) { + static const int32_t power_values[] = {0, 10, 25, 100, 500, + 1000, 2000, 250, 50}; + value = + ((unsigned)value < DIM(power_values) ? power_values[value] : 0); + } else if (i == RX_ANTENNA_INDEX && + crossfireModuleStatus[module].isELRS) { + value += 1; // 0 = Antenna 1, 1 = Antenna 2 + } + processCrossfireTelemetryValue(i, value); + if (i == RX_QUALITY_INDEX) { + if (value) { + telemetryData.rssi.set(value); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid |= 1 << module; } - processCrossfireTelemetryValue(i, value); - if (i == RX_QUALITY_INDEX) { - if (value) { - telemetryData.rssi.set(value); - telemetryStreaming = TELEMETRY_TIMEOUT10ms; - telemetryData.telemetryValid |= 1 << module; - } - else { - if (telemetryData.telemetryValid & (1 << module)) { - telemetryData.rssi.reset(); - telemetryStreaming = 0; - } - telemetryData.telemetryValid &= ~(1 << module); + else { + if (telemetryData.telemetryValid & (1 << module)) { + telemetryData.rssi.reset(); + telemetryStreaming = 0; } + telemetryData.telemetryValid &= ~(1 << module); } } } @@ -350,39 +338,39 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, break; case LINK_RX_ID: - if (getCrossfireTelemetryValue<1>(4, value, rxBuffer)) - processCrossfireTelemetryValue(RX_RSSI_PERC_INDEX, value); - if (getCrossfireTelemetryValue<1>(7, value, rxBuffer)) - processCrossfireTelemetryValue(TX_RF_POWER_INDEX, value); + processCrossfireTelemetryValue(RX_RSSI_PERC_INDEX, + getCrossfireTelemetryValue(4, rxBuffer, 1, false)); + processCrossfireTelemetryValue(TX_RF_POWER_INDEX, + getCrossfireTelemetryValue(7, rxBuffer, 1, false)); break; case LINK_TX_ID: - if (getCrossfireTelemetryValue<1>(4, value, rxBuffer)) - processCrossfireTelemetryValue(TX_RSSI_PERC_INDEX, value); - if (getCrossfireTelemetryValue<1>(7, value, rxBuffer)) - processCrossfireTelemetryValue(RX_RF_POWER_INDEX, value); - if (getCrossfireTelemetryValue<1>(8, value, rxBuffer)) - processCrossfireTelemetryValue(TX_FPS_INDEX, value * 10); + processCrossfireTelemetryValue(TX_RSSI_PERC_INDEX, + getCrossfireTelemetryValue(4, rxBuffer, 1, false)); + processCrossfireTelemetryValue(RX_RF_POWER_INDEX, + getCrossfireTelemetryValue(7, rxBuffer, 1, false)); + processCrossfireTelemetryValue(TX_FPS_INDEX, + getCrossfireTelemetryValue(8, rxBuffer, 1, false) * 10); break; case BATTERY_ID: - if (getCrossfireTelemetryValue<2>(3, value, rxBuffer)) - processCrossfireTelemetryValue(BATT_VOLTAGE_INDEX, value); - if (getCrossfireTelemetryValue<2>(5, value, rxBuffer)) - processCrossfireTelemetryValue(BATT_CURRENT_INDEX, value); - if (getCrossfireTelemetryValue<3>(7, value, rxBuffer)) - processCrossfireTelemetryValue(BATT_CAPACITY_INDEX, value); - if (getCrossfireTelemetryValue<1>(10, value, rxBuffer)) - processCrossfireTelemetryValue(BATT_REMAINING_INDEX, value); + processCrossfireTelemetryValue(BATT_VOLTAGE_INDEX, + getCrossfireTelemetryValue(3, rxBuffer, 2, true)); + processCrossfireTelemetryValue(BATT_CURRENT_INDEX, + getCrossfireTelemetryValue(5, rxBuffer, 2, true)); + processCrossfireTelemetryValue(BATT_CAPACITY_INDEX, + getCrossfireTelemetryValue(7, rxBuffer, 3, false)); + processCrossfireTelemetryValue(BATT_REMAINING_INDEX, + getCrossfireTelemetryValue(10, rxBuffer, 1, false)); break; case ATTITUDE_ID: - if (getCrossfireTelemetryValue<2>(3, value, rxBuffer)) - processCrossfireTelemetryValue(ATTITUDE_PITCH_INDEX, value/10); - if (getCrossfireTelemetryValue<2>(5, value, rxBuffer)) - processCrossfireTelemetryValue(ATTITUDE_ROLL_INDEX, value/10); - if (getCrossfireTelemetryValue<2>(7, value, rxBuffer)) - processCrossfireTelemetryValue(ATTITUDE_YAW_INDEX, value/10); + processCrossfireTelemetryValue(ATTITUDE_PITCH_INDEX, + getCrossfireTelemetryValue(3, rxBuffer, 2, true)/10); + processCrossfireTelemetryValue(ATTITUDE_ROLL_INDEX, + getCrossfireTelemetryValue(5, rxBuffer, 2, true)/10); + processCrossfireTelemetryValue(ATTITUDE_YAW_INDEX, + getCrossfireTelemetryValue(7, rxBuffer, 2, true)/10); break; case FLIGHT_MODE_ID: @@ -399,18 +387,11 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer, if (rxBuffer[3] == 0xEA // radio address && rxBuffer[5] == 0x10 // timing correction frame ) { - uint32_t update_interval; - int32_t offset; - if (getCrossfireTelemetryValue<4>(6, (int32_t &)update_interval, - rxBuffer) && - getCrossfireTelemetryValue<4>(10, offset, rxBuffer)) { - // values are in 10th of micro-seconds - update_interval /= 10; - offset /= 10; - - //TRACE("[XF] Rate: %d, Lag: %d", update_interval, offset); - getModuleSyncStatus(module).update(update_interval, offset); - } + // values are in 10th of micro-seconds + uint32_t update_interval = getCrossfireTelemetryValue(6, rxBuffer, 4, false) / 10; + int32_t offset = getCrossfireTelemetryValue(10, rxBuffer, 4, true) / 10; + //TRACE("[XF] Rate: %d, Lag: %d", update_interval, offset); + getModuleSyncStatus(module).update(update_interval, offset); } break; diff --git a/radio/src/telemetry/hott.cpp b/radio/src/telemetry/hott.cpp index 4a0766c0974..be0ae5f6e08 100644 --- a/radio/src/telemetry/hott.cpp +++ b/radio/src/telemetry/hott.cpp @@ -295,13 +295,15 @@ const HottSensor hottSensors[] = { }; // clang-format on +// Never returns null: falls back to the sentinel entry (name == nullptr) const HottSensor * getHottSensor(uint16_t id) { - for (const HottSensor * sensor = hottSensors; sensor->id; sensor++) { + const HottSensor * sensor = hottSensors; + for (; sensor->id; sensor++) { if (id == sensor->id) return sensor; } - return nullptr; + return sensor; } int16_t processHoTTdBm(int16_t value) @@ -928,7 +930,7 @@ void hottSetDefault(int index, uint16_t id, uint8_t subId, uint8_t instance) telemetrySensor.instance = instance; const HottSensor * sensor = getHottSensor(id); - if (sensor) { + if (sensor->name) { TelemetryUnit unit = sensor->unit; uint8_t prec = min(2, sensor->precision); telemetrySensor.init(STR_VAL(sensor->name), unit, prec); diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 5db03468ef4..6bb3a6f8c00 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -22,6 +22,7 @@ #include "edgetx.h" #include "multi.h" #include "os/async.h" +#include "os/task.h" #include "os/timer.h" #include "pulses/afhds3.h" #include "pulses/flysky.h" @@ -456,15 +457,30 @@ TelemetryQueue* luaInputTelemetryFifo = nullptr; #if defined(COLORLCD) std::list telemetryQueues; +// Scripts register / destroy their queue from the menus task, while frames are +// pushed into them from the timer task (telemetry RX runs there, at a higher +// priority). Both the list and the queue lifetime need to be serialised. +static mutex_handle_t telemetryQueueMutex; + +void telemetryQueuesInit() +{ + mutex_create(&telemetryQueueMutex); +} + void registerTelemetryQueue(TelemetryQueue* queue) { + MutexLock lock = MutexLock::MakeInstance(&telemetryQueueMutex); telemetryQueues.emplace_back(queue); } -void deregisterTelemetryQueue(TelemetryQueue* queue) +void destroyTelemetryQueue(TelemetryQueue* queue) { + MutexLock lock = MutexLock::MakeInstance(&telemetryQueueMutex); telemetryQueues.remove(queue); + delete queue; } +#else +void telemetryQueuesInit() {} #endif static void pushDataToQueue(TelemetryQueue* queue, uint8_t* data, int length) @@ -479,8 +495,11 @@ static void pushDataToQueue(TelemetryQueue* queue, uint8_t* data, int length) void pushTelemetryDataToQueues(uint8_t* data, int length) { #if defined(COLORLCD) - for (auto it = telemetryQueues.cbegin(); it != telemetryQueues.cend(); ++it) - pushDataToQueue(*it, data, length); + { + MutexLock lock = MutexLock::MakeInstance(&telemetryQueueMutex); + for (auto it = telemetryQueues.cbegin(); it != telemetryQueues.cend(); ++it) + pushDataToQueue(*it, data, length); + } #endif pushDataToQueue(luaInputTelemetryFifo, data, length); } diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 00a6a984da6..fa429d06939 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -237,8 +237,17 @@ extern OutputTelemetryBuffer outputTelemetryBuffer __DMA_NO_CACHE; #define LUA_TELEMETRY_INPUT_FIFO_SIZE 256 typedef Fifo TelemetryQueue; extern TelemetryQueue* luaInputTelemetryFifo; + +// Create the lock protecting the queue list. Must be called before the +// scheduler is started. +void telemetryQueuesInit(); + void registerTelemetryQueue(TelemetryQueue*); -void deregisterTelemetryQueue(TelemetryQueue*); + +// Unregister and delete in one go: the producer runs in the timer task and +// would otherwise be able to write into a queue that has just been freed. +void destroyTelemetryQueue(TelemetryQueue*); + void pushTelemetryDataToQueues(uint8_t* data, int length); #endif diff --git a/radio/src/tests/fs_path.cpp b/radio/src/tests/fs_path.cpp new file mode 100644 index 00000000000..68daf036efe --- /dev/null +++ b/radio/src/tests/fs_path.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "gtests.h" +#include "lib_file.h" + +// Helper: normalize with the given CWD (set via etxChdir, which needs the dir +// to exist under the sim SD root = radio/src/tests). "/" and "/images" exist. +static std::string norm(const char* cwd, const char* in) +{ + if (etxChdir(cwd) != FR_OK) { + ADD_FAILURE() << "chdir failed: " << cwd; + return {}; + } + char out[FF_MAX_LFN + 1]; + etxNormalizePath(in, out, sizeof(out)); + return std::string(out); +} + +// Path normalization must collapse "."/".." to a clean absolute path so Lua +// file access behaves the same on exFAT as on FAT32 (FatFS cannot resolve ".." +// or report the CWD on exFAT). +TEST(FsPath, normalizeAbsolute) +{ + EXPECT_EQ(etxChdir("/"), FR_OK); + char out[FF_MAX_LFN + 1]; + + etxNormalizePath("/SCRIPTS/../IMAGE", out, sizeof(out)); + EXPECT_STREQ(out, "/IMAGE"); + + etxNormalizePath("/SCRIPTS/../IMAGE/file.jpg", out, sizeof(out)); + EXPECT_STREQ(out, "/IMAGE/file.jpg"); + + etxNormalizePath("/a/./b/./c", out, sizeof(out)); + EXPECT_STREQ(out, "/a/b/c"); + + etxNormalizePath("//a///b//", out, sizeof(out)); + EXPECT_STREQ(out, "/a/b"); + + // ".." can never escape the root + etxNormalizePath("/..", out, sizeof(out)); + EXPECT_STREQ(out, "/"); + etxNormalizePath("/../../x", out, sizeof(out)); + EXPECT_STREQ(out, "/x"); +} + +TEST(FsPath, normalizeRelative) +{ + // relative paths resolve against the tracked CWD + EXPECT_EQ(norm("/images", "logo.png"), "/images/logo.png"); + EXPECT_EQ(norm("/images", "../IMAGE"), "/IMAGE"); + EXPECT_EQ(norm("/images", "../IMAGE/file.jpg"), "/IMAGE/file.jpg"); + EXPECT_EQ(norm("/images", "./sub/x"), "/images/sub/x"); + EXPECT_EQ(norm("/", "a/b"), "/a/b"); + EXPECT_EQ(norm("/", ".."), "/"); +} + +TEST(FsPath, normalizeNullAndEmpty) +{ + EXPECT_EQ(etxChdir("/images"), FR_OK); + char out[FF_MAX_LFN + 1]; + + etxNormalizePath(nullptr, out, sizeof(out)); + EXPECT_STREQ(out, "/images"); // null/empty -> CWD + + etxNormalizePath("", out, sizeof(out)); + EXPECT_STREQ(out, "/images"); +} + +// etxChdir tracks an absolute CWD that etxGetcwd() returns (a replacement for +// the exFAT-broken f_getcwd()). A failed chdir must leave the CWD unchanged. +TEST(FsPath, chdirTracksCwd) +{ + EXPECT_EQ(etxChdir("/"), FR_OK); + EXPECT_STREQ(etxGetcwd(), "/"); + + EXPECT_EQ(etxChdir("/images"), FR_OK); + EXPECT_STREQ(etxGetcwd(), "/images"); + + // relative + dotted chdir is normalized to absolute + EXPECT_EQ(etxChdir(".."), FR_OK); + EXPECT_STREQ(etxGetcwd(), "/"); + + // a chdir to a missing dir fails and leaves the CWD untouched + EXPECT_EQ(etxChdir("/images"), FR_OK); + EXPECT_NE(etxChdir("/no/such/dir"), FR_OK); + EXPECT_STREQ(etxGetcwd(), "/images"); +} + +// Guard against buffer overruns: undersized output buffers must never write +// past outLen (ASan would abort), and must not fabricate a bogus "/" when the +// path did not actually collapse to root. (Regression for the buffer guard.) +TEST(FsPath, normalizeBufferBounds) +{ + EXPECT_EQ(etxChdir("/"), FR_OK); + char out[8]; + + // zero-length: no write at all + out[0] = '#'; + etxNormalizePath("/x", out, 0); + EXPECT_EQ(out[0], '#'); + + // room for terminator only -> empty string + etxNormalizePath("/x", out, 1); + EXPECT_STREQ(out, ""); + + // root just fits in 2 bytes + etxNormalizePath("..", out, 2); + EXPECT_STREQ(out, "/"); + + // first segment does not fit -> empty, NOT a fabricated "/" + etxNormalizePath("/VERYLONGNAME", out, 5); + EXPECT_STREQ(out, ""); + + // partial fit stays terminated and within bounds + etxNormalizePath("/ab/cd", out, 4); + EXPECT_STREQ(out, "/ab"); +} diff --git a/radio/src/tests/lua.cpp b/radio/src/tests/lua.cpp index a90408168cb..5e968a0fc6a 100644 --- a/radio/src/tests/lua.cpp +++ b/radio/src/tests/lua.cpp @@ -198,6 +198,120 @@ TEST(Lua, Switches) #endif } +TEST(Lua, getSwitchInfo) +{ + RADIO_RESET(); + MODEL_RESET(); + char name[32]; + char lua[256]; + + // Unconfigured switches still return a table, with type SWITCH_NONE + int unconfigured = -1; + for (int i = 0; i < switchGetMaxAllSwitches(); i++) { + if (!switchIsCustomSwitch(i)) { + g_eeGeneral.switchSetType(i, SWITCH_NONE); + unconfigured = i; + break; + } + } + + for (int i = 0; i < switchGetMaxAllSwitches(); i++) { + getSwitchName(name, i); + snprintf(lua, sizeof(lua), + "local info = getSwitchInfo(%d)\n" + "if info == nil then error('nil') end\n" + "if info.name ~= '%s' then error('name ' .. info.name) end\n" + "if info.type ~= %d then error('type ' .. info.type) end\n" + "if info.isCustomisableSwitch ~= %s then error('custom') end", + MIXSRC_FIRST_SWITCH + i, name, g_model.getSwitchType(i), + switchIsCustomSwitch(i) ? "true" : "false"); + EXPECT_TRUE(__luaExecStr(lua)) << "switch " << i << " (" << name << ")"; + } + + if (unconfigured >= 0) { + EXPECT_EQ(SWITCH_NONE, g_model.getSwitchType(unconfigured)); + } + + RADIO_RESET(); +} + +TEST(Lua, getFieldInfoSwitches) +{ + RADIO_RESET(); + MODEL_RESET(); + char lower[8]; + char lua[512]; + + for (int i = 0; i < switchGetMaxAllSwitches(); i++) { + const char* name = switchGetDefaultName(i); + size_t len = strlen(name); + for (size_t n = 0; n <= len && n < sizeof(lower); n++) + lower[n] = tolower(name[n]); + + // The lower case name can belong to another field first, e.g. the 'sl' + // slider on T22, but must never find a different switch + snprintf(lua, sizeof(lua), + "local id = %d\n" + "local first, last = %d, %d\n" + "local info = getFieldInfo('%s')\n" + "if info == nil or info.id ~= id then error('upper') end\n" + "info = getFieldInfo('%s')\n" + "if info == nil then error('lower') end\n" + "if info.id ~= id and info.id >= first and info.id <= last then\n" + " error('lower finds switch ' .. info.id)\n" + "end\n" + "info = getFieldInfo(id)\n" + "if info == nil or info.name ~= '%s' then error('by id') end", + MIXSRC_FIRST_SWITCH + i, MIXSRC_FIRST_SWITCH, + MIXSRC_FIRST_SWITCH + switchGetMaxAllSwitches() - 1, name, lower, + name); + EXPECT_TRUE(__luaExecStr(lua)) << "switch " << i << " (" << name << ")"; + } +} + +TEST(Lua, getFieldInfoSensorBeforeSwitch) +{ + RADIO_RESET(); + MODEL_RESET(); + char lower[TELEM_LABEL_LEN + 1] = {}; + char lua[256]; + + // A switch only found by its lower case default name, e.g. 'sw1' + for (int i = 0; i < switchGetMaxAllSwitches(); i++) { + const char* name = switchGetDefaultName(i); + size_t len = strlen(name); + if (len > 2 && len <= TELEM_LABEL_LEN) { + for (size_t n = 0; n < len; n++) lower[n] = tolower(name[n]); + break; + } + } + if (!lower[0]) return; // no such switch on this target + + // A sensor with the same name is still found first + strncpy(g_model.telemetrySensors[0].label, lower, TELEM_LABEL_LEN); + snprintf(lua, sizeof(lua), + "local info = getFieldInfo('%s')\n" + "if info == nil or info.id ~= %d then error('not sensor') end", + lower, MIXSRC_FIRST_TELEM); + EXPECT_TRUE(__luaExecStr(lua)) << lower; + MODEL_RESET(); +} + +TEST(Lua, getSwitchInfoOutOfRange) +{ + RADIO_RESET(); + MODEL_RESET(); + char lua[128]; + + for (int src : {MIXSRC_FIRST_SWITCH - 1, MIXSRC_FIRST_SWITCH - 1000, + MIXSRC_FIRST_SWITCH + MAX_SWITCHES, + MIXSRC_FIRST_SWITCH + SWSRC_COUNT - 1, -100000, 100000}) { + snprintf(lua, sizeof(lua), + "if getSwitchInfo(%d) ~= nil then error('not nil') end", src); + EXPECT_TRUE(__luaExecStr(lua)) << "source " << src; + } +} + TEST(Lua, testFloatIntegerEquality) { // 0.5 is not an integer, so it must not equal 0 (regression #7587) diff --git a/radio/src/tests/modelslist_labels.cpp b/radio/src/tests/modelslist_labels.cpp index 1388015918a..50f943da737 100644 --- a/radio/src/tests/modelslist_labels.cpp +++ b/radio/src/tests/modelslist_labels.cpp @@ -99,7 +99,7 @@ class ModelMapFsTest : public ::testing::Test // as a compaction optimisation, which would leave this fixture without // a "header:" section at all. Giving it a name keeps the fixture // realistic and avoids that unrelated edge case. - strAppend(model.header.name, filename, LEN_MODEL_NAME); + copyToUnTerminated(model.header.name, filename); strAppend(model.header.labels, labels, LABELS_LENGTH - 1); model.getScreenData(0)->LayoutId = screenLayoutId; model.getTopbarData()->zones[0].widgetName = widgetName; diff --git a/radio/src/tests/modules_helpers.cpp b/radio/src/tests/modules_helpers.cpp new file mode 100644 index 00000000000..8cad7cc6019 --- /dev/null +++ b/radio/src/tests/modules_helpers.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "gtests.h" + +class ModulesHelpersTest : public EdgeTxTest {}; + +#if defined(MULTIMODULE) && defined(HARDWARE_INTERNAL_MODULE) + +// 'multi.rfProtocol' shares storage with other module types' data. An +// AFHDS2A module whose bound receiver ID starts with a FrSky Multi protocol +// number must not be treated as D16/R9 (it would open the FrSky bind menu +// instead of binding). +TEST_F(ModulesHelpersTest, multiProtocolChecksIgnoreOtherModuleTypes) +{ + const uint8_t frskyProtocols[] = { + MODULE_SUBTYPE_MULTI_FRSKYX, + MODULE_SUBTYPE_MULTI_FRSKYX2, + MODULE_SUBTYPE_MULTI_FRSKY_R9, + }; + + for (auto proto : frskyProtocols) { + setModuleType(INTERNAL_MODULE, MODULE_TYPE_FLYSKY_AFHDS2A); + g_model.moduleData[INTERNAL_MODULE].flysky.rx_id[0] = proto; + + EXPECT_FALSE(isModuleD16(INTERNAL_MODULE)) << "rx_id[0]=" << (int)proto; + EXPECT_FALSE(IS_D16_MULTI(INTERNAL_MODULE)) << "rx_id[0]=" << (int)proto; + EXPECT_FALSE(IS_R9_MULTI(INTERNAL_MODULE)) << "rx_id[0]=" << (int)proto; + } +} + +TEST_F(ModulesHelpersTest, multiProtocolChecksMatchMultimodule) +{ + setModuleType(INTERNAL_MODULE, MODULE_TYPE_MULTIMODULE); + + g_model.moduleData[INTERNAL_MODULE].multi.rfProtocol = + MODULE_SUBTYPE_MULTI_FRSKYX; + EXPECT_TRUE(isModuleD16(INTERNAL_MODULE)); + EXPECT_FALSE(IS_R9_MULTI(INTERNAL_MODULE)); + + g_model.moduleData[INTERNAL_MODULE].multi.rfProtocol = + MODULE_SUBTYPE_MULTI_FRSKYX2; + EXPECT_TRUE(isModuleD16(INTERNAL_MODULE)); + + g_model.moduleData[INTERNAL_MODULE].multi.rfProtocol = + MODULE_SUBTYPE_MULTI_FRSKY_R9; + EXPECT_FALSE(isModuleD16(INTERNAL_MODULE)); + EXPECT_TRUE(IS_R9_MULTI(INTERNAL_MODULE)); +} + +#endif + +#if defined(HARDWARE_EXTERNAL_MODULE) + +// AFHDS2A is only supported by the internal module driver +TEST_F(ModulesHelpersTest, afhds2aNotAvailableAsExternalModule) +{ + EXPECT_FALSE(isExternalModuleAvailable(MODULE_TYPE_FLYSKY_AFHDS2A)); +} + +#endif diff --git a/radio/src/tests/strhelpers.cpp b/radio/src/tests/strhelpers.cpp new file mode 100644 index 00000000000..f68b7e40ab7 --- /dev/null +++ b/radio/src/tests/strhelpers.cpp @@ -0,0 +1,156 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "gtests.h" +#include "strhelpers.h" + +TEST(StrHelpers, SwitchPositionNameSpecial) +{ + MODEL_RESET(); + char s[64]; + + EXPECT_STREQ(STR_EMPTY, getSwitchPositionName(s, SWSRC_NONE)); + EXPECT_STREQ("Act", getSwitchPositionName(s, SWSRC_RADIO_ACTIVITY)); + EXPECT_STREQ("!Act", getSwitchPositionName(s, -SWSRC_RADIO_ACTIVITY)); + EXPECT_STREQ("Trn", getSwitchPositionName(s, SWSRC_TRAINER_CONNECTED)); + EXPECT_STREQ("Tele", getSwitchPositionName(s, SWSRC_TELEMETRY_STREAMING)); + EXPECT_STREQ("L01", getSwitchPositionName(s, SWSRC_FIRST_LOGICAL_SWITCH)); + EXPECT_STREQ("!L01", getSwitchPositionName(s, -SWSRC_FIRST_LOGICAL_SWITCH)); +} + +TEST(StrHelpers, SwitchPositionNameSensor) +{ + MODEL_RESET(); + char s[64]; + + strncpy(g_model.telemetrySensors[0].label, "Tst", TELEM_LABEL_LEN); + strncpy(g_model.telemetrySensors[MAX_TELEMETRY_SENSORS - 1].label, "Lst", + TELEM_LABEL_LEN); + + EXPECT_STREQ("Tst", getSwitchPositionName(s, SWSRC_FIRST_SENSOR)); + EXPECT_STREQ("!Tst", getSwitchPositionName(s, -SWSRC_FIRST_SENSOR)); + EXPECT_STREQ("Lst", getSwitchPositionName(s, SWSRC_LAST_SENSOR)); +} + +TEST(StrHelpers, SwitchPositionNameOutOfRange) +{ + MODEL_RESET(); + char s[64]; + + for (swsrc_t sw : {SWSRC_LAST + 1, SWSRC_LAST + 100, 511, 100000}) { + EXPECT_STREQ("", getSwitchPositionName(s, sw)) << "switch " << sw; + EXPECT_STREQ("", getSwitchPositionName(s, -sw)) << "switch " << -sw; + } +} + +TEST(StrHelpers, CurveString) +{ + MODEL_RESET(); + char s[64]; + + EXPECT_STREQ(STR_MMMINV[0], getCurveString(s, 0)); + EXPECT_STREQ("CV1", getCurveString(s, 1)); + EXPECT_STREQ("-CV1", getCurveString(s, -1)); + EXPECT_STREQ("CV32", getCurveString(s, MAX_CURVES)); + EXPECT_STREQ("-CV32", getCurveString(s, -MAX_CURVES)); + + strncpy(g_model.curves[0].name, "Abc", LEN_CURVE_NAME); + strncpy(g_model.curves[MAX_CURVES - 1].name, "Xyz", LEN_CURVE_NAME); + EXPECT_STREQ("Abc", getCurveString(s, 1)); + EXPECT_STREQ("-Abc", getCurveString(s, -1)); + EXPECT_STREQ("Xyz", getCurveString(s, MAX_CURVES)); +} + +TEST(StrHelpers, CurveStringOutOfRange) +{ + MODEL_RESET(); + char s[64]; + + // No custom curve name lookup past the last curve + EXPECT_STREQ("CV33", getCurveString(s, MAX_CURVES + 1)); + EXPECT_STREQ("-CV33", getCurveString(s, -(MAX_CURVES + 1))); + EXPECT_STREQ("CV511", getCurveString(s, 511)); +} + +#if defined(COLORLCD) +static CurveRef makeCurveRef(uint8_t type, int value) +{ + SourceNumVal v; + v.isSource = false; + v.value = value; + CurveRef curve; + curve.type = type; + curve.value = v.rawValue; + return curve; +} + +TEST(StrHelpers, CurveRefString) +{ + MODEL_RESET(); + char s[64]; + + for (uint8_t type : {CURVE_REF_DIFF, CURVE_REF_EXPO, CURVE_REF_FUNC, + CURVE_REF_CUSTOM}) { + memset(s, 0, sizeof(s)); + EXPECT_STREQ("", getCurveRefString(s, sizeof(s), makeCurveRef(type, 0))); + } + + memset(s, 0, sizeof(s)); + EXPECT_STREQ("D50%", getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_DIFF, 50))); + memset(s, 0, sizeof(s)); + EXPECT_STREQ("E-20%", getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_EXPO, -20))); + + for (int i = 1; i < CURVE_BASE; i++) { + memset(s, 0, sizeof(s)); + EXPECT_STREQ(STR_VCURVEFUNC[i], + getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_FUNC, i))); + } + + memset(s, 0, sizeof(s)); + EXPECT_STREQ("CV1", getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_CUSTOM, 1))); + memset(s, 0, sizeof(s)); + EXPECT_STREQ("-CV32", + getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_CUSTOM, -MAX_CURVES))); +} + +TEST(StrHelpers, CurveRefStringOutOfRange) +{ + MODEL_RESET(); + char s[64]; + + for (int value : {(int)CURVE_BASE, 100, 511, -1, -512}) { + memset(s, 0, sizeof(s)); + EXPECT_STREQ("", getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_FUNC, value))) + << "func " << value; + } + + memset(s, 0, sizeof(s)); + EXPECT_STREQ("CV33", + getCurveRefString(s, sizeof(s), + makeCurveRef(CURVE_REF_CUSTOM, MAX_CURVES + 1))); +} +#endif diff --git a/radio/src/tests/switches.cpp b/radio/src/tests/switches.cpp index 1758c9a099a..b0b40700b0d 100644 --- a/radio/src/tests/switches.cpp +++ b/radio/src/tests/switches.cpp @@ -87,6 +87,30 @@ TEST(getSwitch, nullSW) EXPECT_TRUE(getSwitch(0)); } +TEST(getSwitch, sensorSwitches) +{ + MODEL_RESET(); + telemetryItems[0].setFresh(); + telemetryItems[MAX_TELEMETRY_SENSORS - 1].setFresh(); + + for (int i = 0; i < MAX_TELEMETRY_SENSORS; i++) { + bool expected = !telemetryItems[i].isOld(); + EXPECT_EQ(expected, getSwitch(SWSRC_FIRST_SENSOR + i)) << "sensor " << i; + EXPECT_EQ(!expected, getSwitch(-(SWSRC_FIRST_SENSOR + i))) << "sensor " << i; + } +} + +TEST(getSwitch, outOfRange) +{ + MODEL_RESET(); + + // Out of range switches behave like a switch that doesn't exist + for (swsrc_t sw : {SWSRC_LAST + 1, SWSRC_LAST + 100, 511}) { + EXPECT_FALSE(getSwitch(sw)) << "switch " << sw; + EXPECT_TRUE(getSwitch(-sw)) << "switch " << -sw; + } +} + #if defined(PCBTARANIS) TEST(getSwitch, inputWithTrim) diff --git a/radio/src/tests/yaml_strings.cpp b/radio/src/tests/yaml_strings.cpp new file mode 100644 index 00000000000..def821934ba --- /dev/null +++ b/radio/src/tests/yaml_strings.cpp @@ -0,0 +1,243 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "gtests.h" + +#if defined(COLORLCD) + +#include "storage/yaml/yaml_tree_walker.h" +#include "storage/yaml/yaml_parser.h" +#include "storage/yaml/yaml_datastructs.h" +#include "hal/adc_driver.h" +#include "analogs.h" + +// User supplied strings stored via custom YAML writers must be emitted as +// double-quoted, escaped scalars. Written raw, characters such as ': ', ' #' +// or a leading quote / bracket produce YAML that Companion cannot load +// (#7829), and '\' or '"' are mangled by the radio's own parser. + +struct YamlStringCase { + const char* raw; + const char* quoted; // expected YAML scalar as written by the radio +}; + +static const YamlStringCase stringCases[] = { + {"Alt:", "\"Alt:\""}, // #7829: trailing colon + {"a: b", "\"a: b\""}, + {"x #y", "\"x #y\""}, + {"[x] &y *z", "\"[x] &y *z\""}, + {"\"q\"", "\"\\x22q\\x22\""}, + {"back\\slash", "\"back\\x5Cslash\""}, +}; + +// Analog custom labels are limited to LEN_ANA_NAME (3) characters +static const YamlStringCase analogCases[] = { + {"a:", "\"a:\""}, + {"#x", "\"#x\""}, + {"a\"b", "\"a\\x22b\""}, + {"\\", "\"\\x5C\""}, +}; + +static bool yaml_string_writer(void* opaque, const char* str, size_t len) +{ + static_cast(opaque)->append(str, len); + return true; +} + +static std::string writeYaml(const YamlNode* root, void* data) +{ + std::string yaml; + YamlTreeWalker tree; + tree.reset(root, (uint8_t*)data); + EXPECT_TRUE(tree.generate(yaml_string_writer, &yaml)); + return yaml; +} + +static void readYaml(const YamlNode* root, void* data, const std::string& yaml) +{ + YamlTreeWalker tree; + tree.reset(root, (uint8_t*)data); + YamlParser yp; + yp.init(YamlTreeWalker::get_parser_calls(), &tree); + yp.set_eof(); + yp.parse(yaml.c_str(), yaml.size()); +} + +// Value written for 'key' on the first line matching it after 'section'. +static std::string yamlValue(const std::string& yaml, const std::string& section, + const std::string& key) +{ + size_t pos = yaml.find(section); + if (pos == std::string::npos) return ""; + std::string tag = key + ": "; + pos = yaml.find(tag, pos); + if (pos == std::string::npos) return ""; + pos += tag.size(); + return yaml.substr(pos, yaml.find_first_of("\r\n", pos) - pos); +} + +// Remove quotes around 'value' if the writer added them +static void stripQuotes(std::string& yaml, const std::string& value) +{ + auto quoted = "\"" + value + "\""; + auto pos = yaml.find(quoted); + if (pos != std::string::npos) yaml.replace(pos, quoted.size(), value); + EXPECT_NE(std::string::npos, yaml.find(": " + value + "\r\n")) << value; +} + +class YamlStringTest : public EdgeTxTest +{ + protected: + void SetUp() override + { + EdgeTxTest::SetUp(); + resetStorage(); + } + + void TearDown() override { resetStorage(); } + + // Screen / topbar data and analog labels live in static + // storage outside g_model / g_eeGeneral, so they must be cleared explicitly. + static void resetStorage() + { + g_model.resetScreenData(); + for (uint8_t type : {ADC_INPUT_MAIN, ADC_INPUT_FLEX}) { + for (uint8_t i = 0; i < adcGetMaxInputs(type); i += 1) + analogSetCustomLabel(type, i, "", LEN_ANA_NAME); + } + } + + static std::string writeModel() + { + return writeYaml(get_modeldata_nodes(), &g_model); + } + + static void readModel(const std::string& yaml) + { + g_model.resetScreenData(); + readYaml(get_modeldata_nodes(), &g_model, yaml); + } + + static std::string writeRadio() + { + return writeYaml(get_radiodata_nodes(), &g_eeGeneral); + } + + static void readRadio(const std::string& yaml) + { + resetStorage(); + readYaml(get_radiodata_nodes(), &g_eeGeneral, yaml); + } +}; + +TEST_F(YamlStringTest, WidgetOptionString) +{ + for (const auto& c : stringCases) { + SCOPED_TRACE(c.raw); + resetStorage(); + + g_model.setScreenLayoutId(0, "Layout1x1"); + g_model.getScreenLayoutData(0)->setWidgetName(0, "Text"); + auto wd = g_model.getWidgetData(0, 0); + wd->setType(0, WOV_String); + wd->setString(0, c.raw); + + auto yaml = writeModel(); + EXPECT_EQ(c.quoted, yamlValue(yaml, "screenData:", "stringValue")); + + readModel(yaml); + wd = g_model.getWidgetData(0, 0); + EXPECT_EQ(WOV_String, wd->getType(0)); + EXPECT_EQ(c.raw, wd->getString(0)); + } +} + +TEST_F(YamlStringTest, ScreenWidgetName) +{ + for (const auto& c : stringCases) { + SCOPED_TRACE(c.raw); + resetStorage(); + + g_model.setScreenLayoutId(0, "Layout1x1"); + g_model.getScreenLayoutData(0)->setWidgetName(0, c.raw); + + auto yaml = writeModel(); + EXPECT_EQ(c.quoted, yamlValue(yaml, "screenData:", "widgetName")); + + readModel(yaml); + EXPECT_STREQ(c.raw, g_model.getScreenLayoutData(0)->getWidgetName(0)); + } +} + +TEST_F(YamlStringTest, TopbarWidgetName) +{ + for (const auto& c : stringCases) { + SCOPED_TRACE(c.raw); + resetStorage(); + + g_model.getTopbarData()->setWidgetName(0, c.raw); + + auto yaml = writeModel(); + EXPECT_EQ(c.quoted, yamlValue(yaml, "topbarData:", "widgetName")); + + readModel(yaml); + EXPECT_STREQ(c.raw, g_model.getTopbarData()->getWidgetName(0)); + } +} + +TEST_F(YamlStringTest, AnalogLabels) +{ + for (const auto& c : analogCases) { + SCOPED_TRACE(c.raw); + resetStorage(); + + analogSetCustomLabel(ADC_INPUT_MAIN, 0, c.raw, strlen(c.raw)); + analogSetCustomLabel(ADC_INPUT_FLEX, 0, c.raw, strlen(c.raw)); + + auto yaml = writeRadio(); + EXPECT_EQ(c.quoted, yamlValue(yaml, "sticksConfig:", "name")); + EXPECT_EQ(c.quoted, yamlValue(yaml, "potsConfig:", "name")); + + readRadio(yaml); + EXPECT_STREQ(c.raw, analogGetCustomLabel(ADC_INPUT_MAIN, 0)); + EXPECT_STREQ(c.raw, analogGetCustomLabel(ADC_INPUT_FLEX, 0)); + } +} + +// Files written before quoting was added must still load +TEST_F(YamlStringTest, ReadsLegacyUnquotedValues) +{ + g_model.setScreenLayoutId(0, "Layout1x1"); + g_model.getScreenLayoutData(0)->setWidgetName(0, "Text"); + auto wd = g_model.getWidgetData(0, 0); + wd->setType(0, WOV_String); + wd->setString(0, "Hello"); + + auto model = writeModel(); + stripQuotes(model, "Text"); + stripQuotes(model, "Hello"); + + readModel(model); + EXPECT_STREQ("Text", g_model.getScreenLayoutData(0)->getWidgetName(0)); + EXPECT_EQ("Hello", g_model.getWidgetData(0, 0)->getString(0)); +} + +#endif diff --git a/radio/src/thirdparty/Lua/src/lauxlib.c b/radio/src/thirdparty/Lua/src/lauxlib.c index 0c35a851a0e..6b3d726d8fc 100644 --- a/radio/src/thirdparty/Lua/src/lauxlib.c +++ b/radio/src/thirdparty/Lua/src/lauxlib.c @@ -25,6 +25,11 @@ #include "lauxlib.h" +#if !defined(LUA_CROSS_COMPILER) +/* EdgeTX: resolves "." and ".." against the tracked working folder (lib_file.cpp) */ +void etxNormalizePath(const char *in, char *out, size_t outLen); +#endif + /* ** {====================================================== @@ -782,8 +787,12 @@ LUALIB_API int luaL_loadfilex (lua_State *L, const char *filename, lf.f = fopen(filename, "r"); if (!lf.f) return errfile(L, "open", fnameindex); #else - if (f_open(&lf.f, filename, FA_READ) != FR_OK) - return errfile(L, "open", fnameindex); + { + char path[FF_MAX_LFN + 1]; + etxNormalizePath(filename, path, sizeof(path)); /* FatFs can't resolve ".." on exFAT */ + if (f_open(&lf.f, path, FA_READ) != FR_OK) + return errfile(L, "open", fnameindex); + } #endif } lf.type = 0; diff --git a/radio/src/thirdparty/Lua/src/liolib.c b/radio/src/thirdparty/Lua/src/liolib.c index 51cbba40918..1e3a8cb1e4f 100644 --- a/radio/src/thirdparty/Lua/src/liolib.c +++ b/radio/src/thirdparty/Lua/src/liolib.c @@ -24,6 +24,9 @@ #include "FatFs/ff.h" +/* EdgeTX: resolves "." and ".." against the tracked working folder (lib_file.cpp) */ +void etxNormalizePath(const char *in, char *out, size_t outLen); + // #define l_getc(f) fatfs_getc(f) // #define l_lockfile(f) ((void)0) // #define l_unlockfile(f) ((void)0) @@ -282,10 +285,12 @@ static inline BYTE fatfs_open_mode(const char *mode) static int io_open (lua_State *L) { const char *filename = luaL_checkstring(L, 1); const char *mode = luaL_optstring(L, 2, "r"); + char path[FF_MAX_LFN + 1]; LStream *p = newfile(L); const char *md = mode; /* to traverse/check mode */ luaL_argcheck(L, l_checkmode(md), 2, "invalid mode"); - return (f_open(&p->f, filename, fatfs_open_mode(mode)) != FR_OK) + etxNormalizePath(filename, path, sizeof(path)); /* FatFs can't resolve ".." on exFAT */ + return (f_open(&p->f, path, fatfs_open_mode(mode)) != FR_OK) ? luaL_fileresult(L, 0, filename) : 1; } diff --git a/radio/src/translations/bl_translations.h b/radio/src/translations/bl_translations.h index f919807a4df..3402ff9121e 100644 --- a/radio/src/translations/bl_translations.h +++ b/radio/src/translations/bl_translations.h @@ -64,6 +64,8 @@ #define TR_BL_DIR_EMPTY "Adresar je prazdny" #define TR_BL_WRITING_FW "Nahravani firmware ..." #define TR_BL_WRITING_COMPL "Nahravani dokonceno" + #define TR_BL_WRITING_FAILED TR("Zapis selhal!", "Zapis se nezdaril!") + #define TR_BL_RETRY_OR_DFU TR("Zkuste znovu / DFU", "Zkuste znovu, nebo pouzijte USB (DFU)") #define TR_BL_ENABLE "Povoleno" #define TR_BL_DISABLE "Zakazano" @@ -111,6 +113,8 @@ #define TR_BL_DIR_EMPTY "Katalog er tomt" #define TR_BL_WRITING_FW "Installerer..." #define TR_BL_WRITING_COMPL "Installation slut" + #define TR_BL_WRITING_FAILED TR("Skrivning fejlede!", "Skrivning mislykkedes!") + #define TR_BL_RETRY_OR_DFU TR("Prov igen / DFU", "Prov igen, eller brug USB (DFU)") #define TR_BL_ENABLE "Aktiver" #define TR_BL_DISABLE "Deaktiver" @@ -158,6 +162,8 @@ #define TR_BL_DIR_EMPTY "Verzeichnis leer" #define TR_BL_WRITING_FW "Schreibe..." #define TR_BL_WRITING_COMPL TR("Schreiben fertig","Schreiben abgeschlossen") + #define TR_BL_WRITING_FAILED TR("Schreiben Fehler!", "Schreiben fehlgeschlagen!") + #define TR_BL_RETRY_OR_DFU TR("Neu vers. / DFU", "Erneut versuchen, oder USB (DFU)") #define TR_BL_ENABLE "Aktivieren" #define TR_BL_DISABLE "Deaktivieren" @@ -206,6 +212,8 @@ #define TR_BL_DIR_EMPTY "Repertoire vide" #define TR_BL_WRITING_FW "Ecriture Firmware ..." #define TR_BL_WRITING_COMPL "Ecriture terminée" + #define TR_BL_WRITING_FAILED TR("Echec ecriture!", "Echec de l'ecriture!") + #define TR_BL_RETRY_OR_DFU TR("Reessayer / DFU", "Reessayez, ou utilisez USB (DFU)") #define TR_BL_ENABLE "Activer" #define TR_BL_DISABLE "Désactiver" @@ -253,6 +261,8 @@ #define TR_BL_DIR_EMPTY "Cartella vuota" #define TR_BL_WRITING_FW "Scrittura..." #define TR_BL_WRITING_COMPL "Scrittura completata" + #define TR_BL_WRITING_FAILED TR("Scrittura fallita!", "Scrittura fallita!") + #define TR_BL_RETRY_OR_DFU TR("Riprova / DFU", "Riprova, oppure usa USB (DFU)") #define TR_BL_ENABLE "Abilita" #define TR_BL_DISABLE "Disabilita" @@ -300,6 +310,8 @@ #define TR_BL_DIR_EMPTY "Katalog jest pusty" #define TR_BL_WRITING_FW "Zapis firmware ..." #define TR_BL_WRITING_COMPL "Zapis ukonczony" + #define TR_BL_WRITING_FAILED TR("Zapis nieudany!", "Zapis nie powiodl sie!") + #define TR_BL_RETRY_OR_DFU TR("Powtorz / DFU", "Powtorz, lub uzyj USB (DFU)") #define TR_BL_ENABLE "Enable" #define TR_BL_DISABLE "Disable" @@ -347,6 +359,8 @@ #define TR_BL_DIR_EMPTY "Katalogen aer tom" #define TR_BL_WRITING_FW "Skriver..." #define TR_BL_WRITING_COMPL "Skrivning klar" + #define TR_BL_WRITING_FAILED TR("Skrivning fel!", "Skrivningen misslyckades!") + #define TR_BL_RETRY_OR_DFU TR("Forsok igen / DFU", "Forsok igen, eller anvand USB (DFU)") #define TR_BL_ENABLE "Aktivera" #define TR_BL_DISABLE "Inaktivera" @@ -394,6 +408,8 @@ #define TR_BL_DIR_EMPTY "Directory is empty" #define TR_BL_WRITING_FW "Writing..." #define TR_BL_WRITING_COMPL "Writing complete" + #define TR_BL_WRITING_FAILED TR("Writing failed!", "Writing failed!") + #define TR_BL_RETRY_OR_DFU TR("Retry or use DFU", "Retry, or flash over USB (DFU)") #define TR_BL_ENABLE "Enable" #define TR_BL_DISABLE "Disable" diff --git a/radio/src/translations/i18n/de.h b/radio/src/translations/i18n/de.h index c6425407c3b..426fe7d9a5a 100644 --- a/radio/src/translations/i18n/de.h +++ b/radio/src/translations/i18n/de.h @@ -570,11 +570,11 @@ #define TR_BLOFFBRIGHTNESS "Aus-Helligkeit" #define TR_KEYS_BACKLIGHT "Tastenbeleucht." #define TR_BLCOLOR "Farbe" -#define TR_ONE_LOG_PER_DAY "One log per day" -#define TR_KEY_LOCK_FMT "Key lock (%s+%s hold)" -#define TR_KEYS_LOCKED "Keys locked" -#define TR_KEYS_LOCKED_FMT "Keys locked (%s+%s)" -#define TR_KEYS_UNLOCKED "Keys unlocked" +#define TR_ONE_LOG_PER_DAY "1 Log pro Tag" +#define TR_KEY_LOCK_FMT TR_BW_COL("T.Sperre %s+%s", "Tastensperre (%s+%s halten)") +#define TR_KEYS_LOCKED "Tasten gesperrt" +#define TR_KEYS_LOCKED_FMT "Tasten gesperrt (%s+%s)" +#define TR_KEYS_UNLOCKED "Tasten entsperrt" #define TR_SPLASHSCREEN TR("Startbild Ein", "Startbild Anzeigedauer") #define TR_PLAY_HELLO "Startton abspielen" #define TR_PWR_ON_DELAY TR("PWR EIN Verzög.", "Einschaltverzögerung") diff --git a/radio/src/translations/i18n/he.h b/radio/src/translations/i18n/he.h index d13dd9bcff1..447d807a499 100644 --- a/radio/src/translations/i18n/he.h +++ b/radio/src/translations/i18n/he.h @@ -33,27 +33,27 @@ */ // Main menu -#define TR_QM_MANAGE_MODELS "Manage\nModels" -#define TR_QM_MODEL_SETUP "Model\nSetup" -#define TR_QM_RADIO_SETUP "Radio\nSetup" -#define TR_QM_UI_SETUP "UI\nSetup" -#define TR_QM_TOOLS "Tools" -#define TR_QM_MODEL_SETTINGS "Model\nSettings" -#define TR_QM_RADIO_SETTINGS "Radio\nSettings" -#define TR_QM_FLIGHT_MODES TR_SFC_AIR("Drive\nModes", "Flight\nModes") -#define TR_QM_INPUTS "Inputs" -#define TR_QM_MIXES "Mixes" -#define TR_QM_OUTPUTS "Outputs" -#define TR_QM_CURVES "Curves" -#define TR_QM_GLOBAL_VARS "Global\nVariables" -#define TR_QM_LOGICAL_SW "Logical\nSwitches" -#define TR_QM_SPEC_FUNC "Special\nFunctions" -#define TR_QM_CUSTOM_LUA "Custom\nScripts" -#define TR_QM_TELEM "Telemetry" -#define TR_QM_GLOB_FUNC "Global\nFunctions" -#define TR_QM_TRAINER "מדריך" +#define TR_QM_MANAGE_MODELS "ניהול\nמודלים" +#define TR_QM_MODEL_SETUP "הגדרת\nמודל" +#define TR_QM_RADIO_SETUP "הגדרת\nשלט" +#define TR_QM_UI_SETUP "הגדרת\nממשק" +#define TR_QM_TOOLS "כלים" +#define TR_QM_MODEL_SETTINGS "הגדרות\nמודל" +#define TR_QM_RADIO_SETTINGS "הגדרות\nשלט" +#define TR_QM_FLIGHT_MODES TR_SFC_AIR("מצבי\nנהיגה", "מצבי\nטיסה") +#define TR_QM_INPUTS "כניסות" +#define TR_QM_MIXES "מיקסים" +#define TR_QM_OUTPUTS "יציאות" +#define TR_QM_CURVES "עקומות" +#define TR_QM_GLOBAL_VARS "משתנים\nגלובליים" +#define TR_QM_LOGICAL_SW "מתגים\nלוגיים" +#define TR_QM_SPEC_FUNC "פונקציות\nמיוחדות" +#define TR_QM_CUSTOM_LUA "סקריפטים\nמותאמים" +#define TR_QM_TELEM "טלמטריה" +#define TR_QM_GLOB_FUNC "פונקציות\nגלובליות" +#define TR_QM_TRAINER "טריינר" #define TR_QM_HARDWARE "חומרה" -#define TR_QM_ABOUT "About\nEdgeTX" +#define TR_QM_ABOUT "אודות\nEdgeTX" #define TR_QM_THEMES "ערכות נושא" #define TR_QM_TOP_BAR "בר עליון" #define TR_QM_SCREEN_1 "מסך 1" @@ -66,28 +66,28 @@ #define TR_QM_SCREEN_8 "מסך 8" #define TR_QM_SCREEN_9 "מסך 9" #define TR_QM_SCREEN_10 "מסך 10" -#define TR_QM_ADD_SCREEN "Add\nScreen" -#define TR_QM_APPS "Apps" +#define TR_QM_ADD_SCREEN "הוסף\nמסך" +#define TR_QM_APPS "יישומים" #define TR_QM_STORAGE "אחסון" -#define TR_QM_RESET TR_SFC_AIR("Drive\nReset", "Flight\nReset") -#define TR_QM_CHAN_MON "Channel\nMonitor" -#define TR_QM_LS_MON "LS\nMonitor" +#define TR_QM_RESET TR_SFC_AIR("איפוס\nנהיגה", "איפוס\nטיסה") +#define TR_QM_CHAN_MON "תצוגת\nערוצים" +#define TR_QM_LS_MON "תצוגת\nמתגים לוגיים" #define TR_QM_STATS "סטטיסטיקה" #define TR_QM_DEBUG "ניפוי שגיאות" #define TR_MAIN_MODEL_SETTINGS "הגדרות מודל" -#define TR_MAIN_RADIO_SETTINGS "הגדרות רדיו" +#define TR_MAIN_RADIO_SETTINGS "הגדרות שלט" #define TR_MAIN_MENU_MANAGE_MODELS "ניהול מודלים" #define TR_MAIN_MENU_MODEL_NOTES "הערות מודל" -#define TR_MAIN_MENU_CHANNEL_MONITOR "מצגי ערוצים" -#define TR_MONITOR_SWITCHES "מסך מתגים לוגים" +#define TR_MAIN_MENU_CHANNEL_MONITOR "תצוגת ערוצים" +#define TR_MONITOR_SWITCHES "מסך מתגים לוגיים" #define TR_MAIN_MENU_MODEL_SETTINGS "הגדרות מודל" #define TR_MAIN_MENU_RADIO_SETTINGS "הגדרות שלט" -#define TR_MAIN_MENU_SCREEN_SETTINGS "UI Setup" +#define TR_MAIN_MENU_SCREEN_SETTINGS "הגדרות ממשק" #define TR_MAIN_MENU_STATISTICS "סטטיסטיקות" #define TR_MAIN_MENU_ABOUT_EDGETX "מידע על EdgeTX" #define TR_MAIN_VIEW_X "מסך " #define TR_MAIN_MENU_THEMES "ערכות נושא" -#define TR_MAIN_MENU_APPS "Apps" +#define TR_MAIN_MENU_APPS "יישומים" #define TR_MENUHELISETUP "הגדרות מסוק" #define TR_MENUFLIGHTMODES TR_SFC_AIR("DRIVE MODES", "מצבי טיסה") #define TR_MENUFLIGHTMODE TR_SFC_AIR("DRIVE MODE", "מצב טיסה") @@ -96,19 +96,19 @@ #define TR_MENUCURVES "עקומות" #define TR_MIXES "מיקסים" #define TR_MENU_GLOBAL_VARS "משתנים גלובלים" -#define TR_MENULOGICALSWITCHES "מתגים לוגים" -#define TR_MENUCUSTOMFUNC "אופציות מיוחדות למודל" +#define TR_MENULOGICALSWITCHES "מתגים לוגיים" +#define TR_MENUCUSTOMFUNC "פונקציות מיוחדות" #define TR_MENUCUSTOMSCRIPTS "סקריפטים מיוחדים" #define TR_MENUTELEMETRY "טלמטריה" -#define TR_MENUSPECIALFUNCS "פונקציות לכל המודלים והשלט" +#define TR_MENUSPECIALFUNCS "פונקציות גלובליות" #define TR_MENUTRAINER "טריינר" #define TR_HARDWARE "הגדרות חומרה" -#define TR_USER_INTERFACE "בר עליון" +#define TR_USER_INTERFACE "ממשק משתמש" #define TR_SD_CARD "כרטיס זיכרון" -#define TR_DEBUG "איבחון" +#define TR_DEBUG "אבחון" #define TR_MENU_RADIO_SWITCHES TR("בדיקת מתגים וכפתורים", "SWITCHES") #define TR_MENUCALIBRATION "כיול" -#define TR_FUNCTION_SWITCHES "מפסקים בהתאמה אישית" +#define TR_FUNCTION_SWITCHES "מתגים בהתאמה אישית" // End Main menu #define TR_MINUTE_SINGULAR "דקה" @@ -120,12 +120,12 @@ #define TR_MMMINV_1 "---" #define TR_MMMINV_2 "הפוך" #define TR_VBEEPMODE_1 "שקט" -#define TR_VBEEPMODE_2 "אזעקה" -#define TR_VBEEPMODE_3 "ללא מפתח" +#define TR_VBEEPMODE_2 "התראות" +#define TR_VBEEPMODE_3 "ללא מקשים" #define TR_VBEEPMODE_4 "הכל" #define TR_VBLMODE_1 "כבוי" -#define TR_VBLMODE_2 "מפתח" -#define TR_VBLMODE_3 TR("Ctrl","Controls") +#define TR_VBLMODE_2 "מקשים" +#define TR_VBLMODE_3 TR("בקרים", "בקרים") #define TR_VBLMODE_4 "שניהם" #define TR_VBLMODE_5 "דלוק" #define TR_TRNMODE_1 "כבוי" @@ -139,58 +139,58 @@ #define TR_AUX_SERIAL_MODES_1 "כבוי" #define TR_AUX_SERIAL_MODES_2 "שיקוף טלמטריה" #define TR_AUX_SERIAL_MODES_3 "בטלמטריה" -#define TR_AUX_SERIAL_MODES_4 TR("SBUS Trn Inv.","SBUS Trainer Inv.") -#define TR_AUX_SERIAL_MODES_5 "SBUS Trainer" +#define TR_AUX_SERIAL_MODES_4 TR("SBUS טריינר הפוך", "SBUS טריינר הפוך") +#define TR_AUX_SERIAL_MODES_5 "SBUS טריינר" #define TR_AUX_SERIAL_MODES_6 "LUA" #define TR_AUX_SERIAL_MODES_7 "CLI" #define TR_AUX_SERIAL_MODES_8 "GPS" -#define TR_AUX_SERIAL_MODES_9 "מיפוי שגיאות" +#define TR_AUX_SERIAL_MODES_9 "ניפוי שגיאות" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "מודול חיצוני" -#define TR_SWTYPES_1 "כלום" -#define TR_SWTYPES_2 "להחליף" +#define TR_SWTYPES_1 "ללא" +#define TR_SWTYPES_2 "החלפה" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" #define TR_SWTYPES_5 "גלובלי" -#define TR_POTTYPES_1 "כלום" -#define TR_POTTYPES_2 "Pot" -#define TR_POTTYPES_3 TR("Pot w. det","Pot with detent") +#define TR_POTTYPES_1 "ללא" +#define TR_POTTYPES_2 "גלגלת" +#define TR_POTTYPES_3 TR("גלגלת עם נקישות", "גלגלת עם נקישות") #define TR_POTTYPES_4 "סליידר" -#define TR_POTTYPES_5 TR("Multipos","Multipos Switch") +#define TR_POTTYPES_5 TR("רב-מצבי", "מתג רב-מצבי") #define TR_POTTYPES_6 "Axis X" #define TR_POTTYPES_7 "Axis Y" #define TR_POTTYPES_8 "מתג" #define TR_VPERSISTENT_1 "כבוי" -#define TR_VPERSISTENT_2 "Flight" -#define TR_VPERSISTENT_3 "Manual Reset" -#define TR_COUNTRY_CODES_1 TR("US","America") -#define TR_COUNTRY_CODES_2 TR("JP","Japan") -#define TR_COUNTRY_CODES_3 TR("EU","Europe") -#define TR_USBMODES_1 "הצג לי אופציות" +#define TR_VPERSISTENT_2 "טיסה" +#define TR_VPERSISTENT_3 "איפוס ידני" +#define TR_COUNTRY_CODES_1 TR("US", "אמריקה") +#define TR_COUNTRY_CODES_2 TR("JP", "יפן") +#define TR_COUNTRY_CODES_3 TR("EU", "אירופה") +#define TR_USBMODES_1 "שאל" #define TR_USBMODES_2 TR("Joyst","חיבור משחק קבוע") #define TR_USBMODES_3 TR("SDCard","העברת נתונים קבוע") #define TR_USBMODES_4 "חיבור סיריילי קבוע" -#define TR_JACK_MODES_1 "בקש" +#define TR_JACK_MODES_1 "שאל" #define TR_JACK_MODES_2 "סאונד" -#define TR_JACK_MODES_3 "מדריך" +#define TR_JACK_MODES_3 "טריינר" #define TR_SBUS_INVERSION_VALUES_1 "נורמלי" #define TR_SBUS_INVERSION_VALUES_2 "לא מהופך" #define TR_MULTI_CUSTOM "עיצוב מיוחד" -#define TR_VTRIMINC_1 TR("Expo","הולך ומתעצם") +#define TR_VTRIMINC_1 TR("Expo","אקספוננציאלי") #define TR_VTRIMINC_2 TR("ExFine","זז ב-1") #define TR_VTRIMINC_3 "זז ב-2" -#define TR_VTRIMINC_4 "זז ב-3" -#define TR_VTRIMINC_5 "זז ב-6" +#define TR_VTRIMINC_4 "זז ב-4" +#define TR_VTRIMINC_5 "זז ב-8" #define TR_VDISPLAYTRIMS_1 "אל תציג" #define TR_VDISPLAYTRIMS_2 "הצג שינוי בלבד" #define TR_VDISPLAYTRIMS_3 "הצג" #define TR_VBEEPCOUNTDOWN_1 "שקט" #define TR_VBEEPCOUNTDOWN_2 "ציפצופים" #define TR_VBEEPCOUNTDOWN_3 "שמע" -#define TR_VBEEPCOUNTDOWN_4 "לחן" -#define TR_VBEEPCOUNTDOWN_5 TR("B & H","Beeps & Haptic") -#define TR_VBEEPCOUNTDOWN_6 TR("V & H","Voice & Haptic") +#define TR_VBEEPCOUNTDOWN_4 "רטט" +#define TR_VBEEPCOUNTDOWN_5 TR("צ & ר", "ציפצופים ורטט") +#define TR_VBEEPCOUNTDOWN_6 TR("ק & ר", "קול ורטט") #define TR_COUNTDOWNVALUES_1 "5s" #define TR_COUNTDOWNVALUES_2 "10s" #define TR_COUNTDOWNVALUES_3 "20s" @@ -200,57 +200,57 @@ #define TR_CURVE_TYPES_1 "סטנדרטי" #define TR_CURVE_TYPES_2 "עיצוב מיוחד" -#define TR_ADCFILTERVALUES_1 "גלובאלי" +#define TR_ADCFILTERVALUES_1 "גלובלי" #define TR_ADCFILTERVALUES_2 "כבוי" #define TR_ADCFILTERVALUES_3 "דלוק" #define TR_VCURVETYPE_1 "דיפרנציאלי" #define TR_VCURVETYPE_2 "אקספו" #define TR_VCURVETYPE_3 "פונקציה" -#define TR_VCURVETYPE_4 "עריכת מיוחד" -#define TR_VMLTPX_1 "אוסף תנועה" -#define TR_VMLTPX_2 "צרף תנועות יחד" -#define TR_VMLTPX_3 "החלף תנועה" +#define TR_VCURVETYPE_4 "מיוחד" +#define TR_VMLTPX_1 "הוספה" +#define TR_VMLTPX_2 "הכפלה" +#define TR_VMLTPX_3 "החלפה" #define TR_CSWTIMER "שעון" #define TR_CSWSTICKY TR("Stky", "Stcky") #define TR_CSWSTAY "קצה" -#define TR_SF_TRAINER "מדריך" -#define TR_SF_INST_TRIM "Inst. Trim" +#define TR_SF_TRAINER "טריינר" +#define TR_SF_INST_TRIM "קיזוז מיידי" #define TR_SF_RESET "איפוס" -#define TR_SF_SET_TIMER "Set" +#define TR_SF_SET_TIMER "הגדר" #define TR_SF_VOLUME "עוצמת קול" -#define TR_SF_FAILSAFE "SetFailsafe" -#define TR_SF_RANGE_CHECK "RangeCheck" -#define TR_SF_MOD_BIND "ModuleBind" -#define TR_SF_RGBLEDS "RGB leds" +#define TR_SF_FAILSAFE "הגדר כשל קליטה" +#define TR_SF_RANGE_CHECK "בדיקת טווח" +#define TR_SF_MOD_BIND "צימוד מודול" +#define TR_SF_RGBLEDS "נורות RGB" #define TR_SOUND "הפעל סאונד" -#define TR_PLAY_TRACK TR("Ply Trk", "Play Track") -#define TR_PLAY_VALUE TR("Play Val","Play Value") -#define TR_SF_HAPTIC "Haptic" -#define TR_SF_PLAY_SCRIPT TR("Lua", "Lua Script") -#define TR_SF_BG_MUSIC "BgMusic" -#define TR_SF_BG_MUSIC_PAUSE "BgMusic ||" -#define TR_SF_LOGS "SD Logs" +#define TR_PLAY_TRACK TR("Ply Trk", "נגן קובץ קול") +#define TR_PLAY_VALUE TR("Play Val","השמע ערך") +#define TR_SF_HAPTIC "רטט" +#define TR_SF_PLAY_SCRIPT TR("Lua", "הפעל סקריפט Lua") +#define TR_SF_BG_MUSIC "מוזיקת רקע" +#define TR_SF_BG_MUSIC_PAUSE "השהיית מוזיקת רקע" +#define TR_SF_LOGS "לוגים לכרטיס SD" #define TR_ADJUST_GVAR "התאם" #define TR_SF_BACKLIGHT "אור אחורי" -#define TR_SF_VARIO "Vario" +#define TR_SF_VARIO "וריומטר" #define TR_SF_TEST "בדיקה" -#define TR_SF_SAFETY TR("Overr.", "Override") +#define TR_SF_SAFETY TR("עקיפה", "עקיפה") #define TR_SF_SCREENSHOT "צילום מסך" #define TR_SF_RACING_MODE "מצב תחרות" #define TR_SF_DISABLE_TOUCH "ללא מסך מגע" -#define TR_SF_DISABLE_AUDIO_AMP "Audio Amp Off" +#define TR_SF_DISABLE_AUDIO_AMP "מגבר שמע כבוי" #define TR_SF_SET_SCREEN TR_BW_COL("Set Screen", "הגדרת מסך ראשי") -#define TR_SF_PUSH_CUST_SWITCH "Push CS" -#define TR_SF_LCD_TO_VIDEO "LCD to Video" +#define TR_SF_PUSH_CUST_SWITCH "לחץ מתג מותאם" +#define TR_SF_LCD_TO_VIDEO "מסך לוידאו" #define TR_FSW_RESET_TELEM TR("Telm", "טלמטריה") -#define TR_FSW_RESET_TRIMS "Trims" +#define TR_FSW_RESET_TRIMS "קיזוזים" #define TR_FSW_RESET_TIMERS_1 "שעון 1" #define TR_FSW_RESET_TIMERS_2 "שעון 2" #define TR_FSW_RESET_TIMERS_3 "שעון 3" @@ -259,7 +259,7 @@ #define TR_VFSWRESET_1 TR_FSW_RESET_TIMERS_1 #define TR_VFSWRESET_2 TR_FSW_RESET_TIMERS_2 #define TR_VFSWRESET_3 TR_FSW_RESET_TIMERS_3 -#define TR_VFSWRESET_4 TR("All","Flight") +#define TR_VFSWRESET_4 TR("הכל","טיסה") #define TR_VFSWRESET_5 TR_FSW_RESET_TELEM #define TR_VFSWRESET_6 TR_FSW_RESET_TRIMS @@ -285,8 +285,8 @@ #define LENGTH_UNIT_METR "m" #define SPEED_UNIT_METR "kmh" -#define TR_VUNITSSYSTEM_1 "תצוגת מילימטר" -#define TR_VUNITSSYSTEM_2 TR("Imper.","תצוגת אינצ'ים") +#define TR_VUNITSSYSTEM_1 "מטרי" +#define TR_VUNITSSYSTEM_2 TR("Imper.","אימפריאלי") #define TR_VTELEMUNIT_1 "-" #define TR_VTELEMUNIT_2 "V" #define TR_VTELEMUNIT_3 "A" @@ -318,10 +318,10 @@ #define TR_VTELEMUNIT_29 "km" #define TR_VTELEMUNIT_30 "dBm" -#define TR_VTELEMSCREENTYPE_1 "None" -#define TR_VTELEMSCREENTYPE_2 "Nums" -#define TR_VTELEMSCREENTYPE_3 "Bars" -#define TR_VTELEMSCREENTYPE_4 "Script" +#define TR_VTELEMSCREENTYPE_1 "ללא" +#define TR_VTELEMSCREENTYPE_2 "מספרים" +#define TR_VTELEMSCREENTYPE_3 "עמודות" +#define TR_VTELEMSCREENTYPE_4 "סקריפט" #define TR_GPSFORMAT_1 "DMS" #define TR_GPSFORMAT_2 "NMEA" @@ -340,13 +340,13 @@ #define TR_SURFACE_NAMES1 "TH" #define TR_ON_ONE_SWITCHES_1 "ON" -#define TR_ON_ONE_SWITCHES_2 "One" +#define TR_ON_ONE_SWITCHES_2 "אחד" #define TR_HATSMODE "מצב כובעונים" #define TR_HATSOPT_1 "קיזוזים בלבד" #define TR_HATSOPT_2 "ניווט בלבד" #define TR_HATSOPT_3 "משולב" -#define TR_HATSOPT_4 "גלובאלי" +#define TR_HATSOPT_4 "גלובלי" #define TR_HATSMODE_TRIMS "מצב כובעונים: קיזוזים" #define TR_HATSMODE_KEYS "מצב כובעונים: ניווט" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ @@ -387,28 +387,28 @@ #define TR_VTRAINER_MASTER_OFF "כבוי" #define TR_VTRAINER_MASTER_JACK "שלט ראשי" #define TR_VTRAINER_SLAVE_JACK "שלט חניך" -#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/SBUS Module" -#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/CPPM Module" -#define TR_VTRAINER_MASTER_BATTERY "Master/Serial" -#define TR_VTRAINER_BLUETOOTH_1 "Master/" TR("BT","Bluetooth") -#define TR_VTRAINER_BLUETOOTH_2 "Slave/" TR("BT","Bluetooth") -#define TR_VTRAINER_MULTI "Master/Multi" -#define TR_VTRAINER_CRSF "Master/CRSF" +#define TR_VTRAINER_MASTER_SBUS_MODULE "ראשי/מודול SBUS" +#define TR_VTRAINER_MASTER_CPPM_MODULE "ראשי/מודול CPPM" +#define TR_VTRAINER_MASTER_BATTERY "ראשי/טורי" +#define TR_VTRAINER_BLUETOOTH_1 "ראשי/" TR("BT", "בלוטוס") +#define TR_VTRAINER_BLUETOOTH_2 "חניך/" TR("BT", "בלוטוס") +#define TR_VTRAINER_MULTI "ראשי/Multi" +#define TR_VTRAINER_CRSF "ראשי/CRSF" #define TR_VFAILSAFE_1 "לא מוגדר" #define TR_VFAILSAFE_2 "מוחזק" #define TR_VFAILSAFE_3 "הגדרה ידנית - מומלץ!" -#define TR_VFAILSAFE_4 "ללא שינוי" +#define TR_VFAILSAFE_4 "ללא פולסים" #define TR_VFAILSAFE_5 "מקלט" -#define TR_VSENSORTYPES_1 "Custom" +#define TR_VSENSORTYPES_1 "מותאם" #define TR_VSENSORTYPES_2 "מחושב" #define TR_VFORMULAS_1 "הוסף" -#define TR_VFORMULAS_2 "ממוצא" +#define TR_VFORMULAS_2 "ממוצע" #define TR_VFORMULAS_3 "מינימלי" #define TR_VFORMULAS_4 "מקסימלי" -#define TR_VFORMULAS_5 "Multiply" -#define TR_VFORMULAS_6 "Totalize" -#define TR_VFORMULAS_7 "Cell" -#define TR_VFORMULAS_8 "Consumpt" +#define TR_VFORMULAS_5 "הכפלה" +#define TR_VFORMULAS_6 "סכום מצטבר" +#define TR_VFORMULAS_7 "תא" +#define TR_VFORMULAS_8 "צריכה" #define TR_VFORMULAS_9 "מרחק" #define TR_VPREC_1 "0.--" #define TR_VPREC_2 "0.0 " @@ -424,10 +424,10 @@ #define TR_VCELLINDEX_9 "8" #define TR_VCELLINDEX_10 "הכי גבוה" #define TR_VCELLINDEX_11 "הפרש" -#define TR_SUBTRIMMODES_1 CHAR_DELTA " (center only)" -#define TR_SUBTRIMMODES_2 "= (symmetrical)" -#define TR_TIMER_DIR_1 TR("Remain", "Show Remain") -#define TR_TIMER_DIR_2 TR("Elaps.", "Show Elapsed") +#define TR_SUBTRIMMODES_1 CHAR_DELTA " (מרכז בלבד)" +#define TR_SUBTRIMMODES_2 "= (סימטרי)" +#define TR_TIMER_DIR_1 TR("Remain", "הצג זמן שנותר") +#define TR_TIMER_DIR_2 TR("Elaps.", "הצג זמן שחלף") #define TR_FONT_SIZES_1 "STD" #define TR_FONT_SIZES_2 "BOLD" @@ -453,31 +453,31 @@ #define TR_MODELNAME "שם המודל" #define TR_PHASENAME "שם המצב" #define TR_MIXNAME "שם המיקס" -#define TR_INPUTNAME TR("Input", "Input name") -#define TR_EXPONAME TR("Name", "Line name") -#define TR_BITMAP "תמונה מודל" +#define TR_INPUTNAME TR("כניסה", "שם כניסה") +#define TR_EXPONAME TR("שם", "שם שורה") +#define TR_BITMAP "תמונת מודל" #define TR_NO_PICTURE "אין תמונה" #define TR_TIMER TR("שעון", "שעון ") #define TR_NO_TIMERS "ללא תזמון" #define TR_START "התחלה" #define TR_NEXT "הבא" -#define TR_ELIMITS TR("E.Limits", "הרחב תצוגות") -#define TR_ETRIMS TR("E.Trims", "הרחב תצוגות") +#define TR_ELIMITS TR("E.Limits", "הרחב טווחים") +#define TR_ETRIMS TR("E.Trims", "הרחב קיזוזים") #define TR_TRIMINC "רגישות קיזוז" #define TR_DISPLAY_TRIMS TR("Show Trims", "הצג קיזוזים") #define TR_TTRACE TR("T-Source", "מקור") -#define TR_TTRIM TR("T-Trim-Idle", "Trim idle only") +#define TR_TTRIM TR("T-Trim-Idle", "קיזוז סרק בלבד") #define TR_TTRIM_SW TR("T-Trim-Sw", "מתג קיזוז") #define TR_BEEPCTR TR("Ctr Beep", "ציפצוף במרכז") #define TR_USE_GLOBAL_FUNCS TR("Glob.Funcs", "שימוש בפונקציות גלובליות") -#define TR_PROTOCOL TR("Proto", "Protocol") -#define TR_PPMFRAME "PPM frame" -#define TR_REFRESHRATE TR("Refresh", "Refresh rate") -#define TR_WARN_BATTVOLTAGE TR("Output is VBAT: ", "Warning: output level is VBAT: ") -#define TR_WARN_5VOLTS "אזהרה : מתח נמוך מ 5 וולט" +#define TR_PROTOCOL TR("Proto", "פרוטוקול") +#define TR_PPMFRAME "מסגרת PPM" +#define TR_REFRESHRATE TR("Refresh", "קצב רענון") +#define TR_WARN_BATTVOLTAGE TR("יציאה VBAT: ", "אזהרה: רמת היציאה היא VBAT: ") +#define TR_WARN_5VOLTS "אזהרה: רמת המתח ביציאה היא 5 וולט" #define TR_MS "ms" #define TR_SWITCH "מתג" -#define TR_FS_COLOR_LIST_1 "Custom" +#define TR_FS_COLOR_LIST_1 "מותאם" #define TR_FS_COLOR_LIST_2 "כבוי" #define TR_FS_COLOR_LIST_3 "לבן" #define TR_FS_COLOR_LIST_4 "אדום" @@ -488,33 +488,33 @@ #define TR_FS_COLOR_LIST_9 "ורוד" #define TR_GROUP "קבוצה" #define TR_GROUP_ALWAYS_ON "דלוק תמיד" -#define TR_LUA_OVERRIDE "Allow Lua override" +#define TR_LUA_OVERRIDE "אפשר עקיפת Lua" #define TR_GROUPS "Always on groups" #define TR_LAST "אחרון" #define TR_MORE_INFO "מידע נוסף" #define TR_SWITCH_TYPE "סוג" -#define TR_SWITCH_STARTUP "איתחול" +#define TR_SWITCH_STARTUP "אתחול" #define TR_SWITCH_GROUP "קבוצה" #define TR_SF_SWITCH "הדק" #define TR_TRIMS "קיזוזים" -#define TR_FADEIN "Fade in" -#define TR_FADEOUT "Fade out" +#define TR_FADEIN "כניסה הדרגתית" +#define TR_FADEOUT "יציאה הדרגתית" #define TR_DEFAULT "(ברירת מחדל)" -#define TR_CHECKTRIMS TR_BW_COL("\006Check\012trims", "Check FM Trims") -#define TR_SWASHTYPE "Swash Type" -#define TR_COLLECTIVE TR("Collective", "Coll. pitch source") +#define TR_CHECKTRIMS TR("\006Check\012trims", "Check FM Trims") +#define TR_SWASHTYPE "סוג סוואשפלייט" +#define TR_COLLECTIVE TR("קולקטיב", "מקור פיץ' קולקטיב") #define TR_AILERON TR("Lateral cyc.", "Lateral cyc. source") #define TR_ELEVATOR TR("Long. cyc.", "Long. cyc. source") -#define TR_SWASHRING "Swash Ring" +#define TR_SWASHRING "טבעת סוואשפלייט" #define TR_MODE "מצב" #define TR_LEFT_STICK "שמאל" -#define TR_SUBTYPE "Subtype" -#define TR_NOFREEEXPO "No free expo!" -#define TR_NOFREEMIXER "No free mixer!" +#define TR_SUBTYPE "תת-סוג" +#define TR_NOFREEEXPO "!אין אקספו פנוי" +#define TR_NOFREEMIXER "!אין מיקסר פנוי" #define TR_SOURCE "מקור" -#define TR_WEIGHT "כמות" +#define TR_WEIGHT "משקל" #define TR_SIDE "צד" -#define TR_OFFSET "Offset" +#define TR_OFFSET "היסט" #define TR_TRIM "קיזוז" #define TR_CURVE "עקומה" #define TR_FLMODE TR("מצב", "מצבים") @@ -523,38 +523,38 @@ #define TR_ANTENNA "אנטנה" #define TR_NO_INFORMATION TR("No info", "אין מידע") #define TR_MULTPX "הגדר מצב מיקס" -#define TR_DELAYDOWN TR("Delay dn", "עיקוב בירידה") -#define TR_DELAYUP "עיקוב בעלייה" -#define TR_SLOWDOWN TR("Slow dn", "האט ירידה") +#define TR_DELAYDOWN TR("Delay dn", "השהיית ירידה") +#define TR_DELAYUP "עיכוב בעלייה" +#define TR_SLOWDOWN TR("Slow dn", "האטת ירידה") #define TR_SLOWUP "האט עלייה" #define TR_CV "CV" #define TR_GV TR("G", "GV") #define TR_RANGE "טווח" #define TR_CENTER "מרכז" #define TR_ALARM "התראה" -#define TR_BLADES "Blades/Poles" +#define TR_BLADES "להבים/קטבים" #define TR_SCREEN "Screen\001" #define TR_SOUND_LABEL "צליל" -#define TR_LENGTH "Length" +#define TR_LENGTH "אורך" #define TR_BEEP_LENGTH "אורך הצפצוף" #define TR_BEEP_PITCH "צפצוף" -#define TR_HAPTIC_LABEL "Haptic" +#define TR_HAPTIC_LABEL "רטט" #define TR_STRENGTH "חוזק" #define TR_IMU_LABEL "IMU" -#define TR_IMU_OFFSET "Offset" +#define TR_IMU_OFFSET "היסט" #define TR_IMU_MAX "מקס" #define TR_CONTRAST "ניגודיות" #define TR_ALARMS_LABEL "התראות" #define TR_BATTERY_RANGE TR("Batt. range", "הטווח להתראת סוללה") #define TR_BATTERYCHARGING "השלט מחובר להטענה..." #define TR_BATTERYFULL "סוללה מלאה" -#define TR_BATTERYNONE "None!" +#define TR_BATTERYNONE "!אין" #define TR_BATTERYWARNING "התראת סוללה חלשה" #define TR_INACTIVITYALARM "התראת אי שימוש ממושכת" #define TR_MEMORYWARNING "נפח זיכרון נמוך" #define TR_ALARMWARNING "צליל כבוי" #define TR_RSSI_SHUTDOWN_ALARM TR("RSSI shutdown", "בדיקת חיבור למקלט בכיבוי") -#define TR_TRAINER_SHUTDOWN_ALARM TR("Trainer alarm", "check trainer connection") +#define TR_TRAINER_SHUTDOWN_ALARM TR("התראת טריינר", "בדוק חיבור טריינר") #define TR_MODEL_STILL_POWERED "מודל עדיין פעיל" #define TR_TRAINER_STILL_CONNECTED "מצב חניך עדיין מחובר" #define TR_USB_STILL_CONNECTED "חיבור עדיין מחובר" @@ -565,7 +565,7 @@ #define TR_THROTTLEREVERSE TR("T-Reverse", "היפוך") #define TR_MINUTEBEEP TR("דקה", "הקראת דקות") #define TR_BEEPCOUNTDOWN "ספירה לאחור" -#define TR_PERSISTENT TR("Persist.", "Persistent") +#define TR_PERSISTENT TR("Persist.", "קבוע") #define TR_BACKLIGHT_LABEL "תאורת רקע" #define TR_GHOST_MENU_LABEL "GHOST MENU" #define TR_STATUS "סטטוס" @@ -573,25 +573,25 @@ #define TR_BLOFFBRIGHTNESS "בהירות כבויה" #define TR_KEYS_BACKLIGHT "תאורת לחצנים" #define TR_BLCOLOR "צבע" -#define TR_ONE_LOG_PER_DAY "One log per day" -#define TR_KEY_LOCK_FMT "Key lock (%s+%s hold)" -#define TR_KEYS_LOCKED "Keys locked" -#define TR_KEYS_LOCKED_FMT "Keys locked (%s+%s)" -#define TR_KEYS_UNLOCKED "Keys unlocked" +#define TR_ONE_LOG_PER_DAY "לוג אחד ליום" +#define TR_KEY_LOCK_FMT "נעילת מקשים (החזק %s+%s)" +#define TR_KEYS_LOCKED "המקשים נעולים" +#define TR_KEYS_LOCKED_FMT "המקשים נעולים (%s+%s)" +#define TR_KEYS_UNLOCKED "המקשים משוחררים" #define TR_SPLASHSCREEN "מסך פתיחה" #define TR_PLAY_HELLO "צליל אתחול" -#define TR_PWR_ON_DELAY "השהיית הפעלה פעיל" +#define TR_PWR_ON_DELAY "השהיית הדלקה" #define TR_PWR_OFF_DELAY "משך לחיצה לכיבוי השלט" -#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off") -#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","Power ON/OFF Haptic") +#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","כיבוי אוטומטי") +#define TR_PWR_ON_OFF_HAPTIC TR("רטט הפ/כב","רטט בהדלקה/כיבוי") #define TR_THROTTLE_WARNING TR("T-Warning", "התראת מצערת פתוחה") #define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "עריכת מיקום ידנית") #define TR_CUSTOM_THROTTLE_WARNING_VAL TR("Pos. %", "מיקום %") -#define TR_SWITCHWARNING TR("S-Warning", "מיקום מתגים") +#define TR_SWITCHWARNING TR("S-Warning", "אזהרת מיקום מתגים") #define TR_POTWARNINGSTATE "סליידרים וגלגלות" -#define TR_POTWARNING TR("Pot warn.", "Pot positions") +#define TR_POTWARNING TR("Pot warn.", "אזהרת מיקום פוטנציומטרים") #define TR_TIMEZONE "אזור זמן" -#define TR_ADJUST_RTC "Adjust RTC" +#define TR_ADJUST_RTC "כוונון שעון RTC" #define TR_GPS "GPS" #define TR_DEF_CHAN_ORD TR("Def chan order", "מצב ערוצים מקורי") #define TR_STICKS "סטיקים" @@ -600,42 +600,42 @@ #define TR_SWITCHES_DELAY TR("Play delay", "השהיית השמעת מתג") #define TR_SLAVE "Slave" #define TR_MODESRC "Mode\006% Source" -#define TR_MULTIPLIER "Multiplier" -#define TR_CAL "Cal" +#define TR_MULTIPLIER "מכפיל" +#define TR_CAL "כיול" #define TR_CALIBRATION BUTTON("כיול") #define TR_VTRIM "קיזוז - +" #define TR_CALIB_DONE "כיול הושלם" -#define TR_MENUTOSTART TR_ENTER " TO START" -#define TR_MENUWHENDONE TR_ENTER " WHEN DONE" -#define TR_AXISDIR "AXIS DIR" -#define TR_MENUAXISDIR "[ENTER LONG] " TR_AXISDIR -#define TR_SETMIDPOINT TR_BW_COL(TR_SFC_AIR("SET POTS MIDPOINT", TR("SET STICKS MIDPOINT", "CENTER STICKS/SLIDERS")), "CENTER STICKS/SLIDERS") -#define TR_MOVESTICKSPOTS TR_BW_COL(TR_SFC_AIR("MOVE ST/TH/POTS/AXIS", "MOVE STICKS/POTS"), "MOVE STICKS/POTS") -#define TR_NODATA "NO DATA" +#define TR_MENUTOSTART TR_ENTER " להתחלה" +#define TR_MENUWHENDONE TR_ENTER " בסיום" +#define TR_AXISDIR "כיוון ציר" +#define TR_MENUAXISDIR "[ENTER LONG] " TR_AXISDIR +#define TR_SETMIDPOINT TR_BW_COL(TR_SFC_AIR("קבע אמצע גלגלות", TR("קבע אמצע סטיקים", "מרכז סטיקים/סליידרים")), "מרכז סטיקים/סליידרים") +#define TR_MOVESTICKSPOTS TR_BW_COL(TR_SFC_AIR("הזז סטיקים/גלגלות/צירים", "הזז סטיקים/גלגלות"), "הזז סטיקים/גלגלות") +#define TR_NODATA "אין נתונים" #define TR_US "us" #define TR_HZ "Hz" #define TR_TMIXMAXMS "Tmix max" -#define TR_FREE_STACK "Free stack" -#define TR_INT_GPS_LABEL "Internal GPS" +#define TR_FREE_STACK "סטאק פנוי" +#define TR_INT_GPS_LABEL "GPS פנימי" #define TR_HEARTBEAT_LABEL "דפיקות לב" -#define TR_LUA_SCRIPTS_LABEL "Lua scripts" -#define TR_FREE_MEM_LABEL "Free mem" -#define TR_DURATION_MS TR("[D]","Duration(ms): ") -#define TR_INTERVAL_MS TR("[I]","Interval(ms): ") -#define TR_MEM_USED_SCRIPT "Script(B): " -#define TR_MEM_USED_WIDGET "Widget(B): " -#define TR_MEM_USED_EXTRA "Extra(B): " +#define TR_LUA_SCRIPTS_LABEL "סקריפטי Lua" +#define TR_FREE_MEM_LABEL "זיכרון פנוי" +#define TR_DURATION_MS TR("[D]", "משך (ms): ") +#define TR_INTERVAL_MS TR("[I]", "מרווח (ms): ") +#define TR_MEM_USED_SCRIPT "סקריפט (B): " +#define TR_MEM_USED_WIDGET "וידג'ט (B): " +#define TR_MEM_USED_EXTRA "נוסף (B): " #define TR_STACK_MIX "Mix: " #define TR_STACK_AUDIO "Audio: " -#define TR_GPS_FIX_YES "Fix: Yes" -#define TR_GPS_FIX_NO "Fix: No" -#define TR_GPS_SATS "Sats: " +#define TR_GPS_FIX_YES "נעילה: כן" +#define TR_GPS_FIX_NO "נעילה: לא" +#define TR_GPS_SATS "לוויינים: " #define TR_GPS_HDOP "Hdop: " #define TR_STACK_MENU "Menu: " #define TR_TIMER_LABEL "שעון" #define TR_THROTTLE_PERCENT_LABEL "מצערת %" #define TR_BATT_LABEL "סוללה" -#define TR_SESSION "Session" +#define TR_SESSION "טיסה" #define TR_MENUTORESET TR_ENTER " to reset" #define TR_PPM_TRAINER "TR" #define TR_CH "ערוץ " @@ -647,106 +647,106 @@ #define TR_ALARMSDISABLED "התראות בוטלו" #define TR_PRESSANYKEY TR("\010Press any Key", "Press any key") #define TR_BADEEPROMDATA "Bad EEprom data" -#define TR_BAD_RADIO_DATA "Bad radio data" -#define TR_RADIO_DATA_RECOVERED TR3("Using backup radio data","Using backup radio settings","Radio settings recovered from backup") -#define TR_RADIO_DATA_UNRECOVERABLE TR3("Radio settings invalid","Radio settings not valid", "Unable to read valid radio settings") +#define TR_BAD_RADIO_DATA "נתוני שלט פגומים" +#define TR_RADIO_DATA_RECOVERED TR3("שוחזר מגיבוי", "משתמש בגיבוי הגדרות שלט", "הגדרות השלט שוחזרו מגיבוי") +#define TR_RADIO_DATA_UNRECOVERABLE TR3("הגדרות שלט שגויות", "הגדרות שלט לא תקינות", "לא ניתן לקרוא הגדרות שלט תקינות") #define TR_EEPROMFORMATTING "Formatting EEPROM" -#define TR_STORAGE_FORMAT "Storage preparation" +#define TR_STORAGE_FORMAT "הכנת אחסון" #define TR_EEPROMOVERFLOW "EEPROM overflow" #define TR_RADIO_SETUP "הגדרות שלט ותצוגה" #define TR_MENUVERSION "גירסא" #define TR_MENU_RADIO_ANALOGS TR("ANALOGS", "בדיקת אנלוגיות") #define TR_MENU_RADIO_ANALOGS_CALIB "בדיקת אנלוגיות סטיקים ומגע" -#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)" -#define TR_MENU_FSWITCH "מפסקים בהתאמה אישית" +#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "אנלוגיים גולמיים (5 Hz)" +#define TR_MENU_FSWITCH "מתגים בהתאמה אישית" #define TR_TRIMS2OFFSETS TR_BW_COL("\006Trims => Subtrims", "Trims => Subtrims") #define TR_CHANNELS2FAILSAFE "הגדר מצב נוכחי כקבוע" #define TR_CHANNEL2FAILSAFE "הגדר מצב נוכחי כקבוע" -#define TR_MENUMODELSEL TR("MODELSEL", "MODEL SELECTION") +#define TR_MENUMODELSEL TR("בחירת מודל", "בחירת מודל") #define TR_MENU_MODEL_SETUP TR("הגדרות מודל", "הגדרות מודל") #define TR_MENUCURVE "עקומה" #define TR_MENULOGICALSWITCH "מתג לוגי" #define TR_MENUSTAT "סטטוס" -#define TR_MENUDEBUG "DEBUG" -#define TR_MONITOR_CHANNELS "מצגי ערוצים %d-%d" +#define TR_MENUDEBUG "אבחון" +#define TR_MONITOR_CHANNELS "ערוצים %d-%d" #define TR_MONITOR_OUTPUT_DESC "יציאות" #define TR_MONITOR_MIXER_DESC "מיקסרים" - #define TR_RECEIVER_NUM TR("RxNum", "Receiver No.") - #define TR_RECEIVER "מספר מקלט" + #define TR_RECEIVER_NUM TR("מס' מקלט", "מספר מקלט") + #define TR_RECEIVER "מקלט" #define TR_MULTI_RFTUNE TR("Freq tune", "מיקוד התדר (fine-tuning)") -#define TR_MULTI_RFPOWER "RF power" +#define TR_MULTI_RFPOWER "עוצמת שידור" #define TR_MULTI_WBUS "יציאה" #define TR_MULTI_TELEMETRY "טלמטריה" -#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") +#define TR_MULTI_VIDFREQ TR("תדר וידאו", "תדר וידאו") #define TR_RF_POWER "עוצמת שידור" -#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") -#define TR_MULTI_OPTION TR("Option", "Option value") +#define TR_MULTI_FIXEDID TR("ID קבוע", "מזהה קבוע") +#define TR_MULTI_OPTION TR("אפשרות", "ערך אפשרות") #define TR_MULTI_AUTOBIND TR("Bind Ch.", "צימוד על ערוץ") #define TR_DISABLE_CH_MAP TR("No Ch. map", "השבתת מיפוי ערוצים") -#define TR_DSMP_ENABLE_AETR TR("Enb. AETR", "Enable AETR") +#define TR_DSMP_ENABLE_AETR TR("AETR", "הפעל AETR") #define TR_DISABLE_TELEM TR("No Telem", "השבתת טלמטריה") #define TR_MULTI_LOWPOWER TR("Low power", "מצב מתח נמוך") -#define TR_MULTI_LNA_DISABLE "LNA disable" +#define TR_MULTI_LNA_DISABLE "השבת LNA" #define TR_MODULE_TELEMETRY TR("S.Port", "S.Port link") -#define TR_MODULE_TELEM_ON TR("ON", "Enabled") +#define TR_MODULE_TELEM_ON TR("פועל", "מופעל") #define TR_DISABLE_INTERNAL TR("Disable int.", "ביטול שידור פנימי") -#define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") -#define TR_MODULE_NO_INPUT TR("No input", "No serial input") -#define TR_MODULE_NO_TELEMETRY TR3("No telemetry", "No MULTI_TELEMETRY", "No MULTI_TELEMETRY detected") -#define TR_MODULE_WAITFORBIND "Bind to load protocol" +#define TR_MODULE_NO_SERIAL_MODE TR("!מצב טורי", "לא במצב טורי") +#define TR_MODULE_NO_INPUT TR("אין קלט", "אין קלט טורי") +#define TR_MODULE_NO_TELEMETRY TR3("אין טלמטריה", "אין MULTI_TELEMETRY", "לא זוהתה MULTI_TELEMETRY") +#define TR_MODULE_WAITFORBIND "בצע צימוד לטעינת הפרוטוקול" #define TR_MODULE_BINDING TR("Bind...","קישוריות מתבצעת") -#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "עדכון מודל נדרש", "Module\nUpgrade required") -#define TR_MODULE_UPGRADE TR("Upg. advised", "עדכון מודל מומלץ") -#define TR_REBIND "Rebinding required" +#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "עדכון מודול נדרש", "Module\nUpgrade required") +#define TR_MODULE_UPGRADE TR("Upg. advised", "עדכון מודול מומלץ") +#define TR_REBIND "נדרש צימוד מחדש" #define TR_REG_OK "רישום בוצע" #define TR_BIND_OK "הצימוד הצליח" #define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON" #define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF" #define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON" #define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF" -#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid") -#define TR_MODULE_STATUS TR("Status", "גרסאת מולטי פרוטוקול") -#define TR_MODULE_SYNC TR("Sync", "Proto Sync Status") -#define TR_MULTI_SERVOFREQ TR("Servo rate", "Servo update rate") -#define TR_MULTI_MAX_THROW TR("Max. Throw", "Enable max. throw") -#define TR_MULTI_RFCHAN TR("RF Channel", "Select RF channel") -#define TR_AFHDS3_RX_FREQ TR("RX freq.", "RX frequency") +#define TR_PROTOCOL_INVALID TR("Prot. invalid", "פרוטוקול לא תקין") +#define TR_MODULE_STATUS TR("Status", "סטטוס מודול") +#define TR_MODULE_SYNC TR("סנכרון", "סטטוס סנכרון פרוטוקול") +#define TR_MULTI_SERVOFREQ TR("קצב סרוו", "קצב עדכון סרוו") +#define TR_MULTI_MAX_THROW TR("מהלך מקס.", "אפשר מהלך מקסימלי") +#define TR_MULTI_RFCHAN TR("ערוץ RF", "בחר ערוץ RF") +#define TR_AFHDS3_RX_FREQ TR("תדר RX", "תדר RX") #define TR_AFHDS3_ONE_TO_ONE_TELEMETRY TR("Unicast/Tel.", "Unicast/Telemetry") #define TR_AFHDS3_ONE_TO_MANY "Multicast" -#define TR_AFHDS3_ACTUAL_POWER TR("Act. pow", "Actual power") -#define TR_AFHDS3_POWER_SOURCE TR("Power src.", "Power source") -#define TR_IBUS2_SENSORS_MODE_ONLY "Only in the iBUS2 mode can the sensors be set." +#define TR_AFHDS3_ACTUAL_POWER TR("עוצמה בפועל", "עוצמה בפועל") +#define TR_AFHDS3_POWER_SOURCE TR("מקור מתח", "מקור מתח") +#define TR_IBUS2_SENSORS_MODE_ONLY ".ניתן להגדיר חיישנים רק במצב iBUS2" #define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling") -#define TR_GPS_COORDS_FORMAT TR("GPS Coords", "Coordinate format") +#define TR_GPS_COORDS_FORMAT TR("קואורדינטות", "פורמט קואורדינטות") #define TR_VARIO TR("Vario", "הגדרות תדר") #define TR_PITCH_AT_ZERO "תדר מינימלי" #define TR_PITCH_AT_MAX "תדר מקסימלי" #define TR_REPEAT_AT_ZERO "השהיית התראה" #define TR_BATT_CALIB TR("Batt. calib", "כיול מתח סוללה ידני") #define TR_CURRENT_CALIB "Current calib" -#define TR_VOLTAGE TR("Voltage", "Voltage source") +#define TR_VOLTAGE TR("מתח", "מקור מתח") #define TR_SELECT_MODEL "בחירת מודל" #define TR_MANAGE_MODELS "ניהול מודלים" #define TR_MODELS "מודלים" #define TR_SELECT_MODE "בחירת מצב" #define TR_CREATE_MODEL "יצירת מודל" -#define TR_FAVORITE_LABEL "מעודפים" -#define TR_MODELS_MOVED "מודל שלא בשימוש עבר ל" +#define TR_FAVORITE_LABEL "מועדפים" +#define TR_MODELS_MOVED "מודלים שלא בשימוש הועברו ל" #define TR_NEW_MODEL "מודל חדש" #define TR_INVALID_MODEL "מודל לא חוקי" #define TR_EDIT_LABELS "עריכת לשונית" -#define TR_LABEL_MODEL "שינוי לשונית" +#define TR_LABEL_MODEL "שינוי תווית" #define TR_MOVE_UP "עלה למעלה" #define TR_MOVE_DOWN "רד למטה" -#define TR_ENTER_LABEL "הוספת לשונית" +#define TR_ENTER_LABEL "הוספת תווית" #define TR_LABEL "לשונית" -#define TR_LABELS "לשוניות" +#define TR_LABELS "תוויות" #define TR_CURRENT_MODEL "מודל נבחר" #define TR_ACTIVE "פעיל" #define TR_NEW "חדש" -#define TR_NEW_LABEL "לשונית חדשה" -#define TR_RENAME_LABEL "שינוי שם לשונית" -#define TR_DELETE_LABEL "מחיקת לשונית" +#define TR_NEW_LABEL "תווית חדשה" +#define TR_RENAME_LABEL "שינוי שם תווית" +#define TR_DELETE_LABEL "מחיקת תווית" #define TR_DUPLICATE_MODEL "הכפלת מודל" #define TR_COPY_MODEL "העתקת מודל" #define TR_MOVE_MODEL "העברת מודל" @@ -756,43 +756,43 @@ #define TR_DELETE_ERROR "שיגאת מחיקה" #define TR_SDCARD_ERROR TR("SD תקלת", "תיקיות כרטיס SD") #define TR_SDCARD "SD כרטיס" -#define TR_NO_FILES_ON_SD "!SD אין קצבים על" +#define TR_NO_FILES_ON_SD "!SD אין קבצים על" #define TR_NO_SDCARD "SD אין כרטיס" -#define TR_WAITING_FOR_RX "Waiting for RX..." -#define TR_WAITING_FOR_TX "Waiting for TX..." -#define TR_WAITING_FOR_MODULE TR("Waiting module", "Waiting for module...") +#define TR_WAITING_FOR_RX "...ממתין ל-RX" +#define TR_WAITING_FOR_TX "...ממתין ל-TX" +#define TR_WAITING_FOR_MODULE TR("ממתין למודול", "...ממתין למודול") #define TR_NO_TOOLS "אין כלי זמין" #define TR_NORMAL "רגיל" -#define TR_NOT_INVERTED "Not inv" -#define TR_NOT_CONNECTED TR("!Connected", "Not Connected") +#define TR_NOT_INVERTED "לא הפוך" +#define TR_NOT_CONNECTED TR("!מחובר", "לא מחובר") #define TR_CONNECTED "מחובר" #define TR_FLEX_915 "Flex 915MHz" #define TR_FLEX_868 "Flex 868MHz" #define TR_16CH_WITHOUT_TELEMETRY TR("16CH without telem.", "16CH without telemetry") #define TR_16CH_WITH_TELEMETRY TR("16CH with telem.", "16CH with telemetry") #define TR_8CH_WITH_TELEMETRY TR("8CH with telem.", "8CH with telemetry") -#define TR_EXT_ANTENNA "Ext. antenna" +#define TR_EXT_ANTENNA "אנטנה חיצונית" #define TR_PIN "Pin" -#define TR_UPDATE_RX_OPTIONS "Update RX options?" -#define TR_UPDATE_TX_OPTIONS "Update TX options?" -#define TR_MODULES_RX_VERSION BUTTON("ריכוז מידע חשוב על המערכת") -#define TR_SHOW_MIXER_MONITORS "הצג מצגי מיקסים" -#define TR_MENU_MODULES_RX_VERSION "MODULES / RX VERSION" -#define TR_MENU_FIRM_OPTIONS "FIRMWARE OPTIONS" +#define TR_UPDATE_RX_OPTIONS "? לעדכן אפשרויות RX" +#define TR_UPDATE_TX_OPTIONS "? לעדכן אפשרויות TX" +#define TR_MODULES_RX_VERSION BUTTON("מודולים / גרסת RX") +#define TR_SHOW_MIXER_MONITORS "הצג תצוגת מיקסים" +#define TR_MENU_MODULES_RX_VERSION "מודולים / גרסת RX" +#define TR_MENU_FIRM_OPTIONS "אפשרויות קושחה" #define TR_IMU "IMU" -#define TR_STICKS_POTS_SLIDERS "Sticks/Pots/Sliders" +#define TR_STICKS_POTS_SLIDERS "סטיקים/גלגלות/סליידרים" #define TR_PWM_STICKS_POTS_SLIDERS "PWM Sticks/Pots/Sliders" #define TR_RF_PROTOCOL "RF פרוטוקול" -#define TR_MODULE_OPTIONS "אפשריות מודל" +#define TR_MODULE_OPTIONS "אפשרויות מודול" #define TR_POWER "עוצמה" -#define TR_NO_TX_OPTIONS "No TX options" +#define TR_NO_TX_OPTIONS "אין אפשרויות TX" #define TR_RTC_BATT "RTC סוללת פנימית" -#define TR_POWER_METER_EXT "Power Meter (EXT)" -#define TR_POWER_METER_INT "Power Meter (INT)" -#define TR_SPECTRUM_ANALYSER_EXT "Spectrum (EXT)" -#define TR_SPECTRUM_ANALYSER_INT "Spectrum (INT)" -#define TR_GHOST_MODULE_CONFIG "Ghost module config" -#define TR_GPS_MODEL_LOCATOR "GPS model locator" +#define TR_POWER_METER_EXT "מד הספק (חיצוני)" +#define TR_POWER_METER_INT "מד הספק (פנימי)" +#define TR_SPECTRUM_ANALYSER_EXT "ספקטרום (חיצוני)" +#define TR_SPECTRUM_ANALYSER_INT "ספקטרום (פנימי)" +#define TR_GHOST_MODULE_CONFIG "הגדרות מודול Ghost" +#define TR_GPS_MODEL_LOCATOR "איתור מודל ב-GPS" #define TR_REFRESH "רעננן" #define TR_SDCARD_FULL "הכרטיס מלא" #define TR_SDCARD_FULL_EXT TR_BW_COL(TR_SDCARD_FULL "\036לוגים" LCDW_128_LINEBREAK "ושמירת צילומי מסך מושבתים", TR_SDCARD_FULL "\036לוגים ושמירת צילומי מסך מושבתים") @@ -801,12 +801,12 @@ #define TR_INT_MULTI_SPEC "stm-opentx-noinv" #define TR_INCOMPATIBLE "לא תואם" #define TR_WARNING "אזהרה" -#define TR_STORAGE_WARNING "איחסון" +#define TR_STORAGE_WARNING "אחסון" #define TR_THROTTLE_UPPERCASE "מצערת" #define TR_ALARMSWARN "התראות" -#define TR_SWITCHWARN TR("SWITCH", "CONTROL") -#define TR_FAILSAFEWARN "FAILSAFE" -#define TR_TEST_WARNING TR("TESTING", "TEST BUILD") +#define TR_SWITCHWARN TR("מתג", "בקר") +#define TR_FAILSAFEWARN "כשל קליטה" +#define TR_TEST_WARNING TR("בדיקה", "גרסת בדיקה") #define TR_TEST_NOTSAFE "שימוש לבדיקה בלבד" #define TR_WRONG_SDCARDVERSION TR("Expected ver: ", "Expected version: ") #define TR_WARN_RTC_BATTERY_LOW "סוללה פנימית נמוכה" @@ -816,26 +816,26 @@ #define TR_EMERGENCY_MODE "מצב חרום" #define TR_NO_FAILSAFE "מצב חירום לא הוגדר" #define TR_KEYSTUCK "כפתור לחוץ" -#define TR_VOLUME "עוצמה" +#define TR_VOLUME "עוצמת קול" #define TR_LCD "מסך" #define TR_BRIGHTNESS "בהירות" #define TR_CPU_TEMP "טמפ' גבוה במעבד" #define TR_COPROC "CoProc." #define TR_COPROC_TEMP "MB Temp." -#define TR_TTL_WARNING "Warning: Do not exceed 3.3V on TX/RX pins!" +#define TR_TTL_WARNING "!אזהרה: אין לעבור 3.3V בפינים TX/RX" #define TR_FUNC "פונקציה" #define TR_V1 "V1" #define TR_V2 "V2" #define TR_DURATION "משך" -#define TR_DELAY "דיליי" +#define TR_DELAY "השהיה" #define TR_NO_SOUNDS_ON_SD "SD אין צלילים על" #define TR_NO_MODELS_ON_SD "SD אין מודלים על" -#define TR_NO_BITMAPS_ON_SD "אין תמונה בכרטיס" +#define TR_NO_BITMAPS_ON_SD "אין תמונות בכרטיס" #define TR_NO_SCRIPTS_ON_SD "אין סקריפט בכרטיס" -#define TR_SCRIPT_SYNTAX_ERROR TR("Syntax error", "Script syntax error") -#define TR_SCRIPT_PANIC "Script panic" +#define TR_SCRIPT_SYNTAX_ERROR TR("שגיאת תחביר", "שגיאת תחביר בסקריפט") +#define TR_SCRIPT_PANIC "קריסת סקריפט" #define TR_SCRIPT_KILLED "הסקריפט נהרג" -#define TR_SCRIPT_ERROR "תקלה לא ידוע" +#define TR_SCRIPT_ERROR "תקלה לא ידועה" #define TR_PLAY_FILE "נגן" #define TR_DELETE_FILE "מחק" #define TR_COPY_FILE "העתק" @@ -851,11 +851,11 @@ #define TR_TIME "זמן" #define TR_MAXBAUDRATE "Max bauds" #define TR_BAUDRATE "קצב שידור" -#define TR_CRSF_ARMING_MODE "Arm using" +#define TR_CRSF_ARMING_MODE "הפעלת מנוע באמצעות" #define TR_CRSF_ARMING_MODES TR_CH"5", TR_SWITCH -#define TR_SAMPLE_MODE "מצב פשוט" +#define TR_SAMPLE_MODE "מצב דגימה" #define TR_SAMPLE_MODES_1 "נורמלי" -#define TR_SAMPLE_MODES_2 "OneBit" +#define TR_SAMPLE_MODES_2 "ביט אחד" #define TR_LOADING "...טוען" #define TR_DELETE_THEME "?למחוק את הערכה" #define TR_SAVE_THEME "?לשמור את הערכה" @@ -866,7 +866,7 @@ #define TR_MODEL_QUICK_SELECT "בחירת מודל מהירה" #define TR_LABELS_SELECT "בחירת תווית" #define TR_LABELS_MATCH "התאמת תוויות" -#define TR_FAV_MATCH "תאום מועדפים" +#define TR_FAV_MATCH "התאמת מועדפים" #define TR_LABELS_SELECT_MODE_1 "בחירה מרובה" #define TR_LABELS_SELECT_MODE_2 "בחירת יחיד" #define TR_LABELS_MATCH_MODE_1 "התאם את כולם" @@ -877,7 +877,7 @@ #define TR_SELECT_TEMPLATE_FOLDER "בחר ספרית תבנית" #define TR_SELECT_TEMPLATE "בחר מודל מתבנית:" #define TR_NO_TEMPLATES "אין מודל בספריית התבניות" -#define TR_SAVE_TEMPLATE "שמור כשמירת בסיס" +#define TR_SAVE_TEMPLATE "שמור כתבנית" #define TR_BLANK_MODEL "מודל ריק" #define TR_BLANK_MODEL_INFO "יצירת מודל ריק" #define TR_FILE_EXISTS "קובץ כבר קיים" @@ -885,17 +885,17 @@ #define TR_BLUETOOTH "בלוטוס" #define TR_BLUETOOTH_DISC "גילוי" -#define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" -#define TR_BLUETOOTH_PIN_CODE "PIN code" +#define TR_BLUETOOTH_INIT "אתחול" +#define TR_BLUETOOTH_DIST_ADDR "כתובת יעד" +#define TR_BLUETOOTH_LOCAL_ADDR "כתובת מקומית" +#define TR_BLUETOOTH_PIN_CODE "קוד PIN" #define TR_BLUETOOTH_NODEVICES "לא נמצאו מכשירים" #define TR_BLUETOOTH_SCANNING "...סורק" #define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define TR_BLUETOOTH_MODES_1 "---" #define TR_BLUETOOTH_MODES_2 "טלמטריה" #define TR_BLUETOOTH_MODES_3 "טריינר" -#define TR_BLUETOOTH_MODES_4 "אפשר" +#define TR_BLUETOOTH_MODES_4 "מופעל" #define TR_SD_INFO_TITLE "מידע כרטיס" #define TR_SD_SPEED ":מהירות" @@ -919,58 +919,58 @@ #define TR_MONTHS_11 "נוב" #define TR_MONTHS_12 "דצמ" #define TR_ROTARY_ENCODER "R.E." -#define TR_ROTARY_ENC_MODE TR("RotEnc Mode","Rotary Encoder Mode") -#define TR_CHANNELS_MONITOR "מצגי ערוצים" -#define TR_MIXERS_MONITOR "מצגי מיקסים" +#define TR_ROTARY_ENC_MODE TR("מצב מקודד", "מצב מקודד סיבובי") +#define TR_CHANNELS_MONITOR "תצוגת ערוצים" +#define TR_MIXERS_MONITOR "תצוגת מיקסים" #define TR_PATH_TOO_LONG "נתיב ארוך מדי" #define TR_VIEW_TEXT "הצג טקסט" -#define TR_FLASH_BOOTLOADER "Flash bootloader" -#define TR_FLASH_DEVICE TR("Flash device","Flash device") -#define TR_FLASH_EXTERNAL_DEVICE TR("Flash S.Port", "Flash S.Port device") +#define TR_FLASH_BOOTLOADER "צריבת bootloader" +#define TR_FLASH_DEVICE TR("צריבת התקן", "צריבת התקן") +#define TR_FLASH_EXTERNAL_DEVICE TR("צריבת S.Port", "צריבת התקן S.Port") #define TR_FLASH_RECEIVER_OTA "Flash receiver OTA" -#define TR_FLASH_RECEIVER_BY_EXTERNAL_MODULE_OTA "Flash RX by ext. OTA" -#define TR_FLASH_RECEIVER_BY_INTERNAL_MODULE_OTA "Flash RX by int. OTA" -#define TR_FLASH_FLIGHT_CONTROLLER_BY_EXTERNAL_MODULE_OTA "Flash FC by ext. OTA" -#define TR_FLASH_FLIGHT_CONTROLLER_BY_INTERNAL_MODULE_OTA "Flash FC by int. OTA" -#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module") +#define TR_FLASH_RECEIVER_BY_EXTERNAL_MODULE_OTA "צריבת מקלט ב-OTA חיצוני" +#define TR_FLASH_RECEIVER_BY_INTERNAL_MODULE_OTA "צריבת מקלט ב-OTA פנימי" +#define TR_FLASH_FLIGHT_CONTROLLER_BY_EXTERNAL_MODULE_OTA "צריבת בקר טיסה ב-OTA חיצוני" +#define TR_FLASH_FLIGHT_CONTROLLER_BY_INTERNAL_MODULE_OTA "צריבת בקר טיסה ב-OTA פנימי" +#define TR_FLASH_BLUETOOTH_MODULE TR("צריבת מודול BT", "צריבת מודול בלוטוס") #define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit" -#define TR_DEVICE_NO_RESPONSE TR("Device not responding", "Device not responding") -#define TR_DEVICE_FILE_ERROR TR("Device file prob.", "Device file prob.") -#define TR_DEVICE_DATA_REFUSED TR("Device data refused", "Device data refused") -#define TR_DEVICE_WRONG_REQUEST TR("Device access problem", "Device access problem") -#define TR_DEVICE_FILE_REJECTED TR("Device file refused", "Device file refused") -#define TR_DEVICE_FILE_WRONG_SIG TR("Device file sig.", "Device file sig.") -#define TR_CURRENT_VERSION TR("Curr Vers: ", "Current version: ") -#define TR_FLASH_INTERNAL_MODULE TR("Flash int. module", "Flash internal module") -#define TR_FLASH_INTERNAL_MULTI TR("Flash Int. Multi", "Flash Internal Multi") -#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. module", "Flash external module") -#define TR_FLASH_EXTERNAL_MULTI TR("Flash Ext. Multi", "Flash External Multi") -#define TR_FLASH_EXTERNAL_ELRS TR("Flash Ext. ELRS", "Flash External ELRS") -#define TR_FIRMWARE_UPDATE_ERROR TR("FW update error", "Firmware update error") +#define TR_DEVICE_NO_RESPONSE TR("Device not responding", "התקן לא מגיב") +#define TR_DEVICE_FILE_ERROR TR("בעיית קובץ התקן", "בעיית קובץ התקן") +#define TR_DEVICE_DATA_REFUSED TR("נתוני התקן נדחו", "נתוני התקן נדחו") +#define TR_DEVICE_WRONG_REQUEST TR("בעיית גישה להתקן", "בעיית גישה להתקן") +#define TR_DEVICE_FILE_REJECTED TR("קובץ התקן נדחה", "קובץ התקן נדחה") +#define TR_DEVICE_FILE_WRONG_SIG TR("חתימת קובץ שגויה", "חתימת קובץ התקן שגויה") +#define TR_CURRENT_VERSION TR("גרסה: ", "גרסה נוכחית: ") +#define TR_FLASH_INTERNAL_MODULE TR("Flash int. module", "צריבת מודול פנימי") +#define TR_FLASH_INTERNAL_MULTI TR("צריבת מודול פנימי (Multi)", "צריבת מודול פנימי (Multi)") +#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. module", "צריבת מודול חיצוני") +#define TR_FLASH_EXTERNAL_MULTI TR("צריבת מודול חיצוני (Multi)", "צריבת מודול חיצוני (Multi)") +#define TR_FLASH_EXTERNAL_ELRS TR("צריבת מודול חיצוני (ELRS)", "צריבת מודול חיצוני (ELRS)") +#define TR_FIRMWARE_UPDATE_ERROR TR("FW update error", "שגיאת עדכון קושחה") #define TR_FIRMWARE_UPDATE_SUCCESS "! הפלאש עבר בהצלחה" -#define TR_WRITING "...ממתין" +#define TR_WRITING "...כותב" #define TR_CONFIRM_FORMAT "? מאשר פירמוט" #define TR_INTERNALRF "מודול פנימי" #define TR_INTERNAL_MODULE TR("Int. module", "מודול פנימי") #define TR_EXTERNAL_MODULE TR("Ext. module", "מודול חיצוני") -#define TR_EDGETX_UPGRADE_REQUIRED "EdgeTX upgrade required" -#define TR_TELEMETRY_DISABLED "Telem. disabled" -#define TR_MORE_OPTIONS_AVAILABLE "More options available" +#define TR_EDGETX_UPGRADE_REQUIRED "נדרש עדכון EdgeTX" +#define TR_TELEMETRY_DISABLED "טלמטריה מושבתת" +#define TR_MORE_OPTIONS_AVAILABLE "אפשרויות נוספות זמינות" #define TR_NO_MODULE_INFORMATION "No module information" #define TR_EXTERNALRF "מודול חיצוני" #define TR_FAILSAFE TR("Failsafe", "הגדרת כשל קליטה") #define TR_FAILSAFESET "הגדרת כשל קליטה" -#define TR_REG_ID "Reg. ID" -#define TR_OWNER_ID "Owner ID" -#define TR_HOLD "Hold" -#define TR_HOLD_UPPERCASE "HOLD" -#define TR_NONE "None" -#define TR_NONE_UPPERCASE "NONE" +#define TR_REG_ID "מזהה רישום" +#define TR_OWNER_ID "מזהה בעלים" +#define TR_HOLD "מוחזק" +#define TR_HOLD_UPPERCASE "מוחזק" +#define TR_NONE "ללא" +#define TR_NONE_UPPERCASE "ללא" #define TR_MENUSENSOR "חיישן" -#define TR_POWERMETER_PEAK "Peak" -#define TR_POWERMETER_POWER "Power" -#define TR_POWERMETER_ATTN "Attn" -#define TR_POWERMETER_FREQ "Freq." +#define TR_POWERMETER_PEAK "שיא" +#define TR_POWERMETER_POWER "הספק" +#define TR_POWERMETER_ATTN "החלשה" +#define TR_POWERMETER_FREQ "תדר" #define TR_MENUTOOLS "כלים וסקריפטים" #define TR_MIC_RECORDER "מקליט מיקרופון" #define TR_PUSH_TO_RECORD "לחץ להקלטה" @@ -981,26 +981,26 @@ #define TR_GET_READY "...היה מוכן" #define TR_SAVED ":נשמר" #define TR_SAVE_AS "שמור בשם" -#define TR_AUTO_TRIM "Auto-trim" -#define TR_TRIM_START "Trim start" -#define TR_TRIM_END "Trim end" +#define TR_AUTO_TRIM "קיזוז אוטומטי" +#define TR_TRIM_START "חיתוך התחלה" +#define TR_TRIM_END "חיתוך סוף" #define TR_OPEN_ERROR "שגיאת פתיחה" #define TR_TURN_OFF_RECEIVER "כיבוי מקלט" #define TR_STOPPING "...עוצר" -#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER" -#define TR_MENU_POWER_METER "POWER METER" +#define TR_MENU_SPECTRUM_ANALYSER "מנתח ספקטרום" +#define TR_MENU_POWER_METER "מד הספק" #define TR_SENSOR "חיישן" #define TR_COUNTRY_CODE "קוד ארץ" #define TR_USBMODE "USB מצב" #define TR_USB_CHARGE "טעינה כאשר השלט פועל" -#define TR_JACK_MODE "Jack mode" +#define TR_JACK_MODE "מצב שקע" #define TR_VOICE_LANGUAGE "שפת שמע" #define TR_TEXT_LANGUAGE "שפת הטקסט" #define TR_UNITS_SYSTEM "יחידות" -#define TR_UNITS_PPM "PPM Units" +#define TR_UNITS_PPM "יחידות PPM" #define TR_EDIT "ערוך" -#define TR_INSERT_BEFORE "כלול לפני" -#define TR_INSERT_AFTER "כלול אחרי" +#define TR_INSERT_BEFORE "הכנס לפני" +#define TR_INSERT_AFTER "הכנס אחרי" #define TR_COPY "העתקה" #define TR_MOVE "הזז" #define TR_PASTE "הדבקה" @@ -1020,68 +1020,68 @@ #define TR_USB_SERIAL "חיבור סריילי (VCP)" #define TR_SETUP_SCREENS "הגדרות מסכים" #define TR_MONITOR_SCREENS "מצגים" -#define TR_AND_SWITCH "AND switch" +#define TR_AND_SWITCH "מתג AND" #define TR_SF "SF" #define TR_GF "GF" #define TR_ANADIAGS_CALIB "בדיקת אנלוגיות סטיקים ומגע" -#define TR_ANADIAGS_FILTRAWDEV "Filtered raw analogs with deviation" -#define TR_ANADIAGS_UNFILTRAW "Unfiltered raw analogs" -#define TR_ANADIAGS_MINMAX "Min., max. and range" -#define TR_ANADIAGS_MOVE "Move analogs to their extremes!" -#define TR_BYTES "bytes" +#define TR_ANADIAGS_FILTRAWDEV "אנלוגיים גולמיים מסוננים עם סטייה" +#define TR_ANADIAGS_UNFILTRAW "אנלוגיים גולמיים לא מסוננים" +#define TR_ANADIAGS_MINMAX "מינימום, מקסימום וטווח" +#define TR_ANADIAGS_MOVE "!הזז את האנלוגיים לקצוות" +#define TR_BYTES "בייטים" #define TR_MODULE_BIND BUTTON(TR("Bnd", "צימוד")) -#define TR_MODULE_UNBIND BUTTON("Unbind") -#define TR_POWERMETER_ATTN_NEEDED "Attenuator needed" -#define TR_PXX2_SELECT_RX "Select RX" +#define TR_MODULE_UNBIND BUTTON("בטל צימוד") +#define TR_POWERMETER_ATTN_NEEDED "נדרש מחליש אות" +#define TR_PXX2_SELECT_RX "בחר מקלט" #define TR_PXX2_DEFAULT "" #define TR_BT_SELECT_DEVICE "בחר מכשיר" -#define TR_DISCOVER BUTTON("Discover") -#define TR_BUTTON_INIT BUTTON("Init") +#define TR_DISCOVER BUTTON("גלה") +#define TR_BUTTON_INIT BUTTON("אתחול") #define TR_WAITING "...ממתין" #define TR_RECEIVER_DELETE "? מחיקת מקלט" #define TR_RECEIVER_RESET "? איפוס מקלט" #define TR_SHARE "שיתוף" #define TR_BIND "צימוד" -#define TR_REGISTER BUTTON(TR("Reg", "Register")) +#define TR_REGISTER BUTTON(TR("רשום", "רישום")) #define TR_MODULE_RANGE BUTTON(TR("Rng", "בדיקת טווח קליטה")) #define TR_RANGE_TEST "בדיקת טווח" -#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS") +#define TR_RECEIVER_OPTIONS TR("אפשרויות מקלט", "אפשרויות מקלט") #define TR_RESET_BTN BUTTON("איפוס") #define TR_KEYS_BTN BUTTON("בדיקת מתגים") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "בדיקת אנלוגיות")) -#define TR_FS_BTN BUTTON(TR("Custom sw", TR_FUNCTION_SWITCHES)) +#define TR_FS_BTN BUTTON(TR("מתגים מותאמים", TR_FUNCTION_SWITCHES)) #define TR_TOUCH_NOTFOUND "!מסך זה אינו מסך מגע" #define TR_TOUCH_EXIT "גע במסך כדי לצאת" #define TR_SET BUTTON("הגדר") #define TR_TRAINER "טריינר" -#define TR_CHANS "Chans" +#define TR_CHANS "ערוצים" #define TR_ANTENNAPROBLEM "בעיה באנטנת שידור!" #define TR_MODELIDUSED "מספר המקלט בשימוש במודל:" #define TR_MODELIDUNIQUE "מספר המקלט פנוי לשימוש" -#define TR_MODULE "מודל" -#define TR_RX_NAME "Rx Name" -#define TR_TELEMETRY_TYPE TR("Type", "Telemetry type") -#define TR_TELEMETRY_SENSORS "סנסורים" +#define TR_MODULE "מודול" +#define TR_RX_NAME "שם מקלט" +#define TR_TELEMETRY_TYPE TR("סוג", "סוג טלמטריה") +#define TR_TELEMETRY_SENSORS "חיישנים" #define TR_VALUE "ערך" #define TR_PERIOD "פרק זמן" -#define TR_INTERVAL "מרחק" +#define TR_INTERVAL "מרווח" #define TR_REPEAT "מספר חזרות" -#define TR_ENABLE "זמין" -#define TR_DISABLE "אל תאפשר" -#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_ENABLE "הפעל" +#define TR_DISABLE "השבת" +#define TR_TOPLCDTIMER "שעון מסך עליון" #define TR_UNIT "יחידה" #define TR_TELEMETRY_NEWSENSOR "הוסף חדש" #define TR_CHANNELRANGE TR("Ch. Range", "טווח ערוצים") -#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#define TR_ANTENNACONFIRM1 "אנטנה חיצונית" #define TR_ANTENNA_MODES_1 "פנימי" -#define TR_ANTENNA_MODES_2 "Ask" -#define TR_ANTENNA_MODES_3 "Per model" +#define TR_ANTENNA_MODES_2 "שאל" +#define TR_ANTENNA_MODES_3 "לפי מודל" #define TR_ANTENNA_MODES_4 "פנימי וחיצוני" #define TR_ANTENNA_MODES_5 "חיצוני" #define TR_ANTENNA_SELECT "פנימי","חיצוני" -#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") -#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") -#define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") +#define TR_USE_INTERNAL_ANTENNA TR("אנטנה פנימית", "השתמש באנטנה פנימית") +#define TR_USE_EXTERNAL_ANTENNA TR("אנטנה חיצונית", "השתמש באנטנה חיצונית") +#define TR_ANTENNACONFIRM2 TR("בדוק אנטנה", "!וודא שהאנטנה מותקנת") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires FLEX non" #define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" #define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" @@ -1092,8 +1092,8 @@ #define TR_POPUP "התראות" #define TR_MIN "מינימום" #define TR_MAX "מקסימום" -#define TR_CURVE_PRESET "Preset..." -#define TR_PRESET "Preset" +#define TR_CURVE_PRESET "...הגדרות מוכנות" +#define TR_PRESET "הגדרה מוכנה" #define TR_MIRROR "היפוך" #define TR_CLEAR "ניקוי" #define TR_CLEAR_BTN BUTTON("ניקוי") @@ -1103,29 +1103,29 @@ #define TR_PT "נקודה" #define TR_PTS "נקודות" #define TR_SMOOTH "מעוגל" -#define TR_COPY_STICKS_TO_OFS TR("Cpy stick->subtrim", "Copy sticks to subtrim") -#define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Cpy min/max to all", "Copy min/max/center to all outputs") -#define TR_COPY_TRIMS_TO_OFS TR("Cpy trim->subtrim", "Copy trims to subtrim") -#define TR_INCDEC "Inc/Decrement" -#define TR_GLOBALVAR "Global var" +#define TR_COPY_STICKS_TO_OFS TR("העתק סטיק לסאב-טרים", "העתק סטיקים לסאב-טרים") +#define TR_COPY_MIN_MAX_TO_OUTPUTS TR("העתק מינ/מקס לכולם", "העתק מינימום/מקסימום/מרכז לכל היציאות") +#define TR_COPY_TRIMS_TO_OFS TR("העתק קיזוז לסאב-טרים", "העתק קיזוזים לסאב-טרים") +#define TR_INCDEC "הגדל/הקטן" +#define TR_GLOBALVAR "משתנה גלובלי" #define TR_MIXSOURCE "מקור (%)" #define TR_MIXSOURCERAW "מקור (ערך)" -#define TR_CONSTANT "Constant" +#define TR_CONSTANT "קבוע" #define TR_PREFLIGHT_POTSLIDER_CHECK_1 "כבוי" #define TR_PREFLIGHT_POTSLIDER_CHECK_2 "פועל" #define TR_PREFLIGHT_POTSLIDER_CHECK_3 "אוטומטי" -#define TR_PREFLIGHT "מצב הביקורת לשלט" -#define TR_CHECKLIST TR("Checklist", "הצג מצב מערכת") -#define TR_CHECKLIST_INTERACTIVE TR3("C-Interact", "Interact. checklist", "Interactive checklist") -#define TR_AUX_SERIAL_MODE "חיבור פנימי נוסף" +#define TR_PREFLIGHT "בדיקות טרום טיסה" +#define TR_CHECKLIST TR("Checklist", "הצג רשימת בדיקה") +#define TR_CHECKLIST_INTERACTIVE TR3("אינטראקטיבי", "רשימה אינטראקטיבית", "רשימת בדיקה אינטראקטיבית") +#define TR_AUX_SERIAL_MODE "חיבור טורי" #define TR_AUX2_SERIAL_MODE "חיבור פנימי נוסף 2" #define TR_AUX_SERIAL_PORT_POWER "הפעלת מתח בחיבור" -#define TR_SCRIPT "Script" +#define TR_SCRIPT "סקריפט" #define TR_INPUTS "כניסות" #define TR_OUTPUTS "יציאות" #define TR_CONFIRMRESET TR("Erase ALL", "Erase ALL models and settings?") -#define TR_TOO_MANY_LUA_SCRIPTS "Too many Lua scripts!" -#define TR_SPORT_UPDATE_POWER_MODE "SP Power" +#define TR_TOO_MANY_LUA_SCRIPTS "!יותר מדי סקריפטי Lua" +#define TR_SPORT_UPDATE_POWER_MODE "מתח SP" #define TR_SPORT_UPDATE_POWER_MODES_1 "אוטומטי" #define TR_SPORT_UPDATE_POWER_MODES_2 "פעיל" #define TR_NO_TELEMETRY_SCREENS "אין מסכי טלמטריה" @@ -1142,23 +1142,23 @@ #define TR_PHASES_HEADERS_AIL_TRIM "קיזוז מאזנות" #define TR_PHASES_HEADERS_CH5_TRIM "T5 כפתור" #define TR_PHASES_HEADERS_CH6_TRIM "T6 כפתור" -#define TR_PHASES_HEADERS_FAD_IN "Fade In" -#define TR_PHASES_HEADERS_FAD_OUT "Fade Out" +#define TR_PHASES_HEADERS_FAD_IN "כניסה הדרגתית" +#define TR_PHASES_HEADERS_FAD_OUT "יציאה הדרגתית" #define TR_LIMITS_HEADERS_NAME "שם" -#define TR_LIMITS_HEADERS_SUBTRIM "מרכוז ראשי" +#define TR_LIMITS_HEADERS_SUBTRIM "סאב-טרים" #define TR_LIMITS_HEADERS_MIN "מינימום" #define TR_LIMITS_HEADERS_MAX "מקסימום" #define TR_LIMITS_HEADERS_DIRECTION "כיוון" #define TR_LIMITS_HEADERS_CURVE "עקומה" #define TR_LIMITS_HEADERS_PPMCENTER "PPM מרכז" -#define TR_LIMITS_HEADERS_SUBTRIMMODE "מצב מירכוז" +#define TR_LIMITS_HEADERS_SUBTRIMMODE "מצב סאב-טרים" #define TR_INVERTED "היפוך" // Horus layouts and widgets #define TR_FIRST_CHANNEL "ערוץ ראשון" #define TR_FILL_BACKGROUND "מילוי רקע?" -#define TR_BG_COLOR "BG צבעי" +#define TR_BG_COLOR "צבע רקע" #define TR_SLIDERS_TRIMS "Sliders+Trims" #define TR_SLIDERS "סליידרים" #define TR_FLIGHT_MODE "מצב טיסה" @@ -1174,19 +1174,19 @@ #define TR_ALIGN_OPTS_3 "ימין" #define TR_TEXT "טקסט" #define TR_COLOR "צבע" -#define TR_PANEL1_BACKGROUND "Panel1 background" -#define TR_PANEL2_BACKGROUND "Panel2 background" +#define TR_PANEL1_BACKGROUND "רקע פאנל 1" +#define TR_PANEL2_BACKGROUND "רקע פאנל 2" #define TR_PANEL_BACKGROUND "רקע" #define TR_PANEL_COLOR "צבע" -#define TR_WIDGET_GAUGE "מקור" -#define TR_WIDGET_MODELBMP "תמונה מודל" +#define TR_WIDGET_GAUGE "מדיד" +#define TR_WIDGET_MODELBMP "מידע מודל" #define TR_WIDGET_OUTPUTS "יציאות" #define TR_WIDGET_TEXT "טקסט" #define TR_WIDGET_TIMER "שעון" #define TR_WIDGET_VALUE "ערך" // About screen -#define TR_ABOUTUS TR(" ABOUT ", "ABOUT") +#define TR_ABOUTUS TR(" אודות ", "אודות") #define TR_CHR_HOUR 'h' #define TR_CHR_INPUT 'I' // Values between A-I will work @@ -1196,43 +1196,43 @@ #define TR_BG_VOLUME TR("Bg volume", "עוצמת צליל רקע") #define TR_TOP_BAR "בר עליון" -#define TR_FLASH_ERASE "Flash erase..." -#define TR_FLASH_WRITE "Flash write..." -#define TR_OTA_UPDATE "OTA update..." -#define TR_MODULE_RESET "...איפוס מודל" +#define TR_FLASH_ERASE "...מוחק פלאש" +#define TR_FLASH_WRITE "...כותב פלאש" +#define TR_OTA_UPDATE "...עדכון OTA" +#define TR_MODULE_RESET "...איפוס מודול" #define TR_UNKNOWN_RX "Unknown RX" -#define TR_UNSUPPORTED_RX "Unsupported RX" -#define TR_OTA_UPDATE_ERROR "OTA update error" -#define TR_DEVICE_RESET "Device reset..." +#define TR_UNSUPPORTED_RX "מקלט לא נתמך" +#define TR_OTA_UPDATE_ERROR "שגיאת עדכון OTA" +#define TR_DEVICE_RESET "...איפוס התקן" #define TR_ALTITUDE "גובה" -#define TR_SCALE "מד" +#define TR_SCALE "קנה מידה" #define TR_VIEW_CHANNELS "הצג ערוצים" #define TR_VIEW_NOTES "הצג פתקים" #define TR_MODEL_SELECT "בחר מודל" #define TR_ID "ID" -#define TR_PRECISION "קירוב עישריות" +#define TR_PRECISION "דיוק עשרוני" #define TR_RATIO "יחס" #define TR_FORMULA "נוסחה" #define TR_CELLINDEX "מיקום תא" #define TR_LOGS "לוגים" -#define TR_OPTIONS "אופציות" -#define TR_FIRMWARE_OPTIONS BUTTON("אופציןת קושחה") +#define TR_OPTIONS "אפשרויות" +#define TR_FIRMWARE_OPTIONS BUTTON("אפשרויות קושחה") -#define TR_ALTSENSOR "Alt sensor" -#define TR_CELLSENSOR "Cell sensor" -#define TR_GPSSENSOR "GPS sensor" -#define TR_GYRO "Gyro" +#define TR_ALTSENSOR "חיישן גובה" +#define TR_CELLSENSOR "חיישן תאים" +#define TR_GPSSENSOR "חיישן GPS" +#define TR_GYRO "ג'יירו" #define TR_CURRENTSENSOR "חיישן" -#define TR_AUTOOFFSET "Auto Offset" +#define TR_AUTOOFFSET "היסט אוטומטי" #define TR_ONLYPOSITIVE "חיובי" #define TR_FILTER "פילטר" -#define TR_TELEMETRYFULL TR("All slots full!", "All telemetry slots full!") -#define TR_IGNORE_INSTANCE TR("No inst.", "Ignore instances") +#define TR_TELEMETRYFULL TR("!כל המשבצות מלאות", "!כל משבצות הטלמטריה מלאות") +#define TR_IGNORE_INSTANCE TR("ללא מופע", "התעלם ממופעים") #define TR_SHOW_INSTANCE_ID "הצג מזהה" -#define TR_DISCOVER_SENSORS "גלה הכל" +#define TR_DISCOVER_SENSORS "גלה חדשים" #define TR_STOP_DISCOVER_SENSORS "עצור" #define TR_DELETE_ALL_SENSORS "מחק הכל" -#define TR_CONFIRMDELETE "Really " LCDW_128_LINEBREAK "? למחוק הכל" +#define TR_CONFIRMDELETE "באמת " LCDW_128_LINEBREAK "? למחוק הכל" #define TR_SELECT_WIDGET "בחירת וידג'ט" #define TR_WIDGET_FULLSCREEN "מסך מלא" #define TR_REMOVE_WIDGET "הסרת וידג'ט" @@ -1249,34 +1249,34 @@ #define TR_MENU_POTS CHAR_POT "גלגלות" #define TR_MENU_MIN CHAR_FUNCTION "מינימום" #define TR_MENU_MAX CHAR_FUNCTION "מקסימום" -#define TR_MENU_HELI CHAR_CYC "Cyclic" +#define TR_MENU_HELI CHAR_CYC "ציקלי" #define TR_MENU_TRIMS CHAR_TRIM "קיזוזים" #define TR_MENU_SWITCHES CHAR_SWITCH "מתגים" -#define TR_MENU_LOGICAL_SWITCHES CHAR_SWITCH "מתגים לוגים" +#define TR_MENU_LOGICAL_SWITCHES CHAR_SWITCH "מתגים לוגיים" #define TR_MENU_TRAINER CHAR_TRAINER "טריינר" -#define TR_MENU_CHANNELS CHAR_CHANNEL "עורצים" +#define TR_MENU_CHANNELS CHAR_CHANNEL "ערוצים" #define TR_MENU_GVARS CHAR_SLIDER "GVars" #define TR_MENU_TELEMETRY CHAR_TELEMETRY "טלמטריה" #define TR_MENU_DISPLAY "תצוגה" #define TR_MENU_OTHER "אחר" #define TR_MENU_INVERT "הפוך" #define TR_AUDIO_MUTE TR("השתקת קול","השתק כאשר אין סאונד") -#define TR_JITTER_FILTER "ADC filter" -#define TR_DEAD_ZONE "Dead zone" -#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") -#define TR_AUTH_FAILURE "Auth-failure" +#define TR_JITTER_FILTER "מסנן ADC" +#define TR_DEAD_ZONE "אזור מת" +#define TR_RTC_CHECK TR("בדוק RTC", "בדוק מתח RTC") +#define TR_AUTH_FAILURE "כשל אימות" #define TR_RACING_MODE "מצב מירוץ" #define TR_USE_THEME_COLOR "השתמש בצבע ערכת נושא" -#define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "מיכרוז כל הקיזוזים" +#define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "הוסף את כל הקיזוזים לסאב-טרים" #define TR_DUPLICATE "שיכפול" #define TR_ACTIVATE "הגדר פעיל" #define TR_RED "אדום" #define TR_BLUE "כחול" #define TR_GREEN "ירוק" #define TR_COLOR_PICKER "בחירת צבע" -#define TR_FIXED "Fixed" +#define TR_FIXED "קבוע" #define TR_EDIT_THEME_DETAILS "עריכת ערכת נושא" #define TR_THEME_COLOR_DEFAULT "בְּרִירַת מֶחדָל" #define TR_THEME_COLOR_PRIMARY1 "ראשי 1" @@ -1290,10 +1290,10 @@ #define TR_THEME_COLOR_ACTIVE "פעיל" #define TR_THEME_COLOR_WARNING "אזהרה" #define TR_THEME_COLOR_DISABLED "לא פעיל" -#define TR_THEME_COLOR_QM_BG "Quick Menu BG" -#define TR_THEME_COLOR_QM_FG "Quick Menu FG" +#define TR_THEME_COLOR_QM_BG "רקע תפריט מהיר" +#define TR_THEME_COLOR_QM_FG "טקסט תפריט מהיר" #define TR_THEME_COLOR_CUSTOM "מתקדם" -#define TR_THEME_CHECKBOX "Checkbox" +#define TR_THEME_CHECKBOX "תיבת סימון" #define TR_THEME_ACTIVE "פעיל" #define TR_THEME_REGULAR "רגיל" #define TR_THEME_WARNING "אזהרה" @@ -1310,24 +1310,24 @@ // Voice in native language #define TR_VOICE_ENGLISH "אנגלית" #define TR_VOICE_CHINESE "סינית" -#define TR_VOICE_CZECH "Czech" -#define TR_VOICE_DANISH "Danish" +#define TR_VOICE_CZECH "צ'כית" +#define TR_VOICE_DANISH "דנית" #define TR_VOICE_DEUTSCH "גרמנית" -#define TR_VOICE_DUTCH "Dutch" +#define TR_VOICE_DUTCH "הולנדית" #define TR_VOICE_ESPANOL "ספרדית" -#define TR_VOICE_FINNISH "Finnish" +#define TR_VOICE_FINNISH "פינית" #define TR_VOICE_FRANCAIS "צרפתית" -#define TR_VOICE_HEBREW "עיברית" -#define TR_VOICE_HUNGARIAN "Hungarian" +#define TR_VOICE_HEBREW "עברית" +#define TR_VOICE_HUNGARIAN "הונגרית" #define TR_VOICE_ITALIANO "איטלקית" -#define TR_VOICE_POLISH "Polish" +#define TR_VOICE_POLISH "פולנית" #define TR_VOICE_PORTUGUES "פורטוגזית" #define TR_VOICE_RUSSIAN "רוסית" -#define TR_VOICE_SLOVAK "Slovak" +#define TR_VOICE_SLOVAK "סלובקית" #define TR_VOICE_SWEDISH "שוודית" -#define TR_VOICE_TAIWANESE "Taiwanese" +#define TR_VOICE_TAIWANESE "טייוואנית" #define TR_VOICE_JAPANESE "יפנית" -#define TR_VOICE_UKRAINIAN "Ukrainian" +#define TR_VOICE_UKRAINIAN "אוקראינית" #define TR_VOICE_KOREAN "קוריאנית" #define TR_USBJOYSTICK_LABEL "חיבור מצב משחק" @@ -1398,19 +1398,19 @@ #define TR_VUSBJOYSTICK_CIRC_COUTOUT_4 "X-Y, Z-rZ" #define TR_USBJOYSTICK_APPLY_CHANGES BUTTON("החל שינויים") -#define TR_DIGITAL_SERVO "333HZ סרוו דיגיטאלי" +#define TR_DIGITAL_SERVO "333HZ סרוו דיגיטלי" #define TR_ANALOG_SERVO "50HZ סרוו אנלוגי" #define TR_SIGNAL_OUTPUT "יציאת סיגנל" #define TR_SERIAL_BUS "ערוץ טורי" #define TR_SYNC "סינכרון" #define TR_ENABLED_FEATURES "אפשר יכולות" -#define TR_RADIO_MENU_TABS "לשוניות תפריט רדיו" +#define TR_RADIO_MENU_TABS "לשוניות תפריט שלט" #define TR_MODEL_MENU_TABS "לשוניות תפריט מודל" -#define TR_SELECT_MENU_ALL "All" -#define TR_SELECT_MENU_CLR "Clear" -#define TR_SELECT_MENU_INV "Invert" +#define TR_SELECT_MENU_ALL "הכל" +#define TR_SELECT_MENU_CLR "נקה" +#define TR_SELECT_MENU_INV "הפוך" #define TR_SORT_ORDERS_1 "A-Z סידור" #define TR_SORT_ORDERS_2 "Z-A סידור" @@ -1419,8 +1419,8 @@ #define TR_SORT_MODELS_BY "סדר תצוגה" #define TR_CREATE_NEW "יצירה חדשה" -#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") -#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec") +#define TR_MIX_SLOW_PREC TR("דיוק האטה", "דיוק האטה עלייה/ירידה") +#define TR_MIX_DELAY_PREC TR("דיוק השהיה", "דיוק השהיה עלייה/ירידה") #define TR_THEME_EXISTS "כבר קיימת ערכת נושא עם אותו שם" @@ -1430,9 +1430,9 @@ #define TR_MID_BATT_COLOR "מתח סוללה בינוני" #define TR_HIGH_BATT_COLOR "מתח סוללה גבוה" -#define TR_WIDGET_SIZE "Widget size" +#define TR_WIDGET_SIZE "גודל וידג'ט" -#define TR_DEL_DIR_NOT_EMPTY "סיפריה חייב להיות ריקה לפני מחיקה" +#define TR_DEL_DIR_NOT_EMPTY "תיקייה חייבת להיות ריקה לפני מחיקה" #define TR_KEY_SHORTCUTS "קיצורי מקשים" #define TR_CURRENT_SCREEN "מסך נוכחי" diff --git a/radio/src/translations/i18n/se.h b/radio/src/translations/i18n/se.h index 1ff15db11aa..9176db47e3c 100644 --- a/radio/src/translations/i18n/se.h +++ b/radio/src/translations/i18n/se.h @@ -107,7 +107,7 @@ #define TR_SD_CARD "SD-KORT" #define TR_DEBUG "Debug" #define TR_MENU_RADIO_SWITCHES TR("BRYTARE","TEST AV BRYTARE") -#define TR_MENUCALIBRATION "KALIBRERING" +#define TR_MENUCALIBRATION "KALIBRERA" #define TR_FUNCTION_SWITCHES "Anpassningsbara brytare" // End Main menu @@ -438,7 +438,7 @@ #define TR_FONT_SIZES_7 "XXL" #define TR_FONT_SIZES_8 "LXL" -#define TR_ENTER "[MENY]" +#define TR_ENTER "[ENTER]" #define TR_OK TR_BW_COL(TR("\010\010\010[OK]", "\010\010\010\010\010[OK]"), "Ok") #define TR_EXIT TR_BW_COL("EXIT", "RTN") @@ -573,10 +573,10 @@ #define TR_BLOFFBRIGHTNESS "Ljusstyrka av" #define TR_KEYS_BACKLIGHT "Tangentbelysning" #define TR_ONE_LOG_PER_DAY "En logg per dag" -#define TR_KEY_LOCK_FMT "Key lock (%s+%s hold)" -#define TR_KEYS_LOCKED "Keys locked" -#define TR_KEYS_LOCKED_FMT "Keys locked (%s+%s)" -#define TR_KEYS_UNLOCKED "Keys unlocked" +#define TR_KEY_LOCK_FMT "Knapplås (%s+%s håll)" +#define TR_KEYS_LOCKED "Knappar låsta" +#define TR_KEYS_LOCKED_FMT "Knappar låsta (%s+%s)" +#define TR_KEYS_UNLOCKED "Knappar upplåsta" #define TR_SPLASHSCREEN "Startbild" #define TR_PLAY_HELLO "Startljud" #define TR_PWR_ON_DELAY "Fördröj start" @@ -604,12 +604,12 @@ #define TR_CAL "Kal." #define TR_CALIBRATION BUTTON("Kalibrering") #define TR_VTRIM "Trimm - +" -#define TR_CALIB_DONE "Kalibrering färdig" +#define TR_CALIB_DONE "Kalibrering klar" #define TR_MENUTOSTART TR_ENTER " FÖR ATT STARTA" -#define TR_MENUWHENDONE TR_ENTER " AVSLUTAR" -#define TR_AXISDIR "AXIS DIR" -#define TR_MENUAXISDIR "[ENTER LONG] " TR_AXISDIR +#define TR_MENUWHENDONE TR_ENTER " NÄR KLAR" +#define TR_AXISDIR "AXELRIKTN." +#define TR_MENUAXISDIR "[ENTER HÅLL] " TR_AXISDIR #define TR_SETMIDPOINT TR_BW_COL(TR_SFC_AIR("CENTRERA VRED", TR("CENTRERA AXLAR", "CENTRERA AXLAR/REGLAGE")), "CENTRERA AXLAR/REGLAGE") #define TR_MOVESTICKSPOTS TR_BW_COL(TR_SFC_AIR("RÖR ST/GA/VRED/AXLAR", "RÖR AXLAR/VRED"), "RÖR AXLAR/VRED") #define TR_NODATA "DATA SAKNAS" @@ -982,9 +982,9 @@ #define TR_GET_READY "Gör dig redo..." #define TR_SAVED "Sparad:" #define TR_SAVE_AS "Spara som" -#define TR_AUTO_TRIM "Auto-trim" -#define TR_TRIM_START "Trim start" -#define TR_TRIM_END "Trim end" +#define TR_AUTO_TRIM "Autotrim" +#define TR_TRIM_START "Trimm start" +#define TR_TRIM_END "Trimm slut" #define TR_OPEN_ERROR "Öppningsfel" #define TR_TURN_OFF_RECEIVER "Stäng av mottagare" #define TR_STOPPING "Stoppar..." diff --git a/radio/src/translations/tts/tts_cn.cpp b/radio/src/translations/tts/tts_cn.cpp index b92d98c2df4..25f67e62409 100644 --- a/radio/src/translations/tts/tts_cn.cpp +++ b/radio/src/translations/tts/tts_cn.cpp @@ -102,16 +102,16 @@ I18N_PLAY_FUNCTION(cn, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_cz.cpp b/radio/src/translations/tts/tts_cz.cpp index 1c9476c4f36..1b8b60f07ed 100644 --- a/radio/src/translations/tts/tts_cz.cpp +++ b/radio/src/translations/tts/tts_cz.cpp @@ -163,16 +163,16 @@ I18N_PLAY_FUNCTION(cz, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, FEMALE); } diff --git a/radio/src/translations/tts/tts_da.cpp b/radio/src/translations/tts/tts_da.cpp index ec920bba1af..9fa6a4b5ece 100644 --- a/radio/src/translations/tts/tts_da.cpp +++ b/radio/src/translations/tts/tts_da.cpp @@ -99,16 +99,16 @@ I18N_PLAY_FUNCTION(da, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_de.cpp b/radio/src/translations/tts/tts_de.cpp index 37ae85a6a35..b09b523ab84 100644 --- a/radio/src/translations/tts/tts_de.cpp +++ b/radio/src/translations/tts/tts_de.cpp @@ -144,16 +144,16 @@ I18N_PLAY_FUNCTION(de, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_en.cpp b/radio/src/translations/tts/tts_en.cpp index 51f87001cbf..6e867db2900 100644 --- a/radio/src/translations/tts/tts_en.cpp +++ b/radio/src/translations/tts/tts_en.cpp @@ -102,16 +102,16 @@ I18N_PLAY_FUNCTION(en, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_es.cpp b/radio/src/translations/tts/tts_es.cpp index ae878299ed7..fab4d9b109d 100644 --- a/radio/src/translations/tts/tts_es.cpp +++ b/radio/src/translations/tts/tts_es.cpp @@ -153,16 +153,16 @@ I18N_PLAY_FUNCTION(es, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { if (hours > 1) { PLAY_NUMBER(hours, 0, 0); diff --git a/radio/src/translations/tts/tts_fr.cpp b/radio/src/translations/tts/tts_fr.cpp index 2041f256969..a6e849db02f 100644 --- a/radio/src/translations/tts/tts_fr.cpp +++ b/radio/src/translations/tts/tts_fr.cpp @@ -135,16 +135,16 @@ I18N_PLAY_FUNCTION(fr, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (IS_PLAY_TIME() && hours == 0) { PUSH_NUMBER_PROMPT(FR_PROMPT_MINUIT); } else if (IS_PLAY_TIME() && hours == 12) { diff --git a/radio/src/translations/tts/tts_he.cpp b/radio/src/translations/tts/tts_he.cpp index 620a76dcc6c..ee707256fd0 100644 --- a/radio/src/translations/tts/tts_he.cpp +++ b/radio/src/translations/tts/tts_he.cpp @@ -104,16 +104,16 @@ I18N_PLAY_FUNCTION(he, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_hu.cpp b/radio/src/translations/tts/tts_hu.cpp index 977d4b44e97..387a808e470 100644 --- a/radio/src/translations/tts/tts_hu.cpp +++ b/radio/src/translations/tts/tts_hu.cpp @@ -104,16 +104,16 @@ I18N_PLAY_FUNCTION(hu, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_it.cpp b/radio/src/translations/tts/tts_it.cpp index ef25a20a2b5..e8062f63b3d 100644 --- a/radio/src/translations/tts/tts_it.cpp +++ b/radio/src/translations/tts/tts_it.cpp @@ -154,16 +154,16 @@ I18N_PLAY_FUNCTION(it, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_nl.cpp b/radio/src/translations/tts/tts_nl.cpp index b1913ea1d54..baf3fb0cd7f 100644 --- a/radio/src/translations/tts/tts_nl.cpp +++ b/radio/src/translations/tts/tts_nl.cpp @@ -106,16 +106,16 @@ I18N_PLAY_FUNCTION(nl, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_pl.cpp b/radio/src/translations/tts/tts_pl.cpp index 5a1eb7cc0eb..5b42bc1e884 100644 --- a/radio/src/translations/tts/tts_pl.cpp +++ b/radio/src/translations/tts/tts_pl.cpp @@ -211,16 +211,16 @@ I18N_PLAY_FUNCTION(pl, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, ZENSKI); } diff --git a/radio/src/translations/tts/tts_pt.cpp b/radio/src/translations/tts/tts_pt.cpp index c6a7dd5055b..e528f96dd6e 100644 --- a/radio/src/translations/tts/tts_pt.cpp +++ b/radio/src/translations/tts/tts_pt.cpp @@ -138,16 +138,16 @@ I18N_PLAY_FUNCTION(pt, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { if (hours > 2) { PLAY_NUMBER(hours, 0, 0); diff --git a/radio/src/translations/tts/tts_ru.cpp b/radio/src/translations/tts/tts_ru.cpp index 57c74184519..9b33ca45019 100644 --- a/radio/src/translations/tts/tts_ru.cpp +++ b/radio/src/translations/tts/tts_ru.cpp @@ -163,16 +163,16 @@ I18N_PLAY_FUNCTION(ru, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_se.cpp b/radio/src/translations/tts/tts_se.cpp index d70d149a0dd..79e419aa68c 100644 --- a/radio/src/translations/tts/tts_se.cpp +++ b/radio/src/translations/tts/tts_se.cpp @@ -99,16 +99,16 @@ I18N_PLAY_FUNCTION(se, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); } diff --git a/radio/src/translations/tts/tts_sk.cpp b/radio/src/translations/tts/tts_sk.cpp index b970952c2e1..6abfa9ff116 100644 --- a/radio/src/translations/tts/tts_sk.cpp +++ b/radio/src/translations/tts/tts_sk.cpp @@ -161,16 +161,16 @@ I18N_PLAY_FUNCTION(sk, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, ZENSKY); } diff --git a/radio/src/translations/tts/tts_ua.cpp b/radio/src/translations/tts/tts_ua.cpp index b0bc8d6bff7..8a310d52c36 100644 --- a/radio/src/translations/tts/tts_ua.cpp +++ b/radio/src/translations/tts/tts_ua.cpp @@ -162,16 +162,16 @@ I18N_PLAY_FUNCTION(ua, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } + if (IS_PLAY_LONG_TIMER()) { + seconds += 30; + } + int hours, minutes; hours = seconds / 3600; seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; - if (IS_PLAY_LONG_TIMER() && seconds >= 30) { - minutes += 1; - } - if (hours > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(hours, UNIT_HOURS, 0); }